核心技能
Linux系統(tǒng)編程
在Linux系統(tǒng)上開發(fā)程序,掌握系統(tǒng)編程API是必不可少的技能。
操作系統(tǒng)
盡可能地去了解你使用的操作系統(tǒng),這樣無論對寫程序還是debug都會有很大的幫助;除了操作系統(tǒng),了解你使用的CPU的匯編語言,至少能大概看懂。因為有些時候,當你從C代碼中找不出bug的原因時,就需要你“透過現(xiàn)象看本質”,從匯編代碼層面看看到底發(fā)生了什么。
腳本編程
一提到腳本編程,大家首先想到的可能就是Bash shell腳本編程,應用開發(fā)工程師主要用Bash shell做兩個方面的工作:a)用于編寫監(jiān)控服務腳本;b)寫一些簡單的單元測試腳本,比如循環(huán)發(fā)一些命令,等等。
網(wǎng)絡編程
網(wǎng)絡協(xié)議,在日常的工作中,大家接觸和使用最多的無疑是TCP/IP協(xié)議;Socket編程,Socket編程一點也不比系統(tǒng)編程簡單;協(xié)議分析工具,TCPdump、snoop(Solaris平臺工具)、wireshark等這些工具不僅能幫助我們抓取數(shù)據(jù)包,還能分析數(shù)據(jù)包,這對debug網(wǎng)絡程序有非常大的幫助。
調試器
一個程序員不可能不碰到bug,而這個時候,調試器就是的工具??梢哉f,在遇到bug時調試技巧和手段是否豐富是衡量一個程序員的能力和水平的重要參考。
數(shù)據(jù)庫
數(shù)據(jù)庫作為服務器端應用數(shù)據(jù)持久化的最重要的部件,在服務器端應用開發(fā)中占有非常重要的地位。深入了解數(shù)據(jù)庫基本原理,數(shù)據(jù)庫和數(shù)據(jù)表結構體操作等。
Qt開發(fā)
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應用程序中也非常有用。而且它可以在臺式機、移動端以及嵌入式設備端口上運行。完全實現(xiàn)了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發(fā)過程中需要用到的工具。
CPU體系結構
除了操作系統(tǒng),了解你使用的CPU的匯編語言,至少能大概看懂。因為有些時候,當你從C代碼中找不出bug的原因時,就需要你“透過現(xiàn)象看本質”,從匯編代碼層面看看到底發(fā)生了什么。
編譯器
編譯器負責把源代碼生成可執(zhí)行文件,例如gcc有很多編譯選項,除了要熟悉像-O,-g這些最基本的選項,建議大家可以多了解一些其它不常見的選項。因為這些選項很可能幫助我們找到程序的一些bug。多了解你的編譯器,你就可以更好地了解你的程序是如何生成的。
課程內容
Linux基礎
linux系統(tǒng)安裝配置;系統(tǒng)操作命令;服務器搭建
主要掌握內容:
linux系統(tǒng)安裝配置:
虛擬機安裝配置、Ubuntu系統(tǒng)安裝配置、vim編輯器安裝配置、文件共享配置
系統(tǒng)操作命令:
文件操作命令:ls、touch、mkdir、pwd、rm、chmod、mv、cp、vim、cd、pwd網(wǎng)絡操作命令:ping、ifconfig、netstat
服務器搭建:
ftp服務器搭建:服務器操作命令:ftp、open、get、put、cd、byte
nfs服務器搭建項目
面向過程編程C語言
C基礎:條件結構;循環(huán)結構;函數(shù);指針函數(shù);動態(tài)空間管理;文件操作;數(shù)據(jù)結構
主要掌握內容:
C基礎:
內置數(shù)據(jù)類型、基本輸入輸出、類型表示范圍、頭文件包含、gcc編譯運行算術運算符、邏輯運算符、位運算符、比較運算符、賦值運算符、sizeof運算符、取址運算符、逗號運算符
條件結構:
真假定義、if條件結構、if-else if條件結構、switch條件結構
循環(huán)結構:
for循環(huán)、while循環(huán)、do-while循環(huán)
函數(shù):
函數(shù)申明定義、函數(shù)調用、遞歸函數(shù)、回調函數(shù)、現(xiàn)場保護、現(xiàn)場恢復
指針和數(shù)組:
指針、數(shù)組、字符串、冒泡排序、選擇排序、指針數(shù)組、數(shù)組指針、指針函數(shù)、函數(shù)指針
動態(tài)空間管理:
空間分布、內存泄漏、動態(tài)申請空間、空間釋放
文件操作:
文件類型、創(chuàng)建文件、文本文件讀寫、二進制文件讀寫
數(shù)據(jù)結構:
鏈表、樹、圖、排序算法
Linux系統(tǒng)編程
文件IO;多進程編程;進程間通訊;多線程編程;同步和異步;網(wǎng)絡編程
主要掌握內容:
文件IO:
文件類型、創(chuàng)建文件、文本讀寫、屬性操作
多進程編程:
并發(fā)概念、進程創(chuàng)建及結束、僵尸進程、孤兒進程、exec函數(shù)族
進程間通訊:
無名管道、有名管道、內存映射、共享內存、消息隊列、信號、socket
多線程編程:
線程創(chuàng)建及結束
同步和異步:
同步和異步的概念、同步的方式(互斥鎖、讀寫鎖、條件變量、信號量)、異步方式(信號)、PV經典案例
網(wǎng)絡編程:
OSI七層架構、TCP/UDP協(xié)議、IP協(xié)議、網(wǎng)絡編程系統(tǒng)調用
面向對象編程C++語言
C++基礎;類封裝;繼承;多態(tài);STL;QT界面設計
主要掌握內容:
C++基礎:
數(shù)據(jù)類型、輸入輸出、引用、函數(shù)、動態(tài)空間管理、文件、結構體
類封裝:
構造函數(shù)、深淺拷貝、初始化列表、析構函數(shù)、子對象、static/const成員、this
繼承:
父類/基類、子類/派生類、單繼承、多繼承、虛繼承
多態(tài):
靜態(tài)多態(tài)(函數(shù)重載)、動態(tài)多態(tài)(虛函數(shù))、純虛函數(shù)、抽象類
STL:
函數(shù)模板、類模板、vector、list、map、deque、set
Qt界面設計:
窗口類型:widget、dialog、mainwindow信號槽機制、鼠標事件、鍵盤事件圖形圖像、并發(fā)、socket網(wǎng)絡編程
MySQL:
增刪改查、視圖、存儲過程、事務
實戰(zhàn)項目
智能小車
技能掌握:QT編程技術,C++編程技術,樹莓派開發(fā)技術,Linux編程技術的使用
項目簡介:樹莓派連接攝像頭、馬達,通過wifi模塊連接樹莓派,控制器進行小車的移動,可識別障礙物及人。
人臉識別認證系統(tǒng)
技能掌握:精準定位圖中人臉、眼等關鍵點位置,分析性別、年齡等人臉屬性使用
項目簡介:Linux系統(tǒng),C++編程,QT編程,Cmake開發(fā)工具,攝像頭編程,圖像知識
智能售賣機
技能掌握:通過樹莓派控制機械手臂實現(xiàn)物品抓起放置,并通過物聯(lián)網(wǎng)云平臺進行管理。
項目簡介:QT編程技術,C++編程技術,樹莓派開發(fā)技術,4G模塊應用技術,機械手臂,定位器,互聯(lián)網(wǎng)云平臺,網(wǎng)絡知識