golang
文章平均质量分 57
oe1019
这个作者很懒,什么都没留下…
展开
-
Go 1.18新功能
题记最近看到了Go 1.18的release,主要看下Go 1.18的三个新功能。multi-module workspacesgenericsfuzzing20% Performance Improvementsmulti-module workspaces简而言之,允许workspace内包含其他mod的代码$ mkdir workspace$ cd workspace$ mkdir hello$ cd hello$ go mod init example.com/hello原创 2022-04-10 21:44:41 · 280 阅读 · 0 评论 -
TDD golang实践上的部分个人经验谈
TDD在我看来,使用TDD的一个好处是避免在程序中加入无关的代码。参考一个TDD的定义和TDD的开发feature的流程如下:You are not allowed to write any production code unless it is to make a failing unit test pass.You are not allowed to write any more of a unit test than is sufficient to fail; and compilati原创 2022-04-09 20:07:26 · 302 阅读 · 0 评论 -
记录一个golang多线程协作
目标我们有goroutine A,B,C以及主进程MA,B,C和M通过errorch,finishCh和singalCh来互动, 从而实现M捕捉A,B,C中的异常,接受A,B,C全部完成的信号,或者是用户命令行的ctrl+CM需要等待A,B,C的结果并且M需要自旋等待, for { select { case err = <- ErrorCh: fmt.Println("Error msg") return err case <- FinishCh: fmt原创 2022-04-03 16:50:30 · 364 阅读 · 0 评论 -
一段golang反射和函数相互结合的代码
基于反射确定调用方法轮寻map确定方法调用附带返回值从而实现 基于反射的类操作和处理方法如果类A则方法A如果类B则方法B…相对于switch而言,我们可以把map m作为全局变量,实现变量注入package mainimport ( "fmt" "reflect")func goFunc2(f func(interface{}), i interface{}) { f(i)}func DoString(i interface{}) string { return "s原创 2021-10-23 21:48:02 · 85 阅读 · 0 评论 -
总结下混迹TWGC学到了什么?
本文背景前几天TWGC会上, 很多人对自己过去一年在参与开源项目过程中的心得体会与收获进行了总结。我总结能力不太行,姑且写下此文。权且算作鄙人从一个开源使用者,经历参与开源,贡献开源,到不才成为工作组副组长的过程中的部分收获。参考LF基金会的文章, 这里我把自己视为了一家“公司”。对自己的开源战略进行了规划,具体内容写在本文,仅供大家茶余饭后作为谈资。个人收获我把收获分为两个部分,技术水平和思考问题的方式。这里我并没有严格参考基金会文档中的直接和间接分类与定义。我会以如下格式记录书写,如果大家不原创 2021-02-06 23:36:11 · 750 阅读 · 1 评论 -
golang性能优化笔记(二)
背景基于前次的文章,继续对这个库进行力所能及的优化。现在,我们对于golang优化的基础有了一些基础的理解。比如:结合benchmark与pprof清理了代码中出现的重复逻辑初步探索了栈与指针对于内存和性能的影响我们继续来对代码进行优化,具体方法如下:Benchmark首先,为了更好的理解我们之前的结果,很体力活的为每个函数都加了Benchmark测试。指针BenchmarkSm2P256FromBig-16 3303530原创 2021-01-16 18:35:54 · 321 阅读 · 4 评论 -
golang性能优化笔记
记录一次golang代码优化实战之前从来没搞过golang的代码优化,机缘巧合,有个golang的开源项目有性能优化的需要。于是就拿来试试看golang代码的优化了。步骤一使用benchmark与pprof, 进行性能测试go test -cpuprofile cpu.prof -memprofile mem.prof -bench . --count=5pprof -http=":8091" ./cpu.prof步骤二观察代码,很多地方可以明确使用uint32却为定义变量类型。还有一些原创 2021-01-07 14:11:41 · 382 阅读 · 1 评论 -
树通过程序栈进行递归
学习目标:通过程序栈进行树的递归学习内容:利用程序栈的思维进行进出栈操作参考:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/学习时间:N/A学习产出:func f(root *TreeNode) *TreeNode { //临界处理,预防空指针 if root == nil { return root } // 执行 tmp := root.Left原创 2020-10-10 18:57:56 · 117 阅读 · 0 评论 -
leetcode每日一题2020/10/09
https://leetcode-cn.com/problems/linked-list-cycle/Given head, the head of a linked list, determine if the linked list has a cycle in it.There is a cycle in a linked list if there is some node in the list that can be reached again by continuously followi原创 2020-10-09 23:11:48 · 220 阅读 · 0 评论 -
leetcode每日一题2020/10/08
Write a function that reverses a string. The input string is given as an array of characters char[].Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.You may assume all the charac原创 2020-10-08 21:11:44 · 237 阅读 · 0 评论 -
go lang程序火图
文章目录我们要做什么https://github.com/google/gopshttps://github.com/google/pprofhttp://www.graphviz.org/我们要做什么整体来说分为三步准备gops代理准备工具启动工具https://github.com/google/gopsref http://www.coder55.com/article/86759我们需要在go代码中添加代理,使得程序可以被gops收集信息。package mainimpo原创 2020-08-14 19:25:50 · 386 阅读 · 0 评论 -
Ginkgo和tdd的一些总结
文章目录Basic usageFramework StructureCoding skillsBasic usagego get -u github.com/onsi/ginkgo/ginkgogo get github.com/onsi/ginkgo/ginkgogo get github.com/onsi/gomega/...ginkgo bootstrapginkgo generate $test_case_namego test -v ./...Framework Structur原创 2020-06-20 22:05:55 · 285 阅读 · 0 评论 -
Golang多线程 多个消费者处理
最近就一个情景用golang写了几个实现。情景:一个生产者,两个工作者,一个检查者。工作者和检查者的代码func (p *Processor) LoopChannel(input, output chan *Data, done <-chan struct{}) { for { select { case r := <-input: if r.Flag...原创 2020-03-24 19:37:44 · 2486 阅读 · 0 评论