自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 问答 (1)
  • 收藏
  • 关注

转载 Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性...

2020-02-14 15:56:54 170

原创 大脑的无限存储与记忆传输

大脑是无限存储的吗? 我们常常被告知大脑是可以不断存储信息的,事实也确实是如此, 我们在不断的学习知识,存储知识,并且运用知识。我一直认为自己是记忆力非常不好的人,因为我时常会忘记一些事情,包括我学习的知识。但是看完《认知天性》之后,我改变了对自己的误解。书中提到我们可以通过回忆的方法把知识巩固到大脑中,这个方法确实很管用。使用这个方法我记住了很多以往都不敢想象的知识,也就...

2019-11-06 18:37:04 1582

原创 STEP7 Professional 的许可无法彻底完成,因为Automation License Manager 中发生了内部错误

问题:自动化许可证管理器(0086:000001)STEP7 Professional 的许可无法彻底完成,因为Automation License Manager 中发生了内部错误。解决方案:遇到这种问题,都是在win10平台下出现,在国内平台上都没有找到处理方案,但是在西门子官网英文平台中有用户给出了解决方案。出现问题的原因是博途当前版本对...

2019-04-15 17:25:03 46920 16

原创 设计模式及说明

2020-12-13 13:05:14 133

原创 依赖倒置图示

2020-12-11 11:42:20 187

原创 磁盘I/O 图示点

2020-12-08 10:43:56 296

原创 网络架构-协议、硬件、软件

2020-12-08 10:09:54 344

转载 Linux资源管理之cgroups简介

引子cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控制。另外,开发者也可以使用 cgroups 提供的精细化控制能力,限制某一个或者某一组进程的资源使用。比如在一个既部署了前端 web 服务,也部署了后端计算模块的八核服务器上,可以使用 cgroups 限制 web server 仅可以使用其中的六个核

2020-12-04 14:37:26 396

原创 服务的降级

2020-11-29 13:47:49 61

原创 blog-service

2020-11-29 13:46:47 129

原创 集群容错关系图

2020-11-29 13:43:53 134

原创 限流(单点限流、集群限流)

2020-11-27 11:47:15 323

原创 负载策略

2020-11-27 10:09:27 117

原创 服务度量

注:以上内容是对《微服务治理:体系、架构及实践的》整理

2020-11-26 11:17:03 261

转载 调度算法

进程调度算法进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给其分配 CPU。什么时候会发生 CPU 调度呢?通常有以下情况:当进程从运行状态转到等待状态; 当进程从运行状态转到就绪状态; 当进程从等待状态转到就绪状态; 当进程从运行状态转到终止状态;其中发生在 1 和 4 两种情况下的调度称为「非抢占式调度」,2 和 3 两种情况下发生的调度称为「抢占式调度」。非抢占式的意思就是,...

2020-11-13 17:32:00 1083

原创 kubernetes 权威指南 第四版 笔记 alpha版 (更新中)

2020-09-03 09:32:47 368

翻译 gorilla/mux 翻译

mux https://github.com/gorilla/muxgorilla / mux实现了一个请求路由器和分发器,用于将传入的请求与其各自的处理程序进行匹配。名称mux代表“ HTTP请求多路复用器”。 与标准的http.ServeMux一样,mux.Router将传入请求与已注册路由列表进行匹配,并为与URL或其他条件匹配的路由调用处理程序。 主要特点是:它实现了http.Handler接口,因此与标准的http.ServeMux兼容。可以基于URL主机,路径,路径前缀,方案,标头和查

2020-08-18 23:22:37 240

转载 Fasthttp里面 goroutine pool 实现原理

应用实例 源码分析 调用链路分析 workerPool 的 start 和 stop workerPool 的 Serve 逻辑架构图这篇文章主要讲解fasthttp 这个http库关于协程池做的优化原理;应用实例fasthttp 是一个非常优秀的web server框架,github上的benchmark号称比官方的net/http快10倍以上。fasthttp用了很多黑魔法。我们今天通过源码来看一看它的goroutine pool的实现。这里还是以一个例子开头来说明...

2020-08-18 23:16:50 314

原创 人工智能乱想

2020-08-06 18:02:26 103

翻译 go-kit http/proto翻译

http/protoimport “github.com/go-kit/kit/transport/http/proto”client.gopackage protoimport ( "bytes" "context" "errors" "io/ioutil" "net/http" httptransport "github.com/go-kit/kit/transport/http" "github.com/golang/protobuf/proto")// EncodeP

2020-07-28 17:22:55 171

原创 go-kit 目录

