狠狠人妻久久久久久综合蜜桃,久久夜色精品国产网站,一本一本久久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 發表評論
]]>
免费精品久久天干天干| 777午夜精品久久av蜜臀| 一级做a爱片久久毛片| 国产精品99久久久久久www| 久久最新免费视频| 精品久久无码中文字幕| 久久久精品视频免费观看| 亚洲精品白浆高清久久久久久| 国产精品无码久久综合| 久久亚洲欧洲国产综合| 成人久久综合网| 人妻无码久久一区二区三区免费| 国产精品久久久久久久| 亚洲午夜无码久久久久小说| 99久久免费国产精品热| 久久99久国产麻精品66| 久久久久久国产精品无码下载| 久久综合香蕉国产蜜臀AV| 久久夜色撩人精品国产| 久久国产精品-国产精品| 无遮挡粉嫩小泬久久久久久久| 国产三级精品久久| 久久综合狠狠色综合伊人| 久久精品www人人爽人人| 久久精品国产亚洲AV不卡| 久久高潮一级毛片免费| 久久这里只精品国产99热| 精品综合久久久久久888蜜芽| 久久精品国产免费观看| 亚洲伊人久久综合中文成人网 | 国产成人久久精品一区二区三区| 精品乱码久久久久久夜夜嗨| 久久亚洲欧美国产精品| 无码AV波多野结衣久久| 久久亚洲精品国产精品| 午夜精品久久久久久99热| 久久久av波多野一区二区| 久久午夜伦鲁片免费无码| AV无码久久久久不卡网站下载| AV无码久久久久不卡蜜桃| 久久香综合精品久久伊人|