<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    CountDownLatch : 一個線程(或者多個), 等待另外N個線程完成某個事情之后才能執行。? ?
    CyclicBarrier? : N個線程相互等待,任何一個線程完成之前,所有的線程都必須等待。
    這樣應該就清楚一點了,對于CountDownLatch來說,重點是那個“一個線程”, 是它在等待, 而另外那N的線程在把“某個事情”做完之后可以繼續等待,可以終止。而對于CyclicBarrier來說,重點是那N個線程,他們之間任何一個沒有完成,所有的線程都必須等待。

    CyclicBarrier 在釋放等待線程后可以重用,所以稱它為循環的 barrier。它 還支持一個可選的 Runnable 命令,在一組線程中的最后一個線程到達之后(但在釋放所有線程之前),該命令只在每個屏障點運行一次。若在繼續所有參與線程之前更新共享狀態,此屏障操作很有用。



    public class Test {
    ??? public static void main(String[] args) {
    ??????? new Test().test1();
    ??? }
    ?? ?
    ??? public void test1() {
    ??????? CyclicBarrier cyclicBarrier = new CyclicBarrier(4, new Runnable() {
    ??????????? @Override
    ??????????? public void run() {
    ??????????????? System.out.println("所有玩家進入第二關!");
    ??????????? }
    ??????? });

    ??????? for (int i = 0; i < 4; i++) {
    ??????????? new Thread(new Player(i, cyclicBarrier)).start();
    ??????? }
    ??? }

    ??? class Player implements Runnable {
    ??????? private CyclicBarrier cyclicBarrier;
    ??????? private int id;

    ??????? public Player(int id, CyclicBarrier cyclicBarrier) {
    ??????????? this.cyclicBarrier = cyclicBarrier;
    ??????????? this.id = id;
    ??????? }

    ??????? @Override
    ??????? public void run() {
    ??????????? try {
    ??????????????? System.out.println("玩家" + id + "正在玩第一關...");
    ??????????????? cyclicBarrier.await();
    ??????????????? System.out.println("玩家" + id + "進入第二關...");
    ??????????? } catch (InterruptedException e) {
    ??????????????? e.printStackTrace();
    ??????????? } catch (BrokenBarrierException e) {
    ??????????????? e.printStackTrace();
    ??????????? }
    ??????? }
    ??? }
    }

    posted @ 2015-03-02 06:28 leekiang 閱讀(482) | 評論 (0)編輯 收藏

    Runtime run = Runtime.getRuntime();
    String str[] = { "/bin/sh", "-c", "echo '1' >> test.log" };
    try {
    ??? run.exec(str);
    } catch (IOException e) {
    }


    使用Jsch執行Shell腳本 [http://blog.csdn.net/basecn/article/details/6080741]
    純Java通過SSH執行Linux命令的方法及代碼 [http://ilexes.blog.51cto.com/705330/531352]
    Java調用 Shell的ftp命令 [http://blog.sina.com.cn/s/blog_59ca2c2a0100e9vn.html]

    posted @ 2015-03-01 00:29 leekiang 閱讀(319) | 評論 (0)編輯 收藏


    1. java.lang.OutOfMemoryError: GC overhead limit exceeded原因
    ?? <http://blog.csdn.net/taijianyu/article/details/6606792>
    ?? <http://www.sunnybtoc.com/page/M0/S746/746195.html>
    ? ?
    2. 用jhat分析·jmap -dump:format=b,file=mem.dat PID·命令導出來的文件時報錯
    ?? java.io.IOException: Unrecognized magic number
    ?? <https://forums.oracle.com/forums/thread.jspa?threadID=1542284> 沒找到原因
    ? ?
    3. 命令
    ?? 1. jmap
    ?jmap -dump:live,format=b,file=heap.dmp PID 把本機的java內存映像導出到heap.dmp中
    ?jmap pid #打印內存使用的摘要信息
    ????? jmap –heap pid #java heap信息
    ????? jmap -histo:live pid #統計對象count ,live表示在使用
    ????? jmap -histo pid >mem.txt #打印比較簡單的各個有多少個對象占了多少內存的信息,一般重定向的文件
    ????? jmap -dump:format=b,file=mem.dat PID #將內存使用的詳細情況輸出到mem.dat 文件
    ?? 2. jhat 用來分析jmap導出的文件
    ????? 用jhat命令可以參看 jhat -port 7000 mem.dat
    ????? 然后使用:http://127.0.0.1:7000/ 查看類相關信息
    ?? 3. jstat
    ????? jstat -gcutil? PID
    ????? 例子:

    ??? S0????? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
    ??? 11.63?? 0.00?? 56.46? 66.92? 98.49 162??? 0.248??? 6????? 0.331??? 0.579

    ??? S0? — Heap上的 Survivor space 0 區已使用空間的百分比
    ??? S1? — Heap上的 Survivor space 1 區已使用空間的百分比
    ??? E?? — Heap上的 Eden space 區已使用空間的百分比
    ??? O?? — Heap上的 Old space 區已使用空間的百分比
    ??? P?? — Perm space 區已使用空間的百分比
    ??? YGC — 從應用程序啟動到采樣時發生 Young GC 的次數
    ??? YGCT– 從應用程序啟動到采樣時 Young GC 所用的時間(單位秒)
    ??? FGC — 從應用程序啟動到采樣時發生 Full GC 的次數
    ??? FGCT– 從應用程序啟動到采樣時 Full GC 所用的時間(單位秒)
    ??? GCT — 從應用程序啟動到采樣時用于垃圾回收的總時間(單位秒)


    ###參考
    1. [JMAP、jstat命令詳解](http://bbs.chinaunix.net/thread-3644198-1-1.html)
    2. [J2SE6中使用jhat來分析內存堆](http://hi.baidu.com/tister/item/9444a3125796cf433a176eb9)


    ###jvm的內存回收過程是這樣的
    對象在Eden Space創建,當Eden Space滿了的時候,gc就把所有在Eden Space中的對象掃描一次,
    把所有有效的對象復制到第一個Survivor Space,同時把無效的對象所占用的空間釋放。
    當Eden Space再次變滿了的時候,就啟動移動程序把Eden Space中有效的對象復制到第二個Survivor Space,
    同時,也將第一個Survivor Space中的有效對象復制到第二個Survivor Space。如果填充到第二個Survivor Space
    中的有效對象被第一個Survivor Space或Eden Space中的對象引用,那么這些對象就是長期存在的,
    此時這些對象將被復制到Permanent Generation。

    posted @ 2015-02-17 06:51 leekiang 閱讀(789) | 評論 (0)編輯 收藏

    JavaMelody 能夠在QA和實際運行生產環境監測Java或Java EE應用程序服務器。并以圖表的形式顯示:Java內存和Java CPU使用情況,用戶Session數量,JDBC連接數,和http請求、sql請求、jsp頁面與業務接口方法(EJB3、Spring、Guice)的執行數量,平均執行時間,錯誤百分比等。圖表可以按天,周,月,年或自定義時間段查看。

    jwebap 監控org.apache.commons.dbcp.BasicDataSource時不知效果如何
    JAMon

    hyperic hq
    probe?? http://www.lambdaprobe.org/downloads/1.7/probe.1.7b.zip

    項目自動化之道—如何建構、部署、監控JAVA應用.pdf


    http://chain.blog.163.com/blog/static/140848523201171623521235/? java使用java.lang.management監視和管理Java虛擬機

    String processName = java.lang.management.ManagementFactory
    .getRuntimeMXBean().getName();
    System.out.println(processName.split("@")[0]);//進程ID

    http://chain.blog.163.com/blog/static/1408485232011716111013282/ java通過調用命令獲取linux CPU、內存、磁盤信息

    posted @ 2015-02-17 06:35 leekiang 閱讀(516) | 評論 (0)編輯 收藏

    如果報Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll的錯誤,可把jdk下的jre\bin\server下的server文件夾復制到C:\Program Files\Java\jre6\bin目錄即可解決。 根本原因可看[JVM的版本問題](http://www.cnblogs.com/newskysoft/archive/2010/04/23/1718720.html)

    posted @ 2013-02-17 18:19 leekiang 閱讀(2437) | 評論 (0)編輯 收藏

    在notepad++里查看二進制有三種辦法:“插件”菜單里有個Converter,TextFX插件也有Convert功能,甚至還有一個在新版本好像已經被廢棄的Hex Editor插件,但這些都不好用。
    [HxD](
    http://mh-nexus.de/en/hxd/)是一個免費的二進制編輯軟件,但中文支持不好。
    MadEdit是一款跨平臺的編輯器,用其進行二進制編輯的體驗相當好,不管是GBK還是UTF-8的中文都能正常顯示,選中某個中文其對應的字節會高亮顯示。不知道在mac下效果如何。


    posted @ 2013-01-05 17:18 leekiang 閱讀(1568) | 評論 (0)編輯 收藏

    最近Web服務訪問量過大,由于服務器配置比較差,數量也較少,導致服務響應過慢。為了優化服務和提高響應,下面總結出幾條查詢Resin問題的方法。

    1、查看服務器網絡狀態TIME_WAIT的數量。

    #netstat -antp|grep -i time_wait|wc -l查看TIME_WAIT數量,如果數量過多,并且Resin前端還有Nginx或者Apache,那么請把socket-timeout、keepalive-max和把keepalive-timeout調小

    ????? <socket-timeout>30s</socket-timeout>
    ????? <keepalive-max>512</keepalive-max>
    ????? <keepalive-timeout>60s</keepalive-timeout>

    2、查看JVM中對象占用內存情況

    jmap 能查看jvm內存中,對象占用內存的情況,還提供非常方便的命令將jvm的內存信息導出的文件。

    #jmap -dump:format=b,file=heap.bin <pid>?

    命令jhat 能夠解析 java內存堆的文件,生成相關信息,并啟動webServer提供查詢。 也就說,我們可以通過瀏覽器來看這些內存信息。jhat還提供了一個類sql的查詢語言---OQL來給我們使用。

    #jhat -J-Xmx512m heap.bin????

    就可以將我們剛剛使用jmap導出的內存信息交給jhat解析了。默認的情況下,它會監聽7000端口。我在本機的地址就是,http://localhost:7000/。
    訪問http://localhost:7000/histo/,大致可以看到一下的畫面,這里列出對象,對象實例數量、總占用內存大小。點擊進去之后可以看到“誰引用了這個對象,這個對象又引用了哪個”這些信息。不過因為展示的信息非常多,并沒有想象中那樣清晰可見。

    3、dump獲取java stack和native stack信息

    消息隊列會突然堵塞,查看消費者日志,發現處理延時明顯延長,而此時網絡無丟包。最后多方排查,是java消費者運行出現死鎖。
    這種問題可以通過jstack來dump獲取java stack和native stack信息查明問題。

    #jstatck <pid>


    posted @ 2012-07-13 15:48 leekiang 閱讀(985) | 評論 (0)編輯 收藏

    slideViewer:http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html
    slideViewerPro:Prohttp://www.gcmingati.net/wordpress/wp-content/lab/jquery/svwt/index.html

    slideViewerPro使用配置說明 http://www.oschina.net/p/slideviewerpro


    Can I make the Jquery slideViewer autoplay?
    <scripttype="text/javascript">
    var theLinks;
    var nCount =0;
    var theTimerID;

    function init(){
    ? ? $
    ("div#mygalone").slideView();
    ? ? theLinks
    = jQuery('#stripTransmitter0 a');

    ? ? ? ?
    //for kill interval purposes
    ? ? theTimerID
    = setInterval("autoSlide()",5000);
    }
    function autoSlide(){
    ? ? jQuery
    .each(theLinks,function(i){
    ? ? ? ?
    if(jQuery(this).hasClass('current')){
    ? ? ? ? ? ? jQuery
    (theLinks[((i+1< theLinks.length)?(i+1):0)]).trigger("click");
    ? ? ? ? ? ?
    returnfalse;
    ? ? ? ?
    }
    ? ?
    });
    }

    $
    (window).bind("load", init );
    </script>

    The way I see it you basically have 3 options here:

    (1) - Use slideViewPro, but disable thumbnails using the thumbsVis:false option as shown below

    $("div#noui").slideViewerPro({
    ? ? galBorderWidth
    :0,
    ? ? autoslide
    :true, ?
    ? ? thumbsVis
    :false,
    ? ? shuffle
    :true
    ?
    });

    (2) - Switch to using the jQuery cycle plug-in instead

    (3) - Edit the source code of original slideViewer and add your own autoslide implementation by using timers and firing the click event on the navigation.



    posted @ 2012-03-11 03:00 leekiang 閱讀(992) | 評論 (0)編輯 收藏

    轉自 一個BUG的快速解決方法.希望能給大家的一些啟示
    朋友打來電話,他們公司新裝了TOMCAT5,然后在編譯JSP時,被INCLUDE的JSP都出現了問題.就是編譯后被INCLUDE的地方多了兩個"??"而其它正常,而如果手工把被INCLUDE的內容COPY上去測沒有問題.
    他們的工程師都不知道是什么問題,因為周一要發布出去,所以非常著急.

    我不知道大家聽到這種情況會如何,我知道大多數人比我聰明,你肯定想到了,所以你沒有必要再看了.我下面的內容只是對沒有想到的人而言.

    其實他電話還沒打完 ,我就知道問題99%是他的jsp在編輯的時候是存為UTF-8而不是ANSI格式,否則沒有道理出現這種問題,事實正是如此,我讓他用UE打開看看果然前面多了幾個UTF字符.

    重要的是TOMCAT這種容器竟然有這樣的BUG,不能正確讀取UTF-8格式的文件,你總不能強求用戶編輯JSP文件時一定要存為什么格式吧?
    費話少說,下載tomcat5的src,進入jakarta-tomcat-jasper\jasper2\src\share\org\apache\jasper\compiler,找到JspUtil.java,找到
    public static InputStream getInputStream(String fname, JarFile jarFile,
    JspCompilationContext ctxt,
    ErrorDispatcher err)
    throws JasperException, IOException {

    InputStream in = null;

    if (jarFile != null) {
    String jarEntryName = fname.substring(1, fname.length());
    ZipEntry jarEntry = jarFile.getEntry(jarEntryName);
    if (jarEntry == null) {
    err.jspError("jsp.error.file.not.found", fname);
    }
    in = jarFile.getInputStream(jarEntry);
    } else {
    in = ctxt.getResourceAsStream(fname);
    }

    if (in == null) {
    err.jspError("jsp.error.file.not.found", fname);
    }
    return in;
    }

    在return in前加上判斷,改成:
    public static InputStream getInputStream(String fname, JarFile jarFile,
    JspCompilationContext ctxt,
    ErrorDispatcher err)
    throws JasperException, IOException {

    InputStream in = null;

    if (jarFile != null) {
    String jarEntryName = fname.substring(1, fname.length());
    ZipEntry jarEntry = jarFile.getEntry(jarEntryName);
    if (jarEntry == null) {
    err.jspError("jsp.error.file.not.found", fname);
    }
    in = jarFile.getInputStream(jarEntry);
    } else {
    in = ctxt.getResourceAsStream(fname);
    }

    if (in == null) {
    err.jspError("jsp.error.file.not.found", fname);
    }
    PushbackInputStream testin = new PushbackInputStream(in);
    int ch = testin.read();
    if (ch != 0xef) {
    testin.unread(ch);
    }
    else if ((ch = testin.read()) != 0xbb) {
    testin.unread(ch);
    testin.unread(0xef);
    }
    else if ((ch = testin.read()) != 0xbf) {
    throw new IOException("錯誤的UTF-8格式文件");
    }
    else{
    //fStream.setEncoding("UTF-8");
    testin.read();
    }
    return testin;
    }

    編譯,重新打包,替換原來的包,運行TOMCAT,OK!

    整個問題解決除了遠程登錄他的服務器傳送文件的時間,總共只有4-5分鐘.其實只要問題定位準確,就不難解決了.我一再強調的是經熟悉底層,你如果知道內 存中每個byte從哪兒來要到哪兒去,就可以非常容易地解決問題.在此之前我連TOMCAT5下載都沒有下過,更別說試用了.但只要你對JDK有深入的了 解,就可以準確地定位問題的所在.

    希望本文能給不是高手的朋友一點幫助和啟發,對于高手的朋友你可以棄之一笑.


    UTF-8文件的Unicode簽名BOM(Byte Order Mark)問題
    utf-8編碼include頁面空格
    Django下碰到EF BB BF問題
    php utf-8編碼include頁面空格

    posted @ 2012-03-03 23:26 leekiang 閱讀(632) | 評論 (0)編輯 收藏

    1,安裝
    yum install mysql-server,會同時安裝mysql包。默認安裝5.0版本。
    卸載:yum remove mysql-server

    2,配置
    默認配置文件在/etc/my.cnf
    默認datadir=/var/lib/mysql
    默認socket=/var/lib/mysql/mysql.sock
    mysqladmin、mysqldump等命令在/usr/bin
    mysqld在/etc/init.d/mysqld

    3,命令
    啟動 service mysqld start
    停止
    service mysqld stop
    開機自啟是用"chkconfig --levels 235 mysqld on"還是"chkconfig mysqld on"

    如果啟動報錯,很可能是磁盤滿了。
    如果開啟了selinux,可能會導致mysql啟動不成功。另外要記得設置iptables的3306端口



    Centos 安裝Mysql
    Solve: Can’t connect to local MySQL server through socket /tmp/mysql.sock
    MYSQL: ERROR 2002 (HY000):Can't connect to local MySQL server

    posted @ 2011-12-12 01:22 leekiang 閱讀(476) | 評論 (0)編輯 收藏

    僅列出標題
    共54頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 综合亚洲伊人午夜网 | 99久久人妻精品免费一区| 色噜噜综合亚洲av中文无码| 国拍在线精品视频免费观看| 国产亚洲综合一区二区三区| 亚洲精品乱码久久久久66| 18未年禁止免费观看| 亚洲AV香蕉一区区二区三区| 亚洲乱码国产乱码精品精| 男女做羞羞的事视频免费观看无遮挡| 亚洲精品色在线网站| 亚洲色WWW成人永久网址| 一个人免费观看在线视频www | 黄网站免费在线观看| 亚洲中文字幕久久无码| 亚洲精品夜夜夜妓女网| 24小时免费直播在线观看| 丝袜捆绑调教视频免费区| 亚洲а∨天堂久久精品9966| 亚洲真人无码永久在线| 日本最新免费不卡二区在线| 三年片在线观看免费观看大全动漫| 亚洲大尺度无码无码专线一区| 亚洲gv猛男gv无码男同短文| 性xxxx视频播放免费| 四虎影视在线影院在线观看免费视频| 亚洲自偷自偷在线成人网站传媒| 亚洲熟女少妇一区二区| 国产大片51精品免费观看| 57pao国产成视频免费播放| 一个人看的www在线免费视频| 中文字幕亚洲综合小综合在线 | 亚洲色偷偷综合亚洲AVYP| 免费看香港一级毛片| 99热在线免费播放| 中文在线观看国语高清免费| 国产成人精品日本亚洲语音| 亚洲喷奶水中文字幕电影 | 亚洲国产av玩弄放荡人妇| 亚洲黄色在线网站| 亚洲国产精品无码久久SM|