#go-kit* auth/basic* auth/casbin* auth/jwt* circuitbreaker 断路器实现了断路器模式。* cmd/kitgen* cmd/kitgen/templatesendpoint: 端点定义了RPC的抽象examplesexamples/addsvc/cmd/addcliexamples/addsvc/cmd/addsvcexamples/addsvc/pbexamples/addsvc/pkg/addendpointexa

2020-07-28 17:21:35 327

翻译 go-kit http翻译

httpclient.gopackage httpimport ( "bytes" "context" "encoding/json" "encoding/xml" "io" "io/ioutil" "net/http" "net/url" "github.com/go-kit/kit/endpoint")// HTTPClient是模拟* http.Client的接口。type HTTPClient interface { Do(req *http.Request)

2020-07-28 17:20:22 231

翻译 go-kit grpc 翻译

grpcgRPC是出色的,现代的IDL和微服务传输方案。 如果您要启动一个新的项目,则go-kit强烈建议将gRPC作为默认传输方式。一个重要的注意事项是,尽管gRPC支持流请求和应答,但是go-kit不支持。 您仍然可以在服务中使用流,但是其实现将无法利用中间件之类的许多go-kit功能。共同使用gRPC和go-kit是非常简单的。首先,使用protobuf3定义服务。 gRPC文档中对此进行了说明。 有关示例,请参见add.proto。 确保原型定义与您的服务的go-kit(接口)定义相匹配。

2020-07-28 17:19:18 154

翻译 go-kit endpoint 翻译

