- 博客(77)
- 资源 (22)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 2014找工作----扎实的基础和开阔的视野是企业最看重的因素
其实找工作之前一直很忐忑,或者说不是很自信,因为各种传言说14年就业难。实验室的项目逼的有些紧,在四川做项目,腾讯实习面试都错过了。4月底回到学校给实验室申请不去实验室,准备看书。----此为题。 一、毫无亮点的自我介绍 二本师范类本科,大学四年,只学会了MFC。用MFC做了几个垃圾的不能再垃圾的管理系统。没有看过任何一本经典书籍。当时就准备考研,考到了华科。 到了
2013-10-20 15:13:40
22842
97
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux epoll详解
Linux epoll详解日期: 2013年10月 8日一、什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公
2013-10-08 08:55:19
32363
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 linux select函数详解
在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常) •我们要等待多长时间。(我们可以等待无限长的时间,等待固定的一段时间,或者根本就不等待)
2013-10-08 08:54:35
91640
18
转载 2014找工作总结-机会往往留给有准备的人
好基友的文章必须转,大神一枚:出处:http://blog.csdn.net/xiajun07061225/article/details/12844801 其实我的求职过程在十一之前就已经结束了,总体讲比较顺利。参加面试的几家公司基本都拿到了offer,分别是阿里巴巴、美团网、创新工场涂鸦移动以及华为。当时也参加了其他公司的面试,比如人人,一面过后收到了二面通知,
2013-10-18 18:31:10
18656
5
原创 转折后的总结--2014年找工作
转折后的总结--找工作 好吧,还是忍不住做个总结,毕竟还是我人生中一次比较大的事件了。非常感谢华科,我的第二个母校能提供给我一个优秀的平台。非常感谢信息安全与保密实验室607室的老师们,给我诸多照顾,让我在找工作中脱颖而出从4月20就开始了为工作二战的准备,组建了【为了offer】群和kirin团组,一是为了集合大家的力量一起打基础,而是大家收集比较好的题目,算法,
2013-10-12 22:53:09
10192
21
转载 RSA算法原理(二)
作者: 阮一峰日期: 2013年7月 4日上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。六、密钥生成的步骤我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢?第一步,随机选择两个不相等的质数p和q。爱丽丝选择了61和53。
2013-10-08 08:59:33
1828
转载 RSA算法原理(一)
作者: 阮一峰日期: 2013年6月27日如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法"。因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。一、一点历史1976年以前,所有的加密方法都是同一种模式:
2013-10-08 08:58:33
1750
转载 计算机是如何启动的?
作者: 阮一峰日期: 2013年2月16日从打开电源到开始操作,计算机的启动是一个非常复杂的过程。我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。零、boot的含义先问一个问题,"启动"用英语怎么说?回答是boot。可是,boot原来的意思是靴子
2013-10-07 13:09:28
1762
转载 字符串匹配的Boyer-Moore算法 BM算法详解
作者: 阮一峰日期: 2013年5月 3日上一篇文章,我介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Mo
2013-10-07 13:08:07
2018
转载 字符串匹配的KMP算法
作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Don
2013-10-07 13:05:44
1528
转载 Linux 的启动流程
renren面试的时候考到了,转载一篇比较经典的作者: 阮一峰日期: 2013年8月17日半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。这个部分比较有意思。因为在BIOS
2013-10-07 13:03:57
1433
原创 归并排序 笔试面试手写代码常考
归并排序是将两个或者两个以上的有序序列进行合并的一种排序算法。采用了分治的思想。它的主要思路是将序列分为两个子序列,对于两个最终有序的子序列进行合并,得到有序的整体序列。如何保证子序列有序呢?对子序列采用同样的方式进行划分,当子序列长度为1时,子序列有序,此时合并相邻的子序列。层层返回,不断地进行合并,最终完整的序列就是一个有序的序列。归并排序可以很清晰地以递归的方
2013-10-07 11:35:38
4396
3
原创 快速排序 改进快排的方法
快速排序法事应用最广泛的排序算法之一,最佳情况下时间复杂度是 O(nlogn)。但是最坏情况下可能达到O(n^2)。说明快速排序达到最坏情况的原因。并提出改善方案并实现之。答:改进方案:改进选取枢轴的方法1、选取随机数作为枢轴。但是随机数的生成本身是一种代价,根本减少不了算法其余部分的平均运行时间。2、使用左端,右端和中心的中值做为枢轴元。经验得知,选取左端,右端,中心元素
2013-10-07 11:32:42
25142
2
原创 Debug 版本 vs Release版本
一、C Run-time LibraryWin32程序(使用Windows标准库),如果是 /MD 编译的程序,那么使用Depends.exe会发现其中需要 USER32.DLL、KERNEL32.DLL、GDI32.DLL、MSVCR80.DLL等文件支持。像前3个DLL文件是Windows系统自带的,我们不用去考虑它(除非你在程序中使用的API,windows版本不支持)。 MSV
2013-10-07 11:26:58
2264
转载 Linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭Linux内存管理。 前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无
2013-10-07 11:21:24
1591
原创 详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于JonathanSwift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,
2013-10-07 11:11:38
1918
原创 vector的内存释放
1.vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,
2013-10-07 11:06:30
2364
2
原创 C++ 智能指针详解
C++ 智能指针详解一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto
2013-10-07 11:02:57
2052
原创 STL空间配置器-第二级配置器
本文讲解SGI STL空间配置器的第二级配置器。相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大。额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界)。要想了解详细信息,请参考MSVC或者其他malloc实现。图
2013-10-07 11:00:24
1414
原创 STL空间配置器-第一级配置器
一、SGI STL配置器简介 SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写:vectorint,std::alloc> iv; 他的名字是alloc,而且不接受任何参数。标准配置器的名字是allocator,而且可以接受参数。SGI STL的每一个容器都已经指定了缺省配置器:alloc。我们
2013-10-07 10:54:56
1734
转载 红黑树详解
前言: 之所以要写这篇文章,第一个目的是为了各位朋友在查看我写的源代码之前有一个可以理解理论的文章因为红黑树还是有点难的,如果不想搞懂理论,而直接看代码,那绝对是云里雾里,不知所云。第二个目的是我觉得网上虽然后不少我文章也在讲,但是我就是理解不上有点困难,在我参考了很多文章之后,认真阅读才慢慢摸透了其中的原理,所以我想用自己的方式来表达,希望有助于各位的朋友
2013-10-07 10:45:33
2199
转载 三种工厂模式区别总结
工厂模式分为三种:简单工厂、工厂模式和抽象工厂模式。三者之间存在哪些异同呢?先分别看看各个模式的特点一、 简单工厂模式:实现了算法和界面的分离,也就是将业务逻辑和界面逻辑分开了,降低了耦合度。算法的封装: 定义一个抽象的算法接口,提供不同算法的公共接口方法。其他具体算法继承这个抽象类,并实现具体的算法。简单工厂类: 作为一个独立的类,实现了针对不同的算法进行
2013-10-07 10:40:15
41545
4
原创 Iterator 模式
//Aggregate.h class Iterator; typedefint Object; class Interator; class Aggregate{ public: virtual~Aggregate(); virtual Iterator* CreateIterator()= 0;
2013-10-07 10:38:01
1109
原创 Observer 模式 观察者模式
//Subject.h #includelist> #includestring> usingnamespace std; typedef string State; class Observer; class Subject { public: virtual~Subject(); vir
2013-10-07 10:35:36
1101
原创 工厂模式
Factory模式 //Product.h #ifndef _PRODUCT_H_ #define _PRODUCT_H_ class Product{ public: virtual ~Product() = 0; protected: Product();
2013-10-07 10:32:18
1070
原创 Linux 服务器模型
此篇文章禁止转载,如若转载,请在下面联系我,谢谢~from:http://blog.csdn.net/lingfengtengfei/article/details/12348903
2013-10-07 10:25:30
4536
8
原创 KMP算法
int*next = NULL; void get_next(constchar * p){ assert(p != NULL); int m=strlen(p); next= (int*)malloc(m*sizeof(int)); if(next==NULL) {
2013-10-06 15:50:23
1137
原创 数组表示数的下一个比它大的最小的置换
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest possibl
2013-10-06 15:49:10
1569
2
转载 Cache缓存设计的一些思考
互联网架构中缓存无处不在,某厂牛人曾经说过:”缓存就像清凉油,哪里不舒服,抹一下就好了”。高品质的存储容量小,价格高;低品质存储容量大,价格低,缓存的目的就在于”扩充”高品质存储的容量。本文探讨缓存相关的一些问题。LRU替换算法缓存的技术点包括内存管理和替换算法。LRU是使用最多的替换算法,每次淘汰最久没有使用的元素。LRU缓存实现分为两个部分:Hash表和LRU链表,Hash表用
2013-10-06 15:45:37
2605
转载 剖析程序的内存布局
原文标题:Anatomy of a Program in Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 内存管理模块是操作系统的心脏;它对应用程序和系统管理非常重要。今后的几篇文章中,我将着眼于实际的内存问题,但也不避讳其中的技术内幕。由
2013-10-06 15:42:18
1030
转载 页面缓存——内存与文件的那些事儿
原文标题:Page Cache, the Affair Between Memory and Files原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 上次我们考察了内核如何为一个用户进程管理虚拟内存,但是没有涉及文件及I/O。这次我们的讨论将涵盖非常重要且常
2013-10-06 15:38:17
1308
转载 内核是如何管理内存的
内核是如何管理内存的? 原文标题:How The Kernel Manages Your Memory原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 在仔细审视了进程的虚拟地址布局之后,让我们把目光转向内核以及其管理用户内存的机制。再次从gon
2013-10-06 15:36:17
1247
原创 c++虚继承对象的内存布局(修改版)
c++虚继承对象的内存布局(修改版) 网上关于c++对象布局的文章挺多,而且《深度探索c++对象模型》(Inside TheC++ Object Model 侯捷译)一书中也很详细地介绍。如果你一点都不了解C++对象的布局,我推荐你看看《深度探索c++对象模型》的第三章,如果你意犹未尽下面的两个系列都很不错:一是陈皓的《C++ 对象的内存布局》图文并貌,
2013-10-06 15:32:44
1446
原创 非C++内建型别A和B, 在哪几种情况下B能隐式转化为A?
有四种方法:? 第一种:classB: public A {…}B公有继承A,可以是间接公有继承,当把B的对象赋值给A,会发生隐式转换。(待求证,保护继承、私有继承、B是A的成员能否发生转换?)? 第二种:classB:{OperatorA();….}转换constructor。类B实现了隐式转化为类A;compi
2013-10-06 14:59:07
4726
原创 C++空白基类最优化(EBO或EBCO)
对于C++中的一个空类 class X { }; 事实上并不是空的,sizeof(X)并不等于0,一般的结果是1。每个X的对象都有一个隐晦的1bytes,是被编译器安插进去的一个char,这样可以使得这个class的两个objects在内存中配置独一无二的地址。 当X作为另一个类的成员时,如: class A { public: X
2013-10-06 14:57:38
3249
1
原创 虚函数表的实现细节
·虚表是怎么实现的?虚表存放在哪里?·虚表中的数据是在什么时候确定的?·对象中的虚表指针又在什么时候赋值的?我们很难通过 C++语言本身来找到答案。 C++标准给编译器实现者定义了语法规范,但是被并没有定义如何实现这些语法规范,不同的编译器实现者可能有不同的实现方法,可以肯定的是他们的编译器必须符合这些语法规范。汇编语言作为最接近机器语言的计算机语言,可以为我们揭示
2013-10-06 14:23:54
20158
3
原创 不使用额外空间,将 A,B两链表的元素交叉归并
思想:先将pHead1拿出,pcurA指向phead1的下一个结点,再声明一个*pCurB;*pNextB;分别指向phead2的当前和下一个结点,每次连接,1不断,2断开。typedef struct LinkNode{int data;LinkNode* pNext;}LinkNode;void mergeList(ListNode* h
2013-10-06 14:21:11
2365
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人