自定义博客皮肤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的专栏

千里之行始于足下

  • 博客(110)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于进程和线程知识点梳理(万字文章)

最近在看《现代操作系统》这本书的第二章“进程和线程”,同时结合网上查找资料的学习,将进程和线程以及常见的一些问题整理如下:进程概念一个进程是一个正在执行程序的实例的抽象,包括程序计数器、寄存器和程序变量的当前值等操作系统的其他所有内容都是围绕着进程展开的进程是操作系统进行资源分配和调度的一个基本单位多道程序设计多道程序设计是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行,宏观上让人感觉程序是并行执行的、微观上其实是串行执行的:CPU 从一个进程切换到

2021-12-08 09:55:35 277

原创 TCP 协议详解和知识点整理

TCP 概念TCP 属于网络分层中的传输层协议,介于会话层和网络层中间TCP 协议是用于主机到主机的通信协议,是面向连接的端到端的可靠协议,提供可靠字节流传输和对上层应用提供连接服务TCP 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制来实现可靠性TCP 对字节流的内容不作任何解释,对字节流的解释由 TCP 连接双方的应用层进行解释TCP 连接的建立和关闭的过程通过三次握手和四次挥手实现,具体细节可以参考上一篇文章TCP 连接状态及相关命令学习TCP 和 UDP 的区

2020-11-29 18:02:11 465

原创 Elasticsearch 聚合分析深入学习

聚合分析运算是数据库中重要的特性,对于数据分析场景尤为重要。类似于关系型数据库中的 SUM,AVG, GROUP BY 等,Elasticsearch 也提供了丰富的聚合运算方式,可以满足大部分分析和查询场景。Doc Values 和 Field Data在学习聚合分析之前,我们先了解一下 Doc Values 和 Field Data 数据结构,我们知道倒排索引的优势在于查找包含某个项的文档...

2020-02-19 16:01:30 521

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

