代碼復雜度的代價遠比你想象得大
引(yin)言:復雜度(du)的(de)代(dai)價(jia)遠比你(ni)想象得(de)大(da) 在 Java 后(hou)端系統演進過程中,代(dai)碼復雜度(du)是影響可維護性、穩定性和迭代(dai)效率的(de)核心因素。然而,復雜度(du)往(wang)往(wang)被忽視,直到一次“小改動”引(yin)發線上事故(gu),才被重(zhong)新審視。 本(ben)文(wen)以“復雜度(du)戰(zhan)爭”為主題,系統性地(di)探討如(ru)何識別、評估和治(zhi)理代(dai)碼中的(de)復雜性。本(ben)文(wen)不會停留(liu)在抽象原則(ze),而是結 ...
從一個普通程序員的角度,聊聊當前環境下,是否還適合做編程
先做一個簡單的自(zi)我介(jie)紹(shao):
我是一名三本畢業(ye)生,通(tong)信工(gong)程專業(ye),畢業(ye)后報培訓班學習編程,然后 2016 年至今一直在重慶從(cong)事 Java 開發(fa),期間也短暫參與過(guo)前端(duan)開發(fa),自(zi)學過(guo) C 語(yu)(yu)言和 Go 語(yu)(yu)言,任職過(guo) 5 家公司,涉(she)足過(guo)醫療(liao)、稅務、農(nong)業(ye)、房地產、人工(gong)智能等行業(ye)。
這段履歷算不上光鮮,卻是大多數普通(tong)... ...
C# 棄元模式:從語法糖到性能利器的深度解析
在(zai) C# 的(de)(de)語法演進(jin)中,“棄元(Discard)” 以一個(ge)簡單(dan)的(de)(de)下劃線 _ 成(cheng)為了既提(ti)升代碼可讀性(xing)(xing),又優化性(xing)(xing)能的(de)(de) “雙料特性(xing)(xing)”。它并非單(dan)純的(de)(de)語法簡化,而是(shi)編譯器層面對 “有意忽略的(de)(de)值” 的(de)(de)深度優化 —— 通過(guo)明確(que) “忽略” 的(de)(de)意圖,不(bu)僅讓代碼更簡潔(jie),更能減少內存分(fen)配、降低性(xing)(xing)能開(kai)銷。本文將從使用場景、 ...
向量那點事兒
目錄一(yi)(yi)(yi)、向(xiang)(xiang)(xiang)量坐標表示(shi)(shi)二、加減法(fa)向(xiang)(xiang)(xiang)量加法(fa)應(ying)(ying)用(yong)示(shi)(shi)例(li)向(xiang)(xiang)(xiang)量減法(fa)應(ying)(ying)用(yong)示(shi)(shi)例(li)三、向(xiang)(xiang)(xiang)量內積應(ying)(ying)用(yong)示(shi)(shi)例(li)四、向(xiang)(xiang)(xiang)量外積應(ying)(ying)用(yong)示(shi)(shi)例(li)五(wu)、小試牛刀代碼示(shi)(shi)例(li)六(liu)、小結 一(yi)(yi)(yi)、向(xiang)(xiang)(xiang)量 這次我們繼(ji)續聊(liao)一(yi)(yi)(yi)下向(xiang)(xiang)(xiang)量。 向(xiang)(xiang)(xiang)量可以理解為一(yi)(yi)(yi)個有(you)方向(xiang)(xiang)(xiang)的量。 它既(ji)有(you)大小(長度),又有(you)方向(xiang)(xiang)(xiang)(指向(xiang)(xiang)(xiang)哪里)。 生(sheng)活中很多東西都可以用(yong)向(xiang)(xiang)(xiang)量描述(shu),比如: 速度(你開 ...
無意中在應用層瞥見了一個微內核的操作系統調度器
你(ni)好呀,我(wo)是(shi)歪歪。 最近(jin)遇(yu)到(dao)一(yi)(yi)個(ge)(ge)業(ye)務上的(de)(de)問題(ti)(ti),在網上看到(dao)一(yi)(yi)個(ge)(ge)對應場(chang)景下的(de)(de)解(jie)決方案(an),我(wo)感(gan)覺這(zhe)個(ge)(ge)場(chang)景還(huan)挺(ting)有(you)通用性的(de)(de),分享一(yi)(yi)下。 以(yi)后遇(yu)到(dao)類似問題(ti)(ti),或者當(dang)它以(yi)面(mian)試場(chang)景題(ti)(ti)出現的(de)(de)時(shi)候,你(ni)可以(yi)拿去(qu)就用。 事情是(shi)這(zhe)樣的(de)(de)。 程序(xu)里(li)面(mian)有(you)一(yi)(yi)條“線(xian)路”,這(zhe)個(ge)(ge)“線(xian)路”是(shi)購買(mai)的(de)(de)外(wai)部服務,使用起來是(shi)要收費的(de)(de)。 為(wei)了更(geng)好的(de)(de)理解(jie)這(zhe) ...
Runtime Async - 步入高性能異步時代
同(tong)(tong)(tong)步(bu)(bu)代(dai)(dai)碼(ma)和異(yi)(yi)步(bu)(bu)代(dai)(dai)碼(ma) 一(yi)般而(er)言,代(dai)(dai)碼(ma)可分為同(tong)(tong)(tong)步(bu)(bu)與(yu)異(yi)(yi)步(bu)(bu)兩(liang)類(lei)。兩(liang)者同(tong)(tong)(tong)樣需要等(deng)待操作(zuo)完(wan)成:同(tong)(tong)(tong)步(bu)(bu)會(hui)阻塞當前(qian)線程(cheng),直至(zhi)操作(zuo)結束后再繼(ji)續執行后續邏輯(ji);異(yi)(yi)步(bu)(bu)則不(bu)阻塞當前(qian)線程(cheng),而(er)是(shi)在發(fa)起操作(zuo)時預先注冊(ce)完(wan)成后的(de)處(chu)理邏輯(ji),待操作(zuo)完(wan)成時由操作(zuo)本身或(huo)外(wai)部機制(zhi)觸發(fa)該邏輯(ji)。 于是(shi)這就(jiu)帶來一(yi)個問題,那就(jiu)是(shi)同(tong)(tong)(tong)步(bu)(bu)代(dai)(dai)碼(ma)和異(yi)(yi)步(bu)(bu)代(dai)(dai)碼(ma)的(de)寫法是(shi) ...
手算神經網絡BP傳播算法
雖(sui)然說是手算(suan),但是我(wo)還是會(hui)寫(xie)一點(dian) C# 代碼,避免敲壞了計算(suan)器。我(wo)和大家保證,整(zheng)個手算(suan)過(guo)程中,最終的(de)計算(suan)結果只需要用(yong)到初高(gao)中知(zhi)(zhi)識(shi)(shi)。推導過(guo)程會(hui)用(yong)到部分高(gao)數的(de)知(zhi)(zhi)識(shi)(shi)。我(wo)盡(jin)量將(jiang)用(yong)到的(de)知(zhi)(zhi)識(shi)(shi)點(dian)全列(lie)舉出來(lai),本文對學渣友好(hao),期(qi)望能(neng)夠(gou)拿出紙筆和 VisualStudio 的(de)伙(huo)伴(ban)閱讀完本文能(neng)夠(gou)真的(de)理解(jie)神(shen)經網(wang)絡BP傳播算(suan)... ...
本可避免的P1事故:Nginx變更導致網關請求均響應400
問題背景 項(xiang)目上使用SpringCloudGateway作為網(wang)關(guan)承接公網(wang)上各個業(ye)務(wu)線(xian)進來的(de)請求(qiu)流量,在網(wang)關(guan)的(de)前面(mian)有兩臺(tai)Nginx反向代理了網(wang)關(guan),網(wang)關(guan)做了一系列的(de)前置處理后(hou)轉發請求(qiu)到后(hou)面(mian)各個業(ye)務(wu)線(xian)的(de)服(fu)務(wu),簡要(yao)的(de)網(wang)絡鏈路(lu)為: 網(wang)關(guan)域名(wmg.test.com) -> ... -> Nginx ->F5 ...
tomcat為什么假死了.md
現象 我(wo)(wo)們(men)生(sheng)產最近有個服務偶爾(er)會掛掉(diao),接口報錯"connection reset by peer",上服務器curl也是(shi)同樣報錯,意思連接被server拒絕了。 通過dump以及(ji)日志分析,我(wo)(wo)們(men)已(yi)經知道了問題代碼所(suo)在,就是(shi)使(shi)用easyexcel上傳、解析文件(jian),開(kai)發同學沒有做分頁(ye),導致內(nei)存溢出。這點在e ...
換個方式用C#開發微信小程序
前一(yi)陣子幫朋友(you)開(kai)(kai)發(fa)個微信小程(cheng)序(xu)(xu),一(yi)開(kai)(kai)始使(shi)用(yong)(yong)Wechat Devtools開(kai)(kai)發(fa),實在(zai)受不(bu)了轉用(yong)(yong)uniapp開(kai)(kai)發(fa)。后來(lai)突(tu)發(fa)奇想能否將C#寫的PixUI編譯(yi)成WebAssembly,由微信小程(cheng)序(xu)(xu)加載運行。先上網搜了下小程(cheng)序(xu)(xu)使(shi)用(yong)(yong)blazor的文章,都(dou)是用(yong)(yong)WebView包了一(yi)下blazor應用(yong)(yong),沒有(you)參考(kao)價值, ...
日常問題排查-空閑一段時間再請求就超時
其(qi)實這個(ge)問題筆者一直遇到(dao),而且解(jie)決方(fang)案也一直有(you),但(dan)從沒有(you)真正的(de)(de)仔細思考過。但(dan)最近讀《tcpip路由(you)技術》卷二突然靈(ling)光一閃,將書中的(de)(de)一些闡(chan)述和這個(ge)問題莫名(ming)的(de)(de)關聯想通了(le)其(qi)中的(de)(de)關竅 ...
C#高性能開發之類型系統:從 C# 7.0 到 C# 14 的類型系統演進全景
自C# 7.0以(yi)來,C#語言在類(lei)(lei)型(xing)(xing)系統(tong)(tong)方面引入了眾多新數據類(lei)(lei)型(xing)(xing)、類(lei)(lei)型(xing)(xing)構造和語言特性(xing),以(yi)提升性(xing)能、類(lei)(lei)型(xing)(xing)安全性(xing)和開發效(xiao)率。本文全面整理了從C# 7.0到C# 14.0(截至(zhi)2025年(nian)4月(yue),C# 14.0為預(yu)覽版(ban))類(lei)(lei)型(xing)(xing)系統(tong)(tong)的新增內容(rong),包括值(zhi)元組、Span<T>、ReadOnlySpan<T>、Memory ...
工良出品 | 長文講解 MCP 和案例實戰
作者:癡(chi)者工良 博客地址://www.whuanle.cn/ 示(shi)例(li)項目地址://github.com/whuanle/mcpdemo 近期 MCP 協(xie)議越(yue)來越(yue)爆火,很多開發者都投身參與 MCP Server/Client 的(de)開發,各個大(da)廠也(ye)紛(fen)紛(fen)推出自己的(de) MCP 集成平臺或開 ...
深感一無所長,準備試著從零開始寫個富文本編輯器
富(fu)文(wen)本(ben)(ben)編輯(ji)器(qi)是允許用戶在輸入(ru)和(he)編輯(ji)文(wen)本(ben)(ben)內容時,可以(yi)應(ying)用不同的(de)格式、樣(yang)式等(deng)功(gong)能,例如圖文(wen)混排等(deng),具有所見(jian)即(ji)所得(de)的(de)能力(li)。與簡(jian)單的(de)純文(wen)本(ben)(ben)編輯(ji)組件(jian)<input>等(deng)不同,富(fu)文(wen)本(ben)(ben)編輯(ji)器(qi)提(ti)供了更多的(de)功(gong)能和(he)靈活(huo)性(xing),讓(rang)用戶可以(yi)創(chuang)建更豐富(fu)和(he)結(jie)構(gou)化的(de)內容。現代的(de)富(fu)文(wen)本(ben)(ben)編輯(ji)器(qi)也已經(jing)不僅限于文(wen)字和(he)圖片,還包(bao)括視頻、表格、代碼(ma) ...
一文徹底搞懂 MCP:AI 大模型的標準化工具箱
MCP 最近在 AI 領域 引發了(le)(le) 廣泛(fan)關(guan)注,特別(bie)是(shi)(shi)在 海外(wai)各(ge)大社區 中,大家熱(re)烈討論,熱(re)度 相當高。 我打(da)開了(le)(le) Google Trends,這是(shi)(shi)一個專門用于查看全球熱(re)點趨(qu)勢的網站。 輸(shu)入關(guan)鍵詞后,可(ke)以(yi)查看其熱(re)度變化。 我搜索了(le)(le) “MCP”,它的趨(qu)勢如圖所示,變化非常明顯。 各(ge)位可(ke)以(yi)參考(kao)一下。 每(mei)天 ...
10年+ .NET Coder 心語 ── 繼承的思維:從思維模式到架構設計的深度解析
引言 ? 小(xiao)編(bian)是一(yi)名(ming)10年+的.NET Coder,期間也(ye)寫過(guo)(guo)Java、Python,從中(zhong)深刻的認識到(dao)了(le)軟(ruan)件(jian)(jian)開(kai)發與語(yu)言的無關性。現在小(xiao)編(bian)已經脫離了(le)一(yi)線開(kai)發崗位,在帶領(ling)團隊的過(guo)(guo)程中(zhong),發現了(le)很(hen)多的問(wen)(wen)題,究其原(yuan)因,更多的是開(kai)發思維的問(wen)(wen)題。所以小(xiao)編(bian)通過(guo)(guo)總結(jie)自己過(guo)(guo)去(qu)十(shi)多年的軟(ruan)件(jian)(jian)開(kai)發經驗,為年輕一(yi)輩的軟(ruan)件(jian)(jian)開(kai)發者(zhe) ...
記一次.NET內存居高不下排查解決與啟示
前情 我們有(you)個(ge)海(hai)外的(de)項(xiang)目,一共70個(ge)服(fu)(fu)(fu)務(wu)(wu),前前后(hou)后(hou)花了(le)超過(guo)一年時間完成了(le)云(yun)服(fu)(fu)(fu)務(wu)(wu)遷移和架(jia)構(gou)調整。主要是架(jia)構(gou)調整了(le),原來的(de)docker swarm托管(guan)服(fu)(fu)(fu)務(wu)(wu),幾臺云(yun)服(fu)(fu)(fu)務(wu)(wu)器將(jiang)n個(ge)服(fu)(fu)(fu)務(wu)(wu)堆在一起(qi),只會對(dui)服(fu)(fu)(fu)務(wu)(wu)器資(zi)源做整體監控(kong),服(fu)(fu)(fu)務(wu)(wu)器沒事沒人管(guan)單個(ge)服(fu)(fu)(fu)務(wu)(wu)的(de)內存情況。新架(jia)構(gou)對(dui)單個(ge)服(fu)(fu)(fu)務(wu)(wu)改動不大,但外部相(xiang)關架(jia)構(gou)則改頭換面了(le) ...
開發中對象命名的一點思考
引言 在(zai)我所見過的(de)項目中,大多(duo)數(shu)團隊都傾向于(yu)“功能堆砌式”開發:需求來了(le)就(jiu)加邏輯或(huo)函數(shu),卻很少(shao)有(you)人愿意花時間(jian)在(zai)設計(ji)上,尤其是(shi)在(zai)對(dui)象命名花費時間(jian)。這看似“快速實現需求”的(de)方(fang)式,通常會對(dui)代(dai)碼(ma)的(de)可讀性產生壞的(de)影響,進而影響可維護(hu)性。 一個好的(de)對(dui)象命名并(bing)非只是(shi)讓代(dai)碼(ma)表面看起來整潔;它背后關系到人類和(he) AI ...
.NET適配HarmonyOS進展
1. 前(qian)(qian)(qian)言 目前(qian)(qian)(qian)國產化(hua)系(xi)統浪(lang)潮下,適配(pei)鴻(hong)蒙是中國軟件大(da)勢所(suo)趨,.NET作為最適合開發客戶(hu)端語(yu)言之一,適配(pei)鴻(hong)蒙系(xi)統(HarmonyOS Next)是目前(qian)(qian)(qian).NET開發者最關(guan)心的事情。我目前(qian)(qian)(qian)業(ye)余時間正在(zai)移(yi)植Avalonia到(dao)HarmonyOS,去(qu)年在(zai).NET Conf CN上分享過,目前(qian)(qian)(qian)又取(qu)得一點進展,所(suo) ...
探秘Transformer系列之(1):注意力機制
探秘(mi)Transformer系列之(1):注意力機制(zhi) 0x00 概述 因(yin)為各種事情,好(hao)久沒(mei)有寫博客了,之前寫得一(yi)些草(cao)稿(gao)也(ye)沒(mei)有時間整理(都沒(mei)有時間登錄(lu)博客和(he)微(wei)信(xin),導致最(zui)近才(cai)發(fa)現好(hao)多未讀消息和(he)私信(xin),在這里和(he)各位朋友(you)說下(xia)萬(wan)分抱歉)。現在恢復更新(xin),是因(yin)為最(zui)近有些從(cong)非(fei)AI領域轉過來(lai)的新(xin)同學來(lai)找我詢問(wen)是否有比較好(hao) ...
