﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-江永源blog</title><link>http://www.blogjava.net/jiangyy/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 01:58:03 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 01:58:03 GMT</pubDate><ttl>60</ttl><item><title>程序员成长方法-自我管理 </title><link>http://www.blogjava.net/jiangyy/articles/322312.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Sun, 30 May 2010 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/322312.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/322312.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/322312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/322312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/322312.html</trackback:ping><description><![CDATA[<h2><a id="序" name="序">序</a></h2>
<div class="level2">
<p>活到老学到老，程序员成长没有止境<br />
<br />
<br />
</p>
</div>
<h2><a id="职业发展目标" name="职业发展目标">职业发展目标</a></h2>
<div class="level2">
<p>在你的职业发展过程中，你希望原地踏步，还是否希望成为他们类似的人：<br />
章文嵩：linux virtual server（lvs负载均衡）作者<br />
<a class="media" title="project:zanwensong.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%88%90%E9%95%BF%E6%96%B9%E6%B3%95-%E8%87%AA%E6%88%91%E7%AE%A1%E7%90%86&amp;media=project:zanwensong.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:zanwensong.jpg" /></a><br />
王文彬：原jboss开发,亚太区总经理,现任淘宝开放平台副总裁<br />
<a class="media" title="project:wangwenbin.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%88%90%E9%95%BF%E6%96%B9%E6%B3%95-%E8%87%AA%E6%88%91%E7%AE%A1%E7%90%86&amp;media=project:wangwenbin.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:wangwenbin.jpg" /></a><br />
林昊：java模块化专家,出版osgi等书籍<br />
<a class="media" title="project:linhao.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%88%90%E9%95%BF%E6%96%B9%E6%B3%95-%E8%87%AA%E6%88%91%E7%AE%A1%E7%90%86&amp;media=project:linhao.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:linhao.jpg" /></a><br />
岑文初：技术专家,架构师<br />
<a class="media" title="project:cenwenchu.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%88%90%E9%95%BF%E6%96%B9%E6%B3%95-%E8%87%AA%E6%88%91%E7%AE%A1%E7%90%86&amp;media=project:cenwenchu.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:cenwenchu.jpg" /></a><br />
<br />
<br />
</p>
</div>
<h2><a id="程序员陷阱优越感_过度自信" name="程序员陷阱优越感_过度自信">程序员陷阱:优越感、过度自信</a></h2>
<div class="level2">
<p>程序员的成长也是经过这样的流程：<br />
初入社会&#8594;自信，优越感&#8594;发现不知道东西很多，无知&#8594;深入学习&#8594;稳重收敛&#8594;成为某领域专家<br />
看一些人的例子： </p>
<ul>
    <li class="level1">
    <div class="li">郭欣</div>
    </li>
</ul>
<p>《构建高性能web站点》作者<br />
<a class="urlextern" title="http://blog.guoxin.org/?p=449" href="http://blog.guoxin.org/?p=449" rel="nofollow">http://blog.guoxin.org/?p=449</a><br />
<a class="media" title="project:自信无知.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3A%E7%A8%8B%E5%BA%8F%E5%91%98%E6%88%90%E9%95%BF%E6%96%B9%E6%B3%95-%E8%87%AA%E6%88%91%E7%AE%A1%E7%90%86&amp;media=project:%E8%87%AA%E4%BF%A1%E6%97%A0%E7%9F%A5.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?w=620&amp;media=project:%E8%87%AA%E4%BF%A1%E6%97%A0%E7%9F%A5.jpg" width="620" /></a> <br />
<br />
</p>
<ul>
    <li class="level1">
    <div class="li">十五年，你累积了什么</div>
    </li>
