從華為離職了

来源:https://www.cnblogs.com/javastack/archive/2022/09/18/16705390.html
-Advertisement-
Play Games

作者:Bai Bing 原文:https://zhuanlan.zhihu.com/p/485029198 遺憾的是,我轉正後看到了大家的能力和努力,也意識到在預期的時間內難以達到我想要的高度,最終經過各方面的考慮,決定放棄這個職位,重新回到外企找回適合我的節奏。 依依不捨的離職後,回想起來,覺得我 ...


作者:Bai Bing
原文:https://zhuanlan.zhihu.com/p/485029198

遺憾的是,我轉正後看到了大家的能力和努力,也意識到在預期的時間內難以達到我想要的高度,最終經過各方面的考慮,決定放棄這個職位,重新回到外企找回適合我的節奏。

依依不捨的離職後,回想起來,覺得我在華為的經歷特別珍貴,所以在此做個記錄。

試用期與加班工資

一般而言,試用期持續的時間為3-6 個月,工資、獎金都按正式員工的標準計算。據我所知,唯一的區別在於,試用期的員工,周末加班不能轉調休,相當於白加班。因此,不到最忙的時候,組長(PL)不會叫試用期的員工周末加班,如果非得加班,也會通過外出公幹的方式讓他們調休。

我聽前輩們說,在2019年~2020年的時候,由於華為被美國製裁,曾採取過所謂的戰時狀態,那時候的壓力是最大的。作為補償,華為也額外劃撥了資金進行激勵:正式員工周末加班,會直接換算成雙倍工資下個月發。如果周末兩天都加班,雙倍工資就是4天,這樣相當於基本工資漲80%,接近翻倍了。當然,這種連續的周末加班也很消耗精力,無論你有多麼強的體魄或是多麼年輕,最終都不得不承認:命要緊。

現在周末加班,依然按雙倍工資計算,但不會下月發,而是給你累計,直到8年一次換工號,或者離職的時候,才會統一給你結清。並且,周末加班也需要主管審批,不再按打卡時間直接計算。

隨著工作的深入,我逐漸開始理解華為制定一些政策的原因,開始理解它為了獲得最大的收益而做出的取捨。

招聘

我們剛畢業那會,就聽說過華為只要是985/211的學生就招,編程題通過就行,幾乎不看你的個人經歷。當時我不理解,覺得這樣很容易招到一群廢物進來啊?

進來以後我發現,華為會以不信任員工為基礎,建立一套完善的制度和流程讓員工把活乾漂亮。承受不了壓力的人被淘汰,承受住壓力並遵從制度和流程的人能活下去,在這基礎上智商、情商特別高的人會拿錢到手軟。

在這邊,每個員工都可能參與招聘,這幾乎成了他們在華為職業生涯中的必經之路。他們會根據現有的人才庫,挨個打電話詢問就職意願,並引導他們做面試題、線上編程並參與面試官的1對1面試。

我猜測可能是存儲的預算不太夠,因此招聘的時候傾向於招OD/WX的員工。OD的員工工號以300開頭,WX的員工工號以WX開頭,這兩種員工都不算華為的正式員工,其中OD的員工相對更優秀些,主要從事開發工作。而WX開頭的員工基本只能從事測試工作,他們按照測試文檔一步步執行並查看是否符合預期,絕大多數WX員工並不知道自己為什麼要這麼執行,預期的結果代表著什麼,因為他們沒有資格參加方案的設計和串講,也沒有TDE(Test Design Engineer,負責設計測試用例的華為員工)願意跟他們講解。

由於存儲這邊的人員流失較大,因此招聘的任務就很重。同時,存儲又傾向於招聘OD/WX的員工,所以招聘難度會很大。總結一下就是:有能力的人看不上OD/WX,沒有能力的人又過不了線上編程等考核。

月度答辯和轉正答辯

在試用期,每個月都會有一次月度答辯,你要做PPT詳細描述在這一個月內你做了啥,學到了啥,並現場回答評委的問題。在轉正那一次,又需要準備轉正答辯,把整個試用期的工作進行總結。

