Java 和 Python 思維方式的不同之處
本文是對未聞Code·知識星球上的開發(fā)經(jīng)驗以及問題解答的總結(jié)。
一、開發(fā)經(jīng)驗
語言決定思維方式
我剛剛開始工作的時候,其實特別討厭Java。因為它太繁瑣,就像一個絮絮叨叨的老奶奶。但后來因為工作原因強行寫了一年的Java,反而不那么討厭它了。
我們常說語言決定思維方式,Java和Python其實是兩種不同的思維方式。用Python寫代碼的時候,我思考的方式是從下到上,從低到高,實現(xiàn)一個個小組件,再組合成整體功能。但是Java先定義接口再實現(xiàn)接口,這種思維方式讓我寫代碼的時候先整體再局部,從高到低,從上到下,把一個功能拆解成一個個小部分。
另外,一開始我寫Python,喜歡用字典來存放各種數(shù)據(jù)。但是我從Java里面學(xué)到了bean的思想,用類來儲存數(shù)據(jù),這個方法讓我的Python代碼可讀性,可維護性大大提高了。
當(dāng)我們用Python開發(fā),有時候你要反復(fù)跟組員說不能亂用lambda函數(shù),不能一個變量賦值不同類型的數(shù)據(jù),不要什么數(shù)據(jù)都往字典堆一層套一層,過兩天他們可能還是要違反,但Java從語法層面就能防止這種事情發(fā)生。
二、問題解答
1南哥,可以詳細說一下,類存儲數(shù)據(jù)嗎?
可愛的豆子——使用Beans思想讓Python代碼更易維護 這是我2016年的一篇文章,記住Python變量類型的三種方式,2016年的時候,python還么有dataclass這個內(nèi)置模塊。現(xiàn)在用dataclass會更方便。
2南哥 ,出一篇https證書科普文章吧。比如:證書是干啥的,存在哪里了,怎么驗證的…再比如:怎么fildder也有自己的證書呢?這些玩意百度著雖能搞 原理并不很清楚
一日一技:HTTPS 證書和中間人攻擊的原理
3提問:目前還有辦法爬知乎僅會員可完整閱讀帖子內(nèi)容嗎?目前知乎會員可完整閱讀的帖子只能在 app 中可讀web 小程序都不行,airtest 現(xiàn)在不顯示回答的內(nèi)容,fd 抓包在 app 內(nèi)無網(wǎng)絡(luò) (手機自帶的瀏覽器可以訪問網(wǎng)絡(luò)排除了fd設(shè)置問題)
爬蟲只能爬到人眼能看到的內(nèi)容。如果服務(wù)器不返回全文,爬蟲自然爬不到。
41s1000并發(fā)的問題,之前用多線程等都達不到要求,找到了問題所在,之前一直用的是collection 中的deque作為隊列,今天換成了queue 并發(fā)一下子到了1000+..但queue底層是用了deque 為啥還會差別那么大?
誰告訴你queue的底層是deque?
deque底層是雙向鏈表。queue不是。
5提問:南哥,有辦法抓去到微信小程序接口getuserinfo返回的數(shù)據(jù)嗎?
有。你可以用mitmproxy監(jiān)控手機的http請求。攔截這個接口的返回信息。我的爬蟲書上面講到了具體的方法,可以在微信讀書上面搜索我的名字就能找到我的書,綠皮那本。
6接問題5,可是這樣不繞過安卓微信的sslpining,能抓到數(shù)據(jù)嗎?有沒有辦法電腦微信抓取呢?這樣方便一點
用ios
7提問:南哥,requests的 r.raw和r.content有什么大區(qū)別,獲取的數(shù)據(jù)都屬于bytes類型呀?
官網(wǎng)原文:In the rare case that you’d like to get the raw socket response from the server, you can access r.raw. If you want to do this, make sure you set stream=True in your initial request.
.raw是socket返回的內(nèi)容。完全沒有經(jīng)過修改。而.content是經(jīng)過修改和轉(zhuǎn)碼的。如果網(wǎng)站返回的是gzip或者deflate的內(nèi)容,.content會自動解開
8請教一個問題:想監(jiān)控一個git工程,當(dāng)git工程新建分支,或者指定分支有提交時,自動觸發(fā)一個持續(xù)集成任務(wù),這個需求,我應(yīng)該用什么方法實現(xiàn)呢?
如果你用的是GitHub,可以通過GitHub action。如果你用的gitlab,它有一個東西叫做webhook,讓你填寫一個網(wǎng)址,每次提交會調(diào)用一次這個網(wǎng)址
9提問:號內(nèi)文章多線程事件監(jiān)控一日一技:Python多線程的事件監(jiān)控文章示例代碼中eve是類外定義的全局變量,self.event可以算類內(nèi)部實例方法的局部變量。兩個變量為何是同一個對象呢?
我用參數(shù)傳進去了,代碼第17行