</ul>
<p><a class="urlextern" title="http://blog.csdn.net/axman/archive/2010/04/24/5523746.aspx" href="http://blog.csdn.net/axman/archive/2010/04/24/5523746.aspx" rel="nofollow">http://blog.csdn.net/axman/archive/2010/04/24/5523746.aspx</a> </p>
<pre class="code">面试：
1.负载均衡,2 cache(自己介绍一个投票系统,用户投票数据直接放在cache中).3数据库读写分离.
如何做数据库读写分离,谈谈你做过的经验.
答:我自己没做过这些方案,就是看过这样的方案介绍.
如果新增数据也放在cache中,如何保证出现异常时数据不丢失?
答:我可以在容器关闭前写到数据库,平时每10分钟与数据库同步一次.
对于大规模用户的WEB应用,10分钟可能上百万的数据,要是突然当机来不及同步到数据库怎么办?
答:.......................没考虑过.
网站的负载均衡有哪些模型?
答:没有做过,按照我的理解就是多点分布.
那你谈谈自己最熟悉的技术点在哪方面?
答:JAVA技术方面,比如多线程.
OK,那我们聊聊JAVA技术.JVM底层技术有了解吗?
答:这个当然了解.
请用你知道的知识描述一下GC的工作原理.
答:一个对象没有引用的时候就可以被回收.
那么怎么知道对象没有引用了呢?
答:这个不知道.
GC是如何分代的?
答:什么分代?我不了解.
关于GC还了解哪些?
答:其它的不清楚,我记得只要对象没有引用就可以回收了.
OK,多线程方面,jdk5以后的concurrent包中的数据结构用过哪些?
答:数据结构是什么意思?
就是相当于java.util下面的容器类.
答:我用过threadpoolexecutor.
我问的是数据结构或叫容器,比如说List,Map这类的数据结构.
答:没有用过,我平时用的都是同步之类多线程(意思是1.5之前的并发编程类库).
OK,请简单画一下JAVA的内存模型.
答:内存模型?不了解,我画不出来.
那么请说说volatile关键字在JAVA5之前有什么作用.
答:没听说过这个关键字.
那么,进入同步块和离开同步块时,变量是如何同步的?
答:这些底层的东西我都不了解,主要是做应用层。
主要做应用层,那么熟悉使用的框架吗?
答:是啊.struts,hibernate,spring这些框架比较熟悉。
hibernate中,l1,l2的cache,给一个经验值.
答:没有做过.我主要是使用它的功能,都是默认设置.
volecity中,如果我要在渲染到页面之前统一对内容进行拦截处理应该如何做?
答:做一个filter,在请求进来的时候拦截.
我说的是 velocity中渲染到页面之前的拦截.
答:这个我不知道.
那你谈谈你平时做哪些工作.
答:用jsp,struts,hibernate,spring做业务逻辑.
十几年都是做这些吗?
答:以前没有这些框架,就是用JSP连接数据库.
你使用这些"东西"这么久,有对这些"东西"的原理研究过吗?或者去读一下它们的源码.
答:没有.就是一直在用.
</pre>
<p><br />
以上仅仅是两个例子，我们可以看到，越是无知，则越自信，在我们的职业发展中，需要我们以谦虚的心态，不停学习，才能到达我们想要的高度。 <br />
<br />
<br />
</p>
</div>
<h2><a id="到达职业目标之路" name="到达职业目标之路">到达职业目标之路</a></h2>
<div class="level2"></div>
<div class="level3">
<p><em>工作时间：</em> </p>
</div>
<h3><a id="对团队负责_对项目负责" name="对团队负责_对项目负责">对团队负责、对项目负责</a></h3>
<div class="level3">
<ul>
    <li class="level1">
    <div class="li">主动完成任务，帮助团队达到目标（结合scrum自我管理）</div>
    <li class="level2">
    <div class="li">主动对项目进度、项目质量进行监控</div>
    </li>
</ul>
<p><br />
</p>
</div>
<h3><a id="自我管理_时间管理" name="自我管理_时间管理">自我管理、时间管理</a></h3>
<div class="level3">
<ul>
    <li class="level1">
    <div class="li">时间管理中的2/8原则，每日列下工作内容，先完成关键任务，再完成重要任务</div>
    <ul>
        <li class="level3">
        <div class="li">自我对任务负责，对质量负责，对工作态度负责</div>
        </li>
    </ul>
    </li>
</ul>
<p><br />
<em>自由时间：</em> </p>
</div>
<h3><a id="以行业专家为榜样_热爱行业_时刻关注行业发展" name="以行业专家为榜样_热爱行业_时刻关注行业发展">以行业专家为榜样，热爱行业、时刻关注行业发展</a></h3>
<div class="level3">
<ul>
    <li class="level1">
    <div class="li">订阅行业专家博客，了解最新动态</div>
    <li class="level3">
    <div class="li">与行业专家成为朋友，参与开源项目等</div>
    </li>
</ul>
<p><br />
</p>
</div>
<h3><a id="深入某一领域_分享_成为专家" name="深入某一领域_分享_成为专家">深入某一领域、分享、成为专家</a></h3>
<div class="level3">
<ul>
    <li class="level1">
    <div class="li">埋头深入学习，沉下心，稳扎稳打</div>
    <li class="level2">
    <div class="li">发表是最好的学习，将认识梳理，发表成文</div>
    <li class="level2">
    <div class="li">xp（极限编程）中有一条分享，开放的公司都不定期举行分享会，从聆听者到宣讲者的转变</div>
    </li>