幸運的是,由於項目過於緊張,最終我從試用期到轉正僅僅參與過3次答辯,包括轉正答辯。

在答辯過程中,評委們都會認真聽你講,並經過思考詢問你一些問題,這種氣氛還是不錯的。實際上,答辯對績效的作用並不是特別大,因為你平時做的事情大家都能看到,也能估算出分量。

答辯最大的作用,在於防止新員工偷懶。當一名員工進入公司後,在完全熟悉流程,成為一顆忙碌的螺絲釘之前,會有短暫的空窗期。在這個階段,由於你啥也不懂,沒人會找你,也沒法給你分配任務。這時,如果你知道每個月都需要報告工作和學習進展,就會產生足夠的動力,儘快融入團隊。

轉正答辯完成後,基本上你已經是一顆標準的螺絲釘了,這時候不再需要答辯,通過績效考核進行激勵即可。

可信認證

對於存儲的開發而言,每個人都需要通過可信考試。

可信考試分專業級和工作級,一共四門課,四個考試,往往新來的員工更容易通過,因為他們有更充足的時間;而老員工沒有時間學習,幾乎都是裸考,最多有一兩個晚上的時間看資料,因此通過率更低。

我比較幸運,很容易就通過了專業級(畢竟要求17級及以上的員工必須通過專業級)。從我的角度看,可信認證的知識真的總結的挺好,是下了功夫歸納的,除了科目一的線上編程,其他科都是理論知識,涵蓋的範圍包括編程語言語法和技巧、編程語言規範、需求分析、安全紅線、設計模式、敏捷開發等等。我在閱讀那些學習課程和資料時,有強烈的似曾相識感覺,因為很多都是我經歷過的場景,摔過的坑。這些經驗被總結成精煉的語言,通過以考促訓的思想灌輸到每個員工的腦子裡。

可惜的是,由於極大的工作強度,所有人都是以通過認證為目標。他們幾乎不看課程和資料,直接在心聲論壇裡面搜索往期的考題,背答案,以儘可能快的速度通過考試,白白浪費了好多精典的資料,這一點挺遺憾的。

介面人

從入職到導師脫手,其實就差不多兩個月時間。這段時間應該是最幸福的時光,最重要的任務就是通過可信考試。兩個月後,開始接手一些簡單的任務,修改問題單或者承擔一些簡單的功能開發。

但在一些部門,這時候往往會給你一個恐怖的任務--介面人

一般而言,一個產品會被分為多個模塊,每個小組維護一個或多個模塊。當測試發現屬於某個組的模塊出現問題,或者別的模塊依賴該模塊的部分工作不正常時,他們需要有人能幫忙查看原因,這個人就叫介面人。

一個組大概10個人,負責的模塊代碼量在數十~數百萬行的級別。乍一看,會覺得應該選一個經驗豐富的員工,對組內負責的模塊、歷史情況等掌握很清楚的人作為介面人。但實際上,幫他人看問題找原因,是一種吃力不討好的工作,因為領導看不到,身邊的同事也感知不到。

在外企,這個介面人通常是主管(Manager)。他會對問題進行簡單的分析,再根據組內成員的擅長領域、負載情況 ,選擇合適的開發去分析該問題。在華為,類似的崗位是PL,為了績效,他們不可能每天把時間浪費在這上面。同時,組內的每個人都忙得要命,最熟悉該領域的人可能正在完成緊急任務,根本沒時間去分析。因此,PL通常會找組內資歷淺一些的同事去充當介面人,並按固定期限輪換。

