鍍金池/ 問(wèn)答/ PHP問(wèn)答
怣人 回答

一般來(lái)說(shuō)是連表快一點(diǎn),但是要注意的是連表的索引要做好,不然數(shù)據(jù)量一大反而會(huì)比循環(huán)查詢(xún)慢

司令 回答

rules是Rule的列表,所以你可以放多個(gè)規(guī)則不同的Rule

別瞎鬧 回答

Docker的四種網(wǎng)絡(luò)模式:

Bridge模式

當(dāng)Docker進(jìn)程啟動(dòng)時(shí),會(huì)在主機(jī)上創(chuàng)建一個(gè)名為docker0的虛擬網(wǎng)橋,此主機(jī)上啟動(dòng)的Docker容器會(huì)連接到這個(gè)虛擬網(wǎng)橋上。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類(lèi)似,這樣主機(jī)上的所有容器就通過(guò)交換機(jī)連在了一個(gè)二層網(wǎng)絡(luò)中。

從docker0子網(wǎng)中分配一個(gè)IP給容器使用,并設(shè)置docker0的IP地址為容器的默認(rèn)網(wǎng)關(guān)。在主機(jī)上創(chuàng)建一對(duì)虛擬網(wǎng)卡veth pair設(shè)備,Docker將veth pair設(shè)備的一端放在新創(chuàng)建的容器中,并命名為eth0(容器的網(wǎng)卡),另一端放在主機(jī)中,以vethxxx這樣類(lèi)似的名字命名,并將這個(gè)網(wǎng)絡(luò)設(shè)備加入到docker0網(wǎng)橋中??梢酝ㄟ^(guò)brctl show命令查看。

bridge模式是docker的默認(rèn)網(wǎng)絡(luò)模式,不寫(xiě)--net參數(shù),就是bridge模式。使用docker run -p時(shí),docker實(shí)際是在iptables做了DNAT規(guī)則,實(shí)現(xiàn)端口轉(zhuǎn)發(fā)功能。可以使用iptables -t nat -vnL查看。

bridge模式如下圖所示:

clipboard.png

Host模式

如果啟動(dòng)容器的時(shí)候使用host模式,那么這個(gè)容器將不會(huì)獲得一個(gè)獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個(gè)Network Namespace。容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口。但是,容器的其他方面,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的。

Host模式如下圖所示:

clipboard.png

Container模式

這個(gè)模式指定新創(chuàng)建的容器和已經(jīng)存在的一個(gè)容器共享一個(gè) Network Namespace,而不是和宿主機(jī)共享。新創(chuàng)建的容器不會(huì)創(chuàng)建自己的網(wǎng)卡,配置自己的 IP,而是和一個(gè)指定的容器共享 IP、端口范圍等。同樣,兩個(gè)容器除了網(wǎng)絡(luò)方面,其他的如文件系統(tǒng)、進(jìn)程列表等還是隔離的。兩個(gè)容器的進(jìn)程可以通過(guò) lo 網(wǎng)卡設(shè)備通信。

Container模式示意圖:

clipboard.png

None模式

使用none模式,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進(jìn)行任何網(wǎng)絡(luò)配置。也就是說(shuō),這個(gè)Docker容器沒(méi)有網(wǎng)卡、IP、路由等信息。需要我們自己為Docker容器添加網(wǎng)卡、配置IP等。

Node模式示意圖:

clipboard.png

更多請(qǐng)自行閱讀: http://www.a-site.cn/article/...

青黛色 回答

PHP中float轉(zhuǎn)int是將小數(shù)位全部棄掉,(0.1+0.7)*10的結(jié)果內(nèi)部的表示其實(shí)是類(lèi)似7.9999999999999991118…,于是強(qiáng)行轉(zhuǎn)換為int值時(shí),結(jié)果為7。

如果實(shí)在要轉(zhuǎn),最好使用round,進(jìn)行四舍五入避開(kāi)浮點(diǎn)數(shù)精度的坑

echo (int)((0.7+0.1)*10);   // 輸出7
echo round((0.7+0.1)*10);   // 輸出8

注意:永遠(yuǎn)不要相信浮點(diǎn)數(shù)結(jié)果精確到了最后一位,也永遠(yuǎn)不要比較兩個(gè)浮點(diǎn)數(shù)是否相等。如果確實(shí)需要更高的精度,應(yīng)該使用任意精度數(shù)學(xué)函數(shù)或者 gmp 函數(shù)。

命多硬 回答

1、你需要運(yùn)行一次netstat -napo,netstat 用來(lái)查看當(dāng)前系統(tǒng)各種網(wǎng)絡(luò)程序的連接情況,你會(huì)看到輸出的結(jié)果上方有相應(yīng)的表頭,代表了每列內(nèi)容的主題或者說(shuō)類(lèi)別