</ul>
</div>
<img src ="http://www.blogjava.net/jiangyy/aggbug/322312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2010-05-30 22:37 <a href="http://www.blogjava.net/jiangyy/articles/322312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> scrum方法与思想 </title><link>http://www.blogjava.net/jiangyy/articles/322311.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Sun, 30 May 2010 14:36:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/322311.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/322311.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/322311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/322311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/322311.html</trackback:ping><description><![CDATA[<p>scrum/xp敏捷项目管理已在全球各大公司使用。作为一个小项目团队，希望使用scrum/xp帮助项目管理，帮助团队建设，帮助人员成长。 <br />
</p>
<h1><a id="scrum方法" name="scrum方法">scrum方法</a></h1>
<div class="level1">
<ol>
    <li class="level1">
    <div class="li">sprint会议:将需求、任务细分blacklog,估时</div>
    <li class="level1">
    <div class="li">每日早会、任务墙（查看每日工作、燃尽图burn down char监控项目进度）<a class="media" title="project:taskbroad1.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3Ascrum%E6%96%B9%E6%B3%95%E4%B8%8E%E6%80%9D%E6%83%B3&amp;media=project:taskbroad1.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:taskbroad1.jpg" /></a></div>
    <li class="level1">
    <div class="li">真实的任务墙<a class="media" title="project:taskbroad.jpg" href="http://xiaoerduo.com/wiki/lib/exe/detail.php?id=project%3Ascrum%E6%96%B9%E6%B3%95%E4%B8%8E%E6%80%9D%E6%83%B3&amp;media=project:taskbroad.jpg"><img class="media" alt="" src="http://xiaoerduo.com/wiki/lib/exe/fetch.php?media=project:taskbroad.jpg" /></a></div>
    <li class="level1">
    <div class="li">开发自己管理任务、团队对目标负责。结合xp的测试驱动、持续集成、代码检查、代码重构优化。</div>
    <li class="level1">
    <div class="li">sprint回顾（完成的功能）、总结（估时是否正确）</div>
    </li>
</ol>
<p><br />
</p>
</div>
<h1><a id="为何要scrum项目管理" name="为何要scrum项目管理">为何要scrum项目管理</a></h1>
<div class="level1">
<p>普遍员工对项目管理冷漠，认为无关己任。<br />
请员工回答，作为公司一名优秀员工，你使用了哪些项目管理？<br />
请员工回答，作为公司一名优秀员工，如果项目由你负责，你将使用哪些项目管理？<br />
<br />
在团队中、项目中积极实施项目管理，是增长每个员工专业技能的方法之一，能帮助个人的职业发展。所以，员工应积极参与项目管理实施工作。<br />
大部分员工都在工作中没有关心项目管理，并没有积极参与项目，处于被动安排状态，项目进度主要有项目负责人监控。<br />
<br />
scrum项目管理是众多软件开发管理者不断优化得出的项目管理方法。<br />
与传统的项目经理对项目进度风险控制、项目经理安排任务对比，scrum的全体成员对任务工作量评估，每日早会，任务认领，能发挥员工的工作主动性、参与性，并通过燃尽图(burn down char)及时监控项目，从而保证项目质量。<br />
<br />
</p>
</div>
<h1><a id="scrum思想" name="scrum思想">scrum思想</a></h1>
<div class="level1">
<p>团队成员自我管理：scrum的目标是员工自主的完全参与项目进行中各个环节，任务时间估算、任务自我安排、任务质量保证、任务进度监控。 </p>
</div>
<img src ="http://www.blogjava.net/jiangyy/aggbug/322311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2010-05-30 22:36 <a href="http://www.blogjava.net/jiangyy/articles/322311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Portable operating system interface of unix threads programming</title><link>http://www.blogjava.net/jiangyy/articles/308399.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Wed, 06 Jan 2010 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/308399.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/308399.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/308399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/308399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/308399.html</trackback:ping><description><![CDATA[IPC inter process communication进程间通信

半双工管道
FIFO
全双工管道
命名全双工管道
消息队列
信号量
共享存储
套接字
STREAMS
-------

