《Go in Action》第一章读书笔记

本文为《Go in Action》的第一章读书笔记。 第一章主要是对go语言的一个介绍。 Q: go语言想要解决的问题? A: 原文: The Go team went to great lengths to solve the problems facing software developers today. Developers have to make an uncomfortable choice between rapid development and performance wh...阅读全文

简书 2019.10.19 12:20:14 aside section . 等

内存池原理详解

从一个问题谈起:从内核中的伙伴系统,页高速缓存系统,slab内存管理系统,常规内存高速缓存系统,到用户线性区管理,用户动态内存分配malloc/free,最终因时制宜选择自定义内存区管理策略,到底有哪些驱动力? 接下来我们来梳理一下 1.伙伴系统 伙伴系统是内核为解决外碎化问题引入的内存管理机制。在32位体系结构中,虚拟内存空间的第四个GB用来线性的映射物理内存开始的DMA和低端内存管理区。而内存管理的基本单位是页,一个页的大小为4kB。所谓的外碎化指的是多次申请多个页的内存并释放后,会导致内存...阅读全文

简书 2019.10.19 11:17:20 aside section . 等

001 go语言开发环境配置

ubuntu系统安装Go和liteide及环境配置 一、通过apt-get安装 1、安装 sudo apt-get install golang 2、设置GOPATH变量 GOPATH是扩展库的目录,Go先搜索标准库目录,然后搜索GOPATH库目录,所有的非标准库都放在GOPATH下。以GOPATH为“/home/zzh/gopath”目录为例子: image.png (1)把export GOPATH=/home/zzh/gopath 加入到~/.bashrc文件的最后。 (2)source ...阅读全文

简书 2019.10.18 23:45:43 aside section . 等

分享《 Zookeeper源码分析【完整无密】》

​Zookeeper源码分析【完整无密】百度网盘链接下载!Zookeeper作为阿里系与Dubbo完美搭配的注册中心,其江湖地位毋容置疑。本课程以最开始图解Zookeeper框架的架构和组件作为课程总起,进而“分而治之”各个击破Zookeeper框架的各个组件源码,如:序列化,数据模型,持久化,Client和Server架构、选举流程等,最后通过总结快速梳理所得。适合人群有代码洁癖的中高级Java工程师 从事分布式系统设计和开发的极客 认可“源码驱动式”学习方式的学生党技术储备要求Java基础扎...阅读全文

Go语言中文网 2019-10-19 03:47:40 guanzhilin1

说一说go mod

[toc] 说一说go mod 写在前面,我们要切换到go mod吗 go mod是官方力推的go模块依赖管理的工具,有官方的背书,肯定是要用的。go1.13已经默认支持了,所以迟早要切到go mod, 势不可挡。 go mod什么 go mod能管理的依赖包的版本,能保证在不同地方构建,获得的依赖模块是一致的。 没有go mod之前如何管理包依赖 没有go mod之前,有go deps, vendor等方法来解决。 go mod如何工作 go 1.11通过设置环境变量GO111MODULE来决...阅读全文

简书 2019.10.19 00:02:29 aside section . 等

Golang之旅3-基本数据类型

基本数据类型 GO语言中的数据类型十分丰富,包含:整型、浮点型、布尔型,还有数组、切片、结构体、函数、map、通道chanel等 go基本数据类型 整型 无符号整型 uint8:,0到255 uint16:,0到65535 uint32 uint64 有符号整型 int8:-128到127 int16:-32768到32767 int32 int64 其他数字类型 uint:32/64位系统上就是uint32/uint64 int:32/64位系统上就是int32/int64 uintptr:无...阅读全文

简书 2019.10.19 00:30:38 aside section . 等

golang自定义一个简洁而强大的错误追踪包

一. 前言 1.1 错误追踪需要了解的信息 错误提示语 错误的位置, 如:具体的文件名,错误行号和错误方法等. 1.2 实际情况 golang自带了错误信息包error 只提供了简单的用法, 如errors.New(),和errors.Error()用来传递和获取错误信息. 明显官方的包已经不能满足了, 只能采取其他方法补救, 如: 扩充官方包 自定义错误包 ...... 更多内容, 请查看 https://segmentfault.com/a/1190000020735659阅读全文

