狠狠人妻久久久久久综合蜜桃,久久夜色精品国产网站,一本一本久久A久久综合精品http://www.shnenglu.com/tangxinfa/category/5923.html開發者之旅zh-cnTue, 28 Feb 2012 09:34:50 GMTTue, 28 Feb 2012 09:34:50 GMT60node.js tipshttp://www.shnenglu.com/tangxinfa/articles/nodejs_tips.html唐新發唐新發Sat, 18 Feb 2012 04:25:00 GMThttp://www.shnenglu.com/tangxinfa/articles/nodejs_tips.htmlhttp://www.shnenglu.com/tangxinfa/comments/165904.htmlhttp://www.shnenglu.com/tangxinfa/articles/nodejs_tips.html#Feedback0http://www.shnenglu.com/tangxinfa/comments/commentRss/165904.htmlhttp://www.shnenglu.com/tangxinfa/services/trackbacks/165904.htmlQ. 在項目根目錄下執行sudo npm link xxx即可。


唐新發 2012-02-18 12:25 發表評論
]]>
Protocol Buffer學習筆記http://www.shnenglu.com/tangxinfa/articles/87022.html唐新發唐新發Sun, 07 Jun 2009 15:02:00 GMThttp://www.shnenglu.com/tangxinfa/articles/87022.htmlhttp://www.shnenglu.com/tangxinfa/comments/87022.htmlhttp://www.shnenglu.com/tangxinfa/articles/87022.html#Feedback0http://www.shnenglu.com/tangxinfa/comments/commentRss/87022.htmlhttp://www.shnenglu.com/tangxinfa/services/trackbacks/87022.htmlProtocol Buffer,這個東西基本上附合我的要求,可以序列化成高效的二進制格式,如果能夠提供序列化成文本(如:XML)的功能,會便于調試。
手冊上有一段話初看讓人疑惑:
Protocol Buffers and O-O Design Protocol buffer classes are basically dumb data holders (like structs in C++); they don't make good first class citizens in an object model. If you want to add richer behaviour to a generated class, the best way to do this is to wrap the generated protocol buffer class in an application-specific class. Wrapping protocol buffers is also a good idea if you don't have control over the design of the .proto file (if, say, you're reusing one from another project). In that case, you can use the wrapper class to craft an interface better suited to the unique environment of your application: hiding some data and methods, exposing convenience functions, etc. You should never add behaviour to the generated classes by inheriting from them. This will break internal mechanisms and is not good object-oriented practice anyway.
大意是不要從它生成的Message類進行派生,以便加入一些行為函數,而應該采用包裝(wrap)的方式,說白了就是組合(在你的類中放一個生成的Message類成員變量)。通過查看郵件列表,載錄以下詳細解釋:
 *如果進行派生,那么你的類中會混入Protocol Buffer生成的一些方法,而這些方法將來還可能會變化,
 這就意味著你的類將依賴Protocol Buffer的實現。用設計相關的術語就是:你繼承了實現,你把業務和數據混在了一起。


唐新發 2009-06-07 23:02 發表評論
]]>
gsoap學習筆記http://www.shnenglu.com/tangxinfa/articles/78344.html唐新發唐新發Mon, 30 Mar 2009 02:37:00 GMThttp://www.shnenglu.com/tangxinfa/articles/78344.htmlhttp://www.shnenglu.com/tangxinfa/comments/78344.htmlhttp://www.shnenglu.com/tangxinfa/articles/78344.html#Feedback0http://www.shnenglu.com/tangxinfa/comments/commentRss/78344.htmlhttp://www.shnenglu.com/tangxinfa/services/trackbacks/78344.html  它們是自動實現了的函數。
  stub由client使用,skeleton由server在收到請求時自動調用。
  考慮最基本的通信:client->network->server
  在network的兩個邊界分別就是stub和skeleton
  gsoap通過生成stub和skeleton,讓我們的client只需調用一下stub函數,而server只需要實現skeleton函數內部調用的對應的處理函數。


唐新發 2009-03-30 10:37 發表評論
]]>
log4cxx使用心得http://www.shnenglu.com/tangxinfa/articles/log4cxx_tips.html唐新發唐新發Tue, 17 Jun 2008 02:01:00 GMThttp://www.shnenglu.com/tangxinfa/articles/log4cxx_tips.htmlhttp://www.shnenglu.com/tangxinfa/comments/53660.htmlhttp://www.shnenglu.com/tangxinfa/articles/log4cxx_tips.html#Feedback0http://www.shnenglu.com/tangxinfa/comments/commentRss/53660.htmlhttp://www.shnenglu.com/tangxinfa/services/trackbacks/53660.html
  • 簡介
apache出品必屬精品。正宗c++日志庫,與log4j一脈相承。
http://logging.apache.org/log4cxx/index.html
  • 下載、編譯、安裝