before understand a thread , one need to first understand is unix process.
<div><br />
</div>
<div><span style="font-family: serif,times;">
<ul>
    <li>进程id,组id,用户id:Process ID, process group ID, user ID, and group ID</li>
    <li>环境Environment</li>
    <li>工作目录Working directory.</li>
    <li>程序指令Program instructions</li>
    <li>Registers寄存器</li>
    <li>Stack栈</li>
    <li>Heap堆</li>
    <li>File descriptors文件描述</li>
    <li>Signal actions信号事件</li>
    <li>Shared libraries分享libraries</li>
    <li>Inter-process communication tools (such as message queues, pipes, semaphores, or shared memory).进程间通信工具</li>
</ul>
<p>
<table border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr valign="top">
            <td><img src="https://computing.llnl.gov/tutorials/pthreads/images/process.gif" alt="Unix Process" border="0" height="406" width="450" /></td>
            <td><img src="https://computing.llnl.gov/tutorials/pthreads/images/thread.gif" alt="Process-thread relationship" border="0" height="398" hspace="20" width="450" /></td>
        </tr>
        <tr valign="top">
            <td align="center"><strong>UNIX PROCESS</strong></td>
            <td align="center"><strong>THREADS WITHIN A UNIX PROCESS</strong></td>
        </tr>
    </tbody>
</table>
</p>
</span></div>

<img src ="http://www.blogjava.net/jiangyy/aggbug/308399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2010-01-06 10:34 <a href="http://www.blogjava.net/jiangyy/articles/308399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>计算机搜索</title><link>http://www.blogjava.net/jiangyy/articles/308130.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Mon, 04 Jan 2010 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/308130.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/308130.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/308130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/308130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/308130.html</trackback:ping><description><![CDATA[选择《计算机搜索》
<img src ="http://www.blogjava.net/jiangyy/aggbug/308130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2010-01-04 09:47 <a href="http://www.blogjava.net/jiangyy/articles/308130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分布式计算</title><link>http://www.blogjava.net/jiangyy/articles/308131.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Mon, 04 Jan 2010 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/308131.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/308131.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/308131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/308131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/308131.html</trackback:ping><description><![CDATA[选择《<span  style="font-family: 'lucida grande', verdana, arial, geneva, lucida, sans-serif; font-size: 12px; white-space: pre; ">分布式计算</span>》
<img src ="http://www.blogjava.net/jiangyy/aggbug/308131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2010-01-04 09:47 <a href="http://www.blogjava.net/jiangyy/articles/308131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JMX</title><link>http://www.blogjava.net/jiangyy/articles/307114.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Thu, 24 Dec 2009 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/307114.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/307114.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/307114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/307114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/307114.html</trackback:ping><description><![CDATA[<p>jmx architecture</p>
<p>instrumentation level&nbsp;&nbsp; 设备层<br />
agent level&nbsp;&nbsp;代理层<br />
distributed level&nbsp;分发层</p>
<p>图：1</p>
<p><br />
instrumentation level:<br />
jmx定义了instrumentation level如何去定义资源以被管理。<br />
实现了instrumentation的接口称为managed bean 或MBean.</p>
<p>定义MBean:<br />
1.实现MBean interface<br />
2.实现DynamicMBean</p>
<p>实现自己MBean接口的类称为标准MBean(standard MBean)<br />
Standard MBean可以通过属性、方法修改其内容。<br />
属性通过get,set方法。</p>
<p>MBean interface:<br />
Mbean interafce为 类名+MBean,如MyClass，其MBean定义为MyClassMBean</p>
<p>DynamicMBean interface:<br />
getMBeanInfo(): MBeanInfo<br />
getAttribute( attribute:String ): Object<br />
getAttributes( attributes:String[] ): AttributeList<br />
setAttribute( attribute:Attribute ): void<br />
setAttributes( attributes:AttributeList ): AttributeList<br />
invoke( actionName:String,params:Object[],signature:String[] ): Object</p>
<p><br />
Standard MBean 继承模式：<br />
B类无MBean,通过继承A类得到AMBean的接口。</p>
<p>B类有MBean接口，则通过继承A,也无法得到AMBean的接口<br />
（以下待测试,B既实现了BMbean接口，又继承A类）<br />
AMBean &lt;- BMBean<br />
A &lt;- B<br />
则B只继承BMBean的内容，对AMBean无关系</p>
<p>DynamicMBean 继承模式类似Standard MBean,通过继承A类得到getters/setters接口。</p>
<p><br />
实践：<br />
1.下载demo,javac编译后运行<br />
2.打开jconsole，打开MBean窗口，可以进行参数调用，属性修改。</p>
<p>notification:</p>
<p>javax.management.AttributeChangeNotification[source=com.example.mbeans:type=Hello][type=jmx.attribute.change][message=CacheSize changed]</p>
<p>&nbsp;</p>
<p><br />
&nbsp;资料：<br />
1.JMX_1_4_specification.pdf<br />
2.jmx&nbsp;doc&nbsp;tutorial<br />
3. <span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 12px; color: rgb(62,107,138); font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif">Java Dynamic Management Kit 5.1 Tutorial：</span></span><a href="http://docs.sun.com/app/docs/doc/816-7609">http://docs.sun.com/app/docs/doc/816-7609</a></p>
<img src ="http://www.blogjava.net/jiangyy/aggbug/307114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2009-12-24 10:56 <a href="http://www.blogjava.net/jiangyy/articles/307114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试</title><link>http://www.blogjava.net/jiangyy/articles/306832.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Mon, 21 Dec 2009 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/306832.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/306832.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/306832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/306832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/306832.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/jiangyy/aggbug/306832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2009-12-21 17:17 <a href="http://www.blogjava.net/jiangyy/articles/306832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat 6 </title><link>http://www.blogjava.net/jiangyy/articles/306225.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Wed, 16 Dec 2009 14:34:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/306225.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/306225.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/306225.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/306225.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/306225.html</trackback:ping><description><![CDATA[本文目录：<br />
tomcat web application deployment<br />
use jmx proxy servlet<br />
tomcat 6 class loader <br />
高效IO<br />
<br />
<br />
<strong>tomcat web application deployment</strong><br />
concept of Context:一个web应用称为一个context<br />
tomcat通过context描述文件进行配置.context.xml,（不推荐在server.xml配置）<br />
context 配置文件路径：<br />
<ol>
    <li>$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml
    </li>
    <li>$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml </li>
