自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zdplife的专栏

千里之行始于足下

原创 Elasticsearch 聚合分析深入学习

聚合分析运算是数据库中重要的特性,对于数据分析场景尤为重要。类似于关系型数据库中的 SUM,AVG, GROUP BY 等,Elasticsearch 也提供了丰富的聚合运算方式,可以满足大部分分析和查询场景。 Doc Values 和 Field Data 在学习聚合分析之前,我们先了解一下 D...

2020-02-19 16:01:30

阅读数 31

评论数 0

原创 Elasticsearch 分布式原理以及相关读写逻辑

前面两篇文章 Elasticsearch 入门学习 和 Elasticsearch 搜索的高级功能学习 中介绍了 Elasticsearch 的基本知识点以及相关搜索功能,这篇文章对 Elasticsearch 分布式原理以及在分布式下是如何进行文档的查询和更新相关逻辑学习总结: Elastics...

2020-02-06 22:23:39

阅读数 50

评论数 0

原创 iptables 详解

iptables 不是防火墙,而是一个客户端,通过执行命令将防火墙的配置放置在真正的防火墙框架中,位于用户空间,netfilter 才是真正的防火墙安全框架,位于内核空间。我们可以通过 iptables 对进入主机和从主机的 ip 以及端口进行限制,还可以进行网络转发。下面图片来源于博客 ipta...

2020-02-05 16:52:47

阅读数 98

评论数 0

原创 Elasticsearch 搜索的高级功能学习

在文章 Elasticsearch 入门学习 中介绍了 Elasticsearch 的基础概念以及一些常用的 API。这篇文章是继续对 Elasticsearch 中一些高级的搜索功能的学习和总结: 搜索的相关性以及算分机制 是什么是相关性算分? 相关性算分描述了一个文档和查询语句的匹配程度,E...

2020-02-01 20:45:36

阅读数 133

评论数 0

原创 Elasticsearch 入门学习

没有聚餐和旅游的春节假期,正好学习一下阮一鸣老师的《Elasticsearch 核心技术与实战》,下面是对 Elasticsearch 里的一些入门知识的学习和总结: 什么是 Elasticsearch ? 使用 java 语言开发的一套开源的全文搜索引擎 用于搜索、日志管理、安全分析、指标分析...

2020-01-28 20:11:43

阅读数 46

评论数 0

原创 TCP 连接状态及相关命令学习

在平时的开发工作中,我们都使用被封装完好的 TCP/HTTP 库去完成需求开发,很少关心底层 TCP 的连接状态,但是一旦遇到较难定位的线上事故,往往都是因为 TCP 连接参数或者使用姿势不对导致的,本文对 TCP 连接状态以及相关命令做一下梳理总结: 什么是 TCP 协议 位于 OSI 模型中...

2019-12-07 20:15:12

阅读数 29

评论数 0

原创 “求只出现一次的数字”系列算法问题

目前遇到的“求只出现一次的数字”系列的算法题目主要有以下三个: 题目一:数组中只有一个元素只出现一次,其余的元素都出现两次,求这个元素; 题目二:数组中只有两个元素只出现一次,其余的元素都出现两次,求这个元素; 题目二:数组中只有一个元素只出现一次,其余的元素都出现三次,求这个元素; 这类算法...

2019-10-08 21:07:56

阅读数 36

评论数 0

原创 学习如何使用 apt-get 命令

apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,就如同 Windows 上的安装文件。 apt-get 命令 apt-get update: 从 /etc/apt/...

2019-09-21 22:37:54

阅读数 98

评论数 0

原创 redis 入门学习笔记

redis 是什么? redis 是 “Remote Dictionary Server” 的缩写,它以字典的结构存储数据 redis 的所有数据都存储在内存中,在性能上相对其它硬盘存储的数据库有很大的优势 redis 可以对内存中的数据进行持久化 redis 支持主从复制功能,实现高可用 re...

2019-09-09 17:16:37

阅读数 135

评论数 0

原创 结合项目来谈谈 Puppeteer

Puppeteer 是 Chrome 开发团队在 2017 年发布的一个 Node.js 包,用来模拟 Chrome 浏览器的运行。我们团队从 Puppeteer 刚发布出来就开始成为忠实用户了(主要是因为 PhantomJs 坑太多了),本文主要在介绍 Puppeteer 的同时,结合我们平时的...

