C#中的lock语句是怎么回事,有什么作用?C#中的lock语句将lock中的语句块视为临界区,让多线程访问临界区代码时,必须顺序访问。他的作用是在多线程环境下,确保临界区中的对象只被一个线程操作,防止出现对象被多次改变情况。注意的地方有:lock对象必须是一个不可变对象,否则无法阻止另一个线程进入...
分类:
其他好文 时间:
2014-06-26 00:58:50
阅读次数:
354
这篇文章主要介绍了Python程序员代码编写时应该避免的17个“坑”,也可以说成Python程序员代码编写时应该避免的17个问题,需要的朋友可以参考下
一、不要使用可变对象作为函数默认值
复制代码代码如下:
In [1]: def append_to_list(value, def_list=[]):
...: def_list.append(va...
分类:
编程语言 时间:
2014-06-24 23:35:15
阅读次数:
302
tuple(元组)
另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,tuple属于不可变对象。比如同样是列出同学的名字:
>>> classmates = ('Michael', 'Bob', 'Tracy')现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是...
分类:
编程语言 时间:
2014-06-22 16:27:27
阅读次数:
249
# 写好Python之函数## 避免使用可变对象作为参数德默认值当Python解释器对函数定义时,通过默认参数表达式来判断他们的值。该表达式仅发生一次。调用该函数不会触发其他的参数表达式值。由于计算的值用于所有函数调用序列,使用可变对象作为默认值会发生一些未期待的结果。可变对象意味值可以直接进行修改...
分类:
编程语言 时间:
2014-06-18 21:10:47
阅读次数:
206
1.PyListObject对象 --> 变长可变对象,可看作vector
typedef struct{
PyObject_VAR_HEAD //其中的ob_size表示实际被使用的内存的数量
PyObject **ob_item;//ob_item为指向元素列表的指针,实际上,Python中的list[0]就是ob_item[0]
int allocated;//当前列表中可容纳的元素的总数
}
PyList_Type 对象 --> PyListObject的类型对象
ty...
分类:
编程语言 时间:
2014-06-16 22:48:55
阅读次数:
300
1. PyStringObject --> 变长不可变对象
typedef struct{
PyObject_VAR_HEAD//ob_size变量保存着对象中维护的可变长度内存的大小
longob_shash; //缓存该对象的hash值,用于dict的查询
intob_sstate; //标志该对象是否经过intern机制的处理
char ob_sval[1];// 字符指针,指向一段内存
} PyStri...
分类:
编程语言 时间:
2014-06-14 17:30:48
阅读次数:
309
1. 在python中,对象就是为C中的结构体在堆上申请的一块内存。对象不能被静态初始化,也不能在栈空间生存。但内建的类型对象都是被静态初始化的。
2. 对象创建后大小不变。可变对象有一指针指向可变大小的内存区域。
3. 对象机制的基石:PyObject...
分类:
编程语言 时间:
2014-06-14 10:20:49
阅读次数:
309
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
简单的说就是clone一个对象实例。使得clone出来的copy和原有的对象一模一样。
插一个简单使用clone的例子,如果一个对象内部有可变对象实例的话,public API不应该直接返回该对象的引用,以防调用方的code...
分类:
其他好文 时间:
2014-05-18 02:51:21
阅读次数:
348
在python中所有都是对象,在python中只有list和dict是可变对象,其他都是不可变对象。具体参照:http://www.cnblogs.com/lovemo1314/archive/2012/07/18/2597111.html
分类:
编程语言 时间:
2014-05-13 18:44:31
阅读次数:
283
StringBuffer:如果在程序中需要对字符串进行频繁的修改连接操作的话.使用StringBuffer性能会更高String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.线程安全就是多线程访问..
分类:
其他好文 时间:
2014-05-13 12:54:51
阅读次数:
326