- 博客(61)
- 收藏
- 关注
原创 Mysql多版本并发控制(MVCC)
MVCC(Multi-Version Concurrency Control,多版本并发控制),它是一种并发控制方法,用于在数据库管理系统中实现对数据库的并发访问。
2024-08-25 17:05:26
802
原创 JWT与授权的几种方式对比
JWT(JSON Web Token)是目前最流行的跨域认证解决方案,是为了网络应用环境之间传递声明而执行的基于JSON的开发标准,该token被设计为紧密安全的,特别适用于分布式站点的单点登录场景。jwt的声明一般用来在身份提供者和服务提供者之间传递被认证的用户信息,以便从服务器获取到资源。该token可以被用来做认证和加密。
2024-08-20 09:27:51
707
原创 Mysql事务
例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。」隔离级别下,可以很大程度上避免幻读现象的发生(注意是很大程度避免,并不是彻底避免),所以 MySQL 并不会使用「串行化」隔离级别来避免幻读现象的发生,因为使用「串行化」隔离级别会影响性能。
2024-03-23 21:53:15
929
原创 Mysql索引学习
mysql使用较多的存储引擎:InnoDB、MyISAM等,其中InnoDB支持的索引是B+树索引、Hash索引、全文索引,MyISAM使用的是Hash索引。数据库数据保存在磁盘上,且为了提高性能,每次只将部分数据读入内存,众所周知,访问磁盘的成本是访问内存的十万倍左右,因此,我们需要一种高效的搜索方式。根据磁盘IO的特点,我们的诉求:每次查找数据时将磁盘的IO次数控制在很小的数量级,最好是常数数量级,于是 B+ 树应运而生。按「字段特性」分类:主键索引、唯一索引、普通索引、前缀索引。
2024-03-01 17:07:24
358
原创 [6.824]RPC and Thread
线程线程允许一个程序同时做很多事情 每个线程串行执行,就像普通的非线程程序一样 线程共享内存 每个线程都包含一些每个线程的状态: 程序计数器,寄存器,堆栈,它在等待什么为什么是线程1. 输入输出并发 客户端并行向许多服务器发送请求并等待回复。 服务器处理多个客户端请求;每个请求都可能阻塞。 在等待磁盘为客户端 X 读取数据时, 处理来自客户端 Y 的请求。2. 多核性能 在多个内核上并行执行代码。3. 方便 在后台,每秒检查
2022-05-04 21:15:25
373
原创 [Raft]论文学习
—笔记AbstractRaft 是一种共识算法,用于管理复制的日志共识算法本质上是复制状态机的实现,用于解决分布式系统中的各种容错问题.通常使用每个服务器中存在的复制日志(命令序列)来实现状态机命令序列:?状态机状态:共识模块的工作是确保复制的日志在整个群集中保持一致。因此,状态机是确定性的,即每个状态机计算相同的状态和相同的输出序列。为了提高可理解性 , Raft分离了共识的关键要素,如领导者选举,日志复制和安全,它执行了更强的一致性,以减少必须考虑的状态数量.领导者选举:Ra
2022-05-04 15:57:29
975
原创 [Raft]Fault Tolerance
一 Raft elections and log handling (Lab 2A, 2B) 选举和日志处理1. a pattern in the fault-tolerant systems容错系统的一种模式 * MR replicates computation(复制计算) but relies on a single master to organize * GFS replicates data but relies on the master to pick primaries(选择初
2022-05-04 15:10:50
729
原创 cmake语法汇总
参考cmake使用教程(实操版)以hello-world为例//main.cpp#include<iostream>int main(){ std::cout << "hello world" << endl;}Project用来指定工程的名字和语言PROJECT (HELLO) //所有语言PROJECT (HELLO CXX) //C++PROJECT (HELLO C CXX) //C 和 C++这个指令隐式的指
2022-03-31 21:48:27
343
原创 Golang+vscode开发环境配置(Linux)
准备软件Vs CodeGoLang download下载安装到指定目录中即可,记住解压到这个目录的路径。我这里是/usr/local。配置工作环境mkdir -p $HOME/goproject/{bin,src,pkg}ls $HOME/goproject环境变量vi $HOME/.bashrc//添加以下命令export GOROOT=/usr/local/goexport GOPATH=$HOME/golangexport PATH=$PATH:$GOROOT/bin:
2021-11-15 21:43:07
754
原创 检测到 #include 错误。请更新 includePath<解决>
起因检测到 #include 错误。请更新 includePath。安装软件及gcc、g++等包参考此文章点此这篇文章的官网链接用不成,重新找了一篇文章点此mingw-get: *** INFO *** setup: unpacking mingw-get-0.6.3-mingw32-pre-20170905-1-bin.tar.xzmingw-get: *** INFO *** setup: unpacking mingw-get-0.6.3-mingw32-pre-20170905-
2021-09-28 16:53:22
9504
原创 2020——xiyouLinux面试题
1.请试着解释其输出。int main(int argc , char *argv[]) { unsigned char a = 255; char ch = 128; a -= ch; printf("a = %d ch = %d\n", a, ch);}涉及到取值范围的问题2.下面代码的运行输出结果是什么,并说说你的理解。int main(int argc, char *argv[]) { char *str = "Xi You Linux Group 2
2021-08-16 22:16:34
330
原创 2019——xiyouLinux面试题
1.解释下面 C 语言代码段中每一句的语义。int main(int argc, char *argv[]) { int val = 2018; // 将 2018 赋值给 int 型变量 val int *pi = 2019; // pi = &val; // *pi = 0; // return 0; //}...
2021-08-16 21:59:05
253
原创 Lecture 01 Course Overview
内存访问方式两者运行性能相差有20倍,为什么仅仅是嵌套方式的变化便产生了这么大的差距?这与内存层次结构中的缓存有关,看图:这张图片显示了四种不同的内存访问方式,基本上复制程序的吞吐量是以 兆字节/秒 为单位的。这这里,不深入细节,我们看到的是,这两个函数在内存访问模式中处于不同的位置,一行接一行的访问方法比一列接一列的访问方法好很多,这和内存层次结构中的缓存有关。扩展实验(了解即可)实现一个函数返回其输入参数的绝对值,条件是限制使用的运算符类型,它必须是顺序执行的代码没有条件或循环(如
2021-08-12 15:06:21
145
原创 第一章--计算机系统漫游(深入理解计算机系统)
文章目录1.1 信息就是位+上下文1.2 程序被其他程序翻译成不同的格式1.3了解编译系统如何工作的好处1.4 处理器读并解释储存在内存中的指令1.4.1 系统的硬件组成1.4.2 运行hello程序1.5 高速缓存至关重要1.6 储存设备形成层次结构1.7 操作系统管理硬件1.7.1 进程1.7.2 线程1.7.3 虚拟内存1.7.4 文件1.8 系统之间通过网络通信1.9 重要主题1.9.1 Amdahl 定律1.9.2 并发(concurrency)和并行(parallellism)1.9.3 计算机
2021-08-11 21:07:48
394
原创 信号集、信号屏蔽字/pending集的处理
文章目录一、信号集二、信号屏蔽字的处理一、信号集 #include <signal.h> int sigemptyset(sigset_t *set); //初始化当前的信号集,并将所有信号排除在外 int sigfillset(sigset_t *set); //将所有信号的信号集设置为满 int sigaddset(sigset_t *set, int signum); //往信号集中增添信号 int sigdelset(sigset_t *set, int sig
2021-08-11 10:54:34
259
原创 数据库学习(1)
一、为什么要学习数据库二、数据库的相关概念DBMS 数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器 常见的数据库管理系统:MySQL、Oracle、DB2、SqlServerDB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据SQL 结构化查询语言(Structure Query Language):专门用来与数据库通信的语言 优点: 1、支持范围广
2021-08-10 08:36:26
810
原创 数据库表实例
/*SQLyog Ultimate v10.00 Beta1MySQL - 5.5.15 : Database - myemployees**********************************************************************/ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS
2021-08-09 20:50:06
672
原创 XiYou-Linux 2018年面试题
文章目录第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题第一题int main(int argc, char *argv[]) { int nums[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; printf("%d\n", nums[1][-2] ); printf("%d\n", (-1)[nums][5] ); printf("%d\n", -1[nums][5] ); return 0; }
2021-08-05 20:23:28
379
原创 du命令的简单实现
文章目录标题会用到的一些相关函数dustrchr代码标题会用到的一些相关函数duman du:Summarize disk usage of the set of FILEs, recursively for directories作用:看当前文件或目录所占空间的大小(k数)stat ctags 文件:ctags 大小:4096 块:8 IO 块:4096 目录设备:10308h/66312d Inode:6294771
2021-08-02 21:20:06
411
1
原创 写聊天室的过程中出现的问题
文章目录第一第二第三第一有关套接字,服务器端套接字创建的时候用的是fd,创建线程时换成了sock_fd,运行服务器端没有出问题,客户端一运行就直接退出,后来用了gcc -I/usr/local/mysql/include/mysql main_cli.c -L/usr/local/mysql/lib -lmysqlclient -ldl -lpthread -o main_cli -g -fsanitize=address这条命令后面的错误检查功能,发现问题是没有套接字,把fd换掉,可以运行第二服务
2021-08-02 09:54:37
953
原创 tcsetattr()
解释csetattr函数用于设置终端的相关参数。参数fd为打开的终端文件描述符,参数optional_actions用于控制修改起作用的时间,而结构体termios_p中保存了要修改的参数。optional_actions可以取如下的值。TCSANOW:不等数据传输完毕就立即改变属性。TCSADRAIN:等待所有数据传输结束才改变属性。TCSAFLUSH:清空输入输出缓冲区才改变属性。错误信息:EBADF:非法的文件描述符。EINTR:tcsetattr函数调用被信号中断。EINVAL:
2021-07-22 21:10:28
4751
原创 目录函数glob、opendir、readdir、closedir
分析、读取目录有两种方式一、glob二、opendir readdir closedir rewenddir fseek seekdir talldir接下来只说glob()函数#include <glob.h>int glob(const char *pattern, int flags,int (*errfunc) (const char *epath, int eerrno),glob_t *pglob);void globfree(glob_t *p
2021-07-22 09:01:51
353
原创 epoll(man文档部分摘录)
来自man文档文章目录epoll_create描述返回值 RETURN VALUEepoll_ctl参数:epoll_wait参数epoll_create #include <sys/epoll.h> int epoll_create(int size);epoll_create() creates a new epoll(7) instance. Since Linux 2.6.8, the size argument is ignored, but must be gre
2021-07-21 15:02:44
390
原创 生产者消费者问题(条件变量)
文章目录生产者消费者问题使用条件变量解决条件变量概念相关函数组成参考生产者消费者问题使用条件变量解决条件变量概念条件变量视是线程可用的另一种同步机制。条件变量给多个线程提供了一个汇合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生条件本身是由互斥量保护的。线程在改变条件状态之前必须首先锁住互斥量。其他线程在获得互斥量之前不会察觉到这种改变,因为互斥量必须在锁住以后才能计算条件。相关函数#include <pthread.h>pthread_cond_t
2021-07-15 10:33:35
505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人