追随耗子哥的脚步,每周ARTS。一篇Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。每周固定研究一个技术方向。希望可以一直坚持下去。
Algorithm
这周末想做算法题一直碰壁,还是找不到入手的地方,上学的那点东西基本上班几年直接刷题有些难度,看《算法导论》学习梯度又大。反思一下,其实少即是多,学习本就是逆人性的事情,没有捷径。平时在找一套视频或者一本书完成一个模块的学习本就是妄念,是对自己知识焦虑的安慰剂。所以这周先找对方法,下周开始逐一从数据结构开始慢慢实现,最终完成算法思想的构建,再每周按时刷题。
Review
本周阅读的英文文章是 redis-cluster的 官网文章,目标为安装 redis5版本集群
https://redis.io/topics/cluster-tutorial
Tips
一问题:公司gitlab上的远程仓库地址变了,需要修改新的git仓库地址
方法有三种:
1.修改命令
git remote set-url origin [url]
2.先删后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
二问题:前端加密方法
使用CryptoJS工具类调用简单API实现各种加密解密算法。官方文档地址 https://cryptojs.gitbook.io/docs/
简单AES使用:
function encrypt(data) {
// key 和 vi 都需要16位
var key = CryptoJS.enc.Latin1.parse('abcd-platform***');
var iv = CryptoJS.enc.Latin1.parse('abcd-platform***');
return CryptoJS.AES.encrypt(data, key, {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}).toString();
}
function decrypt(data) {
var key = CryptoJS.enc.Latin1.parse('abcd-platform***');
var iv = CryptoJS.enc.Latin1.parse('abcd-platform***');
return CryptoJS.AES.decrypt(data, key, {iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}).toString(CryptoJS.enc.Latin1);
// 解密的时候需要toString到对应编码
Share
什么是好的代码?
春节刚过,回来上班的第一天就用一整天时间来修改原先系统的安全漏洞,这应该是第五次修复漏洞了。这倒让我思考起来什么是好的代码?写代码的时候应该保留什么好的习惯,可以让下次修修补补的时候不至于一次比一次糟糕,最终修到代码必须推翻重来的情况。
我在刚开始编程工作的时候,特别追求写的“酷”的代码,觉得那种简短而快是写代码的目标,每天代码都是根据心情写,没有固定规范,也没有详细注释,但当我半年后维护代码的时候才发现不光别人看不懂,就连自己也看不懂。应了那个笑话,写的代码只有自己和上帝看得懂,半年后只有上帝看的懂。
其实好或者坏的代码都是相对的,如果想要衡量一个代码的好坏需要把它放到软件的整个开发周期中看。从计划、 设计、 实现、 测试、 运营、维护。当维护阶段又可能有新的需求,那么又会开始新的周期并周而复始。在整个周期中投入最少,收入最大才是好代码应该追求的目标。我们不能让代码写的快,但是错误多。不能让代码跑的快,但是不安全。代码写的短,但是没人看得懂。
我个人认为“好”的代码一定是规范且安全的,程序员交流的语言就是代码,使用大家都接受的风格写代码可以极大的减少沟通成本。 不规范的代码, 我们可能节省了眼前的时间, 但是测试、 运营、 维护阶段, 就需要更多的时间。
⽽⼀旦问题出现, 这些代码会重新返⼯, ⼜回到我们⼿⾥, 需要阅读、 修改, 再⼀次浪费我们⾃⼰的时间。 对于这些代码, 每
⼀点时间的付出, 都意味着投⼊, 意味着浪费, 意味着我们损失了做更有意义事情的机会。
这里推荐把自己的IDE装上Findbug和阿里巴巴Java编码指南的插件,严格按照规范写代码,解决自己的时间同时也尊重其他人的时间。
研究方向
大数据hadoop相关生态
网友评论