- 博客(57)
- 收藏
- 关注
原创 【mysql】事务
事务对一条记录进行快照读,对该记录生产快照读,然后根据这条记录的历史版本,从新往旧将每条记录的DB_TRX_ID(创建或最近一次修改该记录的事务ID)传参进去,判断当前事务能否看到该版本快照,若在上图的左区域或者中间区域且不在活跃列表中则可见,否则不可见继续遍历。写-写并发场景下的第一类更新丢失又叫做回滚丢失,即一个事务的回滚把另一个已经提交的事务更新的数据覆盖了,第二类更新丢失又叫做覆盖丢失,即一个事务的提交把另一个已经提交的事务更新的数据覆盖了。事务主要用于处理操作量大,复杂度高的数据。
2025-03-31 12:07:17
881
原创 [MySQL]MySQL数据库基础知识与操作
文件存储的缺点创建一个库的本质——在对应路径下创建目录创建一个表的本质——对应路径下创建文件(先选中数据库——进入对应目录)
2025-03-25 15:47:29
757
原创 【C++】RAII
对象没有被创建无法调用自己写的函数,构造函数又被私有化了要通过该函数才能创建对象,这里static就起了作用 ——将该函数设为静态的,然后A* obj=A::CreatObj()即可。所以可以将拷贝构造函数和赋值重载放在private里只声明不实现,这样用户就不可以在类外实现了,这两个函数也就不能被实现了,达到不能被拷贝的效果。这样导致正常的对象在进程退出的时候自动调用析构函数的时候调不到,导致报错,达到防止在堆以外的区域建立对象的效果。切片的时候没有临时对象,视为一种特殊的赋值操作,所以不是转换。
2025-03-25 10:57:35
119
原创 [LeetCode]全排列I,II
用unordered系列就有点夸张了,因为nums每个数字都是不重复的,所以搞个同等规模的bool check[n]即可,标记对应位置是否之前使用过。全排列I每层要干的事即:遍历nums数组,如果之前没用过,就插入到path数组中,直到path的大小跟nums一样,就将path插入到ret数组。对于递归问题,很多时候动笔画一画,答案就出来的差不多了,区别就是每一层干的事不一样。思路:这里nums的元素是可以重复的,示例1的前两个1虽然值相等,但是不是真正的同一个数字。返回所有不重复的全排列。
2025-02-06 17:51:54
420
原创 【mysql】带你探究mysql索引
这时可以给各个Page结构体也建立页目录,页目录中的每个目录项都指向一个Page,而这个目录项存放的就是其指向的Page中存放的最小数据的键值——中间一层的page。mysql的基本交互单位是page,最下面一层的page不仅通过链表记录着数据,还有页内目录,如图中所示,有了页内目录就能很快地在一个page里查找到想要的数据了。更大的基本交互单位意味着你访问了一条数据,你访问的下一条数据也在该page里的概率也就增加了(还有局部性原理的加持),减少了IO读取的读取次数,提高了IO效率。可以仿照目录的方法!
2024-11-26 09:38:24
891
原创 【Linux从青铜到王者】详解http协议(待完善)
而报头中有个Content_Length字段,标记正文的长度,所以从空行往后提取Content_Length大小就获得了正文,就实现了报文和有效载荷的分离。可以看到报头和数据中隔着一个空行,所以我们找到第一个空行的位置,往前就是该报文的报头,往后就是该报文的正文+n个报文。因为HTTP是要向下传输给TCP协议的,TCP是面向字节流的,所以HTTP也要将结构化数据转化成字节流。常见的有301(永久重定向),307(临时重定向,搭配Location使用),404。如果是Get,参数提交是通过url来提交的。
2024-11-25 14:30:40
292
原创 【Linux从青铜到王者】Linux进程间通信(一)——待完善
进程间通信介绍1.进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。2.进程间通信发展管道。System V进程间通信。POSIX进程间通信3.进程间通信分类管道。
2024-11-21 16:25:00
908
原创 【Linux从青铜到王者】关于tcp协议你不知道的事
首先我们应该知道协议=统一规定的的结构化字段序列化就是将结构化字段里的数据转换成字节流反序列化就是将字节流里的数据放进结构化字段只要协议定好了,序列化和反序列化也就很相对轻松了,不同设备之间就可以通过字节流传输数据了,不再使用传结构体这种受平台和语言限制的方法了报文=报头+有效载荷很多教材画图的时候都是只标个数据或者ACK,其实每次传递的都是一个完整的报文(只是可能没有有效载荷罢了)tcp报头如下所示tcp的特性(关于加粗部分都是需要我们重点去体会 的)tcp是面向字节流的tcp是具有可靠性。
2024-07-29 15:33:27
825
原创 【Linux从青铜到王者】多线程1(笔记版)
pthread库里所谓的线程其实是对系统里的lwp进行了封装,将线程封装成由三个部分(struct_phthread(lwp),线程局部存储(上下文资源),线程栈)组成的结构体。申请锁取决于线程的竞争能力,如果一个竞争能力特别强的线程刚释放锁,又申请到锁继续访问资源,如此循环就会导致其他线程无法申请到锁,导致饥饿问题。执行main函数的为主线程,主线程用的栈是虚拟地址空间里的栈,其他线程的栈都在线程库里被开辟并管理。一个进程不管有多少个线程,每个线程的tgid都是一样的,每个线程的pid都是不同的。
2024-04-19 17:42:50
899
原创 【Linux从青铜到王者】 基础IO
之前我们学习过c语言的文件操作,但那是语言级别的。由之前所学知道中间肯定需要操作系统参与,所以c语言的文件操作必定封装了系统调用。
2024-02-22 21:36:38
2645
原创 【Linux】粗谈权限
以上为Linux权限的粗略总结,也以此篇开始Linux的学习,该系列会持续更新,希望各位多多支持,如有错误也希望及时指出!
2023-09-10 15:45:14
228
1
原创 【c++】七夕快到了却还没对象?手把手教你new一个出来!
本章给大家带来的是C++内存管理。在C语言阶段,我们经常使用malloc,calloc,realloc,free进行内存管理。但是,C语言的内存管理存在很多缺陷,会对程序的稳定性和安全性造成影响。不过,C语言的内存管理同时也给程序员提供了更大的自由度和灵活性,可以更加精细地控制程序的内存使用。而C++有他自己的一套内存管理,就是:new和delete。
2023-08-13 17:28:27
207
原创 【刷题之路】LeetCode24——详解两两交换链表中的结点的细节
总的来说这道题不算很难,但十分考验我们对链表的基础操作,以及对哨兵位的使用,相信对每个人都会有所帮助。希望大家多多支持,我也会继续输出我的编程知识的!
2023-05-08 21:43:44
315
9
原创 经典链表问题——判断链表是否带环
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。
2023-05-06 15:17:45
1527
5
原创 单链表|附完整源码—c语言版
我们都知道数组在内存中是连续存储的,顺序表就是由链表存储的,它有一个其他数据结构都没有的优点——支持随机访问(就是利用下标访问元素),这可以让其支持一些排序算法的操作。但是顺序表也有一些如下缺点:1. 中间/头部的插入删除,时间复杂度为O(N)2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。
2023-04-20 16:55:12
511
原创 LeetCode面试题 01.01. 判定字符是否唯一
把字符串中每个字符转化为一个二进制数,转化方法为1向左N位的位运算,N为这个字符和字符‘a'的距离;例如 Na = 0,Nb=1,Nc = 2...a = 1
2023-04-15 20:50:27
259
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人