我的方案是封裝一下 labels 將其替換成 Object, libraryService.labelsArry 封裝成Object 數(shù)組
{
text:'test',
selected: false
}
然后在 span 上添加一個 class ,由 selected 決定
html:
<span *ngFor="let labels of libraryService.labelsArry" [class.selected]="labels.selected" (click)="chooseLabel(labels)" >{{labels.text}} </span>
css:
.selected{
color : red;
}
ts:
chooseLabels(item){
item.selected=!item.selected;
}
一直使用的是alpine只因為它小, 主要來做PHP的環(huán)境.
點最后一個按鈕
下次記得把原始查詢也發(fā)出來,我們看著更方便些。從執(zhí)行計劃來反推,查詢大約是
db.webDevice.find({
lid: {
$in: [
"40CnwyHkVmnA9kbScMLNLneaxuS4Tcj",
"140CnwyHkVmnA9kbScMLNLneaxuS4Tcj"
]
}
}).sort({createTime: -1}).limit(1);
因為命中索引,這個查詢獲取數(shù)據(jù)的速度實際上比較快,你也提到在一段時間內(nèi)第二次查詢就快了,這是一個很明顯的特點,代表內(nèi)存不足。MongoDB和其他數(shù)據(jù)庫一樣,都會使用空閑內(nèi)存緩沖索引和數(shù)據(jù),當(dāng)內(nèi)存不足時就會使用LRU算法清理舊數(shù)據(jù)換入新數(shù)據(jù)再繼續(xù)查詢。因為這個過程涉及到磁盤數(shù)據(jù)交換,速度會大大降低。發(fā)生這種情況有一個特點,就是一段時間內(nèi)第二次執(zhí)行時速度就快了(因為數(shù)據(jù)已經(jīng)在內(nèi)存中)。但是如果過一段時間再執(zhí)行,速度又會變慢(因為又被換出內(nèi)存了)。所以你的情況實際上就是受限于硬件。
既然如此最直接的解決辦法就是:
如果不能從硬件方面解決,有一點可以嘗試就是用CPU換內(nèi)存。做法是盡可能調(diào)小cacheSizeGB(是的沒錯,是調(diào)?。?。空閑出來的內(nèi)存操作系統(tǒng)會用來緩沖磁盤數(shù)據(jù),而磁盤數(shù)據(jù)是經(jīng)過壓縮的,體積更小,因此可以緩沖更多數(shù)據(jù)到內(nèi)存中。但作為交換,在使用這些數(shù)據(jù)時需要經(jīng)過CPU再進行一次解壓從而額外消耗CPU。即使這樣,效果也比從磁盤讀取要好很多。整個過程是自動進行的,你需要做的只是調(diào)小cacheSizeGB。
這種做法可以在一定程度上緩解內(nèi)存不足的問題,但不是萬能的:
基于你的新的疑問,以下幾點補充:
疑問1: 按照你說的方式調(diào)小cacheSizeGB,應(yīng)該怎么調(diào)整比較合理
我在上面有提到,這樣做的效果有限,是受制于壓縮率的限制。所以多容納的數(shù)據(jù)實際就是壓縮的數(shù)據(jù)。比如1G的內(nèi)存能放多少數(shù)據(jù)?
所以調(diào)到多少,其實要看你想往內(nèi)存里放多少數(shù)據(jù),而這往往是一個不確定的數(shù)值。這里會有另外一個概念叫做工作集(working set),就是你經(jīng)常用到的那些數(shù)據(jù)。比如你的數(shù)據(jù)庫共有100GB數(shù)據(jù),但是你經(jīng)常用到的部分只有10GB,那么你的內(nèi)存只要能裝下10GB數(shù)據(jù),應(yīng)用在大部分時候就可以非???,剩下的情況忽略就好了。
基于上面這些分析,你應(yīng)該可以算一下,你的工作集有多大,數(shù)據(jù)壓縮率有多大,那么需要把cacheSizeGB調(diào)到多小才能容納下工作集(又或者調(diào)到多小都不可能容納下工作集)。你的情況是內(nèi)存不足CPU空閑,所以如果懶得算,直接把cacheSizeGB調(diào)到最小值就好了。
疑問2: config只用了1.5GB內(nèi)存(限制了CacheSizeGB3GB).可以說明索引都加載到了內(nèi)存中嗎?
這說明config數(shù)據(jù)庫(元數(shù)據(jù))的索引和數(shù)據(jù)都加載到內(nèi)存中了。注意數(shù)據(jù)的索引肯定是在shard中,與config無關(guān)。而且大頭是在shard上面。
順便提一下,如果不是實驗?zāi)康?,根本沒必要分這么多片。因為在一臺機器上分再多片,硬件資源也只有這么多,對于性能沒有什么意義,反而還會有額外的傳輸開銷。
疑問3: mongodb remove數(shù)據(jù)后,查詢卻越來越慢是什么情況?
remove之后跟查詢沒有本質(zhì)上的聯(lián)系,可能只是湊巧發(fā)生在一起。如果你有足夠的證據(jù)覺得這兩者確實有聯(lián)系,請另開問題描述清楚問題的上下文以及你發(fā)現(xiàn)的情況,必要的時候也可以求助于MongoDB JIRA。如果一定要做一個無根據(jù)的猜測,我覺得可能是remove時導(dǎo)致熱數(shù)據(jù)被換出內(nèi)存(注意remove也需要先找到滿足條件的數(shù)據(jù)然后才能刪除),引起后面的查詢需要重新從磁盤上加載數(shù)據(jù)造成的。
$scope.$apply();你在控制器的底部加上這一行試試
事件發(fā)生時是會發(fā)生以上的步驟/
而事件委托是 委托給他的父級來觸發(fā)來達到的效果/
??!如果好多個動態(tài)元素都用同一個父元素來做事件代理,那么后面的事件會覆蓋掉前面父元素代理的事件。
這有開源的同stackoverflow & segmentfault同款, 真的感興趣的話自己打開看看吧
因為你用了flask-sqlalchemy擴展,而且你新開了一個線程執(zhí)行test方法,這個線程已經(jīng)脫離了 Flask app 的應(yīng)用上下文,如果非要按照你上面的例子的話,可以這樣修改
def test():
time.sleep(20)
with app.app_context():
p = Plan.query.get(1)
print p.planname
另外,你的思路沒錯,但是一個通用的解決辦法是使用Celery將你那個耗時的任務(wù)異步執(zhí)行。
@celery.task
def test():
p = Plan.query.get(1)
print p.planname
return p
@app.route('/')
def index():
task = test.delay() #: 異步執(zhí)行
return "hello world"
具體Celery和Flask的搭配可以自己網(wǎng)上查查
$('#sss .mm:visible').length ?
我也遇到樓主的問題了,百度到這里來的。
情況是只在safari瀏覽器中出現(xiàn)這個問題。
搜了下插件的代碼,發(fā)現(xiàn)了問題所在。
unyson/framework/extensions/shortcodes/shortcodes/section/static.php 21行左右
global $is_safari;
if ($is_safari) {
wp_enqueue_script('youtube-iframe-api', 'https://www.youtube.com/iframe_api');
}
注釋掉就好了。
module.exports = React;
obj2轉(zhuǎn)化為Json字符串的值和obj1中obj1.children.children轉(zhuǎn)化為json字符串的值不一樣,console一下即可
不會canvas。
個數(shù)不固定,參數(shù)改成數(shù)組不就好了
arr = [
{
id:'111',
info: ''
},
{
id:'222',
info: ''// 不需要提示就不寫
},
...
]
function highLight (arr) {
$('#overlay').show();
arr.forEach(function (item) {
id = item.divId
info = item.info
// 然后做你原來的操作
})
}table不是綁定一個data嗎,通常來說修改data,table就會自己重新渲染。同理,你在初始化的時候,讓data = [],然后點擊添加的時候push一個初始化的對象進去,例如push一個{name:'1',age:0}
這個只針對Node.js的項目使用babel來編譯的情況,如果是寫前端項目(用webpack打包)的話,就可以無視這個問題了。
因為babel編譯es6到es5的過程中,babel-plugin-transform-runtime這個插件會自動polyfill es5不支持的特性,這些polyfill包就是在babel-runtime這個包里,所以babel-runtime需要安裝在dependency而不是devDependency。
dependency和devDependency應(yīng)該能明白吧。假如一個用戶npm install 了你發(fā)布在npm上的一個包,他只會安裝這個包的dependency依賴,devDependency是不會安裝的,那么此時假如babel-runtime是安裝在devDependency的話,有些polyfill就會找不到了。
至于這兩個包有什么區(qū)別,字面意思就能看出來,一個是轉(zhuǎn)化的包(插件),一個是充滿polyfill的包。
你先看下結(jié)束的分號是不是英文的分號,以及return后的那個分號之后的那個反引號去掉
看場景:
如果不需要實時分析,可以用文件形式,固定格式存儲,然后進行離線分析。
如果不需要所有日志,只需要部分日志,那么可以給一定時間之前的日志刪掉。
現(xiàn)在一般的做法都是,近期日志存在mongodb這種數(shù)據(jù)庫中,長期日志存儲在大數(shù)據(jù)平臺。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。