C,Java和C#中典型的多线程范例都强烈推荐使用锁和互斥。对于锁来说有个隐藏的开销:它们慢得难以忍受。使用Disruptor(JVM中的无锁的环形缓存[译者注:实际上就是拥有一个序号指向下一个可用元素的数组]),你可以很容易得每秒处理20M以上的事件。
分类:
编程语言 时间:
2014-07-29 20:38:02
阅读次数:
203
求a^b mod c
算法1.
首先直接地来设计这个算法:
int ans=1, i;
for(i=1;i<=b;i++)
ans*=a;
ans%=c;
这个算法的时间复杂度体现在for循环中,为O(b).
这个算法存在着明显的问题,如果a和b过大,很容易就会溢出。
那么,我们先来看看第一个改进方案:在讲这个方案之前,要先有这样一个公式:
a^b mod c=(...
分类:
其他好文 时间:
2014-07-29 18:05:02
阅读次数:
308
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272
注意问题:
1、不能成环,即每次输入的两个数的根节点不能相同;
2、只有一个迷宫,即根节点数目唯一;
3、注意当只输入“0 0” 时要输出"Yes";
4、状态压缩用递归回栈溢出。...
分类:
其他好文 时间:
2014-07-29 17:47:32
阅读次数:
164
此篇介绍JAVA 中在编写程序的过程中可能出现的一类问题——溢出的发生。首先来看一下JAVA整数常量的特殊值代码:01 // 整数值如果超出了自己所可以表示范围的最大值,会出现溢出02 public class TestJava3_403 {04 public static void main(St...
分类:
编程语言 时间:
2014-07-29 17:22:42
阅读次数:
323
很多教科书判断对象是否存活的算法是这样的:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用。很多应届生和一些有多年工作经验的开发人员,他们对于这个问题给予的都是这个答案..
分类:
其他好文 时间:
2014-07-29 16:00:39
阅读次数:
208
在主流的商用程序语言中(Java和C#)都是使用根搜索算法(GCRootsTracing)判断对象是否存活的。这个算法的基本思路:通过一系列的名为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(ReferenceChain),当一个对象到GCRoots没有任何引用链相..
分类:
其他好文 时间:
2014-07-29 16:00:20
阅读次数:
187
无论通过引用计数算法判断对象的引用数量,还是通过根搜索算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK1.2之前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种..
分类:
编程语言 时间:
2014-07-29 15:58:33
阅读次数:
221
在根搜索算法中不可达的对象,也并非是“非死不可”的,这个时候他们暂时处于"缓刑"阶段,要真正宣告一个对象死亡,至少要经历两次标记过程:如果对象在进行根搜索后发现没有与GCRoots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是对象是否有必要执行fi..
分类:
编程语言 时间:
2014-07-29 15:43:29
阅读次数:
258
很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾手机,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%~90%的空间,而永久..
分类:
其他好文 时间:
2014-07-29 15:42:19
阅读次数:
246
//--------------------------------checked防止溢出byteb=255;checked{b++;}Console.WriteLine(b.ToString());//byte类型只包含0~255,加上checked所以会抛出异常//is运算符,检查对象是否与特定的类型兼容inti=0;Console.WriteLine(iisobject);//True//---------------------..
分类:
其他好文 时间:
2014-07-29 15:40:14
阅读次数:
179