1、什麼是運維工程師?
運維工程師,伺服器與系統安全穩定的掌舵者!當一個產品(如Web網站、APP軟體、網路游戲等)正式上線後,產品、開發、測試類的工作就正式結束了,接下來的維護和管理工作就會全部移交給運維工程師。
運維工程師的主要工作職責就是負責伺服器的架構設計以及雲計算平台管理,保障軟體的穩定運行。沒有開發以及測試類工作復雜且工作解決方案相對固定。更重要的是沒有年齡以及學歷的限制,隨著工作年限和工作經驗地增長,也會越老越吃香。
2、運維工程師工作場景
運維學科2019全年所有班級就業率93.5%,平均薪資8.7k起,最高薪資25k* 14薪
三、運維課程
運維基礎:運維發展史、計算機概述、計算機組成、操作系統學完此階段可掌握的核心能力:熟練掌握Linux操作系統的安裝(CentOS7.6)、配置、基礎命令、VIM編輯器、用戶管理、許可權管理、自有服務、進程檢測與控制、阿里雲平台管理、開源CMS項目上線部署實戰。
Linux操作系統:Linux系統概述、虛擬機、CentOS7.6系統安裝,Linux基礎命令
Linux下文件管理(上):文件命名規則、目錄管理、文件管理、文件復制與剪切、重命名、Linux文件打包與壓縮、文件處理命令
Linux下文件管理(下):VIM編輯器介紹、VI與VIM的區別、VIM安裝與配置、四種工作模式(命令模式,編輯模式,末行模式,可視化模式)、相關VIM指令、VIM擴展功能、VIM總結
Linux下用戶管理:用戶和組的相關概念、用戶組管理、用戶管理、用戶密碼設置、切換用戶、Linux用戶管理實戰
Linux下許可權管理:許可權的基本概念、許可權在生產環境中的作用、Linux許可權類別(rwx)、Linux文件所有者類別(ugo)、普通許可權設置(字母+數字)、文件屬主與屬組設置、高級許可權、ACL許可權控制、umask
Linux下自有服務+軟體包管理:自由服務概述、systemctl管理服務命令、ntp時間同步服務、firewalld防火牆、crond計劃任務、設備掛載與解掛、rpm包管理工具
Linux進程檢測與控制:進程與程序的概念、進程管理命令(top命令,free命令,df命令,ps命令,netstat命令,kill命令與killall命令)、進程優先順序設置
阿里雲平台管理與開發CMS項目上線部署實戰:雲計算平台概述、阿里雲平台注冊、登錄與管理、項目背景、LAMP環境概述、YUM指令、LAMP環境搭建、開源CMS項目上線部署實戰
學完此階段可解決的現實問題:能夠根據企業實際項目需求實現伺服器部署與架構。
學完此階段可擁有的市場價值:熟練掌握之後,可以滿足市場對初級運維工程師的需求,但是市場就業工資相對較低,還是建議繼續學習就業班課程。
Linux高級指令:基礎命令回顧、find命令之高級搜索、tree命令、scp文件上傳與下載、計劃任務crontab + tar實現定時備份、用戶管理高級、文件許可權管理高級
Linux下軟體包管理:軟體包管理任務背景、Linux下軟體包概述、RPM包管理工具、YUM包管理工具、YUM源配置(公網YUM源,本地YUM源、自建YUM源倉庫)、源碼安裝概述、源碼安裝三步走、源碼安裝實戰
Linux遠程管理服務SSH:SSH任務背景、SSH服務概述,yum源配置,SSH服務安裝與配置實戰,公私鑰概念,SSH免密碼登錄
Linux數據同步RSYNC:RSYNC任務背景、RSYNC介紹、RSYNC基本語法、本機同步與遠程同步、把RSYNC作為系統服務、RSYNC結合INOTIFY實現實時同步、RSYNC託管XINETD
Linux下文件共享服務FTP、NFS、SAMBA:文件共享任務背景、FTP服務介紹、FTP工作模式(主動模式+被動模式)、FTP服務搭建、客戶端工具(ftp、lftp使用)、FTP訪問控制、NFS服務介紹、NFS服務搭建、配置文件詳解、NFS任務背景及解決方案、SAMBA服務介紹、SAMBA服務搭建、配置文件詳解、文件共享服務總結
DNS域名管理服務:DNS服務介紹、DNS的作用、DNS服務搭建、正向解析、反向解析、多域搭建、NTP時間伺服器、主從DNS架構
源碼構建LAMP環境及部署業務應用:LAMP任務背景、Web伺服器環境准備、軟體編譯回顧、編譯安裝MySQL、編譯安裝Apache、編譯安裝php、後期配置、Web應用系統部署實戰
Linux下日誌管理服務RSYSLOG:日誌管理任務背景、查看日誌、日誌管理服務(RSYSLOG概述,日誌列表,日誌級別,相關符號,配置文件)、RSYSLOG本地日誌管理、RSYSLOG遠程日誌管理、日誌管理應用實踐
Linux 磁碟管理:磁碟管理任務背景、磁碟管理概述、fdisk命令詳解、Linux分區概述、Linux分區實戰、邏輯卷介紹、邏輯卷基本概念(PV、VG、PE、LV)、邏輯卷LVM應用操作實戰、RAID介紹、RAID常見級別、軟硬RAID、軟RAID應用實踐
Shell腳本編程:Shell概述、變數、Shell流程式控制制、Shell數組、Shell函數、Shell特殊用法、正則表達式、Shell編程實戰
資料庫DBA:MySQL概述,MySQL5.7安裝,MySQL配置,MySQL基本操作、SQL語句詳解、MySQL索引、MySQL備份與還原、MySQL主從復制、MHA高可用架構、MySQL企業級應用實戰
學完此階段課掌握的核心能力:
1、了解Linux系統運行原理,實現Linux伺服器的維護與管理;
2、了解Linux系統相關服務,能根據企業需求實現企業運維工作。
學完此階段可解決的現實問題:能實現企業Linux伺服器的日常維護與管理,搭建SSH、文件共享、DNS、Apache等服務、能獨立完成系統日誌分析、Shell腳本編程、資料庫DBA等相關工作。
學完此階段可擁有的市場價值:熟練學習和掌握後,可滿足企業運維的初中級需求。
源碼構建企業級LNMP架構及電商系統上線部署:千萬級商城系統架構設計任務背景、Web項目開發流程、Linux伺服器環境准備、LNMP環境概述、MySQL資料庫服務搭建、Nginx軟體服務搭建、PHP軟體服務搭建、Web商城項目部署上線
大型WEB服務軟體Nginx部署介紹使用:Nginx軟體概述、Nginx平滑升級、nginx.conf配置文件詳解、虛擬主機配置、Nginx默認官方模塊詳解(GZIP壓縮,客戶端緩存,反向代理,基於IP/用戶的訪問控制,目錄顯示)、日誌管理、日誌輪轉、第三方日誌管理軟體GoAccess、Location區塊、URL重寫、第三方模塊安裝與配置、Nginx安全管理、Nginx其他衍生版本(Tengine,OpenResty)
WEB高可用集群架構設計及實現(keepalived):WEB高可用集群架構設計任務背景、單點資料庫遷移、HA高可用集群概述、Keepalived軟體介紹、Keepalived組成和原理、VRRP協議、安裝與配置Keepalived、Nginx服務高可用實踐、Keepalived擴展內容(非搶占模式、VIP腦裂、單播模式)
WEB負載均衡伺服器集群架構設計及實現LB(Nginx/LVS/HAProxy):WEB負載均衡伺服器集群架構設計任務背景、為什麼需要LB負載均衡技術、LB負載均衡架構圖、負載均衡分類、常見負載均衡實現方式、LB負載均衡環境准備、Nginx負載均衡實現、負載均衡演算法、Session共享解決方案、高可用負載實踐; LVS概述、LVS工作原理、LVS核心組件、LVS三種工作模式(NAT模式、DR模式、TUN隧道模式)、LVS/NAT原理和特點、LVS/DR原理和特點、LVS/TUN原理和特點、LVS的十種調度演算法、LVS/NAT模式部署實踐、LVS/DR模式部署實踐; HAProxy概述、HAProxy安裝與部署、haproxy.cfg配置文件詳解、常見問題分析、HAProxy調度演算法、HAProxy負載均衡應用實踐
MyCAT讀寫分離:MySQL讀寫分離任務背景、讀寫分離的目的、讀寫分離常見的實現方式、搭建M-S主從復制、代碼實現讀寫分離、MyCAT實現讀寫分離實戰(JDK配置、MyCAT配置文件詳解、讀寫分離實踐、高可用實踐、分庫分表、MyCAT企業級案例實踐)
非關系型資料庫NoSQL(Memcache/Redis/MongoDB):非關系型資料庫任務背景、Web項目訪問流程、優化方案、緩存技術引入、memcached介紹、memcached安裝與部署、telnet客戶端使用、memcached指令詳解、memcached tools工具使用、LRU失效機制、PHP memcached擴展安裝、Session入memcached、緩存項目的熱點數據; Redis介紹、Redis應用場景、Redis源碼安裝、客戶端工具使用、Redis數據結構詳解、數據持久化操作(快照+AOF)、企業級案例(主從,安全限制,PHP Redis擴展,Session入Redis);MongoDB任務背景、MongoDB安裝和配置、數據結構類型操作CURD、MongoDB安全設置、PHP擴展、桌面管理軟體、企業級日誌統計實踐
java項目架構設計實戰(LNTM架構):Java項目任務背景、Tomcat概述、Tomcat安裝與部署、Tomcat企業級管理、Host虛擬主機配置、Server Status伺服器狀態、應用管理、Nginx動靜分離、Nginx+Tomcat負載均衡、Maven概述、Maven項目打包、Maven項目部署
存儲(NAS/SAN/GlusterFS/Ceph):存儲概述、Linux存儲分層、存儲的分類(DAS,NAS,SAN)、存儲類型的分類(文件存儲、塊存儲、對象存儲)、SAN的分類、IP-SAN之iscsi實現; 分布式存儲、Glusterfs介紹、raid級別回顧、常見卷的模式、Glusterfs集群、環境准備、集群部署、創建glusterfs存儲卷、客戶端使用、卷的刪除、常見卷類型(stripe模式、distributed模式、distributed-replica模式、dispersed模式、distributed-dispersed模式)、其它卷類型、glusterfs分部署存儲應用實戰; 認識Ceph、Ceph架構原理圖、Ceph集群、Ceph集群組件、Ceph集群環境准備、Ceph集群部署實踐、RADOS原生數據存取、Ceph文件存儲、Ceph塊存儲、Ceph對象存儲、Ceph對象存儲+owncloud打造雲盤系統、Ceph Dashboard(拓展)
配置自動化(Ansible/SaltStack):自動化運維任務背景、認識ansible、ansible安裝與配置、伺服器分組、ansible模塊(hostname模塊,file模塊,模塊,yum模塊,service模塊,command和shell模塊,scriYAML格式pt模塊)、playbook介紹、playbook實例、playbook編排應用、roles介紹、roles的目錄結構、roles應用案例; saltstack介紹、saltstack安裝與配置、saltstack遠程執行命令、grains、pillar、配置管理文件、配置管理目錄、配置管理命令、配置管理計劃任務、其他命令、salt-ssh使用
企業級監控平台(Zabbix/Prometheus):企業級監控任務背景、監控的目的、主流的開源監控平台、Zabbix概述、Zabbix伺服器安裝、Zabbix監控本機與遠程主機、模板、監控項與應用集、圖形、觸發器、報警、Zabbix代理、主動監控與被動監控、Zabbix應用部署實戰; 認識Prometheus、Prometheus原理架構圖、Prometheus監控安裝部署、Prometheus監控遠程主機、遠程MySQL、Grafana介紹、Grafana安裝與登錄、Prometheus結合Grafana實現Linux系統監控、CPU監控、MySQL監控等等、Grafana報警系統實踐
企業級日誌分析(ELK/Kafka):ELK任務背景、ELK概述、elasticsearch部署、elasticsearch基礎概念、elaticsearch基礎API操作、ES查詢語句、elasticsearch-head、logstash簡介、logstash部署、日誌採集、採集messages日誌、採集多日誌源、kibana介紹、kibana部署、kibana漢化、通過kibana查看集群信息、通過kibana查看logstash收集的日誌索引、通過kibana做可視化圖形、filebeat介紹、filebeat收集日誌、filebeat傳輸給logstash、filebeat收集nginx日誌、filebeat日誌過濾
CI/CD(Git、Gitlab、Jenkins):CI/CD任務背景、版本控制概念、Git安裝、Git身份設置、Git創建本地倉庫、Git暫存區、Git版本控制、Git分支管理、擴展:Windows版Git; Github概述、GitHub注冊、創建項目、遠程倉庫、免密push、分支、多人協作; GitLab介紹、GitLab下載、安裝與配置、GitLab配置、倉庫管理、持續集成(CI)、持續交付(CD)、藍綠部署、滾動更新、灰度發布
運維安全(SSL與CA認證/防火牆/ VPN/JumpServer與Teleport跳板機):運維安全任務背景、運維安全概述、硬碟分區加密(擴展)、對稱加密、非對稱加密、數字簽名、SSL與CA認證、SSL介紹、CA認證介紹、https應用實踐; 防火牆概述、iptables的應用、iptables防火牆結構、iptables基本語法、iptables四表五鏈、企業級防火牆規則設置、firewalld包過濾、firewalld與iptables的區別、firewalld防火牆規則設置、firewall-config圖形模式; VPN任務背景、隧道介紹、net-to-net隧道通訊、VPN介紹、IPSec協議、libreswan實現net-to-netVPN、三網路VPN互聯、roadwarrior VPN(libreswan實現點對網VPN,openvpn實現點對網vpn,使用pptpd實現VPN),PAM認證,LDAP,開源堡壘機jumpserver,輕量級開源堡壘機teleport(拓展)
學完此階段可掌握的核心能力:
1、 具備Linux伺服器架構設計能力,保證應用架構合理可控;
2、具備監控檢查系統軟硬體運行狀態,保證系統安全穩定運行的能力;
3、具備CI/CD持續集成/持續支付能力;
4、具備配置自動化以及日誌分析能力;
5、具備解決復雜問題和技術難點的能力。
學完此階段可解決的現實問題:
1、掌握Java、PHP伺服器架構能力;
2、能夠獨立搭建企業級高可用伺服器(集群、高可用、負載均衡、緩存、存儲);
3、掌握阿里雲/華為雲產品實戰;
4、能使用Zabbix/Prometheus搭建企業級監控;
5、能夠熟練掌握CI/CD持續集成/持續支付工具;
6、能夠使用Ansible/SaltStack實現運維自動化;
7、能使用ELK實現企業級日誌分析;
8、能夠掌握常見運維安全防護手段。
學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux運維行業中高級需求。
KVM虛擬化:KVM任務背景、計算機工作原理、虛擬化概述與分類、KVM環境准備、KVM安裝、使用KVM安裝虛擬機、KVM基礎管理命令、KVM配置文件、KVM克隆、KVM網路管理、快照、設備管理、存儲池管理、磁碟鏡像管理、虛擬機快速創建腳本
公有雲運維(阿里雲[ECS/RDS/SLB/CDN/OSS/NFS]):公有雲任務背景、阿里雲概述、VPC專有網路、阿里雲安全組、雲伺服器ECS、自定義鏡像、阿里雲SLB、阿里雲RDS、阿里雲存儲(NAS與OSS)、CDN、域名與域名解析、SSL證書、數據傳輸DTS、雲監控、DDOS高防、容器服務、公有雲企業級案例應用實踐
私有雲運維之OpenStack平台:私有雲任務背景、OpenStack概述、OpenStack組件及其作用(Compute 計算服務、Networking 網路服務、Object Storage 對象存儲、Block Storage 塊存儲服務、Identity 身份認證、Image Service 鏡像服務、Dashboard UI頁面、Metering 測量服務、Orchestration 編排部署、Database Service 雲資料庫)、OpenStack自動部署、OpenStack手工部署、OpenStack雲平台應用實踐
Docker容器技術:Docker容器技術任務背景、PAAS平台介紹、認識容器、Docker介紹、Docker內核技術(NameSpace,Control Group,LXC與docker區別)、Docker環境准備、Docker軟體安裝、Docker Daemon管理、鏡像、容器、倉庫、Docker存儲驅動、Docker應用實踐、Dockerfile概述、使用Dockerfile構建鏡像、單宿主機容器互聯方式、Docker網路、Docker的Web管理平台、Docker三劍客(Docker machine、Docker compose、Docker swarm)、Docker容器應用部署實踐
Kubernetes(K8S)容器編排工具:Kubernetes(K8S)容器編排任務背景、認識容器編排、Kubernetes概述、Kubernetes架構、集群部署方式、Kubeadm部署Kubernetes集群、集群與節點信息、節點標簽、namespace命名空間、工作負載(workloads)、pod概述、pod分類、pod的YAML格式、pod資源限制、pod調度、pod生命周期、pod控制器、service、ingress controller、kubernetes存儲卷、ceph集群部署、ConfigMap、Secret、PV與PVC、API網關 kong、包管理方案 helm2、存儲解決方案 GlusterFS、服務網格 istio、監控解決方案 heapster、應用實踐 gitlab-ce、應用實踐 jenkins、應用實踐 kafka、應用實踐 zookeeper應用實踐 配置中心Apollo
綜合案例:Docker+K8S企業級項目應用實踐
學完此階段可掌握的核心能力:
1、熟練掌握虛擬化技術;
2、掌握公有雲與私有雲架構實戰;
3、熟練使用容器與容器編排工具;
4、熟練掌握企業級雲計算技術應用實踐。
學完此階段可解決的現實問題:
1、能夠使用KVM實現虛擬化;
2、能夠掌握公有雲與私有雲伺服器架構實戰;
3、能夠熟練使用Docker容器;
4、能夠熟練使用Kubernetes(K8S)容器編排工具;
5、能夠熟練掌握Docker+Kubernetes(K8S)項目架構設計
學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux雲計算架構工程師的高級需求。
HTML5:HTML簡介、HTML標簽詳解、字元編碼的奧秘、HTML5新特性與常用標簽
CSS3:CSS簡介、CSS的引入方式、CSS基本選擇器、CSS屬性、盒子模型、CSS浮動、CSS3新特性與常用屬性、CSS應用案例
Bootstrap:Bootstrap環境搭建、全局樣式、網頁排版、表單、圖片及輔助類、網頁布局、Bootstrap組件、CMDB後檯布局實戰
JavaScript/Ajax/jQuery:JavaScript簡介、Javascipt語法基礎、BOM模型、DOM模型、Ajax概述、Ajax中的get與post請求、Ajax案例、jQuery框架概述、jQuery選擇器、jQuery事件、jQuery與Ajax、JavaScript應用實踐
Python基礎:Python概述、Python環境部署、變數、標識符和關鍵字、輸入和輸出、數據類型轉換、條件控制語句和循環語句、容器類型、函數、文件操作
Python高級:面向對象、異常處理、模塊和包、Python與MySQL應用實踐
Django框架:Django框架介紹、Django模型、ORM及資料庫操作、視圖及模板、Django中間件
綜合項目:Python+Django實現CMDB企業自動化運維平台
學完此階段可掌握的核心能力:
1、掌握Web前端開發相關技術如HTML5/CSS3/JavaScript;
2、掌握Python運維相關模塊;
3、掌握Python Django框架;
4、具備一定的Python運維開發能力。
學完此階段可解決的現實問題:
1、具備一定的編程思維,為未來系統架構師鋪路搭橋;
2、能夠熟練掌握Python運維相關模塊實現運維管理;
3、能夠使用Python+Django開發企業自動化運維平台。
學完此階段可擁有的市場價值:熟練掌握和學習後,可滿足Linux運維行業的高級需求。
❷ 1024程序員節的由來
2002年,俄羅斯程序員Valentin Balt收集簽名,向俄羅斯聯邦政府請願將9月13日設定為程序員節。
2009年9月11日,俄羅斯總統梅德韋傑夫在節日安排方案上簽了名,「程序員節」從此成為了俄羅斯的一個正式節日。除了俄羅斯之外,其他國家的一些程序員社區也會慶祝這個節日。因為它是每年的第256天(閏年就是9月12日)。256這個數字對程序員來說有著特別的意義,1個位元組(等於8位元)最多能表示256個數值,而且在整年中,256是2的最大冪中小於365的值。
在中國,有人提議把10月24日定為中國的程序員節,因為1024不僅同樣是程序員的一個常用數字,而且10月24日這個日期非常直觀,也不會在平年和閏年有所變化。
(2)運維狗和程序員擴展閱讀:
一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員、系統架構師、運維測試工程師等。
在1834年,人稱「數字女王」的阿達·洛芙萊斯(Ada Lovelace)的朋友英國數學家、發明家兼機械工程師查爾斯·巴貝其(Charles Babbage)發明了一台分析機;阿達則致力於為該分析機編寫演算法,並於1842年,編寫了歷史上首款電腦程序。
1843 年公布了世界上第一套演算法。巴貝其分析機後來被認為是最早期的計算機雛形,而阿達的演算法則被認為是最早的計算機程序和軟體。運行程序的硬體進制是以1024為基礎的。例:1G=1024M ;1M=1024KB。
❸ 計算機分哪幾個專業
# 硬體
### 硬體工程師
指在計算機領域里,需要接觸到電路底層的工程師,實際上在電氣領域,在電方向上分為強電和弱電,強電指高壓傳輸,電動機等高電流作為能源動力領域,弱點就是指微電子方向的信息處理領域。計算機硬體工程師的工作范圍在弱電,主要內容主要有PCB設計(印製電路板),ic(晶元)設計,FPGA工程師。往上還包括涉及針對特定硬體做系統開發維護的嵌入式工程。
#### PCB工程師、FPGA工程師、IC工程師
專業術語大家可能不太懂,就舉例一下每種工程師對應的工程產品吧。
PCB工程師的工作就是設計一個高速穩健的交通網路,把電路板上各個功能不同的模塊連接起來。他們的工作環境如下所示。
FPGA全稱叫現場可編程邏輯陣列,就是理解為一個可以編程的硬體。傳統意義上的集成電路是定製化的,針對特定的需求設計特定的電路板。而fpga可以通過熔斷機制來動態修改電路的結構,達到動態編程的效果,簡單點說,針對一塊FPGA,你可以把他燒製成視頻編碼器,也可以燒製成無線wifi通信模塊。雖然這些演算法都可以通過軟體實現,但是硬體實現的效果演算法成本更低。開發語言常用的有VHDL(硬體描述語言)。
IC工程師就是設計一個高效運算的大腦,涉及到流水線機制,超頻,最重要的是解決納米級別下電流擾動問題,最大的制約因素也是材料工藝問題。
以上三種崗位其實在現代學術分支類還是屬於EE下的子類,事實上從事這個方向的人也大部分是學習電子電路工程的同學。這個專業的特點就是強者通吃,全球唯二的兩家晶元公司intel、AMD。而且他們的核心競爭力並不是晶元設計能力上,而是在製作工藝上。現在在移動終端統一江湖的還有英國Acorn有限公司設計的ARM晶元,它只是提供一個解決方案,設計圖紙,具體的製造還得是華為,三星自己開場設立。但是同時又有很多小眾領域,比方說無人機,安全門等等你又需要做專門的PCB設計,所以硬體工程師也是有市場需求基礎的,但是也不多。從技能需求來看,要求數學知識扎實,邏輯嚴密,電子電路知識更多,類似工具反而並不是顯得那麼重要。從未來的發展前景來看,隨著智能硬體物聯網的推廣,會有一波大紅利。
崗位需求:IC << FPGA = PCB
薪資 :IC >> FPGA = PCB
#### 嵌入式工程師
**系統級別嵌入式**
主要是針對特定硬體移植一套操作系統,類似於linux,VxWorks等,甚至於自己開發一個只能滿足需求的未知系統,你需要讀管腳信息,讀時序。但是大部分還是使用成熟的系統移植,自己寫系統一來太慢,二來肯定很多坑。相對來說在這個層面上的人都是大牛。或者做一些驅動開發,比如說,每年讓無數游戲宅剁手的最新NVIDIA顯卡,都需要這個級別的工程師來做相應的顯卡驅動。
薪資水平絕對高,起薪百萬級別,入門門檻也絕對高,業內最強不是在研究所,而是在公司。
**應用級別嵌入式**
在基於已經能跑的機器上做開發,比如說,操作系統已經提供了最基本的文件管理,內存管理,CPU管理的情況下。你在此基礎上做特定應用的開發。普遍打交道的語言工具是C。本人實驗室其實是這個方向的,有過軍工和國企的一些項目,從這層往上,到架構師之前,本人至少都接觸過一些。能說點自己的感悟,而不是查資料了。
做嵌入式應用開發最蛋疼的不是開發而是調試,在這一層做開發會有各種奇葩問題,比方說你昨天還跑得好好的,今天可能就崩了,可能是硬體問題,虛焊?電容擊穿?電路板電流擾動?也可能是軟體問題,野指針(很少有系統做了虛擬內存,你所有操作都是在實際的內存空間上操作的),內存溢出。
薪水來看,起薪比較低,今年華為給的算是不錯了,能到16K,但是隨著你對業務的熟悉,工資是沒有上限的,最終達到的升級狀態就是系統級別嵌入式工程師。
## 軟體
### 桌面程序工程師
傳統的桌面應用軟體類似於office,瀏覽器啊在PC端上運行的軟體。主流的開發框架有Qt,MFC,.NET。現在還比較強勢的一些桌面應用領域就是微軟的office和桌面游戲公司。以及基於微軟的C#的開發應用,基於QT的C++開發應用。其他的不是特別了解,但是給我的感覺就是這個市場不怎麼活躍,招人很少,身邊也沒有認識的人走這條路線。經知友私信補充,這個行業的薪資並沒有隨著互聯網浪潮而有大幅度增長,該知友在.NET平台下使用C#開發,有5年的從業經驗,15年的薪資水平在11k左右,後來轉行去了android,當然這可能只是個例,有很多厲害的人我們可能不知道,先謝謝這位知友知友了。
### 網路應用工程師
從google發跡以來,基本上所有新興的巨無霸公司,facebook,bat,amazon都是依賴於互聯網的發展,依賴於這群互聯網應用工程師。同時他們也就是在網上自稱為碼農的這個群體。他們這個群體應該能佔到計算機領域70%以上的研發人員。
#### 前端開發
廣義的前端就是指呈現在用戶視覺的領域,直接可以讓用戶感受到的開發,往下會細分為web,andoroid,ios。
#### web前端(h5前端)
web前端指在瀏覽器(包括手機和pc瀏覽器,或者是webview控制項,甚至於搭載JS引擎的任意環境)上運行的一系列應用。
傳統意義上的前端主要是指網頁,html,css,js那一套了,或者再加上html5,css3。但是最近幾年前端發了很多變化。
這個方向是這幾年的大熱門,隨著機器性能的提高,v8引擎的普及,雖然js和c,java的運算效率還是差上很遠,但是目前來看對於呈現展示內容已經基本夠用,所以,近幾年出現了各種叛逃,比如說cocos2d-js來做游戲,react-native來做客戶端啊。同時,隨著大量人才的湧入,特別是這兩年,大量的前端框架,解決方案讓你感覺跟不上時代,講真,兩年前還是JQuery的天下,現在你不知道Vue,Angular都不好意思打招呼。同時由於機器性能的提高和V8引擎的強勁有力,腳本語言的另一個優點就是無須編譯運行,導致了它可以實現一個其他語言無法做到的事情---動態更新,可以在app不發版的情況下動態的大幅度更改它,進一步的增加了JS的需求量。
薪資比起前兩年來看漲了不少,而且市場需求量也很大,基本上任何應用都沒有完全脫離web的框架內。門檻也不算高,但是往下深入一樣會有很多東西要學。
#### android和iOS
android是一個基於linux內核開發的開放源代碼移動操作系統,由Google成立的Open Handset Alliance(OHA,開放手持設備聯盟)持續領導與開發,主要設計用於觸屏移動設備如智能手機和平板電腦。iOS(原名 iPhone OS,自 iOS 4 後改名為 iOS)是蘋果公司為移動設備所開發的封閉源代碼操作系統,所支持的設備包括 iPhone、iPod touch 和 iPad。
目前看來,智能機市場上,android的市場份額在四分之三以上,ios佔了大概五分之一,剩下的都是什麼塞班,winphone我們應該不用考慮,你應該也不會想做這個的。雖然android和ios市場佔有率相差懸殊,但是android工程師和ios工程師基本上能維持相同的人數,所以你如果想從事移動端開發,就業市場來看的話,沒有很大的區別。
技術層面來看兩個其實比較像,主要的區別其實是生態圈的比較。
相應來說,可能android的入門成本門檻比較低,java相對於Object-C,swift來說還是比較流行的,同時,相對於iOS(mac電腦+蘋果手機+一年100刀的開發者賬號)的起始1.5W的投入來看,可能android的競爭會更激烈一些。
由於android的開放性,基於開源的linux開發,所以業內會有很多公司針對於android做所謂的「深度定製」,「適合國人的智能手機」等,那就導致了android的各式各樣,不同的手機廠商在某些細節方面又有不同的理解,倒是android開發最大的一個問題就是適配。同時由於android的許可權開放性,他會有很多可以hack的地方,針對android的木馬病毒(360管家)很多,你要考慮到的東西會很多,不過目前來看,android的每次發版,安全性也越來越好,許可權管理也越來越規范,以後會越來越好。而iOS的封閉特性,相對來說被發現的漏洞少(並不是不多,我個人覺得絕對比android多),但是每次爆出都是大新聞,它的開發相對來說規范很多,有很多成熟的解決方案,他的主要問題其實是iOS審核這塊,大部分的公司都有過app被appstore斃過的經歷。
另外,最近蘋果公司也在推swift,如果你要做iOS,由於各種歷史問題,OC並不能完全棄掉,但是swift也會成為你求職的考點或者亮點,通過同事的反應來看,swift比OC更爽,它更願意做swift。
#### 後端開發
後端開發指的是,在為前端提供數據支撐的一個大的總類,包括資料庫,業務邏輯處理,數據處理等。主要的開發語言分兩個方向編譯型語言,java,c/c++等,他的特點就是運行效率高,相同機器配置的情況下能支撐更大的訪問量,適用於超高並發度,比方說淘寶後台是java,網易游戲騰訊游戲是c++。另一種就是以php、python等解釋性語言,他們的特點就是開發效率高,無需編譯,寫完就能運行,主要針對一些運算量不大的中小型網站,比如說你的個人博客,管理後台。
##### 運維工程師
特意把它從後端中拿出來,主要是他的開發任務比較少,但是同樣很重要,當數量量達到一定程度,資料庫伺服器都有上千台的時候,就需要專業的人士做做數據維護的工作了,它的工作難度一樣很多,容災備份,熱替換。而且目前的趨勢都是服務化,組件化,虛擬化,一樣有各種難題有待於你去解決。但是從市場需求來看,只有大廠才會招專業的運維工程師,創業公司100台伺服器以下的小公司一般都是託管到各種雲,然後由後台工程師兼任。
##### 通俗意義上的後台開發
也就是那些經常說自己是業務狗的屌絲碼農,覺得不做架構設計比較low,他們主要的工作就是實現pm的工作需求,比方說雙十一來了,pm說,這個要添加一個搶紅包的功能,然後後台業務狗就忙起來,要解決高並發下的死鎖啊,重復請求啊,帶寬啊各種功能,當然也需要前端,但是前端並不需要考慮復雜的並發性問題。而如果這些業務狗在處理高並發問題上有所建樹,那麼他們就能一步步升級為架構師。那個時候就可以把屌絲碼農的屌絲去掉了。
### 測試工程師
一個產品或者一個新的功能需要上線,必須要經過完備的測試,測試工程師目前其實有兩種,一種是純測試,另一種是他的升級版測試開發工程師,它能在測試的過程的順手把小bug改了而不需要返工。好的測試開發工程師工資也可以比做開發的工資高。
而且你們也不要小看測試這個東西,不要以為你只會點點滑鼠看看對不對這么簡單,合格的測試工程師需要熟悉各種測試工具,能自己寫測試腳本,能找到bug,而且還能知道為什麼會出現bug。這個工種一般也都是大公司才會配置的,對於小公司來說,一般就是開發人員自己也是自己的測試人員。
### 安全工程師
同樣一個產品或者一個新的功能需要上線,不僅需要要經過完備的功能測試,還有一向就是安全性測試。而由於安全性測試可能需要的知識比較多,所以又會有一個單獨的工種來這個。
或者你們也許更喜歡叫他們黑客(壞孩子),白帽子(好孩子)。他們遊走在法律的邊緣,或做著俠士的行為而不為人所知,或調皮搗蛋想整一個大新聞,更有甚者違法牟利。但是必須指出,他們確實互聯網圈子裡最有創新精神,反抗精神的人,當然我不是說的那些連腳本都不會寫的工具小子了。我指的是阿桑奇,中本聰(主要是技術吊,思維吊,但是沒做啥好事)。他們是IT圈的安拉,耶穌基督,精神偶像。必須指出,走安全工程師這條路必須得先走一條邊緣線,要想有最好的防守你得先知道別人是怎麼進攻的。薪水來看並不是特別有競爭力(不包括黑產)。從業人員這幾年很多看到的情況是好孩子越來越多,但是中國的大環境不是特別好(烏雲都被關了)。
### 架構師
從這里往後,已經算是程序員界的高富帥了,可以稱的上是半個科學家。架構師的工作差不多已經基本脫離代碼了,他的主要工具從VIM,EClipse變成了word,ppt。他主要覺得技術選型,針對大容量高並發的問題制定解決方案。基本上他們都是由後台工程師升級打怪升上來的,好像聽聞業界也有前端工程師升級為了CTO做架構的,但是畢竟還是少數,node的效率還是差了很多。
### 演算法工程師
這類人,基本都是大學參加ACM競賽拿過獎,或者本身思維邏輯嚴密性高,數學基礎扎實,演算法牛逼。如果你是一個數學系或者物理系的優秀畢業生想轉IT,這個可以作為你的主要方向。這個算是建築系裡的學院派,從學校畢業之後就直接達到了這個等級,起薪很高。
#### 數據挖掘
它的作用就是從一堆數據中挖去你你想要的信息。打個比方,給你2008年到2016年所有的房屋成交量,房屋成交價格,土地成交量,人口增長,銀行貸款利率變化等等很多信息,讓你預測明年房價變化情況。他們就是干這個的,這個工作分三步走,爬數據,建模,寫演算法驗證。
爬蟲工程師,就是從各種國家統計局網站,鏈家網站爬去數據,存儲為結構化的數據。
數學建模,建立各種數據之間的影響關系,影響因子。
寫演算法驗證,大部分數據挖掘工程師好像都是用python,工具比較多,語法簡單。
難點其實不是在寫代碼部分,而在於建模,如果設計一個有效的模型來量化這些數據間的聯系。其中的影響因子權值就是他們的生命價值所在,所有他們會光榮的把自己稱呼為「調參俠」,顧名思義,就是天天調整參數,讓模型運算結果來匹配實際情況。
薪水很高,一般統計分析局或者大公司才會招人,而且還可以獨立創業,像是知乎很有名的團支書,拿數據打臉的那種牛逼轟轟的人物。
另外再而外介紹一下量化交易,量化交易是指以先進的數學模型替代人為的主觀判斷,利用計算機技術從龐大的歷史數據中海選能帶來超額收益的多種「大概率」事件以制定策略,極大地減少了投資者情緒波動的影響,避免在市場極度狂熱或悲觀的情況下作出非理性的投資決策。這個是計算機屌絲和金融高富帥融合的比較成功的一個新的工種,通過一個優秀的交易員建立一個理論交易模型,再有程序員實現代碼,這個算是數據挖掘領域比較直接的變現交易,著名的知乎英國五毛,Lightwing(李軼睿)就是從事這個方向的,他們的薪水是按照日來的,關鍵也在於模型建立,而且都是通過技術面分析,確保收益,比如說從10塊錢漲到了10.1塊,即便它很可能漲到11塊,他們也可能就會賣掉(演算法策略),然後通過超高頻率的買賣來確保收益,比如說雖然每次買賣只能賺一毛錢,但是他一天內買賣了幾十手,而且大部分都賺了,總的收益可能也會有1塊,所以量化交易也有叫高頻交易的.
#### 人工智慧
我好久也沒看過這方面的書了,可能理解有誤。大家經常看到的siri,或者聊天機器人之類的都是屬於這種東西。他的本質還是一個有限自動狀態機,在一個狀態下在很多因素的影響下走向下一個狀態,理論上你把你在三維世界所有的輸入都考慮進去,而且都分別定義了相應的輸出,他是可以做到人工智慧的。但是這樣寫出來程序會非常大,電腦跑不動。我個人的理解,基於計算機簡單的01唯一向性,真正意義上的人工智慧還是蠻難實現的。比如說之前非常火的李世石大戰阿法狗,在這種特定的應用下,輸入很簡單,圍棋上的落子16*16,狀態也很簡單,2的16*16次方,在這個復雜度下,肯定也是沒辦法枚舉的,他們會有降維演算法各種演算法來聚類他們的狀態。
#### 深度學習
我們上面所說的數據挖掘會有一個調整參數的過程,而在深度學習領域,他會添加一個正向反饋,讓你的參數由機器自動調整,讓他計算的結果去自動匹配實際的結果。這個就是所謂的機器學習,就是把人為調參的過程讓機器自動完成。
此外,人工智慧,深度學習,數據挖掘並不是分開來看的,他們會存在一定程度上的重合。他們其實真正的難點實在各種降維演算法,概率論,退火等數學領域。所有說他們算是半個科學家也就是這樣原因了。
#### 性能效率支持
這個才是普遍意義上的互聯網的演算法工程師做的事情。比方說,我要求一個數的平方根,現在我們編程很簡單,只需要sqrt()就可以了,但是你如果看過這個的源碼,你就會驚呼,感興趣自己去搜,他並不是用牛頓萊布尼茲公式做的,它比牛頓牛逼多了,能提高100倍的效率。這只是一個很簡單的例子,在實際應用中,當遇到大運算量的時候,就是他們該出場了。這部分功能其實大部分也是由後台工程是自己擔任的,但是不排除大公司類似google,fb會特意招ACM來做演算法支持,起薪很高。
在這里我特意提一下效率工程的頭面擔當,游戲引擎工程師(目前國內主要使用開源的unity3d)。主要做3D渲染,需要在計算機圖形學方面有較高建樹。類比於工業皇冠上的航天發動機一個級別。游戲開發只是一個特定方向的開發,,一樣有客戶端,web端,pc端,後台,資料庫運維等。並沒有需要單獨拿出來一個講。不過游戲開發工程師一般來說都是比較累的,但是同樣薪水也是高,陰陽師團隊今年估計年終獎拿100個月我都不稀奇。
### 標准化組織協會會員
這個也算是吧。比如說,美國電子工程協會,3GPP協會。他們主要是製作各種標准化協議。這個級別太高了,在特定領域,全球估計也就幾十個人能做的了主吧。工資多少,人家應該都不在意這個東西。而且大部分還都是國家撥款或者公益組織撥款,反正不是盈利性質的。比如說,TCP/IP協議制定,5G協議制定。我也不知道他們從拿招人,可能是大學教授或者行業領袖吧。
### 量子計算機工程師
這個超級吊,這個是先驅,未來的計算機,至於他們幹嘛的,怎麼做,別問我,我不知道!!!
❹ python能做什麼
python能夠應用的領域有常規軟體開發、數據分析與科學計算、自動化運維或辦公效率工具、雲計算、web開發、網路爬蟲、數據分析、人工智慧等。
1、常規軟體開發
Python支持函數式編程和OOP面向對象編程,能夠承擔任何種類軟體的開發工作,因此常規的軟體開發、腳本編寫、網敬宴凱絡編程等都屬於標配能力。
❺ 程序員未來會成為非常內卷的職業嗎
不會。不會。
程序員在未來還是會非常好的,高薪的職業。各行各業都離不開碼工啊。
FLASH除了漏洞還是漏洞,可是學FLASH的還是那麼多;個個都說Oracle不支持JAVA了,java遲早要完,可是招聘軟體上,招的最多還是JAVA軟體工程師;
不用擔心,編程沒那麼容易完蛋,程序員更沒有那麼容易完蛋,就算完也是個蠻長的過程;如果技術更新換代了,那也會有編程的替代性工種出現,因為就算機器要造反,那也要有人去給它一個原始的推動力,所以說,一時半會兒,還真不用太擔心,扯不到那麼遠,別的不說,智能機出來這么久了,功能機還是有人用;
微軟放棄XP那麼久,XP還是有人用;
編程不僅在 10年 內還有意義,而且還會比今天更重要。不過編程語言的語法會變得越來越簡單。剛開始的時候,編程是在紙板上面打孔(可編程打孔機)。然後形式變成了這個樣子:00101010101。
而現在看起來更像英語。隨著編程語言變得越來越像英語,這種東西學習起來會越來越容易,越來越不神秘,所以也會越來越流行。
同時,隨著計算機滲透到我們的日常生活裡面,想叫計算機做從來沒做過的事情,還是需要對如何跟這種特殊的計算機程序員進行溝通有特殊的理解,以及要有描述演算法的計算思維。
如何設計循環或條件供計算機執行任務或進行決策的語法也許會變,但底層的基礎概念估計很久都不會消失。
❻ 程序員真的是拿命換錢么
當然不是, 程序員每天都與電腦為伴,長期缺乏運動,生活上並不規律,而且,程序員一般都缺少健康意識,對身體出現的一些警報也不會在意,導致一些小問題演變成了大問題。 我們經常會聽說「某位IT工作者猝死」的消息,這些消息無疑也加深了大家對「程序員拿命換錢」的認知,其實很多問題都是可以預防和治療的,關鍵是要提高健康意識。程序員的工作強度大是公認的,尤其是當出現緊急任務或者bug的時候,需要程序員在短時間內解決問題,熬夜通宵基本上都是難免的。 國內很多IT公司都存在著很明顯的加班文化,就拿三巨頭來說。網路鼓勵狼性文化,被業界親切地稱為「狼廠」,如此稱呼與網路半彈性的加班不無聯系;在阿里巴巴每天工作10小時是很正常的,員工也總是抱怨工作效率低下;騰訊也和網路相似,工作忙的時候,周末都無法休息。
❼ 程序員37歲後怎麼辦
程序猿有條件和機會的最好還是去一線互聯網城市發展,因為那裡比較正規,也有規范的晉升法則,乾的好的,出成績肯定會重用,這樣到35歲以後,可以達到一定的職級,享受不錯的待遇。比那些不正規的互聯網公司好太多了,入創業公司需謹慎,人治大於法治,全看創始人的人品。
對於像筆者這種沒有在一線互聯網公司做過的程序猿,只有過二線城市以下互聯網公司和創業型公司的經歷,35歲以後怎麼辦?二線城市的互聯網公司非常不專業,經常就是一個人身兼數職,伺服器搭建維護優化,產品設計,研發,都是一個人來干,非常的耗費精力,而這些互聯網公司也不會有專業的研發團隊組成,筆者最多帶過12人的研發團隊,大多數是單槍匹馬的從產品設計到軟體架構設計和代碼編寫到伺服器運維一條龍的搞產品,由此可知當地的互聯網公司的參差不齊,而最重要的是 這些公司 一般都做不了多久,畢竟互聯網行業,水很深,所以筆者現在謝絕了所有入職邀請,專心自主創業,由於十幾年的鍛煉,除了UI設計不太行外,其他都能做,也是個好事,這十幾年見證了數百個產品的成敗,對於產品的體驗和運營也有一定的了解,於是就開始研究一些垂直行業,自行設計研發出針對某個行業的軟體產品平台並提供有價值的服務,感覺這是像我這種二線城市的程序猿出路之一,現在已經可以產出和之前工作時相當的收入,而且不是那種苦逼接單的做法,符合遠期的發展方向。