自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 myisam和innodb的区别

myisam适合读库 innodb适合写库

2021-06-14 17:09:52 219

原创 mysql主从同步

2021-06-14 17:08:46 200

原创 MVCC原理

2021-06-14 17:07:33 195

原创 mysql慢查询优化

2021-06-14 17:05:29 152

原创 事务的基本特性和隔离级别

幻读:

2021-06-14 17:04:44 107

原创 mysql的锁

2021-06-14 17:02:50 120

原创 mysql索引的数据结构,各自优劣

2021-06-14 17:00:59 483

原创 聚族索引和非聚族索引的区别

聚集索引: 主键值和数据存储在一起的 mysql的data和index是存储在听一个文件中的 myisam主键索引和非主键索引存储格式相同 innodb的非主键索引 : 非主键索引也是B+树存储,但是叶子节点存储的是主键值,需要通过主键值进行回表查询 ...

2021-06-14 16:58:40 242

原创 mysql索引的最左前缀原则

索引的最左前缀原则

2021-06-14 16:55:43 151

原创 mysql索引底层数据结构和算法

B+数相对于B树,横向可以存储更多的数据,减少树的高度,减少查询次数,减少IO次数。

2021-06-14 16:54:40 110

原创 hashmap

typedef int (* HashKeyCmpFun)(const void *key1, const void key2); typedef int ( HashCalFun)(const void *key); typedef struct HashNode { void *key; int value; struct HashNode *next; } HashNodeT; typedef struct { HashNodeT *entry; } BucketT; typedef struct {

2020-12-16 22:59:57 183

原创 双端队列

队列空的标识:front == rear 队列满的标识:front + 1 == rear 双端队列数据存储 比单队列多一位 typedef struct { int capity; int front; int rear; int data[]; } MyCircularDeque; /** Initialize your data structure here. Set the size of the deque to be k. */ MyCircularDeque* myCircularDequeC

2020-11-22 18:05:02 243

原创 队列-c语言实现

队列 : 先进后出(后进先出) #define MINQUESIZE 5 typedef struct TreeNode* ElemType; typedef struct { int size; int capacity; int front; int rear; ElemType *data; } MyQueue; MyQueue *CreatQueue(int capacity) { if (capacity < MINQUESIZE) { capacity = MINQUESIZE; } My

2020-11-15 18:03:08 171

原创 数据结构--栈

栈 : 先进先出 实现代码如下所示: #define MYERROR -1 typedef char ElemType; typedef struct { int top; int stackSize; ElemType *data; } myStack; myStack* StackInit(int stackSize) { if (stackSize <= 0) { return NULL; } myStack *res = malloc(sizeof(myStack)); if (res ==

2020-11-08 17:30:03 137

原创 docker

docker 1、先卸载老的: yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2、安装必备组件 yum install -y yum-utils device-mapper-persistent-data lvm2 3、加Repo cd /root wget

2020-07-26 17:11:07 239

原创 内联函数、静态函数以及普通函数

https://blog.youkuaiyun.com/qq_25815379/article/details/80735199

2019-09-18 16:10:38 315

原创 C语言实现字符转UNIX时间戳

strptime函数:https://zhidao.baidu.com/question/235245979.html char *strptime(const char *restrict buf, const char *restrict format, struct tm *restrict tm); buf指向一个字符串格式的时间,函数将这个时间用format表示的格式解析,存放到tm中去...

2019-08-12 16:15:30 932

原创 宏定义的使用技巧

参考博客:https://blog.youkuaiyun.com/zhu2695/article/details/9155593 1、防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件的内容 #endif 2、重定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数的差异,方便移植。 typedef unsigned char boolean...

2019-07-21 22:31:25 331

原创 通过函数名掉用函数

方法一:通过函数指针调用 (1)外部输入函数名,依次匹配函数名与函数,若匹配则返回该函数的入口地址,并通过函数指针接收,然后调用。 void fun_fun1() { printf("fun1\n"); } void fun_fun2() { printf("fun2\n"); } typedef void (* fp...

2019-07-21 21:35:41 293

原创 linux signal(信号)

信号:信号是unix中最古老的进程通信的一种方式,他是软件层次上对中断机制的模拟,是一种异步通信方式,信号可以实现用户空间进程和内核空间进程的交互,内核进程可以利用他通知用户进程发生了哪些系统事件,我们可以任何时候给进程发送信号而无需知道进程的状态,如果进程当前并未处于执行态,则信号则会由内核保存起来,如果进程是阻塞状态,那么信号传递会被延迟,直到阻塞结束时才会传递给进程。 可靠信号和不可靠信号的...

2019-07-14 23:43:43 257

原创 宏函数以及do{...}while(0)的巧妙用法

宏定义,编译预处理命令,在编译预处理时即进行简单的字符串替换。 宏定义函数和用户定义的函数在使用时有如下区别: 1、宏函数会在编译预处理时展开,只占用编译时间,函数调用则会占用运行时间(分配单元、保存现场、值传递、返回等),每次执行都需要载入,所以执行相对于宏较慢。 2、在函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。 3、函数调用是在程序运行时处理的,分配...

2019-07-14 16:43:17 1717

原创 linux的strings命令(用于查找自己改动的代码是否编到库中去)

strings命令:打印文件中可打印的字符。这个文件可以是文本文件(test.c),可执行文件(test),动态链接库(test.o),静态链接库(test.a) 在软件开发中,我们经常需要修改代码、并生成静态库、动态库或者可执行文件,有时候,工程太大,难以确定自己的代码是否正确编译到库中去了。此时我们可以使用strings命令。 例如: 先建立一个test.c #include <s...

2019-07-14 15:26:45 566

原创 交叉编译及工具链的概念

交叉编译: 在一种平台上编译,编译出来的程序,放到别的平台上运行。即编译的环境和运行的环境是不一样的。 交叉编译的原因 交叉编译处的程序,所要运行的目标环境中,各种资源都相对有限,所以很难进行直接的本地编译。 工具: 所谓工具,主要指的时:和程序编译链接等相关的gcc,ld等工具。 工具链:(本地平台) 将和程序编译链接相关的gcc,binutils等工具按照先编译后链接等相关的编译程序的内在逻辑...

2019-07-07 22:17:45 1029

原创 c语言malloc callloc realloc函数

void *malloc(unsigned size) 动态申请size个字节的内存空间; 功能:在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址。 void *calloc(unsigned n,unsigned size) 向系统动态申请n个,每个站size个字节的内存空间;并且把分配的内存全部初始化为零值。函数返回值为该区域的首地址。 void * re...

2019-07-07 17:56:34 393

原创 linux基础

一 、yum 1、yum源的repo文件 repo文件是linux的yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或多个软件仓的细节内容,例如我们将从哪里下载需要安装或升级的软件包,repo文件中的设置内容将被yum读取和应用。 2、yum clean all 和 yum makecache yum会把下载的软件包和header存储在cache中,而不自动删除。可以使用yum ...

2019-06-30 22:59:07 1502

原创 bitmap 布隆过滤器

布隆过滤器博文:https://blog.youkuaiyun.com/hoho1151191150/article/details/85014644

2019-06-28 20:19:56 120

原创 线程池 进程池 内存池 连接池

博文参考: 1、https://blog.youkuaiyun.com/sayhello_world/article/details/72829329 2、https://blog.youkuaiyun.com/hubi0952/article/details/8045094 3、https://blog.youkuaiyun.com/u012152619/article/details/46287419 ...

2019-06-26 21:15:20 228

原创 kv数据库

key-value数据库是一种以键值对存储数据的一种数据库,类似Java的map,每个键都会对应一个唯一的值。key-value数据库代表为redis。 redis是一个key-value存储系统,支持存储的value类型相对更多,包括string(字符串)、list(列表)、set(集合)和zset(有序集合)。另外redis是一种内存型的数据库,所以可以对外提供很好地读写操作,但是内存占用高,...

2019-06-26 20:32:56 4850

原创 DML DQL DDL 订阅与发布(推送)

DML:数据库操纵语言,例如select(查询)、update(更新)、insert(添加)以及delete(删除等)等。主要是用来对数据库的数据进行一些操作。 DDL:数据库定义语言,即一些常用的sql语言,比如说:create(创建)、alter(修改)、drop(删除)等。DDL主要是用来定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。 DQL: 数据查询语言 数据查询语言D...

2019-06-26 19:21:26 212

原创 跳表

博文:https://www.cnblogs.com/seniusen/p/9870398.html

2019-06-25 00:24:08 161

原创 c语言volatile和static关键字

volatile关键字:https://blog.youkuaiyun.com/tigerjibo/article/details/7427366、 static关键字:https://blog.youkuaiyun.com/t595180928/article/details/80448249

2019-06-24 09:21:28 1499

原创 makefile

dadada

2019-06-23 23:37:38 208

原创 静态库和动态库

静态库: 1>命名规则:lib+名字+.a (例如:libmytest.a) 2>制作步骤: 1)生成对应的二进制文件.o :gcc *.c -c 2)将二进制文件.o打包成静态库:ar rcs +静态库的名字 +生成的所有的.o文件 3>发布静态库:(静态库+头文件) 4>使用静态库:假设主函数在main.cru,头文件目录在include,静态库目录为lib,...

