2014年1月6日 星期一

Eclipse掛載Tomcat的小設定

1. 
錯誤訊息如下:
Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.

紅色部份因人而異,而 45 秒是預設的設定,
發生這個錯誤時大概就是 project 還什麼的 load 太久,
以致於 Server 啟動花了太久的時間 Timeout 了。

解決方法是什麼呢?
如果確定 project 和 server 等設定都正確,
只是因為 load 太久而發生錯誤的話,
最簡單的方法當然就是要延長 timeout 的時間囉。


如上面圖示:
請在 Eclipse 下方 console 那一排的 tag 中找到 Servers,
對你的 Server 連點兩下,這時會出現上方的視窗,
在右上角處點開 timeout 的設定,改成你覺得 ok 的時間,
接著儲存設定再去重開 Server 即可囉!
若還是開不起來,就繼續把時間拉長吧~

轉自:http://www.ewdna.com/2011/12/tomcat-server-in-eclipse-unable-to.html

2.
java.lang.OutOfMemoryError: PermGen space
ry to raise perm space, add following parameters to vm start-up
-XX:PermSize=256m -XX:MaxPermSize=256m
also add -XX:MaxPermSize=256m to Tomcat in Eclipse: Server > Open Launch Configuration > Arguments
and take a look here:




2013年10月21日 星期一

Eclipse 中文字型太小

某次更新 eclipse 後,中文字型就變得很小很小

原本的 Courier New  被改成 Consolas ,直接改字體大小又會讓程式碼

的字與間距很大

改回原本的字體就要先去 控制台 > 字型, 找到 Courier New > 點

 顯示

再到 Eclipse 的

視窗(Windows) > 喜好設定(preference) > 一般事項(General) > 外觀

(Appearance) >

顏色與字型(Colors and Fonts) > 基本(Basic) > 文字字型(Text Font)


這樣就回到原本(對我來說)比較好看的樣子了

2013年8月22日 星期四

Tomcat簡單配置

1、apache-tomcat-7.0.37\bin\setclasspath.bat

打開這個文件,在rem Make sure prerequisite environment variables are set的上面一行加下面代碼:

set JAVA_HOME=E:\Program Files\Java\jdk1.6.0_14
  set JRE_HOME=E:\Program Files\Java\jre6

2、apache-tomcat-7.0.0\bin\tomcat-users.xml

打開此文件,取消註釋,修改如下設置:

  <tomcat-users>
      <role rolename="tomcat"/>
      <role rolename="manager-gui"/>
      <role rolename="admin"/>
  <user username="admin" password="admin" roles="admin,manager-gui"/>
  </tomcat-users>

給Tomcat 的管理帳戶,設置的用戶名與驗證碼。

  3、apache-tomcat-7.0.37\bin\server.xml

打開此文件,在大概67行處,修改Tomcat 運行所要佔用的端口號:

  <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000" redirectPort="8443" disableUploadTimeout="true"/>

  Tomcat 運行時所要使用的端口號。

配置完這個Tomcat就可以啟動了,雙擊startup.bat啟動Tomcat。

下面是Tomcat JAVA_OPTS 的設置,是用來設置JVM相關運行參數的變量。

  2、 apache-tomcat-7.0.37\bin\catalina.bat

打開這個文件,在echo Using CATALINA_BASE: "%CATALINA_BASE%"的上面一行加下面代碼:

set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m -Xverify:none -da

  echo Using JAVA_OPTS: %JAVA_OPTS%

注意:很多說要加上參數-server,即set JAVA_OPTS=%JAVA_OPTS% -server -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m -Xverify:none -da,但是我加上這個參數後,雙擊startup.bat,命令行窗口一閃即逝。

JAVA_OPTS設置

JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"

