感性认识: 传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。 小...
分类:
其他好文 时间:
2014-05-10 08:50:29
阅读次数:
365
在Linux中做C/C++开发经常会遇到一些不可预知的问题导致程序崩溃,同时崩溃后也没留下任何代码运行痕迹,因此,堆栈跟踪技术就显得非要重要了。本文将简单介绍Linux中C/C++程序运行时堆栈获取函数及方法,简单实用。...
分类:
系统相关 时间:
2014-05-10 02:18:28
阅读次数:
493
这两天较系统的看了下C++的基本用法,对比自己对Java理解,感觉就是C++特性远远多于Java,语法上兼容C,更加贴近系统和底层,对内存操作非常的灵活。如:
C++中类的对象可以开辟在栈空间中。Java类的对象都必须用new关键字开辟在堆中;
C++的基本数据类型也可以用new开辟在堆中。Java基本数据类型只能开辟在栈中,除非使用包装类包装成对象;
C++用new开辟的内存必须手动delete,否则内存泄露。Java则有著名的垃圾回收;
C++传参可以传值和传引用,也可以配合指针传对象地址,自己来决定。...
分类:
编程语言 时间:
2014-05-07 08:45:33
阅读次数:
353
给你一个数组,O(N)时间找出某些个数,这些题如果没见过,还真不是很好想。做了这些题,我觉得有下面两个个比较常见的思路:
1. 用两个指针,可以从一边开始,走某个距离停止,也可能是一头一尾两个指针,定义一种大小关系,他俩比较之后移动,直到相遇。
2. 用其他的辅助的数据结构,可能是hash表,可能是map,可能是栈或者队列。这种通常用在访问了现在的不能确定他们是不是有用,是不是能影响最后的结果...
分类:
其他好文 时间:
2014-05-07 07:50:33
阅读次数:
392
题目分析:四柱汉诺塔。由于题目已经给出了求解方法,直接写代码即可。下面总结一下,四塔问题。
感谢这篇文章的作者,点这里就到,总结的很好。直接贴过来~
四塔问题:设有A,B,C,D四个柱子(有时称塔),在A柱上有由小到大堆放的n个盘子。
今将A柱上的盘子移动到D柱上去。可以利用B,C柱作为工作栈用,移动的规则如下:
①每次只能移动一个盘子。
②在移动的过程中,小盘子只能放到大盘子的上面...
分类:
其他好文 时间:
2014-05-07 07:31:09
阅读次数:
317
转载请注明出处: 题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。 思路:稍微画下草图,便不难想出该题的解决方法,思路如下: 假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶...
分类:
其他好文 时间:
2014-05-07 06:54:12
阅读次数:
466
剑指offer上的第七题,之前在Cracking the Coding interview上做过该题,这次把原来的程序搬了过来,并根据九度OJ的测试系统写了测试代码,在九度OJ上AC。
时间限制:1 秒内存限制:128 兆
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
输入:
每个输入文件包含一个测试样例。
对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。
接下来的n行,每行输入一个队列操作:
1. PUSH X 向队列...
分类:
其他好文 时间:
2014-05-07 06:36:48
阅读次数:
431
### 背景
银时跟我讲,想从 Netty3迁移到Netty4 。
问其原因是因为 Netty3在容器里会报错,错误堆栈:
java.io.IOException: 无法立即完成一个非阻止性套接字操作。
at sun.nio.ch.SocketDispatcher.close0(Native Method)
at sun.nio.ch.SocketDisp...
分类:
其他好文 时间:
2014-05-07 06:30:21
阅读次数:
425
1、Thumb指令访问R0-R7,Thumb-2访问所有寄存器。
2、满栈向下增长
PUSH {R0} ; *(--R13) = R0
POP {R0} ; R0 = *R13++
四个字节对齐,也就是地址是0x4,0x8 等。
3、
main
BL fun
fun
BX LR
4、写入到PC也就是R15的数值必须是奇数,不然会企图进入ARM模式...
分类:
其他好文 时间:
2014-05-07 06:08:21
阅读次数:
287
今天看一帖子,赵忠大哥的回复挺经典也很有用,记录下来!
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常...
分类:
编程语言 时间:
2014-05-07 06:07:39
阅读次数:
378