![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 66
Michealzn
练习、精深、热情
展开
-
手撕c++ unique_ptr(字节跳动手写算法)
#include <iostream>#include <memory>using namespace std;namespace smart_pointer{template <typename T>struct defaultDeleter { void operator()(const T *ptr) { if(ptr) { delete ptr; ptr = nullptr; } }};templ原创 2020-07-01 20:59:23 · 1323 阅读 · 2 评论 -
手撕c++ shared_ptr(字节跳动手写算法)
#include <iostream>#include <memory>using namespace std;namespace smart_pointer {template <typename T>struct defaultDeleter { void operator()(const T *ptr) { if(ptr) { delete ptr; ptr = nullptr; } }};template <原创 2020-07-01 20:05:56 · 2241 阅读 · 4 评论 -
10万并发的高性能c++ webserver设计与实现
简介 该项目使用c++11,参考muduo实现的静态web服务器。muduo网络库使用线程池+电平触发式epoll+NIO的Reactor模式实现。该项目汲取muduo的优点,并简化设计。采用线程池+边沿触发式epoll+NIO的Reactor模式实现,各个工作线程采用RR方式(Round Robin)来公平分配请求,同时引入了应用层心跳,来处理超时连接。该webserver支持长...原创 2019-12-22 17:52:30 · 5905 阅读 · 1 评论 -
C++对象模型分析-继承原理解析
讨论主题:分析C++继承关系的实现原理。继承关系下的构造和析构构造由内而外。先调用基类Base的构造函数,但后执行自己的构造函数。析构由外而内。先析构自己,再调用Base的析构函数。值得注意的,base class的析构函数需要申明为virtual,否则在析构时,派生类仅析构基类,而析构自身,可能导致内存泄漏。class Base{ public:...原创 2019-02-25 13:06:16 · 211 阅读 · 0 评论 -
C++面向对象程序设计提高篇
讨论主题:泛型编程和面向对象编程。主要说明C++中模板的应用。类型转型转换函数,operator typename()转换构造函数,one-argument constructorexplicit关键字类的两种形式pointer-like classes,智能指针function-like classes, 仿函数模板类模板函数模板成员模板模板特化模板偏特化...原创 2019-02-24 16:54:34 · 177 阅读 · 1 评论 -
C++面向对象程序设计基础篇
Object Based 面对单一class设计&amp;amp;gt; 经典分类Class without pointer member(s)complexClass with pointer member(s)string&amp;amp;gt; complex例子Header(头文件)中防卫式声明#ifndef __COMPLEX__#define __COMPLEX__...#endif...原创 2019-02-22 18:20:36 · 336 阅读 · 0 评论 -
Linux操作系统select非阻塞操作socket分析
socket在很多应用常见下,单进程单线程,调用socket(),connect(),read(),write()等一套,对单个socket服务。但在多socket场景下,这样的方法行不通了。server会在accept()时阻塞,等待client连入,那么到底是监听端口8080先accept(),还是监听端口8086先accept()。这就需要引入非阻塞式轮询各个socket的状态,当他...原创 2019-04-21 09:58:39 · 1018 阅读 · 0 评论 -
C++底层设计--对象(成员布局、多态实现)
C语言中,数据和处理数据的操作是分开声明的,语言本身没有支持“数据和函数”的关联。C++中支持封装,在软件工程层面上看,比在C语言中使用全局数据好。C++支持封装性质,在不使用虚函数或抽象类时,不会带来额外的开销(空间、效率)。C++对象模型中,non-static成员数据放在每个对象中,而static成员数据放在所有对象外。且static和non-static成员函...原创 2019-07-22 21:21:22 · 286 阅读 · 1 评论