2019-08-01 22:16:35

阅读数 1064

评论数 5

原创 记一次关于 Mysql 中 text 类型和索引问题引起的慢查询的定位及优化

最近有用户反馈产品有些页面加载比较慢,刚好我在学习 Mysql 相关知识,所以先从 Mysql 慢查询日志开始定位: step1:通过慢查询日志定位具体 SQL 首先通过 SHOW VARIABLES like 查看当前 Mysql 服务器关于慢查询的具体配置信息: slow_query_log ...

2019-07-04 12:49:42

阅读数 2138

评论数 0

原创 使用 explain 优化你的 mysql 性能

本文是关于在学习《高性能 Mysql》附录 D 中关于 Explain 如何获取执行计划信息相关总结。MySQL 提供了一个 EXPLAIN 命令,它可以对 SELECT 语句进行分析,获取优化器对当前查询的执行计划,以供开发人员针对相关 SQL 进行优化。在 SELECT 语句前加上 Expla...

2019-06-30 15:32:54

阅读数 31

评论数 0

原创 学习如何统计 Mysql 服务器状态信息

最近在看《高性能的 Mysql》一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS,SHOW PROCESSLIST 三个命令。 命令一:SHOW STATUS show status 命令用...

2019-06-30 11:03:33

阅读数 117

评论数 0

原创 InnoDB 存储引擎之事务

本文主要是针对《Mysql技术内幕:InnoDB 存储引擎》一书中第七章关于 InnoDB 存储引擎中事务的学习总结。 事务是访问并更新数据库各种数据项的一个程序执行单元,是数据库区别于文件系统的重要特性之一。 事务的 ACID 特性 理论上,事务必须满足 ACID 特性,才算严格的定义,其中对于...

2019-05-26 14:27:05

阅读数 86

评论数 0

原创 InnoDB 存储引擎之锁

