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

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

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

    lizongbo 的 編程學習

    http://618119.com

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks

    2007年8月29日 #

         摘要: 新注冊了個獨立域名,使用獨立的blog了。

    http://618119.com

    新的blog rss訂閱地址: http://feed.feedsky.com/lizongbo

    從最早的 http://blog.csdn.net/lizongbo,

    到 http://blog.donews.com/lizongbo

    再到http://m.tkk7.com/lizongbo

    現在終于擁有自己的域名和獨立的blog了。  閱讀全文
    posted @ 2007-10-16 09:46 lizongbo 的編程學習| 編輯 收藏

    mysql 雙機熱備配置

    1.下載mysql-noinstall-5.0.45-win32.zip
    2.解壓到E:\mysql,然后將文件夾E:\mysql\mysql-noinstall-5.0.45-win32改為E:\mysql\master
    3.再解壓到E:\mysql,然后將文件夾E:\mysql\mysql-noinstall-5.0.45-win32改為E:\mysql\slave
    4.復制E:\mysql\master\my-small.ini為E:\mysql\master\my.ini
    編輯內容:,增加log-bin和binlog-do-db參數
    示例如下:
    #skip-networking
    server-id = 1

    # Uncomment the following if you want to log updates
    #log-bin=mysql-bin

    log-bin=mysql-bin
    binlog-do-db = testdb1 #需同步數據庫  testdb1
    binlog-do-db = testdb2 #需同步數據庫  testdb2

    5.復制E:\mysql\slave\my-small.ini為E:\mysql\slave\my.ini
    編輯內容:,修改端口,
    port  = 3310

    示例如下:

    [client]
    #password = your_password
    port  = 3310
    socket  = /tmp/mysql.sock

    # Here follows entries for some specific programs

    # The MySQL server
    [mysqld]
    port  = 3310
    socket  = /tmp/mysql.sock
    skip-locking
    key_buffer = 16K
    max_allowed_packet = 1M
    table_cache = 4
    sort_buffer_size = 64K
    read_buffer_size = 256K
    read_rnd_buffer_size = 256K
    net_buffer_length = 2K
    thread_stack = 64K


    #skip-networking
    server-id = 2

    # Uncomment the following if you want to log updates
    #log-bin=mysql-bin

    master-host=127.0.0.1
    master-user=root
    master-password=
    master-port=3306
    replicate-do-db=testdb1
    replicate-do-db=testdb2

    6.保存 E:\mysql\master\my.ini.和E:\mysql\slave\my.ini

    7.在命令行下運行E:\mysql\master\bin\mysqld.exe,

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版權所有 1985-2001 Microsoft Corp.

    E:\mysql\master\bin>mysqld

    8.再新開命令行,運行E:\mysql\slave\bin\mysqld.exe

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版權所有 1985-2001 Microsoft Corp.

    E:\mysql\slave\bin>mysqld
    071013 21:41:06 [Warning] The syntax for replication startup options is deprecat
    ed and will be removed in MySQL 5.2. Please use 'CHANGE MASTER' instead.

    9.用mysql 客戶端 HeidiSQL連接到 127.0.0.1的3306,創建數據庫testdb1和testdb2,
    并在數據庫中新建表,然后插入一些數據.

    10.客戶端連接 到 127.0.0.1的3310,可以看見數據庫testdb1和testdb2,且數據庫中的數據與master的數據庫數據一致.

    11.t查看 E:\mysql\master\data\mysql-bin.000001 和E:\mysql\master\data\mysql-bin.index,可以看到被記錄的sql操作,

     




    posted @ 2007-10-13 21:53 lizongbo 的編程學習| 編輯 收藏


    4.4.6  Tomcat HTTPS配置
    在server.xml里配置:
    tomcat普通的https配置
        <Connector port="8443"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS"
               keystoreFile="conf/.keystore"
               keystorePass="lizongbo">
        </Connector>


    Tomcat使用apr之后的ssl雙向認證配置如下:

       <Connector port="8443" maxHttpHeaderSize="8192" protocol="HTTP/1.1"
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                  enableLookups="false" disableUploadTimeout="true"
                  acceptCount="100" scheme="https" secure="true"
                  clientAuth="true" <!--雙向驗證-->
                  SSLEngine="on" bufferSize="8192"
                  SSLEnabled="true"
                  SSLProtocol="all"
                  SSLCipherSuite="ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL"
                  SSLCertificateFile="..\conf\ca\www.crt"
                  SSLCertificateKeyFile="..\conf\ca\www.key"
                  SSLCACertificateFile="..\conf\ca\ca.crt"
                  SSLCACertificatePath="..\conf\ca"
                  SSLVerifyDepth="15"
                  SSLVerifyClient="require"
                   />

     

    4.6.6  Squid HTTPS
    squid.conf中加上:
    https_port 3443 cert=D:/ca/www.crt key=D:/ca/www.key


    4.7.6  LightTPD HTTPS
    首先使用copy命令把 key和crt合并為一個文件,
    D:\ca>copy /b www.key+www.crt www.pem

    然后配置如下:
    $SERVER["socket"] == ":443" {
    ssl.engine = "enable"
    ssl.pemfile = "D:/ca/www.pem"
    ssl.ca-file = "D:/ca/ca.crt"
    server.name = "www"
    server.document-root = "D:/httpsdosc"
    server.errorlog = "httpserror.log"
    accesslog.filename = "httpsaccess.log"
    }
    (下面的雙向驗證沒有測試是否可用)
    如需啟用雙向驗證,則還需下面的配置參數:
    ssl.verify-peer = "enable"
    ssl.verify-depth  = 1
    參考:http://trac.lighttpd.net/trac/ticket/921


     

    posted @ 2007-10-13 13:50 lizongbo 的編程學習| 編輯 收藏

         摘要: atj2135自帶的avi轉換工具 AVIConverter,
    采用炬力ATJ2135主控芯片mp4,支持播放的avi格式為xvid編碼,分辨率為320*240。
    而我用網上的其它轉換工具進行轉換得到的avi,用電腦里 播放器可以播放,而用2135的mp4無法播放,
    于是將2135自帶的轉換工具剝離出來了,放在網上,以作備份,方便avi轉換。
    工具名是:AVIConverter,下載地址為:
    http://m.tkk7.com/Files/lizongbo/2135AVIConverter.part1.rar
    http://m.tkk7.com/Files/lizongbo/2135AVIConverter.part2.rar

    Line:488
    Char:77
    Code:0
    Error:Automation 服務器不能創建對象
    網址:http://m.tkk7.com/lizongbo/admin/EditPosts.aspx
    無法發布正文,只好  閱讀全文
    posted @ 2007-10-10 09:26 lizongbo 的編程學習| 編輯 收藏

    1.取出discuz的當前文件夾路徑.
    2.根據php版本,對于小于4.1.0的php,設置相應的變量.
    3.載入全局函數庫 global.func.php
    4.判斷網頁機器人,對于不允許的機器人,返回403
    5.過濾cookie
    6.初始化變量
    $charset = $dbcharset = $forumfounders = $metakeywords = $extrahead = '';
    $plugins = $hooks = $admincp = array();
    7.載入全局配置 config.inc.php
    8.判斷 論壇防御級別 作處理.
    10.載入數據庫的class庫.
    11.生成網站路徑 boardurl
    12.獲取真實ip到 onlineip
    13.正則解析ip
    14.加載論壇配置參數緩存 /forumdata/cache/cache_settings.php
    15.將settings中的變量轉換為全局變量.
    16.判斷是否啟用gzip壓縮.
    17.判斷loadctrl負載參數,對于非windows下超過負載的 情況,返回系統忙錯誤.
    18.對于幾個固定的請求,加載已經生成的緩存數據.
    19.連接數據庫.
    20.判斷用戶的安全提問
    21.

     

     

    附件下載流程 attachment.php

    1.處理 common.inc.php 流程
    2.檢查Referer頭信息
    3.檢查每日下載限制時間  periodscheck
    4.查詢附件信息檢查附件是否存在
    5.判斷是否允許下載
    6.判斷是否已經購買
    7.執行購買操作.
    8.執行下載

    posted @ 2007-08-29 10:01 lizongbo 的編程學習| 編輯 收藏

    1.搭建php版運行環境,包括數據庫和discuz php版本的運行,用于觀察了解
    2.搭建java web應用基礎庫,
    3.對沒有主鍵的標增加主鍵,用工具生成dao 層代碼.(注意jdbc的url里需要寫上charset)
    4.生成logic層代碼
    5.對應每個控制層的php,轉換成對應的spring mvc中的controller. 先從簡單的faq.php做起
    action映射使用.php后綴.

    視圖層使用jsp+jstl.

     


     

    posted @ 2007-08-29 09:43 lizongbo 的編程學習| 編輯 收藏

    由于原有模板是以.htm方式存在的,
    在轉換成jsp方式時,對其中很多通用的代碼,可以通過替換的方式直接轉換為jstl語法的.
    步驟如下:

    1.首先將所有的htm文件名替換成jsp,
    在命令行下運行 rename *.htm *.jsp即可.

    2.將bbs\forumdata\cache\style_1.php中的css變量TABLEWIDTH等,
    替換成類似${crtStyles['TABLEWIDTH']}的jstl語法.
    全部只能手工替換

    3.將*.jsp中的{lang forum_favorite}等替換成類似 <fmt:message key="faq" bundle="${forum_favorite}"/>
    使用正則表達式進行替換:
    editplus中的 查找內容為: {lang (.+)},替換內容為:<fmt:message key="faq" bundle="${\1}"/>
    Jbuilder中的查找內容為 \{lang (.+)\},Pattern為:Regular Expressions,
    替換內容為:(暫時未寫出來,打算寫程序進行替換操作)

    用java程序替換的核心代碼為:

     //替換樣式變量
                 content = content.replaceAll("FORMHASH", "formhash");
                 //替換樣式變量 ${crtStyle['TABLEWIDTH']}
           content = content.replaceAll("\\{([A-Z0-9]+)\\}", "\\${crtStyle\\['$1'\\]}");
                 //替換國際化定義
                 //content = content.replaceAll("\\{lang (.+?)\\}",
                 //                             "<fmt:message key=\"$1\" bundle=\"\\$\\{templates\\}\"/>");
                 //對標簽屬性里的值暫時不替換
                 content = content.replaceAll("([^\"])\\{lang (.+?)\\}",
           "$1<fmt:message key=\"$2\" bundle=\"\\$\\{templates\\}\"/>");

                 //替換單層的屬性訪問
                 content = content.replaceAll("\\$([a-z]+?)\\[([a-z]+?)\\]",
                                       "\\$\\{$1\\['$2'\\]\\}");
                 //替換標題部分的聲明
                 content = content.replaceAll("\\{template header\\}",
                                       "<%@page pageEncoding=\"UTF-8\" " +
                                       "contentType=\"text/html;" +
                                       " charset=UTF-8\"%>\n"
                                       + "<%@include file=\"/WEB-INF/" +
                                       "inc/taglibs.jspf\"%>\n" +
                                       "<jsp:include flush=\"true\" " +
                                       "page=\"header.jsp\"/>\n");
                 ////替換底部部分的聲明
                 content = content.replaceAll("\\{template footer\\}",
                                       "\n<jsp:include flush=\"true\" " +
                                       "page=\"footer.jsp\"/>");

                 //替換其它引用聲明
                 content = content.replaceAll("\\{template (.+?)\\}",
                                       "\n<jsp:include flush=\"true\" " +
                                       "page=\"$1.jsp\"/>");
                 //替換url定義
           content = content.replaceAll("\\$indexname", "\\${settings.indexname}");
                 //替換網站名字
                 content = content.replaceAll("\\$bbname", "\\${settings.bbname}");
                 //替換導航標簽
                 content = content.replaceAll("\\$navigation", "\\${navigation}");
                 //替換一些變量
                 //content = content.replaceAll("\\$pid", "\\${pid}");
           content = content.replaceAll("\\$([a-z_]+)(\"|<|\\))", "\\${$1}$2");

    posted @ 2007-08-29 09:42 lizongbo 的編程學習| 編輯 收藏


    前言:discuz是一個很流行的 php論壇,一時好奇,打算學習并將其功能用java實現。
    但是個人精力有限,只試著做了很小的一點功能。
    但是在此過程中總結了一些經驗:

    需要轉換實現機制的模塊



    1.計劃任務
    由于php受語言限制,必須靠外界的訪問去觸發計劃任務,而java則可以通過qutarz來做定時任務.
    因此可以采取spring配置 qutarz的方式去設置定時任務.

    2.風格機制
    使用.jsp,使用jstl語法,允許用戶寫jstl
    依然按目錄存放到templates目錄下,每個風格為一個文件夾.

    3.緩存機制
    使用oscache 標簽 來緩存頁面的方式.

    4.特殊標簽的解析 hidden標簽,reply標簽
    采取在顯示的時候,進行 jsp:include page="/tag/hidden.jsp" 這樣的方式來實現.

    5.日歷選擇框: 使用jscalendar

    6.頁面gzip壓縮,使用專門的gzip過濾器.

    7.全文檢索,使用compass.

    8.視圖層的模板.
    discuz 已經使用了 mvc的模式,只是使用自己開發的模板技術,
     D:\xampp\htdocs\bbs\templates每個文件夾為一個主題,每個主題內對應的是各種視圖的htm.
    因此在用java實現的時候,使用spring mvc ,
    視圖層使用jsp來展示.
    其中頁面的布局分為三段
    {template header} 是最上面的導航部分
    {template footer} 是最下方的版權申明等部分.
    中間部分為各具體模塊的視圖.
    后臺則是使用的固定框架,然后來合成內容的.

    9.國際化支持
    discuz使用的是 .lang.php定義數組的方式實現的,而且一次只支持一種語言
    而java開發則使用I18N方式.多種語言均使用同一個系統.

     

     1.php的array功能非常強大,而java中只能用map和list結合起來處理.
    2.在一個http請求中php的變量幾乎都是全局生效,而jstl中,則可以放到requestScope中.

    1.discuz的有些表的主鍵不是自動增長的,因此不能夠生成@GeneratedValue(strategy = GenerationType.AUTO)的注釋.
    這些表有: new String[] {
          "validating", "trades", "relatedthreads", "pushedthreads", "polls",
          "onlinetime", "memberspaces", "memberfields", "forumfields",
          "admingroups", "adminactions", "activities"}

    2.mysql的hibernate dao單元測試中,insert是無法回滾的,而delete卻可以不操作數據庫,
    因此crud單元測試的時候,導致不停的插入數據卻沒有刪除數據.
    解決辦法,在 crud 測試方法的最后加上一行代碼:  this.setComplete();

    3.mysql的jdbc需要幾個特殊設置
    a.字符編碼集必須指定.
    b.對于"0000-00-00" 這樣的默認日期,在轉化成java.sql.Date的時候會出錯,因此需要加上個zeroDateTimeBehavior屬性.

    datasource.url=jdbc:mysql://localhost:3306/discuz?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

    4.mysql的jdbc驅動存在bug :  http://bugs.mysql.com/bug.php?id=22215

    在usergroups 表中, readaccess字段是 tinyint(3)類型,而有值為200的,mysql的jdbc就會報錯,說數字越界了.

    java.sql.SQLException: '200' in column '1' is outside valid range for the
    datatype TINYINT.

    暫時無解決辦法,采取修改200為20回避之.
    (update:后來使用Short代替byte類型)
    discuz 已經使用了 mvc的模式,只是使用自己開發的模板技術,
     D:\xampp\htdocs\bbs\templates每個文件夾為一個主題,每個主題內對應的是各種視圖的htm.

    因此在用java實現的時候,使用spring mvc ,

    視圖層使用jspx來展示.


    其中頁面的布局分為三段

    {template header} 是最上面的導航部分

    {template footer} 是最下方的版權申明等部分.

    中間部分為各具體模塊的視圖.

     

    后臺則是使用的固定框架,然后來合成內容的.



     

    posted @ 2007-08-29 09:41 lizongbo 的編程學習| 編輯 收藏

    主站蜘蛛池模板: 成年免费a级毛片| 亚洲一线产区二线产区区| 添bbb免费观看高清视频| 成在人线AV无码免费| 亚洲欧美日韩综合俺去了| 免费无码黄动漫在线观看| 亚洲人成77777在线观看网| 国产1024精品视频专区免费| 久久精品国产亚洲AV忘忧草18 | 好男人资源在线WWW免费| 亚洲熟妇无码AV在线播放| 久久久久久久久久久免费精品| 国产亚洲精品激情都市| a毛片在线免费观看| 91亚洲国产成人久久精品网站| 18以下岁毛片在免费播放| 67194在线午夜亚洲| 在线免费观看一区二区三区| 国产成人亚洲毛片| 亚洲色大成网站www永久一区| 一个人免费视频在线观看www| 91亚洲国产成人精品下载| 噼里啪啦电影在线观看免费高清| 无码亚洲成a人在线观看| 亚洲欧洲日本在线| 精品无码人妻一区二区免费蜜桃| 国产精品亚洲精品| 亚洲av无码天堂一区二区三区 | 亚洲成年网站在线观看| 国产网站免费观看| APP在线免费观看视频| 亚洲一区在线视频观看| 丁香亚洲综合五月天婷婷| 国产精品免费大片| 亚洲精品美女久久7777777| 自拍偷自拍亚洲精品情侣| 亚洲电影免费观看| 一级毛片试看60分钟免费播放| 亚洲午夜久久久精品影院| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 国产区卡一卡二卡三乱码免费|