代码改变世界

随笔档案-2015年04月

转:Cache相关

2015-04-27 14:36 by itwolf, 176 阅读, 收藏, 编辑
摘要: 声明:本文截取自http://blog.163.com/ac_victory/blog/static/1033187262010325113928577/(1)“Cache”是什么Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。(2)为什么要设计Cache我们知道... 阅读全文

原码 反码 补码 移码

2015-04-27 11:33 by itwolf, 704 阅读, 收藏, 编辑
摘要: 1、正数的原码、补码、反码均为其本身;2、负数(二进制)的原码、补码、反码公式: 反码 = 原码(除符号位外)每位取反 补码 = 反码 + 1 反码 = 补码 - 1 移码 = 补码符号位取反目的:反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则;补码:解决负数加法运算正负零问... 阅读全文

CRC校验码

2015-04-27 10:01 by itwolf, 920 阅读, 收藏, 编辑
摘要: 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为R的多项式G(x)(R=N-K)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。编码规则:... 阅读全文

计算机系统可靠性的计算

2015-04-27 08:58 by itwolf, 3693 阅读, 收藏, 编辑
摘要: 计算机系统的可靠性是制从它开始运行(t=0)到某时刻t这段时间内能正常运行的概率,用R(t)表示。失效率是指单位时间内失效的元件数与元件总数的比例,以λ表示。两次故障之间系统能够正常工作的时间的平均值称为平均无故障时间(MTBF)。计算公式:系统类型可靠性失效率串联系统R=R1×R2×...×Rnλ... 阅读全文

虚拟存储管理

2015-04-26 09:47 by itwolf, 716 阅读, 收藏, 编辑
摘要: 程序局部性原理:基于大量的程序运行特征的观察发现在一段时间内,一个程序的执行往往是呈现高度的局部性。表现在以下两个方面:时间局部性:若一条指令被执行,那么不就的将来它很有可能再被执行。空间局部性:若内存单元被使用,则在一定时间内它及其相邻单元很可能被再次使用。虚拟存储技术:由程序局部性原理可以发现,... 阅读全文

生产者-消费者问题

2015-04-24 11:25 by itwolf, 663 阅读, 收藏, 编辑
摘要: 接上一篇进程之间的同步和互斥,生产者-消费者问题常常用来解决多进程并发执行过程中的同步和互斥问题。原理如下:把一个长度为n(n>0)的有界缓冲区与一群生产者进程P1,P2,…,Pm和一群消费者进程C1,C2,…,Ck联系起来,只要缓冲区未满,生产者就可以往缓冲区中放产品,只要缓冲区未空,消费者就可以... 阅读全文

信号量及PV原语

2015-04-24 10:23 by itwolf, 2042 阅读, 收藏, 编辑
摘要: 操作系统中进程互斥和同步的实现的一个最基本的方方是使用信号量和PV原语。信号量S的物理意义:当S≥0的时候表示,某个资源可以使用的数量,当S0(有资源可用),所以P进程就可以执行啦,否则就是执行P之前S≤0(没资源可用),所以P进程就被阻塞了。V操作也是一样,如果执行V操作之后S≤0,那么说明执行V... 阅读全文

使用数字进行字符遍历

2015-04-23 22:26 by itwolf, 1023 阅读, 收藏, 编辑
摘要: 有些时候使用数字进行遍历,然后将数字转化成需要的进制数,再将进制数对应成需要的字符是一种非常有效的方法。如:输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 ... 阅读全文

注意:C++中double的表示是有误差的

2015-04-23 14:41 by itwolf, 1616 阅读, 收藏, 编辑
摘要: 注意:C++中double的表示是有误差的,直接通过下面的例子看一下 1 #include 2 using namespace std; 3 int main() 4 { 5 double i; 6 for(i=0;i!=10;i+=0.2) 7 { 8 co... 阅读全文

ER模型到关系模型的转换规则

2015-04-23 10:29 by itwolf, 2834 阅读, 收藏, 编辑
摘要: E-R模型向关系模型的转换规则:一、两元联系的转换规则(1)实体类型的转换将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键。(2)联系类型的转换a实体间的联系是1:1可以在两个实体类型转换成两个关系模式中的任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属... 阅读全文

SQL中查询优化的主要策略

2015-04-22 10:29 by itwolf, 604 阅读, 收藏, 编辑
摘要: 为了能提高查询效率按优先级主要有一下策略:1、尽可能早的执行选择操作(最基本的一条)2、把笛卡尔积和随后的选择操作合并成F连接运算3、同时计算一连串的选择和投影运算4、保留同一子式的结果5、适当对关系文件进行预处理6、计算表达式之前先估算怎么计算效率最高 阅读全文

