不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

核心

  • 01:面对问题时,用思考框架问问自己,现状、目标和路径。
    1
    2
    3
    Where are we?(我们现在在哪?)
    Where are we going?(我们要到哪儿去?)
    How can we get there?(我们如何到达那里?)
  • 02:遇到事情,倒着想。
  • 03:在做任何事之前,先定义完成的标准。
  • 04:在做任何需求或任务之前,先定好验收标准。
  • 05:尽早提交代码去集成。
  • 06:默认所有需求都不做,直到弄清楚为什么要做这件事。
  • 07:扩大自己工作的上下文,别把自己局限在一个“程序员”的角色上。
  • 08:在动手做一件事之前,先推演一番。
  • 09:问一下自己,我的工作是不是可以用数字衡量。
  • 10:设计你的迭代0清单,给自己的项目做体检。
  • 11:动手做一个工作之前,请先对它进行任务分解。
  • 12:多写单元测试。
  • 13:我们应该编写可测的代码。
  • 14:将任务拆小,越小越好。
  • 15:按照完整实现一个需求的顺序去安排分解出来的任务。
  • 16:要想写好测试,就要写简单的测试。
  • 17:想要管理好需求,先把需求拆小。
  • 18:尽量做最重要的事。
  • 19:做好产品开发,最可行的方式是采用 MVP(最小可行产品)。
  • 20:通过沟通反馈,不断升级自己的编解码能力。
  • 21:用业务的语言写代码。
  • 22:多面对面沟通,少开会。
    1
    2
    3
    我昨天做了什么?  
    我今天打算做什么?
    我在过程中遇到了什么问题,需要请求帮助。
  • 23:多尝试用可视化的方式进行沟通。
  • 24:做好持续集成的关键在于,快速反馈。
  • 25:定期复盘,找准问题根因,不断改善。
  • 26:多走近用户。
  • 27:事情往前做,有问题尽早暴露。
  • 28:多输出,让知识更有结构。
  • 29:请谨慎地将工作自动化。
  • 30:将你的工作过程自动化。
  • 31:有体系地学习运维知识。
  • 32:将部署纳入开发的考量。
  • 33:将验收测试自动化。
  • 34:把函数写短。
  • 35:构建好你的领域模型。
    1
    2
    3
    4
    5
    6
    7
    万维钢有期节目里提到芯片设计时讲到了分层以及模型的概念。分层或模型,实质是因为人的认知能力有
    限不得已而为之的。学习计算机,我们都知道晶体管,即便早就忘了它的原理。实际上晶体管涉及非常深
    奥的物理学知识,这是绝大多数人一辈子都不需要了解的物理学。抛开复杂艰深的物理学,晶体管的本质
    却很简单,它就是一个包含通和不通两个状态的开关,这就是它构建的模型。
    在开关的模型基础之上,信息论的创立者香农用一篇硕士论文构建了逻辑门这层。他证明了可以用最简单
    的开关,实现所有逻辑运算。
    逻辑运算层次之上,就是我们所知道的CPU模型。再往上,就是我们所熟悉的信息世界
  • 36:用简单技术解决问题,直到问题变复杂。
    1
    2
    3
    4
    一方面,有人会因为对业务量级理解不足,盲目低估其他人系统的复杂度;另一方面,也有人会盲目应用技
    术,给系统引入不必要的复杂度,让自己陷入泥潭。
    作为拥有技术能力的程序员,我们都非常在意个人技术能力的提升,但却对在什么样情形下,什么样的技术
    更加适用考虑得不够。采用恰当的技术,解决当前的问题,是每个程序员都应该仔细考虑的问题。
  • 37:学习领域驱动设计。
  • 38:了解一个项目,从大图景开始。
  • 39:小步改造遗留系统,不要回到老路上。
    1
    2
    3
    4
    构建测试防护网,保证新老模块功能一致;
    分成小块,逐步替换;
    构建好领域模型;
    寻找行业中关于系统构建的最新理解。
  • 40:在学习区工作和成长。
    1
    2
    3
    4
    5
    从目前的发展来看,IT 行业依然是一个非常有前景的行业,但想在这条路上走好,需要我们成为 “T ”型
    人才,也就是“一专多能”。一专多能的前提是“一专”,让自己成为某个方面的专家。这个专家要放在行
    业的标准去看,这才能降低因为一个公司的波动而造成的影响。
    成为行业专家,要向行业的大师学习,给自己定下一个高的目标,然后是脚踏实地,找适合自己的问题去解
    决,让自己一直在学习区成长。

