![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
ArionHill
这个作者很懒,什么都没留下…
展开
-
智能指针shared_ptr的简化实现
shared_ptr采用对象管理资源,通过引用计数自动控制资源的释放时机。实现时需要注意:一个shared_ptr对象具有两个裸指针,这点通过sizeof可简单确定。其中,一个裸指针用于管理使用时分配的资源(实例中 _ptr);另一个用于记录对象信息(示例中_ref)用于记录对象信息的结构体至少包含两个引用计数,即(正常的)引用计数(示例中shared_count)和弱引用计数(示例中weak_count),二者均为原子类型。_ptr所分配的资源是否释放只与shared_count的值有关#in原创 2022-02-17 11:34:09 · 598 阅读 · 0 评论 -
智能指针、inline
智能指针智能指针兼有普通对象共享实值对象和auto_ptr自动释放实值对象的双重功能,并自动管理实值对象的生命周期和有效引用的计数,不会造成丢失引用、内存泄漏及多次释放等问题。inlineC++函数内联的工作过程:对任何内联函数,编译器在符号表里 (保存字面常量和符号常量) 放入函数的声明,包括名字、参数类型、返回值类型如果没有发现内联函数存在错误,那么函数的代码也被放入符号表里在调...原创 2019-08-05 19:50:26 · 125 阅读 · 0 评论 -
POINTER ON C
根据下面给出的声明和数据,对每个表达式进行求值并写出它的值。在对每个表达式进行求值时使用原先给出的值(每个表达式的结果不影响后面的表达式)。假定ints数组在内存中的起始位置是100,整型值和指针长度都是4字节。int ints[20] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170...原创 2019-07-30 21:03:14 · 401 阅读 · 0 评论 -
单例模式
C++实现class Singleton() { protected: Singleton(){} private: static Singleton *p; public: static Singleton* instance();}Singleton* Singleton::p = NULL;Singleto...原创 2019-07-15 09:15:07 · 112 阅读 · 0 评论 -
C++内存管理与Python垃圾回收机制
C++的内存管理方式STL的allocator,最新版本默认使用的分配器C++的内存管理方式:在c++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率分高,内存空间是连续的,但栈的内存空间有限。堆(Heap):需要程序员手动分配和释...转载 2019-05-30 16:11:10 · 581 阅读 · 0 评论 -
SSL
SSL通信过程1、当客户机c连接服务器s时,它发送一个28字节的随机值 nc到服务器,2、而s的回应是自己的随机值 ns,加上证书 certs。3、客户机确认VkCA( < attrs, Eke, interval >,a ) = true, 并且确认当前时间处于有效时间区间interval。如果两个条件都满足,则就证明了服务器的身份。接着客户机生成一个随机的46字节的预主密钥(...原创 2019-05-22 10:43:44 · 184 阅读 · 0 评论 -
同步和异步
同步I/O和异步I/O操作对比POSIX把这两个术语定义如下:同步I/O操作(synchronous I/O operation) 导致请求进程阻塞,直到I/O操作完成所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户...转载 2019-04-23 14:50:11 · 128 阅读 · 0 评论 -
进程线程的区别
每个进程中的内容:地址空间,全局变量,打开文件,子进程,即将发生的报警,信号与信号处理程序,账户信息每个线程中的内容:程序计数器,寄存器,堆栈,状态1、 进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体2、 线程实体可以共享同一个地址空间和所有可用数据。多进程(具有不同地址空间)却不能3、 多线程是CPU密集型的,那么并不能获得性能上的增强,但如果存在大量计算和IO处理,...原创 2019-04-23 14:32:19 · 120 阅读 · 0 评论 -
Python垃圾回收机制
Garbage Collection(GC)Python 主要采用引用计数的GC机制,为解决循环引用问题,引入标记-清除和分代回收引用计数优缺点优点简单实时性:一旦没了引用内存就直接释放了。处理回收的时间分摊到了平时。缺点维护引用计数消耗资源循环引用...原创 2019-04-23 14:20:44 · 102 阅读 · 0 评论 -
强制类型转换
四种强制类型转换:static_cast, const_cast, dynamic_cast, reinterpret_cast.1. static_cast< type > (content)类似于c中的强制类型转换(type)content2. const_cast< type_id > expression去掉指针或引用的const属性const_cast的...原创 2019-04-09 11:09:39 · 94 阅读 · 0 评论 -
动态内存与智能指针
智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。新标准库提供的两种智能指针的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr则独占所指向的对象。标准库定义的weak_ptr伴随类,是一种弱引用,它指向shared_ptr所管理的对象。1.shared_ptrshared_ptr 和 unique_ptr都支持的操作:sha...原创 2019-04-09 10:25:09 · 126 阅读 · 0 评论 -
集线器 网桥 路由器
原创 2019-04-05 17:01:15 · 237 阅读 · 0 评论 -
TIME_WAIT状态
TCP连接终止中的TIME_WAIT状态可靠地实现TCP全双工连接的终止;允许老的重复分节在网络中消失可靠地实现TCP全双工连接的终止;可以通过假设最终的ACK丢失了来解释。服务器将重新发送它的最终那个FIN,因此客户必须维持状态信息,以允许它重新发送最终那个ACK。如果客户不维护那个状态信息,它将响应以一个RST,该分节将被服务器解释成一个错误。如果TCP打算执行所有必要的工作以彻底终止某个...原创 2019-04-05 16:16:41 · 121 阅读 · 0 评论 -
守护进程
守护进程守护进程编程规则守护进程守护进程(daemon)是生存期长的一种进程。常常在系统引导装入时启动,仅在系统关闭时终止。没有控制终端。1. 父进程ID为0的为内核进程,名字出现在方括号中的为内核守护进程。2. 图示版本的Linux使用名为kthreadd的特殊内核进程来创建其他内核进程。3. 对于需要在进程上下文执行工作但却不被用户层进程上下文调用的每一个内核组件,通常有它自己的内核守...原创 2019-02-12 15:14:55 · 172 阅读 · 0 评论