随笔分类 - 读书
摘要:如果一个类只定义了类名,没定义任何方法和字段,如class A{};那么class A的每个实例占用1个字节的内存,编译器会会在这个其实例中安插一个char,以保证每个A实例在内存中有唯一的地址,如A a,b;&a!=&b。如果一个直接或是间接的继承(不是虚继承)了多个类,如果这个类及其父类像A一样没有方法没有字段,那么这个类的每个实例的大小都是1字节,如果有虚继承,那就不是1字节了,每虚继承一个类,这个类的实例就会多一个指向被虚继承父类的指针。还有一点值得说明的就是像A这样的类,编译器不一定会产生传说中的那6个方法,这些方法只会在需要的时候产生,如class A没有被任何地方
阅读全文
摘要:1:注意不要反回指向栈内存的指针或引用,因为在函数返回时改内存已经被销毁了2:C/C++没有办法知道指针所指的内存容量大小 当数组作为参数传递时,数组将退化成相同类型的指针 不要指望要指针参数去申请动态内存,因为函数会为产生一个临时变量指向参数的内存,当函数内分配内存时,将内存的地址赋给了临时参数,而没有给实参赋值,所有实参没有发生任何变化,应该修改的是指针所指的内容,而不是修改指针的指向,所有可以用指向指针的指针3:重载和内联机制既可用于全局函数也可用于类的成员函数,const和virtual机制即用于类的成员函数4:在继承关系中,非虚方法:调用指针类型的方法;虚方法:调用指针所指的对象类型
阅读全文
摘要:最近看了一下吴军的数学之美。书很好,废话我就不多少了。看了第9章图论和网络爬虫,一直都觉得网络爬虫很牛B,搜索引擎不就是用爬虫爬网页的吗,于是想写一个简单的爬虫来爬网页试试,最先想到的就是给自己的博客建一个目录,够小够简单了吧,于是就有了这篇文章,简单的分享一下,先申明我的实现很简单没有技术含量,在看下文之前可以先看看 我的博客目录。 源码必共享简单介绍一下网络爬虫的原理:给你一个网页地址,先把这个网页下载下来,然后分析这个网页的内容,得到这个网页中的所有链接,然后下载这些网页,继续分析下载。这样就能下载互联网上的很多网页。原理就这么简单,实现起来就不那么容易了。由于深入不了只能说简单的。构造
阅读全文
摘要:系统中的所有线程都要访问系统资源,一个线程霸占某个资源,其他需要该资源的线程就不能完成自己的任务;另外如一个线程在读取某块内存中的数据,而另一个线程又正在修改这块内存的值,这同样不是我们想要的,所以线程之间必须要有一套自己的规则,不然就凌乱了。线程之间需要通信,如A线程霸占某个B线程需要的资源X,在A占用期间,B线程只能等待,或处于挂起状态,当A线程用完资源X后,系统会告诉线程B,资源X可以用了,或是将处于挂起状态的线程B唤醒,然后线程B就获得对资源X的控制权,其他想用资源X的线程就得经历B刚才的遭遇。当多个线程同时需要某个资源时必须遵守下面两个规则:1:多个线程“同时”访问资源,不能破坏资源
阅读全文
摘要:线程由两部分组成:线程内核对象和线程栈。关于内核对象请看windows内核对象简介。线程内核对象,操作系统用线程内核对象来管理线程,操作系统还用它来存放统计信息。线程栈,用于维护线程执行时所需的所有函数参数和局部变量,就是C#程序员常说的线程栈和托管堆中的线程栈。我们知道进程是有惰性的,它的所有工作都是由线程完成的,而进程只是为线程提供场地,线程函数执行我们让它执行的任务,最终线程函数将终止运行并返回,线程将终止运行,线程的内存将被释放,线程内核对象的使用计数将减一,如果线程内核对象的使用计数减为0,线程内核对象将被销毁。说了这么多,感觉有点虚,我们还是来看看创建线程的函数吧。CreateTh
阅读全文
摘要:内核对象只是操作系统内核分配的一个内存块,并且只能由操作系统内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。Windows提供一组函数创建和操作内核对象。调用一个创建内核对象的函数,函数会返回一个句柄,该句柄标识了这个内核对象,这个句柄可由当前进程中的所有线程调用。也可以通过跨进程边界共享内核对象,让其他的进程调用。使用计数。内核对象有个使用计数数据成员,标识内核对象被多少个进程所使用。大部分情况是内核对象只被创建它的进程所有使用,当这个进程退出时,内核对象的使用计数就会减一,如果内核对象的使用计数为0时,内核对象就会自动销毁,如果内核对象被多个进程使用时,它的生命周期就可
阅读全文
摘要:在看《Effective C++》这本书的过程中,我无数次的发出感叹,这他妈写得太好了,句句一针见血,直接说到点上。所以决定把这本书的内容加上自己的理解写成5篇博客,我觉得不管你是否理解这些条款,都值得你先记下来。下面的索引对应的是书中的章节。11:如果class内动态配置有内存,请为此class声明一个copy constructor和一个assignment运算符12:在constructor中尽量initialization动作取代assignment工作13:initialization list中的members初始化次序应该和其在class内的声明次序相同14:总上base cla
阅读全文
摘要:作者崇尚简约、见解独到、看法新颖、内容有点另类,却总让我产生共鸣,从中受到不少启发,看起来真是过瘾。原来书还可以这样写。有些可能不知不觉加上了我自己的观点,同一句话不同的人有不同的理解,可能会出现断章取义的情况,往你喜欢的方面想就好,这是唯一一本我在几天之内看了两遍的书,我想很多人也会喜欢,于是昨晚我把自己喜欢的内容整理了一下,形成这篇博客。希望对大家有帮助。1.哪来的从错误中学习--别人的失败与你何干,别人挣的没花得多,那么,正好你来挣。你到底能从错误中学到什么?你能学到的只是不再重蹈覆辙,但这有什么意义呢?2.工作狂不是英雄,他们没有力挽狂澜,不过是浪费时间,真正的英雄早已想出办法、搞定一
阅读全文