Linux epoll模型处理大批句柄



Linux epoll模型。;

定义:

epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select\poll那种IO事件的电平触发(Level Triggered)外,还提供[......]

Read more

CycleBarrier使用实例源码说明



CycleBarrier使用实例源码说明。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;

public class TestCyclicBarrier {

private static final int THREAD_NUM = 5;

public static class WorkerThread implements Runnable{

CyclicBarri[......]

Read more

Callable接口使用实例源码说明

Callable接口使用实例源码说明。
[java] view plaincopy在CODE上查看代码片派生到我的代码片
public class CallableTest implements Callable<Integer>{

int [] a;
int s, e;
public CallableTest(int [] a, int s, int e){
this.a = a;
this.s = s;
this.e = e;
}
public Integer call() throws Exception {
int tmpSum = 0;
for[......]

Read more

最长公共子串

最长公共子串。

代码实现:

[java] view plaincopy
public class LCS2 {
public static int getLongestSubStr(String s1, String s2){
int m = s1.length(), n = s2.length();
int [][] matrix = new int[m][n];
int max = 0;
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(s1.charAt(i)==s2.charAt(j)){
i[......]

Read more

Java算法海量数据等概率随机抽样-蓄水池算法

Java算法海量数据等概率随机抽样-蓄水池算法。

随即抽样问题:

要求从N个元素中随机的抽取k个元素,其中N无法确定。

是在 《计算机程序设计与艺术》 中看到的这个题目,书中只给出了解法,没给出证明。

解决方法是叫Reservoir Sampling (蓄水池抽样)

Init : a reservoir with the size: k

for i= k+1 to N
M=random(1, i);
if( M < k)
SWAP the Mth value and ith value
end for

证明:

每次都是以 k[......]

Read more

一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G

一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。
关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了)。
解法:
(1)根据整数二进制数[......]

Read more

java-String中的 intern()

java-String中的 intern()

1. 首先String不属于8种基本数据类型,String是一个对象。

因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。

2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;

3. String str=”kvill”;
String str=new String (“kvill”);的区别:

在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。

常量池(constant po[......]

Read more

KMP算法实现教程

KMP算法实现教程。

KMP算法

在介绍KMP算法之前,先介绍一下BF算法。

一.BF算法

BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。

举例说明:

S:  ababcababa

P:  ababa

BF算法匹配的步骤如下

i=0                                   i=1                      [......]

Read more

java拓扑排序问题实例源码

java拓扑排序问题实例源码。

n个人排队, 每个人都有要求Request, 具体每个要求是希望排在某个人之前或者之后, 用类RequestItem表示。

例如有 1, 2, 3三个人, 1希望排在2之后3之前, 2希望排在1之前, 3希望排在1, 2之后。输出一个合理的排列
[java] view plaincopy在CODE上查看代码片派生到我的代码片
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;

class RequestItem{
String[......]

Read more

java生产这消费者问题

java生产这消费者问题.

固定大小的缓存容器, 有一个生产者和三个消费者:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
import java.util.LinkedList;
[java] view plaincopy在CODE上查看代码片派生到我的代码片
class Customer implements Runnable{
Buffer buffer;
public Customer(Buffer b){
buffer = b;
}

@Override
public void run() {
while(true){[......]

Read more