2019-06-23 09:44:59 154

原创 vim使用技巧 gcc使用技巧

命令模式下的操作: 1>. 光标的移动 前移动光标:H 下移光标:J 上移光标:K 后移光标:L 行首: 0 行尾: $ 文件开始位置: gg 文件末尾: G 行跳转: 300G 2>. 删除操作 删除光标后的字符: x 删除光标前的字符:X 删除光标后的单词: dw (光标移动到单词的开始位置, 否只能删除一部分) 删除光标到行首的字符串: d0 删除光标到行尾的字符串:D(d$)...

2019-06-22 23:15:45 472

原创 同步 异步

1、https://blog.youkuaiyun.com/huangqiang1363/article/details/79508852 2、https://blog.youkuaiyun.com/qq_36071795/article/details/83890124 3、https://blog.youkuaiyun.com/zyz0225/article/details/80976444 4、https://blog.csd...

2019-06-16 17:28:33 244

原创 shell中EOF的使用

用法一: EOF与<<结合使用,表示后续的输入作为子命令或者shell的输入,直到遇到EOF为止,再返回主调shell 原因:shell的<<操作符,通知shell下一个词为一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符。并且这个分界符可以是任意定义的字符串。 例子1:登入MySQL,并自行查找,具体参见下文参考博文链接 例子二:cat和eof结...

