了解最新公司動(dòng)態(tài)及行業(yè)資訊
增加了c++ web快速開發(fā)框架的使用說明,可用于編寫商城接單的開源項(xiàng)目,包括快速搭建方法。
:
或者國內(nèi)碼云:
另外,我錄制了一個(gè)演示視頻(暫時(shí)僅限于非?;A(chǔ)的動(dòng)手操作)
2019.5 兩個(gè)附加點(diǎn):
1、答案中提到的C++ WEB開發(fā)平臺(tái)是中國開源的。還沒有處理它,所以還沒有文檔。稍后會(huì)添加(已經(jīng)添加),以及C++如何連接阿里短信云、騰訊公眾號(hào)、騰訊支付、阿里支付、微信掃碼登錄的C++ SDK包。
2、與答案相關(guān)的《白話C++》第一卷已經(jīng)出版。特點(diǎn)是比較生動(dòng),結(jié)合業(yè)務(wù)較多,厚實(shí)(900多頁),但適合初學(xué)者??稍谒兄饕脚_(tái)上使用。如果你想學(xué)習(xí)這個(gè)答案中提到的C++ WEB開發(fā)、網(wǎng)絡(luò)、數(shù)據(jù)庫。. . 請(qǐng)等待 10 月的下一卷。. . .
這是原始答案
今年春節(jié)期間,我花了7天時(shí)間和C++對(duì)話,30天完成。結(jié)果,我賺了30萬個(gè)小項(xiàng)目的小利潤。我真是用C++賺外快的“壞習(xí)慣”。
先回答問題:建議大家可以(嘗試)用C++寫一個(gè)WEB項(xiàng)目。
插入搜索興趣組:看到這個(gè)問題的應(yīng)該主要是C++程序員!對(duì)玩C++和構(gòu)建高性能WEB應(yīng)用感興趣的同學(xué),請(qǐng)關(guān)注微信公眾號(hào)誠之網(wǎng)。讓我們一起學(xué)習(xí)和玩耍。
~7/14 補(bǔ)充:
評(píng)論里很多人還在用C++寫東西,尤其是WEB后端,需要花很多心思去重新發(fā)明輪子。. . 的確,最早的WEB程序是CGI線型的,也就是用C或者C++,后來漂亮的輪子出來了,比如PHP。但現(xiàn)在情況如何?加一段讓大家更容易理解:
# 前端:html5、css、js()、ajax、前端模板技術(shù)。
# 后端框架:nginx(web訪問和負(fù)載均衡)、redis(全局緩存、跨主機(jī)管理)、MySQL和MySQL官方C++ SDK。(只作為高性能服務(wù)器使用,替代方案很多,風(fēng)格API,封裝所有線程,異步,自動(dòng)綁定html請(qǐng)求和響應(yīng)參數(shù)...)。
# 無聊又不開心的C++程序員:媽的,別讓我處理并發(fā),別讓我處理異步,別讓我寫內(nèi)存池,別讓我寫數(shù)據(jù)庫連接池,別讓我寫我寫網(wǎng)絡(luò)連接池,別讓我碰linux下的網(wǎng)絡(luò)功能,甚至寫json消息的解析(信不信,我只是有雄心和能力分分鐘寫一個(gè)新庫??),啊,即使有終端顏色輸出日志庫也不讓我寫?我還是 C++ 程序員嗎?我想看看誰敢阻止我從零開始,主要是C,稍微編譯一下,寫個(gè)MQ?!啊,這個(gè)是,你好,請(qǐng)坐。老板,你過來告訴你這個(gè)干果放在哪個(gè)虛擬架子上。你想支持多個(gè)倉庫嗎?你想分?jǐn)傎~單嗎?購物車支持黃金豪華版和東南亞草裙舞版皮膚自動(dòng)切換嗎?老板:別著急,這里的設(shè)計(jì)很復(fù)雜,你要滿足我一鍵把菲律賓水果全部換到廣西的功能!你用過這個(gè)C倉促開發(fā)嗎?不行,還是換我聽說過的兩種語言?
# 一個(gè)月后……系統(tǒng)上線,幾個(gè)關(guān)鍵特性的性能提升了30倍,肉眼可以識(shí)別。老板高興地給了我錢,C++程序員在屈辱中拿走了現(xiàn)金,我數(shù)錢的時(shí)候手都抽筋了(其實(shí)是老板給了我現(xiàn)金)。邊數(shù)邊哭:不讓我發(fā)明輪子……我以后還想做C++朋友圈的人嗎……
-~~~以下文字~~~~
一家傳統(tǒng)銷售公司高舉互聯(lián)網(wǎng)大旗進(jìn)行轉(zhuǎn)型。節(jié)后我們將在部分城市舉辦現(xiàn)場(chǎng)活動(dòng)。該系統(tǒng)是由一家不可靠的小公司于去年 8 月制造的。PHP 價(jià)格為 150,000(大約)。
功能很亂,例如:不同的商場(chǎng)使用不同的購物車。
性能有問題。只有一臺(tái)服務(wù)器(因?yàn)闆]有考慮負(fù)載分擔(dān)),開發(fā)者自己也沒有信心支持5000人的會(huì)議。吱吱喳喳。
存在安全問題,邏輯漏洞嚴(yán)重,被(猜的,從里面出去的人)攻擊,客戶說一下午一晚上損失近20萬,緊急關(guān)停。
七騙八騙的關(guān)系,找我求救。大會(huì)日期臨近。
但我是一個(gè) 1997 年開始的傳統(tǒng)程序員。很難寫出像樣的 WEB/BS 應(yīng)用程序。
在工作中,我寫過工控程序,比如傳統(tǒng)的桌面軟件,以及C和j2me嵌入式開發(fā),用C#寫過wince程序。
外快方面,我寫了第一個(gè)程序,直接用它來賺外快。2000年,我在一張標(biāo)準(zhǔn)的醫(yī)療多媒體宣傳CD上7天賺了5000元。大概是2004年,我也用C++寫過擦邊球軟件,一個(gè)月賺20K。
網(wǎng)站?后臺(tái)java或PHP程序沒有認(rèn)真寫過。這二十年。
我不敢答應(yīng),我先答應(yīng)幫你看PHP代碼找問題指導(dǎo)你??戳似咛?。乍一看,肯定是犯了程序員的臭毛病,想重寫。
第一步是處理程序集,改變或繞過當(dāng)前 PHP 代碼上的一些不好的東西。成功后,進(jìn)入第二步,雙方開始討論如何全部改寫。我報(bào)價(jià)一百萬。我想找一個(gè)朋友,花一個(gè)月的時(shí)間重寫這個(gè)商場(chǎng)。親自與客戶公司的其他股東交談。我拿出報(bào)價(jià)表??蛻粽f另外一個(gè)十幾人的開發(fā)團(tuán)隊(duì)報(bào)價(jià)才12萬元,從美國請(qǐng)來了技術(shù)總監(jiān)說改寫的關(guān)鍵是什么。. .
談判很快結(jié)束。開始正式談?wù)撊绾尾鸪缓笾匦麻_始。對(duì)方的負(fù)責(zé)人根本不懂IT。過去六個(gè)月,“久病成醫(yī)”,他專業(yè)地說:重寫是可以的,但是PHP不能用了,必須用JAVA。
認(rèn)真糾正了他對(duì)PHP的誤解,告訴他世界上很多有名的大型網(wǎng)站都是用這種語言建的迪拜城。他說比喻應(yīng)該是羅馬城。這么聰明的老板,在文藝修辭上還是跟不上時(shí)代,所以很多 C++ 愛好者堅(jiān)持 C++ 不能寫 web 后端也就不足為奇了。
我知道 HTML5 和 JS(主要是)。我知道 C++。我還沒有嘗試過,但我一直非常樂觀地認(rèn)為可以(輕松地)用 C++ 編寫出色的 Web 應(yīng)用程序。
因?yàn)槲也淮蛩阌?C++ 寫一行代碼來吐出 HTML。我比較看不慣WEB編程語言背后的軟件架構(gòu)和思想,這些語言以字母P結(jié)尾,有特定的含義,比如PHP ASP JSP,作為一個(gè)C++程序員,我一直對(duì)MFC的第一版感到厭惡。它的結(jié)構(gòu)和設(shè)計(jì)思路并堅(jiān)持使用原生的WIN SDK開發(fā)包。(不是微軟的,但微軟的也不使用 MFC)。我以失去工作為代價(jià)更像是一個(gè)品味伙伴。
這次是為了賺外快,所以我應(yīng)該有自己做決定的權(quán)利。因此,在起草合同的時(shí)候,寫著:“系統(tǒng)后臺(tái)的主程序應(yīng)該用JAVA等非解釋性編程語言開發(fā)”。這種等價(jià)性很重要。
去Open China(),安裝一個(gè)估計(jì)不再維護(hù)的框架。該框架的名稱具有欺騙性,與 CMS 無關(guān)。問題很多,但是用它作為json-rpc服務(wù)器簡(jiǎn)單、健壯、高效(開發(fā)和運(yùn)營)。雖然不支持 JSON-RPC 2.0 標(biāo)準(zhǔn),但是遠(yuǎn)程調(diào)用需要滿足。
安裝 ngnix。將所有原始 PHP 網(wǎng)頁轉(zhuǎn)換為靜態(tài)網(wǎng)頁。純html5加js發(fā)起ajax從c++()編寫的后臺(tái)拉取數(shù)據(jù)(json格式),然后使用-來組織基于模板的數(shù)據(jù)呈現(xiàn)。(此模板使用 html 的“data-”屬性,因此它不會(huì)破壞純 HTML 功能)。
靜態(tài)頁面、JS腳本文件、CSS文件、圖片全部交給俄羅斯的ngnix。從我大致了解系統(tǒng)功能和不到20萬系統(tǒng)用戶的背景來看,我相信一個(gè)20兆帶寬的ngnix可以阻擋一切。這個(gè)判斷在后面實(shí)際跑的時(shí)候被打臉了,因?yàn)榭蓯鄣乃嚾说漠a(chǎn)品圖片都是高保真的。老板一邊催著他們按圖,一邊花小錢買了七牛云服務(wù)。@徐世偉。七頭牛不錯(cuò)。因?yàn)槟阃锨泛芫昧?,而且服?wù)還在,所以他們不太喜歡催你還款。另一個(gè)判斷是,小錢容易忘記。反正我覺得徐老板應(yīng)該很有技術(shù)含量。和我一樣,他不太在乎錢。
唯一不爽的是騰訊的微信SDK包(用來獲取用戶信息、支付等)好像是,反正我找不到C++版本。我看了看PHP版本,原來是用的,笑道:你不是純C做demo的嗎?不要以為如果你穿上世界上最好的背心,我就認(rèn)不出你了。所以我花了一個(gè)下午的時(shí)間研究了一個(gè) C++ 版本的微信 SDK。
網(wǎng)上商城技術(shù)架構(gòu):
一、純HTML+JS()+CSS負(fù)責(zé)頁面布局。使用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é)通過反向代理向C++編寫的REST服務(wù)請(qǐng)求數(shù)據(jù)。
第三,用C++編寫的REST服務(wù)。獨(dú)立進(jìn)程,多個(gè)可以部署在多臺(tái)服務(wù)器上。讓 nginx 負(fù)責(zé)負(fù)載均衡。
第四,使用redis作為大量數(shù)據(jù)的緩存。我和朋友們花了兩個(gè)小時(shí)挑選了一個(gè)很酷的 C++ 包。忘了它叫什么——這就是一個(gè)好工具,讓我們使用它并忘記它的存在。
第五,MySQL。使用 () C++ 客戶端 SDK,.
第六,PHP 并沒有全部丟失。但是作為(php)使用,編寫一個(gè)可以獨(dú)立運(yùn)行的程序pc運(yùn)維外包,在后臺(tái)讀取數(shù)據(jù),做一些非實(shí)時(shí)的任務(wù)處理。(例如,計(jì)算系統(tǒng)應(yīng)該給這個(gè)今天一口氣買了很多東西的客戶多少分..)
后記:程序一上線就運(yùn)行到5月底,哇,居然掛了。商場(chǎng)熱線不斷接聽,客服很生氣。我不著急。所以:七、用linux shell寫一個(gè)守護(hù)進(jìn)程,20秒檢查一下,進(jìn)程一消失就重啟。我在周末瀏覽了代碼。當(dāng)循環(huán)遍歷 std::map 的每個(gè)元素然后嘗試刪除(擦除)時(shí),這似乎是一個(gè)錯(cuò)誤。. . . NND,似乎是一個(gè)非常經(jīng)典的涉及 C++ 中迭代器的面試問題,對(duì)吧?你可以猜到!
使用STL,使用第三方庫接收http請(qǐng)求,然后使用官方庫讀寫數(shù)據(jù)庫,然后處理吐出json數(shù)據(jù)(轉(zhuǎn)換json數(shù)據(jù)也是第三方庫)。順便說一句,我們還使用了很多 C++11 的舒適特性。無需手動(dòng)分配和維護(hù)內(nèi)存,這種傳說中的恐怖語言其實(shí)就如??吭趎gnix后面的草地上吃草吐奶一樣聰明。除了在結(jié)構(gòu)中加入redis作為緩存之外,我完全沒有考慮任何特殊的優(yōu)化,但是實(shí)測(cè)性能(處理并發(fā)能力)比原版快了30倍。
老板很高興。原合同一百萬談判后,有六十萬多。但是因?yàn)殡p方合作太愉快了。老板說要成立一家新公司負(fù)責(zé)IT。和我一起開發(fā)的小伙伴成為股東,合同中的30萬余元未付轉(zhuǎn)為股本——我們一時(shí)高興,但也只是一時(shí)。很快發(fā)現(xiàn):沒有多余的錢
:(。
搭建開發(fā)環(huán)境:pc運(yùn)維外包,(CMake)
看到這個(gè)問題的應(yīng)該主要是C++程序員!有興趣玩C++和搭建高性能WEB應(yīng)用的同學(xué)請(qǐng)私信我并留下微信公眾號(hào)或者直接關(guān)注微信公眾號(hào)誠之網(wǎng)。讓我們一起玩(我說的是額外的錢)。
24小時(shí)免費(fèi)咨詢
請(qǐng)輸入您的聯(lián)系電話,座機(jī)請(qǐng)加區(qū)號(hào)