自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql索引

B+树非叶子节点存的是主键和指针叶子节点存的是数据B+树高度等于2可以存储数据假设目录页的指针式bigint占8字节指针占6字节那么 目录页的行数 16384/(8+6) 大约是1170叶子节点数据就是1170个价格叶子节点的每行数据是1kb那么就是16行 117016大约是18724条数据所有大约两层的B+树结构能存18724条三层结构117018724 = 21907080条数据联合索引主键索引按索引值,从左到右进行排序,叶子节点只会存储数据和这一行的主键值,查找的时候找到

2022-01-15 14:33:27 333

原创 innoDB的主键索引

局部性原理计算机在取数据的时候会把所取数据相邻的数据也取出来放到内存中去,下次再取的时候直接从内存中获得数据不用从磁盘中取数据了,操作系统通常会把所取数据所在的一页数据取出来放到内存中,一页的数据大约是4kb,mysql innodb 也用到了局部性原理,一页的数据大约是16kb大小。页的结构innoDB的行结构一行记录可以以不同行格式存在innoDB中,行格式分别是:Compact,Redundant,Dynamic和Compressed格式。COMPACT行格式:行益处后如何查找数据

2022-01-14 10:34:56 1403

原创 B树,B+树

B树特点:B树是有的序左边的节点比根节点小,右边的节点比根节点大,子树也是满足这个规则的B数的一个节点有多个元素,元素之间也是有顺序的。B+树特点:1.整体有序2. 一个节点有多个元素3. 节点中多个元素也有序4. 叶子节点中有指针5. 非叶子节点中的元素冗余了一份在叶子节点中mysql中的B+树页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB,结构分为每部分的意义InnoDB是在插入的的时候按主键排的续,建议用自增的主键id这样插入的性能会高一些,

2022-01-13 07:38:56 319

原创 ElasticSearch 十大核心概念

集群(Cluster)一个或者多个安装了 es 节点的服务器组织在一起,就是集群,这些节点共同持有数据,共同提供搜索服务。一个集群有一个名字,这个名字是集群的唯一标识,该名字成为 cluster name,默认的集群名称是 elasticsearch,具有相同名称的节点才会组成一个集群。可以在 config/elasticsearch.yml 文件中配置集群名称:在集群中,节点的状态有三种:绿色、黄色、红色:绿色:节点运行状态为健康状态。所有的主分片、副本分片都可以正常工作。黄色:表示节点的

2022-01-09 09:40:33 112

原创 ES脑裂问题分析及优化

脑裂问题,就是同一个集群中的不同节点,对于集群的状态,有了不一样的理解。 由于并发访问量的提高,导致了我们两个节点的集群(分片数默认为5,副本为1,没有固定的master,都是集群中的节点又做data又做master)状态变成了red,出现了大量的坏片,并且坏掉的都是主分片及其副本。分析发现,是ES集群出现了脑裂问题(俗称精神分裂),即集群中不同的节点对于master的选择出现了分歧,出现了多个master竞争,导致主分片和副本的识别也发生了分歧,对一些分歧中的分片标识为了坏片。“脑裂”问题可能的成因

2022-01-09 08:51:52 878

原创 Elasticsearch 安装

单节点安装首先打开 Es 官网,找到 Elasticsearch:https://www.elastic.co/cn/downloads/elasticsearch然后点击下载按钮,选择合适的版本直接下载即可。将下载的文件解压,解压后的目录含义如下:目录含义modules依赖模块目录lib第三方依赖库logs输出日志目录plugins插件目录bin可执行文件目录config配置文件目录data数据存储目录进入到 bin 目

2022-01-08 23:25:23 101

原创 ElasticSearch特点和功能介绍