</ol>
<br />
<ul>
    <li>In the <code>$CATALINA_BASE/conf/context.xml</code> file:
    the Context element information will be loaded by all webapps.</li>
    <li>In the
    <code>$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default</code>
    file: the Context element information will be loaded by all webapps of
    that
    host.</li>
    <li>In individual files (with a ".xml" extension) in the
    <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.
    The name of the file (less the .xml extension) will be used as the
    context path. Multi-level context paths may be defined using #, e.g.
    <code>foo#bar.xml</code> for a context path of <code>/foo/bar</code>.
    The
    default web application may be defined by using a file called
    <code>ROOT.xml</code>.</li>
    <li>Only if a context file does not exist for the application in the
    <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code>, in an
    individual
    file at <code>/META-INF/context.xml</code> inside the application
    files. If
    the web application is packaged as a WAR then
    <code>/META-INF/context.xml</code> will be copied to
    <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> and renamed
    to
    match the application's context path. Once this file exists, it will
    not be
    replaced if a new WAR with a newer <code>/META-INF/context.xml</code>
    is
    placed in the host's appBase.</li>
    <li>Inside a <a href="http://tomcat.apache.org/tomcat-6.0-doc/config/host.html">Host</a>
    element in the main
    <code>conf/server.xml</code>.</li>
