原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_202 “表達欲”是人類成長史上的強大“源動力”,恩格斯早就直截了當地指出,處在矇昧時代即低級階段的人類,“以果實、堅果、根作為食物;音節清晰的語言的產生是這一時期的主要成就”。而在網絡時代人們的表達欲往往更容易被滿足,因為有聊天軟件的存在。通常意義上,聊天大抵都基於兩種形式:羣聊和單聊。羣聊或者羣組聊天我們可以理解為聊天室,可以
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_203 容器,又見容器。Docker容器的最主要優點就在於它們是可移植的。一套服務,其所有的依賴關係可以捆綁到一個獨立於Linux內核、平台分佈或部署模型的主機版本的單個容器中。此容器可以傳輸到另一台運行Docker的主機上,並且在沒有兼容性問題的情況下執行。而傳統的微服務架構會將各個服務單獨封裝為容器,雖然微服務容器化環境能夠在
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_213 上世紀九十年代,海灣戰爭的時候,一位美軍軍官擔心他們的五角大樓會被敵人的一枚導彈幹掉,從而導致在全球的美軍基地處於癱瘓狀態。這時候,有一位天才的科學家説,最好的中心就是沒有中心。是的,這就是最樸素的去中心化思想,於是互聯網出現了。一個沒有互聯網的時代是無法想象的,互聯網的核心就是把一個信息分成若干的小件,用不同的途徑傳播出
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_218 分治算法是一種很古老但很務實的方法。本意即使將一個較大的整體打碎分成小的局部,這樣每個小的局部都不足以對抗大的整體。戰國時期,秦國破壞合縱的連橫即是一種分而治之的手段;十九世紀,比利時殖民者佔領盧旺達, 將盧旺達的種族分為胡圖族與圖西族,以圖進行分裂控制,莫不如是。 21世紀,人們往往會在Leetcode平台上刷分治算法題
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_220 定時任務的典型落地場景在各行業中都很普遍,比如支付系統中,支付過程中因為網絡或者其他因素導致出現掉單、卡單的情況,賬單變成了“單邊賬”,這種情況對於支付用户來説,毫無疑問是災難級別的體驗,明明自己付了錢,扣了款,但是訂單狀態卻未發生變化。所以,每一筆訂單的支付任務流程中都需要一個定時輪詢的備選方案,一旦支付中發生問題,定時
善於觀察的朋友一定會敏鋭地發現ChatGPT網頁端是逐句給出問題答案的,同樣,ChatGPT後台Api接口請求中,如果將Stream參數設置為True後,Api接口也可以實現和ChatGPT網頁端一樣的流式返回,進而更快地給到前端用户反饋,同時也可以緩解連接超時的問題。 Server-sent events(SSE)是一種用於實現服務器到客户端的單向通信的協議。使用SSE,服務器可以向客户端推送實
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_216 PWA(Progressive web apps,漸進式 Web 應用)使用現代的 Web API 以及傳統的漸進式增強策略來創建跨平台 Web 應用程序,説白了,PWA可以讓我們的站點以原生APP的形式運行,但相比於安裝原生APP應用,訪問PWA顯然更加容易和迅速,還可以通過鏈接來分享PWA應用。 有許多知名的網絡平台已
我們一直都相信這樣一種説法:協程是比多線程更高效的一種併發工作方式,它完全由程序本身所控制,也就是在用户態執行,協程避免了像線程切換那樣產生的上下文切換,在性能方面得到了很大的提升。毫無疑問,這是顛撲不破的業界共識,是放之四海而皆準的真理。 但事實上,協程遠比大多數人想象中的複雜,正因為協程的“用户態”特性,任務調度權掌握在撰寫協程任務的人手裏,而僅僅依賴async和await關鍵字遠遠達不到“調
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_190 我們知道,在前端界有一個共識:速度就是生命,帶寬就是金錢。怎樣將頁面加載速度有效提升是無數前端工程師無時不刻在思考的課題,目前的網絡環境中,除了視頻,圖片仍舊是佔用流量較大的一部分,對於app端尤其如此,因此,如何在保證圖片視覺不失真的前提下縮小圖片體積,對於節省帶寬和電池電量都十分重要,因此Google在十年前提出了一種
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_214 好的互聯網產品不僅僅在功能上要高人一籌,在性能層面也需要出類拔萃,否則金玉其外敗絮其中,頁面是美輪美奐了,結果首屏半天加載不出來,難免讓用户乘興而來,敗興而歸。 幸運的是,前端的性能優化有諸多有跡可循的理論和方法,其中相對權威的,無疑是LightHouse。 LightHouse 是一個開源的自動化工具,它作為 Chrom
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_210 20世紀初,幾乎所有的飛機都是並列雙翼結構,此時,美國著名飛行大亨霍華德·休斯認為自己的飛機不夠快,助手委婉地提醒他,如果速度太快,飛機的上翼結構支柱很可能會支撐不住,發生斷裂。霍華德憤怒地向助手大喊:“誰説我們需要上翼結構?讓上翼和支柱見鬼去吧,我們需要的是更輕便的單翼飛機!” 於是乎,H1單翼飛機就此出現,這款機型身上
開篇明義,前端已死?根本就是扯淡。前端技術精微淵深,駁雜寬廣,除了基礎的 HTML、CSS 和 JavaScript 技術外,前端技術還涉及到許多其他相關技術和工具,比如前端框架、UI 庫、自動化構建工具、代碼管理工具等等。這些技術並沒有死,反而生態圈愈發健壯,但為什麼前端已死的論調甚囂塵上? 前端市場萎靡 前端技術並未消亡,但前端工程師的坑位卻逐年減少,為什麼?是由於競爭加劇、市場飽和、經濟衰退
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_222 Go lang,為併發而生的靜態語言,源於C語言又不拘泥於性能,高效卻不流於古板,Python靈活,略輸性能,Java嚴謹,稍遜風騷。君不見各大廠牌均紛紛使用Go lang對自己的高併發業務進行重構,原因無他,經濟下行的大背景之下,性能突出、效率拉滿的Go lang無疑是高併發場景下節約服務器資源的一劑靈藥。 與時俱進,順
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_221 一般情況下,大家對Python原生的併發/並行工作方式:進程、線程和協程的關係與區別都能講清楚。甚至具體的對象名稱、內置方法都可以如數家珍,這顯然是極好的,但我們其實都忽略了一個問題,就是具體應用場景,三者的使用目的是一樣的,話句話説,使用結果是一樣的,都可以提高程序運行的效率,但到底那種場景用那種方式更好一點? 這就好比
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_212 有人説,如果一個人相信運氣,那麼他一定參透了人生。想象一下,如果你在某款moba遊戲中,在裝備平平,隊友天坑的情況下,卻刀刀暴擊,在一小波gank中輕鬆拿下五殺,也許你會感嘆自己的神操作和好運氣,但其實,還有另外一種神秘的力量在支配着這一切,那就是:隨機算法。 偽隨機(Pseudo-Randomization) 其實,競技
原文轉載自「劉悦的技術博客」https://v3u.cn/a_id_207 曾幾何時,SVG(Scalable Vector Graphics)矢量動畫圖被坊間稱之為一種被瀏覽器詛咒的技術,只因為糟糕的硬件支持(IE),和沒完沒了的兼容性調優(Safari)。但是在2022年的今天,一切都不一樣了,正所謂三十年河東,三十年河西,微軟所研發的採用Chromium內核作為IE替代者的Edge瀏覽器已經