自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Odew

rock life

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

原创 循环不变量求解数组问题

文章目录循环不变量原理快排移动 0去掉指定元素排序数组去重排序数组只保留最多2个重复的元素循环不变量原理第一次看到循环不变量是在算法导论的快排里。一般是针对数组问题求解,需要2个指针。快排快排最核心的思想是分区,也就是将给定数组分成2部分,左边比区间点小,右边比区间点大。使用循环不变量原理,以快排为例,指针 i, j 将数组分为3个部分。其中 0 < i <= j ; i...

2019-03-19 17:41:20 397

原创 深入浅出linux内存管理(一)

文章目录前言linux 虚拟内存系统虚拟寻址多级页表内存映射前言最近断断续续补充了一些linux内存管理的知识。包括之前看 nginx 源码,看 tcmalloc 原理也有一些心得。对于内存管理这个话题也有了一些浅薄的见解。现在针对 linux 下的内存管理这个话题做一个整理,整合一些目前学到的内存管理相关知识。本文涉及操作系统层面的内存管理原理,同时也包括现在主流的内存管理方式,并结合一些...

2019-03-15 11:44:07 532

原创 分布式一致性算法 raft

文章目录主节点选举投票前的准备开始投票投票节点收到投票请求的回复节点收到其他节点的投票请求主从同步,日志复制安全性和成员变化主节点选举每个节点有三种角色:follower: 从节点,被动回复leader和candidate的request。leader: 主节点,处理client的写requestcandidate: leader的候选人follower 会接受 leader 的心跳包...

2019-03-12 19:49:02 349

原创 二叉树非递归遍历最简洁的方式