前面两篇文章 Elasticsearch 入门学习 和 Elasticsearch 搜索的高级功能学习 中介绍了 Elasticsearch 的基本知识点以及相关搜索功能,这篇文章对 Elasticsearch 分布式原理以及在分布式下是如何进行文档的查询和更新相关逻辑学习总结:Elasticsearch 支持集群部署,一个集群下可以部署多个节点,每个节点就是一个 ES 的实例(一个 JAVA ...

2020-02-06 22:23:39 530

原创 iptables 详解

iptables 不是防火墙,而是一个客户端,通过执行命令将防火墙的配置放置在真正的防火墙框架中,位于用户空间,netfilter 才是真正的防火墙安全框架,位于内核空间。我们可以通过 iptables 对进入主机和从主机的 ip 以及端口进行限制,还可以进行网络转发。下面图片来源于博客 iptables详解:iptables 概念链如上图所示,”链“ 表示的是数据流经过的一个一个的关卡,一...

2020-02-05 16:52:47 868

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

在文章 Elasticsearch 入门学习 中介绍了 Elasticsearch 的基础概念以及一些常用的 API。这篇文章是继续对 Elasticsearch 中一些高级的搜索功能的学习和总结:搜索的相关性以及算分机制是什么是相关性算分?相关性算分描述了一个文档和查询语句的匹配程度,ES 会对查询到的每个文档进行打分,打分的本质就是排序ES5 之前默认的相关性打分采用 TF-IDF ...

2020-02-01 20:45:36 1057

原创 Elasticsearch 入门学习

没有聚餐和旅游的春节假期,正好学习一下阮一鸣老师的《Elasticsearch 核心技术与实战》,下面是对 Elasticsearch 里的一些入门知识的学习和总结:什么是 Elasticsearch ?使用 java 语言开发的一套开源的全文搜索引擎用于搜索、日志管理、安全分析、指标分析、业务分析、应用性能监控等多个领域底层基于 Lucene 开源库开发,提供 restAPI,可以被任...

2020-01-28 20:11:43 400

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

在平时的开发工作中,我们都使用被封装完好的 TCP/HTTP 库去完成需求开发,很少关心底层 TCP 的连接状态,但是一旦遇到较难定位的线上事故,往往都是因为 TCP 连接参数或者使用姿势不对导致的,本文对 TCP 连接状态以及相关命令做一下梳理总结:什么是 TCP 协议位于 OSI 模型中的传输层(第四层),是一种端对端的传输协议面向连接的、可靠的协议通过校验和、序列号、确认应答、重发...

2019-12-07 20:15:12 676

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

目前遇到的“求只出现一次的数字”系列的算法题目主要有以下三个:题目一:数组中只有一个元素只出现一次,其余的元素都出现两次,求这个元素;题目二:数组中只有两个元素只出现一次,其余的元素都出现两次,求这个元素;题目二:数组中只有一个元素只出现一次,其余的元素都出现三次,求这个元素;这类算法题目的解决方案主要有以下几种:方案一:统计每个数字的出现次数建立一个 Map(key 为数组中的元...

2019-10-08 21:07:56 258

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

apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,就如同 Windows 上的安装文件。apt-get 命令apt-get update:从 /etc/apt/source.list 文件定义的源中去同步包的索引文件,这个命令并没有更新软件,而是获取软件状态...

2019-09-21 22:37:54 508

原创 redis 入门学习笔记

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

2019-09-09 17:16:37 358

原创 结合项目来谈谈 Puppeteer

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

2019-08-01 22:16:35 5211 7

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

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

2019-07-04 12:49:42 14416 5

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

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

2019-06-30 15:32:54 180

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

最近在看《高性能的 Mysql》一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS,SHOW PROCESSLIST 三个命令。命令一:SHOW STATUSshow status 命令用于查询 Mysql 状态变量相关统计信息通过 show status like 查看部分变量这些状...

2019-06-30 11:03:33 466

原创 InnoDB 存储引擎之事务

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

2019-05-26 14:27:05 212

原创 InnoDB 存储引擎之锁

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

2019-05-25 16:07:38 123

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

本文主要是针对《Mysql技术内幕:InnoDB 存储引擎》一书中第五章关于 InnoDB 存储引擎的索引和算法的学习总结。InnoDB 主要支持以下几种常见的索引:B+ 树索引,哈希索引,全文索引。一、B+ 树索引B+ 树索引的特点B+ 树是为磁盘或者存取辅助设备设计的一种平衡查找树。在 B+ 树中所有记录节点都是按照键值大小存放在同一层叶子节点上,并且各个叶子节点通过指针相连。B...

2019-05-12 22:46:48 190

原创 InnoDB 存储引擎之表存储

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

2019-05-11 10:26:40 915

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

学习《mysql 技术内幕:InnoDB 存储引擎》 第三章关于数据库文件以及 innodb 存储引擎相关文件介绍,学习心得总结如下:mysql 文件主要包括参数文件,日志文件,socket 文件,pid文件,表结构文件,存储引擎文件。参数文件mysql 启动时会读取配置参数文件,如果找不到文件,会使用默认值和源代码中指定参数的默认值。查看参数的两种方式:show variables...

2019-04-29 10:23:04 418

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

最近在学习《Mysql技术内幕:InnoDB 存储引擎》一书,将第二章关于 InndoDB 存储引擎的概述及相关特性总结如下:简介InnoDB 存储引擎支持事务,其特点是行锁设计,支持事务,支持非锁定读。5.5.8 版本开始,InnoDB 是 mysql 默认的存储引擎。InnoDB 使用多版本并发控制(MVCC)来获得并发性。InnoDB 实现了 SQL 的四种隔离级别,默认是 RE...

2019-04-27 13:41:13 918

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

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

2019-03-13 20:09:13 2878

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

由于 JavaScript 是单线程运行的,如果单线程的所有程序都是同步执行的,那么一旦某段程序调用堵塞,整个线程就挂起了。所以 JavaScript 天生是异步的。Node.js 使用的主要编程语言是 JavaScript,采用异步编程,其主要特点如下:单线程相比多线程而已,最大的劣势就是无法充分使用利用多核 CPU。但是单线程也避免了多线程中的存在的一些问题:线程的创建和上下文切换开销...

2019-03-12 20:31:45 2715

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

Error 类1. Error 分类Error : 通用的错误类型,如: new Error(‘error!!!’)SyntaxError : 语法错误,如: require(‘vm’).runInThisContext(‘binary ! isNotOk’)ReferenceError : 引用错误,如引用一个未定义的变量,如: doesNotExistTypeError : 类型错...

2019-03-08 20:04:47 3734

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

JavaScript 的标准 ECMAScript 里没有对 GC 做相关的要求,因此 JavaScript 的 GC 机制完全由引擎决定:一般存在三种垃圾回收的方法:stop-the-world: 它指的是在执行垃圾回收的过程中,会暂停程序的执行增量式 GC(incremental),即程序不需要等到垃圾回收完全结束才能重新开始,在垃圾回收的过程中控制权可以根据情况临时交给程序执行并发...

2019-03-08 15:01:23 508

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

在上篇文章 Nodejs 模块机制及源码分析 中,通过分析 Nodejs 中模块的加载源码,基本理解了 NodeJs 的模块加载原理,其中 Module.prototype._compile 函数主要用于对于第三方 js 文件进行编译加载,所以我们可以巧妙的在 Module.prototype._compile 运行前后执行一些自己的代码,就能实现出意向不到的效果。最近在看赵坤大神的 《Node...

2019-03-07 16:35:41 1464

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

Node.js 采用 CommonJS 模块化规范,让 JavaScript 成为了一门真正能够适应大型工程的语言,在 Node.js 中使用模块非常简单,通过 require 一些想要的包,然后需要产出的代码通过 module.exports 导出。但是除了 require 和 exports 以外,关于 NodeJs 的模块加载机制还有哪些需要了解呢?它的源码是如何实现的呢?模块分类C/...

2019-03-06 22:59:58 1630

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

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

2019-03-01 16:50:40 394

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

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

2019-03-01 09:07:55 154

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

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

2019-02-26 19:18:18 275

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

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

2019-02-21 12:29:46 1979

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

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

2019-02-18 12:54:41 2521 5

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

本文对 http 协议中一些基础知识的概括和总结:WWW由三项技术组成HTML(超文本标记语言)HTTP(文档传输协议)URL(统一资源定位符)URI与URLURI(Uniform Resource Identifier):统一资源标志符URL(Uniform Resource Loator):统一资源定位符URI是用来标记某一互联网资源的,而URL表示网络资源的位...

2019-02-15 12:57:03 1260

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

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

2019-02-14 13:03:46 285

原创 学习如何使用Git

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

2019-02-14 12:47:16 150

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

Async Hooks 是 Node8 新出来的特性,提供了一些 API 用于跟踪 NodeJs 中的异步资源的生命周期。属于内置模块,可以直接引用:let asycnHooks = require('async_hooks');之所以会引入 async_hooks 模块,是因为在异步调用中我们很难正确的追踪异步调用的处理逻辑及关系。而 async_hooks 模块友好的解决了上述问题,...

2018-12-22 19:52:08 5451 6

原创 Nodejs 定制化你自己的REPL

Node 官方提供了 repl 模块,实现一个交互式解析器,它可以作为一个独立程序使用或者嵌入到其它应用中:node 命令使用如果你已经安装了 node,那么你可以在命令行直接输入 node 命令便可以进入一个交互式 javascript 命令行界面,这里你可以敲一些 javascript 表达式,甚至你都可以把它当成计算器使用:$ node> new Date()2018-12-...

2018-12-06 15:54:51 698

原创 Egg 源码分析之 egg-cluster

接着前两篇关于 egg-core 源码分析的文章 egg-core 源码分析一 和 egg-core 源码分析二,今天来看一下 egg-cluster 的源码实现逻辑。NodeJs 中 javascript 的执行是单线程的,所以一个进程只能使用一个 CPU,为了最大可能的使用服务器资源,一般我们可以使用下面三种方式实现:同一台机器上部署多个 Node 服务,使用不同的端口,然后用 Ngin...

2018-11-11 16:49:50 3809 3

原创 Egg 源码分析之 egg-core

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

2018-10-18 15:34:51 3346

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

HTTP2是由google研发的SPDY演化而来,相对HTTP1而言,其方法/状态码/URL/标头字段都没有发生任何改变,而是是针对TCP传输效率和性能作了优化,HTTP/1.x协议以换行符作为纯文本的分隔符,而HTTP/2将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们编码,新的二进制分帧机制改变了客户端与服务器之间交换数据的方式。优化主要包括以下几个方面:支持完整的请求与响应...

2018-08-05 15:56:03 923

数学建模全国二等奖

数学建模资料,全国数学建模,很有参考价值,谢谢谢谢

2014-09-12

空空如也

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

TA关注的人

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