- 对volatile变量的读写有一个全局的排序,但是volatile变量跟常规变量的读写顺序没并没有保证
- volatile的值不会被缓存,所有线程读取到的都是当前的(主存中的)值
- 对volatile的变量的读写好像是用了synchronized包围起来一样
PHP中的拷贝
对象用等号赋值,只是引用,是浅拷贝,除非使用clone关键字。
而基本类型,int、float、string、array几种类型都是复制也是引用,不过有copy-on-write机制控制,感觉好像是直接复制,但是效率却高一些。基本类型如果想传引用,需要加一个&.
下面代码可以说明: Continue reading “PHP中的拷贝”
利用Google两步验证来增强你网站的安全性
密码学当中最安全的密码是一次性密码OTP(One Time Password),即每次使用的密码都不同。目前安全性要求比较高的系统,比如网上银行或公司vpn、财务等系统都使用了一些一次性密码方案,比较多的是RSA的token卡,它上面显示六位数字,每一分钟变化一次。YubiKey、短信验证等都算是OTP的实现。
但是这些方案都需要单独一种硬件支持。对于有大量用户的网站不太实惠,要增强安全性,还需要用户花钱买一个token卡,于是Google搞了一个”身份验证器”(Google Authentication)。Google公开算法,于是我们 就可以利用它来增加我们网站的安全性了。
Continue reading “利用Google两步验证来增强你网站的安全性”
计算php运行时间(毫秒数)
非常简单,记录一下:
$t1 = microtime(true);
//php script here
$t2 = microtime(true);
echo (($t2-$t1)*1000).'ms';
Visual Leak Detector下载
Visual Leak Detector (VLD) 1.9h (Beta),点这里开始下载!
Visual C++内置内存泄露检测工具,但是功能十分有限。VLD就相当强大,可以定位文件、行号,可以非常准确地找到内存泄漏的位置,而且还免费、开源!
在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。
也可以一次设置,新工程就不用重新设置了。只介绍在Visual Studio 2003/2005中的设置方法,VC++ 6.0类似:
- 打开Tools -> Options -> Projects and Solutions -> VC++ Directories;
- 然后点击include files下拉列表,在末尾把VLD安装目录中的include文件夹添加进来;
两道关于指针的C语言笔试题
实验室的师兄师姐为找工作都在狂做C/C++的笔试题,偶们也掺和了下,做了两道指针方面的,大家一起来看看吧。
1. 求n的值。
int a[20];
char * p1 = (char * )a;
char * p2 = (char *)(a+5);
int n= p2-p1;
答案:20。
解析:int为4个字节,char为1个字节。a是int*型指针,加减运算以4个字节为单位,a+5便会指向第20个字节;而p1,p2是char*型,它们进行加减运算时以1个字节为单位。于是p1指向第1个字节而p2指向第21个字节,于是21-1=20,n的值为20。
2. 求 * p 的值。
C++中成员函数的连续调用
首先说下什么是我所谓的连续调用,假设有一个类person:
person a; a.set("kangzj").get().set("abc"); |
加红的部分即为本文要说的连续调用。
怎么实现呢,很简单,只要让成员函数返回一个指向当前对象的引用即可,于是,我这样定义这个类:
Continue reading “C++中成员函数的连续调用”
MFC多核多线程编程遇到的问题总结
- 多线程编程必须有操作系统为基础,知道什么是互斥、临界区、事件、信号量等概念;
- 知道线程是CPU资源分配的基本单位;
给线程分配CPU,可以用:SetThreadAffinityMask(tHandle,0x00000001)函数,tHandle表示线程的HANDLE(不是CWinThread*),第二个参数表示可以使用的CPU的编号,0x00000001表示只能使用第一个CPU;如果0x00000011,表示可以使用第一和第二个CPU,依此类推; Continue reading “MFC多核多线程编程遇到的问题总结”
Win32下多核多线程编程
我们通常写的程序都是单线程的,当程序运行一个任务时,我们只能等待,什么也干不了,多线程的存在十分必要。然而,多线程的运用不止于此,现在多核已经十分普及,在大运算量的情况下,多个线程并行运行于多核会使运算的速度倍增,多核多线程的程序具有很大的优势。
Continue reading “Win32下多核多线程编程”