简书 2019.10.18 19:33:58 aside section . 等

c/c++linux后台服务器开发技术线的正确打开方式

随着业务市场的不断壮大,更便捷的开发语言也越来越受到市场的欢迎。Java,python还有新贵golang。 那c/c++语言的开发者市场在哪里。虽然说没有活干说的可能过于夸张,但是面临的事实就是比不了。可能初学一点Java,python等等就能找到一份不错的开发工作,但是如果你只会一点c,又不是校招的话,能找到哪些工作呢? C,c++不同于Java。Java的技术路线是比较固定的,学好技术栈等待新技术的更新,并学会它,那在薪资上至少不会少。而c/c++的话,不得不说,路子比较广。选择的方向比较...阅读全文

简书 2019.10.18 19:51:47 aside section . 等

使用 Go 处理中间件

简介 gin 的中间件 创建中间件 总结 当前部分的代码 简介 开发 web 应用的时候, 很多地方都需要使用中间件来统一处理一些任务, 比如记录日志, 登录校验等. gin 也提供了中间件功能. gin 的中间件 在项目创建之初, 就已经导入了一些中间件, 当时没有仔细介绍. g.Use(gin.Logger()) g.Use(gin.Recovery()) g.Use(middleware.NoCache()) g.Use(middleware.Options()) g.Use(middle...阅读全文

掘金 2019年10月18日 帅气猫咪

go 学习笔记之解读什么是defer延迟函数

Go 语言中有个 defer 关键字,常用于实现延迟函数来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". 延迟函数就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些资源清理等操作再合适不过了. 出入成双有始有终 日常开发编程中,有些操作总是成双成对出现的,有开始就有结束,有打开就要关闭,还有一些连续依赖关系等等. 一般来说,我们需要控制结束语句,在合适的位置和时机控制结束语句,手动保证整个程序有始有终,不遗漏清理收尾操作....阅读全文

掘金 2019年10月18日 雪之梦技术驿站

Golang net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"

简述今日用golang开发微信小程序 请求wechat服务接口碰到一个问题记录一下 请求发生了错误 用golang 标准库请求发生了错误 胡乱猜想协议不对 服务器挂了???之后用了postman 工具模拟请求了一下如下 并没有网络错误 此时之前猜想的微信服务器出了问题排除了。最后我仔细看了下请求的日志终于发现了问题 参数之间有了空格 原因参数之间有空格所以才会报net/http: HTTP/1.x transport connection broken: malformed HTTP statu...阅读全文

简书 2019.10.18 19:00:40 aside section . 等

Jenkins X--(3)具备什么样的加速能力

JENKINS X Jenkins X 重新构思了云原生时代下的 CI/CD 实现,这些想法受到了 DevOps 状态报告和近来大热的《Accelerate》一书的深刻影响,这本书的三位合著者分别是:Nicole Forsgren、Jez Humble以及Gene Kim。经年累月基于真实世界中的团队和组织收集上来的数据被 DevOps 领域的思想领袖和数据科学家们进行了深入的分析。《Accelerate》一书总结了一组有助于实施 DevOps 的能力,这些能力被 Jenkins X 实现以帮助...阅读全文

简书 2019.10.18 19:09:55 aside section . 等

golang自定义一个简洁而强大的错误追踪包

一. 前言 1.1 错误追踪需要了解的信息 错误提示语 错误的位置, 如:具体的文件名,错误行号和错误方法等. 1.2 实际情况 golang自带了错误信息包error 只提供了简单的用法, 如errors.New(),和errors.Error()用来传递和获取错误信息. 明显官方的包已经不能满足了, 只能采取其他方法补救, 如: 扩充官方包 自定义错误包 目前已经有很多人造了这个轮子, 同时也各有特色, 有简单的, 也有复杂的. 这里为了简单使用, 我便选择了扩充官方包, 做一个简单优雅的错...阅读全文

Segmentfault 2019-10-19 14:32:43 fizz

golang自定义一个简洁而强大的错误追踪包

## 一. 前言 ### 1.1 错误追踪需要了解的信息 - 错误提示语 - 错误的位置, 如:具体的文件名,错误行号和错误方法等. ### 1.2 实际情况 - golang自带了错误信息包`error` 只提供了简单的用法, 如`errors.New()`,和`errors.Error()`用来传递和获取错误信息. - 明显官方的包已经不能满足了, 只能采取其他方法补救, 如: - 扩充官方包 - 自定义错...阅读全文

Go语言中文网 2019-10-18 19:29:15 fizzday

go 学习笔记之解读什么是defer延迟函数

`Go` 语言中有个 `defer` 关键字,常用于实现**延迟函数**来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". **延迟函数**就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些**资源清理**等操作再合适不过了. ![go-error-about-defer.jpg](https://upload-images.jianshu.io/upload_images/16648241-fd49fdabb4...阅读全文

Go语言中文网 2019-10-18 19:21:25 snowdreams1006

生存还是毁灭?一文读懂挖矿木马的战略战术

前言比特币等虚拟货币在2019年迎来了久违的大幅上涨,从最低3000美元上涨至7月份的14000美元,涨幅达300%,巨大的金钱诱惑使得更多的黑产团伙加入了恶意挖矿的行列。阿里云安全团队通过对云上僵尸网络家族的监控,发现恶意挖矿已成为黑产团伙主要的牟利方式。2019年共监控到58个成规模的挖矿木马团伙(数据截止到8月底),以累积感染量定义木马活跃度,下图/表是活跃TOP10的木马家族及简介。本文尝试从宏观角度分析、总结挖矿木马常用技术及发展趋势,以期能够给企业安全防护带来启示。 核心观点木马投放...阅读全文

简书 2019.10.18 17:15:34 aside section . 等

go map实现

golang map的实现源码在文件 runtime/map.go中,map的底层数据结构是hash表。hash函数:通过指定的函数,将输入值重新生成得到一个散列值hash表:散列值会确定其键应该映射到哪一个桶。而一个好的哈希函数,应当尽量少的出现哈希冲突,以此保证操作哈希表的时间复杂度 接下来从下面三个方面讲解: map数据结构 map查找实现 map插入实现 1. map的数据结构定义 type hmap struct { count int //map存储数据的个数,len(map)使用 ...阅读全文

Segmentfault 2019-10-19 14:32:43 bunnyhuangw

go 学习笔记之解读什么是defer延迟函数

Go 语言中有个 defer 关键字,常用于实现延迟函数来保证关键代码的最终执行,常言道: "未雨绸缪方可有备无患". 延迟函数就是这么一种机制,无论程序是正常返回还是异常报错,只要存在延迟函数都能保证这部分关键逻辑最终执行,所以用来做些资源清理等操作再合适不过了. 出入成双有始有终 日常开发编程中,有些操作总是成双成对出现的,有开始就有结束,有打开就要关闭,还有一些连续依赖关系等等. 一般来说,我们需要控制结束语句,在合适的位置和时机控制结束语句,手动保证整个程序有始有终,不遗漏清理收尾操作....阅读全文

Segmentfault 2019-10-19 14:32:43 雪之梦技术驿站

Tekton Pipelines--Task

前言 Tekton Pipelines是一个开源实现,可为您的Kubernetes应用程序配置和运行CI / CD风格的管道。 Pipelines创建自定义资源作为构建块去声明Pipelines。 自定义资源是Kubernetes API的扩展,可以创建自定义Kubernetes对象。安装自定义资源后,用户可以使用kubectl创建和访问其对​​象,就像对pod,部署等内置资源一样。这些资源在集群上运行,并由Kubernetes自定义资源定义(CRD)实施。 关于此设计的高级细节: Pipeli...阅读全文

Segmentfault 2019-10-19 14:32:42 iyacontrol