在线视频日韩,在线播放国产一区中文字幕剧情欧美,欧美日韩国内自拍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>
            蜜臀av在线播放一区二区三区 | 亚洲一区二区三区乱码aⅴ蜜桃女| 久久高清一区| 国产一区二区三区自拍| 久久综合九色99| 久久婷婷蜜乳一本欲蜜臀| 亚洲高清色综合| 亚洲人成绝费网站色www| 欧美国产日韩一区二区在线观看| 99视频一区二区| 亚洲伊人一本大道中文字幕| 黄色亚洲大片免费在线观看| 欧美国产日韩免费| 欧美日韩1080p| 欧美专区中文字幕| 欧美二区在线观看| 午夜在线观看免费一区| 欧美在线综合| 99视频在线观看一区三区| 亚洲欧美美女| 亚洲国产精品视频一区| 一卡二卡3卡四卡高清精品视频| 国产视频一区二区在线观看| 亚洲电影第1页| 国产精品国产三级国产| 久久久青草婷婷精品综合日韩| 欧美成ee人免费视频| 亚洲欧美日韩在线不卡| 蜜桃av综合| 欧美在线观看视频在线| 欧美电影在线| 久久人人97超碰国产公开结果| 欧美啪啪成人vr| 老牛嫩草一区二区三区日本| 欧美日韩在线观看一区二区三区| 蜜桃av一区二区| 国产精品免费久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美午夜理伦三级在线观看| 欧美国产日韩亚洲一区| 国产一区欧美| 亚洲午夜免费福利视频| 在线视频亚洲| 欧美美女喷水视频| 欧美高清在线精品一区| 国产在线播放一区二区三区| 正在播放亚洲| 国产精品99久久99久久久二8 | 亚洲一区视频在线观看视频| 日韩午夜在线| 欧美电影专区| 欧美不卡视频一区| 在线播放日韩欧美| 久久精品五月婷婷| 久久精品一区二区三区不卡| 国产精品午夜久久| 亚洲欧美激情四射在线日 | 亚洲无限av看| 亚洲免费精品| 欧美精品性视频| 亚洲精品午夜精品| 国产精品99久久久久久白浆小说| 欧美肥婆bbw| 亚洲精品乱码久久久久久黑人| 亚洲精品欧洲| 欧美精品二区| 日韩系列在线| 亚洲欧美国产另类| 国产欧美日韩综合精品二区| 性久久久久久久| 久久久久一区二区三区| 激情视频一区二区三区| 麻豆精品网站| 日韩视频一区二区三区在线播放| 亚洲天天影视| 国产日韩av一区二区| 久久国产精品高清| 亚洲二区在线视频| 正在播放日韩| 国产嫩草影院久久久久 | 亚洲美女黄色| 亚洲欧美日韩综合国产aⅴ| 国产精品性做久久久久久| 久久99伊人| 亚洲高清视频一区| 亚洲香蕉视频| 国产在线高清精品| 欧美成年人视频网站欧美| 亚洲美女精品久久| 久久久91精品| av成人动漫| 国产日本欧美在线观看| 蜜臀91精品一区二区三区| 日韩亚洲欧美成人一区| 久久经典综合| 99国产精品久久久久老师| 国产精品一二三四区| 久久免费99精品久久久久久| 日韩亚洲欧美成人| 麻豆国产精品777777在线| 中文久久乱码一区二区| 国产一区三区三区| 欧美日韩精品一区| 久久久久.com| 亚洲视频欧美在线| 亚洲国产精品久久久久婷婷884| 午夜欧美理论片| 亚洲日韩成人| 国产综合18久久久久久| 欧美三级在线播放| 欧美+亚洲+精品+三区| 亚洲欧美成人一区二区三区| 亚洲国产欧美另类丝袜| 久久综合网络一区二区| 亚洲在线中文字幕| 日韩亚洲欧美成人| 亚洲第一在线综合在线| 国产日产高清欧美一区二区三区| 欧美日韩人人澡狠狠躁视频| 美女日韩欧美| 久久久久免费视频| 性欧美xxxx大乳国产app| 夜久久久久久| 日韩视频免费观看| 亚洲国产日韩美| 欧美国产亚洲精品久久久8v| 久久亚洲视频| 久久岛国电影| 久久高清免费观看| 欧美一区二区三区在线| 亚洲中午字幕| 亚洲永久网站| 亚洲视频在线二区| 夜夜嗨av一区二区三区| 99精品欧美一区二区三区| 亚洲国产精品一区二区www在线| 国产在线观看一区| 国产日韩欧美在线| 国一区二区在线观看| 国语自产偷拍精品视频偷| 国产亚洲精品久久久久婷婷瑜伽| 国产三级欧美三级| 国产一区二区三区免费不卡| 国产欧美一区二区精品仙草咪| 国产女人精品视频| 国产午夜一区二区三区| 韩日精品中文字幕| 影音先锋在线一区| 亚洲精品日产精品乱码不卡| 亚洲美女性视频| 一区二区三区欧美成人| 亚洲欧美日本伦理| 欧美一区免费视频| 久久这里有精品15一区二区三区| 另类图片综合电影| 欧美激情中文字幕一区二区| 亚洲人成网在线播放| 一区二区国产精品| 亚洲欧美在线播放| 久久在线免费观看| 欧美日韩精品一区二区| 国产精品视频不卡| 一区二区自拍| 一区二区欧美在线| 欧美一区亚洲二区| 欧美成人免费视频| 亚洲精品免费电影| 欧美一区二区性| 欧美高清在线视频| 国产老肥熟一区二区三区| 在线电影院国产精品| 亚洲五月婷婷| 另类亚洲自拍| 一区二区欧美国产| 久久一区二区三区av| 欧美三区在线视频| 激情六月婷婷久久| 亚洲欧美日本精品| 欧美高清视频在线播放| 亚洲五月六月| 免费亚洲一区二区| 国产香蕉97碰碰久久人人| 亚洲精品视频二区| 久久精品国产亚洲一区二区三区 | 一区二区三区精品久久久| 欧美一区二区在线播放| 欧美日韩在线免费视频| 永久久久久久| 欧美一区影院| 99re8这里有精品热视频免费| 久久国产天堂福利天堂| 国产精品video| 亚洲精选视频免费看| 久久亚洲私人国产精品va| 一区二区三区av| 欧美极品aⅴ影院| 亚洲国产人成综合网站| 久久精品一本久久99精品| 亚洲图片欧美一区| 欧美日本中文字幕|