說有一個屋里有多個桌子,有多個人? 如果3個人一桌,多2個人。 如果5個人一桌,多4個人。 如果7個人一桌,多6個人。 如果9個人一桌,多8個人。 如果11個人一桌,正好。 請問這屋里多少人?
最近比較閑,逛論壇看到隨手做了.
最小答案是
代碼如下:
public static void main(String[] args) {
for (int i = 0; i < Integer.MAX_VALUE; i++) {
long value = i * 11;
if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
System.out.println("i:" + i + ",value:" + value);
break;
}
}
}
計算出來的結(jié)果是:i:229,value:2519
轉(zhuǎn)念一想,結(jié)果可能不止一個,于是換個寫法:
public static void main(String[] args) {
int count = 0;
long value;
long valueMax = 0;
long iMax = 0;
long pram = 11;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
value = i * pram;
if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
count++;
if (iMax < i) {
iMax = i;
}
if (valueMax < value) {
valueMax = value;
}
}
}
System.out.println("count:" + count);
System.out.println("iMax:" + iMax);
System.out.println("valueMax:" + valueMax);
}
當(dāng)i在Integer.MAX_VALUE范圍內(nèi)的計算結(jié)果:
count:6817408
iMax:2147483434
valueMax:23622317774
這邊遇到了一個問題,當(dāng)代碼中的pram聲明為int類型時計算的結(jié)果會與聲明為long類型發(fā)生極大偏差,貌似是因為Java乘法對于int類型越界處理的問題,具體原因待查.
如果你用如下代碼執(zhí)行:
int count = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
long value = i * 11;
if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
System.out.println("i:" + i + ",value:" + value);
count++;
}
}
System.out.println("count:" + count);
最后數(shù)行看到的結(jié)果是這樣:
i:2147475704,value:2147396264
i:2147476019,value:2147399729
i:2147476334,value:2147403194
i:2147476649,value:2147406659
i:2147476964,value:2147410124
i:2147477279,value:2147413589
i:2147477594,value:2147417054
i:2147477909,value:2147420519
i:2147478224,value:2147423984
i:2147478539,value:2147427449
i:2147478854,value:2147430914
i:2147479169,value:2147434379
i:2147479484,value:2147437844
i:2147479799,value:2147441309
i:2147480114,value:2147444774
i:2147480429,value:2147448239
i:2147480744,value:2147451704
i:2147481059,value:2147455169
i:2147481374,value:2147458634
i:2147481689,value:2147462099
i:2147482004,value:2147465564
i:2147482319,value:2147469029
i:2147482634,value:2147472494
i:2147482949,value:2147475959
i:2147483264,value:2147479424
i:2147483579,value:2147482889
count:3718586
問題產(chǎn)生的原因應(yīng)該是Java對于int的乘法結(jié)果大于上限的情況,自動截取了前10位.
-----------------------------------------------------------------------------------------------------------------之前的理解不正確.
根據(jù)Java的基礎(chǔ)類型的變窄轉(zhuǎn)換(Narrowing primitive conversion)規(guī)則,對于運(yùn)算結(jié)果超出int范圍的,將超出部分全部丟棄,只保留低32位的.
posted @
2016-01-25 17:16 Jimi 閱讀(3412) |
評論 (0) |
編輯 收藏
有位朋友問起,我就順便總結(jié)一下好了。個人知識有限,有謬誤歡迎指正。本人一直從事的服務(wù)端相關(guān)的工作,對前端只能說是耳聞目染。參與的項目主要是頁游和手游。從程序開發(fā)角度講起,程序一般常分為前端程序和后端程序。一.前端前端就是指玩家所使用的客戶端,主要包括處理UI事件和向服務(wù)端發(fā)送請求。頁游主流的技術(shù)有ActionScript及新興的Unity框架,由html5和JavaScript做的小游戲也不少。手游上現(xiàn)在比較火的框架就是cocos2d-x和Unity 3D,cocos2d-x 是開源的,Unity 對開發(fā)者收費(fèi)。兩者都支持多平臺,就是說一次開發(fā),ios、android等平臺都可以生成相應(yīng)代碼。我自己只稍微玩過一點cocos2d-x,主要用的語言是C++,也可以跟Lua混合使用。Unity平臺則支持C#、Boo、JavaScript、Lua,我沒玩過,不發(fā)表評論。2者現(xiàn)在都很火,行情都還不錯。最近比較大的新聞,就是Unreal Engine虛幻引擎宣布開發(fā)者免費(fèi),感興趣的可以自行g(shù)oogle下。二.后端通常所說的后端,常指的客戶端發(fā)送請求的接收和處理者。語言的選擇就很多了,Java、C++、Python、PHP等等。端游等對實時性能要求比較高的場合,一般會選擇C++,與之相應(yīng)的開發(fā)成本更高。相對來講,手游頁游選其它語言的就很多了。一般根據(jù)對實時性的要求,來選擇合適的通信方式,長連接或短連接,以及合適的通訊協(xié)議如http、protobuf、amf3,及自定義協(xié)議等。大多數(shù)時間,你主要的工作在定義協(xié)議、寫游戲邏輯然后與客戶端聯(lián)調(diào)。另外,服務(wù)端一個重要的工作就是負(fù)責(zé)數(shù)據(jù)的存儲,mysql數(shù)據(jù)庫是一個很常見的選擇,還有這幾年興起的各種Nosql數(shù)據(jù)庫,其中尤其是redis(有人說它不是數(shù)據(jù)庫),用的越來越多。最后,對于日志的處理,也是至關(guān)重要的。常用到的框架有l(wèi)og4j以及l(fā)ogback。簡單粗暴點的,你可以另外開線程,直接丟入數(shù)據(jù)庫,精細(xì)點的可以先寫log文件,然后用腳本解析,轉(zhuǎn)發(fā)到日志服務(wù)器然后再存入數(shù)據(jù)庫。如果是放mysql數(shù)據(jù)庫,記得把二進(jìn)制日志關(guān)掉,不然沒跑幾天硬盤就爆了。工作內(nèi)容上,除了上述事務(wù),經(jīng)常需要你做的事情還有:其一,各種游戲平臺的SDK對接,頁游如騰訊、360、37wan,手游如蘋果官方、谷歌官方以及各種大小平臺;其二,制作游戲測試工具,GM命令等;其三,開發(fā)供運(yùn)維人員使用的WEB版本的游戲管理平臺。小規(guī)模的公司,你可能啥都要做,人力配置稍微寬松的公司,這些工作往往會區(qū)分開來。架構(gòu)上來說,大型游戲的服務(wù)端,會分成登錄服、邏輯服、數(shù)據(jù)存儲服、日志服、GM管理服甚至更復(fù)雜。一般服務(wù)器承載量不高的情況下,單進(jìn)程的登錄-邏輯-數(shù)據(jù)的架構(gòu)也很常見。從團(tuán)隊結(jié)構(gòu)角度講,常見的職位分配:
1.策劃類:主策劃、關(guān)卡策劃、數(shù)值策劃、劇本策劃2.美術(shù)類:主美、UI、3D建模、動作、特效、場景、原畫3.程序類:后端、前端4.其它:商務(wù)、運(yùn)營、維護(hù)、QA一個大規(guī)模團(tuán)隊里往往美術(shù)是最多的,現(xiàn)在是看臉的時代,囧RZ!好的美術(shù)都是用錢砸的。小團(tuán)隊來說,自然就是需要各種身兼數(shù)職的牛人。策劃?一個就夠了,前端?策劃也能兼,后端?一個就夠了運(yùn)維?后端也能干美術(shù)?不好搞就外包吧這個世界上永遠(yuǎn)不缺少一個人搞定以上所有事情的大牛。答博友問:我們當(dāng)時的團(tuán)隊是,策劃兼前端,共3前端,后期只剩倆了,后端,前期倆,后期只剩我一個,還有一位特效,美術(shù)外包。答畢。該休息了
在此申明,轉(zhuǎn)載——請注明出處。來自:http://m.tkk7.com/rockblue1988/archive/2015/03/10/423328.html
posted @
2015-03-10 02:05 Jimi 閱讀(4176) |
評論 (3) |
編輯 收藏
現(xiàn)在總結(jié),是有那么點晚了呢。
只是想把那些容易不經(jīng)意間忘卻的,大的小的、圓的扁的、重要的不重要的,都稍稍記錄下來。
這是結(jié)完婚后的第一個年頭,酸甜苦辣,冷暖自知(這句我咋就能聯(lián)想到鴨子呢?)。
一.工作
2月份,13年開始做的頁游創(chuàng)業(yè)項目徹底黃了,還沒過年呢,尾牙都不給吃,團(tuán)隊就“被”滾蛋了。
過完年回來,花了三個禮拜找工作。
3月2號,最終選擇到一家手游公司上班,提前轉(zhuǎn)正。
由于種種原因,決定換工作,拿了三份Offer,其中有我職業(yè)生涯中拿到過的最高的,還是比較欣慰的,這種被人認(rèn)可的感覺良好,雖然最終沒選擇它。
11月27號到了當(dāng)前公司上班,目前為止,工作和交流都很funny,是個令人愉快的選擇。
二.生活
在魔都這地方,換租了一套有獨(dú)立廚房的居室,租的房子啥都沒,買了各種東西,才有那么點家的樣子。
每天上班下班,做飯洗碗,生活也有點像個樣子。
這一年是到影院觀影次數(shù)最多的一年,這也是戀愛時候曾經(jīng)憧憬的。
給自己買了個nokia x2的手機(jī),可是不到一個月就碎屏了,渣渣傷不起。
小舅子來到,帶他走向了碼農(nóng)的不歸路。
三.技能
1.廚藝
研究嘗試了很多沒做過的菜式:
酸菜大腸、豬肚燉蛤蜊、燉王八、蒜泥扇貝、醬汁鮑魚、清蒸多寶魚、清蒸鱸魚、肉末蒸蛋、土豆燉牛腩、
啤酒燉羊肉、香鹵牛筋、清蒸豬舌頭、酸菜魚頭、土豆色拉、西式牛排、香煎鱈魚,還做了第一份自制雙皮奶。
這里一點要說說,一個智能電壓力鍋實在是太值得入手了,煮飯燉湯燜肉都用的上,最重要的是有預(yù)約功能,晚上下好米,早上起來就能吃稀飯了。
2.籃球
周六無安排的話,堅持到上海大學(xué)打籃球,虐與被虐之間,技術(shù)還是有所進(jìn)步的。值得一提的事,公司內(nèi)部比賽,也算是第一次正式上了場,蠻開心。
3.吉他
沒進(jìn)步,只剩下隨便吼吼的技能,走入社會越久,越啞。這個技能的好處是,年會總有機(jī)會上臺去釋放下悶騷的青春,順帶還能帶點小禮品下來。
4.電子琴
主要練熟了兩首曲子:《菊次郎的夏天》和《夢中的婚禮》,完成了大學(xué)時的小心愿。《克羅地亞狂想曲》挑戰(zhàn)失敗,最近電子琴已擺爛。
5.駕照
魔都4月份報名,7500,模擬考什么的花了500左右,每次練車都AA請教練吃飯,加上請假考試,總成本10000左右,好在一次性過----說實話,沒上過幾回車,教練素質(zhì)一般,考科三中間三個月停練,呆車上的時間也絕對沒達(dá)標(biāo) ---- 全國的駕校都這樣嗎?都TM沒人管了?
6.代碼能力
對于Linux下的操作更加熟練,shell腳本編寫,組織SQL的能力有所提高。
在不同的公司,讀到不同風(fēng)格的代碼,隱約覺得內(nèi)功有所提升----別的不說,抄代碼能力那是肯定增長了。
作為一個半路出家的程序員,補(bǔ)了《C++ primer》和《C程序設(shè)計語言》兩本心法,眼界稍稍增長,至少不會被“java程序員不曉得指針是啥”這類的說辭給躺槍。
主要的吃飯家伙----Java方面,我再“三”次嘗試了《Java并發(fā)編程實踐》這本書,比最初多懂得一點。
比較用得上的一本書是《Java程序性能優(yōu)化》,在大牛眼中這書可能比較淺顯,但里面的東西確實比其它一些大部頭里說的簡潔一些,挺多地方一般面試也常問到。
《Java性能優(yōu)化權(quán)威指南》就是前者的加強(qiáng)版,干貨不少,字太多沒堅持讀完。
項目中用上了redis,漲了點姿勢。
比較實用的新技能:Lua算是比較熟練了,可以拿來換飯錢。
四.開心的事
1.年會上中了三等獎
2.論壇上抽中一個機(jī)械鍵盤
五.最重要的事
兩口之家即將變成三口之家了,希望一切順順利利、平平安安!
六.2015的目標(biāo)
年底再揭曉
祝觀文的諸位碼友三羊開泰,心想事成!
PS:沒多少內(nèi)容的一篇隨筆,竟然花了近兩個小時,必須對產(chǎn)出高質(zhì)量博文的博主們表達(dá)一下由衷的敬佩
posted @
2015-03-07 03:09 Jimi 閱讀(5640) |
評論 (11) |
編輯 收藏
最近的工作主要涉及LUA,這有個坑必須記一下。
下面是一個LUA面向?qū)ο髮懛ǚ浅3R姷膶懛ā?br />
Bird = {
color = {};canFly = true
}
function Bird:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
self.color = {}
return o
end
注意,這里Bird類有兩個屬性,1個表,1個是基本類型,然后上測試代碼(Utils類只是簡單的封裝類,可以自己實現(xiàn)一個)
local A = Bird:new()
LoggerUtils:debug("------------------------------原始值-----------------------------------");
LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(A.canFly));
LoggerUtils:debug("Bird color:");
CommonUtils.printTable(Bird.color)
LoggerUtils:debug("a canFly:" .. StringUtils.boolean2string(A.canFly));
LoggerUtils:debug("a color:");
CommonUtils.printTable(A.color)
--改變A的屬性
A.canFly = false
A.color[1] = "red"
A.color[2] = "blue"
A.color[3] = "green"
LoggerUtils:debug("------------------------------A改變后----------------------------------");
LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(Bird.canFly));
LoggerUtils:debug("Bird color:");
CommonUtils.printTable(Bird.color)
LoggerUtils:debug("A canFly after change:" .. StringUtils.boolean2string(A.canFly));
LoggerUtils:debug("A color after chagne:");
CommonUtils.printTable(A.color)
LoggerUtils:debug("-------------------------------B的值----------------------------------");
local B = Bird:new()
LoggerUtils:debug("B canFly:" .. StringUtils.boolean2string(B.canFly));
LoggerUtils:debug("B color:");
CommonUtils.printTable(B.color)
代碼執(zhí)行結(jié)果:
2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始值-----------------------------------
2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改變后----------------------------------
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------B的值----------------------------------
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,696 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
發(fā)現(xiàn)神馬問題了嗎?
當(dāng)A的類型為表的屬性color改變時,原始類的color屬性也改變了,同時這個改變也影響到新建的B,而類型為基本類型的屬性canFly就沒有這個問題。
我的解決方法是新增一個set方法:
function Bird:setColor(color)
self.color = color
end
然后修改改變屬性的方式:
local color ={}
color[1] = "red"
color[2] = "blue"
color[3] = "green"
A:setColor(color)
輸出結(jié)果:
2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始值-----------------------------------
2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改變后----------------------------------
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------B的值----------------------------------
2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
2014-12-29 11:31:58,653 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
另外同事一個解決方法更簡單,直接修改new()方法,其它的地方都不用改:
function Bird:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
o.color = {}
return o
end
這個問題基本上網(wǎng)上的示例貌似都沒提到,我讀的書里也沒有,實際調(diào)試過程中才發(fā)現(xiàn)的,會造成新創(chuàng)建的類里會有不該有的屬性,比較蛋疼。
具體原因不了解,有木有筒子指教一下?順便問問這兩種方法哪種更好?
posted @
2014-12-29 11:42 Jimi 閱讀(10775) |
評論 (5) |
編輯 收藏
作為一名“萬能”的碼農(nóng),這種活兒你遲早要干的。----By Jimi沒有bond
準(zhǔn)備工作:yum
1.檢查是否已安裝
rpm -qa subversion
如果要卸載舊版本:
yum remove subversion
2.安裝
yum install subversion
PS:yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql(這是安裝配合Apache的模塊,我暫時還沒做,做了再補(bǔ)上,你可以只裝subversion,多裝了也無所謂)
3.檢查是否安裝成功
svnserve --version
如果成功會輸出版本號
4.創(chuàng)建倉庫目錄
例如:
mkdir /home/svn/game
5.創(chuàng)建項目
svnadmin create /home/svn/game
6.檢查是否創(chuàng)建成功
cd /home/svn/game
ll
如果成功,game目錄下會多出幾個文件夾
7.進(jìn)入conf目錄會看到3個配置文件,生成的文件中都有英文注釋說明
示例需求:
策劃組:開策劃、美術(shù)讀寫
后端組:開后端讀寫,策劃只讀
前端組:開前端讀寫,策劃、美術(shù)只讀
美術(shù)組:開美術(shù)讀寫,策劃只讀
管理員組:所有的讀寫
authz:用戶權(quán)限配置
示例:
[groups]
#管理組
manager = boss
#服務(wù)端用戶組
server = server1,server2
#客戶端用戶組
client = client1,client2
#美術(shù)組
art = art1,art2
#策劃組
design=design1,design2
[game:/]
@manager=rw
[game:/server]
@server=rw
[game:/client]
@client=rw
@design=r
@art=r
[game:/art]
@design=rw
@art=rw
@client=r
[game:/design]
@design=rw
@server=r
@client=r
@art=r
passwd:用戶密碼
[users]
boss=123456
server1=123456
server2=123456
client1=123456
client2=123456
art1=123456
art2=123456
design1=123456
design2=123456
svnserve.conf:
#匿名訪問者權(quán)限
anon-access = none
#驗證用戶權(quán)限
auth-access = write
#密碼文件地址
password-db = /home/svn/game/passwd
#權(quán)限文件地址
authz-db = /home/svn/game/authz
#項目名稱(UUID)
realm =game
8.開放svn端口
默認(rèn)是3690端口,你也可以用別的。已開啟的跳過這一步
修改
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
保存
/etc/rc.d/init.d/iptables save
重啟
service iptables restart
查看
/etc/init.d/iptables status
9.啟動SVN服務(wù)
svnserve -d -r /home/svn
-d:守護(hù)進(jìn)程
-r:svn根目錄
假設(shè)服務(wù)端IP為192.168.1.100,那么如下設(shè)置后game的訪問目錄就為:
svn://192.168.1.100/game
10.安裝客戶端 TortoiseSVN
11.建立子目錄
在客戶端PC上找個目錄,用管理員帳戶從svn://192.168.1.100/game遷出game目錄,分別新建art,design,server,client 4個子目錄,然后提交。
這時候你可以用其他組的帳戶測試下是否正常使用了。
12.安裝好的svn服務(wù)端,默認(rèn)是不會開機(jī)自啟動的,每次開機(jī)自己啟動會很麻煩,我們可以把它設(shè)成開機(jī)啟動
首先:編寫一個啟動腳本svn_startup.sh,我放在/root/svn_startup.sh
#!/bin/bash
/usr/bin/svnserve -d -r /home/svn/
這里的svnserve路徑保險起見,最好寫絕對路徑,因為啟動的時候,環(huán)境變量也許沒加載。
絕對路徑怎么查?
which svnserve
這里還有可能碰到一個問題,如果你在windows下建立和編寫的腳步,拿到linux下,用vi或者vim修改后可能會無法執(zhí)行,這是文件格式的問題
vi svn_startup.sh
輸入:set ff 回車
如果顯示的結(jié)果不是fileformat=unix
再次輸入
set ff=unix
就OK了
然后修改該腳本的執(zhí)行權(quán)限
chmod ug+x svn_startup.sh
或者萬能的
chmod 777 svn_startup.sh
最后:加入自動運(yùn)行
vi /etc/rc.d/rc.local
在末尾添加腳本的路徑,如:
/root/svn_startup.sh
現(xiàn)在,你可以重啟一下試試了。
不懂得怎么確認(rèn)成功?敗給你了
ps -ef|grep svnserve
好多活兒
posted @
2014-11-19 11:50 Jimi 閱讀(58612) |
評論 (9) |
編輯 收藏
那種酸爽,根本說不出來—————————————————————————— by: Jimi沒有
Bond
Jimi是誰? 就是灑家啊!
剛開始學(xué)習(xí)寫Java的時候,用的eclipse,正式工作后,主要用的myeclipse,去年初在前輩的推薦下,在2折的時候買了正版的 IntelliJ IDEA 和 Pycharm,12.0版終生使用,一年更新。
使用前早就久聞其名,據(jù)說是最好的Java開發(fā)工具。
起先用的非常不習(xí)慣,但是花了錢的,硬著頭皮用了下去。
短短一個禮拜,徹底愛上了它!就是辣么酸爽!--------------------------------------------------------------謹(jǐn)以此文獻(xiàn)給對于擁抱IDEA還存在疑慮的筒子們
JetBrains(這個公司的名稱翻譯過來就是“大腦噴射?”) 公司的宣傳語是這么說的:Develop with pleasure!(帶著快樂開發(fā)!)
Why?
他們咋這么有信心呢?
這到底是怎樣的一個工具?
跟我一起來數(shù)數(shù)IDEA特別長的地方:
一.黑色主題 Darcula眼睛舒服,最重要的是酷!
設(shè)置方式:FILE--Settings--Edit--Colors&Fonts--Scheme name
二.智能提示創(chuàng)建或引入項目的時候,會自動引入缺少的包,真找不著的還可以search in the net
鍵入代碼的時候,區(qū)分大小寫的智能提示,自動引入包,如果有重名的會列出所有選擇,但是比 myeclipse 的更聰明,至于怎么個聰明法,你自個兒試試就知道了
三.工具集成基本上正式開發(fā)的常用工具基本都集成了,而且基本都在你非常容易觸到的位置。
說說我比較常用的:
1.ant
你懂的
2.maven
你也懂的
3.SVN
相比之下,IDEA的SVN的提交提供了更多的選項和功能
提交的界面兩側(cè)會顯示當(dāng)前文件和修改的部分對比,可以非常方便地檢查和修改文件。
提交前:
(1).可選擇自動格式化
(2).可選擇自動忽略沒有使用的imports
(3).可選擇分析代碼
(4).檢查是否有TODO
提交后甚至可以選擇將改變上傳到特定的目錄

