网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
63. 图片压缩
当客户端上传一张图片的时候,通常用户不会在意上传文件的大小。而服务端接收文件的时候,首先要保证客户原始文件的正确保存,但是到图片被调用的时候,图片如果过大的话,会占用很大的带宽。于是有很多场景,要求服务端能够把图片变的小一点。那么需要有原始图片,有压缩率,有目标大小,还有输出图片。先写个提示__tips:=[]stri...
阅读全文
go中回调函数以及function types
参考了https://www.jianshu.com/p/fc4902159cf5的内容。首先回调函数是啥?从golang的官方文档得知functiontypes的解释是这样的。Afunctiontypedenotesthesetofallfunctionswiththesameparameterandresultty...
阅读全文
golang 模拟defer准确的释放一个对象中的大量资源(更新:20180418)
golang模拟defer准确的释放一个对象中的大量资源_更新记录:_2018-4-19:重写destroyer.RunDefer,用reflect包实现任意返回类型函数的调用_正文_golang中的defer关键字可以帮助程序员准确的释放资源,但是仅限于一个函数中。如果一个全局对象中存储了大量需要手动释放的资源,那么...
阅读全文
net.http三个坑的总结
0x00|Host当你发送一个请求给下游服务的时候,如果你发送请求的时候是IP,这个时候你想要通过Header里传递Host。但是,如果你只是在header头里设置Host:,你会发现下游服务收到的Host还是IP。。解决方案如下:__req,_:=http.NewRequest(method,url,bodyRead...
阅读全文
一个goroutine数据流任务的暂停⏸️与恢复⏯
熟悉go编程的同学,肯定都用过time.Sleep来暂停goroutine的执行,但是time.Sleep无法实现按照事件暂停和恢复。换句话说,你一旦设定了暂停时间,那后面的事情就由不得你了,你设了暂停10秒就是10秒,设了1分钟就是1分钟,而且你没法**“永远暂停”**下去。那么现在问题就来了,我有一个数据流的播放任...
阅读全文
go语言利用reflect存储函数和参数
go语言利用reflect存储函数和参数本文提供go语言中一种存储任意类型函数和参数的方法。源代码链接:思路利用_reflect.Value_类型存储多个任意类型的函数和任意类型的参数,以便在其他位置和时机执行。导入包存储类型使用_list.List_,因此需要导入_container/list_和_reflect_两...
阅读全文
64. 避免main.go文件代码行数过大
main函数这么多的HandleFunc如果也都写在main.go文件内的话,会让文件变的很大,也不好做后期维护。利用package同名,可以让main.go文件变的小一些,也能够很好的对代码使用分文件的方式管理,这样更方便维护。在main.go的main()函数中,有这么一行代码__http.HandleFunc("...
阅读全文
62. 同时接收数据和上传的文件
在客户端提交数据的时候,常常会需要同时提交文件。最常见的比如图片文件。那么服务端需要在接收数据的时候,同时处理文件的保存操作。本例,服务端采用go语言实现,客户端采用kotlinandroid端实现。在服务端的main.go文件中,构建接收客户端访问的监听。还需要一个静态文件路径upload。__http.Handle...
阅读全文
领域事件在微服务内的一个应用案例
领域事件Evans在《领域驱动设计》这本书中并没有给出领域事件的正式定义,这种模式是在该书出版之后才提出来的:>领域专家所关心的发生在领域中的一些事件>将领域中发生的活动建模成一系列的离散事件。每个事件都用领域对象来表示......领域事件是领域模型的组成部分,表示领域中发生的事情[Evans,>Ref,p20]eve...
阅读全文
用go语言给python3开发模块
实现方法概述因为go语言可以生成gcc可用的静态库,我们可以用go语言实现我们需要的功能,然后编译成静态库,再用C语言调用该静态库,包装成python3模块,然后编译成动态库供python3调用。实例下面用一个用go线程乱序打印五次字符串参数的函数作为示例。go程序文件名:tryme.go代码:__packagemai...
阅读全文
golang专有的gob序列化性能分析
为什么要分析gob序列化格式的性能我自己编的一个单向同步软件(),混合了`RPC`和`HTTP`服务器功能,利用`RPC`做控制功能,`HTTP`进行数据上传。最近我有意简化其构造,把其中的http上传功能也用`RPC`方式实现。但是我担忧会导致性能下降,因为通常对象序列化,将会导致数据量增加,例如`JSON`序列化后...
阅读全文
【golang】浅析类属性大小写区别
我们知道Golang里都是通过结构体Struct来定义类和相关属性的。这里有点需要注意的是,属性的首字母大小写表示的意义是不同的!go中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用。可以简单的理解成,首字母大...
阅读全文
ubuntu18.04 上编译 wxGo 的经验总结
本文所指的“wxGo”是特指“github.com/dontpanic92/wxGo/wx”,本人经历了多次失败后,终于成功编译好了wxGo,总结一下经验。1、准备工作首先从github下载源代码master.zip,大约有87M,然后解压到GOPATH/src/github.com/dontpanic92/wxGo。...
阅读全文
go技巧分享(一)
这是一个系列文章,主要分享go的使用建议和技巧,每次分享3点,希望你能有所收获。1命令行查看文档__$godocstrings.TrimfuncTrim(sstring,cutsetstring)stringTrimreturnsasliceofthestringswithallleadingandtrailingUn...
阅读全文
go语言path/filepath包之Walk源码解析
go语言的提供了很多兼容各个操作系统的文件路径实用操作方法,今天只来看看Walk方法:*Walk(rootstirng,walkFnWalkFunc)error该方法主要用于递归遍历目录:>>walk方法会遍历root下的所有文件(包含root)并对每一个目录和文件都调用walkFunc方法。在访问文件和目录时发生的错...
阅读全文