鍍金池/ 問答/ 人工智能問答
墨小羽 回答

Redis 可以放到容器外面,直接安裝在物理機(jī),然后 RDB、AOF

不二心 回答

不算答案的答案

按照你的描述,我覺得問題不是出在前端能否做到,
而是在于各個移動端瀏覽器廠商對跨域限制的處理不是一致的,
協(xié)議是死的,人是活的。人家就是不遵守,你也沒辦法。

這個問題光靠前端基本搞不定,所以在后端做一層跨域代理我覺得是唯一的解決辦法

懶洋洋 回答

哎,自問自答系列,首先從最后一個圖可以看出,9083端口已經(jīng)開了,不能連接,可以從防火墻方面考慮考慮...然后我的機(jī)器為OpenStack的虛擬機(jī),那么看看對應(yīng)的安全組的端口是否打開了.

淺時光 回答
用一個線程循環(huán)處理",我就不明白該如何下手了,啥時候開啟這個"線程"
  1. 這個在秒殺開啟前開始執(zhí)行就行,執(zhí)行過程貫穿整個秒殺過程,可以是幾個進(jìn)程也可以是一個進(jìn)程一直跑,這是出隊(duì)的過程。入隊(duì)的話就是PHP慣有模式,每次一個請求進(jìn)來自動啟動進(jìn)程,往隊(duì)列扔數(shù)據(jù)。
  2. 然后我們要明白這個隊(duì)列的意義是什么,redis的意義是什么。redis是用來扛并發(fā)用的,通過一個計數(shù)器,先查詢還有庫存就執(zhí)行入隊(duì),庫存扣完了就直接return。redis扛了一層后進(jìn)隊(duì)列數(shù)據(jù)已經(jīng)量級小很多了,隊(duì)列的作用本質(zhì)是幫DB扛并發(fā)用的,使得DB事務(wù)執(zhí)行全部串行化,避免鎖的爭搶降低DB性能。
蝶戀花 回答

1.信號量就是一個可以用來被鎖住的東西,就是一個標(biāo)識,比如說一個班里面誰擁有"3道杠"這個袖標(biāo)誰就是大隊(duì)長,這個例子里誰擁有這個信號量誰就可以吃飯

2.為什么不定義5個mutex,那一個班可以有5個大隊(duì)長么?本例子中的袖標(biāo)就是吃飯的碗,且假設(shè)一個碗只能一個人吃,如果5個人5個mutex,那大家就可以各吃各飯,互不影響.程序最怕無序的狀態(tài),為了有序,我們就引入信號量.

厭遇 回答

你請求的是jsonp類型,期望中返回的應(yīng)該是被 callback 包圍的一段函數(shù)調(diào)用語句,如 callback({"status":1,"data":0}),你這個直接返回的是json,自然會提醒類型錯誤

Jsonp原理:
首先在客戶端注冊一個callback, 然后把callback的名字傳給服務(wù)器。此時,服務(wù)器先生成 json 數(shù)據(jù)。
然后以 javascript語法的方式,生成一個function , function 名字就是傳遞上來的參數(shù) jsonp. 最后將json 數(shù)據(jù)直接以入?yún)⒌姆绞?,放置?function 中,這樣就生成了一段 js 語法的文檔,返回給客戶端??蛻舳藶g覽器,解析script標(biāo)簽,并執(zhí)行返回的 javascript 文檔,此時數(shù)據(jù)作為參數(shù),傳入到了客戶端預(yù)先定義好的 callback 函數(shù)里.(動態(tài)執(zhí)行回調(diào)函數(shù))

參考 https://blog.helloarron.com/2...

貓小柒 回答

看了一下源碼,得出以下結(jié)論:
1、對于每個depthresponse,對它進(jìn)行parse后發(fā)出的request的默認(rèn)priority-(depth+1)
2、scrapy的調(diào)度器隊(duì)列是一個PriorityQueue(優(yōu)先隊(duì)列,priority越小越先),這個隊(duì)列里的元素是一些LifoQueue,即你所說的后入先出隊(duì)列,每個LifoQueue都對應(yīng)著一個priority;
3、對于每個yieldrequest,調(diào)度器會把它push進(jìn)priority-request.priorityLifoQueue中。
愿你能理解我所說的。。。

入她眼 回答

想知道有沒有執(zhí)行
先判斷有沒有
沒有就set
有就直接返回

短嘆 回答

不給出代碼,不知道你的數(shù)據(jù)是什么結(jié)構(gòu)的,不過沒事,你看我下面的代碼吧!

function checkArr(arr){
    //排序
    arr.sort(function(n1,n2){return n1.min-n2.min})
    //遍歷
    for(var i=0;i<arr.length;i++){
        //區(qū)間的最小值不能大于等于區(qū)間的最大值
        if(arr[i].min>=arr[i].max){
            console.log('區(qū)間最大值最小值不能相等');
            return;
        }
        //元素對比,從第二個元素開始
        if(i>0){
            //區(qū)間不能出現(xiàn)交叉的情況  比如:5-10  6-12    這樣就會導(dǎo)致 6,7,8,9,10這幾值就會兩個區(qū)間都在其中
            if(arr[i].min<arr[i-1].max){
                console.log('區(qū)間不能出現(xiàn)交叉情況');
                return;
            }
        }
    }
}