分解成3NF保持函数依赖且为无损连接的算法

2015-04-22 09:44 by itwolf, 2427 阅读, 收藏, 编辑
摘要: 分解成3NF保持函数依赖且为无损连接的算法:1、根据分解成3NF的保持函数依赖的分解算法(http://www.cnblogs.com/bewolf/p/4443919.html),得到分解结果ρ2、判断分解是否为无损连接,如果是直接输出结果ρ3、如果2中是有损的,那么令ρ=ρU{X},其中X是R的... 阅读全文

函数依赖集闭包、属性集闭包、超键、候选键和最小函数依赖集的求法。

2015-04-22 09:00 by itwolf, 24271 阅读, 收藏, 编辑
摘要: 函数依赖集的闭包F:FD的集合称为函数依赖集。F闭包:由F中的所有FD可以推导出所有FD的集合,记为F+。例1,对于关系模式R(ABC),F={A→B,B→C},求F+。根据FD的定义,可推出F+={φ→φ,A→φ,A→A,A→B,A→C,A→AB,A→BC,A→ABC,…},共有43个FD。其中,... 阅读全文

分解成3NF的保持函数依赖的分解算法:

2015-04-21 11:41 by itwolf, 17784 阅读, 收藏, 编辑
摘要: 转换成3NF的保持函数依赖的分解算法:ρ={R1,R2,...,Rk}是关系模式R的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为Xi→Alj,其步骤如下:① 对R的函数依赖集F进行极小化处理(处理后的结果仍记为F);② 找出不... 阅读全文

模式分解是否为无损连接的判断方法

2015-04-21 10:55 by itwolf, 49132 阅读, 收藏, 编辑
摘要: 方法一:无损连接定理关系模式R(U,F)的一个分解,ρ={R1,R2}具有无损连接的充分必要条件是:U1∩U2→U1-U2€F+或U1∩U2→U2-U1€F+方法二:算法ρ={R1,R2,...,Rk}是关系模式R的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},... 阅读全文

字符串处理技巧

2015-04-20 20:38 by itwolf, 299 阅读, 收藏, 编辑
摘要: 1、快速统计字符串中每个字符出现的个数hash表2、求两个字符串公共的最长子串长度和子串双重循环遍历找到长度,同时用二重指针保留住最长长度时候的指针位置3、求一个字符串中最大的重复子串长度和子串和2的思路差不多4、将一个字符串全排列输出(1)递归 (2)使用STL中的next_permutation... 阅读全文

sort+结构体实现二级排序

2015-04-20 20:34 by itwolf, 2822 阅读, 收藏, 编辑
摘要: 之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法。还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面。好,现在这个问题已经涉及到了二级排序,要按照身... 阅读全文

数据库的规范化

2015-04-20 18:44 by itwolf, 669 阅读, 收藏, 编辑
摘要: 一、基础概念实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等。属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。元组:表中的一行就... 阅读全文

C++ STL之迭代器注意事项

2015-04-17 22:55 by itwolf, 1109 阅读, 收藏, 编辑
摘要: 1、两个迭代器组成的区间是前闭后开的2、如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效http://blog.csdn.net/hsujouchen/article/details/89872333、迭代器指向的内容为空的时候(如已经指向end的时候)是不能访问值的,否则运行... 阅读全文

C++STL之整理算法

2015-04-15 09:15 by itwolf, 316 阅读, 收藏, 编辑
摘要: 这里主要介绍颠倒、旋转、随机排列和分类4中常见的整理算法1、颠倒(反转)void reverse(_BidIt _First, _BidIt _Last)_OutIt reverse_copy(_BidIt _First, _BidIt _Last,_OutIt _Dest)2、旋转_FwdIt r... 阅读全文

C++ STL之排序算法

2015-04-14 15:08 by itwolf, 2891 阅读, 收藏, 编辑
摘要: 排序算法和查找算法差不多,也涉及到迭代器区间问题,关于该问题的注意事项就不在啰嗦了一、全部排序sort、stable_sortsort是一种不稳定排序,使用时需要包含头文件algorithm默认可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。如果只传入这两... 阅读全文

C++ STL之查找算法