一個組維護的代碼量不算小,讓新員工去做介面人,美其名曰“鍛煉”,實際上是讓他去抗壓。作為介面人,PL的要求就是儘可能不打擾到組內其他人,所有問題,除非真正是Bug,否則不能讓測試提單。這樣的要求看似簡單,但對於新員工而言,很多時候測試咨詢的問題你連他講的啥意思都不明白,再加上設計又存在各種歷史原因、特殊情況的考慮,新員工大多是懵逼的。想求助經驗豐富的同事?如果項目不太緊張的時候還好說,項目緊張起來,每個人都戴著耳機在通話,你可能好幾個小時都見不到他們空閑下來。而測試對你的響應時間是有要求的,一小時不給清楚解釋?那就提單吧。

舉個例子:你在分析A問題發生的原因,閱讀完全陌生的代碼,另外2個測試給你留言,找你咨詢B、C問題。你簡單掃了一下B、C問題,都不是你熟悉的領域,需要花時間去讀代碼,瞭解設計,才知道是不是問題,所以你暫時沒回覆。兩分鐘後,兩個測試分別給你打電話,你很煩,不想接電話,但他們不停的打,併在留言中告訴你再不接電話就提單。你只能接起電話好言相勸,告訴他們現在真的很忙,只能請他們先登記,排隊等你的消息。沒多久,你讀到A問題中一部分看不明白的邏輯,想找人問,一抬頭組內所有人都在打電話。於是你咬咬牙一邊跟A的測試確認測試用例的邏輯,一邊忽略部分看不懂的代碼去猜測後續的邏輯。這時候B、C的測試告訴你不能再等了,上面催著要提單,你只能暫時放下代碼再次解釋,給他們合理的截止期限並請求他們接受。突然電話又響了,是一個電話會議,問題很嚴重,線上四五個開發正在一起討論,需要你做確認,TDE催促讓你趕緊看,搞不定就往上捅。你趕緊放下A問題,一邊讀D問題的現象,一邊憑你的理解去回答這幾個開發的問題。D問題的難度不大,但涉及的條件特別多,變數也多,邏輯很繞,你得理一下,正在理的過程中,A測試的TDE氣憤的給你留言:都看了兩個小時了怎麼還沒結果?必須提單了。

如果實在搞不定了,測試等不及要提單,一般是要跟PL講的。但作為新員工,你要做好心理準備,因為這時候免不了一頓臭罵。因為PL永遠是忙得要死,他有方案要討論,有設計要做,還有大量組內雜事,本來已經焦頭爛額,你不僅不能幫他分擔,還告訴他現有的某個問題搞不明白,他也是很崩潰的。但這頓罵往往又是值得的,因為PL會快速給你指明方向,因為如果是定位偏了,他會快速糾正你的方向(順帶著煩躁的大罵幾句)。

這大概就是介面人的工作狀態。上午9:4011:30,中午14:3018:00,晚上19:30~21:30是高峰期。

問題單

剛纔提到很多次“提單”,就是指的問題單。測試提的問題單,一般代表某個模塊的功能有Bug。

問題單的跟蹤,華為有一套系統叫DTS,測試提單,開發解決的流程大致如下:

  1. 測試外包員工在DTS系統中創建一個問題單,填寫產品、版本、問題描述等信息。
  2. 問題單提給負責該模塊的測試TDE(華為正式員工)審核。
  3. 測試TDE把問題單轉發給負責該模塊開發的組內PL。
  4. 組內PL再把問題轉發給需要解決該問題的開發。
  5. 開發把問題解決,提交代碼,填寫根因分析並把問題單轉給組內PL。
  6. 開發同時需要與測試TDE預約時間,與測試TDE串講問題單發生的原因和修改後的影響。
  7. 組內PL等串講完成並且最新的Build包含開發的CommitId後,將問題單轉給測試TDE。
  8. 測試TDE將問題單轉交給測試外包員工進行驗證。

這麼一套流程走下來,感覺脫了層皮。這大概就是所有開發都聞問題單色變的原因吧。

對於上級領導來說,他不需要知道細節,只需要要求一個組的問題單的目標數量即可。比如今天整個組剩下40個問題單,明天的要求是35個,後天是30個...

