了解最新公司動(dòng)態(tài)及行業(yè)資訊
增加了c++ web快速開(kāi)發(fā)框架的使用說(shuō)明,可用于編寫(xiě)商城接單的開(kāi)源項(xiàng)目,包括快速搭建方法。
:
或者國(guó)內(nèi)碼云:
另外,我錄制了一個(gè)演示視頻(暫時(shí)僅限于非常基礎(chǔ)的動(dòng)手操作)
2019.5 兩個(gè)附加點(diǎn):
1、答案中提到的C++ WEB開(kāi)發(fā)平臺(tái)是中國(guó)開(kāi)源的。還沒(méi)有處理它,所以還沒(méi)有文檔。稍后會(huì)添加(已經(jīng)添加),以及C++如何連接阿里短信云、騰訊公眾號(hào)、騰訊支付、阿里支付、微信掃碼登錄的C++ SDK包。
2、與答案相關(guān)的《白話(huà)C++》第一卷已經(jīng)出版。特點(diǎn)是比較生動(dòng),結(jié)合業(yè)務(wù)較多,厚實(shí)(900多頁(yè)),但適合初學(xué)者。可在所有主要平臺(tái)上使用。如果你想學(xué)習(xí)這個(gè)答案中提到的C++ WEB開(kāi)發(fā)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)。. . 請(qǐng)等待 10 月的下一卷。. . .
這是原始答案
今年春節(jié)期間,我花了7天時(shí)間和C++對(duì)話(huà),30天完成。結(jié)果,我賺了30萬(wàn)個(gè)小項(xiàng)目的小利潤(rùn)。我真是用C++賺外快的“壞習(xí)慣”。

先回答問(wèn)題:建議大家可以(嘗試)用C++寫(xiě)一個(gè)WEB項(xiàng)目。
插入搜索興趣組:看到這個(gè)問(wèn)題的應(yīng)該主要是C++程序員!對(duì)玩C++和構(gòu)建高性能WEB應(yīng)用感興趣的同學(xué),請(qǐng)關(guān)注微信公眾號(hào)誠(chéng)之網(wǎng)。讓我們一起學(xué)習(xí)和玩耍。
~7/14 補(bǔ)充:
評(píng)論里很多人還在用C++寫(xiě)東西,尤其是WEB后端,需要花很多心思去重新發(fā)明輪子。. . 的確,最早的WEB程序是CGI線(xiàn)型的,也就是用C或者C++,后來(lái)漂亮的輪子出來(lái)了,比如PHP。但現(xiàn)在情況如何?加一段讓大家更容易理解:
# 前端:html5、css、js()、ajax、前端模板技術(shù)。
# 后端框架:nginx(web訪(fǎng)問(wèn)和負(fù)載均衡)、redis(全局緩存、跨主機(jī)管理)、MySQL和MySQL官方C++ SDK。(只作為高性能服務(wù)器使用,替代方案很多,風(fēng)格API,封裝所有線(xiàn)程,異步,自動(dòng)綁定html請(qǐng)求和響應(yīng)參數(shù)...)。
# 無(wú)聊又不開(kāi)心的C++程序員:媽的,別讓我處理并發(fā),別讓我處理異步,別讓我寫(xiě)內(nèi)存池,別讓我寫(xiě)數(shù)據(jù)庫(kù)連接池,別讓我寫(xiě)我寫(xiě)網(wǎng)絡(luò)連接池,別讓我碰linux下的網(wǎng)絡(luò)功能,甚至寫(xiě)json消息的解析(信不信,我只是有雄心和能力分分鐘寫(xiě)一個(gè)新庫(kù)??),啊,即使有終端顏色輸出日志庫(kù)也不讓我寫(xiě)?我還是 C++ 程序員嗎?我想看看誰(shuí)敢阻止我從零開(kāi)始,主要是C,稍微編譯一下,寫(xiě)個(gè)MQ?!啊,這個(gè)是,你好,請(qǐng)坐。老板,你過(guò)來(lái)告訴你這個(gè)干果放在哪個(gè)虛擬架子上。你想支持多個(gè)倉(cāng)庫(kù)嗎?你想分?jǐn)傎~單嗎?購(gòu)物車(chē)支持黃金豪華版和東南亞草裙舞版皮膚自動(dòng)切換嗎?老板:別著急,這里的設(shè)計(jì)很復(fù)雜,你要滿(mǎn)足我一鍵把菲律賓水果全部換到廣西的功能!你用過(guò)這個(gè)C倉(cāng)促開(kāi)發(fā)嗎?不行,還是換我聽(tīng)說(shuō)過(guò)的兩種語(yǔ)言?
# 一個(gè)月后……系統(tǒng)上線(xiàn),幾個(gè)關(guān)鍵特性的性能提升了30倍,肉眼可以識(shí)別。老板高興地給了我錢(qián),C++程序員在屈辱中拿走了現(xiàn)金,我數(shù)錢(qián)的時(shí)候手都抽筋了(其實(shí)是老板給了我現(xiàn)金)。邊數(shù)邊哭:不讓我發(fā)明輪子……我以后還想做C++朋友圈的人嗎……