LuceneLucene 是一个开源、免费、高性能、纯 Java 编写的全文检索引擎,可以算作是开源领域最好的全文检索工具包。在实际开发中,Lucene 几乎适用于任何需要全文检索的场景,所以 Lucene 先后发展出好多语言版本,例如 C++、C#、Python 等。早在 2005 年,Lucene 就升级为 Apache 顶级开源项目。它的作者是 Doug Cutting,有的人可能没听过这这个人,不过你肯定听过他的另一个大名鼎鼎的作品 Hadoop。不过需要注意的是,Lucene 只是一个工具

2022-01-08 14:15:43 1760

原创 warning: go env -w GOPROXY=... does not override conflicting OS environment variable

解决办法使配置长久生效 (推荐)上面的配置步骤只会当次终端内生效,如何长久生效呢,这样就不用每次都去配置环境变量了。Mac/Linux设置你的 bash 环境变量echo “export GOPROXY=https://goproxy.io,direct” >> ~/.profile && source ~/.profile# 如果你的终端是 zsh,使用以下命令echo “export GOPROXY=https://goproxy.io,direct” >&gt

2021-11-06 21:17:30 5507 1

原创 Go语言中的接口

Go语言中的接口接口是一种特殊的类型,它规定了变量有哪些方法package main//用来定义有哪些方法的变量是caller接口类型type caller interface{ call() //只要实现的call方法的变量都是caller类型}type cat struct{}type dog struct{}func (c cat) call(){ fmt.Println("喵喵~")}func (d dog) call(){ fmt.Println("旺旺~")}fun

2021-10-30 20:48:13 86

原创 结构体基础知识

结构体自定义类型和类型别名基于一个内置的类型自定义一个自己的类型,类型别名只在代码编写过程中有效package maintype myint inttype youint = int //类型别名func main(){ var n myint n = 100 fmt.Println(n) fmt.Printf("%T\n" , n) var m youint m = 100 fmt.Println(m) fmt.Printf("%T\n" , m)}rune 和 byte

2021-10-22 09:54:30 332

原创 学习golang第十二天