於是,為了達成目標,PL非常反感問題單走到自己組頭上。有的問題單涉及到模塊間的協調處理,測試提單的時候發現的是A模塊的問題,但A模塊經研究後發現,實際問題出在A模塊依賴的B模塊身上,B模塊由另一個組維護,於是跟B模塊的介面人溝通。這種情況,即使已經基本確定是B模塊的問題,B模塊的PL、介面人也會想盡一切辦法拖延問題單走給B模塊的時間,定位問題根因和修改方案後,才會同意問題走到B模塊。畢竟每天的問題單目標放在那裡,多一個在自己頭上,都是沉重的負擔!這種時候,A模塊的PL肯定也不希望問題單在自己組,所以這時候就看他們兩個PL的PK了,作為PL,至少都在華為奮鬥了好幾年,大家像戰友一樣有感情,互相理解下,這次留給你,下次留給我,互相不撕破臉。

在這套流程中,開發最不喜歡的步驟就是測試串講。這個設計的初衷是好的:擔心你的改動造成的影響測試不清楚,從而無法對受影響的場景進行測試。但遺憾的就是這個規定太死板,絕大多數的串講根本沒有意義,只需要測試進行原場景復現,並檢查問題是否解決即可。

我覺得之所以問題單的設計如此複雜,依然是對員工的不信任。在外企,流程就簡單多了:

  1. 測試創建問題單,填寫產品、版本、問題描述等信息。
  2. 問題單提給需要解決該問題的開發者。
  3. 開發把問題解決,提交代碼,填寫根因分析和需要重點測試的場景,把單轉回給測試驗證。

步驟的簡化,就對員工的素質要求高。就拿問題單與測試的串講來說,一般開發人員覺得這個改動的影響比較大,可能需要重點測試一些場景的時候,就會在問題單上註明;同理,測試如果意識到開發人員的改動有風險,或者對開發人員的根因分析不太理解時,也會主動找開發人員溝通。

華為的流程複雜,它的基本邏輯是:信任DE/TDE這種在華為幹了很長時間的優秀員工,新員工不值得信任。配套的激勵也是傾向於PL/DE/TDE,這會讓新員工做得很憋屈,但這沒關係,因為總會過濾出一批忍得住憋屈,願意遵從規則堅持努力下去的人。外企的流程簡單,每個員工都幹得很開心,但是如果出現一些想偷懶的員工,公司的確沒有太多拿得出手的整治方法,頂多就是長期不漲工資。

複雜的流程導致了一個問題,就是測試TDE的繁忙程度超乎想象。因為一個測試TDE往往負責多個模塊,也就是對應著多位開發,當問題單較多的時候,容易形成了單點瓶頸。舉個例子,假設一名TDE手上有10個外包測試員工,分別測出了10個問題,這10個問題對應著8個開發,那這8個開發人員修複完問題後,跟外包測試員工串講並不算數,必須排隊給這名TDE串講,從而形成了單點瓶頸。

測試TDE忙得找不著北,脾氣自然也不會太好。開發更是一點也不敢得罪測試,如果TDE不爽你,別的不說,就單單在串講里給你挑刺、或者把你的串講排到最後,都會大大拖慢你的工作進度和工作熱情。

代碼檢視與Committer

代碼檢視,也就是Code Review。每個開發寫好代碼後,都必鬚髮代碼檢視才能合入主幹分支。

在外企,一般開發會找對這個領域比較熟悉的兩個開發進行檢視,得到兩個Approve以後,就順手合入了。

在華為,代碼合入理論上需要以下步驟:

  1. 選擇兩個開發檢視
  2. 檢視通過後選擇一個Committer審核
  3. 審核通過後,選擇具有合入許可權的人合入。

一般Committer是在一個團隊里的資深員工,技術比較強,並且做事仔細認真。

在一般開發階段,許可權會放鬆很多,步驟簡化為:

  1. 選擇一個開發檢視
  2. 檢視通過後找一個Commiter檢視並審核再合入。