-~~~以下文字~~~~
一家傳統(tǒng)銷(xiāo)售公司高舉互聯(lián)網(wǎng)大旗進(jìn)行轉(zhuǎn)型。節(jié)后我們將在部分城市舉辦現(xiàn)場(chǎng)活動(dòng)。該系統(tǒng)是由一家不可靠的小公司于去年 8 月制造的。PHP 價(jià)格為 150,000(大約)。
功能很亂,例如:不同的商場(chǎng)使用不同的購(gòu)物車(chē)。
性能有問(wèn)題。只有一臺(tái)服務(wù)器(因?yàn)闆](méi)有考慮負(fù)載分擔(dān)),開(kāi)發(fā)者自己也沒(méi)有信心支持5000人的會(huì)議。吱吱喳喳。
存在安全問(wèn)題,邏輯漏洞嚴(yán)重,被(猜的,從里面出去的人)攻擊,客戶(hù)說(shuō)一下午一晚上損失近20萬(wàn),緊急關(guān)停。
七騙八騙的關(guān)系,找我求救。大會(huì)日期臨近。
但我是一個(gè) 1997 年開(kāi)始的傳統(tǒng)程序員。很難寫(xiě)出像樣的 WEB/BS 應(yīng)用程序。
在工作中,我寫(xiě)過(guò)工控程序,比如傳統(tǒng)的桌面軟件,以及C和j2me嵌入式開(kāi)發(fā),用C#寫(xiě)過(guò)wince程序。

