C++
C++
今天看源码了吗
北方工大本 北邮硕 随心情记录一点日常总结
展开
-
mysql数据库的脏读、幻读、不可重复度,事务的隔离界别
不同事务级别带来的并发问题:脏读:事务A读取了事务B刚修改但没有提交的数据。如果事务B回滚,事务A读的是无效数据幻度(侧重数据的新增):事务A读取一条数据,事务B插入一条有关该数据的记录,事务A再次读取此数据,两次读取结果不一样,如同产生了幻觉一般不可重复度(侧重数据的修改):事务A读取一条数据,事务B对该数据进行了修改并进行提交,事务A再次读取该数据,两次读取结果不一样事务隔离级别:读未提交,读已提交,重复度,序列化读未提交:最低级别,一个事务可以读取另一个事务未提交的更新结果读提交:原创 2021-08-31 16:13:30 · 117 阅读 · 0 评论 -
mutex和atomic的效率比较
#include <iostream>#include <vector>#include <atomic>#include <thread>#include <mutex>using namespace std;long long a = 0;atomic<long long> b(0);long long c = 0;mutex mt;void fun1(){ for(int i = 0; i <原创 2021-06-04 17:12:02 · 242 阅读 · 0 评论 -
【计网】流量控制(滑动窗口技术)和拥塞控制(慢开始、快重传、拥塞避免、快恢复)
流量控制流量控制就是让发送端发的不要太快,让接收方来的及收。 即通过 滑动窗口技术,窗口的单位是字节,不是保温段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。流量控制往往指的是点对点通信量的控制,是个端到端的问题。潜在的死锁问题:若A为客户端,B为服务器,若现在B告诉A接收窗口(rwnd)为0,此时A不能再发送数据,过一段时间后,当B可以收数据时,会再次通知A新的rwnd,若该通知在传输中丢失,可能会造成死锁(A在等B的通知, B在等A的数据)。因此,为了避免这种情况,TCP为每个连接设有一原创 2021-04-10 17:18:58 · 730 阅读 · 0 评论 -
map下标操作 [ ] 和insert区别
map下标操作 [ ] 和insert区别map的insert和下标操作都可以用作添加元素,但两者有区别。特别是下标操作,需要特别注意。1insertinsert接受一个pair参数,并且返回值也是一个pair。返回值pair中的first元素是一个迭代器,如果数据插入成功,则返回插入关键字位置,用->解引用可以提取pair类型元素; 若插入失败,迭代器指向该map已经存在的该元素的位置。second成员是一个bool类型变量,如果关键字已在map中,insert什么也不做,second返原创 2021-04-09 10:24:19 · 1207 阅读 · 0 评论 -
CPPSTL的一些函数操作
关联容器的一些操作关联容器:map、set、unordered_map、unordered_set访问元素find()c.find(k)返回一个迭代器,指向第一个关键字为k的元素,若k不在容器中,返回尾后迭代器删除元素erase()c.erase( k )从c中删除每个关键字为k的元素,返回删除元素的数量c.erase( p )从c中删除迭代器p指定的元素,必须指向c中的一个真实元素,不能等于c.end(),c.erase(b, e)从c中删除迭代器b和e所表示的范围中的元素[b,e),返回原创 2021-02-28 18:33:56 · 145 阅读 · 0 评论 -
leetcode买卖股票、动态规划
买卖股票的最佳时期买卖股票的最佳时期2买卖股票的最佳时期3买卖股票的最佳时期4最佳买卖股票时机含冷冻期买卖股票的最佳时期int maxProfit(vector<int>& prices) { int n = prices.size(); //初始化状态: int pro = 0;//第0天的最大利润 int minn = prices[0];//第0天的历史最低价格 //从第一天开始,i表示天原创 2021-02-21 22:11:49 · 60 阅读 · 0 评论 -
Cpp设计模式及举例
C++设计模式之单例模式C++设计模式之工厂模式C++设计模式之代理模式C++设计模式之外观模式C++设计模式之适配器模式C++设计模式之模板方法模式C++设计模式之策略模式C++设计模式之命令模式C++设计模式之观察者模式C++设计模式之装饰模式...原创 2021-02-20 23:16:38 · 333 阅读 · 0 评论 -
Linux网络编程之Socket通信
**CS模型下,通信步骤及所需函数常用用法**服务器端:socket—bind—listen—accept—write/read—close客户端:socket—connect—write/read—close1、socket函数的用法int socket(int domain, int type, int protocol);//返回值为socket套接字文件描述符,用来监听连接/*domain:协议族 ipv4环境使用 AF_INET ipv6环境使用 AF_INET6type原创 2021-02-17 21:49:20 · 76 阅读 · 0 评论 -
将s拆成数放在数组里
#include <iostream>#include <vector>#include <string>#include <cmath>using namespace std;int main(){ string s = "123|456|-78"; vector<string> save; int start = 0; for(int i = 0 ; i < s.size(); i++){原创 2020-12-17 21:14:08 · 83 阅读 · 0 评论 -
Cpp前序遍历、中序遍历、后序遍历(非递归版本)
前序后中序遍历很好理解,代码相似,只不过换了一下push操作的位置,基本模板:while( 栈非空 || p 非空){ if( p 非空){ } else{ }}前序遍历 vector<int> preorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> save; TreeNode* cur = root;原创 2020-11-19 10:17:38 · 203 阅读 · 0 评论 -
CPP实现几大经典排序算法
冒泡排序void bubblesort(vector<int>& arr){ int n = arr.size(); for(int i = 0 ; i < n ; i++){ for(int j = n-2; j >= i; j--) if(arr[j] > arr[j+1]) swap(arr[j], arr[j+1]); } return ;}选择排序原创 2020-11-13 16:08:59 · 187 阅读 · 0 评论 -
C++primer Plus10.2.3排列容器中的元素并且删除重复值的算法
C++primer Plus10.2.3排列容器中的元素并且删除重复值的算法这里用到sort和unique算法,因为算法不能执行容器的操作(删除重复元素),所以还需要使用vector的erase成员函数#include <iostream>#include <vector>#include <algorithm>#include <string&...原创 2020-02-08 12:55:13 · 149 阅读 · 0 评论 -
编译器是如何处理new和delete的
Complex* pc = new Complex(1,2);//Complex为类名(复数)再编译器处理这一语句的时候,先分配复数的内存,然后进行转型,最后调用构造函数void* men= operator new( sizeof(Complex));//第一步,分配内存pc = static_cast<Complex*>(men);//第二步,转型pc->Compl...原创 2020-01-15 20:46:09 · 211 阅读 · 0 评论 -
Bigthree
类成员涉及到指针的情况时:class String{private: char * m_data;//m_data为指针public: ...};存在三个成员函数(Big Three)的设计:拷贝构造函数,拷贝赋值函数和析构函数class String{private: char * m_data; //m_data为指针public: St...原创 2020-01-15 20:06:03 · 337 阅读 · 0 评论