自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(412)
  • 资源 (17)
  • 收藏
  • 关注

原创 elasticsearch亿级数据性能调优实战指南

文章目录慢查询日志es优化黄金原则1、搜索结果不要返回过大的结果集2、避免超大的document3、避免稀疏的数据(1)避免将没有任何关联性的数据写入同一个索引(2)对document的结构进行规范化/标准化(3)避免使用多个types存储不一样结构的document(4)对稀疏的field禁用norms和doc_values写入性能优化1、用bulk批量写入2、使用多线程将数据写入es3、增加r......

2019-10-14 22:34:32 291440

原创 elasticsearch的底层模块深入解析

文章目录shard分配相关的配置及原理1、shard allocation的介绍2、cluster level shard allocation(1)shard allocation settings(2)shard rebalance settings(3)shard balance heuristics3、disk-based shard allocation4、shard allocatio...

2019-10-14 18:12:56 650

原创 生产环境Elasticsearch索引管理篇

索引创建修改删除压缩及滚动创建1、创建索引(1)创建索引的语法用settings给这个索引在创建时可以添加一些设置,还有可以初始化一些type的mappingcurl -XPUT 'http://elasticsearch02:9200/twitter?pretty' -d '{ "settings" : { "index" : { "nu...

2019-10-14 17:30:33 525

原创 Promise执行流程分析

先上代码console.log(1);new Promise(function (resolve, reject){ reject(true); window.setTimeout(function (){ resolve(false); }, 0);}).then(function(){ console.log(2);}, function...

2019-01-17 10:06:39 2020

原创 php的生命周期

图解php的生命周期

2018-09-05 21:47:11 365

原创 linux conf配置文件(全)

用户账号相关etcprofilebash_profileetcbashrcbashrcbash_logout用户环境配置 bash_profilebashrc和bash_logoutetcgshadow网络配置修改IP地址等网络相关的配置文件 etcsysconfignetwork-scriptsifcfg-ethetcsysconfignetwork 网关配置相关的配置文件e

2017-09-22 15:52:22 22863

原创 用户访问网站基本流程及原理(史上最全,没有之一)

[TOC]  用户访问网站流程框架第一步:客户端用户从浏览器输入www.baidu.com网站网址后回车,系统会查询本地hosts文件及DNS缓存信息,查找是否存在网址对应的IP解析记录。如果有就直接获取到IP地址,然后访问网站,一般第一次请求时,DNS缓存是没有解析记录的;第二步:如果客户端没有DNS缓存或hosts没有对应www.baidu.com网站网址的域名解析记录,那么,系统会把浏览器的

2017-06-04 10:38:28 36075 11

原创 彻底理解索引

提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个查询比较慢,分析完原因之后,你可能就会说 “” 之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。数据库索引的内容比较多,我分成了上下两篇文章。索引是数据库系统里面最重要的概念之一,所以我希望你能够耐心看完。在后面的实战文章中,我也会经常引用这两篇文章中提到的知识点,加深你对数据库索引的理解。一句话简单来说,。一本。

2024-07-26 17:37:44 2

原创 mysql事务隔离机制详解

提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转块钱,而此时你的银行卡只有块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了。简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在中,事务支持是在引擎层实现的。

2024-07-26 14:27:45 8

原创 深入剖析一条SQL更新语句是如何执行的?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?前面我有跟你介绍过 SQL 语句基本的执行链路,这里我再把那张图拿过来,你也可以先简单看看这个图回顾下。

2024-07-26 13:01:10 8

原创 深入剖析一条SQL查询语句是如何执行的

平时我们使用数据库,看到的通常都是一个整体。我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。所以今天我想和你一起把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直戳本质,更为快速地定位并解决问题。下面我给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。MySQL 的逻辑架构图。

2024-07-26 12:58:09 8

原创 nginx配置https从购买到配置保姆教程

需要注意的是,免费型的域名证书,只能支持单个域名,也就是如果我们多个域名需要绑定SSL的话,那么就需要购买多个证书,下面就是填写我们哪个域名需要用到https,这是我是图片服务用到了,所以就填写图片服务器。认证完成后,我们需要下载我们的证书,点击右侧的下载按钮,下载完成后,有多个方式的配置,我们进入nginx文件夹。同时我们还需要让域名解析到我们的服务器上,我们在添加一条记录,指向的是我们的服务器(ipv4地址)然后把里面的内容拷贝到我们的服务器上,首先我们先到服务器中,创建一个目录。

2024-07-26 10:39:32 145

原创 记一次因代码出错不断输出日志占满Docker容器硬盘的排查经历

从这里能够看到 40G的空间,全部被docker占用了,既然不是docker镜像所占用了,那肯定就只有容器了,使用下列命令,查看docker的镜像和容器所占空间。通过排查,是一个日志文件而造成的,想着可能是因为这个日志文件不断输出错误,而造成空间不够用的问题,所以我们现在需要解决这个错误后,然后把对应的日志输出文件给删除。选择一些没用的镜像,然后删除,发现删除也不能删除,这个时候想着,可能不是因为镜像的缘故,而造成空间不够的,会不会是其它文件的原因,先遍历一下文件的所占空间。再次查看,恢复正常了。

2024-07-25 10:20:11 89

原创 Go模版渲染使用详解

包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和包相同的接口,Go语言中输出HTML的场景都应使用这个包。其中,定义模板文件时需要我们按照相关语法规则去编写,后文会详细介绍。我们按照Go模板语法定义一个hello.tmpl

2024-07-25 10:08:33 88

原创 Gin框架光速入门

Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。如果你是性能和高效的追求者, 你会爱上Gin。Go世界里最流行的Web框架,Github上有32K+star。基于httprouter开发的Web框架。中文文档齐全,简单易用的轻量级框架。定义一个不转义相应内容的safe},})

