- 博客(36)
- 问答 (1)
- 收藏
- 关注
原创 mysql 索引及其优化
索引相关理解:1、索引是为了提高查询效率而出现的,像书的目录一样,是在存储引擎层实现的2、索引的常见模型:哈希表,有序数组,搜索树。2.1 哈希表适用于等值查询,因为不是有序的所以新增一个数时会比较快,查询一个范围时就必须全部扫描一遍2.2 有序数组和哈希表不同,查询一个具体的值/范围比较方便 二分法可快速查找,插入一个数值时就比较慢,需要移动数据,适用于静态存储引擎2.3 搜索树 有二叉搜索树和多叉搜索树,由于其特点查找和更新的时间复杂度都是O(log(N)), 对于数据量大的节点可采用N叉树,
2020-12-16 17:37:02
144
原创 使用binlog增量恢复数据
一、首先介绍几个命令:– show binary logs 列出所有的binlog文件– show master status 当前二进制文件的名称,及当前写的位置二、恢复数据的两种方式:Point-in-Time Recovery Using Event Times(使用事件时间恢复)Point-in-Time Recovery Using Event Positions`(使用位置恢复)三、mysqlbinlogmysqlbinlog可以将二进制的binlog文件转换为文本,以便于可以执
2020-12-10 21:20:06
336
原创 mysql server has gone away
根据官方文档解释的总结下(version 5.6):mysql server has gone away和Lost connection to server during query这俩一样吗?(是一样的,不过就是操作系统不同提示的信息不同)“mysql server has gone away”最常见的原因是服务器超时并关闭了连接;通常还是会获得以下错误码之一,具体是什么取决于操作系统–默认,一个连接在8小时之内什么都没做,连接就会被server关闭,当然可以修改wait_timeout变量把时间
2020-12-08 11:05:19
140
转载 GO 依赖管理工具go Modules(官方推荐)
以前写过一篇关于go管理依赖包工具 dep的文章,当时认为dep将会成为官方依赖工具,现在看来是自己图样图斯内幕破了,正如官方一直提到dep是“official experiment”官方实验项目的那样,随着go modules 在go1.11版推出,go1.12版功能不断改进,再到...
2020-11-10 00:29:59
324
原创 为何存在Metadata Lock
为何会存在Metadata Lock?-- 源自于一个mysql的一个bug,mysql这样描述:http://bugs.mysql.com/bug.php?id=989大致意思就是:在还没有Metadata Lock时在主库中session A在做一个DML操作如 insert 而没有提交,同时有另一个session B对同一个对象进行了DDL操作,如drop table;这就会导致从库执行有误。因为mysql的binlog是根据事务提交的先后顺序来记录的,前面的操作会导致在写binlog时先记录
2020-06-29 00:18:52
283
原创 如何判断一个数据库是否出了问题
怎么判断一个主库出了问题select 1-- 用select 1 只能说明数据库的进程正常,并不能证明主库是没有问题的;如(innodb_thread_concurrency=3)设置并发线程为3,表示InnoDB只允许三个线程并行执行,可以此种方式来模仿大查询。启动三个session每一个都执行select sleep(100) from t,再执行select 1时发现可以正常返回;但是执行查询表的语句会block,所以select 1是无法检测出实例是否正常的。-- InnoDB中inn.
2020-05-19 00:01:58
761
转载 go mod使用
golang最被诟病的三个问题: module管理机制,泛型,错误处理go mod就是用来解决module管理机制.首先,把go的版本升级到1.12.x. 可以用go help mod看到go mod的子命令.Note that support for modules is built into all the go commands,not just 'go mod'. For ...
2020-05-08 11:22:52
959
转载 一键解决 go get golang.org/x 包失败
问题描述当我们使用go get、go install、go mod等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于golang.org/x/...的包会出现下载失败的情况。如下所示: 123 $ go get -u golang.org/x/sysgo get golang.org/x/sys: unrecognized ...
2020-05-01 22:40:27
237
原创 Mysql如何保证数据不会丢失
简单来说就是依靠redo log和binlog保证持久化到磁盘后就可以保证,异常重启数据可以正常恢复;这里主要说下这两个log的写入机制。binlog的写入机制: 一个事务执行的过程中,会先把日志写入到binlog cache中,事务提交的时候再把binlog cache中的日志写到binlog中。系统给binlog cache分配了一片内存,每个线程一个,其大小由参数(binlog...
2020-04-15 00:45:58
612
原创 事务的隔离状况
事务的隔离级别 可重复读:查询只承认在事务启动之前已经提交的数据 读提交:查询只承认在语句启动前已经提交的数据 当前读:总是读取已经提交完成的最新版本在Mysql中有两个视图的概念: 1、一个是view,一个用查询语句定义的虚拟表,在调用的时候执行查询语句并返回结果 2、另外是InnoDB为了实现MVCC时用到的一致性视图,用于支持RC-读提交...
2020-04-12 18:48:48
93
原创 自增id用完怎么处理
Mysql中有很多个自增id,每个自增id都是有初始值的,虽然自然数是没有上限的,不过要定义了它的字节长度那就是有上限的,如无符号整形(unsigned int)是4个字节,其上限就是2^32 - 1。表定义的自增id: 自增id应该先想到的就是表定义的自增id;表定义的自增id达到上限后的逻辑是:再申请下一个id时保持不变,可以通过下面方式验证: /* CREA...
2020-04-11 17:03:39
344
转载 线程同步(互斥锁与信号量的作用与区别)
“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信
2015-12-07 19:24:00
351
转载 memcpy函数
原型:extern void *memcpy(void *dest, void *src, unsigned int count);用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。举例: // memcpy.c #include
2015-11-24 16:34:19
580
转载 new的三种用法
虽然有三种new的用法其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如: string* ps = new string("abc");上面这个new表达式完成了两件事情:申请内存和初始化对象。 new操作符类似于C语 言中的malloc,只是负责申
2015-08-11 18:40:34
1261
转载 C++——模板特化和偏特化
1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,STL在C++社区中得到了广泛的关注、应用和研究。理解和掌握模板是学习、应用和研究以及扩充STL的基础。而STL模板实例中又充斥着大量的模板特化和偏特化。2.模板的定义(1) 类模板定义一个栈的类模板,它可以用来容纳不同的数据类型说明如下:
2015-08-06 11:45:23
358
原创 linux 笔记 更新中...
10、 符号类型改变档案权限 还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那举我们就可以藉由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那举读写的权限就可以写成r, w, x啰!也就是可以使用底下的方 式来看: chmod ugoa +(加
2015-05-21 21:35:09
336
原创 几个栈的应用;;
void LineEdit(Stack *st)// 行编辑程序 #:退格 @:清除一行{ char ch, *tmp; InitStack(st); cout<<"请输入一行,#:退格 @:清除一行"<<endl; ch =getchar(); while(ch != EOF) { while(ch != EOF && ch != '\n') { swi
2015-05-21 21:21:51
288
原创 双循环链表的一些操作。。
void InitList(List *list){ Node *s = (Node*)malloc(sizeof(Node)); assert(s != NULL); list->first = list->last = s; //头和尾都指向新开辟的s节点;; list->first->prev = list->last;//表头的前驱指向表尾;; list->last->ne
2015-05-13 15:05:38
310
原创 单链表的一些操作。。
void InitList(List *list){ Node *s = (Node *)malloc(sizeof(Node));//初始化的过程;; assert(s != NULL); s->next = NULL; list->first = list->last = s; list->size = 0;}Node* Find(List *list, ElemType
2015-05-13 14:43:57
347
原创 +-*/ 计算器
/* 简单的计算器;;*/#include void menu(){ printf("*****************\n"); printf("**1、add**2、sub \n"); printf("**3、mul**4、div \n"); printf("*****************\n");}int add(int x, int y){ return x+
2015-04-13 22:47:17
310
原创 最大公约数
/* 求两个数的最大公约数*/ #include int main(){ int a; int b; int c = 0; printf("输入两个数:"); scanf(" %d,%d", &a,&b); if (a>b) //交换两个数;; { a = a^b; b = a^b; a = a^b; } else if(b%a =
2015-04-13 22:46:16
328
原创 两个小递归
/*写一个Digitsum(n)函数返回组成它的数字之和例如调用Digitsum(1729)则应返回1+7+2+9,它的和是19;;*/#include int Digitsum(n){ if(n%10 ==0) { return n; } else return ((n%10)+Digitsum(n/10));}int main(){ p
2015-04-13 22:41:47
299
原创 递归实现字符串反向
/*编写一个函数reverse_string(char * string)递归实现;; 实现:将参数字符串中的字符反向排列; 要求:不能使用c函数库中的字符串操作函数; */ #include #include char* reverse_string(char * str){ char ch; int len = strlen(str); char* p = st
2015-04-13 22:38:52
370
原创 实现my_atoi 和 my_atof函数
/* 实现atof函数*/#include #include #include double atof( char* p){ double value = 0.0; double i = 1; int sign = 1; char *str = p; assert( str != NULL); while (*str == ' '|| *str == '\t')
2015-03-25 23:00:20
509
原创 实现strlen 和 strcat 函数
#include #include int strlen (char *str) { int count = 0; assert( str != NULL ); while(*str++!= '\0') { count ++; } return count; } int main(){ int count = 0; char *str = "ab
2015-03-24 18:00:15
383
原创 大写转换成小写
/* 从终端输入一个字符并将其输出;; 若遇到大写将其转换成小写输出;*/#include int main(){ int ch; ch = getchar(); if( ch >='A' && ch<='Z') { putchar(ch+32); } else { put
2015-03-16 21:41:05
620
原创 倒序后输出十进制
/* unsigned int reverse_bit(unsigned int value) 将二进制数00000000000000000000000000001101 倒序排后为10110000000000000000000000000000 输出它的十进制数(2550136832)#include #includ
2015-03-16 21:39:31
455
1
原创 100米下落
#includeint main(){ double l = 0.0 ; double h = 100.0 ; int i = 1; while( i <= 10) { h =h + h * (1/2); l = l + h; h =h/2 ; //每次落地后被弹起的高度 i++; } l = l+100; //由于l = l +
2015-03-16 15:58:44
397
原创 分数序列求和
#includeint main(){ int i = 1; double a = 2.0, b=1.0; double sum = 0.0, c = 0.0; while( i<= 20 ) { c = a/b; //每次进循环后先构造新分式 sum = sum + c; a = a+b; b = a-b; //变换a,b的值 i++
2015-03-16 15:48:54
721
原创 1-100中9的次数
#include //99中有两个9要算两次;;int main(){ int i,j=0,k=0,count; for(i=1;i<=100;i++) { if(i%10==9 ) //确定19-99; { j++; } if( i/10==9) //确定91-99; { k++; } } count = j+k;
2015-03-13 16:26:45
320
原创 折半查找
#includeint main(){ int i,j,a[20],k; int first=0,last=20; //这边last的初始化没有限制; printf( "请输入十个数:\n" ); for( i=0; i<10; i++ ) { scanf("%d", &a[i]); //可由终端输入 也可初始化多少个数; } printf( "请输
2015-03-13 16:09:47
357
原创 写一个函数返回参数值为1的个数
/* 写一个函数返回参数值为1的个数 比如:15 0000 1111 4个1可将其分作两步;1、先将十进制转换成二进制 所转换的二进制存入数组中 2、将所转换的二进制倒序输出时 顺便用一整形变量统计其中1的个数 代码:#includeint main()
2015-03-10 11:40:35
549
原创 输出乘法口诀表
#includeint main(){ int i,j,temp; for( i=1;i<10;i++) { for( j=1; j<=i;j++) { { printf(" %d*%d = %d",i,j,j*i ); } } printf("\n"); } return 0;}
2015-03-09 21:58:22
242
原创 100-200中的素数
*#include#includeint main(){ int i,j; for( i=101;i<=200;i+=2) { for(j=2;j<sqrt(i);j++) { if(i%j==0) { break; } else { continue; } } if(j>sqrt(i)) { print
2015-03-09 21:52:37
310
原创 花括号匹配
#includeint main(){ int ch; int j=0; while((ch = getchar()) != EOF ) { if( ch == '{') { j++; } if(ch == '}' && j!=0 ) { j--; } if (ch=='}' && j==0 ) { printf("no\n"
2015-03-09 21:47:19
358
原创 getchar接收用putchar输出的时候加上行号
#includeint main(){ int ch,flag=1,line=0; while((ch=getchar())!=EOF) { if(flag==1) { line++; putchar(line+48); flag=0; } if(flag==0) { putchar(ch); } if(ch=='\n')
2015-03-07 18:24:06
303
空空如也
花括匹配一进入while循环就出不来
2015-03-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人