您的位置 首页 golang

Go周报2:端口扫描、json瓶颈、slice修改、微服务

由于我们网站(程序员在囧途)主做Go技术栈条线课程,在学员的建议下决定做个golang周报。定期写一些 golang相关知识点、好库推荐和个人观点的表达。希望大家喜欢,文风可能比较犀利,恐会引起不适。

每周不定期更新2篇左右。

第一期周报连接:

一、关于Go做一些“不可描述”的事

前两天有个群友问我 Go能不能做 类似端口扫描等事宜。

这其实和语言无关,知道原理任何语言都能做。Go在安全攻防这块也有相应社区而且执行性能很不错,譬如基础库有这个:

完成类似 主机发现,端口扫描和服务枚举等事宜

大家可以看看人家的源码。 尤其是扫描端口这块。 最简单的方法 就是穷举端口,然后开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

当然我猜想那肯定听到这菊都觉得紧了。那么介绍个库

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点,偶尔会产生“对骂”情景。

就连这些大佬对技术都这么执着,何况我们?

更多信息戳原文了解更多

文章来源:智云一二三科技

文章标题:Go周报2:端口扫描、json瓶颈、slice修改、微服务

文章地址:https://www.zhihuclub.com/100045.shtml

关于作者: 智云科技

热门文章

网站地图