2024-07-25 09:29:21 95

原创 Goland添加注释模板

Goland中也提供了我们注释模板的定义,到setting中配置即可,首先我们定义创建新文件的时候,生成的类注释外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传找到Go File即可,然后输入下面的信息保存即可* @Author 陌溪下面我们通过 new,创建一个go file文件进行测试外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传可以看到,刚刚添加的文件,就有了测试信息了~

2024-07-24 17:49:01 61

原创 数据结构与算法,剑指Offer 50题

模拟每个节点最多含有两个子树的树称为二叉树。下图就是一个二叉树。在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。

2024-07-24 17:25:01 913

原创 goland设置Gin框架中tmpl模板的语法提示的方法

在Gin中,我们要使用.tmpl结尾的模板文件,但是我们在new的时候,发现没有对应的文件,所以它就会被当成普通的文件来进行解析,因此也没有提示,这对我们使用goland来开发,是非常痛苦的事情。

2024-07-24 12:44:47 289

原创 执行go get命令下载依赖失败的解决方法

最近在学习go连接mysql数据库这块,需要下载mysql的驱动包,使用的是下面的命令但是在执行的时候,总是出现如下的错误很显然上面的问题就是因为如果连接对应的下载服务器所引起的。

2024-07-24 12:38:22 13

原创 从源码角度详解Golang调度GMP

前面都是各种初始化操作,在这里开启了调度器的第一个调度循环。(这里启动的 M 就是 M0)下面来围绕 G、M、P 三个概念介绍 Goroutine 调度循环的运作流程。

2024-07-23 22:59:10 239

原创 GO内存分配详解

因此,可寻址字节取决于地址线的总量,对于64位地址线(x86–64 CPU),其可寻址字节为2的64次方个,但是大多数使用64位指针的体系结构实际上使用48位地址线(AMD64 )和42位地址线(英特尔),理论上支持256TB的物理RAM(Linux 在x86–64上每个进程支持128TB以及4级页表(page table)和Windows每个进程则支持192TB)但是,Go内存管理的总体思路是使用不同的内存结构为不同大小的对象使用不同的缓存级别内存来分配内存。扩大堆,通常会请求大量内存。

2024-07-23 22:48:31 116

原创 ETCD介绍以及Go语言中使用ETCD详解

ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中的关键数据;当然,它不仅仅用于存储,还提供配置共享及服务发现;基于Go语言实现。

2024-07-21 12:41:16 167

原创 Go 程序是怎样跑起来的?

这次的话题太大了,困难重重。从编译原理到 go 启动时的流程,到 go 命令原理,每个话题单独抽出来都可以写很多。幸好有一些很不错的书和博客文章可以去参考。这篇文章就作为一个引子,你可以跟随参考资料里推荐的一些内容去发散。

2024-07-21 12:37:13 212

翻译 Go 内存模型

Go 内存模型指定了在一个 Goroutine 中读取变量时可以保证观察到在不同 Goroutine 中写入同一变量所产生的值的条件。

2024-07-20 08:22:39 66

原创 GO Channel使用详解(各种场景下的最佳实践)

这节课,我借助代码示例,带你学习了 Channel 的应用场景和应用模式。这几种模式不是我们学习的终点,而是学习的起点。掌握了这几种模式之后,我们可以延伸出更多的模式。虽然 Channel 最初是基于 CSP 设计的用于 goroutine 之间的消息传递的一种数据类型,但是,除了消息传递这个功能之外,大家居然还演化出了各式各样的应用模式。

