有沒有清除重復(fù)文件的軟件?
重復(fù)文件查找及刪除功能,許多軟件都有類似功能,例如:文件比較BeyondCompare文件比較軟件DuplicateCleaner查找重復(fù)文件DuplicateFinder其實一些優(yōu)化工具也有類似功能,例如“魔方電腦大師”,個人認(rèn)為更安全一些,至少有警告硬盤里的重復(fù)文件,并非一定是無用的,自動刪除多余重復(fù)的,這是很危險的操作,!!!
備份好重要文件到別處
前端刷算法用什么語言?
選用JS
leecode可以用js刷題了,我大js越來越被認(rèn)可了是吧。但是刷題中會因為忽略js的一些特性掉入坑里。我這里總結(jié)一下我掉過的坑。
坑1:js中數(shù)組對象是引用對象
js中除了object還有數(shù)組對象也是引用對象,這點常常被忽視,所以在遞歸的時候傳遞數(shù)組要用(0)這樣復(fù)制一個一樣的新數(shù)組,不然會出現(xiàn)你傳入的數(shù)組會被同級的遞歸改變,結(jié)果就不對了。
所以只要數(shù)組復(fù)制的地方最好都要這么寫,除非你真的想引用。而且注意是slice不是splice這兩個方法差別很大,你如果用splice(0)也能得到數(shù)組的復(fù)制,但是你將會刪了原數(shù)組,因為splice是一個操作
增加和刪除的元素,返回值是刪除的元素的集合。splice(0)是表示從idx為0開始刪除到數(shù)組尾部,所以得到的返回值也是這個數(shù)組。slice(start,end)可以理解為切片,省略end表示到數(shù)組尾部,如果end為負(fù)
則從數(shù)組尾部開始數(shù)。
坑2:js中的sort是默認(rèn)以字典序排序
一般排序的時候都以為如果是升序就不用寫compare函數(shù),然而js中的()是按字典序排序的,這就導(dǎo)致你如果數(shù)組中都是非負(fù)數(shù)用sort可以得到你想要的效果,但是有負(fù)數(shù)的話就不對了。
比如arr[-1,-3,-5,7,4,-2]()console.log(arr)
你會得到[-1,-2,-3,-5,4,7]
所以要記得寫compare函數(shù),不要偷懶,寫成匿名函數(shù)的形式最好。
坑3:函數(shù)沒有變量提升
其實這個一般不容易犯,主要當(dāng)時我是和第二個坑結(jié)合了,我自定義compare函數(shù)的時候?qū)懙氖莢arcomparefunction(a,b){returna-b},本來沒錯,但是我寫在了sort的下面,于是sort找不到compare函數(shù)就按照默認(rèn)的字符順序排列,搞的
我還以為是compare定義出現(xiàn)了問題。函數(shù)中定義變量是有“變量提升”的,就是說你在函數(shù)的任何位置定義vara都相當(dāng)于在函數(shù)最開始的地方定義了vara,所以用習(xí)慣了之后就忘了函數(shù)不是變量,沒有變量提升了。你在下面定義會找不到。所以寫compare函數(shù)的時
候?qū)懗赡涿瘮?shù)吧。
坑4:浮點數(shù)運算不精確
試試console.log(0.3-0.2)你會發(fā)現(xiàn)是0.09999999999999998。我發(fā)現(xiàn)只要有奇數(shù)的浮點數(shù)存在,js就無法精確計算。這應(yīng)該跟浮點數(shù)在js中存儲的機制有關(guān)系。這個問題沒有太好的解決辦法,一般來講答案是要求保留2位或3位小數(shù)的,利用toFixed(n)直接保留
n位就可以了,這個方法本來就是四舍五入的。但是總有些情況你可能不想四舍五入而是想取上下界什么的,這樣就只能靠一些方法hack比如你想取前兩位:(a*100-b*100)/100這樣。
坑5:判斷數(shù)組為空
判斷數(shù)組為空時不能像變量一樣直接用if(!arr),因為數(shù)組不會像變量那樣隱式轉(zhuǎn)換,所以可以在你知道arr是個數(shù)組的情況下使用arr.lengthgt0判斷,但有些情況下可能那個變量還不是數(shù)組,就不能去length,所以網(wǎng)上看了一個比較周全的方法,就是先判斷該對象到
底是不是數(shù)組類型的,然后再取長度判斷