随笔分类 - 技术思考
摘要:今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来。 做了这些周,对leetcode比赛的题目也发现了一些「规律」。 一般前两道题都很「简单」 ,只要有想法,直接敲代码就能解出来。更多考察的是结果是否正确,速度其次。 后两道题有些难度 ,不同场次难度不一样,
阅读全文
摘要:周日的比赛的时候正在外面办事,没有参加。赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方。 做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高。 理论和实际是有关系的,一些题目也都有现实意义。计算机的一些模拟操作,通过数学算法,能够大大减轻代码量和算法复杂度。 第一
阅读全文
摘要:这周比赛的题目很有特点。几道题都需要找到一定的技巧才能巧妙解决,和以往靠数据结构的题目不太一样。 就是如果懂原理,代码会很简单,如果暴力做,也能做出来,但是十分容易出错。 第四题还挺难想的,想了好久才想明白。这次先讲第四题,然后再讲其他的题目。 下面是详细的题解和思考。 比赛的地址 Weekly C
阅读全文
摘要:今天参加了leetcode的周赛,算法比赛,要求速度比较快。有思路就立马启动,不会纠结是否有更好的方法或代码可读性。只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了。 比赛时先看的第二题,一看题就有了思路,直接用的广度优先搜索,写完提交正确。再一看有人都做了3道题了,应该是职业选手了,要多像
阅读全文
摘要:在上一篇《如何高效工作——个人硬件篇》介绍了硬件层面提高的方法。即通过加快操作熟练性,升级办公用具的方法,提高工作执行速度。本质工作的流程和步骤不变,但是执行时间缩短。今天说的软件篇,里面介绍的方法,是优化工作执行的方式,让事情的解决效率,有指数级的提升。就像你用快速排序和用冒泡排序相比,优化了算法
阅读全文
摘要:前言 如何高效工作?对于每个想在工作中取得成就的人来说,都会问自己这个问题。之前公司也讨论过这个话题,觉得还是很重要的。这里介绍一些方法,希望能够对大家的高效工作有些帮助。主要分为两部分,个人和团队。涉及到三篇文章。个人——硬件篇、个人——软件篇、团队篇。要高效,我们要先从个人做起,把自身的效率提高
阅读全文
摘要:无论是哪种程序员,日常开发中都离不开记日志。但是通过最近的review会,发现很多程序员在记日志的时候,还是会有些问题。那么如何科学地记录日志呢? 为什么要记日志 在寻求方法前,我们先看看我们记日志的目标。日志是程序运行时的x光,能够追踪到程序运行的状态,通过日志,程序员能够加速调试速度,还原异常情
阅读全文
摘要:在学习《问题分析与解决》时学到了一种找到问题根源的方法——问五次为什么。具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题。最近在复盘bug的时候,也使用了这种方法,屡试不爽。 案例 前端发布后,页面按钮点击失效,用户反馈问题,前端回滚代码后恢复。
阅读全文
摘要:最近参加了多次的代码review会,在review的过程中,发现有些问题几乎每次都出现。挑了几个比较典型的问题讲解下。这几个问题都是初级问题,解决方法都很容易。只要掌握了方法,有意识避免,能让短时间内迅速提高代码质量。真所谓投入小,见效快。 变量命名不清晰,一词多义 为变量命名时最重要的考虑事项是,
阅读全文
摘要:人的精力、时间是有限的,在有限的资源下,如何能作出巨大的贡献,甚至是无限的贡献呢?就是要做重要的事,优先做重要的事。如何做到要事优先,尽可能产出更大的成果呢? 一、摆脱过去 1. 不要躺在过去的功劳簿上成功要依靠天时地利人和,还需要一点点运气。但是成功的人,大部分都认为是自己的努力,不愿意承认和运气
阅读全文
摘要:案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id。原因是修改了一个返回操作人姓名的函数,返回了操作人的id。但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员的id。该bug污染了一条修改记录,操作员手动删除就好了。回滚代码后恢复。本质是修改了函数的返回值,
阅读全文
摘要:转载请注明来源:程序员如何讲清楚技术方案 本文链接地址:https://www.owenzhang.net/blog/201.html 公众号二维码: 最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。 具体表现是: 上来不说需求,直接说算法实现。台下一头雾水
阅读全文
摘要:写国际化的程序,经常会遇到两种问题:字符编码、时间问题。今天我们就聊聊程序中如何处理时间问题。 首先,要了解一些基本的概念,只有对概念有清晰的掌握,才能明白解决方法。 基本概念 GMT时间:格林尼治标准时间(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文
阅读全文
摘要:Zookeeper基于ZAB(Zookeeper Atomic Broadcast),实现了主备模式下的系统架构,保持集群中各个副本之间的数据一致性。 ZAB协议定义了选举(election)、发现(discovery)、同步(sync)、广播(Broadcast)四个阶段。 选举(election
阅读全文
摘要:zookeeper实现了主动通知节点变化,原子创建节点,临时节点,按序创建节点等功能。通过以上功能的组合,zookeeper能够在分布式系统中组合出很多上层功能。下面就看几个常用到的场景,及使用方式和注意事项。 名字服务(NameService) 顾名思义,就是给分布式系统中的资源,使用人易于理解的
阅读全文
摘要:zookeeper(下文简写为zk)大家都不陌生。但是,看到很多同学对zookeeper的理解过于程式化,有些地方甚至需要背,是大可不必的。把本质理解了,概念性和功能介绍都可以推出来的,而且架构要活学活用,透过现象看本质,才能对技术和技术领悟有大的提升。下面来看下zk的功能及本质。 zookeepe
阅读全文