摘要: 无论是哪种程序员,日常开发中都离不开记日志。但是通过最近的review会,发现很多程序员在记日志的时候,还是会有些问题。那么如何科学地记录日志呢? 为什么要记日志 在寻求方法前,我们先看看我们记日志的目标。日志是程序运行时的x光,能够追踪到程序运行的状态,通过日志,程序员能够加速调试速度,还原异常情 阅读全文
posted @ 2019-01-30 21:55 owenandhisfriends 阅读(2529) 评论(1) 推荐(6) 编辑
摘要: 在学习《问题分析与解决》时学到了一种找到问题根源的方法——问五次为什么。具体内容是:当遇到一个问题,不要只看当前答案,要继续往下问,为什么,连问五次,就能够找到更深层次的问题。最近在复盘bug的时候,也使用了这种方法,屡试不爽。 案例 前端发布后,页面按钮点击失效,用户反馈问题,前端回滚代码后恢复。 阅读全文
posted @ 2019-01-25 22:04 owenandhisfriends 阅读(1082) 评论(3) 推荐(2) 编辑
摘要: 最近参加了多次的代码review会,在review的过程中,发现有些问题几乎每次都出现。挑了几个比较典型的问题讲解下。这几个问题都是初级问题,解决方法都很容易。只要掌握了方法,有意识避免,能让短时间内迅速提高代码质量。真所谓投入小,见效快。 变量命名不清晰,一词多义 为变量命名时最重要的考虑事项是, 阅读全文
posted @ 2019-01-23 12:59 owenandhisfriends 阅读(2191) 评论(6) 推荐(5) 编辑
摘要: 人的精力、时间是有限的,在有限的资源下,如何能作出巨大的贡献,甚至是无限的贡献呢?就是要做重要的事,优先做重要的事。如何做到要事优先,尽可能产出更大的成果呢? 一、摆脱过去 1. 不要躺在过去的功劳簿上成功要依靠天时地利人和,还需要一点点运气。但是成功的人,大部分都认为是自己的努力,不愿意承认和运气 阅读全文
posted @ 2018-12-23 20:04 owenandhisfriends 阅读(1024) 评论(0) 推荐(0) 编辑
摘要: 案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id。原因是修改了一个返回操作人姓名的函数,返回了操作人的id。但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员的id。该bug污染了一条修改记录,操作员手动删除就好了。回滚代码后恢复。本质是修改了函数的返回值, 阅读全文
posted @ 2018-12-16 20:03 owenandhisfriends 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 转载请注明来源:程序员如何讲清楚技术方案 本文链接地址:https://www.owenzhang.net/blog/201.html 公众号二维码: 最近在评审技术方案,和代码review的时候,遇到刚入行的同学们,很多都讲不清楚技术方案。 具体表现是: 上来不说需求,直接说算法实现。台下一头雾水 阅读全文
posted @ 2018-12-05 22:14 owenandhisfriends 阅读(11290) 评论(12) 推荐(21) 编辑
摘要: 写国际化的程序,经常会遇到两种问题:字符编码、时间问题。今天我们就聊聊程序中如何处理时间问题。 首先,要了解一些基本的概念,只有对概念有清晰的掌握,才能明白解决方法。 基本概念 GMT时间:格林尼治标准时间(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文 阅读全文
posted @ 2018-11-25 14:35 owenandhisfriends 阅读(900) 评论(2) 推荐(2) 编辑
摘要: 如无必要,勿增实体。 过早的优化是万恶之源。 背景 一个抽奖活动,要求在展示奖品股票时,显示股票价格。开发在实现这个功能的时候,用redis缓存每只股票的价格,每两小时调用行情服务更新一次。 问为什么要做个缓存,而不是直接访问行情服务直接读取,给出了几个理由: 但是这些理由都站不住脚,直接访问行情服 阅读全文
posted @ 2018-11-07 22:13 owenandhisfriends 阅读(1168) 评论(2) 推荐(2) 编辑
摘要: 又到了一年一度的校园招聘时间,最近面试了上百个毕业生,发现很多学生没有准备好面试,也不会面试。毕业生究竟如何准备校园招聘呢?写些建议,希望能够对毕业生有所帮助。 了解自己的需求。 自己的兴趣是什么,擅长什么技术,对自己有个清晰的认识。到底适合什么公司,什么岗位,有目标的准备面试,会节约时间,提升通过 阅读全文
posted @ 2018-10-27 17:12 owenandhisfriends 阅读(622) 评论(0) 推荐(3) 编辑
摘要: Zookeeper基于ZAB(Zookeeper Atomic Broadcast),实现了主备模式下的系统架构,保持集群中各个副本之间的数据一致性。 ZAB协议定义了选举(election)、发现(discovery)、同步(sync)、广播(Broadcast)四个阶段。 选举(election 阅读全文
posted @ 2018-09-10 19:43 owenandhisfriends 阅读(1998) 评论(0) 推荐(0) 编辑