Committer的數量是很少的,大概占20%左右。100個人要合入代碼,都得找這20個人進行代碼審核。這部分人基本已經是DE(Design Engineer),主要承擔方案設計、困難問題攻關等任務,同時還要幫大量的同事檢視代碼。所以他們大多也會忙到找不到北。

這些Committer一方面承擔著方案設計等項目上對自己未來有利的工作,另一方面檢視所有人的代碼,有任何問題得會得到耐心的解釋(不解釋清楚就不會給你審核通過),所以他們的進步會很快。而新員工大多只是執行者,對整體規劃、背景原理等都搞不清楚,他們想讓Committer耐心解釋是不可能的,只有在審核代碼的時候,能學到點東西,但也是零零碎碎的。

這樣以來,新員工和老員工(Committer)的差距就拉開了。最終導致的結果就是知識斷層,新員工很容易流失,因為他們只能在繁瑣的工作之餘進行自學,老員工沒時間教他們;同時他們得到的激勵也相對較少,除非拼死拼活爬到Commiter這個位置,否則未來的發展一片渺茫。

推薦一個開源免費的 Spring Boot 最全教程:

https://github.com/javastacks/spring-boot-best-practice

功能開發

一個需求過來,需要評估完成的時間。但這隻是一個參考,每一級都會想辦法把時間往短了壓。導致最後到開發者這一層,幾乎是不可能完成的任務。

舉個例子,一個任務,參與設計的開發和測試預估12+4天,版本給的要求是10+3天,但當這個任務真正給到參與實現的開發和測試時,可能只剩下6+1.5天。

中間的時間到哪兒去了?從上到下,每一層領導都擔心任務完不成,所以想預留一點緩衝。所以時間從10+3天傳達到下層變成8+2.5天,逐漸往下最終變成6+1.5天。

所以,功能的開發極其緊迫,你想在規定的時間里完成幾乎是不可能的。

一開始,我會因為完不成任務非常焦慮。後來我發現,原來大家都完不成,目標放在那兒成了擺設,雖然目標時間快到了就開始催,但實際上做不完也不會怎麼樣。不過,催你的人心裡是有底線的,這個底線就是他的上級給他的要求,只是這個底線他永遠不會告訴你。

出征海外

出征海外,一般是指的上一線去海外銷售我們的存儲產品,可以選擇的駐扎地很多,幾乎全球都可以。但是選擇歐洲那些條件好的國家,補貼很少,選擇非州那些條件不好的國家,補貼很給力。

在存儲這邊,每年需要出征海外的人數是有指標的,幾乎每個團隊都要出人。

除了極少數願意舍家棄子去海外打拼的小伙伴,絕大多數人是不願意去的。所以,要求你去海外,和逼你離職差不多,基本成了淘汰人的方式。

我看過幾個能力還不錯,經驗也比較豐富的員工,被要求出征海外。他們雖然沒有Committer這麼拼,但五年左右的時間也讓他們積累了很多知識,也算是骨幹員工。無奈的是,由於這個硬性規定,不得不選擇離開開發崗位。

其實我很不理解,這些工作五年左右的員工,對他工作過的模塊應該是很熟悉了。好不容易達到了這樣的水平,也適應了華為的工作強度。這時候應該是他們發光發熱的最佳時期,但華為卻讓他們出征海外,重新招新員工進來再經歷一次痛苦的學習和適應過程。

實際上,這些開發者的知識對海外銷售而言起不到多大作用:你掌握了產品中你們組負責的某個模塊,裡面包含數百個結構體和數千個欄位,你能理解每個欄位的含義和設計它們的原因。所以呢?那又怎樣?在銷售的時候,客戶對此是不感興趣的。客戶感興趣的內容,還是需要參加培訓才能掌握。那為什麼不直接讓新人去做銷售呢?

選擇離開

其實對我而言,錢給到位以後,最在意的有兩點:

  1. 工作輕鬆
  2. 前途光明

這兩點只要滿足一點,我就不會考慮離職,如果兩點都滿足,那我會誓死效忠。

首先,主要是我自己的原因,因為我一直知道華為工作不輕鬆的。

