2019-06-03
但凡在各种环境中,尤其是生产环境中部署过应用的,比如更新应用或者配置,就会了解到,应用的重启或者升级多少都会影响用户访问,那这种影响会到什么程度呢?
影响用户的重启从表面上看,轻则是页面不能正常加载,让用户以为是网络不好(事实上,这也经常成为服务器出问题的背锅原因,有的 APP 则直接在前端硬编码报错信息,所有的错误统一显示:网络出错了,请重试)。重则影...
Read More
2019-05-20
《黑匣子思维》这本书是很早之前就看过一部分的,不过忘了什么原因没看下去。这个月把这本书重新拿出来看的时候,好后悔,当初为什么不把它看完。这些天看完后,觉得我之前在 谈谈服务稳定性 提到的一些内容与观点,相比之下都过于粗浅了。
相信你在看到黑匣子这几个字的时候,会联想起飞机,我们知道,在航空业中,每架飞机都会装两个几乎无法被破坏的黑匣子:一个记录着发往机上电子系统的操作指令,另一个记录着驾驶舱内的对话与声音,一旦事故发生,黑匣子记录的数据就会被取出分析,事故原因也就一目了然。
这跟我们今天说的内容,有什么关系?现在,不妨让我们从一次作者在开篇提到的手术事故说起(以下内容涉及剧透)。
Read More
2019-05-05
MongoDB 如今还是很受欢迎的,毕竟它简单易用,方便拓展等等,然后它的一些高级功能不知道你有没有了解过,比如它的复制集。
为何需要复制集假如经历过业务量的慢慢增长,就能感受到数据库拓展过程中的一些痛苦,以及,复制集的重要性了。毕竟单台机器的性能总是有限的,等业务量到达一定程度,就需要考虑使用多台来分散读写压力,常见的业务场景中,我们面对的都是读多写少...
Read More
2019-04-22
这个月似乎忙得晕头转向了,一到该写的日子,什么灵感都没,于是拖了一天,最后打算总结下自己的一些 DevOps 技巧以及比较好用的工具。
工具列表Gitlab CI这是必须的内容,每个我经手的项目,必须要有 CI 功能,其中会选择性加入代码静态检查以及单元测试等步骤,另外就是编译打包 Docker 镜像步骤,方便之后的部署。
目前还是使用 Gitlab 为...
Read More
2019-04-06
最近这一两周里,**996.ICU** 成了热门,我也不免随了这股大流,毕竟,这是切身相关的。
996.ICU 这件事太长的时间里,996 确实成为了互联网等科技公司的标配,而说好的工作与生活平衡是完全不存在的。
年初有赞在年会上宣布了要全员 9961,于是掀起了一阵非议,点燃了众人尤其是我们工程师的不满情绪,这种不满由来已久,但这样当着公众宣布 996...
Read More
2019-03-24
在上次介绍了权限系统的设计后,这次我们来说说如何实现系统的实现。
复习一遍上次提到的内容,我们知道:
权限就是规定谁可以对什么资源进行什么样的操作。
那么,权限引擎就是根据这个原则来进行设计,于是,就引出了我们今天想介绍的工具:casbin。
不过,今天想换种方式,如果我们自己要做个权限引擎,改如何实现呢?
假如我们自己实现我们的需求
与具体业务场景...
Read More
2019-03-09
今天,我们来说说系统设计中的权限设计(其实是为了之后写实践做铺垫 🌝)。
前言一般来说,我们在设计与人有交互的系统时,如果涉及到多用户能对同类资源进行操作的时候,就会有区分权限的需求了。
最简单的例子莫过于普通用户与管理员,两者进行操作的客户端不一致,普通用户可以用专门的 APP 或者小程序进行登陆操作,而管理员却有一个专门的管理后台,能够进行一些影响...
Read More
2019-02-24
自从换了新环境,逐渐接触了一些机器学习相关库的过程中,不可避免的开始捡回 C/C++ 的一些知识,之后也会写一些 C/C++ 相关的文章。
一个编译错误今天,我们从一个编译错误说起,之后再复习相关的知识:
$ g++ bar.cpp
bar.cpp:(.text+0x20): undefined reference to `foo`
...
Read More
2019-02-11
历经一个月左右,断断续续把这三部曲看完了,这部小说是之前挺火的电视剧《大江大河》的原著小说,作者阿耐,那时候看了介绍之后,本想看电视剧,但是想到看电视剧太费时间,不如看小说了,而且还能感受到原著的原汁原味,而且小说有三部,电视剧貌似只拍了第一部。
注意:以下内容会有剧透,谨慎观看。
Read More
2019-01-27
今天,我们来说说 cgo。
前言在有些特殊的场景下,我们会有这样的困扰:
当前开发语言的性能仍不够,比如视频处理(直播领域)、机器学习以及游戏;
有些优秀的 C/C++ 库一时无法使用当前开发语言来重新实现(FFmpeg、OpenCV、Protobuf、ZeroMQ 等等一大堆);
一般情况下,我们会倾向于使用这样几种方式去解决:
封装原...
Read More
2019-01-13
快回家过年了,伴随着各家公司年会的进行,最让人期待的莫过于抽奖环节了,伴随着台上老板宣布哪个哪个人中奖的时候,相信大部分人还是属于跟我差不多的类型:『中奖绝缘体』。
Read More
2018-12-31
2018 年总结
时间过得真快,一眨眼,2018 年要过去了,而 2017 年的总结 仿佛近在昨日,总体来说,今年感觉是成长有限。
先罗列几个数字:
- 28 篇博客
- 50 本书
- 0 个女朋友
- 6 处旅游地点
- 3 个轮子
显然,被 2018 年给打脸了,肚子没减掉,来了深圳之后,见爸妈的机会也少了,博客内容受欢迎不如预期,主动认识的朋友也有限,女朋友与股市一样:没希望。
好了,脸打完,还是得回顾下自己这一年到底瞎干了啥。
Read More
2018-12-31
长期以来,有时候会不重视测试,尤其是赶项目时间的时候,而近来自己可以规划的时间多了之后,就开始想,如何才能把测试做好。
在这个实践测试的过程中,我也开始对一些设计原则有了更深一步的理解与思考。
杰出的开发者每编码一小时,就会花上两小时进行测试。 – Bruce Rosenblum, Disney-ABC TV Group President Of Business Operations
Read More
2018-12-16
错误处理在编程处理中,可谓是最重要也是最伤脑筋的一块内容,因为在绝大多数情况下,正确的途径只有几条,而剩下的几十上百种的情况便都是错误了,不同意?编译原理中提到的编译器了解下 :P 。
Read More
2018-12-01
数据流的概念其实非常基础,最早是在通讯领域使用的概念,这个概念最初在 1998 年由 Henzinger 在文献 87 中提出,他将数据流定义为 “只能以事先规定好的顺序被读取一次的数据的一个序列”。[1]
Read More