</ul>
<br />
deployment on tomcat startup<br />
tomcat应用的启动顺序<br />
1.有context描述文件的应用<br />
2.已经在appbase目录下解压过的应用。如果.war文件有更新，则旧文件会移除，重新解压。<br />
3..war文件会部署，解压。<br />
<br />
deploying on a running tomcat server<br />
1.war文件拷贝到host appbase目录<br />
2.解压后的应用拷贝到host appbase目录<br />
3.新的war文件覆盖旧的war文件<br />
4.修改/WEB-INF/web.xml文件<br />
5.修改webapp里下面的context描述文件<br />
6.context描述文件拷贝到<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code><br />
<br />
deploying useing tomcat manager（http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html）<br />
使用tomcat manager,需要部署/manager应用<br />
<br />
manager提供以下功能：<br />
1.部署上传的war文件<br />
2.部署本地文件系统<br />
3.列出当前的web应用<br />
4.重新装载web应用,更新<code>/WEB-INF/classes</code> or <code>/WEB-INF/lib</code><br />
5.列出os,jvm参数<br />
6.列出可用jndi资源，在&lt;Context&gt;的&lt;ResourceLink&gt;配置<br />
7.列出安全规则<br />
8.启动应用<br />
9.关闭应用<br />
10.卸载应用，删除document文件<br />
<br />
添加context应用在manager.xml中（<code>$CATALINA_BASE/conf/[enginename]/[hostname]</code>），以下是例子：<br />
<pre>&lt;Context path="/manager" debug="0" privileged="true"<br />
<br />
<br />
<br />
docBase="/usr/local/kinetic/tomcat6/server/webapps/manager"&gt;<br />
<br />
<br />
<br />
&lt;/Context&gt;<br />
<br />
<br />
<br />
</pre>
三种使用manager的方式：<br />
<code>1.通过页面接口：http://localhost/manager/html/</code> <br />
2.通过uri提供命令，返回简单txt文件<br />
3.使用ant文件<br />
<br />
配置tomcat manager的权限<br />
1.内存范围：<code>修改$CATALINA_BASE/conf/tomcat-users.xml，以下是一个例子：</code>
<table border="0" cellpadding="0" cellspacing="4">
    <tbody>
        <tr>
            <td bgcolor="#023264" height="1" width="1"><img alt="" src="http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif" border="0" height="1" hspace="0" width="1" /></td>
            <td bgcolor="#023264" height="1"><img alt="" src="http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif" border="0" height="1" hspace="0" width="1" /></td>
            <td bgcolor="#023264" height="1" width="1"><img alt="" src="http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif" border="0" height="1" hspace="0" width="1" /></td>
        </tr>
        <tr>
            <td bgcolor="#023264" width="1"><img alt="" src="http://tomcat.apache.org/tomcat-6.0-doc/images/void.gif" border="0" height="1" hspace="0" width="1" /></td>
            <td bgcolor="#ffffff" height="1">
            <pre>&lt;user name="craigmcc" password="secret" roles="standard,manager" /</pre>
            </td>
        </tr>
    </tbody>
</table>
2.jdbc范围<br />
3.jndi范围<br />
<br />
使用RemoteAddrValve对ip进行限制<br />
&lt;Context path="/manager" privileged="true"<br />
<pre>         docBase="/usr/local/kinetic/tomcat6/server/webapps/manager"&gt;<br />
<br />
<br />
<br />
&lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"<br />
<br />
<br />
<br />
allow="127\.0\.0\.1"/&gt;<br />
<br />
<br />
<br />
&lt;/Context&gt;<br />
<br />
<br />
<br />
</pre>
命令行模式<br />
命令行使用以下形式：<br />
http://{host}:{port}/manager/{command}?{parameters}<br />
<br />
<br />
<strong>use jmx proxy servlet</strong><br />
JMX proxy servlet是一个修改tomcat内部设置的轻量级代理。通过jmx proxy servlet可以查询、修改tomcat的一些信息<br />
<br />
显示全部信息：<br />
<a href="http://localhost:8080/manager/jmxproxy/?qry=j2eeType=Servlet">http://localhost:8080/manager/jmxproxy</a><br />
<br />
use query command:<br />
<a href="http://localhost:8080/manager/jmxproxy/?qry=j2eeType=Servlet">http://localhost:8080/manager/jmxproxy/?qry=j2eeType=Servlet</a><br />
但在测试中,此功能无法查询出来，报错:Error - javax.management.MalformedObjectNameException: Domain part must be specified<br />
<br />
use set command:<br />
<a href="http://localhost:8080/manager/jmxproxy/?set=Catalina:j2eeType=WebModule,name=//localhost/skyBook,J2EEApplication=none,J2EEServer=none&amp;att=override&amp;val=true">http://localhost:8080/manager/jmxproxy/?set=Catalina:j2eeType=WebModule,name=//localhost/skyBook,J2EEApplication=none,J2EEServer=none&amp;att=override&amp;val=true</a><br />
set=Name<br />
att=attribute name<br />
val= value <br />
<br />
<br />
<strong>tomcat 6 class loader </strong><br />
tomcat6使用一个不同的类装载器，让容器的不同部分， 和web应用程序在容器上运行，能够获得不同的库的类和资源。这个机制用来实现servlet 2.4规范。<br />
<br />
系统启动时,tomcat创建了一组类装载器,如下的父子结构：<br />
<pre>Bootstrap<br />
<br />
<br />
<br />
|<br />
<br />
<br />
<br />
System<br />
<br />
<br />
<br />
|<br />
<br />
<br />
<br />
Common<br />
<br />
<br />
<br />
/        \<br />
<br />
<br />
<br />
Webapp1   Webapp2 ..</pre>
Bootstrap : 装载jvm需要的基础类，和系统扩展文件夹下的类$java_home/jre/lib/ext.<br />
<br />
System : 通常装载CLASSPATH,装载的类对tomcat以及web应用都可见。而标准的tomcat 6启动脚本（<code>$CATALINA_HOME/bin/catalina.sh</code> or <code>%CATALINA_HOME%\bin\catalina.bat</code>）忽略classpath环境变量。而是通过以下加载资源：<br />
<em>$CATALINA_HOME/bin/bootstrap.jar运行main方法，初始化tomcat 6 server,与class loader.<br />
</em><em>$CATALINA_HOME/bin/tomcat-juli.jar重写包名的common logging api 和java.util.logging.</em>LogManager.<br />
<br />
Common:此装载器装载<code>$CATALINA_HOME/lib下</code>的类，对tomcat以及web 应用可见。<br />
<ul>
    <li><em>annotations-api.jar</em> - JEE annotations classes.
    </li>
    <li><em>catalina.jar</em> - Implementation of the Catalina servlet container portion of Tomcat 6.
    </li>
    <li><em>catalina-ant.jar</em> - Tomcat Catalina Ant tasks.
    </li>
    <li><em>catalina-ha.jar</em> - High availability package.
    </li>
    <li><em>catalina-tribes.jar</em> - Group communication package.
    </li>
    <li><em>el-api.jar</em> - EL 2.1 API.
    </li>
    <li><em>jasper.jar</em> - Jasper 2 Compiler and Runtime.
    </li>
    <li><em>jasper-el.jar</em> - Jasper 2 EL implementation.
    </li>
    <li><em>jasper-jdt.jar</em> - Eclipse JDT 3.2 Java compiler.
    </li>
    <li><em>jsp-api.jar</em> - JSP 2.1 API.
    </li>
    <li><em>servlet-api.jar</em> - Servlet 2.5 API.
    </li>
    <li><em>tomcat-coyote.jar</em> - Tomcat connectors and utility classes.
    </li>
    <li><em>tomcat-dbcp.jar</em> - package renamed database connection pool based on Commons DBCP.
    </li>
    <li><em>tomcat-i18n-**.jar</em> </li>