2024-07-20 08:01:49 731

原创 Go channel实现原理详解(源码解读)

chan 的值和状态有多种情况,而不同的操作(send、recv、close)又可能得到不同的结果,这是使用 chan 类型时经常让人困惑的地方。为了帮助你快速地了解不同状态下各种操作的结果,我总结了一个表格,你一定要特别关注下那些 panic 的情况,另外还要掌握那些会 block 的场景,它们是导致死锁或者 goroutine 泄露的罪魁祸首。还有一个值得注意的点是,只要一个 chan 还有未读的数据,即使把它 close 掉,你还是可以继续把这些未读的数据消费完,之后才是读取零值数据。思考题。

2024-07-20 07:55:21 236

原创 Go操作Redis详解

Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。

2024-07-19 11:27:56 940

原创 NSQ介绍以及使用Go操作NSQ

NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证NSQ支持横向扩展,没有任何集中式代理。NSQ易于配置和部署,并且内置了管理界面。

2024-07-19 11:17:49 30

原创 Kafka介绍及Go操作kafka详解

每个业务系统都有日志,当系统出现问题时,需要通过日志信息来定位和解决问题。当系统机器比较少时,登陆到服务器上查看即可满足当系统机器规模巨大,登陆到机器上查看几乎不现实(分布式的系统,一个系统部署在十几台机器上)LogAgent:日志收集客户端,用来收集服务器上的日志Kafka:高吞吐量的分布式队列(Linkin开发,Apache顶级开源项目)ElasticSearch:开源的搜索引擎,提供基于HTTP RESTful的web接口Kibana:开源的ES数据分析和可视化工具。

2024-07-19 10:29:57 515

原创 Go Context的使用详解

在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。

2024-07-19 10:03:10 895

原创 一次超时导致的协程泄露

f1函数中使用协程池routinePool来执行异步任务,当f1函数超时后,会执行到f1的case

2024-07-17 18:26:43 1900

原创 Elasticsearch的Index sorting 索引预排序会导致索引数据的移动吗?

首先通过refresh在内存中生成新的Segment段时,由于段数据是此时生成的,很容易确保段数据是有序的,此外在段合并的过程中涉及到端数据的重整,这时候也可以确保合并后的新段的数据是有序的。但是我们知道,Elasticsearch的Segment段数据是不可变的,这是为了写入的时候可以进行顺序写而提高磁盘的IO效率,同时可以提高段文件的缓存命中率,不至于一条数据被修改,整个段的数据缓存都要失效的情况。可以想象一个链表结构,如果需要确保它的有序性,在插入新数据的时候需要对链表节点进行移动。

2024-05-23 10:05:09 150

原创 MySQL性能调优:从入门到精通,让你的数据库飞起来!

MySQL性能调优是一个涉及多方面的过程,包括了解MySQL体系结构、选择合适的存储引擎、设置合理的参数、索引优化、查询优化以及其他优化手段等。通过全面地了解和掌握这些知识点,可以帮助你的MySQL数据库性能得到大幅度的提升,让你的数据库飞起来!最后需要注意的是,性能调优并非一成不变的,需要根据实际业务场景和需求进行调整。在进行调优时,要关注具体的性能指标,遵循优化原则,同时要注意权衡各方面的利弊,以达到最佳的效果。

2024-05-17 12:29:32 105

原创 Docker Desktop配置国内镜像源

Docker Desktop配置国内镜像源。

2024-04-30 16:39:52 140 2

原创 match_phrase查不到?match_phrase查询规则详解

"title":{"fields":{},},这里,为了验证分词,同时使用了ik_smart和ik_max两种分词。实际开发中不需要,因为:两种分词共存,会导致导入数据创建索引的时候,索引会非常大,对磁盘和检索性能都会有影响。

2024-04-11 14:52:19 95

原创 【无标题】

各列长度不超过 767 字节 ,如果有超过 767 bytes 的,则给出报警,索引最后创建成功,但是对于超过 767 字节的列取前缀索引,与索引列顺序无关,总和不得超过 3072 ,否则失败,无法创建。开启 innodb_large_prefix 可以使单索引的长度限制达到 3072 字节(但是联合索引总长度限制还是 3072 字节),禁用时单索引的长度限制为 767 字节。了解完存储引擎和不同MySQL版本对索引长度的限制,我们以InnoDB引擎为例,看MySQL不同的字符集对索引长度有啥影响。

2024-04-07 17:33:08 88

原创 消除 Git diff 中的换行符差异(Linux)

