该文被密码保护。 阅读全文
摘要:
Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的: 1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件; 2. 浏览器开始载入html代码,发现标签内有一个标签引用外部CSS文件; 3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件; 4. 浏览器继续载入html中部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了; 5. 浏览器在代码中发现一个... 阅读全文
摘要:
注:本文摘自COOL SHELL,陈皓的blog,本人觉得是一篇能给小小程序猿们方向感的一篇文章,收藏在此,与尔等共勉之。前言你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)建议:不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。一定要学会思考,思考为什 阅读全文
摘要:
preface: 1、传统C++内存管理中可能出现的问题:内存泄露、野指针、访问越界;相关解决方案:智能指针 std::auto_ptr,不能完全解决内存管理中出现的问题; 2、关于smart_ptr库的概述: 2.1、C++程序员通常采用RAII(资源获取即初始化)机制管理内存资源,在使用资源的类的构造函数中申请资源,最后在析构函数中释放资源;如果对象的声明方式是在栈上,RAII机制可以工作正常,但是如果对象是用new操作符在堆上创建的,那么它的析构函数不会自动的调用,需要手动delete,然而即便是C++熟手,也很容易忘记; 2.2、智能指针实践了代理模式,代理了原始的“裸... 阅读全文
摘要:
一、背景 C++缺乏对时间和日期的处理能力,不得不求助于C,使用笨拙的结构和函数(struct tm,time())。现在,Boost使用timer和date_time解决了这个问题。二、timer简介 1、timer是一个很小的库,提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务。它包含三个组件:分别是 计时类 timer、progress_timer和进度指示类progress_display 2、组件介绍作用需包含的头文件其他说明timer测量时间的流逝,提供毫秒级别的计时精度和操作函数#include<boost/timer.hpp>using names 阅读全文
摘要:
Boost程序库总论一、关于Boost 1、功能强大,构造精巧,跨平台,开源,免费; 2、采用类似于STL的编程范式,但是没有STL那么晦涩难懂,代码格式优美清晰,易于阅读; 3、该库的每个组件都是经过严格审查和验证,具有很高的工业强度; 4、相关网站:www.boost.org; 5、Boost库的大部分组件(近90%)不需要编译,直接包含头文件即可; 6、文件后缀:".hpp" 说明: 6.1、与普通的C头文件(*.h)区分; 6.2、使Boost库不需要预先编译,直接引入工程即可; 6.3、C++编译器的限制:很多编译器尚不支持C++标准提出的模板的分离编译... 阅读全文
摘要:
一、基本认识 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等堆由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的全局/静态存储区全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有. 阅读全文
摘要:
一、C++对象内存模型认知模式 二、C++类数据成员内存模型 <1>无继承情况 <2>单继承与多重继承的情况 <3>虚继承 观点: <a>非静态数据成员在类实例内存中在内存中连续存储; <b>静态数据成员不占类实例内存; <c>一个子类的内存模型可以看成就是父类的各数据成员与自己新添加的数据成员的总和; <d>虚拟继承中,关于对象的数据成员内存布局问题有多种策略,自己注意测试;三、C++类函数成员的内存模型 相关概念:C++的指针类型 指针类型中包含了一个类似于sizeof的信息,或者其他的辅助信息,个size 阅读全文
摘要:
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。1.基本认识 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的,简称为V-Table,在这个表中,主是要一个类的虚函数的地址表。C++的编译器应该是保证虚函数表的指针存在于对象实例中最.. 阅读全文
摘要:
和一个一起实习两个月的同事聊天,我们聊及职业规划问题的时候,他给我发了这样一份文件,我觉写的很具有实践的价值,就原封不动的照搬过来... 假设你的月收入只有2000元,你也可以过得很好。我帮你把钱分成五份。第一份600元,第二份400元,第三份300元,第四份200元,第五份500元。 第一份,用来做生活费。这么少的生活费,每天只能够分到十几元。早餐一份煮米丝,一个鸡蛋,一杯豆浆。中餐一份快餐,一个水果。晚餐自己开个小灶,煮点饭,加俩菜,睡前一杯奶。这样一月的伙食大概是500-600。不过,如果你还年轻,身体暂时还没有太多问题,这样的食谱,够你数年内不会有健康问题。 第二份,用来交朋... 阅读全文