文章目录最近重新复习二叉树的非递归遍历方式,发现前中后序遍历实现的思想都不一致,导致要理解很多种递归的思路,有点痛苦。对于递归遍历,思路非常明确,理解和记忆也都没有什么困难。如下根据不同的访问顺序就可以实现先中后序的访问。func traversal(root *TreeNode, r *[]int) { if root==nil{ return } ...

2019-03-06 17:15:24 328

原创 leetcode单链表问题集

文章目录反转链表k个一组反转链表合并有序链表合并k个有序链表环形链表环形链表入口删除倒数第N个节点相交链表的交点移除链表指定元素回文链表奇偶链表两数相加旋转链表刷了几天leetcode ,发现以前的很多解法都很冗余,代码不够精简,重新整理了一波,准备做个集合。每一题解法争取用最少的行数解决问题以下是链表相关问题,持续更新中…反转链表反转过程中需要保存当前节点 curr 的下一个节点 n...

2019-03-05 20:26:25 490

原创 nginx 网络框架浅析

文章目录nginx 事件驱动框架浅析nginx主循环框架 ngx_cycle_snginx事件 ngx_event_snginx连接 ngx_connection_snginx事件模块 ngx_event_module_sepoll事件模块 ngx_epoll_modulenginx 对过期事件的处理定时器事件nginx惊群处理和负载均衡算法惊群效应和负载不均衡的由来惊群的处理负载均衡算法ngi...

2018-12-16 19:16:19 1385

原创 linux下cp,mv对运行中的程序升级的问题

文章目录inode 和 dentry 结构执行 cp 命令的时候,发生了什么?执行 mv 的时候发生了什么?参考文章: https://yq.aliyun.com/articles/6371inode 和 dentry 结构在Linux下,所有的结构都是以文件形式存在的。不管是目录还是网络 socket 。每个文件在系统底层关联一个具体的文件结构,关联的key 就是 inode。目录也是一...

2018-12-06 23:14:34 651

原创 ProtoBuffer Encoding 原理解析

ProtoBuffer Encoding 原理解析准备工作Base 128 Varints 编码proto 的消息结构和数据类型其他的数据类型有符号数的 ZigZag 编码非 varints 编码的数值类型字符串类型嵌入结构optional 和 repeatedPacked Repeated Fieldsfiled_number 和 field order...

2018-08-09 13:01:31 1318

原创 go 获取证书信息

GO 获取 pem 证书信息GO 获取 pem 证书信息openssl 客户端查看证书信息:[root@dnsserver test]# openssl x509 -noout -text -in ./client-release.pemCertificate: Data: Version: 3 (0x2) Seria...

2018-08-07 14:28:27 8767

原创 TLS with Go

TLS with Go公私钥的加解密数字签名生成自签名证书模拟CA颁发证书如何让客户端信任服务器双向认证:让服务器信任客户端TLS with Go原文见:https://ericchiang.github.io/post/go-tls/虽然之前也接触一些 openssl 的编程,但是对证书颁发,证书链的一些细节依然有些似懂非懂。完成这篇文章之后解决了...

2018-08-07 14:04:57 2915 1

原创 makefile详解

大型项目中 makefile 的具体应用基本规则业界通用的编译规则具体项目引用通用的编译规则一些语法大型项目中 makefile 的具体应用基本规则target:prerequisites command以上 是 makefile 最核心的规则,target 是目标集,prerequisites 是为了生成 target 的依赖集,co...

2018-07-26 20:58:13 661

转载 Go性能优化小结

1.内存优化1.1 小对象合并成结构体一次分配,减少内存分配次数1.2 缓存区内容一次分配足够大小空间,并适当复用1.3 slice和map采make创建时,预估大小指定容量1.4 长调用栈避免申请较多的临时对象1.5 避免频繁创建临时对象2 并发优化2.1 高并发的任务处理使用goroutine池2.2 避免高并发调用同步系统接口2.3 高并发时避免共...

2018-07-03 10:53:23 473

原创 es 的 refresh 过程

ES的索引数据是写入到磁盘上的。但这个过程是分阶段实现的,因为IO的操作是比较费时的。先写到内存中,此时不可搜索默认经过 1s 之后会被写入 lucene 的底层文件 segment 中 ,此时可以搜索到refresh 之后才会写入磁盘以上过程由于随时可能被中断导致数据丢失,所以每一个过程都会有 translog 记录,如果中间有任何一步失败了,等服务器重启之后就会重试,保证数据写...

2018-06-29 13:24:12 12213 3

原创 golang 一些通用的单元测试模板

以下模板参考了下 elasticsearch 包里的单元测试, 可以很方便的接入到各种单元测试函数中,后续增加案例也很方便假设待测试的函数如下://校验字符串是否为数字func IsInteger(s string) bool { if len(s) == 0 { return true } b, _ := regexp.MatchString(&amp;quot;...

2018-06-26 13:11:13 1261

原创 gob 的深度拷贝

项目中用了protobuf 做 RPC 协议,然后据说 gob 的encoder 和 decoder 比 protobuf 效率更高,于是写了一个用于 protobuf 结构体的深度拷贝库函数func DeepCopy(dst, src interface{}) error { var buf bytes.Buffer if err := gob.NewEncoder(...

2018-06-19 19:52:11 1410

原创 数独有效性校验

数独有效性校验判断一个 9x9 的数独是否有效。需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。 以下输入是一个二维数组,部分元素已填入了数字,空白格用 ‘.’ 表示。 示例 1: 输入: [ ...

2018-05-27 14:38:01 4886

原创 基于 ELK 的 mongo 日志分析简单实践

基于Elk 的日志分析简单实践基于Elk 的日志分析简单实践前言Elk 简介部署logstash1. 数据源输入2. 日志分析和过滤3. 输出至 elastcisearch。Kibana1. Setting2. Discover3. Visualize应用场景发散问题总结与优化参考资料前言​ Elk 是 Elasti...

2018-05-09 15:31:51 2878

原创 从 nginx 学架构

从Nginx学架构(待续)整体架构nginx中的反向代理nginx中的进程同步和惊群处理从Nginx学架构(待续)​ 本文主要提炼出nginx中一些优秀的架构思想,包括反向代理机制,事件触发模型,负载均衡策略,内存管理,高级数据结构和算法的应用等等,这些思想基本上覆盖了linux下网络编程的精华,对于从事高并发分布式系统的开发还是很有借鉴意义的。...

2018-04-14 14:58:29 340

原创 Golang协程调度(待续)

Golang 调度机制Go起源Go 的 RuntimeGMS待改进的地方Dmitry Vyokov 的改进PGolang 调度机制Go起源Go的并发模型是基于 C.A.R Hoare 1978 年的一篇论文——”Communicating Sequential Processes”(以下简称CSP)。在多核处理器开始普及的时候,Hoar...

2018-04-08 21:40:04 1000

原创 消息队列

消息队列一点感想不同的消息模式发布-订阅模式点对点模式调查模式负载均衡模式思路消息队列一点感想最简单的架构,使用master+worker的方式,一个master,多个worker,每个worker用于处理消息的接收和投递,而master用于管理各个worker,实际工作还是由worker进行。不同的消息模式发布-订阅模式​...

2018-04-08 21:36:48 227

原创 TCP/IP 笔记

TCP/IP笔记建立连接,三次握手断开连接,四次握手交互数据流Nagle 算法成块数据流滑动窗口超时重传拥塞控制拥塞窗口慢启动和拥塞避免快速重传和快速恢复失序报文段的重排序读写缓冲区TCP/IP笔记建立连接,三次握手​ 建立连接过程就不说了。​ ACK是在上一个收到...

2018-04-08 21:12:02 249

原创 系统启停脚本

在/etc/init.d 下新建服务启停脚本#!/bin/bash## /etc/rc.d/init.d/myserviced## Starts the at daemon# Source function library.. /etc/init.d/functionstest -x /usr/bin/myserviced || exit 0RETVAL=0#...

2018-04-02 17:17:42 474

原创 通过联动库实现服务间通信

不同层级的服务之间通信联动库原理缺点优点不同层级的服务之间通信当多个模块依赖同一个基础服务模块时看,模块之间通信开始变得复杂,不同服务间的通信,一般是通过RPC调用,但是对于基础服务的数据,频繁的RPC不仅仅导致业务代码的复杂,而且会带来性能上的损耗。比如以下模块依赖 通讯录作为基础的业务模块是上层业务模块的运行的基础,有大量需要用到通讯录数据...

2018-04-02 17:14:35 238

原创 微服务总结(一)

微服务总结(一):单点登录什么是单点登录单点登录的负载均衡模式具体实现ctrl 的流程work 的流程微服务总结(一):单点登录什么是单点登录首先,对于微服务来说,所有服务的请求是需要一个入口的,这个入口用于处理请求的分发,将不同服务的请求映射到不同的进程上去。从另一点来讲,大部分的系统是需要经过身份认证和授权的。通俗一点就是有个登陆的过...

2018-04-02 00:02:54 387

原创 linux 脚本常用流处理器sed

1. 简介2. sed 基础入门3. 完整的sed命令options , Address, CommandPatternSpace4. sed options5. sed script [AddressCommand]5.1 script 简介5.2 sed Command特殊的Command s常用 Command不常用Command需要换行的 Comma...

2018-03-31 23:44:07 720

原创 ElasticSearch 深度分页解决方案

常见深度分页方式 from+size另一种分页方式 scrollscroll + scansearch_after 的方式es 库 scroll search 的实现常见深度分页方式 from+sizees 默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如from = 5000, size=...

2018-03-30 16:53:14 77284 12

原创 ElasticSearch 服务端开发实践

ES 简介索引,分片,副本REST API 接口ES 开发步骤setting获取当前 setting分片, 索引和副本集等设置analyzer 自定义分析器设置mapping获取当前 mapping简单数据类型及自动推导复杂数据类型DSL增删改搜索term 和 termsmatch 和 match_phrasenetsted 类型数据查询...

2018-03-30 16:45:16 2250

原创 基于云风协程库的协程原理解读

协程原理云风的协程库实现保存现场恢复现场打造业务零入侵的自用协程库(待续)协程原理协程的本质都是通过修改 ESP 和 EIP 指针来实现的。其理论上还是单线程在运行,要想实现真正的并发,其实是需要多个CPU才能的。并发是并行的充分条件,并发是在程序级别上实现的,而并行是在机器级别上实现的,要想实现并行,程序上必须以并发实现,但是程序上实现了并发...

2018-03-30 16:38:58 2405 5

Jenkins特性练习

李华强-Jenkins+2+与+Jenkins+X+特性练习.pdf 不同于一般的功能性介绍,针对jenkins的应用场景做了很详细的讲解

2018-09-14

空空如也

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

TA关注的人

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