下面準(zhǔn)備些測試數(shù)據(jù)

var arr1=[{min:1,max:10},{min:5,max:22},{min:5,max:22}],
arr2=[{min:1,max:1},{min:1,max:22},{min:22,max:26}],
arr3=[{min:1,max:10},{min:20,max:30},{min:30,max:40}];   

clipboard.png

clipboard.png

clipboard.png

測試通過,可能看到函數(shù)會有疑問,為什么數(shù)組要排序,其實(shí)看下面實(shí)例。

var arr4=[{min:30,max:40},{min:20,max:30},{min:10,max:20}]  

這個數(shù)據(jù),區(qū)間范圍也沒有交叉,只是反過來寫了,所以,為了避免這個情況,所以就要先對數(shù)組進(jìn)行排序

clipboard.png

看玩應(yīng)該都懂了,我這里模擬的數(shù)據(jù),數(shù)組的每一個對象,其實(shí)就等同于你的每一行的數(shù)據(jù)。

clipboard.png

細(xì)節(jié)優(yōu)化

當(dāng)然如果想首尾相連,或者區(qū)間的最大值不能大于默認(rèn)的最大值,區(qū)間的最小值也不能小于默認(rèn)的最小值,只需要多判斷幾次!下面看代碼吧,容易理解些

var _min=5,_max=50;
function checkArr(arr,min,max){
    //排序
    arr.sort(function(n1,n2){return n1.min-n2.min})
    //遍歷
    for(var i=0;i<arr.length;i++){
        //區(qū)間的最小值不能大于等于區(qū)間最大值
        if(arr[i].min>=arr[i].max){
            console.log('區(qū)間的最小值不能大于等于區(qū)間最大值');
            return;
        }
        //區(qū)間的最小值不能小于默認(rèn)最小值
        if(arr[i].min<min){
            console.log('區(qū)間的最小值不能小于默認(rèn)最小值');
            return;
        }
                    
        //區(qū)間的最大值不能大于默認(rèn)最大值
        if(arr[i].max>max){
            console.log('區(qū)間的最大值不能大于默認(rèn)最大值');
            return;
        }
        //元素對比,從第二個元素開始
        if(i>0){
            //區(qū)間首尾是否相連(連續(xù) 1-10 10-20)。只要區(qū)間相連,不會出現(xiàn)區(qū)間相差
            if(arr[i].min!==arr[i-1].max){
                console.log('區(qū)間必須要相連');
                    return;
            }
        }
    }
}

clipboard.png

至于你說的包含情況,我改了下,代碼如下,看著就懂了

var _min=5,_max=50;
function checkArr(arr,min,max){
    //排序
    arr.sort(function(n1,n2){return n1.min-n2.min})
    //遍歷
    for(var i=0;i<arr.length;i++){
        //區(qū)間的最小值不能大于等于區(qū)間最大值
        if(arr[i].min>=arr[i].max){
            console.log('區(qū)間的最小值不能大于等于區(qū)間最大值');
            return;
        }
        //區(qū)間的最小值不能小于默認(rèn)最小值
        if(arr[i].min<min){
            console.log('區(qū)間的最小值不能小于默認(rèn)最小值');
            return;
        }
                    
        //區(qū)間的最大值不能大于默認(rèn)最大值
        if(arr[i].max>max){
            console.log('區(qū)間的最大值不能大于默認(rèn)最大值');
            return;
        }
        //元素對比,從第二個元素開始
        if(i>0){
            //如果前一個的最大值和當(dāng)前的最小值都是閉區(qū)間,那么當(dāng)前的最小值一定要大于前一個的最大值(如果要求首尾相連,當(dāng)前的最小值一定比前一個的最大值大1)
            if(arr[i].minInclude&&arr[i-1].maxInclude&&arr[i].min-arr[i-1].max<=0){
                console.log('取值范圍錯誤');
                   return;
                
            }
            //如果前一個的最大值和當(dāng)前的最小值。一個是開區(qū)間,一個是閉區(qū)間,那么后一個的的最小值一定要等于當(dāng)前的最大值
            else if(arr[i].minInclude!==arr[i-1].maxInclude&&arr[i].min!==arr[i-1].max){
                console.log('取值范圍錯誤');
                   return;
            }
            //如果前一個的最大值和當(dāng)前的最小值都是開區(qū)間,那么那么當(dāng)前的最小值一定要大于等于前一個的最大值(如過是首尾相連,這種情況,肯定不滿足條件)
            else if((!arr[i].minInclude)&&(!arr[i-1].maxInclude)&&arr[i].min-arr[i-1].max<0){
                console.log('取值范圍錯誤');
                   return;
            }
        }
    }
} 
//前一個和后一個都是閉區(qū)間
var arr9=[{min:10,max:20,minInclude:false,maxInclude:true},{min:21,max:30,minInclude:true,maxInclude:true}]  