4.系統(tǒng)終端
有了這個東西,你就不必頻繁地切換窗口了
打開方式:Tools--Open Terminal
快捷鍵:Alt+F12
5.SSH工具
打開方式:Tools--Start SSH session
6.數(shù)據(jù)庫連接工具
打開方式:View--Tool Windows--Database
7.IDEA talk
神奇的東西,你可以聯(lián)系局域網(wǎng)內(nèi)其它的IDEA使用者,可以方便地把你的代碼show給你的同事
打開方式:View--Tool Windows--IDEA talk
8.Changes
非常方便的changes視圖,它會變色顯示你所有改動過的文件,而且可以方便的與 本地歷史 或 線上歷史 做對比
打開方式:View--Tool Windows--Changes
還有g(shù)it、github、cvs、groovy consle以及等等,真沒有的你還可以:
FILE--Settings--Plugins
四.強(qiáng)大的繪圖工具讀源碼看不懂項目結(jié)構(gòu)?寫文章畫類圖好麻煩?
右鍵diagram幫助你

上個例圖:

右鍵選擇 Show Categories 有驚喜,什么值域、方法、構(gòu)造器、內(nèi)部類統(tǒng)統(tǒng)有
五.無縫接入eclipse和myeclipseIDEA可以直接打開有.project文件的項目,也可以將自身項目導(dǎo)出成eclipse的項目。
而且因為IDEA的項目配置文件為1個.iml文件加一個獨(dú)立文件夾.idea,
所以只要你將兩者放入ignore目錄,即使在你個人使用IDEA而團(tuán)隊使用其他IDE的情況下,也并不會對其他人造成麻煩。
導(dǎo)出方法:FILE--Export to eclipse
六.更小的體積,更快的速度用過myeclipse的你明白的
綜上,我想你應(yīng)該能夠明白,為啥用IDEA寫代碼,就是那么愉快,就是那么酸爽,就是那么令人停不下來!
接著分享開發(fā)中我比較常用的一些快捷鍵:
一.找文件找代碼找引用相關(guān)1.雙擊shift
在項目的所有目錄查找,就是你想看到你不想看到的和你沒想過你能看到的都給你找出來
2.ctrl+f
當(dāng)前文件查找特定內(nèi)容
3.ctrl+shift+f
當(dāng)前項目查找包含特定內(nèi)容的文件
4.ctrl+n
查找類
5.ctrl+shift+n
查找文件
6.ctrl+e
最近的文件
7.alt+F7
非常非常頻繁使用的一個快捷鍵,可以幫你找到你的函數(shù)或者變量或者類的所有引用到的地方
二.編輯相關(guān)1.shift+enter
另起一行
2.ctrl+r
當(dāng)前文件替換特定內(nèi)容
3.ctrl+shift+r
當(dāng)前項目替換特定內(nèi)容
4.shift+F6
非常非常省心省力的一個快捷鍵,可以重命名你的類、方法、變量等等,而且這個重命名甚至可以選擇替換掉注釋中的內(nèi)容
5.ctrl+d
復(fù)制當(dāng)前行到下一行
6.ctrl+x
剪切當(dāng)前行
7.ctrl+c \ ctrl+v
大家都懂的
8.ctrl+z
撤銷
9.ctrl+shift+z
取消撤銷
10.ctrl+k
提交代碼到SVN
11.ctrl+t
更新代碼
12.alt+insert
非常非常以及相當(dāng)方便的一個組合鍵,不信您往下看
在類中使用:

