在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ 數(shù)據(jù)庫(kù)問(wèn)答
練命 回答
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ì)。

小眼睛 回答

B聊天框的滾動(dòng)軸自動(dòng)滾動(dòng)到最下方前先加一個(gè)判斷,判斷是否有上翻操作

玩控 回答

設(shè)置連接池,其實(shí)這也是連接池的使用場(chǎng)景。
MongoClient 就有帶這個(gè)功能。
配置連接池的最大連接數(shù)就好了。

使用addToSet指令

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

clipboard.png

北城荒 回答

@歐兜兜是素姀 的回答是正確的,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:
  ........
風(fēng)畔 回答

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 的情況,我一般使用兩種方法解決:

  1. 短的判斷可以用三目運(yùn)算符代替;
  2. 很多時(shí)候 if 時(shí)使用了return ,后面就可以不寫 else 了 。

補(bǔ)充:

概括一下:

  1. 模型中建議使用 return ,而不是拋出異常,return 的數(shù)據(jù)可以自己封裝個(gè)函數(shù)或方法;(當(dāng)然,要結(jié)合業(yè)務(wù)的具體需求!)
  2. 拋出異常意味著程序的終止,在非必須的情況下不要這樣做;
  3. 控制器中直接使用 success 和 error 或 ajaxReturn 方法即可。

但如果把樓主看到的“大神”的代碼從模型中移到控制器的話,應(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方面的因素,做好總體分析和局部的平衡