备注:本文中所有的示例代码均使用golang实现 在软件编程中,方法是被使用得最广泛的结构;也是出现问题最多的结构。方法接收一些参数(0个或多个),返回一些值(0个或多个)。...
备注:本文中所有的示例代码均使用golang实现 在软件编程中,方法是被使用得最广泛的结构;也是出现问题最多的结构。方法接收一些参数(0个或多个),返回一些值(0个或多个)。...
之前写了一片文章《Go语言如何修复十亿美金的错误(Null)》[https://www.jianshu.com/p/5381db35c901]。在该文中,我谈到了在Go中有三...
Null 引用一直是个坏主意,从来没发挥过什么正面作用。2020 年是 ALGOL 60 的 60 周年诞辰。ALGOL 60 让结构化编程真正落地,并为 Pascal、C ...
在所有的编程语言中,变量都是一个必备的概念;否则,计算机也就失去了意义。但是对于变量的值是否可以修改,却存在着不同的设计理念。我见过的有如下三种类型:一、变量随时可变变量,顾...
Go语言的哲学思想之一为:Do not communicate by sharing memory; instead, share memory by communicati...
之前写过一篇文章,介绍我使用kafka一段时间后的总结,Kafka应用总结[https://www.jianshu.com/p/116dcf542e0d]。里面有提到过回收服...
G(Go代码片段)一个G就代表一个goroutine,也与go函数相对应。作为编程人员,我们只是使用go语句向Go的运行时系统提交了一个并发任务,而Go的运行时系统则会按照我...
P(执行一个Go代码片段所必需的资源)P是G能够在M中运行的关键。Go的运行时系统会适时地让P与不同的M建立或断开关联,以使P中的那些可运行的G能够及时获得运行时机,这与操作...
M(内核线程)一个M代表了一个内核线程。在大多数情况下,创建一个新M的原因是没有足够的M来关联P并运行其中可运行的G。不过,在运行时系统执行系统监控或垃圾回收等任务的时候,也...
在介绍Go独特的线程模型之前,我们先来回顾下常见的三种线程模型。线程的并发执行是由操作系统来进行调度的,操作系统在内核提供对线程的支持。而我们在使用高级语言编写程序时候创建的...
在今年的两个项目中,为了处理大量的游戏日志,于是引入了kafka。经过一段时间的运行,现将整个应用的过程做一个记录和归档。 关于kafka Apache Kafka is a...
微博的兴起,带来了一个新的词语:短链。何谓短链?如果我们在微博里发布一条带网址的信息,微博会把里面的网址转化成一个更短的网址。我们只要访问这个短网址,就相当于访问原始的网址。...
@凌空一月 陈老师您客气了!对那个阶段的我来说,您已经给了我很多指导和帮助了;我们只是受限于社会整体的大环境。
教师节系列-高中教师篇现在是一个终身学习的时代。我忘记是谁告诉我这句话的,但是这么多年我一直对此坚信不疑;也因为自己在IT行业工作,面对着日新月异的技术,必须得保持不断地学习,才能避免自己在职业中...
现在是一个终身学习的时代。我忘记是谁告诉我这句话的,但是这么多年我一直对此坚信不疑;也因为自己在IT行业工作,面对着日新月异的技术,必须得保持不断地学习,才能避免自己在职业中...
设想一下以下的场景:1、在游戏中聊天,我们想要避免玩家不断地用相同的内容或只做微小调整的内容进行刷屏。我们需要判断玩家每次发的消息与过去几次的相似程度。2、在搜索引擎中,当用...
前几天实现了一个新版本的Go的超时锁;但是最近遇到一个问题,当一个对象的读取非常频繁时,往里面写入数据时,有可能在超时时间内都无法获得写锁。 为什么会这样呢?那是因为想要获取...
Go中提供了一种初始化数据和逻辑的方式:func init() {}。当我们要初始化配置文件,或者是要启动一个goroutine,都可以在对应模块的init方法中进行。而in...