内置函数内置函数介绍close主要用来关闭channellen用来求长度,比如string , array , slice , map , channelnew用来分配内存,主要用来分配值类型,比如int,struct。返回的是指针make用来分配内存,主要用来分配引用类型,比如chan,map,sliceappend用来追加元素到数组,slice中panic和recover用来做错误处理panic和recoverGo语言中目前(Go1

2021-10-18 17:45:37 83

原创 学习golang第十一天

函数定义和deferdefer语句Go语言中的defer语句会将其后面跟随的语句进行延迟处理,先被defer的语句最后被执行,最后被defer的语句,最先被执行。package mainimport "fmt"func main(){ fmt.Println("start") defer fmt.Println(1) defer fmt.Println(2) defer fmt.Println(3) fmt.Println("end")}defer执行的时机在Go语言函数中ret

2021-09-19 10:18:29 76

原创 学习golang第十天

函数函数的定义func 函数名(参数)(返回值){ 函数体}其中:1.函数名由字母数字下划线组成,在同一个包内,函数不能同名。2.参数:参数由参数变量和参数变量类型组成,多个参数之间用逗号分隔。3.返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用逗号分隔。4.函数体:实现具体功能的代码块。求两个数之和的函数package mainimport "fmt"func main(){ sum := sum(5+3) fmt.Prin

2021-09-06 21:59:13 72

原创 学习golang第九天

指针Go语言中不存在指针操作,只记住两个符号:1.& 取地址2.*根据地址取值package mainimport "fmt"func main(){ n := 18 p := &n fmt.Println(p) fmt.Printf("%T\n" , p) m := *p fmt.Println(m) fmt.Printf("%T\n" , m)}new和makepackage mainimport "fmt"func main(){ var a *

2021-09-05 20:26:19 99

原创 学习golang第八天

切片(slice)数组长度是固定的并且数组长度属于数组类型的一部分,所以数组有很多的局限性。package mainimport "fmt"func arrsum(x [3]int){ sum:=0 for _,v:=range x{ sum+=v } fmt.Println(sum)}func main(){}这个求和函数只能接受[3]int类型的其他都不支持。a:=[3]int{1,2,3}数组a已经有三个元素了,不能继续往a中添加新元素了。切片切片(slice

2021-09-01 20:07:46 59

原创 学习golang第七天

复合数据类型数组Go语言中数组是同一数据类型元素的集合,使用时可以修改数组成员,但是数组大小不可改变。基本语法:var arr [3]int //定义一个3个元素int类型的数组数组定义var 数组变量名 [元素数量]T比如:var a [5]int,数组长度必须是常量,并且长度是数组类型的一部分,一旦定义长度不能变。[5]int 和[10]int 是不同的类型。var a [3]intvar b [4]inta = b // 不可以这样因为a和b是不同类型package main

2021-08-19 01:35:25 117

原创 学习golang第六天

运算符Go语言内置的运算符1.算数运算符2.关系运算符3.逻辑运算符4.位运算符5.赋值运算符算数运算符运算符描述+相加-相减*相乘/相除%求余注意:++(自增)–(自减)在Go语言中是单独的语句,并不是运算符。关系运算符运算符描述==检查两个值是否相等,相等返回true否则返回false!=检查两个值是否不相等,不相等返回true否则返回false>检查左边值是否大于右边的值,大于

2021-08-14 21:39:42 65

原创 学习golang第五天

Go语言基础之流程控制Go语言中最常用的流程控制有if和for,而switch和goto最要为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制。if else(分支结构)if条件判断基本写法Go语言中if条件判断的格式如下 if 表达式1{ 分支1 }else if 表达式2{ 分支2 }else{ 分支3 }当表达式1的结果为true时,执行分支1,否则判断表达式2如果满足则执行分支2,都不满足则执行分支3。if判断中的else if else 都是可选的,可格局实

2021-08-11 23:01:43 143

原创 学习golang第四天

fmt总结package mianimport "fmt"func main(){ var s string var n int s = "xxxx" fmt.Printf("%T\n" , n) //输出变量类型 fmt.Printf("%v\n" , n) //输出变量数值所有类型 fmt.Printf("%d\n" , n) //输出十进制类型 fmt.Printf("%b\n" , n) //输出二进制类型 fmt.Printf("%o\n" , n) //输出八进制类型 f

2021-08-01 22:03:54 62

原创 学习golang第三天

基本数据类型Go语言中有丰富的数据类型,除了基本的整型,浮点型,布尔型,字符串外,数组,切片,结构体,函数,map,通道(channel)等。go语言的基本类型和其他语言大同小异。基本数据类型整型整型分为以下两大类按长度分为:int8,int16,int32,int64对应无符号整型:uint8,uint16,uint32,uint64,其中uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。类型描述uint8无符号8

2021-07-03 18:34:32 77

原创 学习golang第二天

变量和常量package main//导入语句import "fmt"//标识符(变量\常量\函数\类型)的声明//程序的入口函数func main(){ //声明变量 fmt.Println("Hello world")}声明变量var 变量名 变量类型var s1 stringvar age intvar isOk bool变量先声明后使用批量声明var( a string //“” b int // 0 c bool // false d f

2021-07-02 06:00:37 169

原创 学习golang第一天

学习golang第一天@TOC学习golang第一天一. 编译二进制文件go bulid 生成与项目名字相同的二进制文件指定生成二进制文件名 go bulid -o 指定的文件名 要编译的go文件

2021-06-30 22:18:17 1276

原创 linux常用分析文档命令

[root@www ~]# grep [-acinv] [-color=auto] '搜索字符串' filename选项与参数-a 将二进制文件以text文件方式搜寻数据-c 计算找到搜寻字符串的个数-i 不区分大小写-n 输出行号-v 反向选择 选择不包含搜索字符串的选项-l 列出含有搜索字符串的文件名-r 在制定目录中递归查找–color=auto ‘搜索字符串’ 将找到的...

2018-10-25 15:02:16 1211

原创 杨辉三角

1.打印出杨辉三角 * 1 $arr[0][0] = 1; * 1 1 $arr[1][0] = 1; $arr[1][1] = $arr[0][0] + $arr[0][1]; * 1 2 1 $arr[2][0] = 1; $arr[2][1] = $arr[1][0] + $arr[1][1] ; $arr[2][2] = 1; ...

2018-10-24 12:03:03 81

原创 一道面试题

把字符串2A3SBD4GIT10adasd…转化成 如下格式2:A3:SBD4:GIT10:adasd…$str = '2A3SBD4GIT10adasd';$str = preg_replace('/(\d+)/i',',$1:',$str);$arr = explode(',',$str);foreach($arr as $k=>$v){ echo $v.'<b...

2018-10-18 15:38:18 83

原创 mysql数据库索引优化策略

索引分类索引常规策略索引技巧索引查看索引分类1.myisam,innodb表用的都是B-tree索引,都是"排好序的快速查找结构".2.memory表用的是hash索引3.优缺点:(1)hash索引的查询理论的时间复杂度是0,但是无法对范围查询进行优化,无法对排序进行优化,必须回行取数据,无法i用前缀索引(2)B-tree可以利用做前缀进行优化B-tree索引细分之聚簇索引...

2018-10-10 17:47:12 275

原创 mysql数据库主从同步原理及问题解决

mysql数据主从同步原理主服务器主服务器开启bin_log日志 log-bin = mysql-bin配置唯一的server-id创建一个master与slave通信的用户账号从服务器从服务器配置唯一的server-id使用master分配的用户账号读取master的二进制日志启动slave服务器具体操作1.修改主服务器的my.cnf[mysqld]log-bin...

2018-09-30 17:38:50 434

原创 扑克牌抽顺子

有2副扑克牌,我们让A代表1,J代表11,Q代表12,K代表13,并且,大王小王可以替代任意数字。现在我从中随机抽取10张牌给你,你设计一个函数来判断这些牌能不能构成一个连续的顺子,如果是返回true,否则返回false。特别强调,大王小王都可以替代任意数字。...

2018-09-30 11:39:00 413

原创 快速排序

$arr = [12,3,2,32,1,100,66];function quick_sort($arr){ if(!is_array($arr)) return false; if(count($arr)<=1) return $arr; $left = $right = []; //取出第一个元素进行分治 for($i=1;$i<count($arr);$i+...

2018-09-30 09:40:59 53

原创 找规律写程序

有一组 1,1,2,3,5,8,13 ? 求第8位的数function getNum($n){ if($n<=0){ return 0; }else if($n<=2){ return 1; }else if($n>2){ return getNum($n-1)+getNum($n-2); }}$num = getNum(8);echo $num;...

2018-09-26 16:48:05 1064

原创 猴子选大王--约瑟夫问题浅析

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程function getKing($n,$m){ $arr = range(1,$n); $i = 1; whil...

2018-09-26 16:09:46 271

原创 php实现一个栈

class stack{ const MAXSIZE = 4; private $stack = []; private $top = -1; //栈顶 public function __construct(){ $this->stack = $stack; } //入栈 public function push($item){ if($this->top&gt...

2018-09-25 19:19:17 716

原创 php实现无限级分类

数据递归实现引用实现递归实现:$arr = [ 0=>[ 'id' =>1 'pid' =>0, 'name'=>'人员管理' ], 1=>[ 'id' =>2 'pid' =>1, 'name'=>'人员添加' ], 2=>[ 'id' =&...

2018-09-25 09:14:25 112

原创 php中数据结构与算法

php中数据结构与算法php中的冒泡排序从大到小排序function bubble_sort($arr){ for($i=0;$i<count($arr);$i++){ for($j=$i+1;$j<count($arr);$j++){ if($arr[$i]<$arr[$j]){ $temp = $arr[$i]; $arr[$i...

2018-09-21 14:30:59 774

空空如也

空空如也

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

TA关注的人

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