Time of Update: 2018-12-06
在一個connection pool的配置中加入以下幾行: CODE: SELECT ALL<parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter>
Time of Update: 2018-12-06
Struts裡的html:Cancel標籤是在Form中經常運用的一個標籤,主要功能就是cancel當前Form,一般寫法如下: ======================================================= Code: Select all<html:cancel> <bean:message key="createuser.cancelbutton"/> </html:cancel>=========
Time of Update: 2018-12-06
PJSIP項目,由於pjsip不支援編譯成動態庫,只能編譯成靜態庫,所以在編譯基於pjsip SUA的應用程式的時候,遇到問題,如果這樣寫編譯命令列:gcc -o xxx $@ -Wall -std=c99 -g `pkg-config --cflags libpjproject` `pkg-config --libs libpjproject` $^編譯就會出錯,連結的時候undefined reference,PJSIP庫裡面的函數都無法連結。但是如果這樣就OK: gcc -o xxx $@
Time of Update: 2018-12-06
在做DealSpider的時候,必須要知道頁面的charset,然後轉成UTF-8,最後才能用glib的Regex來進行匹配和搜尋。CURL本身 是不提供這樣的功能的,之前在curl_easy_setopt的man手冊中看到了:CURLOPT_CONV_TO_NETWORK, CURLOPT_CONV_FROM_NETWORK,以為這兩個可以自動進行轉碼,後來發現是不行的。這兩個僅僅是用於non-ascii平台的。什
Time of Update: 2018-12-06
logic:Iterator標籤(以下簡稱“該標籤”)是Struts裡非常常用的一個標籤,其作用在於迴圈顯示給定容器物件中的值 如此常用的標籤,其原始碼當然需要拿出來研究一下,以下列舉幾條研究成果: 1、該標籤內部使用Collection來表示給定的容器,所有的給定容器物件(如ArrayList,Map等)都會被其轉化成為Collection 2、該標籤自己維護迴圈索引 3、該標籤常見的幾個屬性如下: name、property、scope、id
Time of Update: 2018-12-06
很多 CPU ,如基於 Alpha, IA-64, MIPS, 和 SuperH 體系的,拒絕讀取未對齊資料。當一個程式要求其中之一的 CPU 讀取未對齊資料時,這時 CPU 會進入異常處理狀態並且通知程式不能繼續執行。舉個例子,在 ARM, MIPS, 和 SH 硬體平台上,當作業系統被要求存取一個未對齊資料時預設通知應用程式一個異常。對齊性 對齊性是一種記憶體位址的特性,表現為記憶體位址模上 2 的冪。例如,記憶體位址 0x0001103F 模 4 結果為 3
Time of Update: 2018-12-06
EasyCluster support Firefox的開發過程中,碰到了一些問題,因為EasyCluster的介面中用了很多javascript,比如main_left.jsp中。很 典型的就是這個document.all,以前我們用這個函數得到HTML頁面中指定元素的instance document.all不符合w3c標準,是IE專屬的東西,從IE4開始支援 在Firefox中碰到document.all也不會報錯,不過會有警告,graceful的解決方案
Time of Update: 2018-12-06
How to generate coredump file and debug it in gdb 1. ulimit -a 可以查看當前所有的limit 2. ulimit -c用來設定coredump。比如:ulimit -c unlimited,就設定不限制產生的coredump檔案的大小。也可以ulimit -c 1024,這樣就設定了coredump檔案大小不超過1M。 3. 運行程式crash之後,core檔案產生。此時: gdb <program>
Time of Update: 2018-12-06
和HttpUnit不同,JMeter是做壓力測試的,而且JMeter不僅可以對web應用做測試,也可以對FTP伺服器、LDAP伺服器等進行測試。本文講述如何使用JMeter來給web應用做測試 首先是建立一個TestPlan和一個ThreadGroup,然後在裡面加上各種各樣的組件,也就是說,搞明白了JMeter的這些組件,測試就能做了,所以首先給出我本次測試EasyCluster的TestPlan檔案: 更直觀一些,這裡有張: 首先我們建立一個ThreadGroup,Number of
Time of Update: 2018-12-06
session是WEB編程中經常會用到的東西。 一般情況下,我們可以認為session是和瀏覽器相關的,在一個瀏覽器中登入獲得session後,新開啟一個瀏覽器是無法獲得那個瀏覽器的session的,那現在問題是,如果在test1.jsp中有這樣一個超連結: <a href = "test2.jsp" target = _blank> 這樣,會開啟一個新視窗顯示test2.jsp,那麼test1.jsp中的session在test2.jsp中還存在嗎? 實驗結果:存在,可以正常使用
Time of Update: 2018-12-06
1. SMP機器中實現並行常見的做法就是使用threads, hardware vendors有自己的threads實現,但是給程式移植帶來很大問題。於是,對於UNIX系統來說,IEEE POSIX 1003.1c標準出台,這就是POSIX Threads -- pthread 2. 據我所知,有一個open source的項目,是一個library,實現了windows下的pthread,簡單來說,將我們寫的pthread的函數映射到了windows
Time of Update: 2018-12-06
在提交任務介面,在瀏覽目錄和瀏覽檔案的時候,選擇完成後需要點確定,此時會調用JS代碼: window.opener.SubmitJobForm.xxxxxx = ....... 包括在submitjob.jsp中,用window.open開啟popup視窗後,也會給這個新視窗的opener這個屬性賦值。 在這兩個地方都會出現Class doesn't support
Time of Update: 2018-12-06
ignore SIGCHLD訊號的作用 -- 防止殭屍進程的產生 signal(SIGCHLD, SIG_IGR); //忽略SIGCHLD訊號,這常用於並發伺服器的效能的一個技巧 //因為並發伺服器常常fork很多子進程,子進程終結之後需要 //伺服器處理序去wait清理資源。如果將此訊號的處理方式設為
Time of Update: 2018-12-06
編寫EasyCluster V2.0 Portal部分主介面的時候,總結了以下幾點HTML心得: 1. 所有的table,td的width要寫成百分數,而不能寫成絕對的像素值,因為用戶端的機器的解析度我們是不知道的,不能按照1024*768的假設去寫HTML頁面 2. Portal介面中每個部分都是一個矩形框,矩形框的上部是一個三個td的tr,每個td都有一個獨特的background圖片,組成了一個帶弧形的條
Time of Update: 2018-12-06
這兩個函數都是linux實現i18n需要用到的。其中setlocale用來設定locale,比如LC_ALL,LC_CTYPE等,一般用法是:setlocale(LC_ALL, "")這用來設定LC_ALL,第二個參數是一個Null 字元串表示使用環境變數中定義的LC_ALL的值。然後就是用bindtextdomain,比如:bindtextdomain("libgammu", LOCALE_PATH);Linux
Time of Update: 2018-12-06
RTM: inet_aton() doesn't appear to support IPv6, inet_pton does. The parameter lists are different. The return values are different. inet_pton() requires a four part dot notation and inet_aton can process some other presentation formats. Don't be
Time of Update: 2018-12-06
有時我們需要讀取連結檔案指向的內容,比如,給定一個進程的fd,我們想知道這個fd具體是什麼東西,那麼,就可以在/proc/<pid>/fd目錄下看到該fd指向的內容,只不過這個目錄下該fd是一個連結檔案,我們需要的是該檔案指向的內容。此時就可以用readlink這個system call,具體用法很簡單,比如:Code: Select all char proc_fd_path[255]; char fd_des_buf[255]; ssize_t
Time of Update: 2018-12-06
格式: x /nfu <addr>說明x 是 examine 的縮寫n表示要顯示的記憶體單元的個數f表示顯示方式, 可取如下值x 按十六進位格式顯示變數。d 按十進位格式顯示變數。u 按十進位格式顯示無符號整型。o 按八進位格式顯示變數。t 按二進位格式顯示變數。a 按十六進位格式顯示變數。i 指令地址格式c 按字元格式設定顯示變數。f 按浮點數格式顯示變數。u表示一個地址單元的長度b表示單位元組,h表示雙位元組,w表示四位元組,g表示八位元組Format letters are
Time of Update: 2018-12-06
addr2line,輸入一個地址,指定一個帶-g編譯的可執行程式,就可以列印出該地址對應的程式碼。其實gdb也有這個功能,不過addr2line的好處是,很多時候,bug很難重現,我們手上只有一份crash log。這樣就可以利用addr2line找到對應的程式碼,很方便。前提條件是:1. 該可執行程式用-g編譯,帶調試資訊(所謂調試資訊就是代碼和地址的一個對應關係的資訊)。2.
Time of Update: 2018-12-06
glibc提供了backtrace這個庫函數,可以用來列印call stack。這個對於debug非常的有協助。比如我們可以在程式中註冊常見的一些signal,比如SIGSEGMENT, SIGPIPE,然後在這些訊號的回呼函數中,利用backtrace列印出call stack,這樣debug就非常的方便。backtrace的使用很簡單,使用man手冊中的Example代碼即可,例如:Code: Select all char strbuffer[1024]; int