网站首页 返回列表 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。

Middleware in Golang
2020-06-10 11:40 admin golangMiddleware

有时候我们需要统计webservice接口的数据,比如记录日志、统计API调用时间、或者对HandleFunc进行错误处理,这个时候,middleware就很有帮助。最初版本我们目前有个程序,监听8080端口,提供两个接口,__1.compute:进行计算,耗时在500ms-1000ms之间2.version:得到版本...
阅读全文

golang追加内容到文件末尾
2020-06-10 11:40 admin golang末尾

golang读写文件,网上很多教程了但是今天有个需求,想要把内容追加写到文件末尾google了好久,没有查到研究了一会儿file库,终于让我找到(蒙到)了追加的办法最主要的2个函数:`func(f*File)Seek(offsetint64,whenceint)(retint64,errerror)``func(f*F...
阅读全文

Golang hashmap 的使用及实现
2020-06-10 11:40 admin golanghashmap

基本语法定义hashmap变量由于go语言是一个强类型的语言,因此hashmap也是有类型的,具体体现在key和value都必须指定类型,比如声明一个key为string,value也是string的map,需要这样做__varmmap[string]string//声明一个hashmap,还不能直接使用,必须使用ma...
阅读全文

golang的系统监控
2020-06-10 11:39 admin golang系统监控

golangRuntime三⼤组件,**内存分配器、垃圾回收器、Goroutine调度**,实际上除此之外还有系统监控这样⼀个任务再后台⼀直在跑,它做些什么事呢?强制垃圾回收确保垃圾回收肯定被执⾏,因为垃圾回收器可能会因为某种原因没办法触发,最简单的例⼦在⾼峰期的时候分配很多对象,这些对象都是活着,垃圾回收完了以后这些...
阅读全文

Golang 中的并发限制与超时控制
2020-06-10 11:37 admin golang超时

前言上回在里提及过,我们做Golang并发的时候要对并发进行限制,对goroutine的执行要有超时控制。那会没有细说,这里展开讨论一下。以下示例代码全部可以直接在[TheGoPlayground](https://link.jianshu.com?t=https%3A%2F%2Fplay.golang.org%2F)...
阅读全文

golang channel 源码剖析
2020-06-10 11:37 admin golang源码

**channel**在golang中是一个非常重要的特性,它为我们提供了一个**并发模型**。对比锁,通过**chan**在多个goroutine之间完成数据交互,可以让代码更简洁、更容易实现、更不容易出错。golang的**channel**设计模型遵循**CSP(CommunicatingSequentialPr...
阅读全文

深入Golang Runtime之Golang GC的过去,当前与未来
2020-06-10 11:36 admin golangruntime

对于学习Java的开发来说,GC并不陌生,实际上Go的GC流程与Java的CMS实现上不尽相同,但是流程基本类似.而对于公司大部分C/C++的开发者来说,习惯了尽量使用栈对象,手动管理内存,尽量少new,对GC的一些术语,流程可能就有点陌生了,或许可能对GC有一些些怀疑(实际上20世纪90年代后诞生的,得到广泛应用的语...
阅读全文

一探B站后台架构, 他山之石, 何以攻玉? -- 仅从一个一线Golang开发者的角度谈B站4.22代码
2020-06-10 11:36 admin golang攻玉

4月22日,B站部分后台源代码因为某愤怒的员工,被上传至Github.本文我们不讨论安全,法律(根据代码漏洞,去恶意攻击或者获利是违法的!我们工作时也要注意代码安全),我仅从开发者的角度谈谈,这份代码我们能学到什么?B站Golang生态建设,代码规范,工具建设,技术栈选择,对于Go在部门或公司的推广又有哪些值得借鉴?首...
阅读全文

golang基于etcd实现分布式锁
2020-06-10 11:36 admin golangetcd

我们希望同一时间只有一个线程能够访问到资源,但是分布式资源点之间的协调会非常麻烦,这个时候我们就需要一个分布式锁。etcd分布式锁实现原理:1.利用租约在etcd集群中创建一个key,这个key有两种形态,存在和不存在,而这两种形态就是互斥量。2.如果这个key不存在,那么线程创建key,成功则获取到锁,该key就为存...
阅读全文

Debug Golang With Delve
2020-06-10 11:21 admin golangDebug

Golang在其官方说明>NotethatDelveisabetteralternativetoGDBwhendebuggingGoprograms>builtwiththestandardtoolchain.ItunderstandstheGoruntime,data>structures,andexpression...
阅读全文

Golang通过HTTP Response获取Zip文件
2020-06-10 04:17 admin golangHTTP

本来计划至少一周总结一次学到的东西,不过好像没有实现啊?一看时间都4月1号了,一个月了,总该写点啥最近运气不好,出了很多事情,虽然都是不足为外人道的东西,但确实影响心情,希望大家每天都能开开心心的今天写一下前几天遇到的一个需求:通过一个URL获取用户信息的zip文件不涉及过多业务内容的话,就是要写一个小Demo,通过一...
阅读全文

Golang回调函数实例二则
2020-06-10 04:16 admin golang实例

1.定义回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。2.机制*定义一个回调函数*提供函数实现的一方...
阅读全文

golang cron 定时任务使用
2020-06-10 04:16 admin golangcron

1、cron表达式的基本格式__用过linux的应该对cron有所了解。linux中可以通过crontab-e来配置定时任务。不过,linux中的cron只能精确到分钟。而我们这里要讨论的Go实现的cron可以精确到秒,除了这点比较大的区别外,cron表达式的基本语法是类似的。(如果使用过Java中的Quartz,对c...
阅读全文

Golang 优化之路——空结构
2020-06-10 04:16 admin golang之路空

写在前面开发hashset常用的套路:__map[int]int8map[int]bool我们一般只用map的键来保存数据,值是没有用的。所以来缓存集合数据会造成内存浪费。空对象空对象是个神奇的东西。它指的是没有字段的结构类型。__typeQstruct{}它牛逼的地方在于:*可以和普通结构一样操作__vara=[]s...
阅读全文

Golang比较两个slice是否相等
2020-06-10 04:16 admin golangslice

ComparetwostringslicesinGoLang开发中经常会遇到需要比较两个slice包含的元素是否完全相等的情况,一般来说有两个思路:*`reflect`比较的方法*循环遍历比较的方法这里用检查两个字符串slice是否相等的例子来测试一下这两种思路的效率我当然知道你知道reflect方法效率更差啦refl...
阅读全文
顶部 底部