网络编程基础 -- 字节和字符,对信息进行编码

JerryXia 发表于 , 阅读 (1,313)
TCP/IP 协议以字节的方式传输用户数据,并没有对其进行检查和修改。这个特点使得应用程序可以非常灵活地对其中传输的信息进行编码。TCP/IP的唯一约束是,信 息必须在块(chunk)中发送和接收,而块的长度必须是8位的倍数。而字节正好是8位的,因此我们可以认为在TCP/IP协议中传输的信息是字节序列。 鉴于此,我们可以进一步把传输的信息看做数字序列或数组,每个数字的取值范围是0~255(8位)。应用程序协议:明确定义了信息的发送者应该怎样排列和解释这些位序列(bit sequence),... 阅读全文

Memcached的分布式算法

JerryXia 发表于 , 阅读 (1,501)
Memcached虽然被称为分布式缓存服务,但服务器端并没有真正的“分布式”功能。服务器端仅包括内存存储功能,至于Memcached的分布式,则是完全由客户端实现的。现在开始先简单地介绍一下其原理,各个客户端的实现基本相同。下面假设Memcached服务器有node0、node1、node2三台,应用程序要保存键名为"Jerry0"、"Jerry1"、"Jerry2"、"Jerry3"、"Jerry4"的数据。首先向Memcached中添加"Jerry0",将"Jerry0"传给客户端程序... 阅读全文

缓存穿透

JerryXia 发表于 , 阅读 (2,175)
缓存系统不得不考虑的另一个问题是缓存穿透与失效时的雪崩效应。缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的... 阅读全文

MicroSoft C#代码规范(Record)

JerryXia 发表于 , 阅读 (2,060)
一定请 将代表了读/写集合的属性或返回值声明为Collection或其子类,将代表了只读集合的属性或返回值声明为ReadOnlyCollection或其子类。您应该重新考虑对于 ArrayList 的使用,因为所有添加至其中的对象都被当做System.Object ,当从ArrayList取回值时,这些对象都会拆箱,并返回其真实的值类型。所以我们推荐您使用定制类型的集合,而不是ArrayList。比如,.NET在System.Collection.Specialized命名空间内为Stri... 阅读全文

.net 程序集自动生成版本号

JerryXia 发表于 , 阅读 (1,729)
一、 版本号自动生成方法只需把 AssemblyInfo.cs文件中的[assembly:AssemblyVersion("1.0.0.0")]改成[assembly:AssemblyVersion("1.0.*")],另外还需要把[assembly:AssemblyFileVersion("1.0.0.0")]注释屏蔽掉。这样再生成的程序集就是自动版本号了。按照这个格式出来的版本号,内部修订版本号(第三个字段)的位置出现的是2000年1月1日到编译日期的天数,内部修订号(第四个字段)是当... 阅读全文

创建基于二进制的组件

JerryXia 发表于 , 阅读 (1,250)
随着类的数量增加,创建二进制的组件就变得很平常了:你想分离部分功能。所有不同的是,二进制组件可以让你独立的保存这些离散的功能。创建的组件程序集可以方便的共享逻辑,方便交叉语言编程,以及方便布置。在.Net程序就是组件包,每一个程序什么样可以随时更新和发布。你应该已经知道,基于程序集之间的应用程序是多么容易更新呀,程序集之间的偶合是多么好呀!最小偶合就是说更多的是减少了程序集之间复杂的依懒关系。同时也意味着你可以简单的更新小块新的程序集。这一章就是关于创建简单易用,容易布置,以及容易更新的程... 阅读全文

.Net资源管理

JerryXia 发表于 , 阅读 (1,132)
一个简单的事实:.Net应用程序是在一个托管的环境里运行的,这个环境和不同的设计器有很大的冲突,这就才有了EffectiveC#。极大限度上的讨论这个环境的好处,须要把你对本地化环境的想法改变为.NetCLR。也就意味着要明白.Net的垃圾回收器。在你明白这一章里所推荐的内容时,有必要对.Net的内存管理环境有个大概的了解。那我们就开始大概的了解一下吧。垃圾回收器(GC)为你控制托管内存。不像本地运行环境,你不用负责对内存泄漏,不定指针,未初始化指针,或者一个其它内存管理的服务问题。但垃圾... 阅读全文