對于 JavaScript,Web 端已經沒有太大的吸引力,未來的 JavaScript 確切的說應該是 TypeScript 可能會像上個世紀的 Lisp 作為通用 GUI...

對于 JavaScript,Web 端已經沒有太大的吸引力,未來的 JavaScript 確切的說應該是 TypeScript 可能會像上個世紀的 Lisp 作為通用 GUI...
Libuv 的完整 udp 發送函數:
int uv_udp_send(uv_udp_send_t* req, uv_udp_t* handle, const uv_buf_t bufs[], unsigned int nbufs, const struct sockaddr* addr, uv_udp_send_cb send_cb)
服務器,并發,“事件驅動”的本質主呵,是時候了。 -- 《秋日》 什么是服務器? 不就是提供“付費”、“免費”服務的高檔電腦嘛! 你提到服務? 存儲一個圖片,讀取一篇文字,觀看一個動作片,計算一個賬戶存款,...
不管是 TCP 還是 UDP,都是基于 socket 發送。socket 在操作系統實現上是存在內部緩沖區的。Libev 我沒有研究過,Libuv 我倒是有不少經驗。但不管怎么樣,他們都是基于系統 socket 實現的,在底部可定有內存緩沖,因為操作系統處理任務是分片分時輪流處理的,數據絕對不可能立刻就發送到網線上,這就必須有一塊緩沖內存。
我不知道 Libev 是怎樣實現的,但是如果其夠健壯的話,應該有個返回值或者某個屬性值可以獲取當前緩沖的 Size,或者是有個回調函數表示這次 sendto 完全發送完畢了。
拿 Libuv 來講,uv_udp_send(..., uv_udp_send_cb send_cb) 是有一個 callback 的。另外,在 uv_udp_send 的參數是可以知道自己發送數據內存的 Size 的。這樣,你可以多個:
uv_udp_send()
uv_udp_send()
uv_udp_send()
直到達到某個內存緩沖的 Size, 就等待最后一個 send 的 callback,再繼續發送更多的數據。這樣能保證你過度消耗內存。
服務器,并發,“事件驅動”的本質主呵,是時候了。 -- 《秋日》 什么是服務器? 不就是提供“付費”、“免費”服務的高檔電腦嘛! 你提到服務? 存儲一個圖片,讀取一篇文字,觀看一個動作片,計算一個賬戶存款,...
I have spent several years on Node.js and libuv. I felt desperately that callback funct...
我今天又再一次仔細看了 redux,不能不說搞前端的一部分人用上 nodejs 之后真的是沒見過世面。老外,哪怕是跟 facebook 沾上關系也是如此。redux 的 st...
@jasinyip
我可以給你提幾個關鍵詞:虛函數表、智能指針
算法技巧: 如何使用JavaScript編寫高效的fabonacci數列斐波那契數列,(意大利語:Successione di Fibonacci),又譯做費波拿契數列、費氏數列、黃金分割數列。發明者,是意大利數學家列昂納多·斐波那契(Leona...
@jasinyip
函數式跟語言關系大了。Haskell 是純函數式函數式語言,Lisp 是非純函數式函數式語言,understand? Java 的面向對象跟 C++ 的面向對象根本就是不一樣的,這個自己百度谷歌。
算法技巧: 如何使用JavaScript編寫高效的fabonacci數列斐波那契數列,(意大利語:Successione di Fibonacci),又譯做費波拿契數列、費氏數列、黃金分割數列。發明者,是意大利數學家列昂納多·斐波那契(Leona...
@jasinyip
你說的函數式是 Haskell,我說的函數式是 Lisp
算法技巧: 如何使用JavaScript編寫高效的fabonacci數列斐波那契數列,(意大利語:Successione di Fibonacci),又譯做費波拿契數列、費氏數列、黃金分割數列。發明者,是意大利數學家列昂納多·斐波那契(Leona...
Docker on okdoc En ... 我最近在從事這方面的事情。然后,我把 Docker Docs 官方文檔翻譯了個 90% 了。 我知道有一個流傳的中文翻譯,但是我...
okdoc 是一個開源的文檔管理器,包括一個后端文檔服務器(Nim 語言編寫)、一個前端 markdown 編輯器(JavaScript 語言編寫)、一個 html 渲染程序...
@laiqurufeng
最開始傳入 ['A', ['B', 'F'], ['C', ['G', 'J'], ['H', 'K']], ['D', 'I'], 'E'],為了遞歸的規則統一,把它作為一個數組的 car (數組第一項 array[0]),把空數組 [] 作為 cdr (array[1, ...])。
JavaScript與Lisp,通向編程圣殿[1]: "樹"的基礎計算JavaScript在設計時,注入了Scheme的血液,雖然設計者為了“商業”目的,為其披上了“C外衣”和“面向對象的禮帽”,但是其本質上應該是Lisp的,Lisp的思想,我...
@laiqurufeng
[['A', 'B'], 'C'] 這個數組,調用 shift() 會得到 ['A', 'B'], 'C', car 表示 第一項,cdr 表示第一項后邊的。isCarList 是表示 car 是否是一個數組。
對于 car = ['A', 'B'],是一個數組,需要對其進行深層遞歸。
JavaScript與Lisp,通向編程圣殿[1]: "樹"的基礎計算JavaScript在設計時,注入了Scheme的血液,雖然設計者為了“商業”目的,為其披上了“C外衣”和“面向對象的禮帽”,但是其本質上應該是Lisp的,Lisp的思想,我...
@laiqurufeng
最開始傳入的 list 必須是一個有效列表(數組),walk() 第一次調用是(list, 0, true)
JavaScript與Lisp,通向編程圣殿[1]: "樹"的基礎計算JavaScript在設計時,注入了Scheme的血液,雖然設計者為了“商業”目的,為其披上了“C外衣”和“面向對象的禮帽”,但是其本質上應該是Lisp的,Lisp的思想,我...