打算安裝到${HOME}/libs目錄下:
cd ~/libs
wget http://mirror.bjtu.edu.cn/apache//apr/apr-1.4.4.tar.bz2
tar xjvf apr-1.4.4.tar.bz2
cd apr-1.4.4
./configure --prefix=${HOME}/libs && make && make install
cd ..
wget http://mirror.bjtu.edu.cn/apache//apr/apr-util-1.3.11.tar.bz2
tar xjvf apr-util-1.3.11.tar.bz2
cd apr-util-1.3.11
./configure --prefix=${HOME}/libs --with-apr=${HOME}/libs && make && make install
cd ..
wget http://apache.etoak.com//logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz
tar xzvf
apache-log4cxx-0.10.0.tar.gz
cd apache-log4cxx-0.10.0
./configure --with-charset=utf-8 --prefix=${HOME}/libs --with-apr=${HOME}/libs --with-apr-util=${HOME}/libs && make && make install


  • 使用例子
hello.cpp:
#include?"log4cxx/logger.h"
#include?
"log4cxx/propertyconfigurator.h"

static?log4cxx::LoggerPtr?logger(log4cxx::Logger::getLogger("hello"));

int?main(int?argc,?char?*argv[])
{
????????log4cxx::PropertyConfigurator::configure(
"./log4cxx_hello.properties");
??????? LOG4CXX_INFO(logger,?
"你好,log4cxx!");
????????
return?0;
}

log4cxx_hello.properties:
log4j.rootLogger=debug,?R

log4j.appender.stdout
=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout
=org.apache.log4j.PatternLayout

#?Pattern?to?output?the?caller's?file?name?and?line?number.
log4j.appender.stdout.layout.ConversionPattern
=%5p?[%t]?(%F:%L)?-?%m%n

log4j.appender.R
=org.apache.log4j.RollingFileAppender
log4j.appender.R.File
=./hello.log

log4j.appender.R.MaxFileSize
=100KB
#?Keep?one?backup?file
log4j.appender.R.MaxBackupIndex
=10

log4j.appender.R.layout
=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern
=%5p?%c?[%t]?(%F:%L)?-?%m%n

g++ -o hello hello.cpp -I${HOME}/libs/include ${HOME}/libs/lib/liblog4cxx.a ${HOME}/libs/lib/libaprutil-1.a ${HOME}/libs/lib/libapr-1.a? -lexpat -lpthread

  • 注意事項
1,配置的MaxBackupIndex不得過大,log4cxx編譯時限制了它的大小(大概十多個),一個日志文件寫滿后會重命名所有已有的日志文件,
這個限制避免性能問題,可以通過設置大一點的MaxFileSize來保存更多日志,否則就要在編譯時改大一點了。
參考:http://objectmix.com/apache/684503-urgent-log4cxx-large-window-sizes-not-allowed.html

  • 使用技巧
1,決定配置文件的格式(xml,property)。以使用相應的配置器(Configurator)裝入配置文件。
???? xml雖較property格式繁鎖,支持的配置面更全,而property格式的配置文件使用更簡單,容易在網上找到現成的配置文件。
2,logger命名。
???? logger名稱反映了軟件模塊,如果有代表軟件模塊的類,則在類中包含以該類類名命名的logger對象,該模塊功能相關代碼通過該logger進行日志記錄。
另外可將logger對象作為全局變量,方便使用,特別是當軟件模塊較松散,并無對應的封裝類時。
3,在代碼中適當地放置日志代碼。引用適當的日志對象,對日志進行適當分級。
4,余下的工作就是修改配置文件,對日志進行控制了。
  使用配置文件的好處就是可以方便地配置日志而不需要修改源代碼,可以在配置文件中方便配置日志過濾、格式、日志目的地。

  • 體驗
  之前產品中用到的是log4cplus,但是常常有寫日志崩潰的情況出現,使用log4cxx正是用于解決該崩潰。


唐新發 2008-06-17 10:01 發表評論
]]>
久久综合一区二区无码| 综合久久精品色| 国产 亚洲 欧美 另类 久久| 久久精品国产WWW456C0M| 久久99精品九九九久久婷婷| 理论片午午伦夜理片久久 | 国产精品欧美久久久天天影视 | 精品国产一区二区三区久久久狼| 国产精品久久久久9999高清| 欧美粉嫩小泬久久久久久久| 色偷偷偷久久伊人大杳蕉| 狠狠精品干练久久久无码中文字幕| 午夜精品久久久久久影视777| 精品少妇人妻av无码久久| 色综合久久天天综线观看| 99久久免费国产精精品| 狠狠色丁香久久婷婷综合蜜芽五月 | 久久综合国产乱子伦精品免费| 久久国产精品国语对白| 成人妇女免费播放久久久| 久久久久久精品无码人妻| 国产AV影片久久久久久| 国内精品人妻无码久久久影院 | 久久婷婷五月综合97色| 久久久久波多野结衣高潮| 久久国产成人午夜AV影院| 夜夜亚洲天天久久| 国产精品久久亚洲不卡动漫| 日韩人妻无码精品久久久不卡| 久久笫一福利免费导航| 久久亚洲精品无码观看不卡| 97精品伊人久久久大香线蕉| 国产精品久久久久久久| 91久久精一区二区三区大全| 久久精品国产亚洲AV高清热| 亚洲国产美女精品久久久久∴ | 色偷偷88888欧美精品久久久| 日韩精品久久久久久久电影| 亚洲午夜久久久| 久久久久久久波多野结衣高潮| 久久99热这里只有精品国产|