追隨耗子哥的腳步,每周ARTS贺奠。一篇Algorithm 是一道算法題东涡,Review 是讀一篇英文文章,Technique/Tips 是分享一個(gè)小技術(shù)棚潦,Share 是分享一個(gè)觀點(diǎn)令漂。每周固定研究一個(gè)技術(shù)方向。希望可以一直堅(jiān)持下去瓦盛。
Algorithm
這周末想做算法題一直碰壁洗显,還是找不到入手的地方,上學(xué)的那點(diǎn)東西基本上班幾年直接刷題有些難度原环,看《算法導(dǎo)論》學(xué)習(xí)梯度又大挠唆。反思一下,其實(shí)少即是多嘱吗,學(xué)習(xí)本就是逆人性的事情玄组,沒(méi)有捷徑。平時(shí)在找一套視頻或者一本書(shū)完成一個(gè)模塊的學(xué)習(xí)本就是妄念谒麦,是對(duì)自己知識(shí)焦慮的安慰劑俄讹。所以這周先找對(duì)方法,下周開(kāi)始逐一從數(shù)據(jù)結(jié)構(gòu)開(kāi)始慢慢實(shí)現(xiàn)绕德,最終完成算法思想的構(gòu)建患膛,再每周按時(shí)刷題。
Review
本周閱讀的英文文章是 redis-cluster的 官網(wǎng)文章耻蛇,目標(biāo)為安裝 redis5版本集群
https://redis.io/topics/cluster-tutorial
Tips
一問(wèn)題:公司gitlab上的遠(yuǎn)程倉(cāng)庫(kù)地址變了踪蹬,需要修改新的git倉(cāng)庫(kù)地址
方法有三種:
1.修改命令
git remote set-url origin [url]
2.先刪后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
二問(wèn)題:前端加密方法
使用CryptoJS工具類調(diào)用簡(jiǎn)單API實(shí)現(xiàn)各種加密解密算法胞此。官方文檔地址 https://cryptojs.gitbook.io/docs/
簡(jiǎn)單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);
// 解密的時(shí)候需要toString到對(duì)應(yīng)編碼
Share
什么是好的代碼?
春節(jié)剛過(guò)跃捣,回來(lái)上班的第一天就用一整天時(shí)間來(lái)修改原先系統(tǒng)的安全漏洞漱牵,這應(yīng)該是第五次修復(fù)漏洞了。這倒讓我思考起來(lái)什么是好的代碼疚漆?寫(xiě)代碼的時(shí)候應(yīng)該保留什么好的習(xí)慣酣胀,可以讓下次修修補(bǔ)補(bǔ)的時(shí)候不至于一次比一次糟糕,最終修到代碼必須推翻重來(lái)的情況娶聘。
我在剛開(kāi)始編程工作的時(shí)候闻镶,特別追求寫(xiě)的“酷”的代碼,覺(jué)得那種簡(jiǎn)短而快是寫(xiě)代碼的目標(biāo)趴荸,每天代碼都是根據(jù)心情寫(xiě)儒溉,沒(méi)有固定規(guī)范,也沒(méi)有詳細(xì)注釋发钝,但當(dāng)我半年后維護(hù)代碼的時(shí)候才發(fā)現(xiàn)不光別人看不懂顿涣,就連自己也看不懂。應(yīng)了那個(gè)笑話酝豪,寫(xiě)的代碼只有自己和上帝看得懂涛碑,半年后只有上帝看的懂。
其實(shí)好或者壞的代碼都是相對(duì)的孵淘,如果想要衡量一個(gè)代碼的好壞需要把它放到軟件的整個(gè)開(kāi)發(fā)周期中看蒲障。從計(jì)劃、 設(shè)計(jì)瘫证、 實(shí)現(xiàn)揉阎、 測(cè)試、 運(yùn)營(yíng)背捌、維護(hù)毙籽。當(dāng)維護(hù)階段又可能有新的需求,那么又會(huì)開(kāi)始新的周期并周而復(fù)始毡庆。在整個(gè)周期中投入最少坑赡,收入最大才是好代碼應(yīng)該追求的目標(biāo)。我們不能讓代碼寫(xiě)的快么抗,但是錯(cuò)誤多毅否。不能讓代碼跑的快,但是不安全蝇刀。代碼寫(xiě)的短螟加,但是沒(méi)人看得懂。
我個(gè)人認(rèn)為“好”的代碼一定是規(guī)范且安全的,程序員交流的語(yǔ)言就是代碼仰迁,使用大家都接受的風(fēng)格寫(xiě)代碼可以極大的減少溝通成本甸昏。 不規(guī)范的代碼, 我們可能節(jié)省了眼前的時(shí)間徐许, 但是測(cè)試、 運(yùn)營(yíng)卒蘸、 維護(hù)階段雌隅, 就需要更多的時(shí)間。
??旦問(wèn)題出現(xiàn)缸沃, 這些代碼會(huì)重新返?恰起, ?回到我們??, 需要閱讀趾牧、 修改检盼, 再?次浪費(fèi)我們??的時(shí)間。 對(duì)于這些代碼翘单, 每
?點(diǎn)時(shí)間的付出吨枉, 都意味著投?, 意味著浪費(fèi)哄芜, 意味著我們損失了做更有意義事情的機(jī)會(huì)貌亭。
這里推薦把自己的IDE裝上Findbug和阿里巴巴Java編碼指南的插件,嚴(yán)格按照規(guī)范寫(xiě)代碼认臊,解決自己的時(shí)間同時(shí)也尊重其他人的時(shí)間圃庭。
研究方向
大數(shù)據(jù)hadoop相關(guān)生態(tài)