-server:一定要作為第一個參數,在多個CPU時性能佳
-Xms:初始Heap大小,使用的最小內存,cpu性能高時此值應設的大一些
-Xmx:java heap最大值,使用的最大內存
上面兩個值是分配JVM的最小和最大內存,取決於硬件物理內存的大小,建議均設為物理內存的一半。
-XX:PermSize:設定內存的永久保存區域
-XX:MaxPermSize:設定最大內存的永久保存區域
-XX:MaxNewSize:
-Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k.
+XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。
-Xss:每個線程的Stack大小
-verbose:gc 現實垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日誌文件
-Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一
-XX:+UseParNewGC :縮短minor收集的時間
-XX:+UseConcMarkSweepGC :縮短major收集的時間
提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。

PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說為什麼會內存益出:這一部分用於存放Class和Meta的信息,Class在被Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 2、在tomcat中redeploy時出現outofmemory的錯誤. 可以有以下幾個方面的原因:
1,使用了proxool,因為proxool內部包含了一個老版本的cglib.
2, log4j,最好不用,只用common-logging
3, 老版本的cglib,快點更新到最新版。
4,更新到最新的hibernate3.2 3、

這里以tomcat環境為例,其它WEB服務器如jboss,weblogic等是同一個道理。
一、java.lang.OutOfMemoryError: PermGen space PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域, 這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中, 它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤, 這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。
解決方法: 手動設置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以達到減少jar 文檔重複佔用內存的目的。
二、java.lang.OutOfMemoryError: Java heap space Heap size 設置JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。 Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將拋出此異常信息。提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
解決方法:手動設置Heap size 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
三、實例,以下給出1G內存環境下java jvm 的參數設置參考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt. headless=true "

ava雖然是自動回收內存,但是應用程序,尤其服務器程序最好根據業務情況指明內存分配限制。否則可能導致應用程序宕掉。


舉例說明含義:
-Xms128m
表示JVM Heap(堆內存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆內存)最大允許的尺寸256MB,按需分配。

說明:如果-Xmx不指定或者指定偏小,應用可能會導致java.lang.OutOfMemory錯誤,此錯誤來自JVM不是Throwable的,無法用try...catch捕捉。

PermSize和MaxPermSize指明虛擬機為java永久生成對象(Permanate generation)如,class對象、方法對像這些可反射(reflective)對象分配內存限制,這些內存不包括在Heap(堆內存)區之中。

-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允許分配尺寸,按需分配
過小會導致:java.lang.OutOfMemoryError: PermGen space

MaxPermSize缺省值和-server -client選項相關。
-server選項下默認MaxPermSize為64m
-client選項下默認MaxPermSize為32m

經驗:
1、慎用最小限制選項Xms,PermSize已節約系統資源。

2013年7月9日 星期二

什麼是桌遊

這是在準備中港青少契的專題時的大綱稿

名詞定義
桌上遊戲,原文Table-Top Game,
其實泛指不插電,不需要大幅度動作的遊戲
相對應的就是電腦遊戲或電視遊樂器(需插電,不需大幅度動作)
或是運動、舞蹈(不需插電,需大幅度動作)
或其他「遊戲」

只是在現在中文社會裡,桌上遊戲基本上就是指「圖版遊戲」了

桌上遊戲的分類

圖版遊戲,各種棋類也包含
卡片遊戲,撲克牌、UNO、Bang!等等,也包含各種「集換式卡片遊戲」(魔法風雲會、遊戲王)
骰子遊戲,最常見的應該就是香腸攤的「十八豆」或是賭場裡的「Craps」了
戰爭遊戲,縮尺軍事遊戲,show圖
角色扮演遊戲,show規則書

基本上就是這樣分類

圖版遊戲(Board Game)應該是你們比較感興趣的東西吧
今天就比較主要介紹這方面

圖版遊戲
分類:跟據遊戲形式分類
德式遊戲
     競爭代替戰爭、獎勵代替懲罰;追求溝通合作和資源規劃。老少咸宜、品質精良!
美式遊戲
     這是一個關於商業競爭、宇宙拓荒、屠龍的遊戲...重點是你出局的時候,我贏了!
殺手遊戲
     讓我猜猜,你就是臥底,對不對?
兵棋遊戲
     就喜歡紙上談兵。
大富翁遊戲
     這是什麼遊戲?你知道的!

分類:根據表達方式分類

