把地址列表拆分為多個(gè)列表,使用多個(gè)線程下載。
判斷下載完成可以判斷返回的狀態(tài)碼,成功還是失敗以及失敗重試
...肯定不行啊,
getExpandData = (param) => {
**getModelVersion(param)**.then((result) => {//異步的
if (result) {
this.setState({
subData: result, // 過(guò)濾之后的數(shù)據(jù)
});
}
});
};
const subList = this.state.**subData**.map((v) => {//其實(shí)還是上一次的數(shù)據(jù),因?yàn)檫€沒(méi)異步完
return {
...v,
todo: v.status,
};
});
解決辦法1,改造,回調(diào)進(jìn)去
getExpandData = (param,cb) => {
getModelVersion(param).then((result) => {
if (result) {
this.setState({
subData: result, // 過(guò)濾之后的數(shù)據(jù)
},cb);
}
});
};
expandFunction = (expanded, record) => {
const { showListDom } = this.state;
if (record) { // 未展開(kāi)
const param = {
modelId: record.id,
};
this.getExpandData(param,()=>{
const subList = this.state.subData.map((v) => {
return {
...v,
todo: v.status,
};
});
const dom = (
<Table
columns={this.detailsColumns}
onChange={this.handleSubTableChange}
dataSource={subList}
rowKey={subList.id}
pagination={false}
/>);
const Id = record.id;
const item = {};
item[Id] = dom;
this.setState({
showListDom: {
...showListDom,
...item,
},
});
});
}
};
解決辦法2,用async await改造,我就不寫(xiě)了
function test($amount){
$arr = [98,100,100,120,150,160,183];
$max = max($arr);
$min = min($arr);
if($amount > $max){
return count($arr)-1;
}
if($amount < $min){
return 0;
}
foreach($arr as $key => $val){
if($amount == $val){
$tmp[] = $key;
}
}
if(!empty($tmp)){
return $tmp;
}
foreach($arr as $key => $val){
if($amount < $val){
continue;
}else{
$tmp[] = $key;
}
}
$return[] = max($tmp);
$return[] = max($tmp)+1;
return $return;
}
var_dump(test(99));namespace 問(wèn)題,新建對(duì)象的時(shí)候指定下路徑便可,如下:
$c = new \Mosquitto\Client;
css 并沒(méi)有提供前置選擇器, 后面的去設(shè)置前面的元素將可能會(huì)引發(fā)重排
所以使用 js 吧
不好意思~ jwt是不支持主動(dòng)使用戶token過(guò)期的。
要知道用戶登錄身份的校驗(yàn),基本就兩種:
①客戶端存儲(chǔ)一個(gè)隨機(jī)串,發(fā)送請(qǐng)求時(shí)攜帶該串。服務(wù)器接收到之后拿著這個(gè)串去存儲(chǔ)中做比對(duì),找到對(duì)應(yīng)的數(shù)據(jù)。
②將所有數(shù)據(jù)都存儲(chǔ)到客戶端。這樣就有會(huì)安全問(wèn)題,因?yàn)榉?wù)器無(wú)法確定那些數(shù)據(jù)是有效的,那些數(shù)據(jù)是偽造的。所以就引入了簽名的概念。用算法的方式來(lái)保證數(shù)據(jù)的可信性。
早期的網(wǎng)站基本就一個(gè)主站,也沒(méi)有分布式的部署。所以多數(shù)都采用第一種方式。
但隨著訪問(wèn)量的增加,開(kāi)始做分布式,就涉及到了session共享的問(wèn)題。比如①中的存儲(chǔ),使用redis來(lái)達(dá)到共享數(shù)據(jù)的效果。但是這樣會(huì)在服務(wù)器中存儲(chǔ)大量的數(shù)據(jù)。
然后呢,就出來(lái)另外一種。不在服務(wù)器存儲(chǔ)數(shù)據(jù)。其中一個(gè)就是jwt。
jwt在生成時(shí),可以設(shè)置有效期。理論上 一個(gè)用戶可以產(chǎn)生無(wú)數(shù)個(gè)jwt,且jwt的有效期獨(dú)立。
如果你想將一個(gè)還在有效期內(nèi)的jwt置為無(wú)效,那就必須要在服務(wù)器存儲(chǔ)數(shù)據(jù),這就違背了他的設(shè)計(jì)原則~
其實(shí)。他的退出,就是客戶端主動(dòng)將jwt扔掉(假設(shè)不會(huì)被其他人撿到)~~~~~ 那么這個(gè)jwt不就不存在了嗎~ 這不就完成注銷功能了嗎~
users // 用戶表
plugins // 插件
user_plugin_relationships //用戶插件關(guān)系表
你這個(gè)直接就起名a1_cat_relationships 然后在主鍵里把表是干什么用的寫(xiě)到備注里
數(shù)據(jù)庫(kù)還是給開(kāi)發(fā)人員看的,內(nèi)部統(tǒng)一一套規(guī)矩就OK了
在npm run dev之前 先 npm run build
addListener搜索一下 這個(gè)沒(méi)有找到
performace是瀏覽器自動(dòng)寫(xiě)在window對(duì)象上的
所以你只需要在頁(yè)面加載完成的時(shí)候,調(diào)用window.performace.getEntries(),就能得到一個(gè)數(shù)組,其中是所有請(qǐng)求的耗時(shí)情況,然后從中找到你的baidu請(qǐng)求對(duì)象,用下面的方法就能得到請(qǐng)求的時(shí)間情況
// 計(jì)算加載時(shí)間
function getEntryTiming (entry) {
var t = entry;
var times = {};
// 重定向的時(shí)間
times.redirect = t.redirectEnd - t.redirectStart;
// DNS 查詢時(shí)間
times.lookupDomain = t.domainLookupEnd - t.domainLookupStart;
// 內(nèi)容加載完成的時(shí)間
times.request = t.responseEnd - t.requestStart;
// TCP 建立連接完成握手的時(shí)間
times.connect = t.connectEnd - t.connectStart;
// 掛載 entry 返回
times.name = entry.name;
times.entryType = entry.entryType;
times.initiatorType = entry.initiatorType;
times.duration = entry.duration;
return times;
}
input()函數(shù)的參數(shù)是提示信息,也就是說(shuō)你執(zhí)行input("hello world")會(huì)提示一個(gè)hello world信息叫你輸入,你輸入的結(jié)果會(huì)被input返回。
對(duì)應(yīng)到你的代碼里,你輸入的值就會(huì)被input返回然后保存到number里,number保存的是你輸入的值。
遍歷的 input 綁定不同的值嗎
如果是的話,可以初始化一個(gè)數(shù)組 phone: ['', '','', ...]
并且 phone 的長(zhǎng)度等于 items 的長(zhǎng)度
然后 v-mode="phone[index]" 試試
為了安全。
往深講那就是為什么unix,linux 哪怕是 windows 都有不同的用戶權(quán)限。
request -> login -> user.js -> store -> request
循環(huán)引用了,webpack處理不了。我覺(jué)得應(yīng)該有警告或報(bào)錯(cuò)的。
為什么會(huì)這樣我親測(cè)了一下
假如有兩張表TableA和TableB,數(shù)據(jù)如下:
TableA TableB
1 6
2 7
3 8
4 9
5
TableA表有5條數(shù)據(jù),TableB有4條數(shù)據(jù),查詢出來(lái)就會(huì)有5X4=20條數(shù)據(jù)而且查詢出數(shù)據(jù)都是規(guī)律的,類似與數(shù)學(xué)的排列組合,如下:
TableA TableB
1 6
1 7
1 8
1 9
2 6
2 7
2 8
2 9
3 6
3 7
3 8
3 9
... ...
以此類推,它會(huì)自動(dòng)把TableA表的字段分別分配給表TableB然后排列出來(lái)
2.和1一樣同理
close_wait是客戶端發(fā)起fin后你服務(wù)器沒(méi)有ack導(dǎo)致的,所以看看程序里是不是忘了釋放鏈接,比如stream沒(méi)有close之類
調(diào)用了wx相關(guān)的生成小程序碼的接口,將中間的圖片設(shè)置成了微信頭像
Typescript 的類型檢查是靜態(tài)的,prop-types 可以在運(yùn)行時(shí)進(jìn)行檢查。
你如你傳了個(gè) offsetTop="abc",你的編輯器可能會(huì)提示你類型有誤,但是在瀏覽器里仍然是可以正常運(yùn)行的。而如果你使用了 prop-types,在瀏覽器里就會(huì)給出提示。
北大青鳥(niǎo)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)開(kāi)發(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ū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(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)師。