2019-06-16 16:11:33 1166

原创 shell脚本编程

1、shell函数详解 shell函数定义格式: function fun_name() { statements [return value] } function 为shell中定义函数的关键字 fun_name为函数名 statements为函数要执行的代码 return value表示函数的返回值,这部分可写也可以不写 函数调用 调用shell函数时可以给它传递参数也可以不传递参数。如果不...

2019-06-16 14:28:43 267

原创 gdb基本调试步骤

启动程序准备调试 方法1: gdb yourpram 方法二: 先输入gdb (进入gdb) 再输入:file yourpram gdb调试参数列表 list l 显示多行源代码 break b 设置断点,程序运行到断点位置停下来 info f 描述程序的状态(可以查看断点) run r 开始运行程序 dispaly disp 跟踪查看某个变量,每次停下...

2019-06-16 10:33:26 570

原创 c语言结构体 联合体 枚举 typedef重定义

1、c语言结构体内不能定义静态变量: typedef struct { int a; char *p; static int b;//错误 }mystuct; 原因:c语言的struct只是类型声明,编译时不会生成内存空间,而static变量是需要内存空间的。 2、结构体和联合体的巧妙用法: union type { long INT; int BOOL; double DOUBLE; char...

2019-06-16 09:49:32 1260

原创 路由最长前缀匹配规则(lpm算法)

博文参考: 1、https://baike.baidu.com/item/最长前缀匹配/5488072?fr=aladdin 2、https://blog.youkuaiyun.com/jeason29/article/details/45364885

2019-06-15 23:07:40 14563

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除