clipboard.png

//前一個和當(dāng)前都是閉區(qū)間,但是前一個的最大值和后一個的最小值相等
var arr10=[{min:10,max:20,minInclude:false,maxInclude:true},{min:20,max:30,minInclude:true,maxInclude:false}] 

clipboard.png

//前一個的最大值和當(dāng)前的最小值,一個是閉區(qū)間,一個是開區(qū)間
var arr11=[{min:10,max:20,minInclude:false,maxInclude:true},{min:20,max:30,minInclude:false,maxInclude:false}]
var arr12=[{min:10,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:true,maxInclude:false}]  

clipboard.png

//前一個的最大值和當(dāng)前的最小值,一個是閉區(qū)間,一個是開區(qū)間,但是前一個的最大值和當(dāng)前的最小值不想等
 var arr14=[{min:10,max:20,minInclude:false,maxInclude:false},{min:21,max:30,minInclude:true,maxInclude:false}] 

clipboard.png

 //前一個的最大值和當(dāng)前的最小值,都是開區(qū)間,但是當(dāng)前的最小值小于前一個的最大值
 var arr15=[{min:10,max:20,minInclude:false,maxInclude:false},{min:15,max:30,minInclude:false,maxInclude:false}]

clipboard.png

 //前一個的最大值和當(dāng)前的最小值,都是開區(qū)間。前一個的最大值等于當(dāng)前的最小值
 var arr16=[{min:10,max:20,minInclude:false,maxInclude:false},{min:20,max:30,minInclude:false,maxInclude:false}]

clipboard.png

雨萌萌 回答

這個公式不是結(jié)論,而是代價函數(shù)。

現(xiàn)在我們有一個序列z_ir,我們需要通過這個序列預(yù)測y_i的值,由于我們能力有限,因此只能使用線性的預(yù)測。也就是通過線性函數(shù) estYi進(jìn)行估計。 其中b_r 是未知的系數(shù)。 當(dāng)然,預(yù)測是有誤差的,因此我們希望估計的誤差 err 最小,但是絕對值不方便處理(比如求導(dǎo)),所以我們修改為使得 mse 最小。 現(xiàn)在我們已經(jīng)有 n 個已經(jīng)觀測到的 z_iry_i, 我們通過這些已知的值求得位置的系數(shù)。也就是求出通過最小化smse 求得未知系數(shù)b_r。 也就是你標(biāo)記的公式。

求得合適的b_r 之后,以后在知道了z_j 就可以通過 estY 估計 y 了。

從日志信息來看,spring bean close,JMX-exposed beans on shutdown,以及mongodb的連接關(guān)閉了。
如果想具體排查哪里出問題了, 先移除redis和mongodb相關(guān)依賴和操作,判斷是否存在問題,然后一個一個移回項(xiàng)目。

澐染 回答
  1. application 類需要放到root package,要不加載不到它上層包的類 https://docs.spring.io/spring...
  2. 第三個問題,分模塊部署坑定是要添加Application類型,但還要考慮各個服務(wù)怎么調(diào)用
維她命 回答

import.json文件有多大?一些建議:

1.數(shù)據(jù)庫參數(shù)需要優(yōu)化
    shared_buffers, max_connections, maintenance_work_mem, effective_cache_size, sync, commit_delay , commit_siblings ,checkpoint_segments, wal_buffers, wal_writer_delay,
2. 是不是可以先處理下文件,按照COPY的文件格式格式化好,再用cppy命令導(dǎo)入,或者外部表,但處理文件也會稍微麻煩些
胭脂淚 回答

如果我沒記錯的話,存取應(yīng)該這樣就行了。
from redia import Redis
cli=Redis("localhost:xxxx")
res=cli.set("id",1)
id=cli.get("id")

未命名 回答

你需要好好看看這個函數(shù)的作用了 array_multisort

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);

//本例中將把 volume 降序排列,把 edition 升序排列。

//現(xiàn)在有了包含有行的數(shù)組,但是 array_multisort() 需要一個包含列的數(shù)組,因此用以下代碼來取得列,然后排序。


// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 將數(shù)據(jù)根據(jù) volume 降序排列,根據(jù) edition 升序排列
// 把 $data 作為最后一個參數(shù),以通用鍵排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

傳送門:
http://tw1.php.net/manual/en/...

好難瘦 回答

redis數(shù)據(jù)庫一般作為數(shù)據(jù)緩存的地方比較好,redis存入的數(shù)據(jù),盡量少用長久保存的,這樣會降低查詢效率。如果數(shù)據(jù)較少當(dāng)然沒問題,如果是大型數(shù)據(jù)的入庫保存最好的選擇是MySQL,或者M(jìn)ongoDB比較好。

夢一場 回答

Session save path是寫你存儲的路徑(目錄的位置),不是網(wǎng)絡(luò)的url.比如:/tmp/sessions/