自旋锁和互斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源,以阻止影响数据一致性的并发访问。但是他们之间确实存在区别,那么这些区别是什么?
1 理论
理论上,当一个线程试图获取一个被锁定的互斥锁时,该操作会失败然后该线程会进入睡眠,这样就能马上让另一个线程运行。当持有互斥锁的线程释放该锁之后,进入睡眠状态的线程就会被唤醒。但是,当一个线程试图获取一个自旋锁而没有成功时,该线...
分类:
其他好文 时间:
2014-04-29 13:31:21
阅读次数:
317
最近,遇到一个权限管理的系统。由于权限管理的系统和本来的系统风格不一致,所有新打开一个窗口。问题就来了,admin注销之后,权限管理的窗口没有关闭。其他普通用户登录以后,仍然可以操作权限管理的窗口。
问题简化:admin注销的时候,或者main.html关闭的时候,打开的所有新窗口一起关闭。问题就解决了
直接看代码吧:
Insert title here
打开新窗口
退...
分类:
Web程序 时间:
2014-04-29 13:28:21
阅读次数:
353
课程设计
单项选择题标准化考试系
所属专业:软件工程软件三班
完成人:潘尚
一.设计计划.
1.能够用菜单明确的指导用户操作.
2.操作完成可以返回主菜单.
3.将输入的题目保存至C盘的文本文件中,以便日后读取.
4.若没有题目,提示用户输入题目,建立文本文档于C盘根目录.
5.答题为随机抽取题目进行回答.
6.若输入小写答案选项如abcd,将其转换为大写字母再判...
分类:
其他好文 时间:
2014-04-29 13:25:20
阅读次数:
414
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。
最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。
1.
计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。
2.
假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。...
分类:
编程语言 时间:
2014-04-29 13:17:20
阅读次数:
276
paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
#两个思路
1.思路如下:使用file_get_contents()获取txt文件的内容,然后通过explode()把获得的字符串转化为数组。获得数组长度可以使用count()函数
2.使用按照行读取api
在正则表达式中,有一个\n是newline的意思,又有一个\r是carri...
分类:
编程语言 时间:
2014-04-28 10:46:40
阅读次数:
304
原题链接: http://oj.leetcode.com/problems/reverse-linked-list-ii/
这道题是比较常见的链表反转操作,不过不是反转整个链表,而是从m到n的一部分。分为两个步骤,第一步是找到m结点所在位置,第二步就是进行反转直到n结点。反转的方法就是每读到一个结点,把它插入到m结点前面位置,然后m结点接到读到结点的下一个。总共只需要一次扫描,所以时间是O(n...
分类:
其他好文 时间:
2014-04-28 10:38:42
阅读次数:
240
代理模式的本质:控制对象访问
既然本质是控制对象访问,意思就是在访问者与原始对象之间加一个代理即可
同理,代理模式也可以通过继承原始类来实现,让访问者操作继承类,继承类来控制原始对象的访问
从而实现控制对象访问的目的
何时选用代理模式
1.需要为一个对象在不同的地址空间提供局部(重点)代表的时候,可以使用远程代理
2.需要按照需要创建开销很大的对象的时候,可以使用虚代理(即一个不完整的对象)
3.需要控制对原始对象的访问的时候,可以使用保护代理,上边即保护代理实例
4.需要在访问对象执行一些附加操作的时候,...
分类:
其他好文 时间:
2014-04-28 10:27:41
阅读次数:
253
为什么使用数据源和连接池
我们现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的。如果每次操作都连接数据库,然后关闭,这样做性能一定会受限。所以,我们一定要想办法复用数据库的连接。因此针对这种情况,提出了数据源和连接池的概念。使用数据源和连接池可以达到复用数据库连接的目的。
数据源和连接池概念
其实,数据源和连接池是两个不同的概念。有些人会把它们弄混。
数据源是用来连接...
分类:
其他好文 时间:
2014-04-28 10:24:41
阅读次数:
292
0 操作成功完成。
1 功能错误。
2 系统找不到指定的文件。
3 系统找不到指定的路径。
4 系统无法打开文件。
5 拒绝访问。
6 句柄无效。
7 存储控制块被损坏。
8 存储空间不足,无法处理此命令。
9 存储控制块地址无效。
10 环境错误。
11 试图加载...
分类:
数据库 时间:
2014-04-28 10:11:41
阅读次数:
705
上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换。
所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算、形态学梯度、“顶帽”、“黑帽”等等。
先上几张示例程序的截图吧:
有没有很熟悉这张图?没错,这就是最近热映的电影Captain America~
下面这张图的效果就有些凶残了:...
分类:
其他好文 时间:
2014-04-27 22:12:16
阅读次数:
646