2015-04-14 11:29 by itwolf, 2880 阅读, 收藏, 编辑
摘要: C++STL有好几种查找算法,但是他们的用法上有很多共同的地方:1、除了binary_search的返回值是bool之外(查找的了返回true,否则返回false),其他所有的查找算法返回值都是一个迭代器(查找成功返回目标所在迭代器的位置,否则返回最后一个元素的后一个位置或者说是容器的end())2... 阅读全文

C++ STL之set的基本操作

2015-04-13 21:05 by itwolf, 12909 阅读, 收藏, 编辑
摘要: set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。1、set迭代器与map的不同:(1)set使用接引用运算符*取值,而map使用first和second取值。(2)set的迭代器都是常量迭代器,不能用来修... 阅读全文

C++STL之map的基本操作

2015-04-13 15:08 by itwolf, 846 阅读, 收藏, 编辑
摘要: STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找、删除效率,内容会按照键值自动排序。使用map的注意事项:1、关联式容器的键值是不允许修改的,所以永远不要试图去修改关联式容器的键值2、插入数据时,如果使用的是insert,并且新插入的键值在原映射中已经存在... 阅读全文

C++ STL之deque的基本操作

2015-04-12 13:40 by itwolf, 1801 阅读, 收藏, 编辑
摘要: 前两篇博文中已经介绍了vector和list的两种容器,我们发现他们各有各的优缺点,vector在内存中连续存储,支持随机访问,但是查找和删除的效率比较低,而list在内存中是链式存储的查找和删除的效率很高,但是不支持随机存储,那么deque就综合和两者的优点,将若干连续的内存通过某种手段拼接在一起... 阅读全文

C++ STL之list容器的基本操作

2015-04-12 11:19 by itwolf, 9336 阅读, 收藏, 编辑
摘要: 由于list和vector同属于序列式容器,有很多相同的地方,而上一篇中已经写了vector,所以这一篇着重写list和vector的不同之处和特有之处。特别注意的地方:(1)STL中迭代器容器中都要注意的地方(vector中已经提到):1)任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(... 阅读全文

C++ STL之vector容器的基本操作

2015-04-11 22:48 by itwolf, 681 阅读, 收藏, 编辑
摘要: 注意事项:特别注意任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(具体见插入和删除的例子)特别注意begin()指向的是vec中的第0个元素,而end是指向最后一个元素的后面一个位置(不是最后一个元素)特别注意迭代器的时效性,如果一个迭代器所指向的内容已经被删除,而后又使用该迭代器的话,会... 阅读全文

素数的判断

2015-04-10 21:45 by itwolf, 224 阅读, 收藏, 编辑
摘要: 1、遍历2以上N的平方根以下的每一个整数,是不是能整除N 1 bool Isprimer(int n) 2 { 3 int flag=1; 4 if (n<2) 5 return false; 6 if (n==2) 7 return true... 阅读全文

C++STL 之排列

2015-04-10 12:53 by itwolf, 733 阅读, 收藏, 编辑
摘要: 固然我们可以自己使用递归编写全排列程序,但是既然STL里面已将有了这个功能为什么不直接用呢,下面就写一下直接使用C++ STL生成全排序的程序函数名:next_permutation包含头文件:algorithm函数原型:template bool next_permutation(Bidirec... 阅读全文

经典算法学习之贪心算法

2015-04-10 10:08 by itwolf, 1711 阅读, 收藏, 编辑
摘要: 贪心算法也是用来求解最优化问题的,相比较动态规划很多问题使用贪心算法更为简单和高效,但是并不是所有的最优化问题都可以使用贪心算法来解决。贪心算法就是在每个决策点都做出在当时看来最佳的选择。贪心算法的设计步骤:1、将最优化问题转换为:对其做出一次选择之后,只剩下一个问题需要求解的形式(动态规划会留下多... 阅读全文

经典算法学习之动态规划

2015-04-07 14:53 by itwolf, 6418 阅读, 收藏, 编辑
摘要: 动态规划方法通常用来求解最优化问题。适合使用动态规划求解最优化问题应具备的两个要素:1、最优子结构:如果一个问题的最优解包含子问题的最优解,那么该问题就具有最优子结构。2、子问题重叠(如果子问题不重叠就可以用递归的方法解决了)具备上述两个要素的问题之所以用动态规划而不用分治算法是因为分治算法会反复的... 阅读全文

C库函数手册(ctype.h)

2015-04-02 10:30 by itwolf, 315 阅读, 收藏, 编辑
摘要: ctype.h函数说明:int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'... 阅读全文
点击右上角即可分享
微信分享提示