我家離公司車程大約40公裡,雖然樓下就有班車,但班車以早上08:30到達為目標(以行政的標準上班時間08:30~18:00為準)。所以發車時間為早上07:10,也就是說,我最遲06:50就得起床,刷牙洗臉後趕緊下樓上班車,然後在班車上搖搖晃晃的睡覺。

我有好幾次做噩夢,夢到因為莫名其妙的原因導致沒趕上班車,內心崩潰到了極點。

兩個月後,我實在受不了,決定在公司附近租房,平時騎自行車上下班。這樣,早上可以睡到08:50,每周末回去一次。一開始還好,但隨著工作壓力逐漸變大,周末慢慢開始變成單休,相當於我周六晚上回家,周日晚上10點左右,又得坐地鐵回出租屋(為了周一早上睡個懶覺)。本來這樣也能適應,但我女兒滿一歲以後,變得越來越可愛,我捨不得那種離開她的感覺。我在家裡客廳安裝了一個360攝像頭,每天吃晚飯的時候,就看著我媽和女兒玩耍,有時候透過攝像頭喊一聲“甜甜”,女兒以為攝像頭就是我,經常仰著頭對著攝像頭喊爸爸,令人心酸。

其實在入職前,這個問題我也有想過。當時的想法是,在華為如果能安定下來,就在郫縣租一套好點的房子,把一家人都接過來,每天中午可以跟家人吃個飯,晚上偶爾也可以跟家人一起吃飯。但後來我媽不太願意搬走,我老婆也遲遲沒有找到合適的房源,最後不了了之。另外,每天中午、每天晚上都要騎行5公裡左右回去看一眼女兒,確實也挺折騰,加上工作越來越忙,人也越來越疲勞,哪怕真的興師動眾的搬到郫縣,效果也不大了。

記得那段時間,最難受的就是每天晚上吃過晚飯,從園區散步回公司的那一刻。我會問自己,天已經黑了,我為什麼還不能休息?我乾的事情有多大價值,對我到底有多大吸引力?每天都這樣,我該怎麼享受生活?當時有句話特別火,叫青春才幾年,疫情占三年。那種感覺類似於此。

其次,就是個人職業的發展問題了。

作為新員工,我所在的部門,我只能勉強跟入職一年左右的同事共事。有一種說法:你的績效在PL給你分任務的時候就已經確定了,PL可以分給你有價值、有曝光度的重要任務,也可以分給你吃力不討好的雜事。作為新人,自然是要從打雜開始,而身邊的人都兢兢業業,我擅長的知識在這裡又起不了作用,發展的前景可想而知了。

我仔細思考過,如果我要達到骨幹的水平,至少也要兩年的時間,這麼長時間沒有自己的生活,而且年齡越來越大,還面臨被派去海外的風險,實在不值得。

跟我同級別的同事,基本都是DE,他們在存儲工作的時間大概是8~12年。我的工作年限差不多,但作為新人加入,要學習各種工具,瞭解華為的存儲架構、代碼細節甚至是各種設計的歷史原因,哪怕拼盡全力也要5年才能達到他們的水平。

最關鍵的是,這些工作了10年甚至更長時間的員工,還一個比一個捲:你以為每天晚上2點回家很捲了?又冒出連續工作30小時的。你覺得任務太重,一周完成是不可能的,人家可以五天完成還順帶做了很多其它任務。相比之下,我充分認識到自己精力、智力和能力的差距。

這種巨大的競爭壓力,也使得我神經上出現了些問題。我記得有一次晚上10點,我坐地鐵回出租屋,到出租屋快12點了,我洗漱完後想著玩會手機困了就睡,結果一直到2點也絲毫沒有困意。我玩半小時,試著睡半小時,反反覆復好幾次,一看時間,已經5點了。那種時候是最恐懼的:眼看著天快亮了,一點睡意也沒有!