endpointendpoint是许多Go kit组件的基本构建块。 端点由服务器实现,并由客户端调用。func Nopfunc Nop(context.Context, interface{}) (interface{}, error)Nop不执行任何操作,并返回nil错误。 对测试有用。type Endpointtype Endpoint func(ctx context.Context, request interface{}) (response interface{}, err

2020-07-28 17:17:58 200

翻译 bigcache 翻译

bigcache快速,并发,退出内存中的高速缓存被写入,以保留大量条目,而不会影响性能。 BigCache将条目保留在堆上,但省略了它们的GC。 为此,需要对字节片进行操作,因此在大多数使用情况下,需要在缓存前面进行条目(反序列化)。Requires Go 1.12 or newer.原理bigcache几个核心的数据结构:leftWindownhashercacheShard :sync.RWMutex 、map、queue.BytesQueueshardMaskConfighas

2020-07-28 17:14:44 824

转载 TimingWheel 时间轮详解

在kafka中,有许多请求并不是立即返回,而且处理完一些异步操作或者等待某些条件达成后才返回,这些请求一般都会带有timeout参数,表示如果timeout时间后服务端还不满足返回的条件,就判定此次请求为超时,这时候kafka同样要返回超时的响应给客户端,这样客户端才知道此次请求超时了。比如ack=-1的producer请求,就需要等待所有的isr备份完成了才可以返回给客户端,或者到达timeout时间了返回超时响应给客户端。上面的场景,可以用延迟任务来实现。也就是定义一个任务,在timeout时间后执

2020-05-24 21:28:49 473

原创 raft协议-选举、日志复制、网络分区、快照

raft算法是一种用于管理复制日志的一致性算法,并且易于理解。主要从以下几个方面来介绍raft协议:leader的选举 日志的复制 网络分区的场景 日志压缩与快照 linearizable语义 只读请求 leader节点的转移leader的选举: raft协议的工作模式是一个leader节点和多个follower节点的模式。每个节点维护了一个状态机,并且有三种状态:leader状态、follower状态、candidate状态。以下是每个状态的节点负责的工作:lea...

2020-05-21 21:48:01 1075

原创 golang文章整理

coder_learn只争朝夕,不负韶华!golang????:《Go语言编程入门与实战技巧》-黄靖钧《Go语言核心编程》-李文塔《Go编发编程实战》-郝林《Go语言编程》-许式伟《Go程序设计语言》-译本 Go语言圣经《Go语言学习笔记》-雨痕《Go 语言设计与实现》《Go语言高级编程》- 柴树杉,曹春晖《go语言101》mysql :mysql45讲mysql必知必会计算机组成原理:深入理解计算机系统深入浅出计算机组成原理(极客时间)算法:数据结

2020-05-19 22:18:39 418

原创 goland历史版本下载地址

https://www.jetbrains.com/zh-cn/go/download/other.html

2020-05-17 07:27:10 2036

原创 二叉树的中序遍历、前序后续遍历

2020-05-13 20:30:52 120

转载 Go 语言内存管理(四):垃圾回收

介绍编写 Go 代码不需要像写 C/C++ 那样手动的 malloc和 free内存,因为 malloc 操作由 Go 编译器的逃逸分析机制帮我们加上了,而 free 动作则是有 GC 机制来完成。虽说 GC 是一个很好的特性,大大降低了编程门槛,但这是以损耗性能为代价的。Go 的 GC 机制是不断进化提升的,到现在也没有停止。其进化过程中主要有一下几个重要的里程碑:1.1 版本: 标...

2019-11-30 17:34:13 150

转载 Go 语言内存管理(三):逃逸分析

介绍Go 语言较之 C 语言一个很大的优势就是自带 GC 功能,可 GC 并不是没有代价的。写 C 语言的时候,在一个函数内声明的变量,在函数退出后会自动释放掉,因为这些变量分配在栈上。如果你想要变量的数据能在函数退出后还能访问,就需要调用 malloc 方法在堆上申请内存,如果程序不再需要这块内存了,再调用 free 方法释放掉。Go 语言不需要你主动调用 malloc 来分配堆空间,编译器...

2019-11-30 17:33:13 217

转载 Go 语言调度(三): 并发

介绍当我解决问题时,尤其是新问题,我不会一上来就想着能不能使用并发来处理。我会首先想出一个顺序执行的解决方案。然后在可读性和技术评审后,我会开始考虑并发处理能不能让问题得到更快的解决。有时很显然并发是很合适的,但有时候并不那么明显。第一篇文章,我讲解了系统调度器的机制和原理,我相信这对写一个多线程代码是重要的。第二篇文章我讲解了 Go 语言调度器的机制,对如何 Go 语言写出并发代码是重要...

2019-11-30 17:32:00 188

转载 Go 语言调度(二): goroutine 调度器

介绍上一篇文章我对操作系统级别的调度进行了讲解,这对理解 Go 语言的调度器是很重要的。这篇文章,我将解释下 Go 语言的调度器是如何工作的。依旧专注在上层抽象的基本概念上,不深入到具体如何实现的,因为 Go 调度器是非常复杂的而且内部机制的一些细节是无关紧要的。重要的是我们要对 goroutine 是如何被调度和工作的有一个简单的心理模型。这对我们做工程决策时有很大的帮助。程序启动当...

2019-11-30 17:31:17 175

转载 Go 语言调度(一): 系统调度

调度相关的一系列文章主要参考 Scheduling In Go : Part I - OS Scheduler 翻译来的。因为在学习的过程中偶然发现,感觉总结得蛮好的,就不造轮子了,干脆直接翻译过来作为自己的学习笔记了,英文好的建议直接阅读原文。介绍Go 调度器使你编写的 Go 程序并发性更好,性能更高。这主要是因为 Go 调度器很好的运用了系统调度器的机制原理。但是,如果你不了解调...

2019-11-30 17:29:51 209

转载 Go 语言内存管理(二):Go 内存管理

介绍了解操作系统对内存的管理机制后,现在可以去看下 Go 语言是如何利用底层的这些特性来优化内存的。Go 的内存管理基本上参考 tcmalloc 来实现的,只是细节上根据自身的需要做了一些小的优化调整。Go 的内存是自动管理的,我们可以随意定义变量直接使用,不需要考虑变量背后的内存申请和释放的问题。本文意在搞清楚 Go 在方面帮我们做了什么,使我们不用关心那些复杂内存的问题,还依旧能写出较...

2019-11-30 17:20:41 356

转载 Go 语言内存管理(一):系统内存管理

介绍要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。操作系统内存管理其实现在计算机内存管理的方式都是一步步演变来的,最开始是非常简单的,后来为了满足各种需求而增加了各种各样的机制,越来越复杂。这里我们只介绍和开发者息息相关的几个机...

2019-11-30 17:18:16 127

转载 Docker安装influxDB

1. 在Docker库中查找influxDB镜像docker search influxdb # 在Docker库中查找influxDB镜像文件2. 从Docker库中拉取influxDB镜像docker pull influxdb # 从docker库中拉取influxDB镜像,默认拉取最新版本docker images # 查看本地已有的镜像文件...

2019-11-17 21:52:47 1849

原创 通过计数的方式来等待goroutine的完成

func makeThumnails(filename []string){ ch := make(chan struct{}) for _,f := range filenames{ go func(f string){ thumbnail.ImageFile(file)//忽略了可能的错误 //每个goroutine操作完成都发...

2019-11-16 14:38:30 126

原创 在docker 中创建elasticsearch镜像

docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "discovery.type=single-node" bdaab402b220--name 名称 给容器起个名字-p 外部访问端口:容器端口 ...

2019-11-15 09:51:21 1052

空空如也

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

TA关注的人

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