通常编辑器默认使用的换行符是跟随操作系统的,而windows操作系统上修改的代码,其换行符会被转成win的\r\n,在提交代码时会显示大量改动(对于sh脚本还会存在无法执行的问题),这时候我们可以通过设置git自动转成unix格式的换行符,

2024-03-21 10:03:20 267

原创 innoDB page页结构详解

Page分为几种类型,常见的页类型有数据页(B+tree Node)Undo页(Undo Log Page)系统页(System Page) 事务数据页(Transaction System Page)等。页的主要作用是存储记录,所以“最小和最大记录”和“用户记录”部分占了页结构的主要空间。另外空闲空间是个灵活的部分,当有新的记录插入时,会从空闲空间中进行分配用于存储新记录。通用部分 : 主要指文件头和文件尾,将页的内容进行封装,通过文件头和文件尾校验的CheckSum方式来确保页的传输是完整的。

2024-02-18 22:22:57 207 1

原创 MySQL为什么改进LRU算法?

改进型LRU:将链表分为new和old两个部分,加入元素时并不是从表头插入,而是从中间midpoint位置插入(就是说从磁盘中新读出的数据会放在冷数据区的头部),如果数据很快被访问,那么page就会向new列表头部移动,如果数据没有被访问,会逐步向old尾部移动,等待淘汰。LRU = Least Recently Used(最近最少使用): 就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰.冷数据区的数据页什么时候会被转到到热数据区呢?

2024-02-18 22:20:47 242

原创 innodb的意向锁有什么作用?

同样,只要表中数据行被加上了共享锁,就给这个表加上一个意向共享锁,用来标识这个表中已经有数据行持有共享锁了。所以意向锁的本质是一种标识锁,所以意向锁之间不管是共享锁还是互斥锁都是不存在互斥关系的,也就是说意向锁之间不会互相阻塞。注意:申请意向锁的动作是数据库完成的,就是说,事务A申请一行的行锁的时候,数据库会自动先开始申请表的意向锁,不需要我们程序员使用代码来申请。如果仅仅锁定一行仅仅需要加一个锁,那么就直接加锁就好了,这里要表明加锁意图的原因是因为要锁定一行不仅仅是要加一个锁,而是要做一系列操作吗?

2024-02-06 15:53:02 129

win11家庭版开启远程桌面功能

用于开启windows11家庭版远程桌面

2024-02-22

win11家庭版开启远程桌面功能

win11家庭版开启远程桌面功能

2024-01-05

汉语词典中全部字词--通过逗号分割

汉语词典中全部字词,通过逗号分割,方便程序直接读取

2022-04-03

accounts.json

深入学习Ealsticsearch课程所用索引数据包

2021-12-08

Elasticsearch技术解析与实战(朱林)

朱林著的这本Elasticsearch技术解析与实战,非常适合需要引入es作为搜索引擎的开发者,书中从原理到实践,一步步深入,让开发者全面掌握es这门近实时的搜索技术

2018-12-21

图解TCPIP(第5版)

网络协议对每个开发者而言至关重要,图解tcp/ip经典中的经典,通俗易懂,对新手非常友好.

2018-09-01

高性能Linux服务器构建实战:运维监控、性能调优与集群应用

从系统到服务再到原理,高级运维必修课,书中几乎没有一句废话,干货满满

2018-08-30

Redis设计与实现 完整版 黄健宏

非常值得一看的书,深度剖析redis数据结构,看完后受益匪浅

2018-08-30

Mysql技术内幕InnoDB存储引擎

深度讲解了innodb架构,让你知道怎么调优mysql,配置参数的含义,精通innodb的使用

2018-08-30

图解HTTP彩色完整版 带书签

熟悉http协议是每个开发人员必备的技能本书通过图片形象的剖析http的基础知识及网络安全

2018-08-30

勇哥带你玩转git基本操作

git是当下最受欢迎的版本控制器没有之一,不管是gitHub还是码云还是CSDN的code,都为广大开发者带来了极大的便利,下面就让老司机带你玩转git基本操作

2017-04-19

史上最全vim配置带插件包,耗时一周打造,覆盖插件文件夹即可使用

支持shell语法,python,c,html,css等的自动补全提示,支持自动生成通用的文件模板,支持显示文件列表(一般模式下按wm开启)支持显示方法列表.可跳转

2017-04-13

HTML5 在游戏开发中的应用

实战讲解HTML5在游戏开发中的应用,吐血推荐

2016-08-24

择业规划与创业形势之我见

就业指导结课作业范本

2016-08-24

空空如也

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

TA关注的人

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