外快方面,我寫(xiě)了第一個(gè)程序,直接用它來(lái)賺外快。2000年,我在一張標(biāo)準(zhǔn)的醫(yī)療多媒體宣傳CD上7天賺了5000元。大概是2004年,我也用C++寫(xiě)過(guò)擦邊球軟件,一個(gè)月賺20K。
網(wǎng)站?后臺(tái)java或PHP程序沒(méi)有認(rèn)真寫(xiě)過(guò)。這二十年。
我不敢答應(yīng),我先答應(yīng)幫你看PHP代碼找問(wèn)題指導(dǎo)你。看了七天。乍一看,肯定是犯了程序員的臭毛病,想重寫(xiě)。
第一步是處理程序集,改變或繞過(guò)當(dāng)前 PHP 代碼上的一些不好的東西。成功后,進(jìn)入第二步,雙方開(kāi)始討論如何全部改寫(xiě)。我報(bào)價(jià)一百萬(wàn)。我想找一個(gè)朋友,花一個(gè)月的時(shí)間重寫(xiě)這個(gè)商場(chǎng)。親自與客戶(hù)公司的其他股東交談。我拿出報(bào)價(jià)表。客戶(hù)說(shuō)另外一個(gè)十幾人的開(kāi)發(fā)團(tuán)隊(duì)報(bào)價(jià)才12萬(wàn)元,從美國(guó)請(qǐng)來(lái)了技術(shù)總監(jiān)說(shuō)改寫(xiě)的關(guān)鍵是什么。. .
談判很快結(jié)束。開(kāi)始正式談?wù)撊绾尾鸪缓笾匦麻_(kāi)始。對(duì)方的負(fù)責(zé)人根本不懂IT。過(guò)去六個(gè)月,“久病成醫(yī)”,他專(zhuān)業(yè)地說(shuō):重寫(xiě)是可以的,但是PHP不能用了,必須用JAVA。
認(rèn)真糾正了他對(duì)PHP的誤解,告訴他世界上很多有名的大型網(wǎng)站都是用這種語(yǔ)言建的迪拜城。他說(shuō)比喻應(yīng)該是羅馬城。這么聰明的老板,在文藝修辭上還是跟不上時(shí)代,所以很多 C++ 愛(ài)好者堅(jiān)持 C++ 不能寫(xiě) web 后端也就不足為奇了。
我知道 HTML5 和 JS(主要是)。我知道 C++。我還沒(méi)有嘗試過(guò),但我一直非常樂(lè)觀(guān)地認(rèn)為可以(輕松地)用 C++ 編寫(xiě)出色的 Web 應(yīng)用程序。
因?yàn)槲也淮蛩阌?C++ 寫(xiě)一行代碼來(lái)吐出 HTML。我比較看不慣WEB編程語(yǔ)言背后的軟件架構(gòu)和思想,這些語(yǔ)言以字母P結(jié)尾,有特定的含義,比如PHP ASP JSP,作為一個(gè)C++程序員,我一直對(duì)MFC的第一版感到厭惡。它的結(jié)構(gòu)和設(shè)計(jì)思路并堅(jiān)持使用原生的WIN SDK開(kāi)發(fā)包。(不是微軟的,但微軟的也不使用 MFC)。我以失去工作為代價(jià)更像是一個(gè)品味伙伴。
這次是為了賺外快,所以我應(yīng)該有自己做決定的權(quán)利。因此,在起草合同的時(shí)候,寫(xiě)著:“系統(tǒng)后臺(tái)的主程序應(yīng)該用JAVA等非解釋性編程語(yǔ)言開(kāi)發(fā)”。這種等價(jià)性很重要。
去Open China(),安裝一個(gè)估計(jì)不再維護(hù)的框架。該框架的名稱(chēng)具有欺騙性,與 CMS 無(wú)關(guān)。問(wèn)題很多,但是用它作為json-rpc服務(wù)器簡(jiǎn)單、健壯、高效(開(kāi)發(fā)和運(yùn)營(yíng))。雖然不支持 JSON-RPC 2.0 標(biāo)準(zhǔn),但是遠(yuǎn)程調(diào)用需要滿(mǎn)足。
安裝 ngnix。將所有原始 PHP 網(wǎng)頁(yè)轉(zhuǎn)換為靜態(tài)網(wǎng)頁(yè)。純html5加js發(fā)起ajax從c++()編寫(xiě)的后臺(tái)拉取數(shù)據(jù)(json格式),然后使用-來(lái)組織基于模板的數(shù)據(jù)呈現(xiàn)。(此模板使用 html 的“data-”屬性,因此它不會(huì)破壞純 HTML 功能)。
靜態(tài)頁(yè)面、JS腳本文件、CSS文件、圖片全部交給俄羅斯的ngnix。從我大致了解系統(tǒng)功能和不到20萬(wàn)系統(tǒng)用戶(hù)的背景來(lái)看,我相信一個(gè)20兆帶寬的ngnix可以阻擋一切。這個(gè)判斷在后面實(shí)際跑的時(shí)候被打臉了,因?yàn)榭蓯?ài)的藝人的產(chǎn)品圖片都是高保真的。老板一邊催著他們按圖,一邊花小錢(qián)買(mǎi)了七牛云服務(wù)。@徐世偉。七頭牛不錯(cuò)。因?yàn)槟阃锨泛芫昧耍曳?wù)還在,所以他們不太喜歡催你還款。另一個(gè)判斷是,小錢(qián)容易忘記。反正我覺(jué)得徐老板應(yīng)該很有技術(shù)含量。和我一樣,他不太在乎錢(qián)。
唯一不爽的是騰訊的微信SDK包(用來(lái)獲取用戶(hù)信息、支付等)好像是,反正我找不到C++版本。我看了看PHP版本,原來(lái)是用的,笑道:你不是純C做demo的嗎?不要以為如果你穿上世界上最好的背心,我就認(rèn)不出你了。所以我花了一個(gè)下午的時(shí)間研究了一個(gè) C++ 版本的微信 SDK。
網(wǎng)上商城技術(shù)架構(gòu):
一、純HTML+JS()+CSS負(fù)責(zé)頁(yè)面布局。使用ajax請(qǐng)求數(shù)據(jù),使用-動(dòng)態(tài)顯示數(shù)據(jù)。
其次,在網(wǎng)站后臺(tái)部署一個(gè)nginx。一個(gè)負(fù)責(zé)吐出所有靜態(tài)文件,圖片數(shù)據(jù)設(shè)置了一層七牛緩存。第二個(gè)負(fù)責(zé)通過(guò)反向代理向C++編寫(xiě)的REST服務(wù)請(qǐng)求數(shù)據(jù)。
第三,用C++編寫(xiě)的REST服務(wù)。獨(dú)立進(jìn)程,多個(gè)可以部署在多臺(tái)服務(wù)器上。讓 nginx 負(fù)責(zé)負(fù)載均衡。
第四,使用redis作為大量數(shù)據(jù)的緩存。我和朋友們花了兩個(gè)小時(shí)挑選了一個(gè)很酷的 C++ 包。忘了它叫什么——這就是一個(gè)好工具,讓我們使用它并忘記它的存在。
第五,MySQL。使用 () C++ 客戶(hù)端 SDK,.
第六,PHP 并沒(méi)有全部丟失。但是作為(php)使用,編寫(xiě)一個(gè)可以獨(dú)立運(yùn)行的程序pc運(yùn)維外包,在后臺(tái)讀取數(shù)據(jù),做一些非實(shí)時(shí)的任務(wù)處理。(例如,計(jì)算系統(tǒng)應(yīng)該給這個(gè)今天一口氣買(mǎi)了很多東西的客戶(hù)多少分..)
后記:程序一上線(xiàn)就運(yùn)行到5月底,哇,居然掛了。商場(chǎng)熱線(xiàn)不斷接聽(tīng),客服很生氣。我不著急。所以:七、用linux shell寫(xiě)一個(gè)守護(hù)進(jìn)程,20秒檢查一下,進(jìn)程一消失就重啟。我在周末瀏覽了代碼。當(dāng)循環(huán)遍歷 std::map 的每個(gè)元素然后嘗試刪除(擦除)時(shí),這似乎是一個(gè)錯(cuò)誤。. . . NND,似乎是一個(gè)非常經(jīng)典的涉及 C++ 中迭代器的面試問(wèn)題,對(duì)吧?你可以猜到!
使用STL,使用第三方庫(kù)接收http請(qǐng)求,然后使用官方庫(kù)讀寫(xiě)數(shù)據(jù)庫(kù),然后處理吐出json數(shù)據(jù)(轉(zhuǎn)換json數(shù)據(jù)也是第三方庫(kù))。順便說(shuō)一句,我們還使用了很多 C++11 的舒適特性。無(wú)需手動(dòng)分配和維護(hù)內(nèi)存,這種傳說(shuō)中的恐怖語(yǔ)言其實(shí)就如牛靠在ngnix后面的草地上吃草吐奶一樣聰明。除了在結(jié)構(gòu)中加入redis作為緩存之外,我完全沒(méi)有考慮任何特殊的優(yōu)化,但是實(shí)測(cè)性能(處理并發(fā)能力)比原版快了30倍。
老板很高興。原合同一百萬(wàn)談判后,有六十萬(wàn)多。但是因?yàn)殡p方合作太愉快了。老板說(shuō)要成立一家新公司負(fù)責(zé)IT。和我一起開(kāi)發(fā)的小伙伴成為股東,合同中的30萬(wàn)余元未付轉(zhuǎn)為股本——我們一時(shí)高興,但也只是一時(shí)。很快發(fā)現(xiàn):沒(méi)有多余的錢(qián)
:(。
搭建開(kāi)發(fā)環(huán)境:pc運(yùn)維外包,(CMake)
看到這個(gè)問(wèn)題的應(yīng)該主要是C++程序員!有興趣玩C++和搭建高性能WEB應(yīng)用的同學(xué)請(qǐng)私信我并留下微信公眾號(hào)或者直接關(guān)注微信公眾號(hào)誠(chéng)之網(wǎng)。讓我們一起玩(我說(shuō)的是額外的錢(qián))。
24小時(shí)免費(fèi)咨詢(xún)
請(qǐng)輸入您的聯(lián)系電話(huà),座機(jī)請(qǐng)加區(qū)號(hào)
