- 博客(28)
- 收藏
- 关注
原创 twisted学习笔记
1.twisted 的reactor,相当于epool\select,即多路服用。reactor是单线程监听和执行回调函数的,所以回调函数要避免阻塞。2.Deferred 可使得函数调用序列化。入下图所示,右侧为功能函数,左侧为异常处理函数。功能函数返回的值会传入下一曾的功能函数。异常函数如果能正常返回,返回值传入下一曾的功能函数,如果抛出异
2013-04-18 09:52:28
644
原创 1000瓶药有1瓶有毒,需要多少只小白鼠才能试验找出
问:1000瓶药有1瓶有毒,如果小白鼠服用有毒的药,则24小时后死亡。现在需设计一种策略,使用尽可能少的小白鼠,在24小时内找出有毒的药。思路:可以先考虑简单的情况: 喝了毒药之后马上死亡,要求用最少的喝药次数找到毒药:第一次: 将1-500瓶兑在一起喝。如果老鼠死了,则拿另一只老鼠去品尝501-725瓶兑的药水。否则去喝2-250瓶兑的水。采用如此二分法,因为2^10
2013-03-08 12:09:26
8638
转载 进程调度
调度算法好环的衡量标准:(1) 周转时间短。 通常把周转时间作为评价批处理系统的性能、选择作业调度方式与算法的准则。 所谓周转时间,是指从作业提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)。它包括: (1)作业在外存后备队列上等待(作业)调度的时间; (2)进程在就绪队列上等待进程调度的时间; (3)
2013-03-04 15:00:46
566
转载 存储管理
l 分页存储管理技术1. 分页的概念1) 逻辑空间等分为页;2) 物理空间等分为块,与页面大小相同;3) 逻辑地址表示:(如,页面大小为1K)4) 内存分配原则:以块为单位,逻辑上相邻的页可以分配在不相邻的内存块中。5) 页表:实现从页号到物理块号的地址映射 6)
2013-03-04 14:49:27
377
原创 字节对齐与sizeof
一.sizeof : 运算符,sizeof(a),在编译阶段用a占用的栈空间大小替换sizeof(a).1.class test{int n;static int m;}sizeof (test)==4!=8 因为static放在静态区而不是栈空间,所以sizeof 不于计算。2.int a=0;sizeof(a=1)==4 此
2013-03-04 10:50:20
447
转载 内联和宏定义
用内联取代宏:1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。文章(一)内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #d
2013-03-02 14:18:09
353
转载 IP地址分类
现在的IP网络使用32位地址,以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址。 IP地址类型 最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等
2013-03-01 17:24:55
335
转载 网络基础知识汇总
1.IP数据包传送全过程。主机A与主机B通信,A Ping B,图:A-交换机-B,AB同一子网(1)ping数据包用的是ICMP协议,IP协议的一个子协议,位于三层,包含A的IP,B的IP,三层进行IP封装成包,进入二层(2)A,B处于相同子网,查看缓存中对与目的对应得B第2层mac地址,如果存在,直接进行第2层封装成帧,经物理层信号编码,以0101010010这样的
2013-02-28 14:29:14
788
转载 可靠网络传输的原理与TCP协议
1. 可靠停等协议 (校验核、分组重发、ACK、计时器)2. 第N个重发(Go-Back-N) (流水传送,但接受和确认接受都是安序进行。发送端N个中的某一个丢失,将导致窗口内的所有重发。接收端丢弃乱序到达的分组。)3.选择性重发。TCP:TCP流量控制与拥塞控制
2013-02-27 21:09:38
1621
转载 扩展欧几里德算法解线性方程ax+by=c
问题:ax+by=c,已知a、b、c,求解使该等式成立的一组x,y。其中a、b、c、x、y均为整数a,b的最大公约数为gcd(a,b)。如果c不是gcd(a,b)的倍数,则该等式无解,因为等式左边除以gcd(a,b)是整数,而等式右边除以gcd(a,b)后为小数。因此,只有当c是gcd(a,b)的倍数的时候,该等式有解。这样,可以通过计算使ax1+by1=gcd(a,b)成立的x1
2013-02-02 17:30:40
1327
原创 欧几里得法求最大公约数
欧几里得法求最大公约数:求a和b的最大公约数记 a mod b=c ,即a=kb+c 设a b的最大公约数为d,则a=m*d b=n*d,m和n互质。c=a-kb=md-knd=(m-kn)d,m和n互质,则n和m-kn互质,c和b的最大公约数也是d所以: "a和b(a>b)的最大公约数等于b和a Mode b的最大公约数",递归或迭代计算,直到余数为0,此时除数为最大公约数
2013-02-02 15:58:45
5976
转载 矢量与叉积
矢量 如果一条线段的端点是有次序之分的话,那么这种线段就称为 有向线段,如果有向线段p1p2的起点p1在坐标的原点,则可以把它称为矢量 p2矢量的加减 设二维矢量 P = (x1, y1), Q = (x2, y2),则 P + Q = (x1 + x2, y1 + y2), P - Q = (x1 - x2, y1 - y2),且有 P + Q = Q
2013-01-31 18:13:26
756
原创 基于trie树的AC多模匹配算法
#!/usr/bin/python2.7#-*-coding=utf-8-*-class Trie: """用来存储关键词和进行多模匹配 """ def __init__(self): self.nodetype=0 self.child={} self.fail=None self.strout="" self.tag=0 def add(self,word)
2013-01-30 17:54:26
507
转载 文档的行数未知,怎样在概率控制下,选择输出每行
问题:如何随机从n个对象中选择一个对象,这n个对象是按序排列的,但是在此之前你并不知道n的值? 具体些说,在事先并不知道行数的情况下,如何读一个文本文件,随机选择并输出一行? 解答:我们总是选择第一行,并使用二分之一的概率选择第二行,使用三分之一的概率选择第三行,以此类推。在该过程结束的时候,每一行具有相同的选中概率(1/
2013-01-10 21:38:16
431
原创 数组字符串问题------求数组前k小的元素,及其应用
问题:n元数组,问是否有和小于m的k元子数组比如数组{5,4,3,2,1},有和小于10的3元子数组。方法一:枚举所有k元子数组。采用回朔递归的方法。时间复杂度为N^2显然这种方法没有挖掘任何题目的条件。方法二:是否有和小于m的子数组,只有知道和最小的子数组的和是否小于m即可。(同样,如果问是否有和大于m的k元子数组,只需要求和最
2012-12-10 16:03:15
399
原创 数组字符串问题----数组的最长递增子数组
问题:求数组的最长递增子数组的长度。eg: 输入数组{1,-1,2,-3,4,-5,6,-7},因为最长递增子数组为1 2 4 6 ,所以返回4.方法一:显然如果能穷举所有的递增子数组(不相包含),就可以得到最长的是什么。假设有一个递增子串的集合,遍历数组的过程中维护这个集合:索引 元素 子串集合0 1 11
2012-12-09 15:11:10
517
原创 c++4种类型转换
c++类型转换:const_cast static_cast dynamic_cast reinterpret_castconst_cast用途:将const型转化为非const型,但一般转到引用,否则也没意义。但是有些有趣的现象: const float f=1.5; float& t=const_cast(f);t=2;//f=3; 编译错误,
2012-12-01 21:07:47
343
原创 素数标记法求n以内所有的素数
算法描述:记bool[n+1] flag用来记录1-n是否为素数。flag[i]==true表示i为素数。int[n] prime用来记录宿数。初始化flag,全为true.从2到n,对于flag[i]==true的,计入prime,并且将所有i的倍数的flag值设为false;最后prime中为所有的素数。证明: 假设在从小到大遍历flag时,遇到fla
2012-12-01 17:22:59
916
原创 c++单态模式(不断完善中)
考虑到:1.析构、构造函数、拷贝构造函数、赋值操作的私有。2.对象句柄的初始化和析构后的清0.3.线程安全。4.异常安全。如果有网友发现还有改进的地方请指出。#ifndef SINGLETON_H_#define SINGLETON_H_#include class lock //资源管理类。{ private: pthread_mutex_t*
2012-12-01 10:12:27
438
转载 c++对象的异常安全
假设有个class用来表现夹带背景图案的GUI菜单。这个class希望用于多线程环境,所以它有个互斥器作为并发控制用:classPrettyMenu{ public: ... voidchangeBackgroud(std::istream& imgSrc); ... private: Mutexmutex; //互斥器
2012-11-30 21:38:38
329
原创 日程安排问题
/* 活动安排问题。 * 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。 * 每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi 。 * *//*问题1,怎样安排选择的活动最多? * * 解: 贪心算法。将活动按照结束时间从小到大排列。当前时间为start,从表格中选择
2012-11-30 17:48:40
403
原创 最长回文算法
1.直接比较法。假设当前位置为回文的中点,比较两侧的相等字符个数。eg:s1=”123abccba45”,首先变为”1#2#3#a#b#c#c#b#a#4#5#”这样做的原因是使算法更简练:假设字符c是回文中点,但有两种情况,回文是奇数长度和偶数长度。将字符串扩展后,偶数长回文都是在#处分析。int huiwen(char* input,int length,char*
2012-11-30 10:36:51
410
原创 KMP字符串匹配算法
kmp核心思想:计算模式串的next数组,主串的索引在比较的过程中不回朔#ifndef KMP_H_#define KMP_H_class Kmp{ private: void getNext(char* pstr,int length,int* kmpnext); public: int calcu(char* pmain,char* pchild,int mainl
2012-11-29 21:55:42
450
转载 c++编译器什么时候生成默认构造函数
C++标准中这么说:对于类X,如果没有任何用户定义的构造函数,那么就会有一个默认构造函数被暗自声明出来;这种函数一般没有什么用。。。不过实际上不是什么时候编译器都生成默认构造函数,但下面集中情况却一定会为我们生成默认构造函数:1.类A中包含一个成员是另外一个类B,如果类B定义了默认构造函数。这个时候如果类A没有定义默认构造函数,编译器会暗自生成一个默认构造函数来调用调用类B的构造函
2012-11-27 20:34:43
630
转载 c++ new内幕
首先我们区分下几个容易混淆的关键词:new、operator new、placement newnew和delete操作符我们应该都用过,它们是对堆中的内存进行申请和释放,而这两个都是不能被重载的。要实现不同的内存分配行为,需要重载operator new,而不是new和delete。看如下代码:class MyClass {…};MyClass * p=new MyClass
2012-11-23 22:37:23
397
原创 背包问题-组合问题-排列问题
问题:输出和为n的所有和式,不可有重复式。 (此为完全背包问题,采用容易理解的回朔递归法。 同类的问题是:找零钱问题。)此问题最先想到的是组合:1到n-1的数求组合,和为n的式子。但是每个数字的个数可以多个,而且有限制,这就等同于完全背包了。组合问题与背包问题的关系:1.无重复元素的集合的组合--01背包:在每个搜索点(每个元素)只考虑数字的有无。2.有重复元素的集
2012-11-20 15:14:35
1283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人