select a_v+b_v+c_v+...
from (select
case when a is null then 1 else 0 end a_v,
case when b is null then 1 else 0 end b_v,
...
from table
where ...) aa;單看這段規(guī)則沒(méi)任何問(wèn)題的。
因該是你程序有上傳漏洞,比如圖片上傳,用戶上傳了uurs.php的非法文件,通過(guò)php重寫了htaccess文件。。
這樣的 json 結(jié)果,需要你用 Python 的數(shù)據(jù)庫(kù)類里設(shè)置好相應(yīng)的輸出 json 函數(shù)。
不敢再發(fā)我的項(xiàng)目鏈接,老是被那些不認(rèn)真,不仔細(xì),或者說(shuō)一知半解的人舉報(bào)。
如果你想學(xué)習(xí) sql to sqlalchemy,你可以查看我的資料,然后找到相關(guān) github 項(xiàng)目的鏈接。
評(píng)論和回答應(yīng)該是分表的。
評(píng)論表應(yīng)該會(huì)有這些字段:
id 自增
content 評(píng)論的內(nèi)容
uid 誰(shuí)寫的評(píng)論
type 類型,是問(wèn)題的評(píng)論,還是回答的評(píng)論
qid/answer_id 問(wèn)題或回答的id,當(dāng)然,也可以把問(wèn)題評(píng)論和回答的評(píng)論分成不同的表,這樣,type字段就可以不要了。
time 添加時(shí)間
zan 獲得的點(diǎn)贊數(shù)
pid 回復(fù)的對(duì)象,如果沒(méi)有則為0
status 狀態(tài),正常,還是被刪除,或者是用戶自己刪除(刪除方式,segmentfault 不一定有區(qū)分)
相關(guān)聯(lián)的表應(yīng)該有:
用戶表,與uid關(guān)聯(lián)
問(wèn)題表,與qid關(guān)聯(lián)
回答表,與answer_id關(guān)聯(lián)(與qid二選一)
贊同表,每一個(gè)贊同應(yīng)該都是有紀(jì)錄的,所有應(yīng)該有個(gè)獨(dú)立的表,但它們之間的關(guān)系一般是“同時(shí)”,與上面幾個(gè)的“關(guān)聯(lián)”不太一樣。
是我的話,差不多會(huì)這樣設(shè)計(jì)。
webstorm全局搜索
B聊天框的滾動(dòng)軸自動(dòng)滾動(dòng)到最下方前先加一個(gè)判斷,判斷是否有上翻操作
設(shè)置連接池,其實(shí)這也是連接池的使用場(chǎng)景。
MongoClient 就有帶這個(gè)功能。
配置連接池的最大連接數(shù)就好了。
db.books.updateMany({},{$addToSet:{"tags":"newTag"}})Tag Aware Sharding可以達(dá)到你的目的,但是這樣到后期數(shù)據(jù)會(huì)不均衡,并不推薦這樣使用,還是盡可能讓它更均衡。
不需要設(shè)置 conn.setAutoCommit(true);
conn.close();執(zhí)行后autoCommit屬性變?yōu)閠rue.需要同時(shí)滿足兩個(gè)要求:
1、a中的每個(gè)元素e,其“勢(shì)”都要小于等于b中對(duì)應(yīng)元素的勢(shì)。
2、b中至少存在一個(gè)元素f,其勢(shì)要大于a中對(duì)應(yīng)元素的勢(shì)。
第1條的意思比較直觀,而第2條的意思可能咋一看不太好理解,這里簡(jiǎn)單解釋一下。
第1條的要求是a中元素的勢(shì)小于等于b中元素的勢(shì),而第2條則要求a中元素的勢(shì)不能都等于b中元素的勢(shì),而是必須至少有一個(gè)小于的才能稱之為“proper subcollection”。
你好,請(qǐng)問(wèn)rules里的validator可以和async-validator結(jié)合起來(lái)嗎?難道得一個(gè)的寫驗(yàn)證器
對(duì)于參數(shù)綁定為何可以避免SQL注入,建議題主可以了解一下,值得注意的是prepare語(yǔ)句只能解析一條SQL,下面摘要說(shuō)明一下prepare的作用:
首先從mysql服務(wù)器執(zhí)行sql的過(guò)程開始講起,SQL執(zhí)行過(guò)程包括以下階段 詞法分析->語(yǔ)法分析->語(yǔ)義分析->執(zhí)行計(jì)劃優(yōu)化->執(zhí)行。詞法分析->語(yǔ)法分析這兩個(gè)階段我們稱之為硬解析。詞法分析識(shí)別sql中每個(gè)詞,語(yǔ)法分析解析SQL語(yǔ)句是否符合sql語(yǔ)法,并得到一棵語(yǔ)法樹(Lex)。對(duì)于只是參數(shù)不同,其他均相同的sql,它們執(zhí)行時(shí)間不同但硬解析的時(shí)間是相同的。而同一SQL隨著查詢數(shù)據(jù)的變化,多次查詢執(zhí)行時(shí)間可能不同,但硬解析的時(shí)間是不變的。對(duì)于sql執(zhí)行時(shí)間較短,sql硬解析的時(shí)間占總執(zhí)行時(shí)間的比率越高。而對(duì)于淘寶應(yīng)用的絕大多數(shù)事務(wù)型SQL,查詢都會(huì)走索引,執(zhí)行時(shí)間都比較短。因此淘寶應(yīng)用db sql硬解析占的比重較大。
Prepare的出現(xiàn)就是為了優(yōu)化硬解析的問(wèn)題。Prepare在服務(wù)器端的執(zhí)行過(guò)程如下
1) Prepare 接收客戶端帶”?”的sql, 硬解析得到語(yǔ)法樹(stmt->Lex), 緩存在線程所在的preparestatement cache中。此cache是一個(gè)HASH MAP. Key為stmt->id. 然后返回客戶端stmt->id等信息。
2) Execute 接收客戶端stmt->id和參數(shù)等信息。注意這里客戶端不需要再發(fā)sql過(guò)來(lái)。服務(wù)器根據(jù)stmt->id在preparestatement cache中查找得到硬解析后的stmt, 并設(shè)置參數(shù),就可以繼續(xù)后面的優(yōu)化和執(zhí)行了。
Prepare在execute階段可以節(jié)省硬解析的時(shí)間。如果sql只執(zhí)行一次,且以prepare的方式執(zhí)行,那么sql執(zhí)行需兩次與服務(wù)器交互(Prepare和execute), 而以普通(非prepare)方式,只需要一次交互。這樣使用prepare帶來(lái)額外的網(wǎng)絡(luò)開銷,可能得不償失。我們?cè)賮?lái)看同一sql執(zhí)行多次的情況,比如以prepare方式執(zhí)行10次,那么只需要一次硬解析。這時(shí)候 額外的網(wǎng)絡(luò)開銷就顯得微乎其微了。因此prepare適用于頻繁執(zhí)行的SQL。
Prepare的另一個(gè)作用是防止sql注入,不過(guò)這個(gè)是在客戶端jdbc通過(guò)轉(zhuǎn)義實(shí)現(xiàn)的,跟服務(wù)器沒(méi)有關(guān)系。
建議題主看下MySQL官方文檔(https://dev.mysql.com/doc/ref...)。什么?看不懂英文?試試百度翻譯吧:https://fanyi.baidu.com
@歐兜兜是素姀 的回答是正確的,mongoose的Schema可以使用required屬性來(lái)規(guī)范數(shù)據(jù),這樣不符合要求的數(shù)據(jù)存入mongodb會(huì)失敗的。
但是,就算是數(shù)據(jù)庫(kù)規(guī)范了,前端也不能假設(shè)數(shù)據(jù)庫(kù)返回的數(shù)據(jù)沒(méi)問(wèn)題,前端還是需要對(duì)后端返回的數(shù)據(jù)進(jìn)行驗(yàn)證和容錯(cuò)。因?yàn)榍岸撕秃蠖耸欠蛛x的,前端需要假設(shè)后端會(huì)出錯(cuò)。事實(shí)上,后端出錯(cuò)也是無(wú)法避免的,因?yàn)榇a一直在修改,哪天后端不小心刪掉required字段呢?
不了解你完整的業(yè)務(wù)場(chǎng)景,但是跨線程的話,一般是需要傳遞app_context的。
# 線程一,然后將這個(gè)參數(shù)傳遞給線程二
app_context = flask.current_app.app_context()
# 線程二,此處的app_context為線程一中傳遞來(lái)的參數(shù)
with app_context:
........1.match2的條件 這個(gè)None是啥意思,如果是想查詢consume這個(gè)字段是否存在,可以改成
{'$match': {'consume': {$exist:true}}}
2.這種優(yōu)化,我曾經(jīng)問(wèn)過(guò)專業(yè)的大神@Mongoing中文社區(qū),我來(lái)班門弄斧一下,你這種查詢我猜測(cè)會(huì)很慢,但是慢的原因不在于match寫得有問(wèn)題,而是lookup太慢了,十分影響效率,mongodb是非關(guān)系型數(shù)據(jù)庫(kù),本身設(shè)計(jì)就不想要關(guān)系(我猜的哈),所以lookup和其它查詢關(guān)系的并不是它的強(qiáng)項(xiàng),而且你這里查詢的是消費(fèi)記錄和充值記錄,這兩個(gè)完全是可能不會(huì)更改的數(shù)據(jù),所以我建議是更改數(shù)據(jù)結(jié)構(gòu),將consume和recharge直接存放在這個(gè)user下面,然后不用lookup,直接篩選就可以了,這樣絕對(duì)會(huì)很快,當(dāng)然這前提是在業(yè)務(wù)允許的情況下,修改數(shù)據(jù)結(jié)構(gòu)。
下面貼出我大哥的回答
mongodb的關(guān)聯(lián)查詢$lookup
ps:而且我做過(guò)一個(gè)實(shí)驗(yàn),20條數(shù)據(jù)都要lookup的情況下,我查兩次數(shù)據(jù)庫(kù)(先查出lookup之前的數(shù)據(jù),再用lookup的根據(jù)(比如說(shuō)_id)去再查一次數(shù)據(jù)庫(kù),再把這兩者的結(jié)果整合成我想要的數(shù)據(jù))都比直接lookup要快。。。。
換了netbeans後已成功連線QQ
因?yàn)槲沂褂玫氖潜容^舊的版本,所以我目前的處理方法是,把<el-select>封裝一下
你只是想返回一個(gè)結(jié)果,但使用 throw 一般是拋出異常。
很多時(shí)候返回 status 為0,其實(shí)并不是異常。
我覺(jué)得這些時(shí)候使用 throw 是不合適的。
所謂的異常,應(yīng)該是“它本來(lái)應(yīng)該是這樣的,但結(jié)果卻不是”,才需要拋出異常。
比如你要處理一張圖片,傳的參數(shù)指向的文件存在,文件后綴也存在,但讀取數(shù)據(jù)后卻不能正確處理,這時(shí)拋個(gè)異常是可以理解的,但我個(gè)人覺(jué)得這還不夠好。
因?yàn)槲揖陀龅竭^(guò),使用 thinkPHP 3.2 的圖片處理類,遇到不能處理的圖片,直接拋出了異常,但其實(shí)對(duì)我來(lái)說(shuō),如果處理圖片有問(wèn)題 ,是可以直接跳過(guò)去的。
也就是說(shuō):只有“這一步如果出錯(cuò),后面的代碼執(zhí)行就完全沒(méi)有意義或者完全不能執(zhí)行”的時(shí)候才去拋出異常,否則只需要返回結(jié)果,給使用者(可能是控制器)去處理就好了。
對(duì)于樓主的需求,ThinkPHP 是有內(nèi)置的方法的,比如控制器中有 success() 和 error() 兩種方法來(lái)滿足樓主的需要,當(dāng)然,我個(gè)人比較喜歡 ThinkPHP 3.2的處理方式,比如簡(jiǎn)潔,ThinkPHP 5中的這兩個(gè)方法添加了不必要的參數(shù),寫起來(lái)倒挺麻煩的。
但這兩個(gè)方法只在控制器中有,模型中默認(rèn)是沒(méi)有的,當(dāng)然,如果你喜歡的話,也可以加到模型中去。
但我個(gè)人同樣不太推薦。處理返回結(jié)果或頁(yè)面跳轉(zhuǎn)的任務(wù)還是交給控制器會(huì)比較好。
模型中,其實(shí)可以自己定義個(gè)類似的方法,比如:
function succ($data="",$status=1){
return array(
'status'=>$status,
'info'=>$data,
);
}
function error($msg=""){
return succ($msg,0);
}
你在模型中直接 return succ($data);或 return error($msg);即可。
控制器中根據(jù)返回的數(shù)組,再使用$this->success()或$this->error();當(dāng)然,如果你在使用ThinkPHP 5,也像我一樣比較喜歡 ThinkPHP 3.2 的風(fēng)格,這兩個(gè)方法你是可以改成3.2的風(fēng)格的。
說(shuō)回樓主和你看到的大神的代碼,基本思想都差不多,只不過(guò)你直接返回一個(gè)數(shù)組,而“大神”卻直接拋出異常,我不喜歡這位大神的風(fēng)格。
但你和“大神”都喜歡寫重復(fù)的 "status'=>1,"msg"=>......,我則比較喜歡把它裝進(jìn)函數(shù)或方法中,畢竟這兩個(gè)操作是使用非常頻繁的。
關(guān)于代碼中較多 if/else 的情況,我一般使用兩種方法解決:
但如果把樓主看到的“大神”的代碼從模型中移到控制器的話,應(yīng)該是合理的(除了重復(fù)的代碼有點(diǎn)多外)。
我個(gè)人是不太喜歡使用 throw,但我查看了一下 ThinkPHP 5 和 ThinkPHP 3.2 的源碼,其中的 success和 error 方法除了使用參數(shù)復(fù)雜性不同外,還有一點(diǎn)區(qū)別就是 3.2直接使用 exit()結(jié)束程序,而 5.0 版本中使用的是 throw 一個(gè)異常類。
應(yīng)該有理由相信,使用 throw 可能會(huì)比如說(shuō) exit 更好。
于是,我找到一種說(shuō)法:
PHP調(diào)用exit退出腳本執(zhí)行不會(huì)導(dǎo)致PHP服務(wù)退出。
https://segmentfault.com/q/10...
我不了解底層的機(jī)制,但我覺(jué)得這種說(shuō)法是比較可信的。
如果瓶頸在于IO,多少線程都一樣啊, 除非的分表存在不同的物理磁盤上.
你需要統(tǒng)一下IO情況才行.
你可以用top或iostat查看一下sql執(zhí)行時(shí)的wa, IO-wait參數(shù), 比例是多少.
IO資源方面瓶頸
出現(xiàn) IO 資源方面瓶頸的時(shí)候,主要表現(xiàn)在服務(wù)器 iowait 很高,usr 占比較少,系統(tǒng)響應(yīng)較慢,數(shù)據(jù)庫(kù)中經(jīng)常會(huì)存在大量執(zhí)行狀態(tài)的 session。
遇到 IO 資源方面的瓶頸,我們可以使用的硬件層面優(yōu)化方案主要就是:
增加內(nèi)存加大可緩存的數(shù)據(jù)量:這個(gè)方案能否達(dá)到效果取決于系統(tǒng)熱點(diǎn)數(shù)據(jù)的總量,畢竟內(nèi)存的成本也是比較高的,而且單臺(tái)設(shè)備所能管理的內(nèi)存量也是有限的
改善底層存儲(chǔ)設(shè)備的 IO 能力:如本文前面所述,底層存儲(chǔ)能力的改善同時(shí)取決于多個(gè)方面,既有單個(gè)磁盤本身的能力問(wèn)題,也包括磁盤數(shù)目方面的策略,同時(shí)還受到存儲(chǔ)自身以及存儲(chǔ)和主機(jī)之間的帶寬限制。所以在優(yōu)化底層存儲(chǔ)能力的同時(shí)需要同時(shí)考慮到這3方面的因素,做好總體分析和局部的平衡
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。