在线视频日韩,在线播放国产一区中文字幕剧情欧美,欧美日韩国内自拍http://www.shnenglu.com/tangxinfa/category/5923.html開(kāi)發(fā)者之旅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唐新發(fā)唐新發(fā)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. 在項(xiàng)目根目錄下執(zhí)行sudo npm link xxx即可。


唐新發(fā) 2012-02-18 12:25 發(fā)表評(píng)論
]]>
Protocol Buffer學(xué)習(xí)筆記http://www.shnenglu.com/tangxinfa/articles/87022.html唐新發(fā)唐新發(fā)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,這個(gè)東西基本上附合我的要求,可以序列化成高效的二進(jìn)制格式,如果能夠提供序列化成文本(如:XML)的功能,會(huì)便于調(diào)試。
手冊(cè)上有一段話初看讓人疑惑:
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類進(jìn)行派生,以便加入一些行為函數(shù),而應(yīng)該采用包裝(wrap)的方式,說(shuō)白了就是組合(在你的類中放一個(gè)生成的Message類成員變量)。通過(guò)查看郵件列表,載錄以下詳細(xì)解釋:
 *如果進(jìn)行派生,那么你的類中會(huì)混入Protocol Buffer生成的一些方法,而這些方法將來(lái)還可能會(huì)變化,
 這就意味著你的類將依賴Protocol Buffer的實(shí)現(xiàn)。用設(shè)計(jì)相關(guān)的術(shù)語(yǔ)就是:你繼承了實(shí)現(xiàn),你把業(yè)務(wù)和數(shù)據(jù)混在了一起。


唐新發(fā) 2009-06-07 23:02 發(fā)表評(píng)論
]]>
gsoap學(xué)習(xí)筆記http://www.shnenglu.com/tangxinfa/articles/78344.html唐新發(fā)唐新發(fā)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  它們是自動(dòng)實(shí)現(xiàn)了的函數(shù)。
  stub由client使用,skeleton由server在收到請(qǐng)求時(shí)自動(dòng)調(diào)用。
  考慮最基本的通信:client->network->server
  在network的兩個(gè)邊界分別就是stub和skeleton
  gsoap通過(guò)生成stub和skeleton,讓我們的client只需調(diào)用一下stub函數(shù),而server只需要實(shí)現(xiàn)skeleton函數(shù)內(nèi)部調(diào)用的對(duì)應(yīng)的處理函數(shù)。


唐新發(fā) 2009-03-30 10:37 發(fā)表評(píng)論
]]>
log4cxx使用心得http://www.shnenglu.com/tangxinfa/articles/log4cxx_tips.html唐新發(fā)唐新發(fā)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
  • 簡(jiǎn)介
apache出品必屬精品。正宗c++日志庫(kù),與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

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

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

  • 體驗(yàn)
  之前產(chǎn)品中用到的是log4cplus,但是常常有寫(xiě)日志崩潰的情況出現(xiàn),使用log4cxx正是用于解決該崩潰。


