摘要:
Java 注解 注解(Annotation)就像一个标签,用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。 JDK预置注解包括: @Deprecated,即将废弃的标记; @Override,表示当前的方法定义将覆盖超类中的方法; 阅读全文
摘要:
HTTP/2 协议 HTTP/2是由google的SPDY协议衍生而来的。 HTTP/2 没有改动 HTTP 的应用语义。 HTTP 方法、状态代码、URI 和标头字段等核心概念一如往常。 不过,HTTP/2 修改了数据格式化(分帧)以及在客户端与服务器间传输的方式。这两点统帅全局,通过新的分帧层向 阅读全文
摘要:
allocator类 C++中,内存分配和对象构造紧密纠缠(new),就像对象析构和回收一样(delete)。如果程序员想接管内存分配,即将内存分配和对象构造分开,对于前者,主要是分配和释放未构造的原始内存;对于后者,主要是在原始内存中构造和撤销对象。 分配和释放未构造的原始内存 两种方法: all 阅读全文
摘要:
C++ new与delete new operator 和 delete operator new operator 和delete operator 是运算符, 我们知道new运算符会干2件事:申请内存和调用对象构造函数,比如,当我们new一个string对象: string *ps = new 阅读全文
摘要:
C++11 并发编程 C++11 新标准中引入了几个头文件来支持多线程编程,他们分别是: <atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。 <thread>:该头文件主要声明 阅读全文
摘要:
C++ RAII 与 ScopeGuard RAII机制 RAII(Resource Acquisition Is Initialization),也就是“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用 阅读全文
摘要:
C++ 右值引用与move 右值引用 C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。 所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达 阅读全文
摘要:
C++ 类型转换 C风格转换 对于内置类型而言,C风格转换就很好用,例如: int i; double d; i = (int) d; // i = int(d) 然而,这样的转换符不能应用于类(class)和类的指针。 ANSI-C++标准定义了四个新的转换符,用于控制类(class)之间的类型转 阅读全文
摘要:
关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。 多态 函数重载(overload) 相同的作用域(在同一个类中); 函数名字相同、参数(类型或个数)不同; virtual关键字可有可无; 隐 阅读全文
摘要:
C++ 智能指针 unique_ptr 大概长这个样子 //大概长这个样子(化简版) template<class T> class unique_ptr{ T* ptr; }; unique_ptr是独占性智能指针, 某个时刻只能有一个uniqueptr指向一个给定对象; 当uniqueptr被销 阅读全文