![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
manjaro21
想的开才会收获的更多
展开
-
MYSQL锁机制
mysql中的锁读写锁读锁会阻塞写,但不会阻塞读(共享锁)写锁会阻塞读和写(排他锁)行页表锁(按照锁的粒度进行划分)对表中的记录加锁,叫做记录锁,又称行锁,行锁只锁定一行,偏写*行锁是基于索引的表锁会锁定整个表,偏读页锁在行锁和表锁之间InnoDB加锁对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及及数据集加排他锁对于普通SELECT语句,InnoDB不会加任何锁事务可以通过以下语句显示给记录集加共享锁或排锁。//共享锁(S)SELECT *原创 2020-10-14 15:04:42 · 66 阅读 · 0 评论 -
数据库事务
概念事务就是保证一组数据库操作,要么全部成功,要么全部失败。在Mysql中,事务支持是在引擎层实现的(innodb)。事务的ACID特性原子性:事务所包含的一系列数据库操作要么全部执行,要么全部回滚一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态隔离性:多个事务并发执行时,不能先相互影响持久性:一个事务一旦被提交,那么对数据库中的数据的改变就是永久性的事务并发导致的问题脏读一个事务读取了另一个事务未提交的数据;事务A读取事务B更新的数据,然后事务B回滚,此时事务A读原创 2020-10-14 15:04:01 · 89 阅读 · 0 评论 -
C++智能指针
1.unique_ptr故名独一无二的,所有权只能一个指针拥有,没有拷贝构造函数使用get可以得到一个普通指针release()断开unique_ptr与底层指针的连接。返回底层指针,然后将智能指针设置为nullptr,智能指针失去所有权复制是可以使用右值语义auto ptr = make_unique<int>(10);unique<int> ptr(new int(10));p1 = std::move(p2);int *p2 = ptr.get();//得到原创 2020-09-06 16:47:31 · 118 阅读 · 0 评论 -
从源码到可执行文件的过程
从源码到可执行文件的过程g++ hello.cpp -o hello1.预处理g++ -E hello.cpp -o hello.i//生成.i文件//-o 指的是将结果输出并指定输出的文件名处理#define 宏定义处理所有的条件预编译指令,“#if #endif”处理“#include”指令删除所有的注释添加行号和文件标识2.编译gcc -S hello.cpp(.i) -o hello.s//生成.s文件(汇编文件)词法分析语法分析语义分析优化3.原创 2020-08-29 15:07:50 · 211 阅读 · 0 评论 -
C++中的抽象类和接口
面向对象中的抽象类不可以被实例化的类C++中通过纯虚函数实现抽象类(virtual void xxx()=0)派生类必须要override该虚函数,否则派生类也不可以被实例化面向对象中的接口类中没有定义任何成员变量所有的成员函数都是公有的所有的成员函数都是纯虚函数接口是一种特殊的抽象类...原创 2020-08-19 14:30:41 · 81 阅读 · 0 评论 -
服务端向客户端发送图片并显示在QML中
服务端发送图片1.打开图片文件// 1. 打开图片文件 ifstream is(filepath, ifstream::in | ios::binary); if(!is.is_open()) { cout<<"open failed"<<endl; exit(0); }2.获取图片文件长度// 2. 计算图片长度 is.seekg(0, is.end); int length = is.te原创 2020-12-01 13:55:29 · 400 阅读 · 0 评论 -
Unicode、ASCII、UTF-8的区别
1.ASCII一共规定了128个字符的编码(一个字节8个为,也就是一个字节可以呈现出256种不同的状态),这128个字符,只占用了一个字节的后七位,最前面的一位统一规定为0(所能表示的符号有限)2.GB2312简体中文的常见编码方式GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。原创 2020-06-14 10:57:48 · 191 阅读 · 0 评论 -
QML写界面问题总结
1.页面之间的跳转var component = Qt.createComponent("Core.qml"); //想要跳转的界面component.createObject(loginPage);//当前界面的id名若跳转界面时,发现前一个界面的click事件仍然存在,则可以在新界面中使用//屏蔽父对象的鼠标事件 MouseArea{ anchors.fill: parent }2.返回前一界面,可以使用addui.destroy(); //当前界面的i原创 2020-05-30 13:43:20 · 339 阅读 · 0 评论