答疑解惑

单元测试做不好,是否会影响到 CI 的效果?

1
2
CI 作为一个单独的实践,本身是很简单的,但它可以成为提纲挈领的主线,帮助团队不断改善自己
的开发过程。
阅读全文 »

题目

905. Sort Array By Parity

解析

  • Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution(object):
def sortArrayByParity(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
i, j = 0, len(A) - 1
while i < j:
if A[i] % 2 > A[j] % 2:
A[i], A[j] = A[j], A[i] #互换

if A[i] % 2 == 0: i += 1
if A[j] % 2 == 1: j -= 1

return A
阅读全文 »

问题描述

有一个仓库A,我经过fork后变成了仓库B,当仓库A已经有了新提交时,我需要更新仓库B,该怎么办呢?

解决

1,首先,检查一下当前的配置,看看当前有没有已经设置了上游,这要使用git remote -v命令。

2,将原repository设置为自己fork出的repository的上游(upstream)。运用如下的命令:

阅读全文 »

介绍

直播内容:主要讨论周洋在360做的消息推送系统,主要分为以下几个部分:

  • 关于push系统对比与性能指标的讨论~
  • 消息系统架构介绍
  • 哪些因素决定了推送系统的效果?
  • go语言开发问题与解决方案
  • 消息系统的运维,测试

直播开始

360消息系统更确切的说是长连接push系统,目前服务于360内部50多个产品,开发平台数千款app,也支持部分聊天业务场景,单通道多app复用,支持上行数据,提供接入方不同粒度的上行数据和用户状态回调服务。
目前整个系统按不同业务分成9个功能完整的集群,部署在10个idc上(每个集群覆盖不同的idc),实时在线2亿量级.
通常情况下,pc,手机,甚至是智能硬件上的360产品的push消息,基本上是从我们系统发出的,期望大家收到的push都是自己关心的… 如果不是,请相信,“我们不生产消息,我们只是消息的搬运工”~
很多同行比较关心go语言在实现push系统上的性能问题,单机性能究竟如何,能否和其他语言实现的类似系统做对比么?甚至问如果是创业,第三方云推送平台,推荐哪个?
其实各大厂都有类似的push系统,市场上也有类似功能的云服务。包括我们公司早期也有erlang,nodejs实现的类似系统,也一度被公司要求做类似的对比测试。
我感觉在讨论对比数据的时候,很难保证大家环境和需求的统一,我只能说下我这里的体会,数据是有的,但这个数据前面估计会有很多定语~

阅读全文 »

题目

two-sum

解法

简单题。常规解法(解法1),用两个for循环来做,第一个循环从数组nums下标为0开始遍历,第二个循环从数组下标1开始遍历,如果没找到两数之和的target值,就将两个循环的下标加1,继续循环,直到找到目标值,返回结果并退出。

Golang

阅读全文 »

昨天是中国的传统节日端午节,也是2019年高考的第一天。

她在端午节前一天下午来到了成都,我们相遇了,是的,相隔三千公里远外长达十个月的异地恋,终于宣告结束了。

端午节这一天,我们把房子整体收拾了一下,该扔的扔,该买的买,中午吃的冒菜,晚上买了鸭肉,虾尾,酸奶和啤酒庆祝。

今天是高考第一天,想起2014年我参加高考时,第一场语文作文后半段写的有些急,字都飞了起来;第二场数学填空选择做的很好,后面大题做的糟糕;第三场英语作文写的还可以;第四场理综一般般。后来回学校估分觉得应该能上个一本。

后来高考成绩公布,与我估分的偏差有些大,但还是能上个二本,然而我不甘心,思考着是复读还是去上大学。后来决定还是去上大学,因为我厌恶了高考那压抑的生活。

阅读全文 »