2014年4月22日
摘要:
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对...
阅读全文
posted @ 2014-04-22 22:27
程序点滴
阅读(288)
推荐(0)
摘要:
面试的时候经常会被问到一个弱智题:面向对象的三个基本特征是什么? 这时候你完全可以以请教的口气优雅的反问一道题,看看ta对"继承"的理解(不过这驳考官面子的后果可得想清楚哦!): class Father { public virtual void fun() { Console.W...
阅读全文
posted @ 2014-04-22 22:21
程序点滴
阅读(149)
推荐(0)
摘要:
这个陷阱来自于一个需求:需要异步在后台处理数据,处理完后触发处理完成的事件,大概是这么写的: EmployeeCollection data = new EmployeeCollection(); data.Loaded += data_Loaded; Action action = (d...
阅读全文
posted @ 2014-04-22 22:17
程序点滴
阅读(245)
推荐(0)
2014年4月21日
摘要:
曾经有人问我这样一个问题:如何迫使子类提供无参构造函数。当时给出的答案是让子类实现这样一个接口。 public interface IMustHaveParameterLessConstructor where T : IMustHaveParameterLessConstructor, n...
阅读全文
posted @ 2014-04-21 20:10
程序点滴
阅读(252)
推荐(0)
2014年4月17日
摘要:
中括号在正则中称为字符组(Character class),有的书翻译为字符类,还有的翻译成字符集。我觉得字符组更好点,毕竟class在计算机属于中代表面向对象里的"类".顾名思义,字符组为一组字符,它表示在一个位置里可能出现的多种字符。注意这里强调只匹配一个位置哦。 简单字符组 范围字符组...
阅读全文
posted @ 2014-04-17 13:29
程序点滴
阅读(153)
推荐(0)
摘要:
序列化、反序列化的使用 调用: using System;namespace ConsoleApp_Serializable{ class Program { static void Main(string[] args) { Person mike = new Person() ...
阅读全文
posted @ 2014-04-17 13:24
程序点滴
阅读(187)
推荐(0)
2014年4月12日
摘要:
通过将部分正则表达式用括号括住来实现分组捕获的用法大部分人都很熟悉,如/.+(\d+)。+/捕获字符串中的所有数字部分,然后通过组号就可以抽取出各分组匹配的字符文本或者通过反向引用的方式对分组中的文本进行替换。但是除了不同的分组用法以外,正则表达式引擎还提供了一些高级的分组功能,下面介绍部分比较常用的特殊分组: 1、非捕获分组( non-capturing group) 使用语法:(?:regex)这里的?和:都是语法的组成部分;这种分组正则表达式引擎不会捕获它所匹配的内容即不会为非捕获型分组分配组号; 样例说明:Set(?:Value)?表达式匹配SetValue或者Set,但是不...
阅读全文
posted @ 2014-04-12 14:38
程序点滴
阅读(350)
推荐(0)
摘要:
C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set.map是key-value形式,set是单值。map和set只能存放唯一的key,multimap和multiset可以存放多个相同的key. 容器类自动申请和释放内存,因此无需new和delete操作。 一、vector vector基于模板实现,需包含头文件vector. 1.定义和初始化 //...
阅读全文
posted @ 2014-04-12 14:33
程序点滴
阅读(331)
推荐(0)
摘要:
我们知道,一个值类型的变量永远不可能为null.它总是包含值类型本身。遗憾的是,这在某些情况下会成为问题。例如,设计一个数据库时,可将一个列定义成为一个32位的整数,并映射到FCL的Int32数据类型。但是,数据库中的一个列可能允许值为空;用Microsoft .NET Framework处理数据库可能变得相当困难,因为在CLR中,没有办法将一个Int32值表示为null. Microsoft ADO.NET的表适配器确实支持可空类型。但遗憾的是,System.Data.SqlType命名空间中的值类型没有用可空类型替换,部分原因是类型之间没有"一对一"的对应关系。例如,S
阅读全文
posted @ 2014-04-12 14:28
程序点滴
阅读(246)
推荐(0)
2014年4月11日
摘要:
读操作 对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。 对于非阻塞socket而言,socket的接收缓冲区中有没有数据,read调用都会立刻返回。接收缓冲区中有数据时,与阻塞socket有数据的情况是一样的,如果接收缓冲区中没有数据,则返回错误号为 EWOULDBLOCK, 表示该操作本来应该阻塞的,但是由于本socket为非阻塞的socket,因...
阅读全文
posted @ 2014-04-11 18:33
程序点滴
阅读(1079)
推荐(0)