這個主要是Angular臟檢查和echart的requestAnimationFrame方法沖突的問題。echart在繪制完成圖表之后,還是會不停調(diào)用requestAnimationFrame方法,而這個方法會觸發(fā)Angular的臟檢查,造成Angular不斷的檢查DOM樹,導致CPU占用一直居高不下,解決辦法如下:
this.ngZone.runOutsideAngular(() => {
this.chart = echarts.init(this.root.nativeElement);
this.chart.setOption(this.option, true);
})
這樣可以讓charts圖表的相關方法排除在Angular的臟檢查之外。
深入探討和研究可以參考:
echarts在GitHub上的一個關于該問題的issue
segmentfault探討這個問題的一篇文章
可以考慮類似jsfiddle或者codepen一樣放到云端運行,還有一個stakblitz是我覺得目前最好的在線js IDE,具有類似VS Code的代碼提示,并且可以自動下載添加npm依賴
開啟事務,只有操作都成功之后再commit提交事務,如果操作有失敗的就rollback回滾。
$model->startTrans();
$row = $model->where(['id'=>1])->update(['status'=>4]);
if ($row>0) {
//上面操作成功
//執(zhí)行自定義操作
$model->commit();
}else {
$model->rollback();
}
// 試試在main.js入口文件配合vue-router寫這個
router.afterEach((to,from,next) => {
window.scrollTo(0,0);
});你的文件應該先 open, 然后再read. 我下面的這個例子能夠正常work
#!/usr/bin/python
import csv
filename = './a.csv'
duration_list = []
with open(filename) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
duration_list.append(row['duration'])
print duration_list
創(chuàng)建一個theme.js
module.exports = () => {
return {
'@font-size-base': '14px',
//others
};
};
然后在webpack中引入就好了。
{
"theme": "./src/styles/theme.js",
}
給你一個完整的工程,或者你想要的都在里面。dva initial project
:name="item[0]" 綁定item[0]
name="item[0]" 綁定字符串'item[0]'
你可以自己輸入和輸出來擬合函數(shù)啊,都有那么多參照點了。
也就是會說你輸入一個標準照片,分別采用各種濾鏡得到輸出照片,根據(jù)原始和輸出數(shù)據(jù)的關系,就可以擬合一個濾鏡函數(shù)出來(可能有誤差的)
生產(chǎn)環(huán)境 用nginx做靜態(tài)服務器
java code
List<Case> get_cases(@Param("num") int num, @Param("type")int type)
Mapper.xml code
#{num} 這樣的取值,這里的num參數(shù)名,是接口方法上@Param("num") 的內(nèi)容。保留客戶端源IP
由于此功能的實施,目標容器中看到的源IP 不會是客戶端的原始源IP。要啟用客戶端IP的保留,可以在服務規(guī)范中配置以下字段(在GCE / Google Kubernetes引擎環(huán)境中支持):
● service.spec.externalTrafficPolicy - 表示該服務是否希望將外部流量路由到節(jié)點本地或群集范圍的端點。有兩個可用選項:“群集”Cluster(默認)和“本地”Local?!叭杭毖谏w了客戶端源IP,并可能導致到另一個節(jié)點的第二跳,但應具有良好的整體負載分散。“本地”保留客戶端源IP并避免LoadBalancer和NodePort類型服務的第二跳,但可能會導致流量不均衡蔓延。
● service.spec.healthCheckNodePort - 指定服務的健康檢查節(jié)點端口(數(shù)字端口號)。如果未指定,則healthCheckNodePort由具有分配的節(jié)點端口的服務API后端創(chuàng)建。如果由客戶端指定,它將使用用戶指定的nodePort值。它僅在類型設置為“LoadBalancer”并且externalTrafficPolicy設置為“Local”時才起作用。
此功能可通過externalTrafficPolicy在服務配置文件中設置為“本地” 來激活。
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "example-service"
},
"spec": {
"ports": [{
"port": 8765,
"targetPort": 9376
}],
"selector": {
"app": "example"
},
"type": "LoadBalancer",
"externalTrafficPolicy": "Local"
}
}那就直接先吧修改后的值,post到后臺存到數(shù)據(jù)庫,然后后臺把數(shù)據(jù)庫里的數(shù)據(jù)再全部返給你,你commit一個mutilations,再修改state,頁面就自動更新了呀。舉個修改列表數(shù)據(jù)的例子
import axios from 'axios';
const listData = {
state:{
list:null
},
mutations:{
CHANGE_LIST(state,payload){
state.list = payload
}
},
actions:{
changeListAction({commit}){
axios.post("你后端的接口",{key:val}).then(res=>{
if(res.data.result){
commit("CHANGE_LIST",res.data.data)
}
})
}
}
};
export default listData
修改數(shù)據(jù)的時候,在組件中:
this.$store.dispatch('changeListAction');
你在組件中取數(shù)據(jù)的時候:
const listData = this.$store.state.resource.listDOM 提供了一個方法:select(),用于選取文本域中的內(nèi)容 所以React 可以ref取到元素DOM,然后Dom.select()
可以把額外的屬性先封裝在數(shù)組中,然后再循環(huán)。
#確保你的teacher_class表有unique index(teacherId, classId)
SELECT teacherId,COUNT(1) FROM teacher_class
WHERE classId IN(1,2,3)
GROUP BY teacherId
HAVING COUNT(1)=3注意:^匹配輸入字符串的開始位置,除非在方括號表達式中使用,此時它表示不接受該字符集合。即在這里表示不接受'\w.$'所代表的字符集合)
import { ClubCodeGuard } from './../../../guards/club-code.guard';
import { EnrollMemberComponent } from './../enroll-member.component';
import { Router, ActivatedRoute } from "@angular/router";
import { EnrollMemberModule } from './../enroll-member.module';
import { MembershipService } from './../../../member/services/membership.service';
import { MemberForm } from './../models/enroll-member-form';
import { EnrollMemberPromotionsComponent } from './promotions.component';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { DebugElement,Injectable,Component, OnInit, NgModule, ViewChild } from '@angular/core';
import { ComponentFixtureAutoDetect } from '@angular/core/testing';//自動變更檢測
import { async } from '@angular/core/testing';//異步的beforeEach
import { Member } from 'app/member/models/member';
import { FormsModule } from '@angular/forms';
import { ToastrModule } from 'ngx-toastr';
import { Observable, BehaviorSubject } from 'rxjs/Rx';
import { ProformaInvoiceComponent } from 'app/member-prospect-manager/enroll-member/proforma-invoice/proforma-invoice.component';
import { ClubService } from 'app/club/services';
import { HttpModule, Http } from '@angular/http';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { HandleErrorService } from '../../../shared-services/handle-error.service';
import { AccessTypeService } from '../../../club/services/access-type.service';
import { MemberService } from '../../../member/services/member.service';
import { CurrentUserService } from '../../../user/services/current-user.service';
import { GetCurrentUserService } from '../../../user/services/get-current-user.service';
import { PromotionService } from 'app/promotions/services/promotion.service';
import { FormService } from 'app/membership/services/form.service';
import { RouterTestingModule } from "@angular/router/testing";
import { EnrollMemberMembershipTypeComponent } from 'app/member-prospect-manager/enroll-member/membership-type/membership-type.component';
import { EnrollMemberMembershipInfoComponent } from 'app/member-prospect-manager/enroll-member/membership-info/membership-info.component';
import { EnrollMemberReviewAndPayComponent } from 'app/member-prospect-manager/enroll-member/review-and-pay/review-and-pay.component';
import { EnrollMemberConfirmationComponent } from 'app/member-prospect-manager/enroll-member/confirmation/confirmation.component';
describe('when navigate to promotion selecte', () => {
let component: EnrollMemberPromotionsComponent;
let fixture: ComponentFixture<EnrollMemberPromotionsComponent>;
let de: DebugElement;
let el: HTMLElement;
let location: Location;
let router: Router;
let mockAR: any = {
params: {
subscribe: function() {
console.log('Subscribed.');
Observable.of({ id: 123 });
}
}
}
let mockRouter = {
navigate: jasmine.createSpy('navigate')
}
beforeEach(async () => {
TestBed.configureTestingModule({
providers: [
MembershipService,
ClubService,
HandleErrorService,
AccessTypeService,
MemberService,
GetCurrentUserService,
PromotionService,
CurrentUserService,
Router,
ActivatedRoute,
FormService,
{ provide: Router, useValue: mockRouter }
],
imports: [
FormsModule,
EnrollMemberModule,
HttpClientModule,
HttpModule,
ToastrModule.forRoot(),
RouterTestingModule.withRoutes([
{
path: 'tab',
component: EnrollMemberComponent,
data: {
title: 'EnrollMemberComopnent',
iconClass: 'fa fa-bullhorn'
},
canActivate: [ClubCodeGuard],
children: [
{
path: '',
redirectTo: 'membership-type',
pathMatch: 'full'
},
{
path: 'membership-type',
component: EnrollMemberMembershipTypeComponent,
data: { title: 'EnrollMemberMembershipTypeComponent', iconClass: 'fa fa-bullhorn' },
canActivate: [ClubCodeGuard]
},
{
path: 'membership-info',
component: EnrollMemberMembershipInfoComponent,
data: { title: 'EnrollMemberMembershipInfoComponent', iconClass: 'fa fa-bullhorn' },
canActivate: [ClubCodeGuard]
},
{
path: 'promotions',
component: EnrollMemberPromotionsComponent,
data: { title: 'EnrollMemberPromotionsComponent', iconClass: 'fa fa-bullhorn' },
canActivate: [ClubCodeGuard]
},
{
path: 'review-pay',
component: EnrollMemberReviewAndPayComponent,
data: { title: 'EnrollMemberReviewAndPayComponent', iconClass: 'fa fa-bullhorn' },
canActivate: [ClubCodeGuard]
},
{
path: 'confirmation',
component: EnrollMemberConfirmationComponent,
data: { title: 'EnrollMemberConfirmationComponent', iconClass: 'fa fa-bullhorn' },
canActivate: [ClubCodeGuard]
}
]
},{
path: '',
redirectTo: 'tab',
pathMatch: 'full'
}
])
]
}).compileComponents(); // compile template and css
router = TestBed.get(Router);
location = TestBed.get(Location);
fixture = TestBed.createComponent(EnrollMemberPromotionsComponent);
router.initialNavigation();
});
beforeEach(() => {
router = TestBed.get(Router);
location = TestBed.get(Location);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
你可以使用 ORM的對象操作數(shù)據(jù)庫,你也可以寫DQL操作數(shù)據(jù),你可以寫 SQL來操作數(shù)據(jù)庫。
ORM 無法涵蓋所有的SQL標準,直接寫SQL又可能會有風險。就出了DQL,語法還和sql很像
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。