在线视频日韩,在线播放国产一区中文字幕剧情欧美,欧美日韩国内自拍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>
            久久久精品一品道一区| 久久激五月天综合精品| 欧美大片在线观看| 在线观看视频一区二区| 男女激情视频一区| 美腿丝袜亚洲色图| 最新精品在线| 99精品欧美一区| 国产美女一区二区| 久久伊人免费视频| 欧美国产精品久久| 亚洲欧美韩国| 久久久久9999亚洲精品| 日韩午夜电影av| 亚洲一区二区三区四区五区午夜| 国产精品日韩一区二区| 葵司免费一区二区三区四区五区| 麻豆成人在线| 午夜在线观看免费一区| 久久蜜臀精品av| 亚洲一卡久久| 久久婷婷麻豆| 欧美一级午夜免费电影| 毛片基地黄久久久久久天堂| 中文亚洲欧美| 久久婷婷国产综合国色天香| 亚洲专区在线| 蜜桃av一区| 久久福利影视| 欧美日韩高清在线| 久久免费国产精品| 国产精品二区在线| 亚洲国产人成综合网站| 国产精品夜夜夜一区二区三区尤| 欧美v国产在线一区二区三区| 国产精品久久网| 亚洲精品国久久99热| 国产在线播精品第三| 99国产精品一区| 亚洲激情在线观看| 久久精品成人欧美大片古装| 亚洲一区二区三区免费在线观看 | 亚洲桃花岛网站| 久久另类ts人妖一区二区| 午夜精品亚洲| 欧美视频中文字幕| 亚洲国产一二三| 亚洲福利在线看| 久久精品夜夜夜夜久久| 久久国产综合精品| 国产精品系列在线播放| 一区二区三区三区在线| 亚洲天堂网在线观看| 欧美经典一区二区三区| 欧美激情亚洲国产| 亚洲欧洲另类国产综合| 美腿丝袜亚洲色图| 毛片精品免费在线观看| 精品51国产黑色丝袜高跟鞋| 午夜视频在线观看一区二区| 亚洲欧美日韩第一区| 欧美特黄一级| 亚洲淫片在线视频| 欧美在线视屏| 国产一区二区在线观看免费播放| 亚洲尤物在线| 久久精品动漫| 激情五月***国产精品| 久久深夜福利| 亚洲国产精品久久人人爱蜜臀| 亚洲黄色免费网站| 欧美高清一区| 一本一本久久a久久精品综合妖精| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 性感少妇一区| 国产亚洲精久久久久久| 久久国产精品一区二区三区| 久久久噜噜噜久噜久久| 伊人一区二区三区久久精品| 久久综合色播五月| 亚洲欧洲精品一区二区| 夜色激情一区二区| 国产精品久久久久久久久久免费看| 亚洲天堂av在线免费| 久久精品一区蜜桃臀影院| 在线观看欧美激情| 欧美黑人在线播放| 亚洲一区二区三区免费观看| 久久久水蜜桃| 亚洲理论电影网| 国产精品视频九色porn| 久久久久久精| 日韩一级黄色av| 久久久久国产一区二区三区四区| 欧美在线1区| 亚洲高清免费视频| 欧美视频免费在线| 欧美专区日韩专区| 亚洲人成网站在线播| 久久爱www久久做| 亚洲国产经典视频| 国产精品久99| 免费成人性网站| 亚洲综合精品| 亚洲欧洲日本一区二区三区| 欧美一级大片在线观看| 亚洲电影专区| 国产精品高潮呻吟视频| 免费成人激情视频| 欧美亚洲综合网| 夜夜精品视频一区二区| 欧美大片一区二区三区| 欧美一区二区三区精品| 日韩一级精品| 亚洲高清视频一区| 国产欧美欧洲在线观看| 欧美精品一区二区三区四区| 久久精品国产成人| 亚洲综合国产精品| 在线视频精品一区| 亚洲人成小说网站色在线| 久久综合色一综合色88| 欧美一级淫片aaaaaaa视频| 99国产精品久久久久久久成人热| 加勒比av一区二区| 国产亚洲精品7777| 国产美女诱惑一区二区| 国产精品v欧美精品∨日韩| 欧美激情精品久久久久久| 老司机久久99久久精品播放免费| 欧美一区不卡| 午夜精品短视频| 亚洲女人天堂成人av在线| 中国成人亚色综合网站| 亚洲精品久久| 亚洲精品久久久久中文字幕欢迎你| 麻豆成人av| 久久伊人精品天天| 久久婷婷色综合| 猫咪成人在线观看| 免费看成人av| 欧美国产日韩一区二区| 农村妇女精品| 亚洲二区视频| 亚洲欧洲精品天堂一级| 亚洲精品久久久久中文字幕欢迎你 | 一区二区三区在线观看欧美| 欧美在线视频观看免费网站| 亚洲综合日韩| 日韩视频不卡中文| 欧美日韩国产区| 蜜桃av噜噜一区| 欧美大片一区二区| 欧美日韩亚洲高清| 国产精品久久久久一区二区| 国产乱人伦精品一区二区| 国产三级精品三级| 在线欧美不卡| 日韩亚洲视频| 香蕉精品999视频一区二区 | 亚洲成人在线网| 亚洲人成啪啪网站| 亚洲调教视频在线观看| 亚洲女人小视频在线观看| 久久久成人网| 亚洲高清视频中文字幕| 亚洲免费高清视频| 亚洲欧美久久久| 久久一区二区三区超碰国产精品| 欧美黄污视频| 国产免费观看久久黄| 亚洲高清视频在线观看| 一区二区三区成人精品| 久久国产主播精品| 亚洲第一视频网站| 亚洲欧美韩国| 欧美精品九九| 国产在线欧美日韩| 99精品国产高清一区二区| 小黄鸭精品密入口导航| 亚洲成人在线视频播放 | 亚洲国产日韩欧美在线动漫| 一区二区三区四区精品| 欧美中文日韩| 欧美调教视频| 亚洲黄页一区| 欧美在线观看视频一区二区| 亚洲第一网站免费视频| 亚洲欧美日产图| 欧美精品在线观看播放| 国产专区综合网| 亚洲综合色激情五月| 欧美高清成人| 欧美一级在线播放| 国产精品www| 99视频一区二区| 欧美粗暴jizz性欧美20| 久久国产精品99国产| 国产精品久久久久久妇女6080| 亚洲日本黄色|