2022-01-12_HWQ_01

2022-01-12  23:28:54  

  • 如何写一个socket  : RAII 资源获取就是初始化,WSAStartup 和WSACleanup 应该设计成类的静态方法,因为他们只需要在类的初始化和退出调用。
  • 类除了保留对外的接口,内部用到的变量和方法对调用者不可见,这种习惯叫pimpl用法。
  • 编译时指定规范: g++ -g -o test  test.cpp -std=c++11
  • 类成员初始化语法:std::initializer_list<T>    ,11
  • 注解   ,17
  • final, oerride ,default , delete  , 11
  • auto , 11
  • for-each, 11
  • ctrl k + s  包围代码
  • 结构化绑定, 17
  • STL 容器方法 emplace 原位构造, 
  • 左值 有变量名+可取地址, 右值:常量
  • std::unique_ptr 引用计数永远是1,拷贝构造和赋值运算符=delete
  • std::shared_ptr 线程共享安全,
  • std::enable_shared_from_this 
  • std::weak_ptr 不控制生命周期的智能指针,协助shared_ptr工作
  • unique_ptr与裸指针大小相同,shared_ptr是unique_ptrr 2倍
  • 智能指针原则:用了智能指针就不要再用裸指针,

 

 

使用CMake管理编译,他可以生成VisualStudio的工程文件。

使用VisualStudio阅读开源代码 ----- FileZilla源代码, 打开解决方案:Ctrl + Alt + L 

gdb 调试redis 程序 ,https://github.com/redis/redis.git

gdb 调试 nginx程序 ,  https://github.com/nginx/nginx.git

 

 

创建线程  pthread_create

C程序的调用方式是_cdecl   而win的调用线程函数方式要求__stdcall  

win创建线程 (CRT 运行时C函数库)_beginthreadex    <process.h> 

win签名CALLBACK 和WINAPI 都是__stdcall

thread类  <thread>   , 11

window 平台获取 线程ID:pthread_t   pthread_self();    DWORD  GetCurrentThreadId();

Linux获取线程ID: pthread_create(&threadid...) ; pthread_self(); syscall(SYS_getid);

c++11 获取线程ID: 

 

等待线程结束 : pthread_join() 

 

上一篇:男神鹏: Jupyter Lab 的 功能与安装


下一篇:深入探索 Gradle 自动化构建技术(六、Gradle 插件平台化框架 ByteX 探秘之旅