自定义博客皮肤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 111

原创 mysql主从同步

2021-06-14 17:08:46 86

原创 MVCC原理

2021-06-14 17:07:33 111

原创 mysql慢查询优化

2021-06-14 17:05:29 55

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

幻读:

2021-06-14 17:04:44 45

原创 mysql的锁

2021-06-14 17:02:50 38

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

2021-06-14 17:00:59 389

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

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

2021-06-14 16:58:40 152

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

索引的最左前缀原则

2021-06-14 16:55:43 54

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

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

2021-06-14 16:54:40 51

原创 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 72

原创 双端队列

队列空的标识: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 118

原创 队列-c语言实现

队列 : 先进后出(后进先出)#define MINQUESIZE 5typedef 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 106

原创 数据结构--栈

栈 : 先进先出实现代码如下所示:#define MYERROR -1typedef 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 74

原创 docker

docker1、先卸载老的:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine2、安装必备组件 yum install -y yum-utils device-mapper-persistent-data lvm23、加Repocd /rootwget

2020-07-26 17:11:07 105

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

https://blog.csdn.net/qq_25815379/article/details/80735199

2019-09-18 16:10:38 216

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

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

2019-08-12 16:15:30 841

原创 宏定义的使用技巧

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

2019-07-21 22:31:25 204

原创 通过函数名掉用函数

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

2019-07-21 21:35:41 214

原创 linux signal(信号)

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

2019-07-14 23:43:43 159

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

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

2019-07-14 16:43:17 1513

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

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

2019-07-14 15:26:45 442

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

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

2019-07-07 22:17:45 927

原创 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 296

原创 linux基础

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

2019-06-30 22:59:07 613

原创 bitmap 布隆过滤器

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

2019-06-28 20:19:56 75

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

博文参考:1、https://blog.csdn.net/sayhello_world/article/details/728293292、https://blog.csdn.net/hubi0952/article/details/80450943、https://blog.csdn.net/u012152619/article/details/46287419...

2019-06-26 21:15:20 149

原创 kv数据库

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

2019-06-26 20:32:56 4597

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

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

2019-06-26 19:21:26 132

原创 跳表

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

2019-06-25 00:24:08 81

原创 c语言volatile和static关键字

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

2019-06-24 09:21:28 1303

原创 makefile

dadada

2019-06-23 23:37:38 100

原创 静态库和动态库

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

2019-06-23 09:44:59 101

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

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

2019-06-22 23:15:45 325

原创 同步 异步

1、https://blog.csdn.net/huangqiang1363/article/details/795088522、https://blog.csdn.net/qq_36071795/article/details/838901243、https://blog.csdn.net/zyz0225/article/details/809764444、https://blog.csd...

2019-06-16 17:28:33 95

原创 shell中EOF的使用

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

2019-06-16 16:11:33 990

原创 shell脚本编程

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

2019-06-16 14:28:43 159

原创 gdb基本调试步骤

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

2019-06-16 10:33:26 423

原创 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 1054

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

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

2019-06-15 23:07:40 12773 1

空空如也

空空如也

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

TA关注的人

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