那天我一直挨到天亮,早上7點過,才在外面熙熙攘攘的車流聲、人流聲中睡著,這應該是我這輩子唯一一次失眠。鬧鈴在08:55準時響起,我又得拖著疲憊的身體騎車奔向公司,經歷從早上09:30到晚上22:30的忙碌一天。

在輕鬆和前途兩頭都不占的情況下,我最終還是決定投降放棄。其實,還存在轉崗到其他部門,開發新產品,大家在同一起跑線的機會。如果新的工作機會晚點出現,我可能會提出轉崗,或許就不會離開華為了。

總結

總體而言,華為的競爭力真的比外企強太多。它通過殘酷的內部競爭,讓員工把活儘可能乾漂亮。這雖然換來了大量員工的抱怨,但不妨礙公司的快速發展和進步。

最終離開華為,回想起來還是非常不捨,想起跟大家一同奮鬥的場景:站會時PL跟我們挨個定目標,同事間的討論和幫助,測試串講,Story設計,多個模塊的同事共同實現的功能等等,還是讓我覺得這是一段珍貴的經歷。

只能說為了家庭和生活,我做出了妥協,放棄了作為奮鬥者的機會。最後,希望跟我一同奮鬥的小伙伴們都能得到自己想要的,不留遺憾!

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發佈,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 操作步驟 先設置輸入路徑與輸出路徑 輸入路徑:需要被轉換的文件路徑 輸出路徑:轉換後的文件儲存路徑 我沒有寫這個屬性的交互操作,只是在第一行用字面量進行設置 如果輸出路徑的目錄不存在,則就會進行交互,是否創建該目錄,如果不創建就退出程式 再是選擇字元集轉換的類型,是全部文件預設使用同一套字元集轉換, ...
  • **註:**本文所有函數名為中文名,並不符合代碼規範,僅供讀者理解參考。 Goroutine Go程不是OS線程,也不是綠色線程(語言運行時管理的線程),而是更高級別的抽象,一種特殊的協程。是一種非搶占式的簡單併發子goroutine(函數、閉包、方法)。不能被中斷,但有多個point可以暫停或重新 ...
  • 左值引用是已定義的變數的別名,其主要用途是用作函數的形參,將 const 關鍵字用於左值引用時,其在初始化時可接受的賦值形式變得更加廣泛了,這裡來總結一下。 ...
  • Java網路編程02 4.TCP網路通信編程 基本介紹 基於客戶端--服務端的網路通信 底層使用的是TCP/IP協議 應用場景舉例:客戶端發送數據,服務端接收並顯示控制台 基於Scoket的TCP編程 4.1應用案例1:(使用位元組流) 編寫一個伺服器端,和一個客戶端 伺服器端在9999埠監聽 客戶 ...
  • 2022-09-18 類裝飾器的定義: 使用一個類作為一個裝飾器,在類裡面對已有函數添加其他功能。 類裝飾器使用的一個實例: 1 class MyDecorator(object): 2 def __init__(self,func): 3 self.__func = func 4 5 def __ ...
  • 2022-09-18 帶有參數的裝飾器的實質: 因為裝飾器是不能在帶有參數,所以要定義帶有參數的裝飾器應該換一種思路。在裝飾器的外面套一個函數,使用該函數返回這個裝飾器。 帶有參數的裝飾器的實例: 1 # 裝飾器 2 def return_decorator(flag): 3 def decorat ...
  • 2022-09-18 多個裝飾器使用的實例: 1 # 定義一個裝飾器 2 def make_p(func): 3 print("執行裝飾器make_p") 4 5 def inner(): 6 # 對已有函數增加新的功能 7 result = "<p>" + func() + "</p>" 8 # ...
  • 一、C++中的動態記憶體管理方式 C語言中的動態管理方式是用malloc、free函數,它們在C++仍然可以繼續使用,但是由於在部分地方略顯無能為力,且使用起來比較麻煩,所以C++提出了自己的記憶體管理方式:採用new、delete關鍵字去進行動態記憶體管理。 註意:C語言開闢空間所用的malloc、ca ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...