唐新發(fā) 2008-06-17 10:01 發(fā)表評(píng)論
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费欧美在线| 亚洲成人在线视频播放 | 欧美激情精品久久久久| 麻豆免费精品视频| 欧美不卡视频一区发布| 亚洲第一狼人社区| 亚洲精品日本| 亚洲欧美美女| 久久影视精品| 欧美日韩免费观看一区二区三区| 国产精品国产a级| 国产在线乱码一区二区三区| 亚洲国产欧美日韩| 亚洲欧美日韩区| 欧美freesex交免费视频| 99精品国产福利在线观看免费 | 国产精品理论片| 一区二区亚洲| 99热在这里有精品免费| 欧美一区1区三区3区公司| 久久影视精品| 夜夜嗨av一区二区三区四季av | 国产精品国产三级国产| 伊人成人在线视频| 亚洲伊人久久综合| 欧美福利电影在线观看| 一本色道久久加勒比精品| 亚洲欧美日韩国产综合| 欧美成人精品影院| 亚洲在线日韩| 欧美精品在线播放| 国内精品久久国产| 亚洲免费视频在线观看| 欧美国产日本高清在线| 欧美国产精品人人做人人爱| 亚洲风情亚aⅴ在线发布| 国产日韩高清一区二区三区在线| 欧美自拍偷拍| 欧美日韩综合视频| 亚洲国产视频直播| 久久久久欧美| 亚洲欧美在线免费| 国产精品久久久久久户外露出| 在线观看av不卡| 久久精视频免费在线久久完整在线看 | 亚洲精品欧美日韩专区| 性色一区二区| 国产精品久久久久久影院8一贰佰| 亚洲精品国偷自产在线99热| 蜜桃av一区二区| 久久激情五月丁香伊人| 国产精品视频专区| 午夜宅男久久久| 亚洲性xxxx| 国产视频亚洲精品| 久久裸体艺术| 麻豆精品在线视频| 亚洲精选久久| 99国产精品| 国产精品国产精品| 欧美伊人久久| 欧美一区二区国产| 韩日欧美一区| 欧美护士18xxxxhd| 欧美高清视频一区| 一本高清dvd不卡在线观看| 亚洲人久久久| 国产精品高潮粉嫩av| 亚洲欧美影音先锋| 亚洲永久免费av| 国内精品久久久久影院薰衣草| 久久久久久一区二区| 久久精品一区二区国产| 亚洲第一精品福利| 亚洲三级性片| 国产精品一二一区| 蜜桃久久av一区| 欧美精品自拍| 久久精品人人爽| 裸体一区二区| 亚洲午夜女主播在线直播| 亚洲视频在线一区| 国内精品美女av在线播放| 国产一级揄自揄精品视频| 久久精品国产综合| 亚洲精品国产日韩| 欧美午夜精品伦理| 久久久亚洲欧洲日产国码αv| 久久性天堂网| 在线视频日韩| 久久国产精品99久久久久久老狼| 亚洲电影在线播放| 亚洲视频第一页| 1769国产精品| 亚洲午夜激情在线| 亚洲精品一区二区三区不| 午夜精品在线| 亚洲少妇在线| 猛男gaygay欧美视频| 亚洲欧美日韩成人| 欧美成人精品高清在线播放| 欧美一区二区三区另类 | 欧美黄色大片网站| 国产精品美女久久| 亚洲国产精品va在线观看黑人| 国产精品老女人精品视频| 欧美激情精品久久久久久大尺度| 国产精品视频自拍| 亚洲伦理在线| 亚洲精品影院| 美女精品自拍一二三四| 欧美一级二区| 国产精品成人一区二区三区夜夜夜 | 欧美大片一区| 国语自产精品视频在线看一大j8| 日韩午夜电影av| 亚洲美女淫视频| 免费观看30秒视频久久| 久久综合网hezyo| 国产精品久久中文| 亚洲视频精选| 亚洲在线播放电影| 欧美视频日韩视频在线观看| 最新亚洲电影| 亚洲精品女人| 欧美成人精品在线播放| 免费不卡欧美自拍视频| 激情欧美国产欧美| 午夜精品偷拍| 欧美在线啊v| 国产欧美日韩亚洲精品| 亚洲一区二区三区在线| 新狼窝色av性久久久久久| 欧美日韩在线观看视频| av成人免费| 亚洲宅男天堂在线观看无病毒| 欧美高潮视频| 99re视频这里只有精品| 亚洲网站在线观看| 国产精品久久久久7777婷婷| 中国成人黄色视屏| 亚洲欧美电影在线观看| 国产精品久久久久免费a∨大胸| 一二三四社区欧美黄| 国产欧美日韩另类视频免费观看| 亚洲一区二区高清视频| 午夜精品在线| 国内外成人免费视频| 久久久久.com| 欧美国产日本高清在线| 99视频精品免费观看| 欧美日韩一区二区国产| 亚洲影视综合| 欧美成ee人免费视频| 一本色道久久综合亚洲91| 欧美视频一区二区三区四区| 亚洲一区综合| 欧美大胆人体视频| 亚洲视频免费观看| 国产精品美女一区二区| 久久久久久电影| 最新精品在线| 久久国产夜色精品鲁鲁99| 亚洲电影观看| 欧美性一区二区| 久久免费高清| 亚洲图片你懂的| 免费日韩av电影| 中文欧美日韩| 一区二区亚洲精品国产| 欧美三级电影一区| 久久久国产精品一区二区中文| 亚洲欧洲精品成人久久奇米网| 午夜日韩视频| 亚洲精品欧美极品| 国产一区二区精品在线观看| 欧美激情国产高清| 久久激情中文| 亚洲午夜视频在线观看| 欧美国产另类| 久久精品久久99精品久久| 夜色激情一区二区| 尤物在线观看一区| 国产精品一区二区三区观看| 欧美成人国产| 久久精品国产91精品亚洲| 一区二区三区四区在线| 亚洲国产成人精品女人久久久 | 欧美日韩国产首页在线观看| 性做久久久久久久久| 日韩视频在线观看国产| 猛男gaygay欧美视频| 欧美一区亚洲二区| 亚洲免费婷婷| 亚洲一区二区三区视频播放| 91久久精品美女高潮| 亚洲高清在线精品| 国模套图日韩精品一区二区| 国产精品久久久久久模特| 欧美三区在线观看|