1,你用的Django和Flask有什么不一樣?
django走的是大而全的路線,是重量型的框架,flask是一輕量級的框架
django是模塊式的開發方式:
1,有完善的ORM模型,評價略高於sqlAlchemy,和模板引擎(強大程度略低於jinja)
2,非常適合企業級的開發(高效,穩定,)
3,開發文檔比較完善。
flask走的是靈活多變的路線,
1,有各種第三方的插件支持,可拓展性強。
2,flask與關系型數據庫的配合不弱於django,但與Nosql非關系型數據庫的配合由於django。
3,適應小網站
Flask
•Flask確實很“輕”,不愧是Micro Framework,從Django轉向Flask的開發者一定會如此感慨,除非二者均為深入使用過
•Flask自由、靈活,可擴展性強,第三方庫的選擇面廣,開發時可以結合自己最喜歡用的輪子,也能結合最流行最強大的Python庫
•入門簡單,即便沒有多少web開發經驗,也能很快做出網站
•非常適用於小型網站 •非常適用於開發web服務的API
•開發大型網站無壓力,但代碼架構需要自己設計,開發成本取決於開發者的能力和經驗
•各方面性能均等於或優於Django •Django自帶的或第三方的好評如潮的功能,Flask上總會找到與之類似第三方庫
•Flask靈活開發,Python高手基本都會喜歡Flask,但對Django卻可能褒貶不一
•Flask與關系型數據庫的配合使用不弱於Django,而其與NoSQL數據庫的配合遠遠優於Django
•Flask比Django更加Pythonic,與Python的philosophy更加吻合
Django
•Django太重了,除了web框架,自帶ORM和模板引擎,靈活和自由度不夠高
•Django能開發小應用,但總會有“殺雞焉用牛刀”的感覺 •Django的自帶ORM非常優秀,綜合評價略高於SQLAlchemy
•Django自帶的模板引擎簡單好用,但其強大程度和綜合評價略低於Jinja
•Django自帶ORM也使Django與關系型數據庫耦合度過高,如果想使用MongoDB等NoSQL數據,需要選取合適的第三方庫,且總感覺Django+SQL才是天生一對的搭配,Django+NoSQL砍掉了Django的半壁江山 •Django目前支持Jinja等非官方模板引擎
•Django自帶的數據庫管理app好評如潮 •Django非常適合企業級網站的開發:快速、靠譜、穩定
•Django成熟、穩定、完善,但相比於Flask,Django的整體生態相對封閉
•Django是Python web框架的先驅,用戶多,第三方庫最豐富,最好的Python庫,如果不能直接用到Django中,也一定能找到與之對應的移植 •Django上手也比較容易,開發文檔詳細、完善,相關資料豐富
2,你在開發的過程中技術方面有什么問題?怎么解決的?
解決方案如下:
1) 自己查閱官網,看官方文檔,查看源碼,還有就是自己平時的積累(包括看書、資料、博客等等)
2) 找度娘、谷爹(這里我推薦用Shadowscks,一年大概是100RMB,比較穩定,當然了大家可以自己去找免費的翻牆軟件)
3) 去技術論壇求助。這里包括CSDN 、 Stack Overflow 、 博客園、開源中國等等 。很多人對於技術論壇求助比較懵逼,不知道怎么求助。
這里分享兩個:CSDN:新人提問指南 、 如何優雅的使用Stack Overflow 。 要記住,提出的問題要經過自己的研究,也不要害怕提問。
4) 找身邊朋友、技術群的朋友問問(記住5W 1H原則)
5) 向公司同事和leader請教,切記,這里放到第五步就是告訴大家,跟同事和朋友請教問題之前,最好自己先有過嘗試,查閱過相關資料,這樣你才能對問題描述的很清楚。
另外如果一個問題你獨自用前面四種方案花了2小時還沒解決,請立馬請教你們公司的技術牛人並上報leader(我們公司要求是1小時)
6) 如果是特殊問題,比如一些性能問題/ 接口響應緩慢等等 ,這些就需要各位看官自己的積累了,還有就是熟練運用 jdk自帶的分析工具,比如jconsole、jstack等等
3,文檔分布式存儲熟悉嗎?
4,自己搭建過docker嗎? Docker能解決什么問題呢?
一個工具的出現必然需要解決一些問題,Docker也不例外,簡單說說我們常見的2種情況Docker是如何解決的吧。
1、程序在我這跑得好好的,在你那怎么就不行呢?! 這是一個典型的應用場景,作為程序員別說沒有遇到過這個問題。
Docker image(鏡像)中不僅包含了代碼,也包含了程序運行時所需的所有依賴。比如java的程序,肯定要在image中包含jdk;
比如Python的程序,肯定要在image中包含對應版本的Python解釋器。程序在我這跑得好好的,去你那就不行了,這顯然是環境問題,
Docker把整個運行時環境打包放到image中,所以搞定了環境依賴問題! 這點很重要么?真的很重要!
我們知道,一個程序要跑起來,需要這么幾部分:代碼 + 運行環境 + 配置 + 依賴的服務。代碼當然就是同一份代碼,不同的環境都一樣,通常不會有問題。
但是問題的關鍵就在於環境和配置,不同的環境、不同的配置,同樣的代碼就不一定能按部就班的跑起來了。Docker image中包含了運行環境+配置,既能夠確保環境和配置的統一,也能夠方便快速的部署。
所以總結起來就是:Docker解決了運行環境和配置問題,方便發布,也就方便做持續集成。
2、系統好卡,肯定是又有哪個哥們的程序在作孽了 現在的服務器都牛的很,動不動128G內存,24個CPU,Linux本身就是個多租戶的操作系統,可以多人共用,
但是如果某個程序狂吃內存和CPU,占用了太多系統資源,這就會影響其他程序的運行。 一個公司的幾個同事共用一台機器出現這種問題可以通過內部協調溝通解決。
但是雲主機提供商呢?
不同的用戶之間不認識,共用一台強大的計算機,結果某個程序耗盡了資源,用戶肯定不樂意了。所以虛擬機出現了,良好了做了資源隔離,不同用戶之間彼此老死不相往來,不會相互影響,世界一下子清靜了。
但是,虛擬機有缺點:
創建速度慢,遷移起來麻煩,因為中間加了一層guest os,有了性能損耗,一個牛逼的機器也就創建十幾個虛擬機,太浪費了...
相對虛擬機的重量級虛擬化方案,Linux內核級的一些隔離方案讓人們看到了希望,cgroups、namespace、tc、quota、chroot、lxc。
終於,Docker出現了,Docker利用這些成熟的技術,讓虛擬化變得輕量了起來,創建一個container瞬間完成,秒級!cpu指令集不再被翻譯執行,性能損耗非常少,
雖說隔離性沒有虛擬機那么徹底,安全性上稍差一些,但也基本可以用,不用太擔心~ 所以總結起來就是:更輕量的虛擬化,節省了虛擬機的性能損耗