本文主要是针对《Mysql技术内幕:InnoDB 存储引擎》一书中第六章关于 InnoDB 存储引擎中锁的学习总结。 锁是数据库系统区别于文件系统的一个关键特性,为了支持对共享资源的并发访问,提供数据的完整性和一致性,我们必须为数据加锁,InnoDB 提供了一致性非锁定读、行级锁的支持。 共享锁(...

2019-05-25 16:07:38

阅读数 30

评论数 0

原创 InnoDB 存储引擎之索引和算法

本文主要是针对《Mysql技术内幕:InnoDB 存储引擎》一书中第五章关于 InnoDB 存储引擎的索引和算法的学习总结。 InnoDB 主要支持以下几种常见的索引:B+ 树索引,哈希索引,全文索引。 一、B+ 树索引 B+ 树索引的特点 B+ 树是为磁盘或者存取辅助设备设计的一种平衡查找树。...

2019-05-12 22:46:48

阅读数 50

评论数 0

原创 InnoDB 存储引擎之表存储

本文主要是针对《Mysql技术内幕:InnoDB 存储引擎》一书中第三章关于表相关概念的概括和总结,主要包括组织索引表,InnoDB 逻辑存储结构,InnoDB 行记录格式,InnoDB 数据页结构,表相关的约束问题,视图,表分区。 一、索引组织表 索引组织表是指按照主键的顺序组织存放数据的表,I...

2019-05-11 10:26:40

阅读数 117

评论数 0

原创 InnoDB 存储引擎之文件分类

学习《mysql 技术内幕:InnoDB 存储引擎》 第三章关于数据库文件以及 innodb 存储引擎相关文件介绍,学习心得总结如下: mysql 文件主要包括参数文件,日志文件,socket 文件,pid文件,表结构文件,存储引擎文件。 参数文件 mysql 启动时会读取配置参数文件,如果找不到...

2019-04-29 10:23:04

阅读数 183

评论数 0

原创 InnoDB 存储引擎之关键特性

最近在学习《Mysql技术内幕:InnoDB 存储引擎》一书,将第二章关于 InndoDB 存储引擎的概述及相关特性总结如下: 简介 InnoDB 存储引擎支持事务,其特点是行锁设计,支持事务,支持非锁定读。 5.5.8 版本开始,InnoDB 是 mysql 默认的存储引擎。 InnoDB 使...

2019-04-27 13:41:13

阅读数 284

评论数 0

原创 Node.js 如何处理 cpu 密集型问题

总所周知,Node.js 中的异步 I/O 编程特点,非常适合处理 I/O 密集型的情况,但是由于 javascript 单线程的特点,使 Node.js 对于处理 CPU 密集型问题却成为了 Node.js 的弱项,如果遇到 CPU 密集型问题,我们该怎么处理呢,下面我总结了几个相关处理方法: ...

2019-03-13 20:09:13

阅读数 895

评论数 0

原创 浅谈 Node.js 中的异步编程原理和实践

由于 JavaScript 是单线程运行的,如果单线程的所有程序都是同步执行的,那么一旦某段程序调用堵塞,整个线程就挂起了。所以 JavaScript 天生是异步的。 Node.js 使用的主要编程语言是 JavaScript,采用异步编程,其主要特点如下: 单线程相比多线程而已,最大的劣势就是...

2019-03-12 20:31:45

阅读数 386

评论数 0

原创 Node.js 中的错误处理和常用调试方法

Error 类 1. Error 分类 Error : 通用的错误类型,如: new Error(‘error!!!’) SyntaxError : 语法错误,如: require(‘vm’).runInThisContext(‘binary ! isNotOk’) ReferenceError...

2019-03-08 20:04:47

阅读数 449

评论数 0

原创 学习 Node.js 内存管理和垃圾回收机制

JavaScript 的标准 ECMAScript 里没有对 GC 做相关的要求,因此 JavaScript 的 GC 机制完全由引擎决定: 一般存在三种垃圾回收的方法: stop-the-world: 它指的是在执行垃圾回收的过程中,会暂停程序的执行 增量式 GC(incremental),即...

2019-03-08 15:01:23

阅读数 85

评论数 0

原创 Node.js 中妙用 Module.prototype._compile 函数

在上篇文章 Nodejs 模块机制及源码分析 中,通过分析 Nodejs 中模块的加载源码,基本理解了 NodeJs 的模块加载原理,其中 Module.prototype._compile 函数主要用于对于第三方 js 文件进行编译加载,所以我们可以巧妙的在 Module.prototype._...

2019-03-07 16:35:41

阅读数 271

评论数 0

原创 Node.js 模块机制及源码分析

Node.js 采用 CommonJS 模块化规范,让 JavaScript 成为了一门真正能够适应大型工程的语言,在 Node.js 中使用模块非常简单,通过 require 一些想要的包,然后需要产出的代码通过 module.exports 导出。但是除了 require 和 exports ...

2019-03-06 22:59:58

阅读数 330

评论数 0

原创 《ECMAScript 6 入门》学习笔记

ES6简介 ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017等等; ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 ...

2019-03-01 16:50:40

阅读数 194

评论数 0

原创 《你不知道的javascript》学习笔记

严格模式 ES5中引入严格模式,严格模式与非严格模式的一些区别: 严格模式下,禁止隐式或自动的创建全局变量; 严格模式下,禁止使用with函数,会根据所传对象创建一个全新的作用域,有性能消耗,不建议使用; 严格模式下,eval(…)在运行时有其自己的词法作用域,意味着其中的声明无法修改所在的作用...

2019-03-01 09:07:55

阅读数 72

评论数 0

原创 你需要掌握的 mysql 性能优化的一些要点

缓存优化 大多数的MySQL服务器都开启了查询缓存,当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了 // 如果在sql语句中直接使用一些动态的函数查询缓存不开启 $r = mysql_query(&quo...

2019-02-26 19:18:18

阅读数 89

评论数 0

原创 工作中你应该掌握的 linux 命令大全

用户登录相关命令: sudo命令 su 命令 w命令 who 命令 whoami命令 who am i命令 last命令 tty命令 passwd命令 write命令 mesg命令 wall命令 查看系统运行状态和进程相关命令: 查看cpu内核数目 uname指令 w 命令 uptime...

2019-02-21 12:29:46

阅读数 282

评论数 0

原创 web 跨域问题(SOP/CORS/CSRF)

同源策略 - same origin policy(SOP) 概念:两个网页同源是指这两个网页的协议,域名,端口全部相同 举例来说,http://www.example.com/dir/page.html这个网址,协议是http,域名是www.example.com,端口是80,它的同源情况如...

2019-02-18 12:54:41

阅读数 685

评论数 5

原创 你需要了解的 http 协议基础知识

本文对 http 协议中一些基础知识的概括和总结: WWW由三项技术组成 HTML(超文本标记语言) HTTP(文档传输协议) URL(统一资源定位符) URI与URL URI(Uniform Resource Identifier):统一资源标志符 URL(Uniform Resou...

2019-02-15 12:57:03

阅读数 304

评论数 0

原创 学习如何使用vim编辑器

常用快捷键 快捷键 操作 gg 跳转到文件最开头 G 跳转到文件末尾 :n 跳转到指定行 == 自动缩紧当前行 gg=G 格式化文本格式 / 可以输入所搜索的单词(向下搜索) ? 可以输入所搜索的单词(向上搜索) :%s/var/let/g 全局将var...

2019-02-14 13:03:46

阅读数 54

评论数 0

原创 学习如何使用Git

Git 简介 Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git ...

2019-02-14 12:47:16

阅读数 79

评论数 0

原创 学习使用 NodeJs 中 async-hooks 模块

Async Hooks 是 Node8 新出来的特性,提供了一些 API 用于跟踪 NodeJs 中的异步资源的生命周期。属于内置模块,可以直接引用: let asycnHooks = require('async_hooks'); 之所以会引入 async_hooks ...

2018-12-22 19:52:08

阅读数 1734

评论数 3

原创 Nodejs 定制化你自己的REPL

Node 官方提供了 repl 模块,实现一个交互式解析器,它可以作为一个独立程序使用或者嵌入到其它应用中: node 命令使用 如果你已经安装了 node,那么你可以在命令行直接输入 node 命令便可以进入一个交互式 javascript 命令行界面,这里你可以敲一些 javascript 表...

2018-12-06 15:54:51

阅读数 264

评论数 0

原创 Egg 源码分析之 egg-cluster

接着前两篇关于 egg-core 源码分析的文章 egg-core 源码分析一 和 egg-core 源码分析二,今天来看一下 egg-cluster 的源码实现逻辑。 NodeJs 中 javascript 的执行是单线程的,所以一个进程只能使用一个 CPU,为了最大可能的使用服务器资源,一般我...

2018-11-11 16:49:50

阅读数 1551

评论数 1

原创 Egg 源码分析之 egg-core

我们团队现在开发的node项目都是基于koa框架实现的,虽然现在也形成了一套团队内的标准,但是在开发的过程中也遇到了一些问题: 由于没有统一的规范,新人上手和沟通成本比较高,容易出现错误 仅局限于目前需求进行设计,扩展性不高 系统部署及配置信息维护成本较高 业务代码实现起来不是很优雅,比如(1)...

2018-10-18 15:34:51

阅读数 1558

评论数 0

原创 浅谈http2协议中的新特性

HTTP2是由google研发的SPDY演化而来,相对HTTP1而言,其方法/状态码/URL/标头字段都没有发生任何改变,而是是针对TCP传输效率和性能作了优化,HTTP/1.x协议以换行符作为纯文本的分隔符,而HTTP/2将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们编码,新的二进...

2018-08-05 15:56:03

阅读数 374

评论数 0

原创 你需要知道的Nginx配置二三事

做服务端开发的,工作中难免会遇到处理Nginx配置相关问题。在配置Nginx时,我一直本着“照葫芦画瓢”的原则,复制已有的配置代码,自己修修改改然后完成配置需求,当有人问起Nginx相关问题时,其实仍然一无所知。为此在工作之余,花了一周的时间阅读Nginx配置相关文章,整理成自己的学习笔记如下: ...

2018-03-15 09:14:53

阅读数 1273

评论数 3

原创 新一代 web 框架 Koa 源码学习

Koa 就是一种简单好用的nodejs-Web 框架。它的特点是优雅、简洁、表达力强、自由度高。本身代码只有1000多行。koa一个中间件框架,其提供的是一个架子,而几乎所有的功能都需要由第三方中间件完成,它只是node原生的http的一个封装,再加入中间件元素,koa 不在内核方法中绑定任何中间...

2018-01-26 16:33:02

阅读数 3121

评论数 0

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