??xml version="1.0" encoding="utf-8" standalone="yes"?>最新在线观看av,亚洲第一在线,午夜精品久久久久http://www.aygfsteel.com/feuyeux/Belong to Eric Hanzh-cnTue, 17 Jun 2025 03:40:06 GMTTue, 17 Jun 2025 03:40:06 GMT60Java中ƈ发环境中的For和ForEachhttp://www.aygfsteel.com/feuyeux/archive/2012/09/05/387088.htmlLu HanLu HanWed, 05 Sep 2012 06:09:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2012/09/05/387088.htmlhttp://www.aygfsteel.com/feuyeux/comments/387088.htmlhttp://www.aygfsteel.com/feuyeux/archive/2012/09/05/387088.html#Feedback0http://www.aygfsteel.com/feuyeux/comments/commentRss/387088.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/387088.htmlpackage creative.air.datastructure.array;
import java.util.ArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.logging.Logger;
public class IterateList {
    
    static final Logger logger = Logger.getLogger(IterateList.class.getName());
    static ArrayList<Integer> list = new ArrayList<Integer>();
    static final CountDownLatch gateLatch1 = new CountDownLatch(1);
    static final CountDownLatch gateLatch2 = new CountDownLatch(1);
    
    public void addMock() {
        int top = 0;
        while (top < 20) {
            list.add(top++);
        }
    }
    
    public void iterating1() {
        try {
            //java.lang.IndexOutOfBoundsException:
            //for (int i = 0, len =list.size(); i < len; i++) {
            for (int i = 0; i < list.size(); i++) {
                if (i == 3) {
                    gateLatch1.countDown();
                }
                logger.log(Level.INFO, "i={0} list({1})='{'{2}'}'", new Object[]{i, i, list.get(i)});
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, null, e);
        }
    }
    
    public void iterating2() {
        try {
            int i = 0;
            //java.util.ConcurrentModificationException:
            for (int n : list) {
                if (i == 3) {
                    gateLatch2.countDown();
                }
                logger.log(Level.INFO, "i={0} list({1})='{'{2}'}'", new Object[]{i, i, n});
                i++;
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, null, e);
        }
    }
    
    public static void main(String[] ss) {
        IterateList test = new IterateList();
        Thread remover1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    gateLatch1.await();
                } catch (InterruptedException ex) {
                    logger.log(Level.SEVERE, null, ex);
                }
                if (!list.isEmpty()) {
                    list.remove(0);
                }
                
                logger.log(Level.INFO, "list size:{0}", list.size());
            }
        });
        Thread remover2 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    gateLatch2.await();
                } catch (InterruptedException ex) {
                    logger.log(Level.SEVERE, null, ex);
                }
                if (!list.isEmpty()) {
                    list.remove(0);
                }
                logger.log(Level.INFO, "list size:{0}", list.size());
            }
        });
        remover1.start();
        remover2.start();
        test.addMock();
        test.iterating1();
        test.iterating2();
    }
}


