- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 引起索引失效的情况
1. OR 查询。在5.1 以后引入的 index_merge。并不会是查询失效。 2. 隐式类型转换。比如按字符串建立的索引 在 查询时用的 整数查询 where phpone = 135(没加引号)导致索引失效。 3. 数据范围影响。 数据分布 的问题导致 查询条件 命中不了索引 4. 索引列做计算。 5. like 前缀模糊查询为...
2021-11-17 12:24:22 188
原创 索引使用优化
首先需要明白什么是聚簇索引 和 二级索引 聚簇索引 :主键 和 记录存储在一起。 二级索引:索引和主键存储在一起。按索引查询后查询的是主键信息,在回表才能查询到记录。1. 存储空间 按照page 16k 计算。索引字段大小-> b+树层数 3层 的树 16K/(8字节的key + 8 字节指针)一页可以存储 1k记录。那么可以存储 1k * 1k *1k = 10亿条记录2.主键选择 自增主键 ...
2021-11-17 12:17:20 163
原创 Group by
GROUP BY的规定:1、GROUP BY 后面可以包含多个列,这就是嵌套。2、如果GROUP BY进行了嵌套,数据将在最后一个分组上进行汇总。3、GROUP BY子句中列出来的每个列必须是检索列或有效的表达式(但不能是聚集函数),如果在SELECT中使用了表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。4、除了聚集语句外,SELECT语句中的每一个列都必须在GROUP BY子句中给出。5、如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多个N
2021-11-07 19:40:28 3255
原创 php 的几个关键字
php static 1.静态方法是所有对象所共享的,而普通方法是所有对象都可以调用的。所以,普通方法中调用静态方法是可以的。 2.静态方法是属于类的,供所有该类的对象所共享。而普通方法是属于对象的。静态方法生成于编译前,这时对象未生成,因为通过对象访问的普通方法,当然也不能被访问! 3. 普通方法与静态方法的尽管写在一个类中,但却工作在不同的空间; 普通方法可以访问静态方法, 静态方法只能访问静态变量活方法, 静态属性必须静...
2020-08-26 17:47:15 364
原创 php的模式
//单例模式,确保某一个类只有一个实例。因此不能new 对象。class Single{ private static $instance;//保存类唯一实例的静态变量。,静态方法不能调用非静态变量,因为非静态变量属于对象,所以这里需要定义为 static。 //设置私有,外部不可new,外部每new一次,就是一个不同的对象 private function __construct() { } private function __clone(...
2020-08-26 17:41:41 153
原创 php-fpm,FastCGI,Nginx 之间的关系
CGI,通用网关接口,用于WEB服务器和应用程序间的交互,定义输入输出规范,每收到一个请求都需要创建一个进程去处理。FastCGI用来提高 cgi 程序性能,启动一个master,再启动多个 worker,不需要每次解析 php.ini。php-fpm实现了 FastCGI 协议,是 FastCGI 的进程管理器,支持平滑重启,可以启动的时候预先生成多个进程。Nginx实现了多种协议的web服务器,在配置文件nginx.conflocation ~ .*\.php$ {.
2020-08-26 17:24:44 247
原创 Redis 穿透和雪崩
缓存穿透:就是访问redis中一个不存在的key的时候,会直接穿过缓存,去数据库中进行查询.如果是黑客,进行恶意攻击的时候,每次都请求超过2000个/秒的时候,这个时候mysql基本上就挂了.解决办法是:每次从数据库中查询到一个不存在的key的时候,就写一个空值到缓存库中,有恶意攻击的时候,直接从缓存中取到这个空值.缓存雪崩:就是每秒有5000个请求过来时候,redis缓存库崩了,然后这些请求瞬间落在了mysql数据库上,直接导致数据库死机.解决方案就是:事前: 提高缓存...
2020-08-26 17:07:48 171
原创 记一次项目的死锁分析
1.场景公司项目使用多线程开发,因此使用gdb exec -c corefile运行core文件后,使用bt打印堆栈信息 看不出问题,需要进入到线程内部分析。2.分析 1. info threads 打印线程信息 可以看到有多个__lll_lock_wait () , 看到这里,我们推测可能是锁出现问题了。那么继续往,进入到线程内部,随便找一个是__lll_lock...
2019-11-13 12:25:03 251
转载 堆排序(大顶推)
堆排序图片和描述转载于https://www.cnblogs.com/lanhaicode/p/10546257.html,代码是根据该描述以自己的理解自己实现的。1、什么是堆?堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被看作一个完全二叉树,通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组按照堆的特点可以把堆分为大顶堆和小顶堆大顶堆:...
2019-10-25 09:52:34 1242
原创 633. 两个整数的平方数之和
给定一个非负整数c,你要判断是否存在两个整数 a 和 b,使得a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False1:第一次采用的写法 :int judgeSquareSum(int c){ int i=0; int j=(int)sqrt(c); ...
2019-09-20 18:55:24 657
原创 beego学习
1.bee命令安装 go get github.com/beego/bee如果设置了GOPATH环境变量就会安装到环境变量的bin 目录下2.创建project在$gopath/src 下运行bee new myapp,在GOPATH的src目录下就会出现一个myapp的项目3.运行项目bee run myapp如果还是在$gopath/src 下运行命令,则会...
2019-09-18 22:22:22 276
原创 unsafe包的使用
1:求各类型的长度1.var x stringfmt.Println(unsafe.Sizeof(x))//输出16.因为string的底层结构为type stringStruct struct { str unsafe.Pointer len int}2.var s []intfmt.Println(unsafe.Sizeof(s))//输出24.因为切片...
2019-09-18 18:31:26 134
原创 new 和make的区别
make使用方法var s[]int:nil切片。需要使用make分配空间。s=make([]int,10)var s=[]int{} 空切片。不需要使用make分配空间。var m map[int] int :nil map,需要使用make分配空间m=make(map[int] int ,10)var m =map[int]int{} 空map,不需要使用make分配...
2019-09-18 09:39:07 278
原创 defer关键字
什么是 deferdefer 是 Go 语言提供的一种用于注册延迟调用的机制,每一次 defer 都会把函数压入栈中,当前函数返回前再把延迟函数取出并执行。1.defer 和panic 一起使用时执行顺序?package main import ( "fmt")func main() { defer_call()}func defer_call() {...
2019-09-17 19:04:10 241
原创 tr 命令
1. tr 映射(tr "[a-z]" [A-Z])echo abc|tr "[a-z]" "[A-Z]"#一对一映射大小写转换#输出ABC2. tr 压缩(tr -s)cat words.txt |tr -s ' ' 2.1 tr 压缩替换echo abc def |tr -s ' ' '\n'#将多个空格压缩成1个空格,完事后,将空格替换为换行符...
2019-09-10 19:09:00 386
原创 151. 翻转字符串里的单词-c
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输出:"e...
2019-09-10 18:36:50 137
原创 109. 有序链表转换二叉搜索树-c
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...
2019-09-06 10:02:35 151
原创 102. 二叉树的层次遍历-C语言
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]#define QMAX 1000// 定义太小有些测试用例过不去typ...
2019-08-29 19:01:22 363
原创 类型定义与类型别名
type Myint int //类型定义,相当于新定义了一个类型。type Myint1 =int //类型别名使用区别:type Myint inttype Myint1 =intfunc main(){ var i int=0 var my Myint my =Myint(i)//Myint 相当于一个新的类型,因此需要强制转换。 var ...
2019-08-29 13:52:17 346
原创 257. 二叉树的所有路径-C语言
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1/ \2 3\ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3void EveryPath(struct TreeNode *...
2019-08-28 09:58:37 1004
原创 111.二叉树的最小深度-c语言
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.int min(int a,int b){ return a>b...
2019-08-26 17:13:13 289
原创 对 2 >&1的解释
假设运行命令xxxxxx.sh>output 2>&1 &1.将标准输出重定向到output2 : 2 >&1 将标准错误重定向到标出输出,因为标准输出已经重定向到标准输出,因此也就是将标准错误重定向到标准输出。 为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >outp...
2019-08-26 16:55:34 258
转载 海量数据处理算法—Bit-Map
1. Bit Map算法简介 来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想 我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们...
2019-08-19 18:08:42 172
原创 c 语言函数返回char **类型
char **test(char *str,int *retsize){ int i; char **s; s =malloc(sizeof(char *)*10); //这里需要*10,因为下面使用了10个指针数组。否则会出现乱码。等价于char *s[10] for (i=0;i<10;i++) { s[*retsize] =...
2019-06-28 09:18:34 1495
原创 const 与define 的区别
define1.在预处理阶段,将宏定义进行展开,进行替换2.无类型,不做类型检查const:1.在定义const 变量时,需要初始化,因为以后就不能改变了2.对于指针来说可以指定指针为const ,也可以指定指针所指向的内容为const,或二者同时为const3.在函数声明中,const 作为形参,表示是一个输入参数,不能够修改。4.对于类的成员函数,若指定为const...
2019-03-25 11:19:02 247
原创 引用和指针的区别
一:引用与指针的区别1.引用必须在定义时初始化,指针不必2.引用不能为空,指针可以为空3.引用绑定一个变量,为变量的别名,指针可以指向其他变量。4.定义一个指针变量需要分配内存。引用不占用内存二:值传递,地址传递,引用传递的区别值传递:会为形参重新分配内存空间,将实参的值拷贝给形参,形参的值不会影响实参,函数调用结束后释放地址传递:形参为指针变量,将实参的地址传...
2019-03-25 11:12:22 107
翻译 c/c++ static 关键字介绍
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:#include<iostream>u...
2019-03-25 10:40:07 91
转载 MPEG-TS报文格式
转载https://blog.csdn.net/rootusers/article/details/42970859MPEG-TS包头语法结构:·sync_byte:1B 值为0x47。可以作为校验位·payload_unit_start_indicator:1b长度。当TS包带有PES包数据时,payload_unit_start_indicator值为1时,表示TS包的负载以P...
2019-03-19 17:53:46 1025
转载 RTP报文头格式
RTP报文由报文头和报文体组成,报文头格式如下图所示。V:RTP协议的版本号,占2位,当前协议版本号为2。P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。CC:CSRC计数器,占4位,指示CSRC 标识符的个数。M:标记,占1位,不同的有效载荷有不同的含义,对于视...
2019-03-19 17:52:44 2267
转载 ftp文件传输服务
ftp包括两种传输模式,主动和被动方式 主动方式:在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。FTP的主要问题实...
2019-02-15 10:05:33 565 1
原创 关于修改mysql 的字符集后不生效的问题
使用status 查看字符集为Latin1将字符集修改为utf8步骤如下1.停止mysql,2.删除服务3.重新执行显示服务已经存在,则在任务管理器内将进程mysqld服务进程终止。找不到该进程的话,则勾选显示所有用户进程 再次运行此服务 。4.查看则成功的字符集修改为了utf8 ...
2019-02-14 17:46:46 4914 1
原创 mysql登录时,ERROR 1045 (28000): 错误解决办法
首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令:net stop mysql 打开第一个cmd1窗口,切换到mysql的bin目录,运行命令: (D:\mySql\mysql-5.7.22-winx64是my.ini文件的目录)mysqld --defaults-file="D:\mySql\mysql-5.7.22-winx64\my.ini"...
2019-01-11 13:28:07 641
原创 Go 语言闭包
代码示例(代码来自网上)package mainimport "fmt"//构造闭包func intSeq() func() int { i := 0 return func() int { i++ return i }}func main() { nextInt := intSeq() //生成闭包 ...
2018-09-17 19:07:56 341
原创 关于指针数组与数组指针的事例
该程序都是从函数内获取5个学生的编号和姓名,利用指针数组和数组指针达到同一个目的。#include <stdio.h>#include <stdlib.h>#include <string.h>struct st_info{ int icnt; char name[10];};数组指针方式的实现struct st_info...
2018-08-10 19:11:03 298
转载 epoll
以下内容转载链接为https://blog.csdn.net/men_wen/article/details/534564911. epoll模型简介epoll是Linux多路服用IO接口select/poll的加强版,e对应的英文单词就是enhancement,中文翻译为增强,加强,提高,充实的意思。所以epoll模型会显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。epol...
2018-06-29 17:48:03 493
原创 根据字符出现频率排序
void swap(int *a,int *b){ int tmp; tmp =*a; *a=*b; *b=tmp;}void selSort(int *s,int n,char **arr,int *arrlen)//选择排序{ char *p=NULL; int i; int j; int k; int m; int offset=0; int tmp; *arrlen...
2018-06-06 18:30:31 342
原创 linux 命令之mount挂载
mount -t nfs 远端 本地dictionaryumount dictionary 卸载时如果显示device is busy则用命令查看fuser -m dictionarykill -9 PID杀掉
2018-06-05 17:40:06 271
原创 linux命令之find查找命令并操作文件
find [path] [-name] [-size] [-type][-mtime][-ctime]。-0 表示如果文件含有空格,也会查找到文件末尾以文件名的\0结束。
2018-06-05 17:36:45 211
转载 shell中$(( )) 与 $( ) 还有${ }的区别
$( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的。所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:* 完成引号里的命令行,然后将其结果替换出来,再重组命令行。例如:[code]$ echo the last sunday is $(date -d "last sun...
2018-06-04 19:08:46 3344
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人