
golang
文章平均质量分 67
baijiwei
做好产品, 写好代码
展开
-
Golang channel 的实现原理
Channel 是golang语言自身提供的一种非常重要的语言特性, 它是实现任务执行队列、 协程间消息传递、高并发框架的基础。关于channel的用法的文章已经很多, 本文从channel源码的实现的角度, 讨论一下其实现原理。关于channel放在: src/runtime/chan.go channel的关键的结构体放在hchan里面, 它记录了channel实现的关键信息。...原创 2018-02-25 13:48:26 · 3558 阅读 · 0 评论 -
Golang 实现并发架构
Golang 一个重要的优点就是可以容易实现并发的架构,它通过提供goroutine和channel的语言机制,很简单、方便的实现了这个优点。goroutine 机制goroutine简单理解就是轻量版的线程, 协程就是一个不由OS内核抢占调度,而由程序管理在用户态自管理的协作式“线程”,不用线程,就减少了OS的线程数,其优点:省去了cpu线程切换的开销;降低了内存消耗;提高了c...原创 2018-08-26 13:25:03 · 7213 阅读 · 0 评论 -
Golang mock 框架实践
Golang 有很多优秀的开源框架, 能够帮我们很方便的写出测试代码, 来模拟不同的场景。gomonkeygomonkey 是一种很简单的mock框架, 基于打桩函数的方式来进行mock不同的函数调用, 从而实现不同的场景的mock。 我们要测试一个函数, 而这个函数还调用了其他几个函数, 在测试代码中, 我们需要有代码调用上下文才能够使调用子函数成功, 但是通常, 调用上下文有可能...原创 2018-09-08 10:20:44 · 8562 阅读 · 1 评论 -
Golang RPC功能
RPC框架在分布式系统原创 2018-09-09 12:40:54 · 1037 阅读 · 0 评论 -
golang http使用踩过的坑与应对
golang对http进行了很好的封装, 使我们在开发基于http服务的时候, 十分的方便, 但是良好的封装, 很容易是的我们忽略掉它们底层的实现细节。 如下是我踩过的一些坑, 以及相应的解决方法。调用http服务正确的实践如下:resp, err := http.Get("http://example.com/")if err != nil { // han...原创 2018-12-15 09:56:02 · 7471 阅读 · 0 评论 -
Golang下基于XORM的mysql使用
最近工作中发现, 同样的一个数据库, 不同语言开发的模块, Golang模块在数据库域名对应的底层数据库发生切换, 能够自动连接,但是Java的不会, 为什么会有这样的差异哪?Golang的连接池Java的连接池...原创 2019-03-03 13:33:19 · 4093 阅读 · 0 评论 -
Golang 线上常见问题记录
Golang语言本身自带了垃圾回收机制, 理解其实现的原理, 能够帮助我们理解和写出高效的代码。原创 2019-06-15 12:57:06 · 515 阅读 · 0 评论