00后程序员,2023年终总结
00后程序員,2023年終總結(jié)
作為一個00后程序員,我回顧了過去三年的工作經(jīng)歷。我來自湖南衡陽,雖然互聯(lián)網(wǎng)上常常開玩笑說我們00后炒主管、炒老板,但實(shí)際上我們也在不斷努力變得更強(qiáng)。最近兩年我沒有寫博客,不是因?yàn)閼校俏覙s升為了一位爸爸,肩上的責(zé)任更重了,工作上也需要積極主動承擔(dān)自己的職責(zé),順便開發(fā)一個練手的物聯(lián)網(wǎng)項目。
工作的三年
2020年中旬,我還在深圳的一家公司從事機(jī)房環(huán)境動力監(jiān)控的工作。當(dāng)時我在翻看手機(jī)時偶然看見了深圳房價,這讓我望而卻步,經(jīng)過長時間的思考和斟酌,最后還是決定回長沙買房定居。長沙之前需要有兩年的社保繳納才有資格進(jìn)行購房,在2023年9月之后政策放寬了(而且現(xiàn)在首付只需用20%,無需社保就可以進(jìn)行購房)。在深圳的這幾年中我也感受到了城市帶來的熱血和快節(jié)奏的生活,工資相對來說也比較高(但我記得自己當(dāng)時在深圳實(shí)習(xí)時的工資也只有3.5k),經(jīng)過一次跳槽,我的工資漲到了以w為單位。我第一時間給媽媽打電話,顛覆了她對我的認(rèn)知。
開始打工
剛開始工作時,我經(jīng)常瀏覽博客園,渴望獲取知識。我盲目地追求技術(shù),經(jīng)常看到大佬們在群里討論某個技術(shù),我就立即去學(xué)習(xí),但只是學(xué)會了如何使用,對技術(shù)原理一無所知。我像一只無頭蒼蠅一樣,剛剛畢業(yè)時看到別人在討論微服務(wù)網(wǎng)關(guān)(Ocelot),就參考別人的博客寫了一個Demo,覺得自己可以了。現(xiàn)在回想起來,我當(dāng)時有點(diǎn)幼稚。實(shí)習(xí)半年后,我意識到高大上的東西并不實(shí)用,工作中更需要關(guān)注業(yè)務(wù)理解和編碼基礎(chǔ)。于是我在B站學(xué)習(xí)了C#的基礎(chǔ)知識,才發(fā)現(xiàn)學(xué)校沒有教過的特性、反射、攔截器、委托、表達(dá)式目錄樹等等。實(shí)習(xí)后半年,我一直在加強(qiáng)基礎(chǔ)知識,每學(xué)會一個知識點(diǎn),都感到非常清爽。原來這才是我渴望的知識。在工作中遇到一些技術(shù)難題時,我也能游刃有余。后來,我開始學(xué)習(xí)C#內(nèi)置方法和一些優(yōu)秀的項目的源碼。我將學(xué)到的知識點(diǎn)寫成博客,以防忘記,并養(yǎng)成了編寫博客的良好習(xí)慣。
我跳槽
在那里實(shí)習(xí)了一年結(jié)束實(shí)現(xiàn)期。我還記得技術(shù)總監(jiān)找我談話,說我表現(xiàn)很好,公司對我的能力非常認(rèn)可,將我的工資從之前的3.2k漲到了6k。但是告訴我實(shí)習(xí)期結(jié)束后會有三個月的試用期,工資只有80%。我對此感到不高興,但沒有說出來,而是去外面面試。在準(zhǔn)備簡歷的這幾天里,公司突然提前給我轉(zhuǎn)正了,但已經(jīng)晚了,我的簡歷都已經(jīng)準(zhǔn)備好了。于是我出去面試,當(dāng)時我拿到了4個offer,最低的工資都達(dá)到了8k,我還干個毛,上午簽完轉(zhuǎn)正合同,下午提離職 光速離職進(jìn)行中,南山西麗報道去。
新公司
在新的公司,我結(jié)識了新朋友,至今我們?nèi)员3致?lián)系。我的領(lǐng)導(dǎo)非常好,經(jīng)常與我保持聯(lián)系,幫助我解答困惑。我們使用的技術(shù)非常新穎,我第一次接觸到了微服務(wù)。我們?yōu)閄X銀行開發(fā)了一套機(jī)房環(huán)境動力監(jiān)控系統(tǒng),學(xué)習(xí)了很多新技術(shù),如Redis、CAP、Kafka等微服務(wù)架構(gòu)。我們編寫了xshell腳本,實(shí)現(xiàn)了一鍵部署,因?yàn)槲覀冃枰獙⑾到y(tǒng)部署到全國各地的XX銀行機(jī)房,這樣實(shí)施人員只需要拷貝安裝包,執(zhí)行安裝腳本,就可以下班了。在這里,我學(xué)到了很多東西,特別感謝我的領(lǐng)導(dǎo)。說實(shí)話,我也不清楚為什么最后離職了。公司在西麗有宿舍,不用支付水電費(fèi),基本上只需要自己負(fù)責(zé)吃飯,基本上沒有什么花銷。領(lǐng)導(dǎo)對我也非常好,現(xiàn)在回想起來還有點(diǎn)迷茫。最后,我只能歸結(jié)為我想回長沙買房,本來我計劃買房后回深圳,但現(xiàn)在有了孩子,所以不舍得哈哈。
回長沙打工
回到長沙后,我加入了一家加班很嚴(yán)重的公司。基本上每天工作時間都在11個小時左右,整個部門的開發(fā)人員都是如此。由于與直接領(lǐng)導(dǎo) 理念不合,我在這家公司工作了8個月后最終選擇離開。實(shí)際上,我理解大家都想向上爬,追求更高的收入。我們很多人也知道這種加班的狀態(tài)不可持續(xù),但沒有人能夠改變這種環(huán)境,最后大家都隨波逐流,被加班文化卷走。
結(jié)婚&生子
2022年6月23日和我老婆辦理了結(jié)婚手續(xù),2022年11月19日迎接了可愛的女兒的誕生
是的,我是奉子成婚的。實(shí)話實(shí)說,當(dāng)我得知自己即將成為父親時,我真的很迷茫。我曾經(jīng)想過要不要做人流,因?yàn)槲覔?dān)心自己無法承擔(dān)起一個家庭的重任。但是,經(jīng)過深思熟慮,我決定承擔(dān)起這份責(zé)任,成為一個父親。在2022年11月19號,我迎來了自己的小棉襖。那天,我一直守在老婆的床邊,看著她和孩子睡覺,直到凌晨4點(diǎn)才想起來自己還沒吃晚飯。那一天,我真的很開心,也很激動。
買房&裝修
因?yàn)槲屹I的是二手房,裝修我是自己找人裝修的,就結(jié)合我自身理解,講一些個人建議。
買房
我一直關(guān)注著長沙的房價,平均價格在1w左右,我自己回長沙租住在榮盛的一個小區(qū),三房兩衛(wèi)一廳一車位每月2330元,居住了一年多對這個小區(qū)還是比較滿意的。我在安居客上查看小區(qū)均價在8.5k左右,當(dāng)時我覺得這個價格還算低的,我原本計劃著存30w首付,買一個100平的房子,看到這個價格我就有提前買房的沖動了(首付還沒有存夠)。我聯(lián)系了一位中介帶我去看房,我們小區(qū)的房子有的人掛8k/8.5k/1w/1.1w,其實(shí)這些價格都是他們自己高估值,都可以砍價。開始時我這個房子113平90w,掛了幾個月都沒有成交,后來減少到85w,但是賣家想盡快回款,讓我使用商貸少一萬,就是84w,當(dāng)時我們就去中介公司談了一下,我覺得這個價格還可以再少一些,我就直接說83w,如果可以就現(xiàn)在簽合同(房子的戶型是我和我老婆很喜歡的),從看房子到簽合同只用了一周時間就成功上車了。
我們小區(qū)我經(jīng)常看法拍房有一次我沒有錢97平 65w被別人一拍拿下了。買二手房需要關(guān)注房子是不是滿五唯一,滿五唯一不需要個稅,可以省1w多。
不過現(xiàn)在看來我賣這個房子并沒有優(yōu)惠多少,買的還是比較急了,現(xiàn)在長沙放開了房產(chǎn)證滿4年就可以交易,我們小區(qū)最近120+多套掛牌銷售,之前只有一期的房子滿五年了。買完房之后也聽我老婆說小區(qū)有人因?yàn)槿卞X,把自己裝修好的房子按照購房時候的價格出售了,現(xiàn)在我們小區(qū)掛牌價也到了8k左右了,說明小區(qū)急賣的多了,賣方著急用錢,就不會對自己的房子抱有一個高估值。可以看看法拍房的估值價格,知道這個小區(qū)市場低價是多少,根據(jù)自己談判增加金額,我感覺我這個房子當(dāng)時說80w也可以買到,因?yàn)榉繓|缺錢,急需回款。房子成交價格是83w 中介公司收取2%手續(xù)費(fèi),還想收我金融手續(xù)費(fèi)就是幫忙貸款的費(fèi)用2%,我當(dāng)時就不愿意了,我們可以自己找銀行進(jìn)行貸款,為啥你幫我貸款還要收我1w多,中介一直說防止征信最后貸款下不來,定金就收不回了,我的征信這么好,我發(fā)泡反正就是不聽。最后就是我自己在招商銀行進(jìn)行貸款的,省了1w多,其實(shí)中介收取的2%手續(xù)費(fèi)也可以談,我不懂吃了虧,因?yàn)檫@個房子其實(shí)在很多中介都掛了,那家給我更低找那家簽就好了,還有就是其實(shí)如果可以自己找到一手賣方,就不要走中介公司省掉手續(xù)費(fèi),如果你足夠勤快,中介其實(shí)都不用,中介只是利用信息差賺錢。一開始我自己找了一手賣家相同的戶型110平二期送車位,房產(chǎn)證滿4年,沒有滿5年不能過戶,只需要83.8w,我不敢買,但是最近放開正常房產(chǎn)證滿4年就可以過戶了,不然我自己找的才是最好的選擇。
為什么大家都是買房買房,沒說要裝修呀(裝修花費(fèi)可以再付一套首付了)
我剛剛買完房子,也是想找裝修公司,裝修但是報價全包都是20W+ ,本來想半包給裝修公司但是一般別人不愿意接半包利潤太少,不愿意做,我就自己就沒日沒夜的在抖音,B站查看清包(自己找裝修工人),周末的時候就和老婆在小區(qū)溜達(dá),留意別人裝修工人信息,最后磕磕絆絆的花了17w把房子的事情弄好了。
幸福時刻
日請求量1億+的物聯(lián)網(wǎng)項目
這個已經(jīng)是已經(jīng)很成熟的行業(yè)了,我只是因?yàn)榕笥炎约旱墓静幌矚g用別人公司系統(tǒng),而開發(fā)的。2022年正式立項一共開發(fā)了兩個版本V1版本,V2版本。從一開始投入100個用戶進(jìn)行測試,到現(xiàn)在100w用戶,30w+在線用戶,前端&后端都是我一個人編寫,兩年的時間我呼吸過無數(shù)個凌晨的空氣,在不同用戶體量級別,我也遇到過多次挑戰(zhàn)。
技術(shù)棧(Mysql & ES & Redis & Minio 都是自建服務(wù))
1.前端: Uniapp 編寫H5 Vue3 編寫管理后端
2.后端: .Net 6 .Net 7 Java
3.數(shù)據(jù)庫: Mysql + FreeSql
4.網(wǎng)關(guān): ApiSix + Nginx
5.緩存: Redis + FreeRedis
6.大數(shù)據(jù)存儲: Elasticsearch
7.APM:Skywalking
8.消息中間件:Kafka
9.部署環(huán)境:Linux + Docker
10.自動發(fā)布:Shell 腳本
11.定時任務(wù):Quartz
12.設(shè)備交互協(xié)議:Mqtt Http
13.文件存儲:Minio
遇到過的問題
Http協(xié)議設(shè)備通訊5秒一次交互擊潰服務(wù)
一開始我們上線的設(shè)備是http 協(xié)議進(jìn)行設(shè)備信息交互,這個廠家默認(rèn)心跳是5秒一次,一開始上線10,100,1000個用戶就發(fā)現(xiàn)問題,服務(wù)假死,Swagger 頁面都打不開。這個問題差點(diǎn)的就擊潰了我的道心,解決方案是控制設(shè)備心跳時間設(shè)置為3分鐘,但是廠家的程序員有點(diǎn)傻,自己的文檔寫了設(shè)置心跳指令,最后自己居然沒有實(shí)現(xiàn),最后使用MemoryCache 緩存針對設(shè)備進(jìn)行限流,3分鐘之內(nèi)只能通過一個請求,最后這家廠商上線5k設(shè)備,我就要商家換廠家了哈哈。換成支持Mqtt協(xié)議的廠家
MQTT設(shè)備流量服務(wù)內(nèi)存激增
當(dāng)用戶日活體量到W級別的時候,出現(xiàn)服務(wù)器內(nèi)存報警,我發(fā)現(xiàn)32G內(nèi)存占用99%,我所有服務(wù)全部容器化了,使用docker stats命令查看到設(shè)備流量服務(wù)占用20G內(nèi)存,我直接重啟了該服務(wù)內(nèi)存占用馬上就下來了,但是過了一個晚上,我再看設(shè)備流量服務(wù) 內(nèi)存又到13G了,之前在園子里也經(jīng)常看,別人定位某個服務(wù)假死&內(nèi)存&CPU飆升案例。Dockerfile文件 添加安裝 dotnet-dump&dotnet-trace
RUN dotnet tool install -g dotnet-dump \
&& dotnet tool install -g dotnet-trace
進(jìn)入容器內(nèi)部docker exec -it {容器Id} /bin/bash
查看容器內(nèi)部運(yùn)行進(jìn)程Id dotnet-dump ps
通過指定的進(jìn)程id創(chuàng)建dump文件 dotnet-dump collect --type heap --process-id <ProcessId>
我將dump 包放在本地,直接使用VS 打開分析,發(fā)現(xiàn)MQTT消息持有了10G占用,也就是說我的內(nèi)存都是被MQTT 消息吃掉了,查看kibana面板發(fā)現(xiàn)設(shè)備消息消費(fèi)出現(xiàn)了延遲了幾個小時。
優(yōu)化之前的代碼:
_mqttClient.ApplicationMessageReceivedAsync += arg =>
{
// .....消息消費(fèi)代碼....
}
單個線程排隊消費(fèi)消息,那我肯定是加線程呀,直接沖就完了。
優(yōu)化之后的代碼:
_mqttClient.ApplicationMessageReceivedAsync += async arg =>
{
await semaphore.WaitAsync();
_ = Task.Run(async () =>
{
// .....消息消費(fèi)代碼....
}).ConfigureAwait(false);
return;
};
確實(shí)在這一段時間內(nèi),解決了內(nèi)存激增的問題了。
學(xué)習(xí)鏈接:https://www.cnblogs.com/huangxincheng/p/17865096.html
Redis 服務(wù)不可用
好景不長,我看商家一天幾千單的賣,日活用戶很快突破10w大關(guān),端午節(jié)的一個中午,我收到了系統(tǒng)服務(wù)告警通知,設(shè)備流量服務(wù)掛了,服務(wù)心跳接口訪問卡死,kibana面板沒有日志輸出了,我進(jìn)入docker 容器內(nèi)部一直提示
【XXX】Next recovery time: 05/20/2023 15:14:41 (Connect to redis-server(XXX) timeout)
【XXX】Next recovery time: 05/20/2023 15:15:06 (Connect to redis-server(XXX) timeout)
【XXX】Next recovery time: 05/20/2023 15:15:31 (Connect to redis-server(XXX) timeout)
【XXX】Next recovery time: 05/20/2023 15:14:56 (Connect to redis-server(XXX) timeout)
直接痛苦面具出來了,重啟服務(wù)都沒有用,進(jìn)行了很多測試,一直懷疑是Csredis 的問題,各種連接參數(shù)調(diào)整,都沒有作用,后面講CsRedis全部換成FreeRedis,還是不行裂開(StackExchange.Redis 也嘗試過),最后刪除Task.Run(()=>{})單線程執(zhí)行,啟動多個設(shè)備流量服務(wù) ,修改設(shè)備上送時間為10分鐘一次。這個問題嘗試了半個月的測試,最后定位為線程開啟過多了,最后代碼修改為
// 開始一個80個線程信號量,控制可以進(jìn)入多少個線程
var semaphore = new SemaphoreSlim(80);
_mqttClient.ApplicationMessageReceivedAsync += async arg =>
{
await semaphore.WaitAsync();
_ = Task.Run(async () =>
{
try
{
// 處理代碼
}
catch (Exception e)
{
// 處理代碼
}
finally
{
// 歸還線程
semaphore.Release();
}
}).ConfigureAwait(false);
return;
};
Csredis Issues
FreeRedis Issues
支付回調(diào)失效(查單補(bǔ)償)
我們需要開啟一個定時任務(wù)異步查詢微信訂單接口進(jìn)行補(bǔ)償。V1 版本系統(tǒng)主要依賴微信異步回調(diào)請求,接收到支付成功信息。但短板在于,如果微信沒有支付成功的異步回調(diào),訂單就無法正常完成。之前客服反饋過,V1 版本過于依賴微信支付成功主動通知,如果異步回調(diào)通知notify_url不可用,支付通知將永遠(yuǎn)無法收到。
參考地址
Mysql 數(shù)據(jù)庫連接耗盡
這個問題也是最開始自建mysql,當(dāng)體量劇增出現(xiàn)的問題Too many connections mysql 默認(rèn)最大鏈接數(shù)是151,允許的最大連接數(shù)是 16384,問題就是當(dāng)前系統(tǒng)運(yùn)行需要占用更多的鏈接數(shù),處理這個問題我們只需要調(diào)整Mysql 最大鏈接數(shù)數(shù)量,設(shè)置服務(wù)鏈接字符串Max pool size。
max_connections 設(shè)置多少合適?
理想公式:
服務(wù)器響應(yīng)的最大連接數(shù)值占服務(wù)器上限連接數(shù)值的比例值在10%以上,如果在10%以下,說明mysql服務(wù)器最大連接上限值設(shè)置過高。
查看服務(wù)器響應(yīng)最大連接數(shù)show global status like 'Max_used_connections';
驗(yàn)證最大連接數(shù)值是否合理Max_used_connections / max_connections = 215/1000 ≈ 21.5%
Mysql 主從模式延遲過高【未解決】
我使用的是binglog 訂閱進(jìn)行主從同步的,目前這個問題沒有解決,暫時先挖一個坑
Uniapp H5 提示網(wǎng)絡(luò)不可用請刷新
當(dāng)系統(tǒng)用戶越來越多了,就有客服反饋h5出現(xiàn),如下的錯誤頁面,一般讓客戶刷新頁面就可以正常顯示,但也有客戶死活不行,最后壓力給到我這邊。最后根據(jù)官方給出解釋,我將前端協(xié)議改成Https 協(xié)議就好了
官方解決方案
ApiSix 無法使用Https協(xié)議
這個真的很坑人,因?yàn)橹暗膯栴},我必須讓前端使用https協(xié)議,但是我的網(wǎng)關(guān)協(xié)議是http,而且走的是9080端口。我按照官方文檔嘗試了很多方法,但都不行。后來我發(fā)現(xiàn)ApiSix的9443端口是https協(xié)議,我就配置了證書,但是一直不生效,這個問題困擾了我好幾天。最后我在GitHub上提問,有個建議讓我升級到最新版本,這樣就解決好了。
Issues
展望未來工作的第六年
回想工作的這三年,從行業(yè)窺探者轉(zhuǎn)變?yōu)樾袠I(yè)前行者,從行業(yè)小白到行業(yè)大白,剛工作時曾經(jīng)也幻想過,三年后的自己,技術(shù)是不是很厲害了,自己有沒有買車,自己有沒有買房,自己有沒有月薪過W,自己有沒有女朋友,自己有沒有一夜暴富。
三年前的自己,看現(xiàn)在的自己,一定會感到自豪吧,從兩袖清風(fēng),到褲帶空空也是一種幸福,在這里我想對三年后的自己說,希望能夠一直保持著熱情&積極且主動,保持著一顆學(xué)習(xí)的心,對于技術(shù)保持一顆追求原理精神,自己也需要多學(xué)習(xí)關(guān)于技術(shù)以外的知識,自己多抽出一些時間陪伴家人。
三年后的自己立下Flag
- 報考駕照
- 買車
- 看20本書(技術(shù)或者軟實(shí)力)
- 自己的技術(shù)更有深度
- 保持運(yùn)動(目前是每天自行車通勤)
- 物聯(lián)網(wǎng)卡系統(tǒng)能夠盈利
總結(jié)
以上是生活随笔為你收集整理的00后程序员,2023年终总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MacOS Sonoma14.2.1系统
- 下一篇: 崩坏星穹铁道寒鸦遗器选择什么好 崩坏星穹