北京千鋒互聯科技有限公司成都分公司駱昊(jackfrued)在Github上發布了一個Python學習秘笈,從萌新到王者的100天Python學習之旅。
簡單的說,Python是一個“優雅”、“明確”、“簡單”的編程語言。
學習曲線低,非專業人士也能上手
開源系統,擁有強大的生態圈
解釋型語言,完美的平臺可移植性
支持面向對象和函數式編程
能夠通過調用C/C++代碼擴展功能
代碼規范程度高,可讀性強
目前幾個比較流行的領域,Python都有用武之地。
云基礎設施 - Python / Java / Go
DevOps - Python / Shell / Ruby / Go
網絡爬蟲 - Python / PHP / C++
數據分析挖掘 - Python / R / Scala / Matlab
機器學習 - Python / R / Java / Lisp
作為一名Python開發者,主要的就業領域包括:
Python服務器后臺開發 / 游戲服務器開發 / 數據接口開發工程師
Python自動化運維工程師
Python數據分析 / 數據可視化 / 大數據工程師
Python爬蟲工程師
Python聊天機器人開發 / 圖像識別和視覺算法 / 深度學習工程師
下圖顯示了主要城市Python招聘需求量及薪資待遇排行榜(截止到2018年5月)。
給初學者的幾個建議:
Make English as your working language.
All experience comes from mistakes.
Don t be one of the leeches.
Either stand out or kicked out.
課程表
Day01~15 -Python語言基礎
Day16~Day20 -Python語言進階
常用數據結構
函數的高級用法 - “一等公民” / 高階函數 / Lambda函數 / 作用域和閉包 / 裝飾器
面向對象高級知識 - “三大支柱” / 類與類之間的關系 / 垃圾回收 / 魔術屬性和方法 / 混入 / 元類 / 面向對象設計原則 / GoF設計模式
迭代器和生成器 - 相關魔術方法 / 創建生成器的兩種方式 /
并發和異步編程 - 多線程 / 多進程 / 異步IO / async和await
Day21~30 -Web前端入門
用HTML標簽承載頁面內容
用CSS渲染頁面
用JavaScript處理交互式行為
jQuery入門和提高
Vue.js入門
Element的使用
Bootstrap的使用
操作系統發展史和Linux概述
Linux基礎命令
Linux中的實用程序
Linux的文件系統
Vim編輯器的應用
環境變量和Shell編程
軟件的安裝和服務的配置
網絡訪問和管理
其他相關內容
Day36~40 -數據庫基礎和進階
關系型數據庫MySQL
范式理論 - 設計二維表的指導思想
數據完整性
數據一致性
DDL - 數據定義語言 - create / drop / alter
DML - 數據操作語言 - insert / delete / update / select
DCL - 數據控制語言 - grant / revoke
關系型數據庫概述
MySQL的安裝和使用
SQL的使用
相關知識
在Python中操作MySQL
NoSQL入門
NoSQL概述
Redis概述
Mongo概述
Day41~55 -實戰Django
Day56~60 -實戰Flask
Day61~65 -實戰Tornado
Day66~75 -爬蟲開發
Day76~90 -數據處理和機器學習
Day91~100 -團隊項目開發
第91天:團隊開發和項目選題
軟件過程模型
角色:產品所有者(決定做什么,能對需求拍板的人)、團隊負責人(解決各種問題,專注如何更好的工作,屏蔽外部對開發團隊的影響)、開發團隊(項目執行人員,具體指開發人員和測試人員)。
準備工作:商業案例和資金、合同、憧憬、初始產品需求、初始發布計劃、入股、組建團隊。
敏捷團隊通常人數為8-10人。
工作量估算:將開發任務量化,包括原型、Logo設計、UI設計、前端開發等,盡量把每個工作分解到最小任務量,最小任務量標準為工作時間不能超過兩天,然后估算總體項目時間。把每個任務都貼在白板上面,白板上分三部分:to do(待完成)、in progress(進行中)和done(已完成)。
產品的Backlog(用戶故事、產品原型)。
計劃會議(評估和預算)。
日常開發(站立會議、番茄工作法、結對編程、測試先行、代碼重構……)。
修復bug(問題描述、重現步驟、測試人員、被指派人)。
評審會議(Showcase)。
回顧會議(當前周期做得好和不好的地方)。
個體和互動高于 流程和工具
工作的軟件高于 詳盡的文檔
客戶合作高于 合同談判
響應變化高于 遵循計劃
可行性分析(研究做還是不做),輸出《可行性分析報告》。
需求分析(研究做什么),輸出《需求規格說明書》和產品界面原型圖。
概要設計和詳細設計,輸出概念模型圖、物理模型圖、類圖、時序圖等。
編碼 / 測試。
上線 / 維護。
經典過程模型(瀑布模型)
敏捷開發(Scrum)- 產品所有者、Scrum Master、研發人員 - Sprint
補充:敏捷軟件開發宣言
項目團隊組建
代碼注釋太少或者沒有注釋
代碼破壞了語言的最佳實踐
反模式編程(意大利面代碼、復制-黏貼編程、自負編程、……)
團隊的構成和角色
說明:謝謝付祥英女士繪制了下面這張精美的公司組織架構圖。
編程規范和代碼審查(flake8、pylint)
Python中的一些“慣例”(請參考《Python慣例-如何編寫Pythonic的代碼》)
影響代碼可讀性的原因
團隊開發工具介紹
請參考《團隊項目開發》。
版本控制:Git、Mercury
缺陷管理:Gitlab、Redmine
敏捷閉環工具:禪道、JIRA
持續集成:Jenkins、Travis-CI
項目選題和理解業務
選題范圍設定
CMS(用戶端):新聞聚合網站、問答/分享社區、影評/書評網站等。
MIS(用戶端+管理端):KMS、KPI考核系統、HRS、CRM系統、供應鏈系統、倉儲管理系統等。
App后臺(管理端+數據接口):二手交易類、報刊雜志類、小眾電商類、新聞資訊類、旅游類、社交類、閱讀類等。
其他類型:自身行業背景和工作經驗、業務容易理解和把控。
需求理解、模塊劃分和任務分配
需求理解:頭腦風暴和競品分析。
模塊劃分:畫思維導圖(XMind),每個模塊是一個枝節點,每個具體的功能是一個葉節點(用動詞表述),需要確保每個葉節點無法再生出新節點,確定每個葉子節點的重要性、優先級和工作量。
任務分配:由項目負責人根據上面的指標為每個團隊成員分配任務。
制定項目進度表(每日更新)
第92天:數據庫設計和OOAD
概念模型和正向工程
UML(統一建模語言)的類圖
通過模型創建表(正向工程)
python manage.py makemigrations apppython manage.py migrate
物理模型和反向工程
PowerDesigner
過數據表創建模型(反向工程)
python manage.py inspectdb > app/models.py
第93-98天:使用Django開發項目
說明:具體內容請參考《Django知識點概述》
項目開發中的公共問題
數據庫的配置(多數據庫、主從復制、數據庫路由)
緩存的配置(分區緩存、鍵設置、超時設置、主從復制、故障恢復(哨兵))
日志的配置
分析和調試(Django-Debug-ToolBar)
好用的Python模塊(日期計算、圖像處理、數據加密、三方API)
REST API設計
RESTful架構
理解RESTful架構
RESTful API設計指南
RESTful API最佳實踐
API接口文檔的撰寫(《網絡API接口設計》)
RAP2
YAPI
django-REST-framework的應用
項目中的重點難點剖析
使用緩存緩解數據庫壓力 - Redis
使用消息隊列做解耦合和削峰 - Celery + RabbitMQ
第99-100天:測試和部署
單元測試
測試的種類
編寫單元測試(unittest、pytest、nose2、tox、ddt、……)
測試覆蓋率(coverage)
項目部署
說明:請參考《項目部署上線指南》。
部署前的準備工作
關鍵設置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 緩存 / 數據庫)
HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
日志相關配置
Linux常用命令回顧
Linux常用服務的安裝和配置
uWSGI/Gunicorn和Nginx的使用
對于不需要大量定制化的簡單應用程序,Gunicorn是一個不錯的選擇,uWSGI的學習曲線比Gunicorn要陡峭得多,Gunicorn的默認參數就已經能夠適應大多數應用程序。
uWSGI支持異構部署。
由于Nginx本身支持uWSGI,在線上一般都將Nginx和uWSGI捆綁在一起部署,而且uWSGI屬于功能齊全且高度定制的WSGI中間件。
在性能上,Gunicorn和uWSGI其實表現相當。
Gunicorn和uWSGI的比較
虛擬化技術(Docker)
性能測試
說明:具體內容請參考《Django知識點概述》。
AB的使用
SQLslap的使用
sysbench的使用
自動化測試
使用Shell和Python進行自動化測試
使用Selenium實現自動化測試
Selenium IDE
Selenium WebDriver
Selenium Remote Control
測試工具Robot Framework介紹
項目性能調優
數據庫性能調優 - 請參考《MySQL相關知識》
分表分庫
主從復制,讀寫分離
集群架構
軟硬件優化
SQL優化
架構優化
Web服務器性能優化
Nginx負載均衡配置
Keepalived實現高可用
代碼性能調優
多線程
異步化
靜態資源訪問優化
云存儲
CDN
-
機器學習
+關注
關注
66文章
8428瀏覽量
132837 -
python
+關注
關注
56文章
4801瀏覽量
84863 -
GitHub
+關注
關注
3文章
473瀏覽量
16503
原文標題:Github超10000星:100天從Python新手到大師
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論