可以自動生成構(gòu)造器、getter/setter等等常用方法
在項目目錄上使用:

可用于新建各種文件。
13.alt+enter
又是一個大殺器,有多殺?
例1:
發(fā)現(xiàn)代碼很“黃”怎么辦?

鼠標(biāo)移上去喵一下:

試試alt+enter:

選擇simplify看看

我勒個去,代碼簡潔了有木有啊!
PS:黃色警告編譯可以通過,不影響程序的正常運(yùn)行,一般都是一些對于代碼優(yōu)化的建議,我遇到過的有:
(1).can be simplify
代碼可以簡化
(2).Variable is never use
聲明的變量從未被使用
(3)unnecessary boxing
不必要的聲明包裝
以及等等等,多留意下,對于編碼的某些細(xì)節(jié)能夠更了解。
例2:
寫個類實現(xiàn)某個接口,加上 implements Runnable 后你就會發(fā)現(xiàn)這條紅色的波浪線:

咱試試在這行上來個 alt+enter:

感動地哭了有木有?你想到的沒想到的IDEA都幫你想到了。
看到代碼里提示的各種紅XX,就試試alt+enter吧!什么未拋異常啊沒有try catch啊都能搞得定。
14.ctrl+alt+L
自動格式化代碼,我已經(jīng)養(yǎng)成了寫完代碼就來一發(fā)的習(xí)慣。
你可以個性化設(shè)置你自己的代碼風(fēng)格:File--
Settings--CodeStyle
——————————切——————————切——————————切——————————切——————————切——————————
凡事有利有弊,IDEA同樣是把雙刃劍,最后說說它不好的地方
1.最重要的就是“貴”!
專業(yè)版?zhèn)€人許可2折可以接受,5折小貴,不打折桑不起!!!囧RZ~
美刀的消費(fèi)水準(zhǔn)令國內(nèi)大多在屌絲線上掙扎的猿類們望而卻步。
好在JetBrains是有社區(qū)版的,最近對于學(xué)生也有免費(fèi)的Key。
對于使用破解版的小伙伴,建議自己用用就好了,不必太聲張。
用戶養(yǎng)成良好的軟件付費(fèi)習(xí)慣,才能讓我們的工作變得越來越有價值。
2.集成太完善了
集成的工具完全能夠應(yīng)付大多數(shù)的工作需求,對于不求甚解又偷懶的筒子們,直接使用,可能很多工具的細(xì)節(jié),你都不會了解,也不會再去了解了。
比如:maven,ant
3.不自帶JDK
不是缺點的缺點,myeclipse是集成的
差不多了,該擼代碼了。
以上這些,就是我使用IDEA一年半來幾乎所有的心得了。
能力有限,磚頭輕拍。
如果你有殺傷力更強(qiáng)大的手段,歡迎交流。
后記:最近偶然發(fā)現(xiàn),這篇文章被人轉(zhuǎn)載了,而且沒注明出處,令人蛋疼。在此重申下,轉(zhuǎn)載,請注明出處。來自:http://m.tkk7.com/rockblue1988/archive/2014/10/24/418994.html
posted @
2014-10-24 12:49 Jimi 閱讀(264138) |
評論 (15) |
編輯 收藏
1.rm 刪除
參數(shù):
-r:遞歸
-f:強(qiáng)制
2.cd 打開目錄
cd ../ 打開上級目錄
3.mv 移動或者重命名文件
重命名: mv test.txt test_old.txt
移動文件:mv 文件路徑 新路徑
4.cp 拷貝文件或目錄 參數(shù)與mv類似
例:cp -r folder folder2
sz 下載到本地
5.sz 下載到本地
6.rz 上傳到服務(wù)器
7.find 查找文件或者文件內(nèi)容
查找文件中包含特定內(nèi)容的行(支持通配符):find . -name "game.log" -type f |xargs grep "hello world"
8.df 查看存儲狀態(tài)
9.top查看內(nèi)存和CPU狀態(tài)
10.ll 列出當(dāng)前目錄所有文件
11.ls列出當(dāng)前目錄所有文件詳情
12.chmod 777 修改文件讀寫權(quán)限(全可讀可寫)
13.more 查看文件 按空格鍵向下翻頁
14.less 與more相反,用法一致
15.sudo -i 提權(quán)
16.netstat -nat|grep -i "9001"|wc -l 查看9001端口連接數(shù)
17.history 查看歷史操作
18.last 查看歷史登陸,可以看看服務(wù)器有沒有陌生IP登陸
例:last|grep 192.168.1.1 查看192.168.1.1的登陸情況
19.sh 執(zhí)行腳本
例:sh restart.sh
20.ps 查看程序快照
例:ps -ef|grep tomcat 查看運(yùn)行中名稱包含tomcat的進(jìn)程
ps -aux|grep svn
21.kill -9 進(jìn)程號 殺死進(jìn)程,常與ps命令配合使用
例:假設(shè)要關(guān)閉的進(jìn)程號為 111
kill -9 111
22.date 顯示當(dāng)前時間
23.mkdir 創(chuàng)建目錄
24.ssh 用戶名@IP地址 遠(yuǎn)程連接
例:ssh root@192.168.1.111
25.tail 查看文件尾
例:tail -100f game.log 查看文件最后100行,持續(xù)刷新,適合在服務(wù)器上看實時日志時使用
26.head 與tail相反,用法一致
27.vi 文本編輯
最基本的操作:
按i進(jìn)入編輯模式,編輯完成后,按ESC退出編輯模式
輸入:wq 回車后保存修改
輸入:q! 不保存退出
輸入ZZ 保存退出
28.ctrl+c 撤銷或退出當(dāng)前程序
29.文件目錄下,按TAB有智能提示
30.按 ↑ 符號,會顯示使用過的命令
31.rpm -qa 查看已安裝過的程序
例:rpm -qa|grep subversion 查看是否已安裝svn
32.安裝sz/rz命令
yum install lrzsz
33.修改用戶密碼
passwd 用戶名
例:passwd root
34.which 查找命令所在的路徑
例1:which ssh
例2:which sh
35.查看編碼方式
echo $LANG
posted @
2014-10-23 16:52 Jimi 閱讀(4879) |
評論 (1) |
編輯 收藏
并發(fā)模式中,有一個稱做Future模式。啥是Future模式捏? future,翻譯成中文就是“未來,將來”的意思,可以簡單地理解為 “明天的事明天再做” 。
比方說,你在做晚飯,而只有一個火爐,先燉個豬蹄要1小時,在等待豬蹄的這個時間里,你可以去淘米、洗菜、刷牙、摳腳,待豬蹄燉好了,再繼續(xù)炒菜。
在編碼中體現(xiàn)為:將耗時任務(wù)丟入單獨(dú)的線程,從而使主線程能夠繼續(xù)執(zhí)行其它的邏輯,待耗時任務(wù)執(zhí)行完成后再做相應(yīng)的處理。
Future模式是一鐘十分常用的并發(fā)模式,所以JDK的并發(fā)包中自帶一套實現(xiàn)。上類圖:
這個自己畫的,既然畫了不能白畫,囧!!!
下面這個是用
IntelliJ IDEA 自帶工具生成的,真心太酸爽。
只看函數(shù)名稱,也能基本了解FutureTask所提供的主要能力:
1、可判斷執(zhí)行狀態(tài)(isDone())
2、可取消(cancel())
3、可讀取返回結(jié)果(get())
4、可判斷是否取消(isCancelled)
現(xiàn)在,我們可以解決上面這個豬腳的問題了:
public static class TestTask implements Callable<Boolean> {
@Override
public Boolean call() throws Exception {
//模擬時間消耗
System.out.println("--------漫長的一小時--------");
Thread.sleep(10000);
System.out.println("--------豬腳燉完--------");
return true;
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
System.out.println("--------開始做晚飯--------");
System.out.println("開始燉豬腳~~~");
System.out.println("--------豬腳下鍋--------");
FutureTask<Boolean> futureTask = new FutureTask<Boolean>(new TestTask());
Thread thread = new Thread(futureTask);
thread.start();
Thread.sleep(1000);
System.out.println("--------淘米--------");
Thread.sleep(1000);
System.out.println("--------洗菜--------");
Thread.sleep(1000);
System.out.println("--------刷牙--------");
Thread.sleep(1000);
System.out.println("--------摳腳--------");
//如果豬腳燉好了
if(futureTask.get()==true){
System.out.println("--------繼續(xù)炒菜--------");
}
}
執(zhí)行結(jié)果:
--------開始做晚飯--------
開始燉豬腳~~~
--------豬腳下鍋--------
--------漫長的一小時--------
--------淘米--------
--------洗菜--------
--------刷牙--------
--------摳腳--------
--------豬腳燉完--------
--------繼續(xù)炒菜--------
posted @
2014-10-23 16:13 Jimi 閱讀(5268) |
評論 (3) |
編輯 收藏
public class InsertionSortAlgorithmTest {
public static String arrayToString(int[] array){
StringBuilder sb = new StringBuilder();
for(int a:array){
sb.append(a).append(" ");
}
return sb.toString();
}
public static int[] insertionSort(int[] array){
int key;
int j;
for (int i = 1; i < array.length; i++) {
key = array[i];
j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j = j - 1;
}
array[j + 1] = key;
System.out.println(arrayToString(array));
}
return array;
}
public static void main(String[] args) {
int[] array = {2, 3, 1, 7, 5, 9, 4, 6, 8};
insertionSort(array);
}
}
posted @
2014-02-18 23:23 Jimi 閱讀(1529) |
評論 (0) |
編輯 收藏
1.說說ArrayList、Vector、LinkedList的區(qū)別
2.HashMap的實現(xiàn)原理
3.HashMap出現(xiàn)哈希沖突是如何處理的
4.觀察者模式的定義和實現(xiàn)
5.單例模式的定義和實現(xiàn)
6.spring的事務(wù)如何配置
7.什么是AOP?
8.寫一個永不停止的線程
9.mysql的優(yōu)化
10.如何查找性能瓶頸
11.請自我介紹
12.netty 3 和 netty 4的區(qū)別
13.ArrayBlockingQueue和LinkedBlockingQueue的區(qū)別
14.緩存的實現(xiàn)方式
15.什么時候會GC?
16.內(nèi)存回收模型
17.spring配置事務(wù)
18.Mysql的事務(wù)處理
19.ant自動上傳服務(wù)器
posted @
2014-02-18 23:18 Jimi 閱讀(1564) |
評論 (0) |
編輯 收藏
--啟用Ad Hoc Distributed Queries
--(使用以下兩句代碼的原因:下面的sql中,其中有幾個從其他數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)的語句,所以必須得先啟用Ad Hoc Distributed Queries,使用結(jié)束后,最好關(guān)閉它 )
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
GO
delete from syscode
insert into syscode
select type,code,name,note,value1,value2 FROM opendatasource('SQLOLEDB','Data Source=192.168.1.101;User ID=sa; Password=***').[DATABASE_NAME].dbo.syscode
--使用完成后,關(guān)閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
posted @
2013-02-03 11:27 Jimi 閱讀(2769) |
評論 (0) |
編輯 收藏
import java.util.ArrayList;
import java.util.Calendar;
public class CAL {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar start = Calendar.getInstance();
System.out.println(start.getTimeInMillis());
ArrayList<Integer> number = new ArrayList<Integer>();
number.add(1);number.add(1);
for (int i = 2; i <= 100000; i++) {
number.add(number.get(i - 1) + number.get(i - 2));
}
Calendar end = Calendar.getInstance();
System.out.println(end.getTimeInMillis());
System.out.println("時間:" + (end.getTimeInMillis()-start.getTimeInMillis() ));
System.out.println("last:"+number.get(100000));
}
}
posted @
2013-01-25 11:15 Jimi 閱讀(1914) |
評論 (0) |
編輯 收藏
項目上有一個這樣的需求:登錄的時候選擇一個單位名稱,然后輸入賬號完成登錄,下次登錄的時候,“單位選擇”框里自動顯示為上次登錄的頁面。
具體實現(xiàn)如下:
{
xtype : 'combo', //這里是選擇單位的Combo
id:'orgname',
store : orgStore,
name:'orgname',
emptyText : '請選擇單位',
displayField : 'orgname',
valueField : 'dbname',
editable : false,
forceSelection : true,
triggerAction : 'all',
shadow : 'frame',
hiddenName : 'dbname',
listeners:{
select:function(){ //增加1個select函數(shù),當(dāng)選擇的時候,將選擇結(jié)果保存入cookie
savedbname= Ext.getCmp('orgname').getValue();
Ext.util.Cookies.set('savedbname',savedbname);
}
}
}
var orgStore = new Ext.data.JsonStore( { //這是單位選擇Combo的數(shù)據(jù)源
url : 'test/LoginOrgSelectServlet',
root : 'orgselect',
fields : [ 'orgname', 'dbname' ],
autoLoad : true,
listeners:{load:function(){ //給store添加一個load監(jiān)聽器
var cookiedata = Ext.util.Cookies.get("savedbname");
if (cookiedata!=null){Ext.getCmp('orgname').setValue(cookiedata);} //當(dāng)cookie中的數(shù)據(jù)不為空的時候,設(shè)置combo的值
}}
});
posted @
2012-09-12 17:23 Jimi 閱讀(5204) |
評論 (1) |
編輯 收藏
public List queryDeviceName(String where) {
Session session = this.getSession();
List list = session.createSQLQuery("select number, name from devrepair " + where).list();
return list;
}
List deviceList = this.getDevrepairService().queryDeviceName(where);
StringBuilder sb = new StringBuilder();
sb.append("{devices:[");
for(Object nameinfo:deviceList){ //查詢的結(jié)果為Object
sb.append("{number:'").append(((Object[])nameinfo)[0]).append("',"); //將查詢結(jié)果轉(zhuǎn)化為Object的集合,取值
sb.append("name:'").append(((Object[])nameinfo)[1]).append("'}");
sb.append(",");
}
posted @
2012-09-03 17:25 Jimi 閱讀(617) |
評論 (0) |
編輯 收藏


