![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
专注云吸猫开发
c++开发,编程爱好者
展开
-
mysql中的事物隔离级别,脏读 不可重复读 幻读
先解释下脏读、不可重复读、幻读脏读:所谓脏读,就是读到了别的事物回滚前的脏数据,比如事物B执行过程中修改了数据X,在未提交前,事物A读取了X,而事物B却回滚了,这样事物A就形成了脏读。不可重复读:事物A首先读取了一条数据,执行逻辑的时候,事物B将这条数据改变了,事物A再次读取的时候,数据不再匹配,这叫做不可重复读幻读:事物A首先根据条件索引得到N条数据,然后事物B改变了这N条数据之外的M条或者增添了M条复合事物A搜索条件的数据,导致事物A再次搜索发现有N+M条数据了,就产生了幻读。不可重原创 2021-01-03 17:22:13 · 197 阅读 · 0 评论 -
cpp的类型转换
cpp在类型转换之前利用编译器做检查是一个好的习惯,鉴于dynamic_cast的效率问题,建议使用static_cast做转换,向上转换一般是安全的(向上转换指的是子类转换为父类)有两个转换函数template<typename To,typename From>inline To implicit_cast(From const &f){ return f;}template<typename To,typename From>inl..原创 2020-07-26 11:05:15 · 287 阅读 · 0 评论 -
sockaddr和sockaddr_in的区别
sockaddr的定义如下struct sockaddr{sa_family_t sin_family; //地址族char sa_data[14]; //14字节,包含套接字中目标地址和端口信息}sockaddr_instruct sockaddr_in{sa_family_t sin_family; //地址族uint16_t sin_port; //16位 TCP/UDP 端口号struct in_addr sin_addr; //32位I原创 2020-07-25 17:51:56 · 102 阅读 · 0 评论 -
std::vector 的reserve和resize
reserve 和capacity 是对应的resize 和size是对应的capatity表示容器有多少可以用,但不代表可用size表示可用的内存,用之前要resize原创 2020-07-24 16:58:09 · 180 阅读 · 0 评论 -
FD_CLOEXEC
为什么socket要设置 FD_CLOEXEC ,原因就是主线程在fork子线程的时候,会把文件描述符也拷贝一份,当子线程在执行exec的时候,执行新的程序,而文件描述符并没有被关闭,由于在内核里面保存有文件描述符数量的引用计数,那么,如果不在exec被调用之前关闭文件描述符,那个该文件描述符就会出现没有被关闭的情况。...原创 2020-07-12 15:22:41 · 463 阅读 · 0 评论 -
算法一:输入一个数组和一个target,求解两数之和等于target的数组下标
该题最简单的做法是暴力穷举法,但是穷举法的算法复杂度是o(n^2),所以可以采用如下方法,利用哈希表的特性,使算法复杂度降到o(n)class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,...原创 2020-02-27 18:04:18 · 1024 阅读 · 0 评论 -
linux fork函数的使用
linux的fork函数用于创建一个新的子进程例如pid = fork();如果pid等于0,说明此时运行子进程如果pid不等于0,说明运行的是父进程原创 2020-02-24 09:34:58 · 112 阅读 · 0 评论 -
type traits用法 针对整数类型的弹性重载
对于同样的函数,如果要区别于整数类型提供重载,将各种类型的参数的重载函数都重载一遍不太现实,可以采用调用type traits的方法,实现重载例如:templatevoid foo_iml(T val,true_type);templatevoid foo_iml(T val,false_type);templatevoid foo(T val){foo_impl(val,std...原创 2020-01-08 20:06:21 · 118 阅读 · 0 评论 -
右值作为返回值的情况
举例: 有两个函数 const T& func() { T a; return std::move(a); }T func(){ T a; return std::move(a);}要使用第二种,原因是std::move没有真正的把资源移动出来,常量引用指向的...原创 2020-01-02 17:35:45 · 365 阅读 · 0 评论 -
模板copy构造函数
模板拷贝构造函数可以提供在拷贝过程中的隐式转换,以std::pair为例:std::pair<int,const char*> p(42,"hello");如果有两个函数f(std::pair<int,const char*> p) 和函数 g(std::pair<int,std::string> p),在调用g(p)和f(p)的时候,f函数会调用...原创 2019-12-25 12:06:16 · 289 阅读 · 0 评论