象徵遊戲
     用你能理解的具體形象來幫你記憶複雜的遊戲規則。
主題遊戲
     加點機制和符號、圖像,用好的敘述方式讓玩家感受到遊戲主題。
模擬遊戲
     遊戲規則的目的是為了重現或創造一個栩栩如生的世界!
唯律遊戲(抽象遊戲)
     遊戲就是奠基於簡單的符號和規則。



參考網站
藝棋風桌遊百科
維基百科

2013年7月2日 星期二

如何把依賴的jar檔包成一個jar

1、问题背景

我们有时要开发一个Java Application,就是main来直接运行的那种,虽然有好多工具可以帮助我们打为jar。
但会有以下两个问题:
第一种是需要lib目录依赖一起来运行。(需要依赖文件,一个jar不可以运行)
第二种就是是把其它依赖的jar解开和你的类放在一个jar中。(框架的限制,包依赖之间的冲突,解压替换内容的过程产生类与资源的混乱)
第一种的问题显而易见需要copy太多东西(lib/*.jar)太麻烦。
第二种虽然可以做到一个jar运行的效果,但因为是解开再合再一起,尤其是jar中类有冲突时将和你在ide中不解开执行的效果不一样。(如eclipse可以运行,打包出来就不可以运行)

2、用One-JAR来解决

这个工具很好的解决了这一点,它相当于做一了一个启动壳。可以不改变你的jar与依赖的jar包,也不用解开。
简单理解就是jar中有jar。运行可以达到ide或配类路径运行一样的效果。
One-JAR有maven下的插件onejar-maven-plugin,所以对于maven的jar工程来说打包很方便。
pom.xml只需要加入以下plugin内容
 <plugin>  
   <groupId>org.apache.maven.plugins</groupId>  
   <artifactId>maven-jar-plugin</artifactId>  
   <configuration>  
     <archive>  
       <manifest>  
         <mainClass>org.noahx.onejartest.Launcher</mainClass>  
       </manifest>  
     </archive>  
   </configuration>  
 </plugin>  
   
 <plugin>  
   <groupId>com.jolira</groupId>  
   <artifactId>onejar-maven-plugin</artifactId>  
   <version>1.4.4</version>  
   <executions>  
     <execution>  
       <configuration>  
         <attachToBuild>true</attachToBuild>  
         <classifier>onejar</classifier>  
       </configuration>  
       <goals>  
         <goal>one-jar</goal>  
       </goals>  
     </execution>  
   </executions>  
 </plugin>  

maven-jar-plugin大家比较熟悉,主要的加启动类。
onejar-maven-plugin是我们的主角。有了它,你再运行mvn package时,就会多生成一个xxxxxx.one-jar.jar文件。
这个文件直接可以java -jar xxxxxx.one-jar.jar来单独运行。
而且就这一个jar。不需要其它依赖。copy起来很方便。
轉自http://my.oschina.net/noahxiao/blog/78241

2013年6月25日 星期二

擁有的桌遊清單


三國殺-基本版
三國殺-風
三國殺-林
三國殺-火
三國殺-山
三國殺-軍爭篇
三國殺-一將成名
三國殺-黃巾(非官方)
Bang!!!
Bang-Dodge City
Bang-A Fistful of Cards
Bang-High Moon
富饒之城
矮人礦坑
UNO
動物大老二
大富翁-紙牌版
小白世紀
Ca$h 'n Gun$
Ca$h 'n Gun$: Yakuzas
Dixit
UNO層層疊
Ubongo
LEGO Creationary
卡卡頌
卡卡頌-河流
卡卡頌-伯爵
卡卡頌-高塔
卡卡頌-國王與強盜
卡卡頌-旅店與大教堂
卡卡頌-公主與火龍
卡卡頌-商人與建築師
卡卡頌-幻影
卡坦島
卡坦島-5&6人
卡坦島-海洋
卡坦島-海洋5&6人
山中小屋
格格不入
Zombies
Taluva
Mr. Jack 口袋版
暗影獵人
Strasbourg
農家樂
凱呂斯
冰與火之歌二版