總體方案:從sql server 中導(dǎo)出建立數(shù)據(jù)庫的sql文件,在powerdesigner中生成PDM,再將PDM轉(zhuǎn)化為MySql的版本,然后生成數(shù)據(jù)庫的sql,在MySql中導(dǎo)入sql文件生成數(shù)據(jù)庫。將sql server 表中已存在的數(shù)據(jù)導(dǎo)出為CSV文件,將CSV文件導(dǎo)入MySql中實現(xiàn)數(shù)據(jù)遷移。
用到的工具:Excel,PowerDesigner,SQLyog,記事本
1.在sql server 2005中,右鍵點擊數(shù)據(jù)庫→任務(wù)→生成腳本 按提示點擊下一步,最后將腳本保存到文件xxx.sql

2.打開powerdesigner,點擊文件→reverse engineer→database

選擇數(shù)據(jù)庫類型為sql server 2005

選擇第一步中生成的sql文件
點擊確定,生成sql server 2005版本的PDM文件
3.powerdesigner中,點擊工具→generate physical data model

選擇類型為mysql 5.0,點擊確定生成mysql 5.0版本的pdm,如果出現(xiàn)如下錯誤

將detail選項卡中的check model的打鉤去掉
4.powerdesigner中選擇 數(shù)據(jù)庫→generate database