clipboard.png

2、其次你沒(méi)有看到相關(guān)的表頭,是因?yàn)槟阌昧薵rep "php-fpm",根據(jù)關(guān)鍵字去過(guò)濾不相關(guān)的信息,過(guò)濾了代表每列主題的表頭

3、關(guān)于輸出的結(jié)果,建議查看命令的說(shuō)明 http://www.man7.org/linux/man...

黑與白 回答

proxyTable: {

    '/api': {
        target: 'http://test.yang.com',
        changeOrigion: true,
        pathRewrite: {
            '^/api': '/api'
        }
    }
},
這個(gè)寫(xiě)法  /api 代表 http://test.yang.com
this.$http.get('/api/radio.php') 表示 this.$http.get('http://test.yang.com/radio.php')
你的接口是 http://test.yang.com/api/radi... 當(dāng)然是404

你可以先這么寫(xiě)this.$http.get('http://test.yang.com/api/radi...') 測(cè)試一下 他會(huì)提示你跨域了
而不是404 然后在proxyTable 里繼續(xù)配置
nginx 不懂 一般瀏覽器能打開(kāi)訪(fǎng)問(wèn)到就是可以的

擱淺 回答

原因:浮點(diǎn)數(shù)的精度問(wèn)題。

轉(zhuǎn)為整型

clipboard.png

注意:

  1. 向下取整,即:12910.9 會(huì)被轉(zhuǎn)換為 12910

    <?php
    var_dump(intval(12910.9));
    
    // 輸出
    // int(12910)
  2. 浮點(diǎn)數(shù)精度
    clipboard.png

    看如下執(zhí)行結(jié)果:
    clipboard.png
    我們知道:$receive_money 值小于 12911

總結(jié):所以,最后 $receive_money 轉(zhuǎn)換為整型時(shí),向下取整,結(jié)果為:12910

參考:


問(wèn)題補(bǔ)充:

為什么 float(12911) 沒(méi)有顯示成 12910.9999... 呢?

這是由于浮點(diǎn)數(shù)的二進(jìn)制表示形式?jīng)Q定的。
看如下示例:

clipboard.png

我們看到第 9 行代碼 float(12911) 擴(kuò)展整數(shù)位之后,轉(zhuǎn)換成整型表示:int(129109999)。
然后,我們對(duì)比了 float(12911)int(12911) 在二進(jìn)制上的差別。
是不是發(fā)現(xiàn)了什么?(二進(jìn)制的最后一位)這是 PHP-bug 么?當(dāng)然不是。
而且我們同樣也注意到了第 8 行代碼輸出結(jié)果為:float(129110000),這又是為什么呢?
為什么不是 float(129109999)呢?

我們看一下 PHP 源碼中浮點(diǎn)數(shù)是什么:
clipboard.png
如圖:php-float 等于 c-double
我想如下幾個(gè)問(wèn)題可以解決上述的疑問(wèn):
雙精度浮點(diǎn)數(shù) 的二進(jìn)制形式是如何表示的呢? 請(qǐng)參考:wikipedia-雙精度浮點(diǎn)數(shù)
浮點(diǎn)數(shù)是如何處理乘法運(yùn)算的呢? 請(qǐng)參考:wikipedia-浮點(diǎn)數(shù)的乘法和除法

如果上邊兩個(gè)問(wèn)題不愿深究,可以直接參考鳥(niǎo)哥的一篇博客:PHP浮點(diǎn)數(shù)的一個(gè)常見(jiàn)問(wèn)題的解答

以上為個(gè)人理解,如果錯(cuò)誤之處,請(qǐng)指出。

哚蕾咪 回答

如果評(píng)論里的邏輯是對(duì)的。應(yīng)該做有改無(wú)增的操作,而id不同的時(shí)候你并沒(méi)有push。

// 簡(jiǎn)化版本
var miniCartListArr = []
var miniId = {}
function dataHandler (opt) {
    if (miniId[opt.skuId] !== undefined) {
        // 有改
        miniCartListArr[miniId[opt.skuId]] = opt
    } else {
        // 無(wú)增
        // 存 id:索引,方便下次有改
        miniId[opt.skuId] = miniCartListArr.length
        miniCartListArr.push(opt)
    }
}

arr2 = [...arr1]
這么寫(xiě)并不是個(gè)真的深拷貝。

var arr1 = [{name:1}]
arr2 = [...arr1]
arr2[0].name = 2
arr1[0].name // 1
arr1 === arr2 //false
arr1[0] === arr2[0] //true
終相守 回答

