![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 67
yyyyyhu
这个作者很懒,什么都没留下…
展开
-
巧用golang的context减少方法传参
context是很强大的,我们可以将自定义的参数塞到context内向下传递,通过Function type来优化我们的代码,使代码可读性更高原创 2022-01-25 16:08:16 · 1878 阅读 · 1 评论 -
什么是RPC
RPC Remote Procedure Call,翻译成中文为远程过程调用,它实际上是一种思想,简单说就是本机调用一个函数,但是这个函数是在另一台机器上执行的,这种编码方式就像在本地执行一次函数调用一样。如上图所示,以一个简单的a+b为例,要执行一个a+b的函数,入参为a、b,函数返回a+b的值。用RPC思想来描述,将这个func封装在server端,这时候只需要在client端将参数a和b打包,放到一个数据包里,通过网络的方式发给服务端,服务端运行完后再将结果打包到数据包内,发回给client,原创 2021-05-25 23:13:26 · 483 阅读 · 0 评论 -
短链的思考
背景周末在和同学吃饭的时候提到了短链,短链不是我们常说的http长链接、短链接,而是一个短url。在日常生活中其实经常能看到短链,比如收到推广短信里面的链接,为了节省费用,往往都是以短链形式存在。因此,短链是一个非常有意义的服务。那么,如果要设计一个短链系统,需要考虑哪些东西呢?需求作为短链,最基本的要求就是要能跳转、跳转正确了,因此第一个需求,短链需要保证不重复。再提高些要求,点击短链后会去一个目的地址,这个跳转要快一些,不然用户等待久了也会失去耐心,因此第二个需求是短链跳转要低延迟。原创 2021-05-24 21:18:51 · 532 阅读 · 0 评论 -
failed to unmarshal the received message proto问题排查
前言突然发现已经有很久没有登录过csdn了,工作后一直很忙,没有什么时间来写博客,平日学习、踩坑往往都是自己简单记录一下,但实际上经常写博客还是有必要的,一方面可以加深自己的理解,另一方面,也可以不断强化文档书写能力。背景由于公司部门较多,语言也各不相同,跨部门协作基本都是通过gRPC协议(proto文件足够通用和认可),因此公司有一个统一API仓库,暂且叫作common。对于各业务方来说,只需要保证自己项目内的proto文件与common仓库自己路径下的proto文件一致即可。早期主站各业原创 2021-04-23 06:16:39 · 2777 阅读 · 0 评论 -
golang中defer的理解与使用
defer,即延迟调用,是Go语言的一大特色。defer代码块会在函数调用链表中增加一个函数调用,在函数正常返回,即return返回之后,增加一个函数调用。因此,defer常用来回收资源,哪怕程序执行有错误,依然能够保证回收资源等操作能够执行。它的使用有三条规则:当defer被声明时,其参数就会被实时解析 defer执行顺序,为先进后出 defer可以读取有名返回值那么这三条规则具体...原创 2019-12-09 23:07:26 · 1176 阅读 · 1 评论 -
大数据量请求查询数据库优化思考
业务场景:任务体系越来越受到活动的青睐,例如最近的淘宝和京东双十一活动,都是采用任务类型的活动,我司近几个月的活动也多采用类似的任务体系,分享、关注、点赞、投币、投稿等,既然是活动,就限制了活动的范围是活动稿件或指定稿件上的点赞/投币行为,因此Job监听用户点赞、投币时,需要查询点赞或者投币的是否是活动稿件。在数据库中,稿件业务方有单独的表,但是如果是活动稿件,也会进入活动单独的活动稿件表...原创 2019-10-29 22:38:46 · 628 阅读 · 0 评论 -
CAP定理整理
CAP定理是分布式系统设计中最基础、最关键的理论,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得CAP的定义Consistency (一致性):“all nodes see the same data at the...原创 2019-09-30 10:19:23 · 302 阅读 · 0 评论 -
日常工作总结(二)
之前写过一个go日常使用的总结文章,最近刚忙完一个活动,想再总结一下,发现归类为go有些片面,不仅仅涉及到go,而且更多的可能是代码的书写规范或者追求更好的书写方式,因此索性变成日常工作总结好了~表设计问题:主要针对InnoDB存储引擎,库名、表名、字段名、索引名必须使用小写字母,并且不能以MySQL关键字命名这个不需要多说,在建表时候所有的表都应该携带ctime(创建时间)和mtime(...原创 2019-08-24 21:01:18 · 789 阅读 · 0 评论 -
golang类型转换与类型断言
类型转换在程序设计中都是不可避免的问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编译器不会代你去做这个事。我之所以说通常需要手动转换,是因为interface类型作为一个特例,会有不同的处理方式。golang中的所有类型都有自己的默认值,对此我做了个测试。$GOPATH/src...转载 2019-08-11 21:10:46 · 830 阅读 · 0 评论 -
go日常使用总结
前言不知不觉入职也有1个月了,逐渐习惯了使用go语言开发,也在使用中遇到一些问题,就当作是月度总结好了。总结1. sql相关sql单引号拼接问题:尽量不要直接用%s、%d、%v之类的拼值,先拼?,?,?,?,然后直接传值,走sql包的赋值,会自动过滤sql注入,用可变参数的…展开参数。即使用2个切片,一个string类型切片,用来存储(?,?,?),一个空接口接收任意类型的切片...原创 2019-07-31 22:27:46 · 330 阅读 · 0 评论 -
golang学习
时间过的真快,不知不觉离校都半个月了,今天上了下博客才发现好久没更新了,尤其是现在就在用的golang。想着之前还能悠闲的看看go整理整理,现在每天都是重构和跟进新需求,没时间完善之前的整理,只能说一下刚入门的使用感受以及学习方法。首先,go的语法的确很简单,相比于C++、Java,少了非常多的东西,因此上手也会比较速度,只是可能写惯了Java,一时间不太容易改变编程习惯,如类型是在变量名之后...原创 2019-07-10 22:47:10 · 204 阅读 · 0 评论 -
golang(二)数据(上)
字符串字符串是不可变字节(byte)序列,本身是一个复合结构。默认以UTF-8编码存储unicode字符。它的默认值是“”,而不是nil。字符串底层就是⼀个byte数组,所以可以和[]byte类型互相转换。使用“ ‘ ”定义不做转义处理的原始字符串,支持跨行。func main() { s := 'line\r\n, line 2' println(s...原创 2019-04-01 16:46:05 · 215 阅读 · 0 评论 -
golang(一)初识go
go简介go语言诞生自2006年,于2009年发布并开源,2012年出现了第一个正式版本。近些年招聘中,go语言算是个小众岗位,只有少数大厂有招聘需求,如阿里,百度,京东等,由于它的特性,一般是高并发项目的优先选择。go语言特性:1. 垃圾回收a. 内存自动回收,再也不需要开发人员管理内存b. 开发人员专注业务实现,降低了负担c. 只需要new分配内存,不需要释放2. 天然并...原创 2019-03-27 16:30:15 · 433 阅读 · 0 评论