阅读:3359回复:0
Golang周报第二期:端口扫描、json瓶颈、slice修改、微服务课程升级
由于我们网站主做Go技术栈条线课程,在学员的建议下决定做个golang周报。定期写一些 golang相关知识点、好库推荐和个人观点的表达。希望大家喜欢,文风可能比较犀利,恐会引起不适。
每周不定期更新2篇左右。 第一期周报连接:Golang周报第一期:gorm2、微服务优势、云原生、好程序员 一、关于Go做一些“不可描述”的事 前两天有个群友问我 Go能不能做 类似端口扫描等事宜。 这其实和语言无关,知道原理任何语言都能做。Go在安全攻防这块也有相应社区而且执行性能很不错,譬如基础库有这个: https://github.com/marco-lancini/goscan 完成类似 主机发现,端口扫描和服务枚举等事宜 大家可以看看人家的源码。 尤其是扫描端口这块。 最简单的方法 就是穷举端口,然后开N个协程 去DialTcp 。 二、关于内置库的json库的性能瓶颈 标准库的JSON库 性能很一般。在高并发传输和请求中可能会有瓶颈,前阶段有个学员提交了个性能问题,用的JSONRpc。 jsonrpc在rpc角度上是没有问题的(性能),而且简单易维护。但可能瓶颈会出在标准库的json处理上。 GO的JSON第三方库也有一些 如easyjson, ffjson、jsonparser 等。 整体来讲用在http api 显示一些什么商品信息什么的问题不大,包括内置包。,如果涉及到rpc、大量数据传输、并发较高的情况下,还是推荐使用protobuf 。性能评测网上有的是。 三、关于Go和python互调 很多公司并不是只有一个Go技术栈。诺,有个群友公司就是python+Go技术栈,于是就有了一个问题,以前的一些祖传库是python写的。又不想重写,GO能不能调。 最“麻瓜”的方法是,用python+某个api框架+祖传代码发布成http api 当然我猜想那肯定听到这菊都觉得紧了。那么介绍个库 https://github.com/sbinet/go-python Python本身支持C API。go又有cgo 无缝调用C。 于是两者苟且就没这么难了 四、关于slice是引用类型为啥要修改时传参还是要传指针 func change(s []int) { s =s[1:] } arr := []int{1,2,3} change(arr) 结果不会有变化。 其实slice本身是个复合结构,底层表现是这样的 type slice struct { array unsafe.Pointer len int cap int } 传参时 依然是赋值slice这个struc对象,并没有修改外部的slice对象。 那么正确写法是 func change(s *[]int) { *s =(*s)[1:] } 五、关于(程序员在囧途教育)go-micro微服务课程技术栈升级公告 由于技术发展过于迅猛。 go-micro 微服务课程 在10月底 将升级技术栈和环境 1、将采用全新3.x (现在的是2.x) ,新版可能有些坑,到时候课程里再排 2、结合rancher+k8s 实地部署演示和开发 。不再进行单机部署 3、之前的一些微服务组件 依然不变 。如配置中心、自建网关、链路监控等 。 go-micro自带的一些组件 不如 一些市面上现成的好 4、正式做功能 ,其中http api部分 将使用我们自己开发的gin脚手架 。 5、前端部分 不变 (后台 可能考虑 使用 我们wasm课程封装的elementui 同款界面---待定) 6、结合ci/cd等 为了真实 ,请大家提前准备好 环境 (至少2台虚拟机)。 六、关于大佬是否不需要学技术和努力了? 这个问题来自一个群友。 灌个鸡汤吧 我有个小圈子微信群,都是我以前的同事、朋友、同行,有些年龄已经40+。大部分是中大公司的IT管理者或高级管理者,几乎每隔几天 半夜都会讨论技术栈(不是语言)、技术细节和技术趋势等。有时会为了某些细节 争论到3-4点,偶尔会产生“对骂”情景。 就连这些大佬对技术都这么执着,何况我们? |
|
最新喜欢:979163...
|