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

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

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

    J2EE劍俠行

    直覺(jué)我的J2EE應(yīng)用生涯,打造我心中的一把利劍。

    常用鏈接

    統(tǒng)計(jì)

    技術(shù)鏈接

    最新評(píng)論

    2006年1月12日 #

    找到一個(gè)好用的UML建模工具-argouml

     很不錯(cuò)的一個(gè)UML建模工具-argouml
         argouml下載地址
         我一眼就看上他的原因是:生成的用例和包圖可能直接生成JAVA代碼,而且準(zhǔn)備無(wú)誤,這正是我要找的。
         我想:以后使用一些框架的話,可能由PD生成一些實(shí)體,然后Hibernate生成pojo等,加入到argouml,然后根據(jù)一個(gè)框架的特性生成一些包 和類.就等于詳細(xì)設(shè)計(jì)了吧.應(yīng)該來(lái)說(shuō)是比詳細(xì)設(shè)計(jì)還實(shí)用的東西.總比哪些WORD文檔好吧.還有讓人看不懂的概要設(shè)計(jì).
        我想從技術(shù)出發(fā),這個(gè)是一條比較適用的路子.下班了.我明天將會(huì)匯報(bào)一下我使用的情況和一些范例.
        反過(guò)來(lái)又想像.這好象是一個(gè)組合的腳手架.好象ROR的零星操作步驟.應(yīng)該學(xué)習(xí).ROR畢竟是一個(gè)新生事物,JAVAEYE的推廣也需要一個(gè)時(shí)間.如果像我這樣的打工,混口飯吃的人還是專心的研究J2EE好一點(diǎn).否則明天就沒(méi)有飯吃了.

        呵呵.我的文章可被JAVAEYE收回到水貼里了,可能自己的能力不如人吧,好好學(xué)習(xí),天天向上,如果看客有什么好的工具和軟件生產(chǎn)思路,可以共同交流。

    posted @ 2007-06-20 13:29 @家軍 閱讀(1846) | 評(píng)論 (1)編輯 收藏

    ROR:習(xí)慣約定優(yōu)于配置(學(xué)習(xí)ROR的第一天)

    今天學(xué)習(xí)了一下ROR,有一些學(xué)習(xí)經(jīng)驗(yàn)東西要與大家分享。
    給ROR加一個(gè)座右銘--------狹窄心腸的日本產(chǎn)物。
    首先,不要一個(gè)一個(gè)的下載Ruby,Rails,建議使用一鍵安裝,下載地址如下:
    InstantRails-1.3-win
    版本說(shuō)明:ruby 1.8.4 (2005-12-24) [i386-mswin32]
    其次,下載一個(gè)目前為止比較好的一個(gè)ROR的實(shí)踐工具:RadRails
    下載地址:radrails-0.7.1-win32
    接下來(lái),設(shè)置一下Radrails的環(huán)境
    1)、Windows/perferences/Ruby/Installed Inteperters/ ->add ruby所在路徑:比如D:\InstantRails\ruby\bin\ruby.exe
    2)、Windows/perferences/Rails/Configuration ->Rails path:比如D:\InstantRails\ruby\bin\rails
    ->Rake path:比如D:\InstantRails\ruby\bin\rake 絕不是bat/cmd
    ->mogrel path:比如D:\InstantRails\ruby\bin\mongrel_rails絕不是bat/cmd

    有了如上的配置后,就只需要和在JAVA當(dāng)中ANT一樣使用。(成功用過(guò)APPFUSE的人就不用害怕了)

    看看日本人寫的第一步:
    1),在RadRails中創(chuàng)建一個(gè)Rails Project,怎么樣會(huì)出來(lái)一堆的東東。
    2),進(jìn)入DOS命令吧,后面的工序都是這樣的,好象買了海爾的洗衣機(jī),第一次是送貨、第二次是用戶回訪,第三次是.....
    進(jìn)入到你的項(xiàng)目處,運(yùn)行ruby script\generate controller MyTest,
    則得到的服務(wù)如下:
    exists app/controllers/
    exists app/helpers/
    create app/views/my_test
    exists test/functional/
    create app/controllers/my_test_controller.rb
    create test/functional/my_test_controller_test.rb
    create app/helpers/my_test_helper.rb
    修改一下my_test_controller.rb

    代碼
    ?????? class ?MyTestController? < ?ApplicationController
    ??????def?index
    ????????render_text?
    " Hello?world!! "
    ??????end?
    ??????end

    在瀏覽器里輸入:http://127.0.0.1:3000/my_test/
    會(huì)出現(xiàn) Hello world!!字樣,
    不過(guò)有意思的是你可以輸入:http://127.0.0.1:3000/My_test/
    http://127.0.0.1:3000/My_Test/
    http://127.0.0.1:3000/my_Test/
    都可以得到這個(gè)值,可能沒(méi)有JAVA哪樣嚴(yán)格吧。
    3)、還有對(duì)數(shù)據(jù)庫(kù)的操作,要配置一個(gè)database.yml(好象Log4j的東東)
    4)、創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候只能夠使用復(fù)數(shù)起名,比如User就不行,只能夠起Users
    下面只要執(zhí)行幾個(gè)命令就可以使用增刪改查了。
    如下是我的操作,下班了,就不多寫了,例子能夠說(shuō)明一切問(wèn)題:
    代碼
    ?1?E:\RORProject\demo>ruby?script/generate?model?user
    ?2?
    ?3???????exists??app/models/
    ?4?
    ?5???????exists??test/unit/
    ?6?
    ?7???????exists??test/fixtures/
    ?8?
    ?9???????create??app/models/user.rb
    10?
    11???????create??test/unit/user_test.rb
    12?
    13???????create??test/fixtures/users.yml
    14?
    15???????exists??db/migrate
    16?
    17???????create??db/migrate/001_create_users.rb
    18?
    19?E:\RORProject\demo>ruby?script/generate?controller?user
    20?exists?app/controllers/
    21?exists?app/helpers/
    22?create?app/views/user
    23?exists?test/functional/
    24?create?app/controllers/user_controller.rb
    25?create?test/functional/user_controller_test.rb
    26?create?app/helpers/user_helper.rb
    27?

    修改user_controller.rb如下:
    代碼
    1????class?UserController?<?ApplicationController
    2????????scaffold:user
    3????end

    最后你的瀏覽器當(dāng)中輸入:http://127.0.0.1:3000/user/list,就包括了對(duì)數(shù)據(jù)庫(kù)表的四個(gè)操作.當(dāng)然你也可以自己定義四個(gè)操作的任意一種.
    最后總結(jié):
    ROR可能是敏捷開發(fā)的一個(gè)好實(shí)踐,但是我覺(jué)得他完成復(fù)雜應(yīng)用進(jìn)不會(huì)有大做為,而至于這一點(diǎn)還需要再做探究。不過(guò)現(xiàn)階段最好的需求就是能夠給用戶快速的寫出一個(gè)不完整的DEMO,這一點(diǎn)為以后打單取得主動(dòng)。

    posted @ 2006-09-29 11:47 @家軍 閱讀(1995) | 評(píng)論 (1)編輯 收藏

    三個(gè)JAVA文件完成你的MVC應(yīng)用

         摘要: 只需要你三個(gè)JAVA類和兩個(gè)配置文件,就可以完成你的MVC應(yīng)用,我們就做一個(gè)示例吧。本文以一個(gè)登錄為例。第一個(gè)JAVA文件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**======================================...  閱讀全文

    posted @ 2006-09-29 11:43 @家軍 閱讀(1901) | 評(píng)論 (3)編輯 收藏

    struts標(biāo)簽,請(qǐng)你走開(系列一)

    在項(xiàng)目開發(fā)的很多時(shí)候,用戶需要更友好,更容易理解的操作界面,而為了能夠達(dá)到這種表現(xiàn)界面,struts標(biāo)簽顯得力不從心,本人經(jīng)過(guò)幾個(gè)項(xiàng)目的開發(fā)當(dāng)中 逐漸的擯棄了struts標(biāo)簽,而由JSTL來(lái)做為JSP頁(yè)面的表達(dá)者。
    struts標(biāo)簽之死穴一 不支持嵌套
    看看這種常見(jiàn)的需求吧。一個(gè)用戶隸屬于一個(gè)職能部門,比如
    項(xiàng)目要求 職能部門有五個(gè)(亂寫的)
    1、企劃部
    2、網(wǎng)絡(luò)集成部
    3、行政部
    4、營(yíng)銷部
    5、產(chǎn)品部
    項(xiàng)目要求 一共有二個(gè)員工
    1、張三 隸屬于行政部
    2、李四 隸屬于營(yíng)銷部
    而你想把張三和李四都列表出來(lái),顯示為如下:
    姓名 部門名稱
    張三 行政部
    李四 營(yíng)銷部
    而且還需要用戶的列表鏈接到修改頁(yè)面當(dāng)中(假如只修改部門)應(yīng)該如何做呢。
    在使用struts標(biāo)簽是很難做到的,除非你非常不在意內(nèi)存的使用(亂寫技術(shù)性代碼)
    看看JSTL是如何做的吧。
    從STRUTS的ACTION當(dāng)中加載兩個(gè)對(duì)象

    List?GetAllDept? = ?UserDAO.GetAllDept(); // 取得所有部門

    List?GetALLUser?
    = ?UserDAO.GetAllUser(); // 取得所有用戶

    request.setAttribute(
    " View_Dept " ,?GetAllDept);

    request.setAttribute(
    " View_User " ,?GetALLUser);
    在頁(yè)面當(dāng)中加入對(duì)JSTL的引用
    <%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"%>

    然后寫代碼如下:
    <table>

    <tr>

    <td?align="center">

    <a?href="User.do?method=EditUser&UserId=<c:out?value='${View_User.UserId}'/>">

    <c:out?value="${View_User.UserName}"?/>?</a>

    </td>

    <td?align="center">

    <c:forEach?items="${View_Dept}"?var="View_Dept">

    <c:if?test="${View_User.Dept.DeptId==View_Dept.DeptId}">

    <c:out?value="${View_Dept.DeptName}"?/>

    </c:if>????????????????????????????

    </c:forEach>

    </td>

    </tr>

    </table>

    其中View_User.Dept.DeptId表示USER表與DEPT表的一個(gè)關(guān)系(外鍵)
    你就可以看到所顯示的列表了。

    還有如果在修改用戶時(shí),則也與上面的差不多,首先在ACTION當(dāng)中加入:

    String?ModifyUserId?=?request.getParameter("GroupUserId");

    if?(ModifyUserId?==?null?&&?ModifyUserId.equals(""))?{

    //這是出錯(cuò)處理

    request.setAttribute(
    "UserMsg",?"User.ValidateUser");

    return?mapping.findForward("Fail");

    }

    DynaValidatorForm?UserActionForm?
    =?(DynaValidatorForm)?form;

    User?user?
    =?UserDAO.GetUser(ModifyUserId);????????

    List?GetAllDept?
    =?UserDAO.GetAllDept();//取得所有部門

    request.setAttribute(
    "View_Dept",?GetAllDept);

    UserActionForm.set(
    "User",?User);
    然后頁(yè)面當(dāng)中顯示如下(部門為L(zhǎng)ISTBOX),例子當(dāng)中只顯示部門
    <html:select?property="DeptAsString">????????????

    <c:forEach?items="${View_Dept}"?var="View_Dept">????????

    <c:choose>????????????????????????

    <c:when?test="${User.Dept.DeptId==View_Dept.DeptId}">

    <option????value="<c:out?value='${View_Dept.DeptId}'?/>"selected>????

    <c:out?value="${View_Dept.DeptName}"?/>????????????

    </option>????????????????????????????

    </c:when>????????????????????????????

    <c:otherwise>????????????????????????

    <option?value="<c:out?value='${View_Dept.DeptId}'?/>">????????

    <c:out?value="${View_Dept.DeptName}"?/></option>????????

    </c:otherwise>????????????????????????

    </c:choose>

    </c:forEach>

    </html:select>

    可以看到HTML的SELECT有一個(gè)DeptAsString,你可以在FORM當(dāng)中指定一個(gè)STRING的FORM屬性。
    這樣用戶的要求就可以完成了。
    本次只說(shuō)明方法,而代碼沒(méi)有經(jīng)過(guò)測(cè)試。希望大家多多觀注我的BLOG,下一次將臭罵ACTIONFROM不支持的DATE類型及解決方法。

    posted @ 2006-09-25 16:36 @家軍 閱讀(448) | 評(píng)論 (0)編輯 收藏

    用二維數(shù)組管理好你零亂的狀態(tài)、分類和其它常用選項(xiàng)

         摘要: 在大家的編碼過(guò)程當(dāng)中,有沒(méi)有遇到過(guò)這么一種情況,很多零亂的狀態(tài)、分類和其它常用選項(xiàng)常常是定義死了。但是沒(méi)有一個(gè)完整的東東來(lái)約束他,在每個(gè)模塊當(dāng)中使用相關(guān)的信息時(shí),往往重新COPY一次,或者COPY過(guò)來(lái)修改一次。如果多人協(xié)作的話,務(wù)必會(huì)讓代碼變的零亂、不好管理等。
    本次主要是把一些靜態(tài)的分類、狀態(tài)或者其它常用選項(xiàng)使用二維數(shù)組管理起來(lái)。如果你是一個(gè)使用JSTL或者STRUTS做前臺(tái)表現(xiàn)的話,你就更應(yīng)該好好關(guān)注了.......  閱讀全文

    posted @ 2006-09-05 13:31 @家軍 閱讀(1278) | 評(píng)論 (0)編輯 收藏

    如果失去工作會(huì)怎么辦?

    ??? 在工作當(dāng)中,遇到了一個(gè)不明智的上級(jí),我是劉羅鍋,但是領(lǐng)導(dǎo)不一定是乾隆。設(shè)計(jì)當(dāng)中的爭(zhēng)執(zhí)成為私下做對(duì)的理由,從此,我感覺(jué)到今年的財(cái)運(yùn)不佳。
    ??? 因?yàn)楣ぷ鳟?dāng)中的爭(zhēng)執(zhí),而讓領(lǐng)導(dǎo)失去了面子??我在郁悶當(dāng)中,為什么呀!好事反而成了壞事。
    ??? 領(lǐng)導(dǎo)的報(bào)復(fù)心理,讓我失去了績(jī)效,所以我感覺(jué)到財(cái)運(yùn)不佳。我很想跳出這個(gè)魔鬼圈,是不是能夠改善一下自己的經(jīng)濟(jì)收入呢?正在想離開這個(gè)公司......
    ??? 發(fā)現(xiàn)自己的軟肋:UML整體設(shè)計(jì)(最好有代碼生成)和XP敏捷開發(fā)。近期需要加強(qiáng)這兩方面的學(xué)習(xí),可以以權(quán)限設(shè)計(jì)為UML做為訓(xùn)練(生成代碼??),以CRM->VtigerCRM為業(yè)務(wù)主線,做一個(gè)XP開發(fā),不過(guò)VtigerCRM的表設(shè)計(jì)真是很糟糕,Indiea人呀。
    ??? 今年的公司很亂,是一個(gè)很糟糕的管理層,可能我以后離開這個(gè)公司后才感覺(jué)到領(lǐng)導(dǎo)者的“聰明才智”吧!完全在內(nèi)耗當(dāng)中生存。我已經(jīng)被領(lǐng)導(dǎo)國(guó)邊緣化,我會(huì)在灰色的區(qū)域彷徨很長(zhǎng)的時(shí)間,或許公司另有高人吧,我已經(jīng)被領(lǐng)導(dǎo)逐漸忽視,自己發(fā)光的時(shí)間也只有一年,好象知了一樣。
    ??? “人貴有自知之明”,如果領(lǐng)導(dǎo)沒(méi)有重視,只是為了發(fā)揮自己的最低性能的話,我完全有很多的時(shí)間來(lái)學(xué)習(xí)知識(shí),我很慶幸自己和開源代碼有很大的信心,我將在以后的時(shí)間里,為開源界展示自己的能力。
    ??? 首先要把自己學(xué)習(xí)到的知識(shí)透明化,其次我會(huì)在開源中小型的CRM軟件當(dāng)中做出自己應(yīng)有的貢獻(xiàn)。

    posted @ 2006-07-24 11:37 @家軍 閱讀(467) | 評(píng)論 (1)編輯 收藏

    struts表單 vs JSTL表現(xiàn)之多條件查詢示例

    ??? struts表單主要是利用actionform來(lái)取得JSP頁(yè)面所有的request的,所有的Struts標(biāo)簽無(wú)非在取得request當(dāng)中的所有INPUT,并賦值回標(biāo)簽值的,同理,JSTL能夠在JSP表單當(dāng)中輕易的表現(xiàn)要輸出的結(jié)果。
    ??? 如果你是高手,你就知道這個(gè)標(biāo)題有誤,是的,struts表單與JSTL表現(xiàn)沒(méi)有可比性,但是如果我們要在實(shí)現(xiàn)一個(gè)多條件的查詢頁(yè)面時(shí),這個(gè)比較就比較有效了。
    ??? 我不妨比較一下利用struts表單的查詢實(shí)現(xiàn) 和 利用JSTL做為表現(xiàn)而實(shí)現(xiàn)的查詢功能有什么不同,讓讀者尋其方便。
    ??? 示例說(shuō)明:
    ??? 用戶表-USER
    ??? username? 用戶名稱
    ??? loginid?? 登錄ID
    ??? sex?????? 性別
    ??? 一、利用struts表單的查詢實(shí)現(xiàn)
    ??????? 實(shí)現(xiàn)步驟:
    ??????? 創(chuàng)建多條件的序列化對(duì)象(java)->在struts.config當(dāng)中申明actionform->Action當(dāng)中實(shí)現(xiàn)->輸出結(jié)果
    ???????
    ????/**?The?value?of?the?simple?userName?property.?*/
    ????
    private?java.lang.String?userName;
    ????
    /**?The?value?of?the?simple?loginId?property.?*/
    ????
    private?java.lang.String?loginId;
    ????
    /**?The?value?of?the?simple?sex?property.?*/
    ????
    private?java.lang.String?sex;
    ????
    /**
    ?????*?Return?the?value?of?the?USER_NAME?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getUserName()
    ????{
    ????????
    return?this.userName;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?USER_NAME?column.
    ?????*?
    @param?userName
    ?????
    */
    ????
    public?void?setUserName(java.lang.String?userName)
    ????{
    ????????
    this.userName?=?userName;
    ????
    /**
    ?????*?Return?the?value?of?the?LOGIN_ID?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getLoginId()
    ????{
    ????????
    return?this.loginId;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?LOGIN_ID?column.
    ?????*?
    @param?loginId
    ?????
    */
    ????
    public?void?setLoginId(java.lang.String?loginId)
    ????{
    ????????
    this.loginId?=?loginId;
    ????}
    ????
    /**
    ?????*?Return?the?value?of?the?sex?column.
    ?????*?
    @return?java.lang.String
    ?????
    */
    ????
    public?java.lang.String?getSex()
    ????{
    ????????
    return?this.sex;
    ????}

    ????
    /**
    ?????*?Set?the?value?of?the?sex?column.
    ?????*?
    @param?loginId
    ?????
    */
    ????
    public?void?setSex(java.lang.String?sex)
    ????{
    ????????
    this.sex?=?sex;
    ????}
    <!-- struts_fonfig -->
    ???????
    <form-bean?name="UserActionForm"?type="org.apache.struts.validator.DynaValidatorForm">
    <form-property?name="userCondition"?type="com.antbee.searchCondition.UserFindCondition"?/>????????
    ????????
    </form-bean>
    Action當(dāng)中
    DynaValidatorForm?UserForm?=?(DynaValidatorForm)?form;
    ????????UserFindCondition?Condition?
    =?(UserFindCondition)?UserActionForm
    ????????????????.get(
    "userCondition");//?取得查詢條件
    List?user?=?userManager.find(Condition,
    ????????????????(iCurPageNo?
    -?1)?*?pageCon.PAGE_SIZE,?pageCon.PAGE_SIZE);//呵呵,加入了hibernate的分頁(yè)
    具體實(shí)現(xiàn):
    ????public?List?find(UserFindCondition?Condition,?int?begin,
    ????????????
    int?count)?{
    ????????StringBuffer?sql?
    =?new?StringBuffer("from?User?as?a?where?1=1");??????????????
    ? ? ? ?
    if?(Condition?!=?null)?{
    ????????????makeSql(sql,?shipmentFindCondition);
    ????????}
    ????????String?fsql?
    =?sql.toString();
    ????????Query?query?
    =?this.getSession().createQuery(fsql);
    ????????
    if?(Condition?!=?null)?{
    ????????????setParameter(query,?Condition);
    ????????}
    ????????query.setFirstResult(begin);
    ????????query.setMaxResults(count);
    ????????List?tt?
    =?query.list();
    ????????
    return?tt;
    ????}

    --
    ??? /**
    ??? ?* 根據(jù)條件生成一個(gè)sql語(yǔ)句
    ??? ?*
    ??? ?* @author 和
    ??? ?* @param sql
    ??? ?*??????????? 初始的sql語(yǔ)句(一般為select a from A as a where 1=1)
    ??? ?* @param condition
    ??? ?*??????????? 查詢的條件
    ??? ?* @return
    ??? ?* @version 1.0
    ??? ?*/
    private
    ?void?makeSql(StringBuffer?sql, UserFindCondition?condition)?{
    ????????
    if?(condition.getUsername()?!=?null
    ????????????????
    &&?!condition.getUsername().toString().equals(""))?{
    ????????????sql
    ????????????????????.append(
    "?and a.username like?:username");
    ????????}

    ????????
    if?(condition.getLoginid()?!=?null
    ????????????????
    &&?!condition.getLoginid(().equals(""))?{
    ????????????sql
    ????????????????????.append(
    "?and a.loginid( =?:loginid(");
    ????????}

    ????????
    if?(condition.getSex()?!=?null
    ????????????????
    &&?!condition.getSex().equals(""))?{
    ????????????sql.append(
    "?and a.sex =?:sex");
    ????????}


    ????}

    ????
    /**
    ?????*?根據(jù)條件設(shè)置query的值
    ?????*?
    ?????*?
    @author?和
    ?????*?
    @param?query
    ?????*????????????一個(gè)hibernate的Query對(duì)象
    ?????*?
    @param?condition
    ?????*????????????查詢的條件
    ?????*?
    @return
    ?????*?
    @version?1.0
    ?????
    */
    ????
    private?void?setParameter(Query?query, UserFindCondition?condition)?{

    ????????
    if?(condition.getUsername()?!=?null
    ????????????????
    &&?!condition.getUsername().equals(""))?{
    ????????????query.setString(
    "username",?"%"?+?condition.getUsername()
    ????????????????????
    +?"%");
    ????????}

    ????????
    if?(condition.getLoginid()?!=?null
    ????????????????
    &&?!condition.getLoginid().equals(""))?{
    ????????????query.setString(
    "loginid",?condition.getLoginid());
    ????????}

    ????????
    if?(condition.getSex()?!=?null
    ????????????????
    &&?!condition.getSex().equals(""))?{
    ????????????query.setString(
    "sex",?condition.getSex());
    ????????}?????

    ????}

    呵呵,笑死人了,這個(gè)方法很通用,我才在我的第二個(gè)項(xiàng)目當(dāng)中才用到,真是可惜,當(dāng)然了,使用Actionform有一個(gè)毛病就是對(duì)date類型要轉(zhuǎn)換成STRING類型來(lái)處理,這是actionform的一個(gè)死穴。還有對(duì)Actionform不能夠重置,只能夠回來(lái)從前。不知道這群設(shè)計(jì)者怎么想的,真是由于這一點(diǎn),所以我們有必要使用最原始的方法來(lái)解決問(wèn)題了。使用頁(yè)面當(dāng)中的input,我們來(lái)拼request如何?
    ?? 二、利用JSTL做為表現(xiàn)而實(shí)現(xiàn)的查詢功能
    ???? 步驟:在JSP頁(yè)面布置很多的input,當(dāng)然,你可以加入value了。(省略了...)
    ?????????? 創(chuàng)建查詢條件的序列化對(duì)象(同樣user.java)
    ?????????? 在action當(dāng)中拼個(gè)condition了,做為查詢條件,后面的處理類同第一種方式。
    ?????UserSearchCondition?userSearchCondition?=?null;
    ?????userSearchCondition?
    =?makeUserSearchCondition(request);

    private UserSearchCondition?makeUserSearchCondition(HttpServletRequest?request)?throws?Exception{
    ???????
    UserSearchCondition userSearchCondition?=?new?OrderSearchCondition();
    ????????String username
    =?request.getParameter("Username");
    ????????String loginid
    =?request.getParameter("Loginid");
    ????????String sex
    =?request.getParameter("Sex");??
    ???????

    ????????????????
    ????????
    if(username!=?null?&&?!username.trim().equals("")){
    ???????????
    usernameSearchCondition.setUsername(username);
    ????????}
    ????????
    ????????
    if(loginid? !=?null?&&?!loginid.trim().equals("")){
    ??????????? userSearchCondition.set
    Loginid (loginid );
    ????????}
    ????????
    ????????
    if(sex !=?null?&&?!sex.trim().equals("")){????????
    ??????????? userSearchCondition.setSex(
    sex);
    ????????}??????

    ????????
    ????????
    return userSearchCondition;
    ????}

    ???? 以后的方法,我就不用再做舉例了吧,可以參考如上第一種方法的實(shí)現(xiàn).
    ???? 第二種方法的好處就是:在頁(yè)面上比較好控制,比如重置,又比如日期性數(shù)據(jù)等。
    ???? (所有過(guò)程當(dāng)中的代碼沒(méi)有經(jīng)過(guò)測(cè)試,只是說(shuō)明這種方法而已)

    posted @ 2006-07-21 11:20 @家軍 閱讀(2712) | 評(píng)論 (1)編輯 收藏

    hibernate的延遲加載通用方法

    呵呵,在忙一個(gè)項(xiàng)目,潛水很久,現(xiàn)在冒個(gè)泡:
    (本文適用在struts+spring+hibernate3上做開發(fā)的蟲蟲們)
    類名:HibernateUtil

    package?com.antbee.j2eemodel.util;

    import?java.lang.reflect.InvocationTargetException;
    import?java.lang.reflect.Method;
    import?java.util.Collection;
    import?java.util.Iterator;

    import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    public?class?HibernateUtil?extends?HibernateDaoSupport?{

    /**
    *?初始化POJO類
    *?
    @author?@家軍
    *?
    @param?object?POJO對(duì)象
    *?
    @param?methodName?方法名稱
    *?
    @return
    *?
    @version?1.0
    */
    public?void?initialize(Object?object,?String?methodName)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

    String[]?methodArray?
    =?methodName.split("\\.");
    Method?method?
    =?null;
    Object?initializeObject?
    =?object;

    if(methodArray.length?==?1){
    this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
    method?
    =?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
    initializeObject?
    =?method.invoke(initializeObject,?new?Object[]?{});
    this.getHibernateTemplate().initialize(initializeObject);
    }
    else{
    for(int?i=0;i<methodArray.length;i++){
    method?
    =?initializeObject.getClass().getMethod(methodArray[i],?new?Class[]?{});
    initializeObject?
    =?method.invoke(initializeObject,?new?Object[]?{});
    }
    this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
    this.getHibernateTemplate().initialize(initializeObject);
    }
    }

    /**
    *?初始化POJO類
    *?
    @author?@家軍
    *?
    @param?object?POJO對(duì)象
    *?
    @param?methodName?方法名稱數(shù)組
    *?
    @return
    *?
    @version?1.0
    */
    public?void?initialize(Object?object,?String?methodName[])
    throws?SecurityException,?NoSuchMethodException,
    IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

    for?(int?i?=?0;?i?<?methodName.length;?i++)?{
    String[]?methodArray?
    =?methodName[i].split("\\.");
    Method?method?
    =?null;
    Object?initializeObject?
    =?object;

    if(methodArray.length?==?1){
    this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
    method?
    =?object.getClass().getMethod(methodArray[0],?new?Class[]?{});
    initializeObject?
    =?method.invoke(initializeObject,?new?Object[]?{});
    this.getHibernateTemplate().initialize(initializeObject);
    }
    else{
    for(int?j=0;j<methodArray.length;j++){
    method?
    =?initializeObject.getClass().getMethod(methodArray[j],?new?Class[]?{});
    initializeObject?
    =?method.invoke(initializeObject,?new?Object[]?{});
    }
    this.getHibernateTemplate().lock(initializeObject,?org.hibernate.LockMode.NONE);
    this.getHibernateTemplate().initialize(initializeObject);
    }
    }

    }

    /**
    *?初始化POJO類
    *?
    @author?@家軍
    *?
    @param?object?POJO對(duì)象
    *?
    @return
    *?
    @version?1.0
    */
    public?void?initialize(Object?object)?throws?SecurityException,?NoSuchMethodException,?IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{
    this.getHibernateTemplate().lock(object,?org.hibernate.LockMode.NONE);
    this.getHibernateTemplate().initialize(object);
    }

    /**
    *?初始化POJO類
    *?
    @author?@家軍
    *?
    @param?collection?POJO對(duì)象集合
    *?
    @param?methodName?方法名稱數(shù)組
    *?
    @return
    *?
    @version?1.0
    */
    public?void?initialize(Collection?collection,?String?methodName[])
    throws?SecurityException,?NoSuchMethodException,
    IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

    for(Iterator?i=collection.iterator();i.hasNext()Wink{
    Object?object?
    =?i.next();
    this.initialize(object,methodName);
    }
    }

    /**
    *?初始化POJO類
    *?
    @author?@家軍
    *?
    @param?collection?POJO對(duì)象集合
    *?
    @param?methodName?方法名稱
    *?
    @return
    *?
    @version?1.0
    */
    public?void?initialize(Collection?collection,?String?methodName)
    throws?SecurityException,?NoSuchMethodException,
    IllegalArgumentException,?IllegalAccessException,?InvocationTargetException?{

    for(Iterator?i=collection.iterator();i.hasNext()Wink{
    Object?object?
    =?i.next();
    this.initialize(object,methodName);
    }
    }
    }?

    這個(gè)方法的好外是:可以不在hbm.xml的文件當(dāng)中,指定為lazy=true這個(gè)模式,可以直接使用。使用方法如下:
    如果你使用SPRING,則需要把hibernateUtil注入其中:
    ?<bean?id="hibernateUtilTarget"?class="com.antbee.j2eemodel.util.HibernateUtil">
    <property?name="sessionFactory">
    <ref?local="mssqlSessionFactory"?/>
    </property>
    </bean>

    <bean?id="hibernateUtil"?parent="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property?name="target">
    <ref?local="hibernateUtilTarget"?/>
    </property>
    </bean>
    <!--配置基礎(chǔ)事務(wù)-->
    <bean?id="BaseTransactionProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"?abstract="true">
    <property?name="transactionManager">
    <ref?bean="mssqltransactionManager"?/>
    </property>
    <property?name="proxyTargetClass">
    <value>true</value>
    </property>
    <property?name="transactionAttributes">
    <props>
    <prop?key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean>?

    使用示例:
    如果你使用STRUTS,則需要這樣:
    List?what_ur_view?=?XXXManager.find(.);//取得你要展示的對(duì)象
    //如果這個(gè)對(duì)象當(dāng)中有延遲加載的對(duì)象(SET)時(shí),則需要如下加載就行
    this.hibernateUtil.initialize(what_ur_view,?"getTbShipmentSale");
    //其中g(shù)etTbShipmentSale是其對(duì)象(SET也可以操作)?

    在頁(yè)面顯示的時(shí)候,你就可以使用JSTL如下表述:
    <c:out?value="${what_ur_view.tbShipmentSale.goodsReceivePersonPhone}"?/>//呵呵,是不是很爽呀。?

    同樣的方法,我們也可以對(duì)一個(gè)SET在頁(yè)面進(jìn)行顯示,方法如下:
    <c:forEach?items="${what_ur_view.tbShipmentProductMappingSet}"?var="ProductMapping"?varStatus="status">
    <c:out?value="${ProductMapping.productNum}"?/>
    <c:out?value="${ProductMapping.tbOutOfWarehouse.outOfWarehouseNum}"?/>
    </c:forEach>
    //呵呵,支持多級(jí)嵌套,?

    在ACTION當(dāng)中則需要加入
    hibernateUtil.initialize(what_ur_view.getTbShipmentProductMappingSet(),
    new?String[]?{?"getTbProduct",?"getTbOutOfWarehouse",
    "getTbProductConfigure"?});?
    呵,如果你要是在HIBERNATE當(dāng)中使用,這個(gè)就太簡(jiǎn)單了吧。

    怎么樣?呵呵呵,
    從此,我對(duì)STRUTS的標(biāo)簽深惡痛絕,而對(duì)JSTL情有獨(dú)鐘了。

    posted @ 2006-07-21 10:09 @家軍 閱讀(5595) | 評(píng)論 (2)編輯 收藏

    成功是一種病態(tài)的堅(jiān)持!

    ?? 很長(zhǎng)的時(shí)間陷入到與同事上級(jí)的斗爭(zhēng)當(dāng)中,無(wú)聊死了,今天回來(lái)看看自己書簽當(dāng)中的網(wǎng)站,感覺(jué)到自己是小人了。我不應(yīng)該留戀明爭(zhēng)暗斗,我應(yīng)該自立自強(qiáng),永不停息。
    ?? 在年前的時(shí)候我曾經(jīng)非常看好compiere的應(yīng)用,想不到今天再看看國(guó)內(nèi)使用的形勢(shì),長(zhǎng)三角和珠三角的廣泛應(yīng)用,還有ORACLE免費(fèi)數(shù)據(jù)庫(kù)的推出,更加印證了我錯(cuò)誤的做法。
    ?? 一個(gè)人最重要的事情就是三個(gè)字:做決定。
    ?? 一個(gè)人想要成功,尤其像我這樣不甘愿給別人打工又有很多想法的人,除非是一種病態(tài)的堅(jiān)持才能夠取得成功。
    ?? 我很討厭公司現(xiàn)行的CRM系統(tǒng),簡(jiǎn)單的說(shuō)一句就是:簡(jiǎn)直就是一個(gè)糊人的、丑陋的MIS系統(tǒng),一點(diǎn)設(shè)計(jì)思想都沒(méi)有,一點(diǎn)產(chǎn)品理念都沒(méi)有。最重要的設(shè)計(jì)者在拼命的逃脫自己的責(zé)任,開發(fā)者在忍受莫大的痛苦,業(yè)務(wù)在每一個(gè)開發(fā)者思想里扭曲......唉,想抽出一點(diǎn)時(shí)間來(lái)都難。
    ?? 我要在以后的時(shí)候里,一則增加自己的業(yè)務(wù)能力,以compiere的應(yīng)用為主;二則要增強(qiáng)我的技術(shù)能力,以 vTigerCRM為藍(lán)本,做一個(gè)J2EE的產(chǎn)品移植。
    ?? 在今年年底以前,自己必須要做到對(duì)compiere的應(yīng)用熟練,能夠完成 vTigerCRM的J2EE實(shí)現(xiàn)。所以自己最重要要做的事是:時(shí)間安排,

    posted @ 2006-07-19 16:35 @家軍 閱讀(393) | 評(píng)論 (0)編輯 收藏

    轉(zhuǎn)摘:從一個(gè)笑話看軟件開發(fā)管理

    來(lái)自于:http://blog.csdn.net/Raptor/archive/2006/05/13/727299.aspx

    關(guān)于軟件開發(fā)的笑話有很多,下面這個(gè)是我剛在QQ群里的看到的:

    1. 程序員寫出自認(rèn)為沒(méi)有Bug的代碼。
    2. 軟件測(cè)試,發(fā)現(xiàn)了20個(gè)Bug。
    3. 程序員修改了10個(gè)Bug,并告訴測(cè)試組另外10個(gè)不是Bug。
    4. 測(cè)試組發(fā)現(xiàn)其中5個(gè)改動(dòng)根本無(wú)法工作,同時(shí)又發(fā)現(xiàn)了15個(gè)新Bug。
    5. 重復(fù)3次步驟3和步驟4。
    6. 鑒于市場(chǎng)方面的壓力,為了配合當(dāng)初制定的過(guò)分樂(lè)觀的發(fā)布時(shí)間表,產(chǎn)品終于上市了。
    7. 用戶發(fā)現(xiàn)了137個(gè)新Bug。
    8. 已經(jīng)領(lǐng)了項(xiàng)目獎(jiǎng)金的程序員不知跑到哪里去了。
    9. 新組建的項(xiàng)目組修正了差不多全部137個(gè)Bug,但又發(fā)現(xiàn)了456個(gè)新Bug。
    10. 最初那個(gè)程序員從斐濟(jì)給飽受拖欠工資之苦的測(cè)試組寄來(lái)了一張明信片。整個(gè)測(cè)試組集體辭職。
    11. 公司被競(jìng)爭(zhēng)對(duì)手惡意收購(gòu)。收購(gòu)時(shí),軟件的最終版本包含783個(gè)Bug。
    12. 新CEO走馬上任。公司雇了一名新程序員重寫該軟件。
    13. 程序員寫出自認(rèn)為沒(méi)有Bug的代碼。

    要我說(shuō),如果真有這樣的公司,不倒閉對(duì)不起人民。

    這個(gè)笑話從程序員開始,到程序員結(jié)束,從頭到尾都在說(shuō)程序員的不是。但是我要說(shuō)的是,這完全是管理者的失敗,從整個(gè)過(guò)程中,看不到任何管理工作。這種管理者不但無(wú)知無(wú)能,還很無(wú)恥——將自己的失敗責(zé)任推給程序員。

    1、程序員憑什么證明他的代碼沒(méi)有BUG?有Test case嗎?有Code review嗎?這個(gè)環(huán)節(jié)管理缺失。

    2、測(cè)試發(fā)現(xiàn)BUG有進(jìn)行BUG管理嗎?有跟蹤嗎?這個(gè)環(huán)節(jié)管理缺失。

    3、憑什么證明程序員已經(jīng)把那10個(gè)BUG修改好了?另10個(gè)又為什么不是BUG?BUG的評(píng)價(jià)標(biāo)準(zhǔn)難道是程序員說(shuō)了算?這個(gè)環(huán)節(jié)管理缺失。

    4、5個(gè)不能工作的BUG修改問(wèn)題有沒(méi)有追究責(zé)任?增加新BUG是修改過(guò)程中不可避免的事情,但是如果有有效的單元測(cè)試機(jī)制,可以大大減少這種情況。這個(gè)環(huán)節(jié)管理缺失。

    5、迭代是正常的,但是問(wèn)題處理于發(fā)散而不是收斂發(fā)展,可見(jiàn)沒(méi)有有效的管理調(diào)控。這個(gè)環(huán)節(jié)管理缺失。

    6、過(guò)于樂(lè)觀的時(shí)間表和不可能達(dá)到的最后期限,都表現(xiàn)出管理者的無(wú)知和無(wú)能。而在這樣的情況下強(qiáng)行推出產(chǎn)品,那就是無(wú)知者無(wú)畏了。

    7、這是對(duì)用戶的不負(fù)責(zé)任,管理者要負(fù)最大的責(zé)任。

    8、這樣的情況還能發(fā)項(xiàng)目獎(jiǎng)金,只能說(shuō)管理者不是一般的愚蠢。

    9、管理工作沒(méi)有任何的改進(jìn),問(wèn)題仍然處于發(fā)散迭代狀態(tài)。管理工作依然沒(méi)有到位。

    10、拖欠測(cè)試部門工資體現(xiàn)出管理者對(duì)質(zhì)量管理工作的忽視以及對(duì)人力資源管理方面一無(wú)所知。

    11、送被收購(gòu)者兩個(gè)字:活該。送收購(gòu)者兩個(gè)字:瞎眼。

    12、可見(jiàn)新管理者與原管理者半斤八兩,都沒(méi)有認(rèn)識(shí)到問(wèn)題的根本所在。不過(guò)也只有這樣的管理者才會(huì)作出收購(gòu)這種公司的決策。

    13、歷史的重演是必然的。

    一個(gè)正常的企業(yè)或是項(xiàng)目,其運(yùn)作必須應(yīng)該是循環(huán)向上進(jìn)行的。而保障這種運(yùn)行的工作就是管理。而管理工作的主要內(nèi)容就是控制,包括控制循環(huán)的節(jié)奏——不能太快也不能太慢,控制發(fā)展的方向——只能向上不能向下,控制運(yùn)作的穩(wěn)定——不能大起大落或時(shí)聚時(shí)散等。

    而這一切,在這個(gè)例子中都看不到。

    在 這個(gè)笑話的例子中,一切都是以開發(fā)工作在驅(qū)動(dòng),這首先就是一個(gè)方向性錯(cuò)誤,產(chǎn)品是為用戶服務(wù)的,當(dāng)然應(yīng)該是以用戶和市場(chǎng)作為驅(qū)動(dòng),并且結(jié)合自身的能力最終 確定工作的重點(diǎn)。這一錯(cuò)誤折射出管理者對(duì)被管理的內(nèi)容很不了解,只好任由比較了解的程序員擺布——事實(shí)上他們除了技術(shù),并不會(huì)了解更多。

    一個(gè)管理者如果對(duì)自己所管理的內(nèi)容不了解,他就不可能管理得好

    這是一件毫無(wú)疑問(wèn)的事,可是國(guó)內(nèi)的軟件業(yè)似乎總是不相信這一點(diǎn)。中國(guó)軟件業(yè)中流毒最深的謊言之一就是:

    管理者只要懂管理就可以,不需要懂技術(shù)。

    其實(shí)這不過(guò)是那些無(wú)知無(wú)能無(wú)恥的管理者為了騙錢而編出來(lái)的,相信這句話的人必將付出金錢的代價(jià)。

    其 次是質(zhì)量管理。基本的質(zhì)量管理常識(shí)告訴我們,每次循環(huán)結(jié)束前,最重的工作就是總結(jié)改進(jìn)。只有這樣才能保證循環(huán)運(yùn)作是向上發(fā)展,而不是失去控制地向下發(fā)展。 也只有有效的質(zhì)量管理,才能保證迭代過(guò)程是收斂發(fā)展,并最終達(dá)到目標(biāo)。但在這個(gè)例子中,這個(gè)部分顯然是缺失的——其中雖然有測(cè)試部門,但是他們的作用僅僅 是質(zhì)量管理中的質(zhì)量檢測(cè)環(huán)節(jié),管理部分還是缺失的。

    然后是人力資源管理。軟件開發(fā)是一項(xiàng)勞動(dòng)密集型的工作,雖然這是腦力勞動(dòng),但同樣意味著人在因素在其中占有決定性的地位。而例子中未改完BUG的程 序員拿到項(xiàng)目獎(jiǎng)金,而同樣辛苦工作的測(cè)試人員卻被拖欠薪資,除了表現(xiàn)出管理者對(duì)他們的工作內(nèi)容的不了解,以及對(duì)質(zhì)量管理工作的不重視以外,還表現(xiàn)出管理者 完全不會(huì)管人,這是一種謀殺團(tuán)隊(duì)的行為——謀殺一個(gè)團(tuán)隊(duì)遠(yuǎn)比建設(shè)要容易得多。

    最后,這個(gè)失敗的管理者把他的經(jīng)歷編成這個(gè)笑話,讓大家看到他被程序員們害得多慘,把程序員妖魔化為一群騙子。但只要稍懂管理的人簡(jiǎn)單分析一下就可以看出來(lái),只不過(guò)是這個(gè)人的無(wú)知和無(wú)能造成了他現(xiàn)在的結(jié)果,而把責(zé)任推給別人的行為更是表現(xiàn)出他的無(wú)恥。

    作為身居高位的管理者,如果連應(yīng)該承擔(dān)的責(zé)任都要推卸,他們還能勝任什么事情呢?

    posted @ 2006-05-15 15:53 @家軍 閱讀(352) | 評(píng)論 (0)編輯 收藏

    我向百度公司進(jìn)軍!

    ???? 百度公司今天搬到我們這幢樓內(nèi),更加刺激了我去百度的念頭,因?yàn)槲蚁矚g創(chuàng)新的工作,所以我將為這一點(diǎn)而去努力奮斗。
    ???? 不是說(shuō)百度公司有多好,主要是想穩(wěn)定上幾年,有一點(diǎn)積蓄了,就可以自己出來(lái)自謀生路。呵呵。看見(jiàn)百度技術(shù)的職位只有無(wú)線搜索技術(shù)用到了JAVA,呵呵,不會(huì)灰心,其實(shí),PYTHON或者RUR都將是以后的方向,至于PHP,我感覺(jué)百度會(huì)在不遠(yuǎn)的將來(lái)拋棄掉的。在服務(wù)器的性能和安全爭(zhēng)端上我只相信JAVA,百度只不過(guò)把這一種技術(shù)很快轉(zhuǎn)化成了資本,如果百度想要和GOOGLE一爭(zhēng)高下,實(shí)質(zhì)性的工作--技術(shù)上必須上要?jiǎng)俪鯣OOGLE一籌才行。而這一點(diǎn)只有行家才知道。

    ???? 我在北京的這幾年都是為代碼,或者就是為純粹的技術(shù)而奮斗,其實(shí)做為軟件公司,其起步主要是靠技術(shù),但是他成名或者有所富裕后,就覺(jué)得人情是一個(gè)比技術(shù)還好玩的東西時(shí),這個(gè)公司就開始有了差距,不過(guò),這個(gè)公司就開始危險(xiǎn)了,或者是窮途末路,只能鉆到錢眼里去了。如果管理層(其實(shí)就是和有權(quán)的腐敗工廠DANG有關(guān)系的人)沒(méi)有動(dòng)靜的話,這個(gè)公司必死。這就是中國(guó)的國(guó)情。
    ? ?
    ???? 工廠DANG叫嚷的中國(guó)國(guó)情就是要隱含有權(quán)層的灰色收入,況且五千年的封建文化完全可以掩蓋這一點(diǎn)。否則,會(huì)把老祖宗也搬出來(lái)。孔子曰:孟子說(shuō):還有什么孫子談兵什么的。
    ?? ?
    ???? 從程序員的角度思索一下,如上是IF.....ELSE....的語(yǔ)句后,final,工廠DANG治理的天下亂七八糟。

    posted @ 2006-05-08 15:50 @家軍 閱讀(381) | 評(píng)論 (0)編輯 收藏

    我將成為一個(gè)快樂(lè)的房奴

    ??? 呵呵,我在北京買到房子了,貸款了40萬(wàn)元,在簽訂了很多的不平等條約后,我成為了一個(gè)正式的房奴了,但是我很高興。
    ??? 我來(lái)自于農(nóng)村,我最原始的生活憧憬就是改變農(nóng)村這種生活方式,我在很小的時(shí)候就不喜歡農(nóng)村的黃昏,因?yàn)橄﹃?yáng)照著我疲背一天身體時(shí),我感覺(jué)到生命的絕望。于是我要改變自己,改變整個(gè)家庭的命運(yùn)。
    ??? 父親很努力,在我懂事的時(shí)候就進(jìn)入了縣城,我的心理比較的蹋實(shí)了,好象有了可以驕傲的資本,雖然家庭的收入很拮據(jù),但是我認(rèn)為自己要改變的不只是這一點(diǎn)。
    ??? 于是我只身來(lái)到北京,舉目無(wú)親的可憐像和在火車站睡覺(jué)的經(jīng)歷更加激勵(lì)了我,我要生活下去,我從上大學(xué)的時(shí)候就有一個(gè)始終不愈的信念:打不死的精神活到老。
    ??? 我對(duì)生命很是無(wú)所謂,因?yàn)槲抑雷约阂呀?jīng)在階級(jí)社會(huì)的最低層,我不害怕自己的失敗,我也不在乎錢,錢對(duì)于我來(lái)說(shuō)只是肯定我的成績(jī),肯定我的所有為是有效的。
    ??? 呵呵,我成為了北京的一員了,我的想法很簡(jiǎn)單,當(dāng)我20年后,如果我的兒子不在北京發(fā)展了,我將買掉我的房子,回家后,我也應(yīng)該成為自由的生活者了,我已經(jīng)能夠讓我的晚年有所事事了。
    ??? 這一段時(shí)間主要在忙一個(gè)緊急的項(xiàng)目和公積金貸款,我將撰寫一個(gè)比較權(quán)威詳細(xì)的的貸款程序、
    ??? 博客將給我一個(gè)表現(xiàn)自己全新的舞臺(tái),我將為生命之花綻放。

    posted @ 2006-05-08 15:29 @家軍 閱讀(668) | 評(píng)論 (5)編輯 收藏

    危險(xiǎn)的中國(guó)經(jīng)濟(jì)

    ?? 說(shuō)起來(lái)危險(xiǎn)吧,就是對(duì)納稅人的不滿,如果納稅人有追求自由的念頭,那么你就知道中國(guó)的經(jīng)濟(jì)有多危險(xiǎn)。
    ?? 呵呵,危險(xiǎn)的中國(guó)樓市
    ???????? 危險(xiǎn)的就業(yè)大軍
    ???????? 危險(xiǎn)的新農(nóng)村政策
    ? 新農(nóng)村的建設(shè)就是廢除個(gè)人承包制,恢復(fù)現(xiàn)代地主制。看小X忙的不亦樂(lè)乎,他在干著財(cái)富分裂的現(xiàn)代社會(huì)主義建設(shè)。好象農(nóng)民脫離了土地,浮萍會(huì)被枯葉敗枝聚集,壯觀的讓人壓抑。
    ? 程序員不談?wù)瘟恕7駝t,后果不好。

    posted @ 2006-04-28 20:01 @家軍 閱讀(257) | 評(píng)論 (0)編輯 收藏

    快被尖刻的客戶托垮了!

    ? 最近沒(méi)有時(shí)間寫B(tài)LOG,雖然心理有很多想法想寫,想努力的推進(jìn)開源代碼的實(shí)施,但是被尖刻的客戶托垮了。
    ?? 可能是我目前見(jiàn)到最尖刻的客戶吧,用戶在使用軟件當(dāng)中,遇到任何一點(diǎn)可疑的問(wèn)題就打電話“責(zé)令”修改,否則沒(méi)有快速響應(yīng),最高的領(lǐng)導(dǎo)就出面給我施加壓力。我CALL,我真是對(duì)這群濫人生氣。所以我不得不打斷所有的工作而快速響應(yīng),于是晚上自愿加班到9-10點(diǎn),已經(jīng)有三周沒(méi)有休息了。最要命的這個(gè)項(xiàng)目的設(shè)計(jì)者、編碼者、測(cè)試者和實(shí)施者就我一個(gè)人,而我上面有項(xiàng)目經(jīng)理、銷售、部門經(jīng)理、副總,一有問(wèn)題,四個(gè)經(jīng)理就在一旁看結(jié)果,呵呵,壓的人喘不過(guò)氣來(lái)。
    ?? 我也很氣憤這個(gè)鬼公司,老板小氣的要死,實(shí)施時(shí)連個(gè)筆記本都沒(méi)有,而且前一段時(shí)間說(shuō)為了實(shí)施方便才剛剛搞了一個(gè)移動(dòng)硬盤,這才把我的老式的MP3(U盤)才換下來(lái)。所有給客戶的演示的第一步驟就是搬機(jī)器,最后一個(gè)步驟也是搬機(jī)器。唉,這么詭異的公司!!!!!!!!!!!!!!!
    ?? 現(xiàn)在客戶系統(tǒng)要上線,說(shuō)不允許出現(xiàn)BUG,我沒(méi)有敢承諾,所以我也不說(shuō)話,所有上面的領(lǐng)導(dǎo)都告訴我,不允許出現(xiàn)錯(cuò)誤,你說(shuō)我應(yīng)該怎么說(shuō),我也沒(méi)有說(shuō),只是和最小的頭說(shuō):我盡量吧,錯(cuò)應(yīng)該不是錯(cuò),以后就是布丁了。
    ? 果然,正式上線的系統(tǒng)出現(xiàn)錯(cuò)誤了,果然領(lǐng)導(dǎo)生氣了,果然領(lǐng)導(dǎo)給我委派了一個(gè)測(cè)試人員(普通員工臨時(shí)調(diào)配),果然我想離開這個(gè)詭異的公司。果然開源代碼的推廣又一步的延遲.........
    ? 不過(guò),我覺(jué)得我還是很自信,因?yàn)槲乙呀?jīng)盡了自己的最大努力,還有積累了很多的軟件工程的經(jīng)驗(yàn),還有快速開發(fā)的經(jīng)驗(yàn)。
    ? 呵呵,出去混又何妨,方正我已經(jīng)有了項(xiàng)目經(jīng)理證,方正也實(shí)施了這個(gè)近百萬(wàn)的項(xiàng)目了。還是一個(gè)人執(zhí)政,呵呵,和尚養(yǎng)大了,又覺(jué)得廟門小了。
    ?
    ?

    posted @ 2006-04-28 11:03 @家軍 閱讀(293) | 評(píng)論 (0)編輯 收藏

    開源代碼的盈利模式是什么?

     已經(jīng)有很長(zhǎng)時(shí)間沒(méi)有寫日記了,公司的活太累了,所以沒(méi)有清閑的時(shí)間和清靜的心情來(lái)寫B(tài)LOG。
     我現(xiàn)在還深學(xué)陷入到開源代碼的實(shí)現(xiàn)當(dāng)中,我感覺(jué)不到開源代碼將對(duì)以后的生活帶來(lái)什么實(shí)質(zhì)的影響,可能就是能夠加快軟件生產(chǎn)的效率而已,在IT界,開源代碼的商業(yè)模式有過(guò)很多的探討,這也證明了開源代碼的魅力所在。因?yàn)樗苌睿砸詡鹘y(tǒng)的專業(yè)精神是很難很快的了解開源代碼。因?yàn)檠芯克M(fèi)的代價(jià)很大,所以她的存在價(jià)值就越來(lái)越高。
     從很多的資料和個(gè)人的體驗(yàn)當(dāng)中,我深深感覺(jué)到開源代碼的盈利就是服務(wù),而這個(gè)服務(wù)應(yīng)該是多元化、多層面的服務(wù)體系,這個(gè)就好象是一個(gè)宗教一樣,像是道教,人之初,性本善,開源代碼的開源之初總是最好的,以后可能會(huì)魚龍混雜,現(xiàn)在已經(jīng)有這種跡象了。
     從理論上進(jìn)行分析,以后對(duì)開源代碼進(jìn)行管理的企業(yè)將是一個(gè)可以盈利的企業(yè),對(duì)開源代碼提供規(guī)則的將也是商家,在一定實(shí)踐基礎(chǔ)上對(duì)開源代碼進(jìn)行分級(jí),將是另外一個(gè)視角看開源代碼的方式,這個(gè)對(duì)開源代碼的成長(zhǎng)起輔助作用。
     開源代碼對(duì)軟件的生產(chǎn)將提供最大的技術(shù)支持,這只是給有心人的。
     開源代碼也將指導(dǎo)企業(yè)應(yīng)用的先進(jìn)化生產(chǎn),風(fēng)險(xiǎn)和效率將同時(shí)存在。將來(lái)對(duì)開源代碼這種生產(chǎn)力的風(fēng)險(xiǎn)減低和效率提高的服務(wù)型企業(yè)將是開源代碼的最大受益者。
     我現(xiàn)在在拼命的研究AJAX技術(shù),感覺(jué)用戶體驗(yàn)是有了,但是又增加了寫程序的能力,頁(yè)面和實(shí)際業(yè)務(wù)不能夠完全分離,不知道這個(gè)東東能生存多久。AJAX的出生和用戶對(duì)“點(diǎn)擊->返回”的上網(wǎng)體驗(yàn)都是不久的事,哪個(gè)將取得領(lǐng)導(dǎo)地位,還拭目以待。

    posted @ 2006-03-30 13:43 @家軍 閱讀(805) | 評(píng)論 (0)編輯 收藏

    我的信仰地圖[引用 zbw25]

    {只為學(xué)習(xí),并無(wú)其它目的}
    一、概念界定
      前一段時(shí)間在和李杜韓兄討論儒家是否宗教的問(wèn)題,當(dāng)時(shí)我答應(yīng)他,要好好想一想,給出一個(gè)自己的關(guān)于宗教的定義。在這段時(shí)間里,我 始終在思考這個(gè)問(wèn)題。終于我決定將問(wèn)題放在一個(gè)更加廣闊的范圍內(nèi)來(lái)進(jìn)行思考,這就是,什么是宗教?什么是科學(xué)?這個(gè)問(wèn)題似乎反而簡(jiǎn)單了。在不進(jìn)行更加深入 地思考的情況下,我可以先給出科學(xué)的定義:科學(xué)是用理性的、邏輯的方式看待世界的觀點(diǎn),以及方法論。也可以這樣說(shuō):科學(xué)就是以理性和邏輯的方法為特征的世 界觀和方法論。這樣的定義還可以進(jìn)一步解釋為,以理性和邏輯的態(tài)度,來(lái)探索世界,形成結(jié)論,并以此指導(dǎo)自己的生活。那么宗教呢,宗教同樣對(duì)世界進(jìn)行探索, 形成結(jié)論,并以此指導(dǎo)自己的生活。馬克思主義的說(shuō)法是:宗教的顛倒了的世界觀,我并不如此認(rèn)為,這是完全站在以我為中心的立場(chǎng)來(lái)對(duì)宗教信仰的評(píng)價(jià)。這個(gè)問(wèn) 題,我下面還要詳細(xì)分析。因此,我對(duì)宗教的定義是:以一種崇拜的、神秘主義的心態(tài),來(lái)探索世界,形成結(jié)論,并以此來(lái)指導(dǎo)自己的生活。這樣就稱之為宗教。?
       這里要解釋一下理性的、邏輯的心態(tài)與崇拜的、神秘主義的心態(tài)的區(qū)別,前者相信,人類對(duì)世界的探索,將不斷的接近真理,也就是說(shuō),世界是可知的,我們所生 存的世界,對(duì)于科學(xué)來(lái)說(shuō),就是各種各樣可以研究的對(duì)象,可以看成一個(gè)整體,也可以分別研究,從科學(xué)研究的可行性角度來(lái)看,對(duì)世界的研究首先意味著對(duì)問(wèn)題的 分解,也可以說(shuō)是對(duì)世界的分解。因此,科學(xué)很容易的就導(dǎo)向無(wú)神論(無(wú)神論與科學(xué)并不等同,這一點(diǎn)下面再詳細(xì)分析)。而崇拜的、神秘主義的心態(tài),首先就認(rèn)為 這個(gè)世界是一個(gè)整體,而且是一個(gè)人類永遠(yuǎn)無(wú)法徹底把握的整體。面對(duì)浩淼蒼穹,無(wú)盡時(shí)空,人類唯有贊嘆造化的神奇,并越發(fā)深切的意識(shí)到自己的渺小。但是這樣 的態(tài)度并非不可知論,因?yàn)椋宰诮痰膽B(tài)度看待世界的人,同樣在探索世界,而且從未停止。?
      在這樣一個(gè)框架下,我們同樣可以定義哲學(xué),哲學(xué)是另 一種態(tài)度,面對(duì)世界萬(wàn)物,哲學(xué)家是思辨的。他們以一種思辨的心態(tài)來(lái)探索世界,形成結(jié)論,并以此來(lái)指導(dǎo)生活。思辨與邏輯不同,對(duì)于邏輯來(lái)說(shuō),對(duì)就是對(duì),錯(cuò)就 是錯(cuò)。而對(duì)于思辨來(lái)說(shuō),對(duì)也可能是錯(cuò),錯(cuò)也可能是對(duì)。在我看來(lái),一切哲學(xué)都是思辨的,這與馬克思哲學(xué)中的形而上學(xué)/辯證法的概念,并不一致。思辨、狡辯、 詭辯等等都只有一線之隔,而真正的哲人,因?yàn)橐欢梢岳^續(xù)思辨而否定自己,所以最終的結(jié)果要么是發(fā)瘋;要么是停止思辨,開始建立自己的理論體系。而后來(lái)的 哲學(xué)家,就可以在他的思考、思辨停止的地方,開始對(duì)他的反駁。也正是由于哲學(xué)的思辨的本質(zhì),因此哲學(xué)體系的種類最多,最為千差萬(wàn)別,有的像科學(xué),有的像宗 教,有的什么都不像,而自成一家。?
      再界定兩個(gè)概念,知道與信仰。我可以知道自己有左右兩只手,而無(wú)需信仰自己有兩只手。所謂信仰,可以定義 為對(duì)于無(wú)法證明的命題的確信。我們知道,宗教中的絕大多數(shù)命題都是無(wú)法證明的,因此我們同樣都將宗教和信仰連起來(lái)表達(dá)。而對(duì)于科學(xué),我們往往會(huì)認(rèn)為這不是 信仰,因?yàn)榭茖W(xué)結(jié)論都是可以證明的,但是問(wèn)題并沒(méi)有這么簡(jiǎn)單,因?yàn)榭茖W(xué)體系是建立在公理體系的基礎(chǔ)上的,而公理體系是無(wú)法證明的,因此對(duì)科學(xué)的信心,也可 以稱之為信仰,當(dāng)然這樣的信仰需要“糊弄過(guò)去”的地方只有少數(shù)的一些公理和常數(shù)。相對(duì)來(lái)說(shuō)比宗教要“好”很多。但是無(wú)神論并不是這樣,我們可以馬馬虎虎不 將科學(xué)算成信仰的一種,但是無(wú)神論,卻一定是一種信仰,因?yàn)檫@同樣是對(duì)無(wú)法證明的命題的確信。?

    二、儒家的定位?
      現(xiàn)在,基于 已經(jīng)明確的定義,我們可以繼續(xù)回到對(duì)儒家問(wèn)題的討論上來(lái)了。儒家肯定不是科學(xué),也不是單純的宗教,我們可以很清楚地界定,儒家同樣是以一種崇拜的、神秘主 義的心態(tài),來(lái)探索世界,形成結(jié)論,并以此來(lái)指導(dǎo)自己的生活。儒家對(duì)天的崇拜,以及對(duì)天道、天命的近乎神秘主義的信仰,可以說(shuō)是一種很典型的宗教的心態(tài)。?
       但是,問(wèn)題到這里并沒(méi)有結(jié)束,因?yàn)槲覀冞€需要區(qū)分儒家這樣的宗教,與其他的宗教有什么區(qū)別,為什么對(duì)于儒家是否宗教的問(wèn)題,有著如此多的爭(zhēng)論,而在其他 的宗教上幾乎沒(méi)有這樣的疑問(wèn)。按照李杜韓兄的理解,認(rèn)為儒家是一種“準(zhǔn)宗教”,但是什么是“準(zhǔn)”呢?為什么會(huì)“準(zhǔn)”呢?為什么就不能明確的分析出,儒家與 其他的宗教的真正的區(qū)別所在呢??
      在我看來(lái),絕大多數(shù)的宗教,都是起源于人類對(duì)于“生死”問(wèn)題的思考,個(gè)人問(wèn)題,是宗教探討的當(dāng)然的出發(fā)點(diǎn)。 但是,這正是儒家與其他宗教的區(qū)別所在。在基督教的論述中,“永生”是一個(gè)重要的命題,進(jìn)天國(guó),得永生,是基督徒所能得到的最大的恩典;而在佛教的論述 中,“出六道輪回”是每個(gè)佛教徒的追求—即使不是最高追求;而在道教的論述中,“長(zhǎng)生不老”是值得追求,也是可能達(dá)到的目標(biāo)。這些宗教—我對(duì)其他的宗教不 太熟悉—所共有的特征是面向個(gè)人的,是“我”的追求目標(biāo),或是“我”能得到的恩典。這些宗教對(duì)人的教導(dǎo)中都有“向善”的成分,但是都是達(dá)到目標(biāo)的手段—甚 至在基督教不承認(rèn)任何手段的有效性,只要求絕對(duì)的信仰—或方法。因此通常的表述是:“如果你如何如何,你就能怎樣怎樣”。?
      但是在儒家,個(gè)人 問(wèn)題幾乎是完全不被考慮的,社會(huì)、他人、國(guó)家、天下才是真正重要的。正心、誠(chéng)意是為了修身,而修身是為了齊家、治國(guó)、平天下。對(duì)自己下功夫,并不是為了自 己,而是為了比自己更加廣大的,更加重要的事情。天理是重要的,人欲是可以忽略的。這樣的區(qū)別非常明顯,其他的宗教,一切的追求、行為,無(wú)論是對(duì)他人、社 會(huì)還是對(duì)自己,最終的目的都是為了“自己”。所有的努力,甚至“熄滅自己欲望”的努力,也是為了實(shí)現(xiàn)自己最大的欲望。但是,儒家從來(lái)就不告訴你:“信了我 的教,你能如何如何”。也可以這樣說(shuō),儒家從來(lái)都不會(huì)“利用一個(gè)人的私人欲望,來(lái)引人入教”。這也就是為什么歷史上有這么多的邪教,而這些邪教的理論根 源,或借鑒者,可能是基督教、佛教、道教或者其他的什么宗教,但從來(lái)沒(méi)有借鑒過(guò)儒教,因?yàn)樵谌寮业睦碚撝校惶峁皾M足個(gè)人欲望的可能性”。儒家從來(lái)只告 訴他的信徒:“你要成為君子,你要憂國(guó)憂民,你要……”,卻從來(lái)沒(méi)有告訴他的信徒:“成為君子后,你有什么樣的好處……”。?

    三、三種宗教的區(qū)別?
      在論證了儒家與其他宗教的重大區(qū)別之后,我們可以來(lái)討論一下道教、佛教與基督教之間的區(qū)別所在。?
      他們之間的相似之處是很明顯的,這三種宗教都非常的關(guān)注“生死”問(wèn)題,但是如何解決這個(gè)問(wèn)題呢?三種宗教卻給出了不同的答案。?
       為了解答“生死”問(wèn)題,這三種宗教都非常的關(guān)注“時(shí)間”、“始終”等等命題,但是對(duì)于道教來(lái)說(shuō):“道生一、一生二、二生三、三生萬(wàn)物”,可以說(shuō)是一個(gè)無(wú) 窮無(wú)盡的過(guò)程,因此在道教看來(lái),“時(shí)間是有始無(wú)終的”。而對(duì)于佛教來(lái)說(shuō),時(shí)間即沒(méi)有開始,也沒(méi)有結(jié)束,因此“時(shí)間是無(wú)始無(wú)終的”。對(duì)于基督教來(lái)說(shuō),上帝是 一切的創(chuàng)造者,當(dāng)然也包括時(shí)間,一直到最終的審判,“時(shí)間是有始有終的”。?
      因?yàn)椤皶r(shí)間是有始無(wú)終的”,所以對(duì)于道教來(lái)說(shuō),向前看是沒(méi)有意義 的,回去是唯一有意義的事,在老子的“小國(guó)寡民”的理想確定無(wú)法實(shí)現(xiàn)之后,作為個(gè)人回到過(guò)去,回到道,成為唯一的出路。因此,在道家看來(lái),不斷的修煉自 己,最終成仙,并不是向前的進(jìn)步,而是回到了本源,回到了自己的出發(fā)點(diǎn)。?
      因?yàn)椤皶r(shí)間是無(wú)始無(wú)終的”,所以對(duì)于佛教來(lái)說(shuō),這世間的一切都沒(méi)有意義,因?yàn)槿绻袩o(wú)限的時(shí)間,那么世界一定會(huì)不斷的重復(fù),人就在六道中輪回,承受著永遠(yuǎn)的痛苦。唯一的出路,是跳出來(lái),不但要跳出這個(gè)世界,甚至要跳出所有的“時(shí)間和空間”。?
      因?yàn)椤皶r(shí)間是有始有終的”,所以對(duì)于基督教來(lái)說(shuō),一切都是掌握在上帝的手中,沒(méi)有人能夸耀自己的努力,沒(méi)有人能憑借自己的奮斗而找到出路,唯一的道路就是“信”,其他的一切作為,都只具備世間的意義,而沒(méi)有永恒的價(jià)值。?
      三種宗教的理論基礎(chǔ),已經(jīng)如上所分析,而作為世界上的真實(shí)存在的宗教,一定會(huì)面臨具體的“實(shí)踐”問(wèn)題,或者說(shuō)如何判斷一個(gè)實(shí)踐是否符合理論的問(wèn)題。?
       判斷的困難在道教基本上不存在,因?yàn)檫@是一個(gè)明確的以目的為導(dǎo)向的宗教,是否正確,只看你是否有效果,這樣的“實(shí)用主義”,避免了很多理論上的爭(zhēng)論,乃 至人格上的判斷。只要成了仙,就一定得了道。甚至煉丹都可以由別人來(lái)進(jìn)行,自己只要吃了就可以。因此道教的基本發(fā)展歷程,就是一個(gè)不斷探索的過(guò)程,如何才 能更有效地成仙,不妨百家爭(zhēng)鳴,不妨百花齊放,只要有效,一切都是值得的。這也就是為什么道教的歷史最少爭(zhēng)論,也最少理論派別的原因。而這樣的弊端就是什 么歪門邪道都有可能混入道教,使得道教成為一個(gè)名副其實(shí)的大雜燴。?
      佛教對(duì)于判斷的問(wèn)題,存在兩面性,既有很多外在的判斷標(biāo)準(zhǔn),又相信“如人 飲水,冷暖自知”的最高境界。佛陀的“相貌、神通、舍利子”乃至“智慧”,成為常用的外部標(biāo)準(zhǔn)。而在佛教中又有很多關(guān)于“次第”的論述,似乎成佛是可以循 序漸進(jìn),有跡可查的。然而事情并非如此簡(jiǎn)單,因?yàn)椋庠诘臉?biāo)準(zhǔn)并不符合佛教的基本教義,因?yàn)橐磺斜硐螅允且蚓壓虾投桑⒎歉荆允欠癯煞穑€需要 某種“未知的”方法的驗(yàn)證。這種方法沒(méi)有人知道如何描述,但是已經(jīng)公認(rèn)的大師,則有權(quán)通過(guò)這樣的方法來(lái)作出判斷。所以在佛教會(huì)出現(xiàn)比道教多得多的派別,特 別是到了禪宗以后,佛教的派別、分化就會(huì)越來(lái)越多,因?yàn)榕袛鄾](méi)有公認(rèn)的標(biāo)準(zhǔn),只以權(quán)威的意見(jiàn)為轉(zhuǎn)移。?
      基督教對(duì)于判斷的問(wèn)題,最為頭疼,因?yàn)? 根據(jù)基督教的基本教義,人的一切行為,表象,都不能成為判斷的依據(jù),這一點(diǎn)基督教比佛教執(zhí)行的嚴(yán)格得多。而這樣導(dǎo)致的后果就是無(wú)休止的爭(zhēng)論與不斷的分化。 基督教對(duì)于教會(huì)的純潔性是最為注重的,這樣導(dǎo)致的結(jié)果,并不是教會(huì)的純潔,而是不同教派之間的“水火不容”,甚至“你死我活”。因?yàn)槲覠o(wú)法從理論上駁倒 你,又無(wú)法實(shí)際的證明給你看,只能殺了你,才能證明上帝是站在我這一邊的。但是這樣不能解決任何問(wèn)題,所以現(xiàn)在基督教的派別是世界上最多的,而這些派別之 間的矛盾,也是最為尖銳的。?

    四、無(wú)用的哲學(xué)?
      之所以說(shuō)“無(wú)用的哲學(xué)”,其實(shí)并沒(méi)有什么貶義,而是我認(rèn)為,從哲學(xué)的本質(zhì)來(lái)說(shuō),他就應(yīng)該是“無(wú)用的”。如果哲學(xué)變得很有用,就會(huì)十分危險(xiǎn),非人類之福。?
       根據(jù)我前面的定義,哲學(xué)是一種以思辨的心態(tài),來(lái)探索世界,形成結(jié)論,并以此來(lái)指導(dǎo)自己的生活的方式。出于這樣的一種心態(tài),哲學(xué)成為人類智力的終極樂(lè)園, 古往今來(lái),無(wú)數(shù)的人思考哲學(xué)問(wèn)題,并沉醉其中,而哲學(xué)的問(wèn)題沒(méi)有一個(gè)得到解決—在科學(xué)意義上的得到最終答案—或者獲得公認(rèn)。我們甚至可以斷言,一切的哲學(xué) 問(wèn)題,都永遠(yuǎn)不可能有最終的確定的答案,這也正是哲學(xué)的魅力所在。?
      為什么哲學(xué)不能得出公認(rèn)的結(jié)果呢?這有兩個(gè)方面的原因,一方面是由于哲學(xué)的本質(zhì),另一方面是由于人的本性。?
       從哲學(xué)的本質(zhì)來(lái)說(shuō),這是一種心態(tài),一種永遠(yuǎn)試圖再換一種方式思考的心態(tài),或者我們可以褒義的稱之為:“不斷思考得更加深入。”而哲學(xué)的思考對(duì)象又是全世 界,如此的復(fù)雜,如此的難以概括,如此的千差萬(wàn)別。而哲學(xué)又試圖從整體上來(lái)把握整個(gè)世界,因此一定會(huì)有無(wú)數(shù)個(gè)答案,而且一定無(wú)法確定哪一種答案是最優(yōu)解 答。?
      對(duì)于人的本性來(lái)說(shuō),哲學(xué)思考是一種最好的智力游戲。因?yàn)椴恍枰驹诰奕说募绨蛏希恍枰^承已有的哲學(xué),最值得贊賞的努力是開創(chuàng)全新的 體系,如果做不到,也可以創(chuàng)造全新的表述方式。前人的努力,與其說(shuō)是繼承的財(cái)富,到不如說(shuō)是批判的目標(biāo)。能夠批判前人,提出自己的觀點(diǎn),能夠使人得到最大 的滿足,因?yàn)檎軐W(xué)是回答最重要的問(wèn)題的學(xué)問(wèn)。?
      似乎我這樣講,將哲學(xué)過(guò)于貶低了,其實(shí)并不是這樣,因?yàn)檫@正是哲學(xué)的偉大所在。只有了解的哲學(xué) 的本質(zhì),才會(huì)相信,人人都能進(jìn)行自己的思考,得出自己的結(jié)論,有這樣的心態(tài)人,我們稱之為有哲學(xué)精神的人,如果將這樣的精神貫穿整個(gè)人生,我們就稱之為 “哲人”,例如我們所尊敬的偉大的蘇格拉底。哲學(xué)的最大的用處是作為“解毒劑”,但是哲學(xué)不能變成有用的結(jié)論,哲學(xué)會(huì)變質(zhì),有可能變成宗教,有可能變成政 治,有可能冒充科學(xué),這樣的有用,非常危險(xiǎn)。?

    五、有限的科學(xué)?
      說(shuō)科學(xué)是有限的,同樣沒(méi)有貶低的意思。因?yàn)楦鶕?jù)科學(xué)的本質(zhì),他就一定是有限的。?
       科學(xué)作為一種以理性和邏輯的態(tài)度,來(lái)探索世界,形成結(jié)論,并以此指導(dǎo)自己的生活的學(xué)問(wèn),他的本質(zhì)就是不斷的懷疑與驗(yàn)證,如果有人為了懷疑而懷疑,毫無(wú)意 義,而為了驗(yàn)證而驗(yàn)證,只能說(shuō)是迷信或者說(shuō)是偽科學(xué)。既然科學(xué)是一個(gè)不斷懷疑與驗(yàn)證的過(guò)程,而且出于理性與統(tǒng)一的邏輯,科學(xué)必然是一個(gè)整體。打個(gè)簡(jiǎn)單的比 方,當(dāng)年亞里斯多德在地上畫的那個(gè)關(guān)于知識(shí)的圈,是一個(gè)而且只能是一個(gè)圈。如果在這個(gè)知識(shí)的圓圈之外另有一個(gè)“飛地”,那只能稱之為科學(xué)猜想,只有在將來(lái) 的某個(gè)時(shí)刻,這個(gè)猜想得到了驗(yàn)證,這塊“飛地”才能和大圈連在一起,成為科學(xué)知識(shí)的一部分。?
      附帶說(shuō)一句,我并不認(rèn)為社會(huì)科學(xué)是科學(xué)的一種,在我看來(lái),所有的社會(huì)科學(xué),只是哲學(xué)思考擴(kuò)大化之后對(duì)科學(xué)的模仿。這也就是為什么自然科學(xué)基本上沒(méi)有什么派別,而社會(huì)科學(xué)卻流派紛呈的原因。?
       科學(xué)是有限的,而世界是無(wú)限的—也正是由于科學(xué),我們才能像今天這樣深切的認(rèn)識(shí)到世界的無(wú)限性—這就意味著科學(xué)永遠(yuǎn)也無(wú)法窮盡整個(gè)世界,科學(xué)的有限性不 但是必然的,而且是絕對(duì)的。真正的科學(xué)家,或者具有科學(xué)精神的人,永遠(yuǎn)都遵循著懷疑、驗(yàn)證的規(guī)律,而不會(huì)混淆知識(shí)與假想的界線。?
      說(shuō)到這里, 我倒是想起了一件很有趣的事情,當(dāng)年特異功能流行的時(shí)候,錢學(xué)森與**之間有一場(chǎng)激烈的爭(zhēng)論,我們知道,錢學(xué)森是一個(gè)科學(xué)家,而**是一個(gè)—怎么說(shuō)呢,就 算是—社會(huì)科學(xué)家吧。他們的態(tài)度截然不同,錢學(xué)森認(rèn)為這種現(xiàn)象值得研究,而**則大力反對(duì),或者說(shuō)科學(xué)立場(chǎng)比錢學(xué)森還要堅(jiān)定。這就是科學(xué)家與信仰科學(xué)者的 區(qū)別。?
      現(xiàn)在我們開始大力提倡尊重科學(xué),學(xué)習(xí)科學(xué)知識(shí)。但是真正要學(xué)習(xí)的是什么呢?是科學(xué)精神,一種偉大的,永遠(yuǎn)不自以為是的精神。而不是為了維護(hù)某種“科學(xué)結(jié)論”卻喪失了進(jìn)一步探索的勇氣。?

    六、我的信仰選擇?
       對(duì)于我來(lái)說(shuō),選擇一種信仰其實(shí)分為兩個(gè)階段,在寫這篇文章之前,我處在一種漫無(wú)目的的摸索階段,就好像一個(gè)叢林中的迷路者,找不到方向,更不要說(shuō)出路。 但是通過(guò)前面的思考,我為自己的畫出了地圖—一幅關(guān)于信仰的地圖。于是在我來(lái)說(shuō),選擇信仰的問(wèn)題變得簡(jiǎn)單,并且有效。?
      當(dāng)然,這個(gè)問(wèn)題也可以 反過(guò)來(lái)看,就是我首先是確定了自己的信仰,然后開始尋找理論上的支撐,通過(guò)論證自己的信仰選擇的合理性,使我可以更加有把握的走下去。不管怎么說(shuō),這是一 個(gè)良性循環(huán)的開始,信仰堅(jiān)定了理論,而理論又更加堅(jiān)定了信仰。也可以說(shuō),這樣的方式才是信仰式、而非思辨式的。?
      首先要做的第一個(gè)選擇題是, 是否需要信仰,也可以說(shuō),這個(gè)世界存在著兩種人,有信仰的人和沒(méi)有信仰的人,我要選擇做什么樣的人,我要選擇一種什么樣的生活。有兩種人可以沒(méi)有信仰,一 種是混混僵僵的人,這種狀態(tài)可以簡(jiǎn)單的稱之為“快樂(lè)的豬”,如果一個(gè)沒(méi)有開始思考信仰的問(wèn)題,他可以停留在這個(gè)狀態(tài),但是一旦他開始思考,就再也沒(méi)有可能 回到混混僵僵的狀態(tài),對(duì)于我來(lái)說(shuō),這是一個(gè)不可能的選擇。?
      另一種沒(méi)有信仰的人,是有著各式各樣?“現(xiàn)實(shí)追求”的人,這樣的可以一輩子的不考 慮信仰問(wèn)題,而生活得很充足,很忙碌。但是這樣的人,他的目標(biāo)是否達(dá)到,并不取決于自己,而是取決于別人的評(píng)價(jià),所有的“成功、金錢、地位、名譽(yù)”,如果 不被別人承認(rèn),就什么都不是。我并不虛偽的反對(duì)這樣的追求,但是如果只有這樣的追求,人生是不完整的,可以說(shuō)這樣的人完全是為了別人的評(píng)價(jià)而活著,卻沒(méi)有 為自己而活著。這樣的人,尼采稱之為“駱駝”。我不愿意做這樣的“駱駝”,因此需要繼續(xù)作下面的選擇題。?
      在我的“信仰地圖”中,有三個(gè)大的 方向,科學(xué)、哲學(xué)與宗教。有人選擇科學(xué)作為信仰,也有人選擇哲學(xué)作為信仰,但是在我看來(lái),無(wú)論是科學(xué)還是哲學(xué),其基本的精神,都與信仰格格不入。當(dāng)你成為 科學(xué)的信徒,你就違背了科學(xué)的精神;當(dāng)你成為哲學(xué)的信徒,你就違背了哲學(xué)的精神。這樣的人,在世界上的確不少,而且也的確在為害著這個(gè)世界。從歷史上來(lái) 看,科學(xué)的信徒與哲學(xué)的信徒,為害世界的事情還真不少。也許有人要問(wèn),宗教的信徒不也一樣為害世界嗎?但是區(qū)別在于,宗教的信徒只是“可能”為害世界,而 科學(xué)與哲學(xué)的信徒,則一定會(huì)為害世界。?
      有人也許還要問(wèn),我是科學(xué)的信徒,但是我信仰的是科學(xué)的精神,難道也會(huì)為害世界嗎?科學(xué)的精神,當(dāng)然不會(huì)為害世界,但是這樣的精神只是探索世界的一種方法,他只需要遵循,而不需要信仰。只存在是否嚴(yán)格遵循的問(wèn)題,而不存在是否相信的問(wèn)題。?
       同樣的問(wèn)題,也會(huì)有人問(wèn)出來(lái)而為哲學(xué)辯護(hù),在我看來(lái),最好的哲學(xué)與最好的科學(xué)一樣,一個(gè)使人奮進(jìn),一個(gè)使人冷靜。科學(xué)的生命力在于始終遵循科學(xué)的精神, 而哲學(xué)的生命力在于不斷的反思自身,甚至于整個(gè)哲學(xué)的基礎(chǔ)。科學(xué)如果被人信仰,最多是科學(xué)的發(fā)展受阻,哲學(xué)如果被人信仰,整個(gè)社會(huì)的發(fā)展都有可能受阻。?
      既然科學(xué)和哲學(xué)都不可能成為我的選擇,那么選擇題就要繼續(xù)進(jìn)行,在我的“信仰地圖”中,宗教又分為兩個(gè)大類,一種是以個(gè)人為中心,另一種則是以社會(huì)為中心。前者包括了佛教、道教以及基督教等等眾多宗教,后者則主要以儒家為代表。?
       以個(gè)人為中心的宗教很容易吸引人,因?yàn)檫@樣的宗教討論的問(wèn)題是以“我”為中心的,解決的也是“我”的問(wèn)題。當(dāng)一個(gè)發(fā)現(xiàn)自己不應(yīng)該為了別人的評(píng)價(jià)而活著的 時(shí)候,首先會(huì)想到的選擇就是為了自己而活。當(dāng)一個(gè)人發(fā)現(xiàn)對(duì)于外在的追求不再有吸引力的時(shí)候,走向自己的內(nèi)心就成為唯一的方向。?
      在中國(guó)古代, 儒家遭受了普遍的誤解,就是因?yàn)槿寮业淖非蠛芟袷窍蛲獾淖非螅x四書五經(jīng)是為了做官,參加科舉是為了功名利祿,所有的這些追求都可以說(shuō)是外在的,世間的, 無(wú)常的。但是儒家信仰,與功名利祿追求,存在著重大的區(qū)別,一種是為了別人的評(píng)價(jià)而活,另一種卻只是純粹的為了別人而活,別人的評(píng)價(jià)是指向自己的,說(shuō)到底 是為了滿足自己的欲望,只不過(guò)這樣的欲望需要通過(guò)別人的評(píng)價(jià)而得到滿足。而儒家的信仰不是這樣的一種個(gè)人欲望,這樣的追求中沒(méi)有一個(gè)“我”的存在。?
       無(wú)論是對(duì)世間功名利祿的追求,還是對(duì)于宗教的、出世間的追求,核心的理由都是為了“我”,只不過(guò)追求的目標(biāo)一則現(xiàn)實(shí),一則縹緲而已。因此,到了現(xiàn)在這個(gè) 社會(huì),當(dāng)儒家學(xué)說(shuō)失去了科舉做官的現(xiàn)實(shí)用途之后,要想使人信仰他,就變得非常的困難,因?yàn)樗麖牟粷M足“我”的欲望,也從不許諾各種個(gè)人的好處。他的吸引力 就幾乎不存在了,而現(xiàn)在的儒家信徒也就幾乎不存在了,除了一些大專院校的儒家學(xué)說(shuō)研究者,幾乎沒(méi)有人還會(huì)再接觸儒家的思想,更不要說(shuō)產(chǎn)生信仰了。?
      但是,我的選擇,最終還是儒家信仰,有很多可以說(shuō)的理由,而最大的理由,就是因?yàn)檫@種信仰不是為了自己。有很多名人名言深深地打動(dòng)了我,例如:“先天下之憂而憂,后天下之樂(lè)而樂(lè)”、“為國(guó)為民,俠之大者”、“為天地立心、為生民立命、為往圣繼絕學(xué)、為萬(wàn)世開太平”。?
      說(shuō)到這里,我的這篇文章也就算結(jié)束了,但是關(guān)于儒家的話題,這卻只是一個(gè)開始,畢竟可以討論的東西,真的很多。

    posted @ 2006-03-24 11:22 @家軍 閱讀(479) | 評(píng)論 (1)編輯 收藏

    世界不在意你的自尊

    (考慮再三,還是要轉(zhuǎn)貼一些有用的話)
    比爾蓋茨十條職場(chǎng)箴言曝光:世界不在意你的自尊
    1.生活是不公平的,要去適應(yīng)它;
    2.這世界并不會(huì)在意你的自尊,這世界指望你在自我感覺(jué)良好之前先要有所成就;
    3.高中剛畢業(yè)你不會(huì)成為一個(gè)公司的副總裁,直到你將此職位掙到手;
    4.如果你認(rèn)為你的老師嚴(yán)厲,等你當(dāng)了老板再這樣想;
    5.如果你陷入困境,不要尖聲抱怨錯(cuò)誤,要從中吸取教訓(xùn);
    6.在你出生之前,你的父母并非像現(xiàn)在這樣乏味。他們變成今天這個(gè)樣子是因?yàn)檫@些年來(lái)他們一直在為你付賬單,給你洗衣服,聽你大談你是如何的酷;
    7.你的學(xué)校也許已經(jīng)不再分優(yōu)等生和劣等生,但生活卻仍在作出類似區(qū)分;
    8.生活不分學(xué)期,你并沒(méi)有暑假可以休息,也沒(méi)有幾個(gè)人樂(lè)于幫你發(fā)現(xiàn)自我;
    9.電視并不是真實(shí)的生活,在現(xiàn)實(shí)生活中,人們實(shí)際上得離開咖啡屋去干自己的工作;
    10.善待乏味的人,有可能到頭來(lái)會(huì)為一個(gè)乏味的人工作。

    posted @ 2006-03-21 11:06 @家軍 閱讀(330) | 評(píng)論 (0)編輯 收藏

    TOMCAT內(nèi)存溢出之解決方法

    問(wèn)題表現(xiàn):

    當(dāng)用戶執(zhí)行一個(gè)大數(shù)據(jù)的應(yīng)用時(shí)(凈字節(jié)碼量約為5M)時(shí),系統(tǒng)會(huì)提示出錯(cuò):

    前臺(tái)錯(cuò)誤為:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception

    (以下省略)

    ………………………………………………………

    ………………………………………………………

    后臺(tái)錯(cuò)誤為:java.lang.OutOfMemoryError: unable to create new native thread
            at java.lang.Thread.start(Native Method)
            at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
    va:847)

    (以下省略)

    ………………………………………………………

    ………………………………………………………

    問(wèn)題分析:

       由于TOMCAT內(nèi)存溢出而引發(fā)的問(wèn)題,主要原因是JVM的虛擬內(nèi)存默認(rèn)為128M,當(dāng)超過(guò)這個(gè)值時(shí)就把先前占用的內(nèi)存釋放,而導(dǎo)致好象TCP/IP丟包的假象,出現(xiàn)HTTP500的錯(cuò)誤。  
         
    解決方法主要是加大TOMCAT可利用內(nèi)存,并在程序當(dāng)中加大內(nèi)存使用。

    解決方法:

    方法:加大TOMCAT可利用內(nèi)存:
      在TOMCAT的目錄下,也就是在TOMCAT41/bin/catalina.bat文件最前面加入
      set JAVA_OPTS=-Xms800m -Xmx800m
      表現(xiàn)效果是當(dāng)你啟動(dòng)TOMCAT時(shí),系統(tǒng)內(nèi)存會(huì)增加近800M使用

    操作方法:
      1)、先關(guān)掉WINDOWS服務(wù)當(dāng)中的TOMCAT4服務(wù)。
      2)、再找到TOMCAT/BIN目錄下startup.bat,雙擊打開它,你會(huì)發(fā)現(xiàn)現(xiàn)WINDOWS內(nèi)存占用會(huì)增加近800M
      3)、執(zhí)行程序,因?yàn)槭?/span>TOMCAT重新編譯程序,所以第一次會(huì)比較慢。

    結(jié)論:

    經(jīng)過(guò)測(cè)試,我們得出如下數(shù)據(jù):

    當(dāng)系統(tǒng)傳輸約2000條數(shù)據(jù)時(shí),大約近12M的凈數(shù)據(jù)(不壓縮時(shí)),系統(tǒng)輔助運(yùn)行的內(nèi)存大約占用150M左右的空間,也就是近200M的內(nèi)存占用,而我們擴(kuò)大了近800MJAVA內(nèi)存使用,這對(duì)于業(yè)務(wù)本身來(lái)說(shuō)是足夠了。所以你們不用擔(dān)心大數(shù)據(jù)量的傳遞問(wèn)題。

    基于JAVA虛擬機(jī)的原理,JAVA自動(dòng)有垃圾回收機(jī)制,也就是在你對(duì)一些內(nèi)存長(zhǎng)時(shí)間不使用時(shí)(近2分鐘,取決于使用頻度和優(yōu)先級(jí)等),就會(huì)自動(dòng)垃圾回收,從而釋放不用的內(nèi)存占用。

    posted @ 2006-03-10 14:15 @家軍 閱讀(9104) | 評(píng)論 (2)編輯 收藏

    MYSQL BUG #5020及解決方法

    MYSQL BUG #5020
    描述:
       MYSQL網(wǎng)站BUG公示
    錯(cuò)誤MESSAGE:
        
    Connection was closed due to the following exception:

    ** BEGIN NESTED EXCEPTION ** 

    java.sql.SQLException
    MESSAGE: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed

    ** BEGIN NESTED EXCEPTION ** 

    java.net.SocketException
    MESSAGE: Software caused connection abort: recv failed

    STACKTRACE:

    java.net.SocketException: Software caused connection abort: recv failed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.
    read(SocketInputStream.java:129)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:
    183)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:
    222)
        at java.io.BufferedInputStream.
    read(BufferedInputStream.java:277)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:
    1385)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:
    1532)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:
    1923)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:
    1163)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:
    1272)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:
    2236)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
    1555)
        at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:
    89)
        at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:
    880)
        at net.sf.hibernate.loader.Loader.doQuery(Loader.java:
    273)
        at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:
    138)
        at net.sf.hibernate.loader.Loader.doList(Loader.java:
    1063)
        at net.sf.hibernate.loader.Loader.list(Loader.java:
    1054)
        at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:
    854)
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
    1554)
        at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
    1531)
        at net.sf.hibernate.impl.SessionImpl.
    delete(SessionImpl.java:1678)
        at net.sf.hibernate.impl.SessionImpl.
    delete(SessionImpl.java:1664)
    出錯(cuò)原因:
       我們的系統(tǒng)一天24小時(shí)運(yùn)行,但在夜晚的時(shí)候是沒(méi)有人連接的,因此Socket連接就超時(shí)了。早上嘗試做任何事情(比如:登錄)都將以失敗告終,除非我們關(guān)閉連接或者重新建立連接。3.0.11后才會(huì)發(fā)生這種情況。
       現(xiàn)在我們使用的MYSQL版本號(hào)為4.016,問(wèn)題一樣。
    專家建議:
       [Mark Matthews],翻譯如下:
       注意:我不贊成Autoreconnect功能,在以后的發(fā)行版本中,它最終會(huì)被移除。在這種特殊情況下, 它不起作用的原因是:在3.0.11以后,autoreconnect的方法變得更加安全了并且和阿utoCommit狀態(tài)有關(guān)聯(lián),這樣的話就能使當(dāng)前‘in-flight’事務(wù)失敗(如果你在失敗后,再次試圖連接事務(wù),就會(huì)重新被連接)。請(qǐng)查看相關(guān)解釋文檔,文檔的修復(fù)故障中包括如何正確實(shí)用這個(gè)屬性。無(wú)論在哪種情況下,   如果TCP/IP在沒(méi)有連接的情況下并且還不會(huì)冒著數(shù)據(jù)庫(kù)被癱瘓的危險(xiǎn),是沒(méi)有百分之百的方式使得JDBC驅(qū)動(dòng)器被自動(dòng)重連接的,這也是為何要移除Autoreconnect功能的原因。不管網(wǎng)絡(luò)發(fā)生什么情況,    JDBC 都不會(huì)說(shuō)明這個(gè)連接是否處于連接狀態(tài)。JDBC driver 客戶端負(fù)責(zé)處理網(wǎng)絡(luò)故障,只有應(yīng)用程序本身(實(shí)際上是應(yīng)用程序的開發(fā)者)知道如何正確應(yīng)對(duì)事務(wù)失敗的情況。在服務(wù)器上過(guò)期的‘Waittimeout’基本上是服務(wù)器給與的強(qiáng)制性網(wǎng)絡(luò)故障。你通過(guò)把‘Waittimeout’設(shè)置的高點(diǎn)兒就可以改正它,盡管如此,作為一個(gè)開發(fā)者,你的代碼應(yīng)該包含相關(guān)的異常處理并采取適當(dāng)?shù)幕謴?fù)措施,不要都把它們傳到調(diào)用堆中。
       連接錯(cuò)誤總是有一個(gè)SQL狀態(tài)‘08’。如果你發(fā)現(xiàn)它的話,你可以再連接一次并重試事務(wù)(如果是適當(dāng)?shù)脑挘?/span>
       不管什么原因,如果這樣不起作用的話,配置你的連接池來(lái)測(cè)試是否處于連接狀態(tài)并且那些長(zhǎng)時(shí)間閑置連接(所有的連接池都能這樣做,但是它們的配置取決于池子)。
    作者說(shuō)明:在MYSQL4.1以后的版本當(dāng)中,沒(méi)有“wait_timeout”變量,由
    interactiveClient代替
    參考資料:http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html
         [
    Kirk Wylie]:翻譯如下:
       
    如果有一個(gè)事務(wù)在運(yùn)行的話,就能得到一個(gè)特別簡(jiǎn)單的例子:
        
    ---如果連接在autoCommit模式下,autoReconnect是安全的。
        
    ---如果連接不在autoCommit模式下,但是沒(méi)有打開的事務(wù),autoReconnect是安全的。(因?yàn)檫B接可能在池在里面)
        ---如果連接不在autoCommit模式下,有打開的事務(wù),這樣就會(huì)拋出異常。
       
    這樣會(huì)解決你不在autoRecom\nnect模式下的憂慮并且會(huì)保留應(yīng)用程序的功能性。
       盡管如此,在它改變的時(shí)候,在改變?nèi)罩局袥](méi)有任何記錄說(shuō)明發(fā)生了改變,這點(diǎn)令我很煩。由于這種改變很可能破壞我的應(yīng)用程序,這種變化因該添加到CHANGE文件中。

      如下是我個(gè)人的做法:
      (STRUTS+SPRING+HIBERNATE)
      1、把mysql的變量
    interactiveClient由 默認(rèn)的28800(8個(gè)小時(shí))延長(zhǎng)。并告知用戶多長(zhǎng)時(shí)間后,重新啟動(dòng)TOMCAT服務(wù)器。不過(guò),MYSQL5.0.12版本以前的所有版本,只要你設(shè)置成 了默認(rèn)語(yǔ)言為GBK,所有對(duì)interactive_timeout(wait_timeout)的時(shí)候如何設(shè)置,重新連接或者重新啟動(dòng)MYSQL后,都 是28800,現(xiàn)在我使用的5.0.18后,使用GBK,沒(méi)有問(wèn)題。
      2、在HIBERNATE當(dāng)中加入:
       
    ..
    <property name="hibernate.connection.url">jdbc:mysql://192.168.100.111/eai?autoReconnect=true</property>
    <property name="enableDeprecatedAutoreconnect">true</property>
    <!--  如下的語(yǔ)句是使用第三方的DBCP來(lái)建立連接池 -->
    <property name="dbcp.maxActive">100</property>
    <property name="dbcp.whenExhaustedAction">1</property>
    <!--  看到了沒(méi)有,這個(gè)maxWait一定要大于MYSQL默認(rèn)的28800(秒) -->
    <property name="dbcp.maxWait">30000</property>
    <property name="dbcp.maxIdle">10</property>

    <property name="dbcp.ps.maxActive">100</property>
    <property name="dbcp.ps.whenExhaustedAction">1</property>
    <property name="dbcp.ps.maxWait">30000</property>
    <property name="dbcp.ps.maxIdle">10</property>
    ..
        
     如上兩種方法均可,推薦大家使用第二種方法,來(lái)遮擋一下MYSQL的BUG。
    如果有不對(duì)之處,請(qǐng)大家提出自己的見(jiàn)解。

    posted @ 2006-01-18 14:48 @家軍 閱讀(5679) | 評(píng)論 (0)編輯 收藏

    2006年之創(chuàng)業(yè)狂想

      風(fēng)風(fēng)雨雨幾年IT生涯,從剛剛開頭不敢說(shuō)一句話,到現(xiàn)在在企業(yè)工廠與客戶指點(diǎn)江山,答疑解惑,好不勝哉。
      ERP的實(shí)施和開發(fā)將影響我一生的IT生涯,我也致力探索其技術(shù),交流發(fā)布其管理思想,不過(guò)2005年讓我在技術(shù)的領(lǐng)域里磨礪著這把劍,呵呵,夢(mèng)寐以求的J2EE技術(shù)有所長(zhǎng)進(jìn),不過(guò)還需要再接再厲,更上一層樓。
      這一年來(lái),我看好開源代碼給人們的生活帶來(lái)的實(shí)惠和方便,我也曾經(jīng)預(yù)言開源代碼將為我淘得第一桶金。可能是時(shí)機(jī)未到或者自己修煉還未果吧,至今還要努力學(xué)習(xí)。
      所以,我的最大快樂(lè)就是技術(shù)轉(zhuǎn)化成生產(chǎn)力,讓企業(yè)的應(yīng)用上一個(gè)新的臺(tái)階,讓管理的先進(jìn)思想長(zhǎng)駐企業(yè)內(nèi)部。
      我想,2006年,有必要?jiǎng)?chuàng)業(yè):
         創(chuàng)立一個(gè)利用開源代碼引導(dǎo)應(yīng)用為主的論壇。
         初步的分類可以使用現(xiàn)在www.open-open.com的分類來(lái)做。
         與www.open-open.com網(wǎng)站建立聯(lián)盟關(guān)系。
         我的工作表現(xiàn)在對(duì)網(wǎng)站的管理上,發(fā)表原創(chuàng)及使用感受。提倡開源代碼當(dāng)中的管理思想。
         還要加入PHP、PYTHON等新一代解釋性語(yǔ)言帶來(lái)的開源思想等。
         最終目標(biāo)要扶植幾家軟件企業(yè)應(yīng)用開源代碼來(lái)做應(yīng)用,或者利用開源代碼二次開發(fā)等。
         理想目標(biāo)是一到兩家公司使用開源代碼,我們做服務(wù)和二次開發(fā)工作。
      另外,從GOOGLE上,感覺(jué)到國(guó)內(nèi)對(duì)藝術(shù)、字畫和古玩有熱衷的傾向,所以我想做一個(gè)交流平臺(tái)。
      這個(gè)平臺(tái)可以簡(jiǎn)單描述為:
         藝術(shù)家或者收藏家可以通過(guò)一定的流程,發(fā)布自己的作品和藏品,以照片為例。
         所有的藝術(shù)家或者收藏家都可以通過(guò)本網(wǎng)站的誠(chéng)信通道由網(wǎng)站代理出售其作品或者收藏品。
         所有的網(wǎng)站注冊(cè)用戶可以選擇自己喜愛(ài)的作品進(jìn)行交易。
         交易通道有兩個(gè),一個(gè)與作品本人聯(lián)系,一個(gè)與網(wǎng)站代理聯(lián)系。(考慮中....)
              所有的網(wǎng)站注冊(cè)用戶可以提出自己的個(gè)性化需求與藝術(shù)家或者收藏家給出答復(fù)。(贏利點(diǎn))
         個(gè)性化的需求由本網(wǎng)站代理完成,從中得到應(yīng)有的費(fèi)用。做為網(wǎng)站發(fā)展的基金。
      藝術(shù)和學(xué)問(wèn)是一個(gè)知識(shí)分子追求的東西,還需要和藝術(shù)家和大學(xué)問(wèn)家建立聯(lián)盟關(guān)系,擴(kuò)大影響力。
            

        加上兩幅圖片
      我和兒子
    259895602.jpg
     爺爺和孫子
    259895994.jpg

    posted @ 2006-01-12 15:57 @家軍 閱讀(490) | 評(píng)論 (2)編輯 收藏

    州牧下的羊叫

    古代的地方官員叫州牧,而牧民放牧的是羊和牛。
    我是一只小羊,等到黑夜來(lái)臨的時(shí)候,我在羊圈里看見(jiàn)在美麗的星空。一眨一眨的星星和皎潔的月亮。
    天空是美麗的,也是完美的,因?yàn)槲矣肋h(yuǎn)都觸及不到她,所以她是神圣的。
    草原是美麗的,綠色和黃色深深的循環(huán)著我的生活。
    草原是險(xiǎn)惡的,因?yàn)槟睦镉欣牵驗(yàn)槟睦镉谢⒈?br> 不過(guò)我不用害怕,因?yàn)槟裂蛉藭?huì)幫助我把它們趕走,我不害怕。
    我最害怕的是沒(méi)有草和水喝,因?yàn)檫@里有牛和其它的動(dòng)物在和我分食。
    我沒(méi)有了草吃,牧羊人會(huì)把我趕到一個(gè)豐盛的草場(chǎng)去。
    我沒(méi)有了水喝,牧羊人會(huì)把我趕到一個(gè)小河流去。

    呵呵,我沒(méi)有了憂郁。
    呵呵,這只是一個(gè)夢(mèng)。就象美麗的天空一樣。

    我沒(méi)有了草吃,牧羊人不知道哪里有豐盛的草場(chǎng),但是他發(fā)現(xiàn)了牛棚里還有草,所以他就去牛棚里背些草過(guò)來(lái)。可能我還沒(méi)有吃到,草已經(jīng)沒(méi)有了。

    我沒(méi)有了水喝,牧羊人不知道哪里有小河流,但是他發(fā)現(xiàn)了牛棚里還有水,所以他就去牛棚里背些水過(guò)來(lái)。可能我還沒(méi)有喝到,水已經(jīng)沒(méi)有了。

    于是我在彷徨,但是發(fā)現(xiàn)很多的牛已經(jīng)在侵占著我們的領(lǐng)域,僅有的草被他們吃光了,僅有的水被他們搶去了。

    我們只能向牛屈服,誰(shuí)讓我們是羊呢?

    我在想,如果牧羊人:
        如果牧羊人能夠了解草場(chǎng)的規(guī)律的話,是不是可以讓牛和羊分別在不同的季節(jié)和不同的草場(chǎng)進(jìn)食呢?
        如果牧羊人能夠深暗天理地勢(shì)的話,他能夠不辛苦的背水背草呢?
        如果牧羊人能夠按照天道地道來(lái)辦事的話,他是不是會(huì)得人道呢?
        人道才是真正的平民力量,也是大海里的海浪和波動(dòng)。

    posted @ 2006-01-12 11:33 @家軍 閱讀(393) | 評(píng)論 (1)編輯 收藏

    主站蜘蛛池模板: 亚洲成人中文字幕| 免费看黄的成人APP| 好大好深好猛好爽视频免费| 久久久久久亚洲Av无码精品专口| 国产精品免费久久| 亚洲AV无码一区二三区| 亚洲精品无播放器在线播放| 黄页网站免费观看| 亚洲福利电影在线观看| 日韩人妻无码精品久久免费一| 国产自偷亚洲精品页65页| 日韩在线视频播放免费视频完整版| 免费电视剧在线观看| 亚洲午夜精品一区二区公牛电影院 | 亚洲av无码久久忘忧草| 久久久久久久99精品免费| 亚洲精品无码永久中文字幕| 国产大片免费天天看| 亚洲伊人成无码综合网| 新最免费影视大全在线播放| 天堂亚洲免费视频| 国产av无码专区亚洲av毛片搜| 国产高清免费观看| 国产精品亚洲AV三区| 国产免费小视频在线观看| 香蕉视频亚洲一级| 国产99视频免费精品是看6| 亚洲av日韩av永久在线观看| 毛色毛片免费观看| 亚洲人成无码网站在线观看| 成年人在线免费看视频| 亚洲日韩国产二区无码 | 成a人片亚洲日本久久| 国产又粗又猛又爽又黄的免费视频| 亚洲av中文无码字幕色不卡| 日韩中文字幕在线免费观看| 18禁亚洲深夜福利人口| 国产yw855.c免费视频| 一级毛片a女人刺激视频免费 | 成人国产mv免费视频| 国产精品亚洲一区二区三区在线观看|