python技巧:逆序循环

Python可以很简单实现C语言中for(i = len; i>=0; –i)的逆序循环,而且有不止一种写法:

第一种,for i in range(len, -1, -1) ,简单易懂

第二种,for i in range(0, len+1)[::-1],利用list的[start:end:step]排序功能,当然在大数组下性能堪忧

为何线程互斥锁优于读写锁

尽管确实是在读多写少的情况下使用,但系统在测试中确实出现线程互斥锁优于读写锁的情况, muduo库中给出了多种互斥锁优于读写锁的原因: 1. 读锁加锁的开销不会比mutex小,因为它需要更新当前reader的数目,如果临界区很小,那么mutex往往更快。 实际上mutex是由整形变量及等待队列构成 2. 读锁可能提升为写锁,增大调试难度 实际上系统调试过程中的确出现过这样的问题,甚至导致死锁,当时 …

阅读全文

C++中的局部类与嵌套类

局部类指在函数内部定义的类,自然局部类不能含有static成员,所有函数定义也必须在定义体内完成。基本不会使用。

嵌套类指在类内部定义类,该类名只能在外围类中使用,嵌套类中的函数成员可以在定义体外定义(但是需要使用限定符以使用类名),嵌套类中申明的成员不是外围类对象的成员,反之亦然。

因此分析访问关系时,完全可以当做非嵌套类处理,即嵌套类无法访问外围类的私有成员,也不能对外围类中定义的私有嵌套类创建对象,嵌套类可以访问static private成员,嵌套类中申明的友元也不能访问外围类中的私有成员。

PHP魔术函数集锦

1。__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。 2。__destruct() 当删除一个对象或对象操作终止时被调用。 3。__call() 对象调用某个方法, 若方法存在,则直接调用; 若不存在,则会去调用__call函数。 4。__get() 读取一个对象的属性时, 若属性存在,则直 …

阅读全文

PHP合并数组元素的两种方法与区别

array_merge():
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。(数字键名会被重新分配,总会变成从零开始的。。)

对于使用“+”合并数组:
如果数组中有相同的字符串键名(不管是不是数字),则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉。

参考:php里面合并数组array_merge和加号有什么不同