點擊確定生成Mysql 5.0版本的數(shù)據(jù)庫腳本文件
5.mysql 中,用source命令從sql文件創(chuàng)建相關(guān)的表 “source d:/xxx.sql”檢查上一步驟中生成的腳本文件,由于是從sql server中生成,數(shù)據(jù)庫名稱可能是dbo,將dbo改為你打算創(chuàng)建的數(shù)據(jù)庫名稱
6.sql server中,,右鍵點擊數(shù)據(jù)庫→任務(wù)→導(dǎo)出數(shù)據(jù) 按提示導(dǎo)出為excel文件,如:xx.xls
7.excel中打開,選擇文件→另存為csv文件 毋須保留列名,方式選擇utf-8,否則可能出現(xiàn)亂碼的問題
8.再將csv文件導(dǎo)入mysql,有多種方式,圖形化界面SQLyog中,直接右鍵表→從CSV中導(dǎo)入數(shù)據(jù) 即可
posted @
2012-08-31 10:34 Jimi 閱讀(9155) |
評論 (3) |
編輯 收藏
刪除了A項目,運(yùn)行B項目的時候總是有A項目的啟動信息,甚至物理刪除A項目后都無法解決,猜測是A項目的項目文件被保存在myeclipse自帶的tomcat中,網(wǎng)上查了查,沒有找到相關(guān)的解決辦法,憑感覺找到以下目錄:
\Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps
發(fā)現(xiàn)原來刪除的A項目的文件都保存在該目錄下,此外該目錄還包括當(dāng)前運(yùn)行的項目,刪除相關(guān)A項目的文件即可解決。
看來 \Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps 就是Myeclipse的發(fā)布目錄
posted @
2012-08-27 11:51 Jimi 閱讀(1948) |
評論 (0) |
編輯 收藏
你必須學(xué)會翻##墻,感謝領(lǐng)導(dǎo)!
posted @
2012-08-07 10:39 Jimi 閱讀(1420) |
評論 (2) |
編輯 收藏
小明和小強(qiáng)都是王老師的學(xué)生,老師的生日是M月N日,他們都知道老師的生日是以下十組中的一個,老師把M告訴了小明,把N告訴了小強(qiáng),然后問他們是否知道自己的生日,小明說“如果我不知道小強(qiáng)也不知道”,小強(qiáng)說“本來我不知道,你說了這話我就知道了”,小明說“那我也知道了 ”。問老師的生日是以下的哪個。
3,4
3,5
3,8
6,4
6,7
9,1
9,5
12,1
12,2
12,8
正在上班 orz..,偶然看到一個題目,就動動腦子吧。
按月份排:
3,4 3,5 3,8
6,4 6,7
9,1 9,5
12,1 12,2 12,8
按日期排:
9,1 12,1
12,2
3,4 6,4
3,5 9,5
6,7
3,8 12,8
小明說“如果我不知道小強(qiáng)也不知道” 按月份排,小明一定不知道,小明知道月份以后肯定小強(qiáng)不知道,由于12,2 6,7的日期是唯一的,可見月份不是6月或12月,生日可能是以下5個:
按月份排:
3,4 3,5 3,8
9,1 9,5
小強(qiáng)說“本來我不知道,你說了這話我就知道了”,除去6,7 12,2,小強(qiáng)原本的選擇如下,
按日期排:
9,1 12,1
3,4 6,4
3,5 9,5
3,8 12,8
現(xiàn)在聽完小明說的話,剔除6月和12月的數(shù)據(jù),老師的生日可能的日期如下:
按日期排:
9,1
3,4
3,5 9,5
3,8
現(xiàn)在小強(qiáng)知道了,由于3,5 9,5日期重復(fù),所以日期一定不是5,生日的可能的集合為:3,4 3,8 9,1
小明說“那我也知道了 ” 小明原本可能的選擇如下,
現(xiàn)在小明以小強(qiáng)的邏輯推斷,也可推知日期一定不是5,而小明自己知道月份,如果為3月,那么小明自己也無法知道老師的生日,所以只能是9月,
老師的生日為9,1。
posted @
2012-07-25 12:48 Jimi 閱讀(1772) |
評論 (4) |
編輯 收藏
JSP頁面定義了如下幾個作用域:
頁面作用域(page scope)、請求作用域(request scope)、會話作用域(session scope)、應(yīng)用程序作用域(application scope)
頁面作用域中的對象僅在當(dāng)前頁面可用;請求作用域中的對象在所有處理同一請求的頁面中都可用;會話作用域中的對象用于同一瀏覽器發(fā)出的所有請求;應(yīng)用程序作用域中的對象被應(yīng)用程序的所有用戶共享。
通過設(shè)置<jsp:useBean>行為的scope屬性,制定bean應(yīng)該放在哪個作用域中,例如:
<jsp:useBean id="test" scope="request" class="com.testBean" />
會話跟蹤過程解釋:由于HTTP是一種無狀態(tài)協(xié)議,即服務(wù)器處理完瀏覽器的請求后將忘掉所發(fā)生的事務(wù),當(dāng)瀏覽器再次發(fā)出請求時,Web服務(wù)器并不知道新的請求與之前的請求有何關(guān)系。解決這個問題主要有兩種方法:
1、服務(wù)器在應(yīng)答中返回與該用戶有關(guān)的所有信息,并讓瀏覽器將其作為下一個請求的一部分發(fā)回去
2、在服務(wù)器的任何位置保存狀態(tài)信息,并且發(fā)回一個標(biāo)識符,瀏覽器在下一請求中返回該標(biāo)識符,然后借由該標(biāo)識符定位服務(wù)器上的狀態(tài)信息
在這兩種情況下,可以用以下三種方式將狀態(tài)信息發(fā)送給瀏覽器:
1、作為cookie
2、嵌入HTML表單作為隱藏字段
3、進(jìn)行編碼,編入應(yīng)答主體的URL中,一般作為連接到其它應(yīng)用程序的鏈接(也稱作URL復(fù)寫,URL rewriting)
在瀏覽器和服務(wù)器間來回發(fā)送所有狀態(tài)信息的效率是極低的,所以大多數(shù)現(xiàn)代服務(wù)器都將信息保留在服務(wù)器上,只在瀏覽器和服務(wù)器間傳遞標(biāo)識符,這就是會話跟蹤(session tracking),JSP隱藏了cookie會話跟蹤的所以細(xì)節(jié),并實現(xiàn)了對URL復(fù)寫的支持,此外,JSP規(guī)范允許使用安全套接字協(xié)議層(Secure Socket Layer,SSL)內(nèi)置的會話機(jī)制。在會話的生命周期中,保存在會話作用域中的信息可被同一瀏覽器的所有頁面所用。
在線購物(P179):
內(nèi)存使用策略:
1、只把那些真正需要被每個會話單獨(dú)擁有的對象放在會話作用域中
2、將會話的有效期設(shè)成比默認(rèn)值更短
3、提供一種顯示的結(jié)束會話的方法。一個好的示例就是注銷功能,或者是當(dāng)某件事務(wù)完成時,使會話失效。在servlet和其他自定義代碼中,可以使用HttpSession invalidate()方法。
posted @
2012-05-21 00:35 Jimi 閱讀(1857) |
評論 (1) |
編輯 收藏
JSP有三種類型的元素:指令元素(directive element)、行為元素(action element)、和腳本元素(script element)。
指令元素:
<%@ page...%> 定義了獨(dú)立于頁面的屬性,例如會話跟蹤、錯誤處理頁面、對緩存的要求等
<%@ include...> 在翻譯階段引入文件
<%@ taglib...> 聲明一個在頁面中使用的包含自定義行為的標(biāo)記庫
標(biāo)準(zhǔn)行為元素:
<jsp:usebean> 使一個JavaBeans在當(dāng)前頁面可用
<jsp:getProperty> 從JavaBeans中獲得某個屬性值,并將其添加到應(yīng)答中
<jsp:setProperty> 設(shè)置JavaBeans的屬性值
<jsp:include> 在請求處理階段引入來自一個servlet或頁面的應(yīng)答結(jié)果
<jsp:forward> 將對請求的處理轉(zhuǎn)交給一個servlet或JSP頁面
<jsp:param> 使用<jsp:forward> 或<jsp:include> 時,向這個請求添加參數(shù)
<jsp:plugin>
自定義行為元素和標(biāo)準(zhǔn)標(biāo)記庫:JSTL,JSP標(biāo)準(zhǔn)標(biāo)記庫(JSP Standard Tag Library),可以用擴(kuò)展API開發(fā)自定義行為
腳本元素:
<%...%> 小腳本,用于嵌入腳本代碼
<%=...%> 用于嵌入JAVA表達(dá)式
<%!...%> 聲明變量和方法
posted @
2012-05-20 03:47 Jimi 閱讀(280) |
評論 (0) |
編輯 收藏
http: HyperText Transport Protocol (超文本傳輸協(xié)議) 是一種無狀態(tài)協(xié)議,即服務(wù)器發(fā)送應(yīng)答后不會保留關(guān)于客戶端的任何信息
URI:Uniform Resource Identifier (統(tǒng)一資源標(biāo)示符)
URL:Uniform Resource Locator (統(tǒng)一資源定位器) 是URI的特殊化,標(biāo)準(zhǔn)端口號為80
Request:
請求頭信息
Accept | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
Accept-Encoding | gzip, deflate |
Accept-Language | zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 |
Connection | keep-alive |
Content-Length | 55 |
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Cookie | JSESSIONID=6E9A50496EFFEBDB7E0FA60DFE506B74 |
Host | localhost.:8080 |
Referer | http://localhost.:8080/SWS/login.jsp |
User-Agent | Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 |
X-Requested-With | XMLHttpRequest |
Accept:瀏覽器所能接受的語言和格式方面的信息
User-Agent:瀏覽器類型
Host:URL所對應(yīng)的主機(jī)名
請求參數(shù):兩種傳遞方式
1、通過查詢字符串的形式添加在URI后面,查詢字符串以“?”開始,由“&”符號分隔的經(jīng)過URL編碼的(URL-encoded)名稱/值對組成
2、作為消息主體的一部分發(fā)送
請求方法:GET和POST,GET用于從服務(wù)器上取得資源,而不引起服務(wù)器的任何其它行為,POST用于請求服務(wù)器執(zhí)行某個處理過程。兩者最明顯的區(qū)別之一是參數(shù)的傳遞方式,GET請求通常以查詢字符串的形式傳遞參數(shù),而POST通常是把參數(shù)作為消息主體的一部分來發(fā)送。
Response:
響應(yīng)頭信息
Content-Type text/html;charset=utf-8 -------應(yīng)答數(shù)據(jù)類型
DateSat, 19 May 2012 18:48:50 GMT
Server Apache-Coyote/1.1 --------服務(wù)器信息
Transfer-Encoding chunked
posted @
2012-05-20 03:14 Jimi 閱讀(608) |
評論 (0) |
編輯 收藏
啟動終端: Ctrl + Alt + T
切換正在運(yùn)行中的程序:Alt + Tab
切換桌面: Ctrl + Alt + 上/下/左/右
快速啟動:微標(biāo)鍵
彈出側(cè)邊欄:長按微標(biāo)鍵
快速啟動側(cè)邊欄程序:微標(biāo)鍵 + 對應(yīng)數(shù)字
進(jìn)入全屏終端:Ctrl + Alt + F1-F6
返回圖形界面:Ctrl + Alt + F7
移動當(dāng)前窗口到不同工作臺:Ctrl + Alt + Shift + → / ←
posted @
2012-05-05 00:09 Jimi 閱讀(316) |
評論 (0) |
編輯 收藏
F11 debug運(yùn)行
CTRL+F11 運(yùn)行
CTRL+F 當(dāng)前頁面搜索
CTRL+H 搜索文件
ALT+SHIFT+R 重命名
F2 重命名
F3 進(jìn)入方法
CTRL+ / 注釋
CTRL+Z 撤銷編輯
CTRL+D 刪除整行
CTRL+ALT+↓ 復(fù)制當(dāng)前行到下一行
posted @
2012-05-04 00:38 Jimi 閱讀(169) |
評論 (0) |
編輯 收藏
向同一表中插入多條記錄:
(sql server 2005)
INSERT INTO users ([name],[filename],[type],location2)
SELECT '日消耗','/pages/daycost','1','13.13.1' UNION ALL
SELECT '月消耗','/pages/monthcost','1','13.12.1'
(sql server 2008和MySQL)
INSERT INTO users ([name],[filename],[type],location2)
VALUES
('日消耗','/pages/daycost','1','13.13.1'
),
('日消耗','/pages/daycost','1','13.13.1'
)
PS: UNION ALL 是允許數(shù)據(jù)重復(fù)
條件查詢所有數(shù)據(jù)庫名稱:
(sql server 2005)
USE master
SELECT [name] FROM sys.databases WHERE [name] LIKE 'SWS%'
(MySQL)
show databases
修改數(shù)據(jù):
UPDATE users SET [name] = 'test' WHERE [name] ='admin'
查詢所有存儲過程:
select * from sys.objects where type = 'P';
查看存儲過程的語句:
exec sp_helptext 'createDaily1'
去重查詢:
SELECT DISTINCT 列名稱 FROM 表名稱
SELECT DISTINCT testtime
FROM testrec
日期格式轉(zhuǎn)換:
CONVERT(data_type(length),data_to_be_converted,style)
Style ID | Style 格式 |
---|
100 或者 0 | mon dd yyyy hh:miAM (或者 PM) |
101 | mm/dd/yy |
102 | yy.mm.dd |
103 | dd/mm/yy |
104 | dd.mm.yy |
105 | dd-mm-yy |
106 | dd mon yy |
107 | Mon dd, yy |
108 | hh:mm:ss |
109 或者 9 | mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 | mm-dd-yy |
111 | yy/mm/dd |
112 | yymmdd |
113 或者 13 | dd mon yyyy hh:mm:ss:mmm(24h) |
114 | hh:mi:ss:mmm(24h) |
120 或者 20 | yyyy-mm-dd hh:mi:ss(24h) |
121 或者 21 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 | yyyy-mm-ddThh:mm:ss.mmm(沒有空格) |
130 | dd mon yyyy hh:mi:ss:mmmAM |
131 | dd/mm/yy hh:mi:ss:mmmAM |
切割字符串:
SUBSTRING ( expression , start , length )
start是從1開始,而不是0
SELECT DISTINCT testtime
FROM testrec
WHERE (SUBSTRING(CONVERT(VARCHAR(11), testtime, 120), 1, 7) = '2012-05')
posted @
2012-04-20 11:04 Jimi 閱讀(304) |
評論 (0) |
編輯 收藏
摘要: 這兩天項目上要求做一個導(dǎo)出Excel的功能,項目前臺用的ExtJS,后臺用的JAVA,網(wǎng)上查了查,大概有3種做法。1.apache公司提供的POI2.韓國公司的JXL3.據(jù)說是官方提供的JS調(diào)用方法前兩種都要引入外包,懶得找包了,采用了第三種,所需引入JS代碼如下:/Files/rockblue1988/export.txt Code highlighting produced by A...
閱讀全文
posted @
2012-02-29 11:21 Jimi 閱讀(19212) |
評論 (28) |
編輯 收藏
一.使用SQL Server2005自動備份數(shù)據(jù)庫的步驟
1.啟動Sql Server Agent 服務(wù)
2.創(chuàng)建作業(yè)
3.添加常規(guī)
4.添加步驟
5.添加計劃,設(shè)置頻率,時間等
二.每個步驟的詳細(xì)操作
1.啟動Sql Server Agent 服務(wù) (可在運(yùn)行中打開:services.msc)
打開【配置工具】中的【SQL Server Configuration Manager】窗口,點擊【SQL Server配置管理器(本地)】--【SQL Server2005 服務(wù)】,右面窗口顯示的是當(dāng)前所有服務(wù)的運(yùn)行狀態(tài),右鍵點擊【SQL Server Agent】選擇啟動菜單。
SQL Server Agent簡介:http://zhidao.baidu.com/question/41264786.html
2.創(chuàng)建作業(yè)
打開【Management Studio】,展開SQL Server代理,右鍵點擊【作業(yè)】選擇【新建作業(yè)】菜單。【選擇頁】中選擇【常規(guī)】
3.添加常規(guī)
在2中的【選擇頁】中選擇【常規(guī)】選項,輸入作業(yè)名稱
4.添加步驟
在2中的【選擇頁】中選擇【步驟】,點擊窗口下方的【新建】按鈕,輸入步驟名稱、選擇操作數(shù)據(jù)庫。在命令輸入框中輸入作業(yè)執(zhí)行的T-SQL語句,這里備份的語句如下:
****************************************************************
DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'D:\自動備份\' + @strPath + '.bak'
BACKUP DATABASE [test] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
*****************************************************************
有關(guān)WITH 后面的參數(shù)值的含義,請參考:
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx
其中DATABASE [test]中的test是要備份的數(shù)據(jù)庫,@strPath備份的完成路徑
還原數(shù)據(jù)庫:restore database [數(shù)據(jù)庫名] from disk=[磁盤路徑]
WITH
NOINIT:不重寫備份集的參數(shù)
convert:函數(shù)簡介:按照地區(qū)代碼格式化時間的輸入格式
convert(NVARCHAR(19),getdate(),120)
例如:SELECT CONVERT(nvarchar(19), getdate(), 120),
輸出為:2008-11-29 15:45:59
* REPLACE ( 'string_expression_r1' , 'string_expression_r2' , 'string_expression_r3' )
用第三個表達(dá)式替換第一個字符串表達(dá)式中出現(xiàn)的所有第二個指定字符串表達(dá)式的匹配項。
替換':' 是因為路徑中有':'會報錯
5.添加計劃
在2中的【選擇頁】中選擇【計劃】選項,點擊【新建】按鈕。
輸入名稱、執(zhí)行頻率、每天頻率。例如:要每天的凌晨自動備份數(shù)據(jù)庫,執(zhí)行頻率選擇每天、每天頻率選擇‘執(zhí)行一次’執(zhí)行時間:0:00:00,持續(xù)時間:選擇開始時間,不選結(jié)束時間。這樣SQL Server會在每天凌晨自動執(zhí)行這個作業(yè),將數(shù)據(jù)庫備份到D:\自動備份\的目錄下,備份的文件名為:
2012-02-09 00.00.00.bak
實際操作有效。轉(zhuǎn)自網(wǎng)絡(luò)。
posted @
2012-02-10 16:36 Jimi 閱讀(2386) |
評論 (0) |
編輯 收藏
Tomcat有時候會出點問題,又無法看到錯誤信息,這時候可以打開cmd命令窗口,進(jìn)入Tomcat的bin目錄,如:
D:\Program Files\apache-tomcat-6.0.32\bin
然后輸入statup, 就會顯示出如圖界面。
常用的cmd命令:
ping : 測試網(wǎng)絡(luò)連通 ping 192.168.1.111
mstsc: 遠(yuǎn)程連接
telnet localhost 8080:測試端口
ipconfig: 查看本機(jī)IP設(shè)置
netstat -ano:查看線程
posted @
2012-01-11 11:00 Jimi 閱讀(2006) |
評論 (0) |
編輯 收藏
1、下載敏捷客戶端InstantClient(40M左右,選擇適合自己的下載,我的是
instantclient-basic-win32-11.2.0.1.0.zip ):
http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
2、下載安裝PLSQL(16M左右):
http://www.onlinedown.net/soft/4902.htm 3、解壓
instantclient-basic-win32-11.2.0.1.0.zip 到新建文件夾,如 D:/oracleclient/instantclient_11_2
用文本文檔創(chuàng)建tnsnames.ora ,內(nèi)容大致如下:
# TNSNAMES.ORA Network Configuration File: /opt/oracle/product/9204/network/admin/tnsnames.ora
# Generated by Oracle configuration tools. //以上為注釋內(nèi)容,因為我的tnsnames.ora是直接從服務(wù)器上download的
HSSL = //數(shù)據(jù)庫名稱
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 218.108.242.30)(PORT = 1521)) //IP和端口
)
(CONNECT_DATA =
(SERVICE_NAME = hssl) //數(shù)據(jù)庫名稱
)
)
用文本文檔創(chuàng)建sqlnet.ora ,內(nèi)容如下:
NAMES.DIRECTORY_PATH= (TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
到我的電腦、屬性、高級、環(huán)境變量中添加一個環(huán)境變量,變量名為TNS_ADMIN,值為tnsnames.ora文件所在路徑,
例如:D:/oracleclient/instantclient_11_2
4、安裝完畢PLSQL后,啟動,cancel,依次點擊T
ools->Preferences->Connection:
Oracle Home=D:/oracleclient/instantclient_11_2OCI library=D:/oracleclient/instantclient_11_2/oci.dll
重新啟動PLSQL即可進(jìn)入數(shù)據(jù)庫,初次登陸可能存在中文亂碼的問題,解決方法如下:
到我的電腦、屬性、高級、環(huán)境變量中添加一個環(huán)境變量:
變量名:NLS_LANG
變量值:AMERICAN_AMERICA.ZHS16GBK
重新連接,即可正常顯示中文。
如果想轉(zhuǎn)換為UTF8字符集,可以賦予“NLS_LANG”為 “AMERICAN_AMERICA.UTF8,其他編碼同上
posted @
2011-09-06 15:58 Jimi 閱讀(4500) |
評論 (0) |
編輯 收藏
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="刪除該目錄下面的.svn文件"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
新建一文本文檔任意命.txt文件,復(fù)制以上代碼,保存后修改后綴名為.reg(為注冊表文件),
雙擊執(zhí)行,即導(dǎo)入到注冊表。
這時候你右鍵單擊一個文件夾,會發(fā)現(xiàn)菜單中多出來"刪除該目錄下面的.svn文件",執(zhí)行該命令即可。
(以上代碼測試通過,網(wǎng)上有的代碼不能用是因為”/“與”\“的問題。)
posted @
2011-09-05 11:20 Jimi 閱讀(254) |
評論 (0) |
編輯 收藏
啟動tomcat:進(jìn)入tomcat下的bin目錄,輸入 ./startup.sh 啟動tomcat;
停止tomcat:bin目錄下,輸入 ./shutdown.sh
顯示所有進(jìn)程:ps -fe
顯示tomcat進(jìn)程:
ps -ef |grep tomcat
顯示如下:
[root@localhost ~]# ps -ef |grep tomcat
root 7277 1 2 21:29 pts/1 00:01:17 /usr/java/jdk1.5.0_06/bin/java -Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/java/tomcat/apache-tomcat-5.5.20/conf/logging.properties -Djava.endorsed.dirs=/usr/java/tomcat/apache-tomcat-5.5.20/common/endorsed -classpath :/usr/java/tomcat/apache-tomcat-5.5.20/bin/bootstrap.jar:/usr/java/tomcat/apache-tomcat-5.5.20/bin/commons-logging-api.jar -Dcatalina.base=/usr/java/tomcat/apache-tomcat-5.5.20 -Dcatalina.home=/usr/java/tomcat/apache-tomcat-5.5.20 -Djava.io.tmpdir=/usr/java/tomcat/apache-tomcat-5.5.20/temp org.apache.catalina.startup.Bootstrap start
root 7740 7705 0 22:20 pts/2 00:00:00 grep tomcat
root 31105 1 0 Aug10 ? 00:00:10 /usr/java/jdk1.5.0_06/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/java/tomcat/apache-tomcat-5.5.20-test/conf/logging.properties -Djava.endorsed.dirs=/usr/java/tomcat/apache-tomcat-5.5.20-test/common/endorsed -classpath :/usr/java/tomcat/apache-tomcat-5.5.20-test/bin/bootstrap.jar:/usr/java/tomcat/apache-tomcat-5.5.20-test/bin/commons-logging-api.jar -Dcatalina.base=/usr/java/tomcat/apache-tomcat-5.5.20-test -Dcatalina.home=/usr/java/tomcat/apache-tomcat-5.5.20-test -Djava.io.tmpdir=/usr/java/tomcat/apache-tomcat-5.5.20-test/temp org.apache.catalina.startup.Bootstrap start
7277和7740即為tomcat進(jìn)程。
結(jié)束進(jìn)程:kill -9 7277或7740
就可以結(jié)束對應(yīng)的tomcat 進(jìn)程。(有時候tomcat會抽了。。。在一個項目中修改完代碼,重啟之后發(fā)現(xiàn)進(jìn)不了網(wǎng)站,其實就是進(jìn)程抽了,結(jié)束相應(yīng)進(jìn)程重啟解決)
posted @
2011-08-14 22:25 Jimi 閱讀(1130) |
評論 (0) |
編輯 收藏
一、分時段顯示問候:
<script type="text/javascript">
var d=new Date();
var time=d.getHours();
if (time<12)
{
document.write(" 尊敬的XXX用戶:早上好!");
}
else if (time>=12&&time<=19)
{
document.write(" 尊敬的XXX用戶:下午好!");
}
else if (time>19&&time<=24)
{
document.write(" 尊敬的XXX用戶:晚上好!");
}
</script>
二、html顯示空格:
<style type="text/css">
#divleft{white-space: pre;}
</style>
字體顏色:
style="color:white"
同一行中左右對齊:
<div id-"divleft" style= "display:inline;float:left">
</div>
三、返回上一頁:
<a href="#" target=main onclick ="javascript:history.go(-1);">返回</a>
四、層疊樣式優(yōu)先級:
- 瀏覽器缺省設(shè)置
- 外部樣式表
- 內(nèi)部樣式表(位于 <head> 標(biāo)簽內(nèi)部)
- 內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)
內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)擁有最高的優(yōu)先權(quán),這意味著它將優(yōu)先于以下的樣式聲明:<head> 標(biāo)簽中的樣式聲明,外部樣式表中的樣式聲明,或者瀏覽器中的樣式聲明(缺省值)。
五、JS 回車提交表單:
<script type='text/javascript'>
function submitForm(frm,event){
var event=window.event?window.event:event; if(event.keyCode==13){
frm.submit();
}
}
</script><form method='post' action='test.html'>
用戶名:<input type='text' name="username" onkeydown='submitForm(this.form,event)'><br/>
密 碼:<input type='password' onkeydown='submitForm(this.form,event)'><br/>
<input type='reset' value='重置'>
<input type='button' onclick='this.form.submit()' value='提交'>
</form>
六、表格:td的colspan屬性,以及disable
<table border="1">
<tr>
<th>Month</th> <th>Savings</th>
</tr>
<tr>
<td colspan="2"
>January</td>
</tr>
<tr>
<td colspan="2"
>February</td>
</tr> </table>
posted @
2011-08-11 00:24 Jimi 閱讀(160) |
評論 (0) |
編輯 收藏