2018年7月小知識
1、webstrom游標在一行(a),然後按住shift,再點擊其他行(b),會選中a與b的所有行
2、antd的table的單元格點擊回調
舊寫法:
新寫法:
注意:如果onClick里是單值表達式,不要漏掉 =>({}) 中的小括弧!!!
3、concat(),拼接多個字元串為一個字元串,返回一個新數組,不會改變原有數組
當沒有參數時,相當於生成了一份oldA的副本
4、 -webkit-line-clamp 限制在一個塊元素顯示的文本的行數。(適用於Chrome瀏覽器)
為了實現該效果,它需要組合其他外來的WebKit屬性。常見結合屬性:
display: -webkit-box
必須結合的屬性 ,將對象作為彈性伸縮盒子模型顯示 。
-webkit-box-orient
必須結合的屬性 ,設置或檢索伸縮盒對象的子元素的排列方式 。
text-overflow
clip: 當對象內文本溢出時不顯示省略標記(...),而是將溢出的部分裁切掉。
ellipsis: 當對象內文本溢出時顯示省略標記(...)。
例:
5、CSScalc 用於動態計算長度值
calc() = calc(四則運算)
注意:運算符前後都需要保留一個空格,例如:width: calc(100% - 10px)中,運算符減號的前後必須保留一個空格
6、數組的filter方法,過濾掉不符合條件的元素
7、antd的table的rowKey問題
問題:當設置table的主鍵是data中的id屬性後,在data中插入一個新數據,這時,dataSource循環不會遍歷沒有id屬性的新數據,導致表格渲染的數據少了一項。在實際項目中,發生奇怪的一點是 當第一項數據()的id為1時(index為0),在它的後面插入新的數據 ,這時是不會渲染的。但是,當第一項id不為1時,在它後面插入新的數據 是會渲染的。
解決方法:當rowKey設置為dataSource的屬性id時,為新插入的數據添加id屬性(即rowKey指定的主鍵),如,這樣,不管第一項數據的id是否為1,新插入的數據都會渲染。
8、prefork和worker模式的區別
Apache有一個模塊叫MPM(多處理模塊),專門用來處理多請求的情況。
而在Unix上默認的MPM是prefork(進程連接),當然,也有worker模式(線程連接)。
prefork和worker模式的最大區別就是prefork的一個進程維持一個連接,而worker的一個線程維持一個連接。
prefork的優缺點:更穩定但內存消耗也更大,
worker的優缺點:沒prefork穩定,因為很多連接的線程共享一個進程,當一個線程崩潰的時候,整個進程和所有線程一起死掉。內存使用比prefork要低得多,所以很適合用在高HTTP請求的伺服器上。
9、Nginx伺服器的優點
Nginx非常適合高連接並發的需求。
(1)Nginx更加輕量級,佔用更少的資源和內存。
(2)Nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高性能。
10、Node.js優點
Node.js與Nginx一樣,也是採用基於事件的非同步非阻塞方式處理請求(js語言的特性),所以在處理高並發請求上有天然的優勢。
11、webstrom打開剛關閉的文件— —ctrl+E
12、JS判斷空對象的方法
不要像我這樣天真地寫 。。
13、
如果是以「專精」為目標去考察,語法細節本身都不是什麼重要的事情。要考察的反而不是語法細節,或者語法糖,而是去找找語言的設計者,看看這門語言最開始的設計思想是什麼,然後深刻理解某種語言的設計背景,運行環境,做了哪些優化——以及對應做了哪些妥協。
14、Ruby這門語言在很多地方都使用「鴨子類型」(duck typing,有些地方也譯作推斷類型,是指某個類如果能夠搖搖擺擺走路,也能呱呱叫,就可以認為是一隻鴨子),而無需使用繼承。那麼在擴展一個已有的類型的時候,直接增加我們需要的方法就可以讓它模仿一隻鴨子。
而我在編寫Objective-C代碼時,更多的使用適配器模式和委託模式。適配器模式定義一個協議(delegate),然後由某個類來實現這個協議。任何類如果聲明自己實現了某個協議,就要在內部用自己的方法實現它。
從微觀一點的角度來看,Ruby的「鴨子類型」和Objective-C的「適配器模式」在細節上是不一樣的,但從設計理念上來看,都是對同一種理念的實現:對介面編程,不對實現編程。
15、我理想中的牛逼程序員並不是敲代碼有多快,多難讓人理解——當然這也是牛逼的一種體現——而是能快速理解其它程序員的代碼,並且自己的代碼非常清晰。
16、設計模式泛指一切為了解決重複出現的問題而總結出的一種特定編程方法或者思維。
17、用sql語句左連接(left join)的時候,發現有很多重複的數據,可以使用
group by xxx
來解決
18、在React中阻止input框自動填寫表單的方法:
19、
Python是一種中規中矩的語言,寫個代碼,過上幾年也能看得懂,這就是它最大的優勢,至於社區大在其次,畢竟這東西是可以隨時間而改變的 。
Ruby秉承了Perl隨心所欲的精髓,確實有點「亂」,但它能夠給人創造的激情,而不是像Python那樣照著API手冊「敲代碼」。
這是兩種截然不同的文化,喜歡自由的人會更愛Ruby。
20、一個技術能不能發展起來,關鍵看三點:
(1)有沒有一個好的社區。
像 C、C++、Java、Python 和 JavaScript 的生態圈都是非常豐富和火爆的。尤其是有很多商業機構參與的社區那就更為人氣爆棚了,比如 Linux 的社區。
(2)有沒有一個工業化的標準。
像 C、C++、Java 都是有標準化組織的。尤其是 Java,其在架構上還搞出了像 J2EE 這樣的企業級標準。
(3)有沒有一個或多個殺手級的應用
C、C++ 和 Java 的殺手級應用不用多說了,就算是對於 PHP 這樣還不能算是一個好的編程語言來說,因為是 Linux 時代的第一個殺手級解決方案 LAMP 中的關鍵技術,所以,也發展起來了。
21、passS層主要解決下面問題:
(1)軟體生產線的問題。
持續集成和持續發布,以及 DevOps 中的技術必需通過 PaaS。
(2)分散式服務化的問題。
分散式服務化的服務高可用、服務編排、服務調度、服務發現、服務路由,以及分散式服務化的支撐技術完全是 PaaS 的菜。
(3)提高服務的可用性 SLA。
提高服務可用性 SLA 所需要的分散式、高可用的技術架構和運維工具,也是 PaaS 層提供的。
(4)軟體能力的復用。
軟體工程中的核心就是軟體能力的復用,這一點也完美地體現在 PaaS 平台的技術上。
(完)
TAG:webchen |