Golang之利用反射精简代码

反射是 Go 语言中非常重要的一个知识点。反射是设计优雅程序的法宝,orm json 序列化,参数校验都离不开它,我们今天以一个业务开发中的实例,来简单讲解下反射在日常开发中的用处。 本文使用的 case 皆为项目开发中的实例,为了脱敏简化了代码 相信大家在使用 go 编写业务代码的时候都会写过这样的代码,这类...

阅读更多

Golang之公钥解密

正常的加解密场景是,公钥加密 / EncryptPKCS1v15,私钥解密 / DecryptPKCS1v15; 但是总有一些奇怪的需求和场景,会颠倒这种用法,需要使用私钥加密,公钥解密; openssl中确实也有提供这种方法,但是go可能受不了这种混乱的用法,crypto库并没有提供现成的方法。 实现 先不...

阅读更多

TODO LIST 2020

年底了,看了大佬们2019年度总结,觉得自己又度过了浑浑噩噩的2019年😭 为了对抗死线和拖延症,有了做一下2020年的todo list的必要。 主线任务 1、每个月更新一篇博客(0/12) 2、更新一篇游记(0/1) 3、通过日语N2测试(0/1) 4、拿到驾照(0/1) 支线任务 1、看完几本书(0/8...

阅读更多

关于BOM

BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。 起因 最近在对接一个三方项目,接口在接受三方上报的数据,解析json数据时报了个奇怪的错误。 接口是由golang写的,从http POST数据中读取字节数据,json...

阅读更多

Golang之Go Modules机制

在PHP或者JAVA等语言的项目中,都有很多成熟的版本依赖包管理工具,比如Gradle,Composer等,非常方便,都快被惯坏了呢~ 但是在之前的Golang版本中,并没有官方提供的版本依赖包管理工具,大家都是通过go get获取最新版的依赖,获取的依赖都会挤在GOPATH目录下,非常混乱,而且我们并不知道最...

阅读更多

Golang之跨平台交叉编译

交叉编译是在一个平台上生成另一个平台上的可执行代码。 同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。 什么是交叉编译 众所周知,Golang开发的项目,部署起来非常简单,将编译好的二进制文件直接丢到服务器上就可以运行了; 开发过程中,每个开发者可能习惯...

阅读更多

BaaS与IaaS、PaaS、SaaS的区别和关系

如何理解BaaS? 最近经常能听到BaaS这个词,越来越多的公司也陆续推出BaaS服务,如何理解BaaS BaaS(Backend as a Service):后端即服务。公司为移动应用开发者提供整合云后端的边界服务。随着移动互联网的发展,移动行业的分工也会像其它行业一样逐渐细化,后端服务就是这...

阅读更多

5分钟理解HTTP,TCP,UDP,Socket,WebSocket的关系

一、这一大堆关键词之间到底有啥区别? 有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCP和Socket搞混,更加会纠结TCP连接与Socket连接以及HTTP的长/短连接之间到底有啥区别。 其实有了区别...

阅读更多