</ul>
Webappx:装载web应用类。包括：/web-inf/classes，/web-inf/lib。对本web应用可见，不同应用间不可见。<br />
<br />
对于jdk1.5 xml 解析需要替换自己的解析器，使用此配置替换：<br />
<code>-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS</code><br />
<br />
<br />
<strong>高效IO</strong><br />
当使用APR或NIO connecter时,tomcat支持非阻塞IO方式运行servlet.<br />
Comet用来支持异步IO,在读到数据时通过事件event方式触发。<br />
<br />
<code>servlet应实现org.apache.catalina.CometProcessor</code>,以区别与Servlet.service方法.<br />
事件：<br />
EventType.BEGIN：<br />
EventType.READ：<br />
EventType.ERROR：<br />
EventType.END：<br />
<br />
一些子类型：<br />
<ul>
    <li>EventSubType.TIMEOUT: The connection timed out (sub type of ERROR); note that this ERROR type is not fatal, and the connection will not be closed unless the servlet uses the close method of the event.
    </li>
    <li>EventSubType.CLIENT_DISCONNECT: The client connection was closed (sub type of ERROR). method of the event.
    </li>
    <li>EventSubType.IOEXCEPTION: An IO exception occurred, such as invalid content, for example, an invalid chunk block (sub type of ERROR).
    </li>
    <li>EventSubType.WEBAPP_RELOAD: The web application is being reloaded (sub type of END).
    </li>
    <li>EventSubType.SESSION_END: The servlet ended the session (sub type of END). </li>
