随笔分类 - 读书笔记
主要是针对自己阅读的书籍的评价和内容分析,积累、记录
摘要:一、模板 二、异常处理 1) 检验throw操作的函数; 2) 决定throw操作是否发生在try区段; 3) 若是,则把异常对象的类型与每个catch子句对比(依赖RTTI机制); 4) 若吻合时,则流程控制交给catch子句中(catch子句可以处理异常或其他的资源释放或恢复等操作,也可以继续抛
阅读全文
摘要:一、对象的构造与析构 二、new和delete操作符 三、临时性对象 1) 一般认为,临时性对象被摧毁应是在对完整的表达式在求值过程中的最后一个步骤时; 2) 若临时对象被绑定在一个引用上,则其生命周期被延长,直到该引用的生命周期结束或直到临时对象的生命作用域范围结束,此时视哪一种情况先到达而定。
阅读全文
摘要:一、类虚函数杂谈 0.虚基类中若存在成员变量,应提供可初始化的构造函数或默认参数的构造函数,避免该成员变量无法被初始化到;当然若不是出于公共部分剥离到父类,则可以将其下层到子类中去,避免基类增加不必要的构造函数。 1.建议不要把基类中的虚析构函数置为存虚的。 2.不必要把子类基本不会覆写的函数设置为虚函数,也不应该全部函数加上virtual修饰由编译器来帮助取消一些成员函数的虚函数...
阅读全文
摘要:一、类成员函数调用方式 二、虚成员函数 虚函数的调用,当由一个指向子类的基类指针对象或引用对象时,需要在运行期获取到足够的信息,以表明当前实际执行实体。在类对象模型中,只要有虚函数,则就需要执行期的额外信息(当前指针指向的真实类型以及实际的实体所在位置地址)。这就涉及到vptr和vtable表的构建
阅读全文
摘要:一、类数据成员绑定 1.一个空类的大小不会为空,一般为一个char,即1个字节大小,其为了区分不同两个空类对象,需要一个地址来表示。 2.一个类的sizeof的大小,由多个方面影响: 1)语言本身的负担(如虚指针) 2)不同编译器对特殊情况的优化处理(如继承于一个空类的类,编译器可能做优化) 3)alignment对齐方式的限制(因为对齐的原因,成员变量的顺序有时也会对sizeof大小影响)。 3
阅读全文
摘要:一、C++ 默认构造函数 1.关键字explict的引入为解决单个参数的构造函数被隐式当作一个转换运算符的窘迫,此关键字要求在单个参数的构造函数时需显式调用构造函数,而不是当作转换运算;故除非的确需要用到类包装器的转换类时,否则一般情况下单个参数的构造函数建议用explict修饰。 2.编译器会在必要的时候生成默认构造的构造函数,什么情况下是必要的时候,另外生成的默认构造函数是...
阅读全文
摘要:C++ 对象模型 相对C语言的结构体和函数分离实现的不同,C++的对象模型基于类或继承,实现针对自身的从内存空间和存取时间做了优化或称为折中。 (1). C++对象模型的基本布局,如下图: 1.非静态数据成员在每个类对象中均有一份独立的实体,如:_x; 2.静态数据成员放置在类外,仅有一份共享实体,如:_point_count; 3.静态或非静态的成员函数也被放置在类外...
阅读全文
摘要:待续......
阅读全文
摘要:待续......
阅读全文
摘要:待续......
阅读全文
摘要:1. 确定使用正确的Python版本(Python2/Python3)以及实现版本运行时环境(解释器)(CPython/Jython/IronPython/Pypy),建议使用Python3 2. 应严格按照PEP8的代码规范编写代码,使用同一套风格以便于协同开发项目以及后期维护工作 3. 确定不同情况下,Python3使用bytes(8位字节编码)、str(Unicode编码)类型,可编写辅助函
阅读全文
摘要:0. IPython Python的命令行扩展工具 1. 列表推导 [] 2. 迭代器 需实现__next__、__iter__接口的迭代器类 3. 生成器 使用yield的函数,便成为了生成器对象,可使用next函数、send、close、throw等函数结合使用;此外可实现协程 4. 生成器表达式 类似于列表推导,但是其使用()而不是[],并成为生成器类 5. itertools模块 提供更高
阅读全文
摘要:Node异步编程难点: 1. 异常处理 不能仅仅依靠传统的try/catch/final语句块进行异常捕获;而是应采用回调函数调用时传err错误码参数的方式捕获异常; 原则1:必须执行调用者传入的回调函数,回调函数第一个参数是err,err为真,则有异常,则可执行异常后续处理,否则执行相应的正常操作。 原则2:正确传递回异常供调用者判断,即在编写异步方法时,只要将异常正确传递给用户的回调方法即可,
阅读全文
摘要:Nodejs基于事件机制以及回调函数实现异步编程 回调与异步: 回调不等于异步,回调只是一个函数作为另一个函数的参数而已。一般实现异步的方式由setTimeout或SetInterval + 回调函数来实现。 此外很多API默认均是采用异步调用的方式实现。 代码设计模式: 1. 函数的返回值可以作为其他函数的参数,此外函数也可以作为其他函数的参数以实现回调函数嵌套,不过回调函数嵌套的层次太深会比较
阅读全文
摘要:0. 进程 Node进程主要用来控制处理自身进程运行环境和状态,也可创建新的进程以协同处理某些任务,此时充当调度器作用。 1. process全局对象,表示当前NodeJS自身进程的对象。 2. child_process子进程模块,可创建和控制子进程,child_process.spawn创建进程(三个参数分别为可执行文件路径、命令行参数、配置子进程的执行环境与行为),此外exec等API对其进
阅读全文
摘要:0. http http模块可支持服务器使用和客户端使用。 服务器端使用: http.createServer创建服务器对象,调用服务器对象的listen监听某端口,等待客户端请求;也是一种基于回调事件机制。 HTTP请求由请求头+请求内容组成,请求头与请求内容(请求体)间有个空行,在http接收请求回调函数中request参数对象可访问请求头数据以及请求内容。 HTTP响应由响应头+响应内容组成
阅读全文
摘要:0. fs模块文件读写 一般操作: fs.open打开文件 fs.read读文件 fs.write写文件 fs.fsync刷新内存缓存以写入文件(类似于C/C++语言的flush) fs.close关闭文件 文件读写: fs.writeFile fs.writeFileSync(同步) fs.readFile fs.readFileSync(同步) 通过pipe管道读写数据流,用于大文件: fs.
阅读全文
摘要:0. node 命令行参数选项 1. 模块导出: exports与module.exports区别; module.exports 导出便是将要被导出的对象,exports则可认为是module.exports的引用对象(exports本身仅是一个空对象,此时用来声明接口)(两者均指向对一个对象的变量), 实际上被导出或者说被require的便是module.exports对象指向的对象,而exp
阅读全文