A. 想做程序員做後端都需要掌握哪些知識
目前掌握的僅能:
1,研發(基本吧,產品總得有人來做)
2,調優(主要是Mysql調優,在符合業務需求的情況下盡可能提高TPS)
3,運維(小公司不會像大公司一樣還標配運維,通常後端兼任運維職能)
擴展下:
研發:php入行,選個好框架(推薦Yaf),然後研發過程中多注意下性能,多用php本身的函數來解決需求,php本身函數豐富,而且都是C擴展,性能非常可靠。
調優:這個我實在不知道該放到研發還是運維,所以就單獨拿出來說。因為其實對於伺服器性能的調優本身兩邊都需要進行,一是研發時注意,二是各個軟體(主要是DB)的配置項。我的調優很粗暴,用阿里雲的壓力測試(耗費了公司一些錢財,罪過罪過)每次壓一分到5分鍾,然後看看瓶頸在哪裡,把配置項全部列出來,肉眼+自行判斷調整哪個參數看看能不能提升性能(233),我也會在代碼中把每個核心部分的消耗時間打入日誌,來判斷到底該進行哪裡的優化。
運維:主要分三部分,
快速部署:雖然是小公司,但是老闆有些資源,所以可以預計上線第一波的壓力不小,如果產品良好的情況下壓力只能會越來越大,所以要求如果感覺到系統有壓力後,需要快速進行橫向擴展系統,這里我選用的Puppet,理由很簡單:老牌,使用廣泛,社區強大。
監控報警:這是運維的眼睛,我選用的zabbix,理由跟上面一樣:老牌,使用廣泛,社區強大。
日誌採集:因為是集群的原因,看日誌不方便,最開始是用nfs來收集,後來隨著日誌越來越分散,日誌越來越大,沒用多久就被我拋棄了,然後在朋友的推薦下使用ELK進行日誌採集和查看。理由只是因為沒有別的更好選擇(朋友強烈推薦這個,其他的都是沒有啥強大社區,這個看著更靠譜點)
B. 程序員分前端與後端,那麼後端程序員都做些什麼看完就知道了
我剛開始做Web開發的時候,根本沒有前端,後端之說。
原因很簡單,那個時候伺服器端的代碼就是一切: 接受瀏覽器的請求,實現業務邏輯,訪問資料庫,用JSP生成HTML,然後發送給瀏覽器。
即使後來javascript在瀏覽器中添加了一些AJAX的效果,那也是錦上添花,絕對不敢造次。因為頁面的HTML主要還是用所謂「 套模板 」的方式生成:美工生成HTML模板,程序員用JSP,Veloctiy,FreeMaker等技術把動態的內容添加上去,僅此而已。
那個時候最流行的圖是這個樣子:
在最初的J2EE體系中,這個 表示層 可不僅僅是瀏覽器中運行的頁面,還包括Java寫的桌面端,只是Java在桌面端太不爭氣, 沒有發展起來。
每個程序員都是所謂 「全棧」工程師 ,不僅要搞定HTML, JavaScript, CSS,還要實現業務邏輯,編寫訪問資料庫的代碼。等到部署的時候,就把所有的代碼打成一個WAR包,往Tomcat指定的目錄一扔,測試一下沒問題,收工回家!
不差錢的公司會把程序部署到Weblogic,Websphere這樣的應用伺服器中,還會用上高大上的EJB。
雖然看起來生活「簡單」又「愜意」,但實際上也需要實現那些多變的、不講邏輯的業務需求,苦逼的本質並沒有改變。
隨著大家對瀏覽器頁面的 視覺和交互 要求越來越高,「套模板」的方式漸漸無法滿足要求,這個所謂的表示層慢慢地遷移到瀏覽器當中去了,一大批像Angular, ReactJS之類的框架崛起,前後端分離了!
後端的工程師只負責提供介面和數據,專注於業務邏輯的實現,前端取到數據後在瀏覽器中展示,各司其職。
像Java這樣的語言很適合去實現復雜的業務邏輯,尤其是一些MIS系統,行業軟體如稅務、電力、煙草、金融,通信等等。 所以剝離表示層,只做後端挺合適的。
但是如果僅僅是實現業務邏輯,那後端也不會需要這么多技術了,搞定SSH/SSM就行了。
互聯網,尤其是移動互聯網開始興起以後,海量的用戶呼嘯而來,一個單機部署的小小War包肯定是撐不住了,必須得做分布式。
原來的單個Tomcat得變成Tomcat的 集群 ,前邊弄個Web伺服器做請求的 負載均衡, 不僅如此,還得考慮狀態問題,session的一致性。
(註:參見文章《小白科普:分布式和集群》)
業務越來越復雜,我們不得不把某些業務放到一個機器(或集群)上,把另外一部分業務放到另外一個機器(或集群)上,雖然系統的計算能力,處理能力大大增強,但是這些系統之間的通信就變成了頭疼的問題, 消息隊列 (MQ), RPC框架 (如Dubbo)應運而生,為了提高通信效率,各種 序列化的工具 (如Protobuf)也爭先空後地問世。
單個資料庫也撐不住了,那就做資料庫的 讀寫分離 ,如果還不行,就做 分庫和分表 ,把原有的資料庫垂直地切一切,或者水平地切一切, 但不管怎麼切,都會讓應用程序的訪問非常麻煩,因為數據要跨庫做Join/排序,還需要事務,為了解決這個問題,又有各種各樣「 數據訪問中間件 」的工具和產品誕生。
為了最大程度地提高性能,緩存肯定少不了,可以在本機做緩存(如Ehcache),也可以做 分布式緩存 (如Redis),如何搞 數據分片 ,數據遷移,失效轉移,這又是一個超級大的主題了。
互聯網用戶喜歡上傳圖片和文件,還得搞一個 分布式的文件系統 (如FastDFS),要求高可用,高可靠。
數據量大了,搜索的需求就自然而然地浮出水面,你得弄一個支持全文索引的 搜索引擎 (如Elasticsearch ,Solr)出來。
林子大了,什麼鳥都有,必須得考慮 安全 ,數據的加密/解密,簽名、證書,防止SQL注入,XSS/CSRF等各種攻擊。
前面提到了這么多的系統,還都是分布式的,每次上線,運維的同學說:把這么多系統協調好,把老子都累死了。
得把持續集成做好,能自動化地部署,自動化測試(其實前端也是如此),後來出現了一個革命化的技術 docker , 能夠讓開發、測試、生成環境保持一致,系統原來只是在環境(如Ngnix, JVM,Tomcat,MySQL等)上部署代碼,現在把代碼和環境一並打包, 運維的工作一下子就簡化了。
公司自己購買伺服器比較貴,維護也很麻煩,又難於彈性地增長,那就搞點虛擬的伺服器吧,硬碟、內存都可以動態擴展(反正是虛擬的), 訪問量大的時候多用點,沒啥訪問量了就釋放一點,按需分配,很方便,這就是 雲計算 的一個場景。
隨著時間的推移,各個公司和系統收集的數據越來越多,都堆成一座大山了,難道就放在那裡白白地浪費硬碟空間嗎?
有人就驚奇地發現,咦,我們利用這些數據搞點事情啊, 比如把數據好好分析一下,預測一下這個用戶的購買/閱讀/瀏覽習慣,給他推薦一點東西嘛。
可是這么多數據,用傳統的方式計算好幾天甚至好幾個月才能出個結果,到時候黃花菜都涼了,所以也得利用分布式的技術,想辦法把計算分到各個計算機去,然後再把計算結果收回來, 時勢造英雄, Hadoop 及其生態系統就應運而生了。
之前聽說過一個大前端的概念,把移動端和網頁端都歸結為「前端」,我這里造個詞「大後端」,把那些用戶直接接觸不到的、發生在伺服器端的都歸結進來。
現在無論是前端還是後端,技術領域多如牛毛,都嚴重地細分了,所以 我認為真正的全棧工程師根本不存在,因為一個人精力有限,不可能搞定這么多技術領域,太難了 。
培訓機構所說的「全棧」,我認為就是前後端還在拉拉扯扯,藕斷絲連,沒有徹底分離的時候的「全棧」工程師。
那麼問題來了, 後端這么多東西,我該怎麼學?
之前寫過一篇文章叫做《上天還是入地》,說了學習的廣度和深度,在這里也是相通的。
往深度挖掘,可以成為某個技術領域的專家,如搜索方面的專家、安全方面的專家,分布式文件的專家等等,不管是哪個領域,重點都不是學會使用某個工具和框架, 而是保證你可以自己的知識和技術去搞定這個領域的頂尖問題。
往廣度發展,各個技術領域都要了解,對於某種需求,能夠選取合適的軟體和技術架構來實現它,把需求轉化成合適的技術組件,讓這些組件以合適的方式連接、部署、運行,這也需要持續地學習和不斷的經驗積累。
最後,以一張漫畫來結束吧!
C/C++高級工程師學習路線圖:
C. 關於後端程序員寫前端用什麼框架更好
前端框架好不好用還是要具體情況具體分析,我這邊給你推薦11個前端常用的框架,你可以按需使用。
1、vue-element-admin
一個基於vue2.0和Element的控制面板UI框架,這是使用vue技術棧開發的前端程序員的首選管理系統模板,模板已經非常成熟了,並且有相關的社區和維護人員,開發時遇到問題也不要慌。
2、AdmimLTE
非常流行的基於Bootstrap 3.x的免費的後台UI框架,這是一個非常老牌的後台管理系統模板,每個頁面都是單獨的html網頁,適合前端入門新手來做項目。
3、ant-design-pro
這個就不多說了,選擇react技術棧的童鞋們必然離不開這個優秀的開箱即用的中台前端/設計解決方案,文檔齊全,組件豐富,一鍵生成模板,更支持開啟復制粘貼模式哦。
4:ng2-admin
這是基於 Angular 2, Bootstrap 4 和 Webpack的後台管理面板框架,要說前面已經有了react和vue技術棧的模板,那怎麼能少的了ng的?雖然在國外用的比較多,國內較少使用,但絲毫不影響ng作為前端框架三大巨頭之一的地位呀。
9:material-dashboard
基於 Bootstrap 4 和 Material 風格的控制面板。Material Dashboard 是一個開源的 Material
Bootstrap Admin,其設計靈感來自谷歌的 Material Design 。
10:d2-admin
D2Admin 是一個完全 開源免費 的企業中後台產品前端集成方案,基於 vue.js 和 ElementUI 的管理系統前端解決方案 ,小於 60kb的本地首屏 js 載入,已經做好大部分項目前期准備工作
11:vuestic-admin
vuestic-admin管理台儀表盤是一個響應式的儀表盤模板,採用Bootstrap4和Vue.js構建。這個精美的管理台模板提供了自定義元素組件,如地圖,聊天,個人資料卡,圖標,進度條等,以及用於登錄和注冊的預建頁面。
D. 後端開發都需要那些技術
後端主要是讓伺服器、應用、資料庫能夠彼此交互,需要考慮如何實現功能、數據的存取、平台的穩定性與性能等。常用的腳本語言有php、 java 、 python、C、C++等,以java為例主要用到的技術包括但不限於Struts、spring、springmvc 、Hibernate、Http協議、Servlet、Tomcat伺服器等
第一,Servlet技術。Servlet技術是Java後端的重要技術之一,作為Java Web開發的核心組件,Servlet承擔了Web MVC結構中的核心作用(功能導航)。傳統的Model2結構(Servlet+JavaBean+JSP)雖然在目前已經很少使用了,但是Web開發的基本結構依然沒有改變。Servlet技術的應用涉及到Web容器、會話(HttpSession)、安全、同步、Web應用部署等相關內容。
第二,Java操作資料庫。後端開發免不了與資料庫打交道,所以掌握Java的資料庫操作是一個基本要求。Java操作資料庫涉及到的內容有JDBC、JNDI、RMI、DAO等內容,其中使用RMI+JDBC是構建java資料庫開發的一個常見的解決方案,而JNDI則是對各種資源的定義。
第三,Spring框架。Spring+SpringMVC+MyBatis是目前一個比較常見的後端開發方案,Spring的原理就是構建了一個「業務組件容器」,SpringMVC則是Web MVC的一個具體實現框架,而MyBatis則是一個基於DAO的實現框架。從性能的角度來說,Spring是EJB的輕量級解決方案,得到了廣大Java程序員的歡迎。如果有Servlet以及資料庫操作的基礎,那麼學習這幾個框架的使用是一件非常輕松的過程。雖然基於Spring的編程比較方便,但是Spring也有缺點,比如配置文件過於繁瑣。
第四,結合hadoop構建Java的分布式開發。Java的分布式開發是提高Java後端處理能力的重要內容,RMI是Java分布式開發比較常見的解決方案,學習起來也比較簡單
E. java後端程序員最常用的技術有哪些,重點技術有哪些
Java學習路線,希望看完之後能給你帶來幫助。
第一步學習JavaEE基礎
Java是一種面向對象的編程語言,所以首先需要從基礎學起,只有前期打牢基礎,之後深入學習才能游刃有餘。那麼基礎學習首先從基礎語法、面向對象、核心類庫、集合、異常、IO、線程、網路編程、反射、JDK1.8新特性這幾個方面展開,學習基礎階段培養面向對象的編程思想、充分理解並運用Java面向對象思想來進行程序開發、從過程到面向對象編程的轉變、,深入理解常用集合類的用法、集合的特點、內存理解以及使用;掌握多線程的概念、創建方式、同步、網路編程的基本概念等。
第二步學習JavaWeb開發
JavaWeb開發是學習Java中必不可少的內容,雖然Java是偏向於後台開發的,但是前後端不可能完全分離,後端開發人員也需要掌握一定的前端技能。JavaWeb開發可以從前端技術、MySQL、JDBC&JDBCUtils、XML、伺服器&Servlet、JSP、AJAX幾點來學習,以此來掌握使用HTML、CSS進行前端界面的設計、掌握對JavaScript、JQuery基本語法的使用;掌握XML的解析方式、掌握伺服器的概念以及其配置、熟悉Servlet開發規范和相關概念、JSP基本原理、Session和Cookie、過濾器和監聽器的使用、以及Ajax非同步請求。
第三步Java高級框架
雖然說Java框架有很多,但是比較常用和主流的還是比較固定的,靈活的使用框架可以讓開發者在實際開發中,減少很多重復的代碼、讓代碼的結構更加清晰,後期維護方便。從現在的開發環境來看SpringMVC、Mybatis、Spring、Oracle、Linux&Redis&Nginx、Maven是現在普遍使用的主流框架,掌握之後可以實現從原理、應用、擴展等全方位角度熟練使用,最終可以搭建自己的平台。
第四步分布式項目實戰
學習的最終目的就是上手實操,根據項目需求開發功能,那麼實戰就顯得尤為重要了,所以最後一步是項目實戰,那Git、SpringBoot、SpringCloud 等主流技術必定是需要熟練掌握的,通過學習掌握分布式調用技術任務調度以及項目相關模塊之間的開發和關聯,從而達到實現功能開發目的。
初學Java你需要學習JDK,JDK是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包括了Java運行環境,一些Java工具和Java的核心類庫。不論什麼Java應用伺服器實質都是內置了某個版本的JDK。所以學好JDK是掌握Java的第一步。
學好JDK後,還有其他幾種軟體如果你感興趣也可以學一學,這幾種軟體分別為:Eclipse:一個開放源代碼的、基於Java的可擴展開發平台;EditPlus:文本編譯工具,初學者可以使用EditPlus編譯執行Java程序;NetBeans:開放源碼的Java集成開發環境,適用於各種客戶機和Web應用;IntelliJ IDEA:可以用於代碼自動提示、代碼分析等;MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程序集成開發環境;SQL Server:資料庫軟體,做web開發會用到這個軟體。
綜上可以看出,學習Java需要的軟體不少,如果自學一個個了解過去的話比較費時間,而報班就不同了,報班學習會有老師帶著你一步步下載、安裝、學習各個軟體,這樣不但能節省很多時間,還能讓你把這些軟體掌握的更好。
Java學習上手比較難,需要的軟體也多種多樣
Java框架可以簡化開發難度,更便於我們開發程序。所以學好Java框架還是比較重要的。Java的框架主要有:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。不過這十個我們不需要都學會,只要學會其中四五個比較常用的就可以。
第一個,SpringMVC。Spring MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,主要是幫助我們簡化日常的Web開發;第二個,Mybatis。MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架;第三個,Spring。Spring深得企業的青睞;第四個,Maven。越來越多的開發人員開始使用maven。
掌握以上四種框架,你在找工作的時候就會比較吃香。不過想把這四種框架學會也不容易。不了解Java的人可能看的都一頭霧水更別說學習了。這是因為想要學習Java框架還要從Java的基礎部分學起。而從基礎部分自學到Java框架,花費的時間就長了。
所以小編建議大家報班學習Java,培訓班的學習時長為半年左右。相比於自學,耗時少了不少。而且培訓班不止能幫助你快速掌握理論知識,還有實戰項目助你鞏固所學。例如優就業的Java課程在Java框架部分,每個框架都對應一個小項目。這一階段學完後還會有一個大項目讓學員練手,增加學員的項目開發經驗。所以報班學習更容易學會Java。
F. 軟體開發後台主要做什麼
軟體開發後台(後端程序員)要跟資料庫打交道,做數據的處理問題。
根據正在處理的應用程序的大小和范圍,後台開發人員要做的事情有很大的不同。但總體來說工作於都是對應用程序中的業務邏輯,以及從前端提取和檢索數據。
在Web開發世界中,後端開發人員從事於構建他們正在工作的應用程序背後的實際邏輯。
例如:前端開發人員在應用程序中創建一個界面,上面有一個按鈕,按下按鈕來獲取客戶的數據。後端開發人員寫可使得按鈕工作的代碼,通過指出從資料庫中提取哪些數據並將其傳回到前端(並最終顯示在那裡)。
後端開發人員也會大量參與系統架構,決定如何組織系統的邏輯,以便能夠正常維護和運行。需要參與構建框架或系統架構,以便於更容易編寫程序。後端開發人員比前端開發人員花費更多的時間在實現演算法和解決問題上。
(6)後端程序員怎麼配合開發擴展閱讀
軟體後台開發的主要技術和技能舉例(以java為例):
1、後台框架部分,SpringMVC
SpringMVC基於Java實現了WebMVC設計模式,請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將Web層進行職責解耦;
2、數據持久層方面,MyBatis
MyBatis持久層框架支持定製化SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的JDBC代碼和手動設置參數以及獲取結果集。MyBatis可以使用簡單的XML或註解來配置和映射原生類型、介面和Java的POJO為資料庫中的記錄。
3、資料庫層技術,jdbc
JDBC(java資料庫連接)用於執行SQL語句的JavaAPI,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據此可以構建更高級的工具和介面,使資料庫開發人員能夠編寫資料庫應用程序。
4、緩存技術,redis
Redis是一個開源的使用ANSIC語言編寫、支持網路、可基於內存亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
5、搜索引擎技術,elasticsearch
ElasticSearch基於Lucene的搜索伺服器,提供了一個分布式多用戶能力的全文搜索引擎,基於RESTfulweb介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。