</ul>
同样的，comet filter也是通过异步事件通知机制实现高效IO<br />
<br />
NIO方式可修改timeout设置<br />
CometEvent event ... event.setTimeout(30 * 1000);<br />
event.getHttpServletRequest().setAttribute("org.apache.tomcat.comet.timeout", new Integer(30 * 1000));<br />
<br />
APR connecter默认timeout时间：<code>soTimeout*50</code><br />
<br />
异步写：<br />
tomcat sendfile功能提供将数据写入静态文件，而不是存放在内存中并阻塞。<br />
sendfile支持需要设置request的属性：<code>org.apache.tomcat.sendfile.support＝</code><code>Boolean.TRUE</code>. <br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/jiangyy/aggbug/306225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2009-12-16 22:34 <a href="http://www.blogjava.net/jiangyy/articles/306225.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>technology ? </title><link>http://www.blogjava.net/jiangyy/archive/2009/12/16/306209.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Wed, 16 Dec 2009 12:04:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/archive/2009/12/16/306209.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/306209.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/archive/2009/12/16/306209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/306209.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/306209.html</trackback:ping><description><![CDATA[tomcat <br />
jetty<br />
mina<br />
rpc<br />
jmx<br />
cache<br />
gfs<br />
read write seperate<br />
table seperate<br />
hadoop<br />
lvs<br />
lenues<br />
report <br />
real time system<br />
spring <br />
hibernate<br />
oracle<br />
mysql<br />
linux<br />
jvm<br />
<br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/jiangyy/aggbug/306209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2009-12-16 20:04 <a href="http://www.blogjava.net/jiangyy/archive/2009/12/16/306209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新生活 @ 2009-12-16</title><link>http://www.blogjava.net/jiangyy/articles/306206.html</link><dc:creator>江永源blog</dc:creator><author>江永源blog</author><pubDate>Wed, 16 Dec 2009 11:46:00 GMT</pubDate><guid>http://www.blogjava.net/jiangyy/articles/306206.html</guid><wfw:comment>http://www.blogjava.net/jiangyy/comments/306206.html</wfw:comment><comments>http://www.blogjava.net/jiangyy/articles/306206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangyy/comments/commentRss/306206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangyy/services/trackbacks/306206.html</trackback:ping><description><![CDATA[经过一个多月来心慌慌的找工作，终于暂时明朗下来。已经有一家公司给出offer.<br />
对于现在的我而言，已经十分幸运。<br />
但是暂时还没最终定下来，也不知道该公司如何。<br />
<br />
本着先就业再择业的态度，还是先拿下吧。<br />
<br />
<br />
开始新的生活，回想起三年来所做的东西。仿佛度过地非常仓促：<br />
vb学习,java学习,j2se,swing,开发servlet,就踏上了第一份工作;<br />
开发js前台页面，开发后台crud，几个网站过去了，来来去去一直在做网站，几个人就完成一个系统。按需求走，也不用考虑任何问题。<br />
那时拿2k的工资，很努力的敲代码。期待3k的工资。现在想想，真实可笑。<br />
<br />
后来，又到一些小公司，开发软件，公司就几个人，想怎么开发就怎么开发，拿spring,hibernate过来，配置几下，一个系统又出来了。<br />
一直在开发一些小系统。中途搞过前端，写过后台，写过socket通信，用过osgi,xfire,josso&#8230;&#8230;,写过php。<br />
工资在2k一直维持了1年有多，后来公司重组，慢慢有了改善，3k,4k.<br />
<br />
后来巧合，到一家大公司做外包。虽然工资4k几，并不高，但是总算看到了很多做技术的人才。对于系统设计，系统架构，软件开发有了更开阔的了解。经验慢慢累计。中途看了很多计算机的书籍。很可惜，因为私人原因没能在那样的公司干下去。<br />
<br />
虽然看了很多书，java开发的经验也有4年了，但是，每个公司招聘要求不一样，在面试过程中也是遇到了一些挫折。<br />
最近一个同事也在找工作，显然他任然怀念当初的公司，也开始拿《java核心技术》等书籍去看。<br />
<br />
和我的理解一样，技术人才不在于你做了什么，写了什么代码，而在于你对技术本生的了解。对各个技术领域，或某领域的深度。写代码只是你懂得的知识的体现而已。如果只局限在写代码，那么在面试过程中，显得十分无力。<br />
<br />
现在来到一个新的城市，开始新的生活，人生是起起伏伏的，现在算是人生的低谷吧，不过也好，可以反思以下自己，反思一下走过的路。<br />
<br />
今后，应该是一个新的生活，作为一个高中生，首要任务是把本科学历拿到。<br />
<br />
其次，对于计算机，踏实地学习。<br />
<br />
多关注计算机以外的东西，金融、投资、朋友交往，等等。<br />
<br />
新的生活，慢慢来吧~~~~~~~~<br />
<br />
<br />
<img src ="http://www.blogjava.net/jiangyy/aggbug/306206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangyy/" target="_blank">江永源blog</a> 2009-12-16 19:46 <a href="http://www.blogjava.net/jiangyy/articles/306206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>