理解重构 重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。 在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论...
理解重构 重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。 在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论...
定时器 Go的定时器是在经过一段时间后做一些事情,位于标准库的time包。主要是time.Timer, time.Ticker和看起来不太明显的定时器time.Sleep。由...
什么是context 从go1.7开始,golang.org/x/net/context包正式作为context包进入了标准库。那么,这个包到底是做什么的呢?根据官方的文档说...
在上一篇文章 golang context初探 中,已经初步了解了context的用法以及应用的场景。那么接下来深入到源码中来学习一下context是怎么实现的。 empty...
最近在油管上面看了一个视频:Understanding nil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。 nil是什么 相信写过Golang的程序员...
本文译自:How To Close Channels in Golang Elegantly。几天前,我写了一篇文章来说明golang中channel的使用规范。在reddi...
跳跃表 自我感觉跳跃表就是分层的链表,为了达到二分查找的时间效率,跳跃表提出了层的概念,每一层也是一个链表。 如果能达到第一层的个数是0层的一半,2层的个数是1层的一半,n层...
第一次1的后面一位是2,除掉偶数位后,1的后面是3,3的后面是5 每次除掉一轮,1与后面一位的距离是2的n次方,所以最后剩下的那个数一定是1 + 2^(n)次方因为只有100...
有100本书,每次可以拿1本,2本,...,5本。A,B两个人比赛,谁最后拿到书谁就胜利。假设你是A,怎么样才能保证自己赢? 分析:如果A想赢,则倒数第二个人必然拿不完剩下的...
redis是单线程的,为什么又那么快。。研究了下事件处理的源码,画出了下图:
1、对于出现两次的元素,使用“异或”操作后结果肯定为0,那么我们就可以遍历一遍数组,对所有元素使用异或操作,那么得到的结果就是两个出现一次的元素的异或结果。 2、因为这两个元...
一.问题描述 一只青蛙正在过河。 河流分为x个单位,每个单位可能存在或不存在石头。 青蛙可以跳到石头上,但不能跳入水中。 给出按照升序排序的石块位置(单位),确定青蛙是否能够...