Lu Han 2012-09-05 14:09 发表评论
]]>
事务q?/title><link>http://www.aygfsteel.com/feuyeux/archive/2012/04/25/376547.html</link><dc:creator>Lu Han</dc:creator><author>Lu Han</author><pubDate>Wed, 25 Apr 2012 02:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/feuyeux/archive/2012/04/25/376547.html</guid><wfw:comment>http://www.aygfsteel.com/feuyeux/comments/376547.html</wfw:comment><comments>http://www.aygfsteel.com/feuyeux/archive/2012/04/25/376547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/feuyeux/comments/commentRss/376547.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/feuyeux/services/trackbacks/376547.html</trackback:ping><description><![CDATA[ACID<br /><span style="font-size:10.5pt;line-height:115%; font-family:"微Y雅黑","sans-serif";Times New Roman";">atomicity </span>[,ætə'misəti] <span style="font-family: 微Y雅黑, sans-serif; line-height: 16px; ">原子?/span> <br /><span style="font-size:10.5pt;line-height:115%; font-family:"微Y雅黑","sans-serif";Times New Roman";">consistency </span>[kən'sistənsi]  <span style="font-family: 微Y雅黑, sans-serif; line-height: 16px; ">一致?/span> <br /><span style="font-size:10.5pt;line-height:115%; font-family:"微Y雅黑","sans-serif";Times New Roman";">isolation </span>['aisə'leiʃən] <span style="font-family: 微Y雅黑, sans-serif; line-height: 16px; ">隔离?/span> <br /><span style="font-size:10.5pt;line-height:115%; font-family:"微Y雅黑","sans-serif";Times New Roman";">durability</span> [,djuərə'biləti] <span style="font-family: 微Y雅黑, sans-serif; line-height: 16px; ">持久?br /><br />InnoDB<br />QPS Question Per Second<br />TPS Transaction Per Second=(com_commit+com_rollback)/time<br /><br /></span><table class="MsoNormalTable" border="0" cellpadding="0" width="500" style="width: 500px; " bordercolor="" cellspacing=""> <tbody><tr> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">隔离U别<span lang="EN-US"><o:p></o:p></span></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">更新丢失<span lang="EN-US"><o:p></o:p></span></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">脏读?span lang="EN-US"><o:p></o:p></span></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">重复d<span lang="EN-US"><o:p></o:p></span></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; " rowspan="1"> </td><td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">q读<span lang="EN-US"><o:p></o:p></span></span></p> </td> </tr> <tr style="border-image: initial; "> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">未授权读?/span><span lang="EN-US" style="color:red">READ-UNCOMMITTED</span><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman""><o:p></o:p></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; border-image: initial; "> <p class="MsoNormal" style="margin-bottom: 0.0001pt; border-image: initial; "><span lang="EN-US" style="font-size: 10.5pt; font-family: 微Y雅黑, sans-serif; border-image: initial; ">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">Y<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">Y<o:p></o:p></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; " rowspan="1"> </td><td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size: 10.5pt; font-family: 微Y雅黑, sans-serif; ">Y<o:p></o:p></span></p> </td> </tr> <tr> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体;background:yellow;mso-highlight:yellow">授权d</span><span lang="EN-US" style="color:red;background:yellow;mso-highlight:yellow">READ-COMMITTED</span><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman";background:yellow;mso-highlight:yellow"><o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman";background:yellow;mso-highlight:yellow">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman";background:yellow;mso-highlight:yellow">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman";background:yellow;mso-highlight:yellow">Y<o:p></o:p></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; " rowspan="1"> </td><td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman";background:yellow;mso-highlight:yellow">Y<o:p></o:p></span></p> </td> </tr> <tr> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">可重复读?/span><span lang="EN-US" style="color:red">REPEATABLE-READ</span><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman""><o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; " rowspan="1"> </td><td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">Y<o:p></o:p></span></p> </td> </tr> <tr> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:宋体">串行</span><span lang="EN-US" style="color:red">SERIALIZABLE</span><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman""><o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> <td style="padding-top: 1.5pt; padding-right: 1.5pt; padding-bottom: 1.5pt; padding-left: 1.5pt; " rowspan="1"> </td><td style="padding:1.5pt 1.5pt 1.5pt 1.5pt"> <p class="MsoNormal" style="margin-bottom: 0.0001pt; "><span lang="EN-US" style="font-size:10.5pt;font-family:"微Y雅黑","sans-serif"; mso-bidi-font-family:"Times New Roman"">N<o:p></o:p></span></p> </td> </tr> </tbody></table><table border="0" cellspacing="2" cellpadding="2" width="500"><tbody><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr><tr><td> </td><td> </td><td> </td><td> </td></tr></tbody></table><br /><div><span style="line-height: 16px;">数据库ƈ发操作存在的异常情况Q?/span></div><div><span style="line-height: 16px;">1.更新丢失QLostUpdateQ:</span></div><div><span style="line-height: 16px;">A和B事务q发执行QA事务执行更新后,提交QB事务在A事务更新后,B事务l束前也做了对该行数据的更新操作Q然后回滚,则两ơ更新操作都丢失了?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">W一cM失更?回滚丢失QLost update)?/span></div><div><span style="line-height: 16px;">在事务A期间Q事务BҎ据进行了更新Q在事务A撤销之后Q覆盖了事务B已经提交的数据?/span></div><div><span style="line-height: 16px;">SQL92没有定义q种现象Q标准定义的所有隔ȝ别都不允许第一cM失更新发生?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">W二cM失更?覆盖丢失/两次更新问题QSecond lost update)?/span></div><div><span style="line-height: 16px;">在事务A期间Q事务BҎ据进行了更新Q在事务A提交之后Q覆盖了事务B已经提交的数据?/span></div><div><span style="line-height: 16px;">W二cM失更斎ͼ实际上和不可重复L同一U问题?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">2.脏读取(DirtyReadsQ:</span></div><div><span style="line-height: 16px;">A和B事务q发执行QB事务执行更新后,A事务查询B事务没有提交的数据,B事务回滚Q则A事务得到的数据不是数据库中的真实数据。也是脏数据,卛_数据库中不一致的数据?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">3.不可重复dQNon-repeatableReadsQ:</span></div><div><span style="line-height: 16px;"> A和B事务q发执行QA事务查询数据Q然后B事务更新该数据ƈ提交QA再次查询该数据时Q发现该数据变化了?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">4.q读QPhantomReadsQ:也称为像(qdQ?/span></div><div><span style="line-height: 16px;">A和B事务q发执行QA事务查询数据QB事务插入或者删除数据ƈ提交QA事务再次查询发现,l果集中,有以前没有的数据或者以前有的数据消׃?br /></span><br /><p style="margin-bottom:0cm;margin-bottom:.0001pt;line-height: 150%"><span style="font-size:10.5pt;line-height:150%;font-family:"微Y雅黑","sans-serif";Times New Roman"">Z避免上面出现几种情况在标准SQL规范中定义了4个事务隔ȝ别,不同隔离U别对事务处理不同?/span></p><div><span style="line-height: 16px;">1. READ-UNCOMMITTED未授权读?未提交读</span></div><div><span style="line-height: 16px;">允许脏读取但不允许更C失?/span></div><div><span style="line-height: 16px;">如果一个事务已l开始写数据Q则另外一个事务不允许同时q行写操作,但允许其他事务读此行数据。通过“排他写锁”实现?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">2. READ-COMMITTED授权d/提交?/span></div><div><span style="line-height: 16px;">允许不可重复d但不允许脏读取?/span></div><div><span style="line-height: 16px;">更新语句提交以后别的事务才能dq个改变。读取数据的事务允许其他事务l箋讉K该行数据Q但是未提交的写事务会止其他事务讉K该行。通过“瞬间׃n读锁”?#8220;排他写锁”实现Q?/span></div><div><span style="line-height: 16px;">在此隔离U下QSELECT命o不会q回未提交QCommittedQ的数据Q也不能q回脏数据?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">3. REPEATABLE-READ可重复读?/span></div><div><span style="line-height: 16px;">止不可重复d和脏d。但是有时可能出现影数?/span></div><div><span style="line-height: 16px;">在同一个事务里面先后执行同一个查询语句的时候,保得到的结果是一L。读取数据的事务会止写事务(但允许读事务Q,写事务则止M其他事务。通过“׃n读锁”?#8220;排他写锁”实现Q?/span></div><div><span style="line-height: 16px;">在此隔离U下Q用SELECT命od的数据在整个命o执行q程中不会被更改。此选项会媄响系l的效能Q非必要情况最好不用此隔离U?/span></div><div><span style="line-height: 16px;"><br /></span></div><div><span style="line-height: 16px;">4. SERIALIZABLE串行/可串行读?/span></div><div><span style="line-height: 16px;">事务只能一个接着一个地执行Q但不能q发执行。如果仅仅通过“行?#8221;是无法实C务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作事务讉K到?/span></div><div style="line-height: 16px; "></div></div><div style="font-family: 微Y雅黑, sans-serif; line-height: 16px; "></div><img src ="http://www.aygfsteel.com/feuyeux/aggbug/376547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/feuyeux/" target="_blank">Lu Han</a> 2012-04-25 10:45 <a href="http://www.aygfsteel.com/feuyeux/archive/2012/04/25/376547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java安全传输实践2http://www.aygfsteel.com/feuyeux/archive/2011/11/05/362724.htmlLu HanLu HanFri, 04 Nov 2011 20:27:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2011/11/05/362724.htmlhttp://www.aygfsteel.com/feuyeux/comments/362724.htmlhttp://www.aygfsteel.com/feuyeux/archive/2011/11/05/362724.html#Feedback0http://www.aygfsteel.com/feuyeux/comments/commentRss/362724.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/362724.html
证书概述Q?/strong>
ICM服务器证?׃间CA{֏ 中间CA由CA{֏
UCGW客户端证?׃间CA{֏ 中间CA由CA{֏

证书{֏q程Q?/strong>
创徏ICM自签证书
keytool -genkey -dname "CN=mars_icm, OU=rv, O=rcd, L=ZB, ST=bj, C=China" -alias icm -keyalg RSA -keystore temp/iview.keystore -keypass 111111 -storepass 111111 -validity 60
keytool -certreq -alias icm -keypass 111111 -file "temp/icm.self.csr" -keystore "temp/iview.keystore" -storepass 111111
keytool -export -alias icm -keystore temp/iview.keystore -storepass 111111 -rfc -file temp/icm.self.cer
创徏UCGW自签证书
keytool -genkey -dname "CN=mars_UCGW, OU=rv, O=rcd, L=ZB, ST=bj, C=China" -alias ucgw -keyalg RSA -keystore temp/ucgw.keystore -keypass 111111 -storepass 111111 -validity 60
keytool -certreq -alias ucgw -keypass 111111 -file "temp/ucgw.self.csr" -keystore "temp/ucgw.keystore" -storepass 111111
keytool -export -alias ucgw -keystore temp/ucgw.keystore -storepass 111111 -rfc -file temp/ucgw.self.cer
创徏中间CA自签证书
keytool -genkey -dname "CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China" -alias intermediary -keyalg RSA -keystore temp/inter.keystore -keypass 111111 -storepass 111111 -validity 60
keytool -certreq -alias intermediary -keypass 111111 -file "temp/inter.self.csr" -keystore "temp/inter.keystore" -storepass 111111
keytool -export -alias intermediary -keystore temp/inter.keystore -storepass 111111 -rfc -file temp/inter.self.cer
创徏CA证书
keytool -genkey -dname "CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China" -alias root -keyalg RSA -keystore temp/ca--ca.keystore -keypass 111111 -storepass 111111 -validity 60
keytool -certreq -alias root -keypass 111111 -file "temp/root.csr" -keystore "temp/ca--ca.keystore" -storepass 111111
keytool -export -alias root -keystore temp/ca--ca.keystore -storepass 111111 -rfc -file temp/root.cer
CA{֏中间CA证书
keytool -export -alias ca_signed -keystore temp/ca--ca_sign.keystore -storepass 111111 -rfc -file temp/inter.cer
验证中间CA证书
It is signed by the CA
导入中间CA的KeyStore
keytool -importcert -noprompt -trustcacerts -alias root -file temp/root.cer -keystore temp/inter.keystore -storepass 111111 -keypass 111111
keytool -importcert -noprompt -alias intermediary -file temp/inter.cer -keystore temp/inter.keystore -storepass 111111
中间CA{֏icm证书
keytool -export -alias inter_signed -keystore temp/ca--ca_sign.keystore -storepass 111111 -rfc -file temp/icm.signed.cer
中间CA{֏ucgw证书
keytool -export -alias inter_signed -keystore temp/ca--ca_sign.keystore -storepass 111111 -rfc -file temp/ucgw.signed.cer
验证ICM证书
It is signed by the CA
验证UCGW证书
It is signed by the CA
导入ICM的KeyStore
keytool -importcert -noprompt -trustcacerts -alias root -file temp/root.cer -keystore temp/iview.keystore -storepass 111111 -keypass 111111
keytool -importcert -noprompt -trustcacerts -alias intermediary -file temp/inter.cer -keystore temp/iview.keystore -storepass 111111 -keypass 111111
keytool -importcert -noprompt -alias icm -file temp/icm.signed.cer -keystore temp/iview.keystore -storepass 111111
导入UCGW的KeyStore
keytool -importcert -noprompt -trustcacerts -alias root -file temp/root.cer -keystore temp/ucgw.keystore -storepass 111111 -keypass 111111
keytool -importcert -noprompt -trustcacerts -alias intermediary -file temp/inter.cer -keystore temp/ucgw.keystore -storepass 111111 -keypass 111111
keytool -importcert -noprompt -alias ucgw -file temp/ucgw.signed.cer -keystore temp/ucgw.keystore -storepass 111111
---------------------------------------------------------------
keytool -list -keystore temp/ca--ca.keystore -storepass 111111
...
root, 2011-11-5, PrivateKeyEntry, 
认证指纹 (MD5)Q?49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
---------------------------------------------------------------
keytool -list -keystore temp/inter.keystore -storepass 111111
...
root, 2011-11-5, trustedCertEntry,
认证指纹 (MD5)Q?49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
intermediary, 2011-11-5, PrivateKeyEntry, 
认证指纹 (MD5)Q?23:6C:C0:46:67:CF:9E:4E:EF:A9:74:95:AB:EE:37:21
---------------------------------------------------------------
keytool -list -v -keystore temp/iview.keystore -storepass 111111
...
您的 keystore 包含 3 输入
别名名称Q?root
创徏日期Q?2011-11-5
输入cdQ?trustedCertEntry
所有?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c5
有效? Sat Nov 05 04:23:33 CST 2011 至Wed Jan 04 04:23:33 CST 2012
证书指纹:
MD5:49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
SHA1:EA:92:AE:59:D1:8D:B6:2F:33:B7:65:CC:6E:B0:B5:7D:40:CF:45:BE
{֐法名称:SHA1withRSA
版本: 3
*******************************************
*******************************************
别名名称Q?intermediary
创徏日期Q?2011-11-5
输入cdQ?trustedCertEntry
所有?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c7
有效? Sat Nov 05 04:23:35 CST 2011 至Wed Jan 22 04:23:35 CST 2020
证书指纹:
MD5:23:6C:C0:46:67:CF:9E:4E:EF:A9:74:95:AB:EE:37:21
SHA1:54:86:85:BC:9C:D5:D2:E8:A4:E6:33:DD:4F:42:87:FB:2A:92:F3:84
{֐法名称:MD5withRSA
版本: 3
*******************************************
*******************************************
别名名称Q?icm
创徏日期Q?2011-11-5
类? PrivateKeyEntry
认证N度: 3
认证 [1]:
所有?CN=mars_icm, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449ca
有效? Sat Nov 05 04:23:38 CST 2011 至Wed Jan 22 04:23:38 CST 2020
证书指纹:
MD5:95:97:C3:2C:2C:A5:B4:7A:17:EF:98:B7:7B:BC:AE:4A
SHA1:E1:92:F9:79:48:FE:59:AF:3F:85:CE:2A:21:82:AD:B2:00:60:EB:D7
{֐法名称:MD5withRSA
版本: 3
认证 [2]:
所有?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c7
有效? Sat Nov 05 04:23:35 CST 2011 至Wed Jan 22 04:23:35 CST 2020
证书指纹:
MD5:23:6C:C0:46:67:CF:9E:4E:EF:A9:74:95:AB:EE:37:21
SHA1:54:86:85:BC:9C:D5:D2:E8:A4:E6:33:DD:4F:42:87:FB:2A:92:F3:84
{֐法名称:MD5withRSA
版本: 3
认证 [3]:
所有?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c5
有效? Sat Nov 05 04:23:33 CST 2011 至Wed Jan 04 04:23:33 CST 2012
证书指纹:
MD5:49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
SHA1:EA:92:AE:59:D1:8D:B6:2F:33:B7:65:CC:6E:B0:B5:7D:40:CF:45:BE
{֐法名称:SHA1withRSA
版本: 3
---------------------------------------------------------------
keytool -list -v -keystore temp/ucgw.keystore -storepass 111111
...
您的 keystore 包含 3 输入
别名名称Q?root
创徏日期Q?2011-11-5
输入cdQ?trustedCertEntry
所有?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c5
有效? Sat Nov 05 04:23:33 CST 2011 至Wed Jan 04 04:23:33 CST 2012
证书指纹:
MD5:49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
SHA1:EA:92:AE:59:D1:8D:B6:2F:33:B7:65:CC:6E:B0:B5:7D:40:CF:45:BE
{֐法名称:SHA1withRSA
版本: 3
*******************************************
*******************************************
别名名称Q?intermediary
创徏日期Q?2011-11-5
输入cdQ?trustedCertEntry
所有?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c7
有效? Sat Nov 05 04:23:35 CST 2011 至Wed Jan 22 04:23:35 CST 2020
证书指纹:
MD5:23:6C:C0:46:67:CF:9E:4E:EF:A9:74:95:AB:EE:37:21
SHA1:54:86:85:BC:9C:D5:D2:E8:A4:E6:33:DD:4F:42:87:FB:2A:92:F3:84
{֐法名称:MD5withRSA
版本: 3
*******************************************
*******************************************
别名名称Q?ucgw
创徏日期Q?2011-11-5
类? PrivateKeyEntry
认证N度: 3
认证 [1]:
所有?CN=mars_UCGW, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449cb
有效? Sat Nov 05 04:23:39 CST 2011 至Wed Jan 22 04:23:39 CST 2020
证书指纹:
MD5:D7:6D:ED:9C:13:B6:79:D2:4C:B1:B7:57:CE:AA:BB:54
SHA1:C0:AD:FC:86:53:CB:4F:92:D6:6C:2E:23:25:8F:EF:89:7D:8D:3A:EB
{֐法名称:MD5withRSA
版本: 3
认证 [2]:
所有?CN=mars_inter, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c7
有效? Sat Nov 05 04:23:35 CST 2011 至Wed Jan 22 04:23:35 CST 2020
证书指纹:
MD5:23:6C:C0:46:67:CF:9E:4E:EF:A9:74:95:AB:EE:37:21
SHA1:54:86:85:BC:9C:D5:D2:E8:A4:E6:33:DD:4F:42:87:FB:2A:92:F3:84
{֐法名称:MD5withRSA
版本: 3
认证 [3]:
所有?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
{֏?CN=mars_ca, OU=rv, O=rcd, L=ZB, ST=bj, C=China
序列?4eb449c5
有效? Sat Nov 05 04:23:33 CST 2011 至Wed Jan 04 04:23:33 CST 2012
证书指纹:
MD5:49:44:8A:79:3C:62:ED:66:AA:20:D6:BF:65:3E:23:C4
SHA1:EA:92:AE:59:D1:8D:B6:2F:33:B7:65:CC:6E:B0:B5:7D:40:CF:45:BE
{֐法名称:SHA1withRSA
版本: 3

双向认证TLS|络包:
filter:
tcp.port==9527&&ssl

route add <your_IP> mask 255.255.255.255 <the_gateway> metric 1
route delete <your_IP>
route add 192.168.0.100 mask 
255.255.255.255 192.168.0.1 
metric 1
route delete 192.168.0.100
1Q?54292[client] 9527[server] TLSv1 Client Hello
2Q?Q?Q?Q?9527[server] 54292[client] TLSv1 Server Hello, Certificate, Server Key Exchange, Certificate Request, Server Hello Done
6Q?Q?54292[client] 9527[server] TLSv1 Certificate, Client Key Exchange
8Q?54292[client] 9527[server] TLSv1 Certificate Verify
9Q?0Q?54292[client] 9527[server] TLSv1 Change Cipher Spec, Encrypted Handshake Message
11Q?2Q?9527[server] 54292[client] TLSv1 Change Cipher Spec (Finished)
9527[server] 54292[client] TLSv1 Encrypted Handshake Message, Application Data, Application Data, Encrypted Alert


双向认证程Q?br />


Lu Han 2011-11-05 04:27 发表评论
]]>
轮询客户端的实现http://www.aygfsteel.com/feuyeux/archive/2011/07/08/353948.htmlLu HanLu HanFri, 08 Jul 2011 08:01:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2011/07/08/353948.htmlhttp://www.aygfsteel.com/feuyeux/comments/353948.htmlhttp://www.aygfsteel.com/feuyeux/archive/2011/07/08/353948.html#Feedback1http://www.aygfsteel.com/feuyeux/comments/commentRss/353948.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/353948.html
Scenario
服务?:客户端n 发送Notificationl客L?/span>?/span>处理
服务器端l第一个客L发送notificationQ然后在限定旉内,{待客户端作出回?#8212;向服务器发送request。如果客L一直没有回复,服务器会在到N定时间后Q向W二个客L发送notification。如果客L在限定时间内回复Q服务器端放弃再l其他客L发送消息?/span>

Design
服务器、客L使用socket发送和接收信息
发送端存在一个客L列表Q每ơ发送一l一个客LQ发送后Q向Helper发送添加该客户端id的请求?br />客户端收C息会向Helper发送删除该id的请求?br />Helper收到add?/span>Q启动一?/span>ScheduledExecutorServicecȝscheduleQ?/span>延时启动一个线E,q将?/span>schedule~存。removeӞ从缓存里取出scheduleq停止它。如果在延时旉内,U程没有被停止,它会被执行:从缓存中取出Q告诉服务器向下一个客L发送请求?/span>
 UML



Code


SendingNotification

ReceivingRequest

Helper

Schedule

Client

IO

 



Lu Han 2011-07-08 16:01 发表评论
]]>
Javaq程Ҏ调用实践 http://www.aygfsteel.com/feuyeux/archive/2011/05/26/RMI.htmlLu HanLu HanThu, 26 May 2011 15:55:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2011/05/26/RMI.htmlhttp://www.aygfsteel.com/feuyeux/comments/351136.htmlhttp://www.aygfsteel.com/feuyeux/archive/2011/05/26/RMI.html#Feedback1http://www.aygfsteel.com/feuyeux/comments/commentRss/351136.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/351136.html服务器端业务接口l承自Remote
public interface Biz extends Remote {
public String aloha() throws RemoteException;
}

服务器端业务实现该接?/div>
public class BizImpl extends UnicastRemoteObject implements Biz {
private static final long serialVersionUID = -8559392326593037120L;
public BizImpl() throws RemoteException {
super();
}
@Override
public String aloha() throws RemoteException {
return "Aloha Baby.";
}
}

服务器注册远E实现名U?br />
public class Server {
public Server() {
try {
Biz bis = new BizImpl();
// style-1
Registry registry = LocateRegistry.createRegistry(RMIParameter.PORT);
registry.rebind(RMIParameter.NAME, bis); // replace existing binding name
// style-2
//java.rmi.Naming.rebind(RMIParameter.NAME, bis); // replace existing binding name
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
new Server();
}
}

style-2 需要指定一个Policy文g或者运行rmiregistry
java -Djava.security.policy=folder_x/rmi/policy_file creative.fire.rmi.Server
Policy文g的内容ؓQ?/div>
grant{
      permission java.net.SocketPermission "localhost:9527", "connect, resolve";
};
q行rmiregistry是修?JDK 目录下的jre/lib/security/java.policy
rmiregistryQlinuxQ?/div>
start rmiregistry(windows)
允许M?targets)作Q何事?actions)Q?/div>
grant{
        permission java.security.AllPermission "","";
};
OR
grant {
  permission java.security.AllPermission;
};
客户端打桩调?br />
public class Client {
public static void main(String args[]) {
try {
Biz bis = (Biz) Naming.lookup(RMIPREFIX + PORT + NAME);
System.out.println(bis.aloha());
} catch (Exception e) {
e.printStackTrace();
}
}
}


Lu Han 2011-05-26 23:55 发表评论
]]>Java安全传输实践http://www.aygfsteel.com/feuyeux/archive/2011/05/26/TLS.htmlLu HanLu HanThu, 26 May 2011 06:48:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2011/05/26/TLS.htmlhttp://www.aygfsteel.com/feuyeux/comments/351084.htmlhttp://www.aygfsteel.com/feuyeux/archive/2011/05/26/TLS.html#Feedback0http://www.aygfsteel.com/feuyeux/comments/commentRss/351084.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/351084.html阅读全文

Lu Han 2011-05-26 14:48 发表评论
]]>
JavaU程池类ThreadPoolExecutor析http://www.aygfsteel.com/feuyeux/archive/2010/12/04/339799.htmlLu HanLu HanSat, 04 Dec 2010 11:09:00 GMThttp://www.aygfsteel.com/feuyeux/archive/2010/12/04/339799.htmlhttp://www.aygfsteel.com/feuyeux/comments/339799.htmlhttp://www.aygfsteel.com/feuyeux/archive/2010/12/04/339799.html#Feedback0http://www.aygfsteel.com/feuyeux/comments/commentRss/339799.htmlhttp://www.aygfsteel.com/feuyeux/services/trackbacks/339799.html本文是对javaU程池的_浅分析Q视野局限于U程池的基本实现Q不包含生命周期Q状态管理?/span>

U程池的特点是将d的提交和执行分开。这样做的好处是Q能使处理器量多地同时执行d?br />
为此Q线E池提供了两个角Ԍ
d task
执行d的工?worker

与此相关Q需要考虑Q?br />
工h的数量:
工h数量的考量是线E池设计的一个关键。因此,q一点由构造线E池Ӟ提供的头两个参数军_?br /> 最雇佣数?corePoolSize
最多工人数?maximumPoolSize

何时解雇多余最雇佣数量的工hQ?br /> 工h多余dӞ它们会等待Q务的到来Q如果规定时间内Q还没有dQ那我们p雇多余的工h?br /> q个规定的时间就是构造子里的W三Q第四个参数?br />  

能接受的d数量Q?br /> 一个工人,某一旉只能处理一个Q务。工人的数量是有限的Q因此多余工人数量的d来了Ӟ
U程池就要考虑是否接受
Y:
处于{待中的d堆积到多就不再允许接受d Q?br /> 规定{待d列表的容量[bound]Q达到容量后不再接受CQ务?br />
无限制地接受{待d[unbound]
讄何种d{待列表由构造子的第五个参数军_?br /> long keepAliveTime, TimeUnit unit

N:
以何U方式拒l:
由构造子的第七个参数军_?br />
W六个参数决定了
工h手里执行dU程的工厂方法?br />
工作原理Q?br />


1.当工人数量没有达到最雇佣数量时Q每当Q务来_U程池都要创Z个工人,然后从线E工厂里创徏一个新的线E,把Q务作U程的targetQ把U程交给工hQ把工h加入工h集合。该d随即被执行?br />
2.如果d来Ӟ当前工h数量poolSize已经大于最雇佣数量,表明工h已经雇䄦的差不多了,先让d{待吧?br /> U程池尝试把d加入d列表Q如果成功,d提交的步骤就l束了?br />
2.5.d列表是ƈ发阻塞队列,工h会不断地试从队列里获取dQ如果获取到d(L5)Q工人就把Q务拿L行。这是Q务的执行步骤?br />
3.如果加入队列p|Q说明Q务列表已l满了,不能再往里塞d了?br /> q时Q线E池判断工h数量是否辑ֈ最多工人数量?br /> 如果q没有,则决定再雇䄦一个工?q和开始雇佣工人的步骤没有两样)?br />
4.如果已经辑ֈ雇䄦上线Q线E池没有办法了,只好拒绝该Q务?br /> 拒绝的方式有Q?br /> 1、抛出异常给d递送者,告诉?#8220;老子累屁了,老子真的不干?#8221;?--q太_暴了。线E池默认p么干Q?br /> 2、偷蔫儿C弃这个Q务?--q太猥琐了?br /> 3、从d列表里丢弃一个最q的dQ然后把q个dN?-q太势利g?br /> 4、还lQ务递送者,让他自己qӀ?-q太无M?br />
5.U程池让工h{待d的策略分两种(本文不考虑生命周期和状?Q?br /> ȝQ当工h数量于或者等于最低雇佣数量时Q它们没啥Q务干了,必L{?br /> 如果在给定时间内Q没有Q务来刎ͼU程池开始数人头Q如果不多于最低雇佣数量,q个工hq得重新{一个给定时间那么长?br />
6.否则Q线E池把该工h的线E结束,告诉当前{待的工人,你没有Q务了。不要再{了?br />
7.没有拿到d的工人,被清除出工h集合--该工人正式下岗?br />
feuyeux@gmail.com


Lu Han 2010-12-04 19:09 发表评论
]]>
վ֩ģ壺 | ʡ| ű| | | | ̨| ˼| Ϫ| | | ӳ| | ƽ| | ɿ| ͨ| | | ګ| | °Ͷ| | ɽ| | ̩˳| ɽ| Ҧ| | | | | ɽ| | | | | | | | ˳|