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
農家樂
凱呂斯
冰與火之歌二版