最近聽了幾位社招新進同事的述職,問了他們一樣一個問題:從原來的軟件開發崗位轉到如今的5G開發,大家以爲最大的難點在哪裏?幾位新同事紛紛表示:感受本身要補課的內容實在是太多了,操做系統、網絡協議,處處都是難點。其實這幾位同事的經歷和遇到的問題都很是有表明性:因爲作開發不懂業務,故大部分碼農都是一顆顆螺絲釘,鉚在本身的那一點點領域上使勁往下鑽,而對總體架構幾乎一無所知,致使本身的專業面很是窄,技術水平也比較浮於表面。對這些已經擁有3-5年經驗的程序員而言,轉型到5G開發並無想象中那麼高不可攀,固然也並不輕鬆。所幸他們已經入門了,所以,咱們以爲普通碼農轉型5G開發是可行且有跡可循的。因此此次就來談一談5G開發所需的主要技能和推薦理由,此篇能夠做爲各位有志於轉型5G開發的碼農們參考,也歡迎各位大牛多多指正。html
熟悉 Linux 操做系統linux
必需要熟悉Linux操做系統及具有Linux開發的經驗,固然經常使用的調試手段也要熟練掌握。程序員
5G 承載的業務種類繁多,業務特徵各不相同,對網絡要求不一樣。業務需求多樣性給5G 網絡規劃和設計帶來了新的挑戰,包括網絡功能、架構、資源、路由等多方面的定製化設計挑戰。所以,5G網絡採用NFV/SDN、雲原生技術實現網絡虛擬化、雲化部署,而NFV技術則是5G開發必選No.1。NFV追本溯源:以往通訊網絡設備均採用專用設備,網元功能與硬件平臺緊耦合,即不一樣廠家、不一樣類型網元採用不一樣的硬件。在通訊網絡3G、4G、5G新技術頻繁變革下,因爲網元與硬件平臺緊耦合的關係,形成大量硬件資源浪費,也不利於新業務部快速署。網絡設備價格長期居高不下,電信運營商天然壓力山大;同時供應商一家獨大,運營商也不肯意受制於人;再加上各種專用設備不斷增加的運維和管理成本,實現軟硬件解耦的網絡功能虛擬化(NFV)技術這位英雄來拯救通訊行業了。NFV技術的實現原理是經過使用x86等通用性硬件以及虛擬化技術,來承載各種功能的軟件處理。而這些通用X86平臺的操做系統當仁不讓就是Linux系統了。Linux的特色是什麼?是多用戶、多任務、支持多線程和多CPU的操做系統。既然5G開發的系統環境少不了Linux,下面就是學習重點了:好比什麼是多態?線程和進程的區別?爲何要使用多線程?這都是linux基礎知識、也是Linux內核開發必須掌握的要點。舉個例子,出現段錯誤,有哪幾種調試手段?如何避免?凡是多往深處想想,要知道程序設計作的很差真的會害人害己,光填坑就能累死一羣碼農。另外不能不提的還有epoll,它是Linux內核爲處理大批量文件描述符而做了改進的poll,是Linux下多路複用IO接口select/poll的加強版本,能顯著提升程序在大量併發鏈接中只有少許活躍的狀況下的系統CPU利用率。雖然select、poll,epoll本質上都是同步I/O,但epoll只要從用戶態往內核態拷貝1次fd集合,在設備等待隊列上也只掛1次current;而select和poll每次調用都要從用戶態往內核態拷貝1次fd集合,在設備等待隊列中掛1次current;因此epoll相比select和poll節省了大量系統開銷。還有,select,poll實現須要本身不斷輪詢全部fd集合,直到設備就緒,期間可能要睡眠和喚醒屢次交替。而epoll儘管也須要調用epoll_wait不斷輪詢就緒鏈表,期間也可能屢次睡眠和喚醒交替,可是它是在設備就緒時調用回調函數,把就緒fd放入就緒鏈表中,並喚醒在epoll_wait中進入睡眠的進程。雖然都要睡眠和交替,可是select和poll在「醒着」的時候要遍歷整個fd集合,而epoll在「醒着」的時候只要判斷一下就緒鏈表是否爲空就好,從而節省了大量的CPU時間,這就是回調機制帶來的性能提高。總之,做爲開發人員,不只要知其然還要知其因此然。算法
編程知識儲備編程
具有紮實的計算機基礎,較強的算法能力,熟練掌握C\C++等開發語言,熟悉敏捷開發流程。網絡
計算機基礎、算法能力,這些都是碼農們的基本技能,《計算機原理》、《數據結構》等等都是大學理工科的經典課程,不記得了能夠再回去翻一下,在此不作贅述。敏捷開發是當下比較流行的高效開發模式,以用戶的需求進化爲核心,採用迭代、按部就班的方法進行軟件開發,這方面的文章也不少就不展開來說了。咱們特別針對編程語言來說一講,爲何5G開發要首選C語言而不是其餘編程語言。衆所周知,ITU 爲 5G 定義了 eMBB(加強移動寬帶)、mMTC(海量大鏈接)、URLLC(低時延高可靠)三大應用場景。eMBB典型應用包括超高清視頻、虛擬現實、加強現實等。這類場景首先對帶寬要求極高,關鍵的性能指標包括100Mbps 用戶體驗速率(熱點場景可達1Gbps)、數十Gbps 峯值速率、每平方千米數十Tbps 的流量密度、每小時500km以上的移動性等,因此在5G開發當中對性能要求是放在第一位的。然而,目前的硬件工藝及技術發展已經接近瓶頸,如何可以更高效的利用系統資源在5G開發當中顯得尤其重要。C語言是一門貼近硬件的系統級編程語言,C語言的指針能夠直接操做內存,效率奇高,雖然出錯率和漏洞也爲人詬病,但瑕不掩瑜,這一點正好符合5G開發對性能和效率的極致追求。在這裏仍是想強調一下了解底層原理對學習新技術的巨大做用。不少碼農都以爲C語言實在難上手就放棄了,不想挑戰難度、也不想付出時間與經精力去學習更多更底層的內容。要知道幾乎全部的操做系統內核都是用C語言寫的,萬變不離其宗,不懂底層彙編,根本沒法準確瞭解內存和系統資源,這就像蓋樓不瞭解地基狀況同樣。拿破崙說過:「不想當元帥的士兵不是好士兵。」所以,對於各位有志於架構師的碼農們,從如今就開始啃C語言吧。數據結構
熟悉移動通訊協議多線程
熟悉移動通訊協議,具有LTE協議研發經驗,熟悉信令流程、協議。架構
移動通訊協議是個你們族,從何學起,每每沒有頭緒。尤爲剛來的程序員們,很容易就被一堆協議搞得頭大如鬥。其實通訊的基礎在於網絡,因此關於5G相關的協議開發如何上手,咱們能夠給出如下思路供你們參考:第一步,先弄清楚網橋、VLAN的原理,本身能夠作下實驗,找幾臺PC配置一下,再不濟用虛機跑一跑。瞭解單播、廣播、組播的概念,想清楚什麼狀況下要配置網橋,劃分VLAN。第二步,瞭解二層、三層的概念和區別,有條件的能夠從交換機配置入手,想更進一步的能夠去配置下路由器。明白靜態路由和動態路由的區別,幾個概念重點了解:IGP、BGP、OSPF、IS-IS、MPLS等等。第三步,這一步纔是真正入門,要作5G開發,前兩步理解的差很少了就能夠去讀一讀3GPP的協議文檔了。記得要讀英文原版哈,至於英語的重要性後面也會展開講一講。併發
軟技能
有較強的英文閱讀理解能力,具有較強的抗壓能力和良好的溝通技巧,優秀的團隊合做精神以及較強的執行能力,善於學習和挖掘、使用新技術。
這一條也是老生常談了。網上經常爆出英語無用論,而事實上,各種高新技術尤爲是創新技術仍是國外居多,原版的技術資料全是英文的,英文很差就只能用軟件翻譯或者等人餵食,而一般軟件翻譯的結果讓人一言難盡,等人翻譯估計黃花菜都涼了。還有底層協議開發,也是必須聽從英文規範,不懂不會就要走不少彎路。再好比碼農必備的Stack Overflow網站也是英文的,其技術答疑經常會有驚喜大禮包:不只給出一個問題多種不一樣的解決方案,還包括對這些解決方案的比較,以及大牛們的思考過程,甚至還有很多強力工具的特別附贈。建議各位就算沒有遇到問題,也能夠經常去瀏覽一下其中投票較多的問題,充實本身的知識體系。總而言之,英文是一扇面向世界的窗戶,有了它可以看得更遠,本身不會或者懶的開窗,那就本身在小黑屋慢慢摸索吧。偷偷吐槽一句,碼農的英語很差,連變量名都只能用漢語拼音定義哦。至於抗壓能力,碼農們都是通過千錘百煉的了,作到前面幾條,加上溝通技巧、團隊合做以及較強的執行力,這就是從此成長轉型的關鍵。至因而寫一生代碼仍是轉型管理抑或銷售及其餘,這就仁者見仁智者見智了。最後附上一首自創的《江城子》,送給屏幕前還在加班的碼農們,祝你們都能早日完美轉型,成功升職加薪~
十年IT終日忙,不開源,難自強。千頁文檔,需求又無常。縱使交付運維忙,痘爆頭,膚如糠。夜來加班忽感傷,格子間,冷暖嘗。相對無言,唯代碼萬行。願爲自主研發闖,泡機房,又何妨。
做者簡介:COCO,80後高級工程師,目前就任於廣州大型通訊國企,白天辦公室打雜,晚上實驗室碼字。
原文來自:https://blog.csdn.net/csdnnews/article/details/99256957
本文地址:https://www.linuxprobe.com/cxy-5g-dev.html編輯:張雄,審覈員:張文祥
Linux命令大全:https://www.linuxcool.com/