- 博客(36)
- 收藏
- 关注
原创 单链表定义手写板
struct LinkNode{ int data; linkNode* next;}class LinkList{ //init Linklist(); ~Linklist(); LinkList(const int& x) // public AddToTail(LinkNode* first,int value); public AddToHead(LinkNode* firs
2014-03-13 23:31:57
746
转载 这个人的博客总结了基本的数据结构,不过我应该自己总结一下,权当参考
http://blog.youkuaiyun.com/shuilan0066/article/category/1054621
2014-03-13 23:12:29
578
转载 C++实现singleton
#include using namespace std;class Singelton{public: static Singelton* GetInstance() { if (instance_ == NULL) { instance_=new Singelton; } return instance_; }private: Singelton()
2014-03-13 21:57:39
575
转载 给出0-255,的N个值,求如何找出它们的重复值
a~z包括大小写与0~9组成的N个数用最快的方式把其中重复的元素挑出来~~void thesame(char *str) { char dsc[256] = {0}; char *tmp; for (tmp = str; *tmp; tmp++) { if (
2012-03-30 00:45:20
568
原创 找工作的想法
1.帮别人解决了什么Bug?在帮助的过程中自己发现别人犯的错误正是自己曾经犯的错误,例如***。当然共组后还有很多东西需要学习,例如配置和参数,这些是只会语言和算法的人不回去碰的。例如unicode,例如stack,例如#include。例如静态链接和动态链接。而有些人根本就不会犯那些错误。基础的扎实十分重要。2.基本的数据结构你能写出来么?例如让你实现一个栈、队列、链表...
2012-03-22 10:11:54
456
原创 CSAPP 第十一章:网络编程小结
网络应用随处可见:有趣的是,所有的网络应用都是基于相同的基本模型,有着相似的整体逻辑结构,并且依赖相同的编程接口。11-1:客户端-服务器模型:每个网络应用都是基于客户端-服务器模型的。采用这个模型,一个应用是由一个服务器进程和一个或多个客户端进程组成的。客户端向服务器发送请求,发起一个事务服务器端确认请求,并且解释执行服务器给客户端发送响应。客户端接受响应并处理1
2012-03-12 21:22:07
777
原创 CSAPP第十章:系统级I/O
不足值问题:某些情况下,read和write传送的字节比应用程序要求的少。例如:网络延迟和传输,会出现不足值,这样需要用rio包健壮的读写,即多次的读写。直到读写慢了为止。
2012-03-12 20:35:17
525
原创 CSAPP第九章:虚拟存储器
为什么需要虚拟存储器:进程需要的地址空间比较大;那么当一个程序没有空间的时候,进程就没有办法运行。虚拟存储器是对主存的一种抽象;(VM)。虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互;他为每个进程提供一个大的,一致的,私有的地址空间。它在后台沉默。自动的工作1)他将主存看做是一个存储在磁盘上的地址空间的高速缓存2)为每个进程提供了一致的的地址空间(0-
2012-03-12 20:00:48
1024
原创 CSAPP 第八章:异常控制流 小结
异常控制流(ECF):为什么重要,主要是理解系统概念,应用程序和系统是如何交互的,理解并发,了解软件异常如何工作。事件:状态变化:触发异常。异常类别:类别原因异步/同步返回行为中断来自I/O的信号异步返回到下一条指令陷阱有意的异常同步返回到下一条指令故障潜在的可恢复的错误同步可能返回到当前指
2012-03-05 20:17:05
823
原创 CSAPP第7章小结--链接
链接作用是将各种数据和代码的部分打包。链接可以运行在“编译时”、“加载时”、“运行时”,分别对应的编译机器代码(传统静态链接);加载时共享库动态链接(动态链接);运行时共享库动态链接(动态链接)连接器的重要作用:分离编译;就是模块化。使得大型应用程序分为小型的模块,再最终连接起来。修改代码也不用重新编译,而是重新连接即可理解链接可以帮助解决:构造大型程序:解决“不兼容库
2012-03-05 15:37:33
655
转载 MD5的相关知识
http://blog.youkuaiyun.com/russell_tao/article/details/7240661详见
2012-03-05 09:07:46
486
转载 经典指针越界问题
struct S { int i; int *p; }; main() { S s; int *p=&s.i; p[0]=4; p[1]=3; s.p=p; s.p[1]=1; s.p[0]=2; } 程序执行到哪一句会崩溃?为什么? struct
2012-03-04 10:51:30
798
转载 dll的基本知识和调用方式以及dllmain
这个介绍得很详细:http://wenku.baidu.com/view/f02ab07a168884868762d632.html我先简单归纳一下:dll分为静态链接和动态链接,两种有不同的调用方式和特点:特点:静态链接生成的目标文件比较大,因为.lib直接包含到了最终生成的exe中。动态链接生成的目标文件较小,因为.dll不需要包含到最终的exe中。exe动态调用d
2012-03-04 10:36:40
1098
原创 CSAPP第三章:程序的机器级表示 小结
1.汇编代码和机器代码都是和特定机器相关的。2.精通细节是理解更深和更基本概念的先决条件。3.32为机器内存为2的32次方,4*1G 64位机器为2的48次方,2的40次方位1T,2的8次方为256.256T。4.摩尔定律:芯片上的晶体管数量每年翻一番:实际上是18个月并且磁盘容量,存储器芯片容量和处理其性能都符合这一定律。5.一个程序:.i-->.s--
2012-03-04 00:12:42
1039
原创 C++引用和C语言指针调用函数
Cplus(a,i);C(&a,&i);void Cplus(int &a,int &b){if((a-b)>0){printf("123");}}void C(int *a,int *b){if( (*a)-(*b)>0){printf("123");}}
2012-03-03 22:08:34
600
原创 unsigned引起的bug
注意strlen和memcpy都存在这个问题size_t Strlen(char*s)写的代码,注意unsigned引起的bug。#include #include int strlonger(char*s,char*t);int main(){printf("hello world");char *s = "yunan";cha
2012-03-03 21:44:32
526
原创 CSAPP第五章:优化程序性
程序的目标:正确性和性能如何编写高效的程序:选择合适的数据结构和算法。编译器能够有效优化。针对大量运算,并行计算。编译器的局限性:无法判断指针(例如两个指针如果指向同一个地方会出现很多莫名的bug,必须检查指针)。程序性能的表示:CPE。例子:1.消除循环的低效率:例如for(int i=0;i好处是不需要每一次循环都调用函数。(再例如strle
2012-03-03 19:04:17
1086
原创 CSAPP 第六章-存储器层次结构 小结
简单模型中,存储器是一个线性的字节数组。真实模型中,是一个具有不同容量,成本,访问时间的存储层次结构(存储器山)程序的局部性很重要,对程序性能有很重要的影响。计算机系统一个基本而持久的思想,如果你理解了系统是如何将数据在存储器层级结构中上下移动,你就可以编写程序,让数据存储在层次结构中较高的地方,从而CPU可以更快的访问到他们。编写程序实现功能是最简单的,如何让编写的程序拥
2012-03-03 18:32:04
707
转载 CSAPP 关于寄存器的说明
32 位CPU的所有寄存器2011-11-02 13:59 4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结
2012-03-03 17:49:51
1398
转载 JAVA 的垃圾回收机制
http://tech.qq.com/a/20060726/000329.htmJava的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。需要注意的是:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,很多人来我公司面试时,我都会问这个问题的,70%以上的人回答的含义是回收对象,实际上这是不正确的。Syst
2012-02-29 17:32:07
471
转载 结构和类的区别
类是引用类型,是保存在托管堆中的。通过定义类,我们可以在数据的生存期上得到很高的灵活性,但是也会让程序的性能有一定的损失。虽然这种损失很小,但当我们只需要定义一个很小的结构时,用类来定义就有些浪费,对于这样的问题,C#有相对应的方案来解决,那就是-结构(struct)。结构(struct)是一种值类型。也就是说,结构实例是分配在线程堆栈上的,结构本身是包含有值的,而不是像类一样的引用类型,
2012-02-29 11:57:26
405
原创 内存对齐
VC中下面几个结构体大小分别是多少呢struct MyStruct{ double m4; char m1; int m3;};struct MyStruct { char m1; double m4; int m3;};#pragma pack(push)//保存对齐状态#pragma
2012-02-28 21:20:15
257
原创 各种变量的区别
http://codeup.org/archives/200这个网页相当好,还解释了栈和堆的区别!对于一个完整的程序,在内存中的分布情况如下图: 代码区全局数据区堆区栈区变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在
2012-02-28 20:02:29
881
1
转载 关于虚拟地址空间
http://blog.chinaunix.net/uid-26606708-id-3073559.html很不错的代码解析和栈分析:http://blog.youkuaiyun.com/iterzebra/article/details/6206420栈的结构:http://www.cnblogs.com/bugman/archive/2011/09/29/2195879.html
2012-02-28 19:41:00
730
原创 2012-2-23 CSAPP第一节课的小结
1.关于系统和程序优化:resgister->L1->L2->l3->mem->SSD->disk->network2.C语言的trap。这提醒了我们要注意检查边界条件:例如:内存是否重叠,传入参数检查(长度,是否为空),unsigned引起的bug,3.关于堆栈的位置和系统运行程序时的状态:4.堆栈的作用:例如栈上面主要存储的是函数的返回地址,参数和临时变量。堆上面主要存储的是:动态
2012-02-24 16:50:00
400
原创 关于Unicode
今天做实验,想看看在内存中unicode的表示。使用的是Visual studio,发现永远是2个字节。并且cpp文件使用GB2312编码。个人理解:也许和编译器有关,就算cpp文件使用其他的编码格式,仍然还是2个字节utf-8,汉字是3个字节。UNICODE 是字符集,UTF-8 和 UCS-2 是编码的规则,WINDOWS 采用的UCS-2编码方式,WEB,数据库一般采用的
2012-02-24 16:25:44
550
原创 char* 赋值时单引号和双引号的区别?include”“和include<>的区别
给字符串赋值应该用双引号,单个字符的话用单引号。 双引号代表字符串,会在后面加一个\0。 上面的写法,第二句是错误的,无法通过编译的。双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件;尖括号表示只在系统默认目录或者括号内的路径查找,通常用于包含系统中自带的头文件;
2012-02-23 16:59:42
6292
原创 PHP最大整数是多少呢
今天编了PHP程序统计用户使用本应用的次数,以及成功和失败次数,简单的++;但是就怕溢出啊!貌似是32位:2147483647 7fffffff,有符号整数
2012-02-15 09:27:55
7224
原创 Bundle和 SharedPreferences 区别
SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中 Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状态。
2011-09-26 10:50:41
645
原创 AWE GAE MEGOO 和 提高性能的INTEL的C++重新编译 BigTable是什么东东
1.http://cloud.youkuaiyun.com/a/20110906/304068.html2.http://software.intel.com/en-us/articles/improve-performance-with-recompile/?cid=sw:pr
2011-09-06 13:26:26
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人