亚洲精品国产成人99久久6蜜臀_精品无人区麻豆乱码久久久_91原创精品_国产喷水av_91久久国产成人精品

16

LinuxC/C+開發(fā)的程序員如何在底層做優(yōu)化

發(fā)布時間:2023-05-02 閱讀量:0 來源: 易企優(yōu)

目前從事Linux C/C++開發(fā)的程序員很多,尤其是百度、騰訊等,他們的網(wǎng)站流量巨大,業(yè)務邏輯復雜,會遇到很多瓶頸。 他們需要開發(fā)底層服務以提高程序效率并快速響應用戶請求。

這些公司的Linux C/C++開發(fā)屬于底層開發(fā)(后臺服務、算法支持等),而不是應用開發(fā)。 編寫的程序在后臺運行,沒有界面,不直接面向用戶。

從事應用開發(fā)(尤其是網(wǎng)站開發(fā))的程序員,在工作的前幾年得到了飛速的提升,工資也漲得很快。 不知不覺,他們的年薪已經(jīng)達到了30W。 但是這個時候,很多人都會遇到一個瓶頸期。 如果他們不成為領(lǐng)導者,他們的工資將增長緩慢。

習慣于自我提升的程序員怎么能停滯不前的工資呢? 如果他們不進步,他們就會倒退。 領(lǐng)導力并不適合所有人。

可以切換到底層開發(fā)! ! ! 幾年的應用開發(fā)經(jīng)驗,對用戶、業(yè)務、交互等都有很好的理解,很容易轉(zhuǎn)入底層開發(fā)。 也知道應用層的瓶頸在哪里,如何優(yōu)化底層。

底層開發(fā)的薪水高于應用開發(fā)。 再過幾年,年薪五六十萬不成問題。

當然,以上都是勤勞聰明的程序員,還有很多程序員工作十幾年還在做應用層開發(fā)。

那么,這個方向適合初學者嗎? 初學者絕對可以學習并找到相關(guān)的工作。 但是,如果你沒有應用開發(fā)的經(jīng)驗,我覺得只學底層開發(fā)是很枯燥的,因為你做不出一個有趣的東西,天天面對一堆應用。 理論上,他遲早要吐血。

初學者可以給自己定一個目標,做出一個這樣的軟件,可以有無限的優(yōu)化空間。 比如一開始他們只是用Qt、GTK+、Fltk等GUI庫搭建接口,不能收發(fā)信息。 添加一對一聊天功能,可以在這個過程中學習()。 支持多人同時聊天,每添加一個對話,就開一個線程。 在這個過程中,可以學到多線程編程。 提升服務器的性能,讓單臺服務器可以抵抗10000人同時聊天。 這時候可能需要優(yōu)化程序,需要注意線程創(chuàng)建和調(diào)度的開銷,注意通信過程中的緩存。 增加群聊功能,使服務器可以向多個用戶發(fā)送消息。 這時候,你對溝通的理解會更加深入。 最終可以將多臺服務器組合起來,抵抗幾十萬甚至上百萬的人聊天。

您可以自己或團隊完成此項目。 在這個過程中,你將全方位學習Linux C/C++編程。

總之,初學者要讓學習過程變得有趣,不要天天研究操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、算法、內(nèi)存、線程過程、通信等理論,一定要實踐。

LinuxC/C+開發(fā)的程序員如何在底層做優(yōu)化

學習路徑

上面說了Linux服務器開發(fā)的前景和學習方法,接下來說說學習路線。

1) 語言與工具

C語言和C++是傳統(tǒng)的Linux開發(fā)語言,需要掌握。 除了基本的語法,你還需要玩轉(zhuǎn)一套工具鏈。

經(jīng)典組合是GCC(編譯器)+Make/(構(gòu)建中大型項目必備工具)+GBD(調(diào)試器)+(內(nèi)存分析工具)+Vim/EMACS/Gedit/Text(編輯器)。

現(xiàn)在越來越多的新項目是使用 Clang/LLVM 構(gòu)建的。 比如NDK已經(jīng)放棄了GCC,全面轉(zhuǎn)向Clang。

由于C++語法變態(tài),奇*巧*淫*技無處不在,而且沒有內(nèi)存回收機制,近些年徹底爆火,很多底層項目開始轉(zhuǎn)向C++。 嗯,這是一件好事。 作為《C++教程》的作者,我很反感,C++這種垃圾語言早該換掉了。

初學者不要貪心,先學好C/C++語言,掌握GCC、Clang/LLVM等以后省。

2)數(shù)據(jù)結(jié)構(gòu)與算法

只需學習基礎(chǔ)知識并理解概念。 許多庫已經(jīng)封裝了常用的數(shù)據(jù)結(jié)構(gòu)和算法。 在實際開發(fā)中不需要從頭開始,所以不要深陷其中。 算法是一個無底洞,會吞噬你。 記住,以后有需要可以復習,不需要從頭理解。

LinuxC/C+開發(fā)的程序員如何在底層做優(yōu)化

3)操作系統(tǒng)

除了基本的Linux操作外,還需要了解一些常用的命令; 當然這不是重點,只要你經(jīng)常使用Linux操作系統(tǒng),就會習慣的。

內(nèi)存(虛擬地址空間、內(nèi)存分配策略)+進程線程(進程通信、線程調(diào)度、死鎖)+文件系統(tǒng)+輸入輸出+中斷等是重點。 這些都是理論,必須結(jié)合實際。

4)通訊()

在服務器上開發(fā),通信是必不可少的,也是重中之重。 除了了解TCP/IP協(xié)議族,還需要學習編程,理論聯(lián)系實際。

ACE、Libev等一兩個著名的網(wǎng)絡庫也要掌握。 畢竟在實際開發(fā)中是不可能直接調(diào)用Linux API的。 建庫提高效率很有必要。

5)接口庫

當然在服務器領(lǐng)域一般不需要接口,但是掌握一個接口庫可以讓你做出一個好玩的軟件,學以致用,增加興趣。

Linux下常用的界面庫有Qt、GTK等,其中Qt是老大。

從事Linux開發(fā),操作系統(tǒng)原理和通信是重點,也是最難學的部分。 這是你踏入Linux開發(fā)大門的標志。 不學這些,就是耍流氓。

如果你想在你的程序員生涯中取得更高的成就,C/C++是一門編程語言,它不僅可以增強你的思維能力,還可以為編程打下堅實的基礎(chǔ)。 如果你想做軟件開發(fā),成為一名核心程序員,學好C For C/C++,筆者有一群C/C++程序員(Q世撲:C語言編程學習聚集地(默默成立))如果你覺得它自學C/C++語言比較困難,有興趣學習或了解C/C++編程的朋友可以進來交流。

聲明:本文"LinuxC/C+開發(fā)的程序員如何在底層做優(yōu)化":http://www.ztxialiaoji.com/gsnews/show429.html內(nèi)容和圖片部分來自互聯(lián)網(wǎng)。若本站收錄的信息無意侵犯了貴司版權(quán),請給我們來信,我們會及時處理和回復。