進(jìn)到tomcat安裝目錄,執(zhí)行bin/shutdown.bat 或bin/shutdown.sh就可以關(guān)掉tomcat了.
如果是自動(dòng)安裝的tomcat, 停掉service就好了, 用windows的自帶服務(wù)管理工具就好.
tomcat也有自帶工具,這里有完整的說(shuō)明 https://tomcat.apache.org/tom...
還有一個(gè)辦法就是 telnet localhost 8005 連上后輸入SHUTDOWN,這種方式是跨平臺(tái)的,甚至可以遠(yuǎn)程操作,可以停掉服務(wù),但不是御載,下次開機(jī)還會(huì)啟動(dòng).
EDITED
如果找不到是哪個(gè)程序占用了端口,可以用netstat -anbo 找到進(jìn)程的PID, 用tasklist |findstr PID來(lái)查找可執(zhí)行文件的名字. 可能還需要后續(xù)的搜索磁盤.
不過(guò)...
更好的工具是用TCPView 這個(gè)必備工具. 有了他, 不再為windows而煩惱!
${toolsjarSystemPath} 這個(gè)是不是沒定義
設(shè)置3個(gè)變量初始值都是 false, 每個(gè)定時(shí)器各控制一個(gè), 執(zhí)行的時(shí)候賦值為true, 然后判斷這3個(gè)變量的值,都為true, 說(shuō)明都已經(jīng)已經(jīng)執(zhí)行了
對(duì)于復(fù)制集,唯一索引是保證絕對(duì)唯一的;對(duì)于分片集,只保證片內(nèi)唯一,不保證跨片的唯一,除非唯一索引正好是片鍵。
這些在文檔里有,可以參考。因?yàn)椴恢滥憔唧w出現(xiàn)的是什么問(wèn)題,所以也沒法分析了。
是很麻煩的,這個(gè)框架寫個(gè)hello world都要這么久,我都懶得用,我都是直接echo 'hello world'
現(xiàn)在的麻煩,將來(lái)維護(hù)的時(shí)候你會(huì)感謝的。而不是到將來(lái)的時(shí)候,一直說(shuō),這是誰(shuí)寫的代碼?用原生 SQL, DB 構(gòu)造,什么都有。
ps:多對(duì)多關(guān)聯(lián)可以不寫模型,也可以寫。
首先,最簡(jiǎn)單的辦法就是搜一下這個(gè)庫(kù)的源碼里是否出現(xiàn)了 asyncio 或 async def 的字樣,如果沒有出現(xiàn)則幾乎可以證明這個(gè)庫(kù)沒有對(duì) asyncio 有做特別的支持。為了徹底證實(shí),還應(yīng)仔細(xì)閱讀其代碼,查看關(guān)鍵 I/O 部分是如何實(shí)現(xiàn)的。
對(duì)于暫不支持 asyncio 的第三方庫(kù),可以按以下步驟依次排查:
tp5數(shù)據(jù)庫(kù)查詢結(jié)果集默認(rèn)返回的是對(duì)象,不是數(shù)組(數(shù)組需要$result->toArray();或者在配置里面設(shè)置結(jié)果集類型為數(shù)組)。你上面報(bào)錯(cuò)說(shuō)的是沒有數(shù)組索引, 你把那個(gè)$value返回回來(lái)看看有沒有值不就知道了
使用ajax請(qǐng)求后臺(tái)的api:
api生成一個(gè)驗(yàn)證碼存到redis,并發(fā)送給用戶手機(jī)。
驗(yàn)證時(shí),后臺(tái)拿到用戶輸入的驗(yàn)證碼和redis里面的驗(yàn)證碼做比較。
runner.run = unittest.TextTestRunner(verbosity=2).run(test_unit)
這個(gè)方法是將測(cè)試結(jié)果顯示到控制臺(tái)的
如果說(shuō)你使用了HTMLTestRunner的runner.run(test_unit)
話就是將測(cè)試結(jié)果輸出到測(cè)試報(bào)告中顯示
你上面的寫法是DOM0的事件綁定寫法。假設(shè)你在下面又用updateButton綁定click事件執(zhí)行一些操作。那么就會(huì)覆蓋掉你上面寫的
updateButton.click = function() {
articleArea.update();
relatedArea.update();
};
這些操作。
但是addEventListener是DOM2寫法??梢越壎▋蓚€(gè)click事件,執(zhí)行兩種操作。(雖然你也可以把這兩個(gè)操作寫在一個(gè)方法中),addEventListener可以通過(guò)傳入第三個(gè)參數(shù)(布爾值)來(lái)讓事件是冒泡階段調(diào)用(false)還是捕獲階段調(diào)用(true),雖然這個(gè)單詞有點(diǎn)長(zhǎng),但是不管怎么看都要優(yōu)于DOM0的DOM事件寫法
`$("#menu_sub,#menu_sub2,#menu_sub3").hide();
$(".menu").mouseenter(function(event) {
$(this).css('color', '#46a9ff').next().slideDown();
$(this).siblings('.menu').css('color', '').next().slideUp();
});`
這個(gè)建議你先熟悉下jq基礎(chǔ),你會(huì)發(fā)覺寫起來(lái)會(huì)很簡(jiǎn)單。
startDate: new Date('2014-01-01')
你現(xiàn)在想要實(shí)現(xiàn)的是同級(jí)單詞在a文件和b文件...中各出現(xiàn)的次數(shù).
假設(shè)有兩個(gè)文件a.txt和b.txt.
a文件里面的數(shù)據(jù)是{tom jack tom jack rose tom}
b文件里面的數(shù)據(jù)是{google apple tom google rose}
把編號(hào)換成了文件名.
map的輸出就是這樣<tom:a.txt,1> <jack:a.txt,1> <tom:a.txt,1><jack:a.txt,1> <rose:a.txt,1>
<google:b.txt,1><apple:b.txt,1><tom:b.txt,1>....
這樣的數(shù)據(jù)給到reducer,reducer統(tǒng)計(jì)不了.因?yàn)閗ey不相同.key有的是<tom:a.txt,1><tom:b.txt,1>.
為了解決這個(gè)問(wèn)題,map輸入的內(nèi)容不要直接到reducer中,中間加一層combiner來(lái)處理匯總數(shù)據(jù)
combiner接收<tom:a.txt,1><tom:b.txt,1>
combiner把key做一下切割 .切割成<tom, a.txt:1 ><tom , b.txt:2> ,這樣key相同了.就可以統(tǒng)計(jì)了
下面把代碼貼上 注[我用的是文件的名稱,不是文件里的開頭編號(hào),要用的話還得把文件名換成編號(hào),這樣做有寫問(wèn)題,你可以下去試一試.我找到解決辦法在補(bǔ)充.]
mapper類
public class WCMapper extends Mapper<LongWritable,Text,Text,Text>{
Text text = new Text();
Text val = new Text( "1" );
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
String [] strings = line.split( " " ); //根據(jù)空格切割
FileSplit fileSplit = (FileSplit) context.getInputSplit();// 得到這行數(shù)據(jù)所在的文件切片
String fileName = fileSplit.getPath().getName();// 根據(jù)文件切片得到文件名
for (String s : strings){
text.set(s + ":" + fileName);
context.write(text,val);
}
}
}
combiner類
public class WCCombiner extends Reducer<Text,Text,Text,Text> {
Text text = new Text( );
@Override
protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
//map傳進(jìn)來(lái)的是 <apple:2 , 1> <google:2 ,1>
int sum = 0; //統(tǒng)計(jì)詞頻
for (Text val : values){
sum += Integer.parseInt(val.toString());
}
//切割key
int index = key.toString().indexOf( ":" );
text.set(key.toString().substring( index + 1 ) + ":" + sum); // value ---> 2:1
key.set( key.toString().substring( 0,index )); // key --> apple
context.write( key,text );
}
}
reducer類:
public class WCReduce extends Reducer<Text,Text,Text,Text>{
Text result = new Text( );
protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
String file = new String();
for (Text t : values){
file += t.toString();
}
result.set( file );
context.write( key,result);
}
}
注[本地鏈接的linux環(huán)境hadoop] ,要在本機(jī)的/etc/hosts文件中添加 export HADOOP_USER_NAME=hdfs
a.txt和b.txt都是單詞,以空格分割,你可以做假數(shù)據(jù)測(cè)試一下.
這是測(cè)試結(jié)果.
你的代碼在第二個(gè)循環(huán)里加上索引,傳值時(shí)傳foodIndex,因?yàn)槟阋氖屈c(diǎn)擊food
<div v-for="(food,foodIndex) in item.foods" v-show="name==item.name" class = 'food' :class="{'food-selected':foodIndex== activeIndex}" @click ="addCart(food,foodIndex)" >
我的demo也換為多層循環(huán)了,數(shù)據(jù)結(jié)構(gòu)跟你差不多,一樣的可以的,你要注意下每層循環(huán)的索引要對(duì)應(yīng)每一層,不要寫錯(cuò)了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>changeClass</title>
<script src="https://cdn.bootcss.com/vue/2.5.13/vue.js"></script>
<style>
.active{color:red;}
</style>
</head>
<body>
<div id="app">
<div>
<div v-for="(item,index) in goods">
{{item.value}}
<div v-for="(food,foodIndex) in item.foods" class="default" :class="{'active':item.activeIndex == foodIndex}" @click="changeClass(index,foodIndex)">
{{food.name}}
</div>
</div>
</div>
</div>
</body>
</html>
<script>
var app = new Vue({
el:'#app',
data:{
goods:[
{value:'食物',foods:[{name:1},{name:2},{name:3},{name:4}],activeIndex:null},
{value:'菜',foods:[{name:1},{name:2},{name:3},{name:4}],activeIndex:null},
{value:'飲料',foods:[{name:1},{name:2},{name:3},{name:4}],activeIndex:null}
],
},
methods:{
changeClass:function(index,foodIndex){
if(this.goods[index].activeIndex == foodIndex){
this.goods[index].activeIndex = null;
}else{
this.goods[index].activeIndex = foodIndex;
}
}
}
})
</script>set里調(diào)用set,無(wú)限重復(fù)了
用prop取value
將這些內(nèi)容單獨(dú)封裝為一個(gè)組件,通過(guò)給組件傳值,組件間數(shù)據(jù)互不影響,可以實(shí)現(xiàn)
this.$nextTick(function(){}
北大青鳥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)開發(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ū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(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)師。