不能以你這個(gè)成功的回調(diào)函數(shù)作為支付完成的標(biāo)志,這個(gè)函數(shù)里面你要發(fā)請(qǐng)求給你的后端確認(rèn)用戶(hù)是否已經(jīng)完成支付,完成就跳轉(zhuǎn)支付成功后的頁(yè)面,后端會(huì)把相應(yīng)的訂單狀態(tài)改變的,你這邊的數(shù)據(jù)通過(guò)接口請(qǐng)求自然也就變化了。

瘋子范 回答

去看看是不是開(kāi)啟了vhosts,/etc/httpd/conf.d/httpd-vhosts.conf

時(shí)序問(wèn)題吧,你得模擬正常登錄流程,先get訪(fǎng)問(wèn)一下登錄頁(yè),獲取到cookie,然后再獲取驗(yàn)證碼,最后提交

赱丅呿 回答

稍?xún)?yōu)化了一點(diǎn),按你的算法,有n個(gè)元素的數(shù)組,要循環(huán)

n * n * in_array里的次數(shù),in_array內(nèi)部也是循環(huán)
var arr = [1, 2, 5, 6, 7];//如果這個(gè)數(shù)組不是有序數(shù)組,哪還要先加排序
var len =arr.length

let result=[]
let count=0

for(let a=0;a<len;a++){
let max = arr.pop()
let newlen = arr.length
for(let i=0;i<newlen-1;i++){
   if(arr[i]+arr[i+1]> max){
    break;
  }
  for(let j=i;j<newlen-1;j++){
    let plus = arr[i]+arr[j+1]
    count++
    if(plus>max){
      break;
    }
    if(plus==max){
      result.push([max,arr[i],arr[j+1]])
    }
  }
}
}
console.log(result)//輸出結(jié)果
console.log(count)//輸出總循環(huán)次數(shù),

回復(fù)里說(shuō)的好,我沒(méi)有考慮負(fù)數(shù)的情況,如果要考慮負(fù)數(shù),哪把最大數(shù)pop出來(lái),就不行了,只能重新維護(hù)一條新數(shù)組,用來(lái)枚舉所有值,修改如下

var arr = [-8, -1, 1, 2, 5, 6, 7];//如果這個(gè)數(shù)組不是有序數(shù)組,哪還要先加排序
var len =arr.length
var arr1 = [...arr] //復(fù)制一條新數(shù)組
let result=[]
let count=0

for(let a=0;a<len;a++){
let max = arr1.pop()// 從新數(shù)組中枚舉各個(gè)值。
let newlen = arr.length
for(let i=0;i<newlen-1;i++){
   if(arr[i]+arr[i+1]> max){
    break;
  }
  for(let j=i;j<newlen-1;j++){
    let plus = arr[i]+arr[j+1]
    count++
    if(plus>max){
      break;
    }
    if(plus==max){
      result.push([max,arr[i],arr[j+1]])
    }
  }
}
}
console.log(result)//輸出結(jié)果
console.log(count)//輸出總循環(huán)次數(shù),
輸出
[[7, 1, 6], [7, 2, 5], [6, -1, 7], [6, 1, 5], [5, -1, 6], [1, -1, 2], [-1, -8, 7]]
若相惜 回答

thinkphp內(nèi)置模板引擎的解析定界符,內(nèi)置模板引擎的普通模板標(biāo)簽?zāi)J(rèn)以{和}作為開(kāi)始和結(jié)束標(biāo)記,可通過(guò)配置參數(shù)TMPL_L_DELIM和TMPL_R_DELIM分別更改模板引擎普通標(biāo)簽開(kāi)始和結(jié)束標(biāo)記

巴扎嘿 回答

如果你的php是用brew安裝的那么按照樓上說(shuō)的使用brew安裝memcache;如果是手動(dòng)編譯安裝的那么我不確定brew安裝是否可行。如果你的memcache是手動(dòng)安裝的,你在安裝的時(shí)候要先掛起phpize和configure

老梗 回答

問(wèn)題的問(wèn)題

  1. 看問(wèn)題有三點(diǎn),但第三點(diǎn)確實(shí)疑問(wèn),不是場(chǎng)景
  2. 人家那邊?誰(shuí)家,是前端小程序,還是第三方?
  3. 后臺(tái)將數(shù)據(jù)存取一份,是說(shuō)存儲(chǔ)一份?

我理解到的問(wèn)題(直接看這里吧):
端: 后端(題主開(kāi)發(fā)的),小程序前端,第三方接口,
場(chǎng)景:第三方接口數(shù)據(jù)直接提供給前端,但是因?yàn)樾枰灻?,考慮安全問(wèn)題,不能直接給前端,所以經(jīng)過(guò)了你所開(kāi)發(fā)的后端(PHP)簽名,再轉(zhuǎn)給小程序前端。

問(wèn)題是這樣嗎?是的話(huà)我再回答,不是那就呃,呃