k8s筆記
動機 突然想起有k8s,就來看看 越看越像linux主機的抽象化,最後變成近乎linux主機的framework ...
動機 突然想起有k8s,就來看看 越看越像linux主機的抽象化,最後變成近乎linux主機的framework ...
動機 那就來寫寫看說明文吧 第一個問題也是最重要的問題是 為什麼分那麼多層? 接下去就是要說明這件事 ...
物件與lambda 物件其實就是使用前需要new的lambda 但 物件可以有一個以上的function 可以用繼承來傳function給父類別 Factorys 就是把物件生成抽象化 simple factory 把物件生成的code抽成物件(lambda) 用參數傳function method factory 把物件生成的code抽成要實作的方法 用override傳function abstract factory 把所有物件生成的code 放到物件中 讓子類別實作 就simple factory+method factory 但實作method從caller本身被抽到另一個物件去 簡介 接著來介紹pattern的替代方案 替代方案: lambda Strategy 拉一個interface來產生一個給lambda的洞(attribute) Template Method 拉好幾個abstract method給子類別實做需要用到的method Bridge 把許多function放在一起 dict with lots of lambda Observer 存callback函數,再把資料透過callback推送出去 Command 真的就是lambda 替代方案: Rrcursive data type Decorator data List = Base | Node A List 就是List的type,但是可能會有許多base interface layer { int eval(); } class Base implements layer { int eval() { return 0;} } class add10 implements layer { layer next; public add10(layer l) { next = l; } int eval() { return 10+next....
動機 突然想起來 有這種東西 就來重看一下 ...
動機 記錄下自己怎麼看待iptables iptables把firewall的功能與network stack緊緊地結合在一起 所以有的時候會看不懂到底發生甚麼事,也不好寫出自己想要的rule 故在此寫下自己的看法 ...
caller: block & nonblock caller會等 => block caller不等 => nonblock (所以要自己時不是去確認好了沒,或是,callee通知) return val: (general’s) sync & async 調用後會拿到 sync: 我們想要的資料 async: 類似raincheck的東西,也許馬上,也許要一段時間後,才會拿到我們想要的資料 要不要自己把copy到userspace的io做完: (NP’s) sync & async 前面4種都是最後要自己call system call拉資料,所以是sync,最後user與kernel的任務會同時完成 async io是user連什麼時候完成都不知道,等到kernel把資料copy好就會call callback AJAX var httpRequest = httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { // 等狀態變成請求完成狀態 if (httpRequest.readyState === 4 && httpRequest.status == 200) { httpRequest.responseText } alert(`ERROR - server status code: ${httpRequest.status} xdr status: ${httpRequest.readyState}`); }; httpRequest.open('GET', '/api/get_something'); httpRequest....
下面是個人比較喜歡的es6的新特性 終於來了!! Template Literals `Fifteen is ${a + b} and not ${2 * a + b}.` Arrow Functions function Person() { this.age = 0; // var self = this; // 定義該 Arrow Functions 時的環境,是在 Person 物件中 setInterval(() => { // 所以 this 會正確指向 Person 物件 this.age++; //self.age++ }, 1000); } var p = new Person(); class syntax sugar class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise....
把參數藏起來 把acc藏起來看看 (define (sum l acc) (if (null? l) acc (sum (cdr l) (+ acc (car l))))) delay 要藏的變數 (define (sum1 l) (lambda (acc) (if (null? l) acc ((sum2 (cdr l)) (+ (car l) acc))))) 把lambda推到if的兩項 (define (sum2 l) (if (null? l) (lambda (acc) acc) (lambda (acc) ((sum2 (cdr l)) (+ (car l) acc))))) 抽出遞迴的part (define (sum3 l) (if (null? l) (lambda (acc) acc) (let ((m (sum3 (cdr l)))) (lambda (acc) (m (+ (car l) acc)))))) 把運算抽出來,並把delay的變數塞回去 (define (sum4....
hoisting console.log(a) var a = 10 會變成類似(會說是類似,因為底層不一定是這樣做) var a console.log(a) a = 10 可以把他 var a = '1' // A... var b = 2 // B ... var c 想像成這樣 function whatever(a,b,c) { // A ... // B ... }('1',1,undefined); 如果有let var a = '1' function x() { // a ... let a = 2 } 先想像成 function whatever(a) { function x() { // a ... let a = 2 // b ....