编程
柳清风09
这个作者很懒,什么都没留下…
展开
-
diff pprof heap
dump heapcurl -s http://127.0.0.1:8080/debug/pprof/heap > 1231.heap休息十分钟curl -s http://127.0.0.1:8080/debug/pprof/heap > 1241.heapdiffgo tool pprof --http :9090 --base 1231.heap 1241.heap耗费内存最多的并非是泄露的地方,这是一个容易混淆的地方!...原创 2021-02-08 14:43:17 · 1539 阅读 · 0 评论 -
rust学习笔记-变量和类型
变量通常一门的语言的变量是没有啥可以说道的,无法就是变量命名规则:以字母、下划线和数字组成,并且数字不能开头,没啥好说的。但rust的变量奇怪的地方是,变量不可变譬如这样一个简单到不能再简单的代码fn main() { let a =4; a = 3; println!("{}",a)}编译的时候就会报错3 | a = 3; | ^^^^^ cannot assign twice to immutable variable不能二次分配不可变变原创 2021-01-24 15:06:42 · 1185 阅读 · 0 评论 -
让我们开始rust (一)环境安装
为啥我想学rust呢?无它,没有gc的STW。既有c的速度,又具有安全的内存使用,还不用gc,why not try it!首先是rust运行时安装如果是mac非常方便brew install rust但如果还需要安装一些格式化如:rustfmt等组件的话,通过下面脚本安装curl https://sh.rustup.rs -sSf | sh 我这边是是vscode做rust开发,配置plugin,rust-analyzer这个插件使用起来还是挺方便的。配置完环境后,按照惯例开始我们第原创 2021-01-22 11:36:37 · 403 阅读 · 0 评论 -
再次思考一下go网络包中的接口设计
我们经常使用的http包,无论是客户端还是服务端,都有很多值得推敲的地方。首先是服务端设计;上上篇 我们通过监听一个UDS提供一个http服务,代码大概是这样的 unixListener, err := net.Listen("unix", os.Args[1]) if err != nil { panic(err) } server.Serve(unixListener)这里创建一个listener,然后交给serve去处理。这就体现了接口的作用,把监听交给服务去处理,这里监听其实只原创 2020-12-09 19:54:40 · 313 阅读 · 0 评论 -
通过unix socket建立http连接
除了我们熟知的tcp连接以外还可以通过本地socket建立通信,Unix Domain Socket的英文简称是UDS,就是一种常用的方式,但它只支持建立本地连接,它的好处是通过路径而非端口建立连接,好处是可以避免端口占用。首先看服务端代码package mainimport ( "fmt" "net" "net/http" "os")func main() { if len(os.Args) < 2 { fmt.Fprintln(os.Stderr, "usage:",原创 2020-12-05 16:00:27 · 2440 阅读 · 1 评论 -
轻松一刻,算法求最大蓄水面积
一个有意思的题目,求最大蓄水面积简单介绍一下,找到两个柱子,使其“蓄水”面积最大譬如Input: [1,8,6,2,5,4,8,3,7]Output: 49如果是直接暴力破解当然可以,两层for循环,组合所有可能,搞定当着肯定不是最好的方式,我们仔细思考一下,就会发现这个面积取决两个因素:长 * 宽这不是废话吗!当这个“水池”的左右两个边分别是开始和结束的柱子,那么它的长最大了,对...原创 2018-12-06 10:16:40 · 1360 阅读 · 0 评论 -
golang https server(二)
之前的blog介绍了https的单向认证流程,这里再介绍一下双向认证的过程。人多人没有理解双向认证的过程,这里先介绍一下认证流程 这里的ca证书其实是可以不一样的,这是很多人的误区,服务端证书用服务端的ca签名过后,客户端应该用服务的ca去认证,而不是客户端自己的ca,如果ca是相同的当然无所谓,下面是生成证书的过程服务端:openssl genrsa -out ca.key 2原创 2018-01-30 12:18:24 · 38302 阅读 · 0 评论 -
golang https server(一)
最简单的https server制作证书openssl genrsa -out server.key 2048openssl req -new -x509 -key server.key -out server.crt -days 365编写程序package mainimport ( "fmt" "net/http")func handler(原创 2017-07-26 09:51:25 · 28559 阅读 · 0 评论 -
编写一个http的调用链
这李借鉴我同事写的一个调用链,看看如果个一个请求加上一个调用链,这个其实在其它编程里面都会用到,如果熟悉拦截器的对此会应该会更有体会 先看看测试代码package mainimport ( "fmt" "net/http")func main() { http.ListenAndServe(":8080", regisry())}func Hell原创 2018-02-01 14:25:47 · 1490 阅读 · 0 评论 -
filebeat源码分析之采集
上面说到是启动,下面接着说日志采集回到启动的地方filebeat/prospector/prospector.go。func (p *Prospector) Run() { // 初始化 prospector 启动 p.prospectorer.Run() // 如果只运行一次就返回 if p.Once { return } for {原创 2017-12-09 18:10:44 · 39669 阅读 · 0 评论 -
基于go websocket写一个聊天室
上一篇介绍了一下go websocket,这篇blog主要是通过websocket写一个聊天室。 先写前端</style></head><body><div id="log"></div><form id="form"> <input type="submit" value="Send" /> <input type="text" id="msg" size="64"/>原创 2017-11-04 16:22:43 · 38062 阅读 · 0 评论 -
golang websocket 入门
我们先写一个最简单的go http服务package mainimport ( "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter,r *http.Request) { w.Write([]byte("hello world")) }) http.Liste原创 2017-11-04 15:35:26 · 39920 阅读 · 0 评论 -
迪克斯托最短路径算法
迪克斯托最短路径算法的原理很简单,主要是通过多次紧缩,更新两点之间最短距离 只能是单源无环图 Python实现如下:nodes = ('A', 'B', 'C', 'D', 'E', 'F', 'G')distances = { 'B': {'A': 5, 'D': 1, 'G': 2}, 'A': {'B': 5, 'D': 3, 'E': 12, 'F' :5},原创 2017-08-18 11:41:04 · 1122 阅读 · 0 评论