??xml version="1.0" encoding="utf-8" standalone="yes"?>黄色欧美日韩,黄色成人精品网站,国产精品亚洲产品http://www.shnenglu.com/chinloon/programming_with_fun();zh-cnSun, 24 Aug 2025 07:47:21 GMTSun, 24 Aug 2025 07:47:21 GMT60Windows下编?libevent 64位静态库http://www.shnenglu.com/chinloon/archive/2012/06/26/180322.htmlMeiosisMeiosisTue, 26 Jun 2012 06:54:00 GMThttp://www.shnenglu.com/chinloon/archive/2012/06/26/180322.htmlhttp://www.shnenglu.com/chinloon/comments/180322.htmlhttp://www.shnenglu.com/chinloon/archive/2012/06/26/180322.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/180322.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/180322.html因ؓ目中要求编?4位的版本Q需要在Makefile.nmake中添加一个LIBFLAGS选项 /MACHINE:X64
如果要加调试信息Q可以在 CFLAGS中加?ZiQ?2位加调试选项?CFLAGS中加/ZIQ当然要调整优化选项/Ox

Meiosis 2012-06-26 14:54 发表评论
]]>
再遇 SQLITE_BUSYhttp://www.shnenglu.com/chinloon/archive/2012/06/06/177803.htmlMeiosisMeiosisWed, 06 Jun 2012 08:35:00 GMThttp://www.shnenglu.com/chinloon/archive/2012/06/06/177803.htmlhttp://www.shnenglu.com/chinloon/comments/177803.htmlhttp://www.shnenglu.com/chinloon/archive/2012/06/06/177803.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/177803.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/177803.html遇到q个问题Q一般而言?U情况造成Q?br />1) 其他U程、进E正在执行一ơ写操作
    ҎSQLITE文Q所有写操作(当然SELECT不算写操?QSQLITE内部都会自动d事务Q这样在U程同时写有依赖关系的表的时候,自然会发生冲H?br />2) 当前SQLITE?#8220;BEGIN TRANSACTION” lock住了Q这个问题其实包含了1)中的隐Ş调用Q另外别忘了自己的代码一定要在执行完BEGIN ?COMMIT
3) 有statement对象未finalizeQ且未reset(出错?
    q个情况占多敎ͼ我项目中遇到两次都是q个情况Q?br />
    当然Q要注意即自己未直接调?prepare-step-finalizeQ在某些API执行的时候会隐式调用(比如sqlite3_exec)Q当然这U情况一般会归在1)?/div>
   


Meiosis 2012-06-06 16:35 发表评论
]]>c/c++ 可变参数在函C的传?/title><link>http://www.shnenglu.com/chinloon/archive/2012/06/05/177672.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Tue, 05 Jun 2012 09:53:00 GMT</pubDate><guid>http://www.shnenglu.com/chinloon/archive/2012/06/05/177672.html</guid><wfw:comment>http://www.shnenglu.com/chinloon/comments/177672.html</wfw:comment><comments>http://www.shnenglu.com/chinloon/archive/2012/06/05/177672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/chinloon/comments/commentRss/177672.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/chinloon/services/trackbacks/177672.html</trackback:ping><description><![CDATA[@note: 只在windows中测试,未在linux上跑q?br /> Ҏ一Q?通过宏传?br /> 例如<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1 <span style="color: #0000FF; ">void</span> myprintf(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span>* format, );<br /> 2 <br /> 3 #ifndef PASS_ARGS<br /> 4 <span style="color: #0000FF; ">#define</span> PASS_ARGS(_fmt,) \<br /> 5   myprintf(fmt,__VA_ARGS__)<br /> 6 <span style="color: #0000FF; ">#endif</span></div> <br /> q种方式最单最直接Q但不利于函数的装调用?br /> <br /> Ҏ二: 通过函数传?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 2 <br />  3 <span style="color: #0000FF; ">void</span> myprintf(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">char</span>* fmt, )<br />  4 {<br />  5     va_list args;<br />  6     va_start(args, fmt);<br />  7     myprintf_internal(fmt, args);<br />  8     va_end(args);<br />  9 }</div> <span style="font-size: small; ">q种Ҏ可以在函数内传?va_list</span><br /> <span><font size="2"><br /> 至于 myprintf(const char*, ...) 传给 myprintf_internal(const char*, ...)q种方式Q貌似只能通过循环解析出实参个数和内容Q再传递给下一个函敎ͼ感觉上这样做可能会存在性能损?/font></span><img src ="http://www.shnenglu.com/chinloon/aggbug/177672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/chinloon/" target="_blank">Meiosis</a> 2012-06-05 17:53 <a href="http://www.shnenglu.com/chinloon/archive/2012/06/05/177672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux ssh d的断开与重q?/title><link>http://www.shnenglu.com/chinloon/archive/2012/04/27/172868.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Thu, 26 Apr 2012 16:17:00 GMT</pubDate><guid>http://www.shnenglu.com/chinloon/archive/2012/04/27/172868.html</guid><wfw:comment>http://www.shnenglu.com/chinloon/comments/172868.html</wfw:comment><comments>http://www.shnenglu.com/chinloon/archive/2012/04/27/172868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/chinloon/comments/commentRss/172868.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/chinloon/services/trackbacks/172868.html</trackback:ping><description><![CDATA[直接用自带的 screen 卛_解决Qscreen 中执行的d c-a d 之后会把d切后収ͼ<br />重新SSH上去之后Qscreen -ls 扑ֈIDQ直?screen -r [id]<br /><br /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a ? 昄所有键l定信息</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a w 昄所有窗口列?/span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a C-a 切换C前显C的H口</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a c 创徏一个新的运行shell的窗口ƈ切换到该H口</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a n 切换C一个窗?/span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a p 切换到前一个窗?与C-a n相对)</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a 0..9 切换到窗?..9</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a a 发?C-a到当前窗?/span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a d 暂时断开screen会话</span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a k 杀掉当前窗?/span><br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; " /><span style="color: #383838; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 24px; text-align: left; ">C-a [ q入拯/回滚模式</span><img src ="http://www.shnenglu.com/chinloon/aggbug/172868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/chinloon/" target="_blank">Meiosis</a> 2012-04-27 00:17 <a href="http://www.shnenglu.com/chinloon/archive/2012/04/27/172868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windbg open & read dump filehttp://www.shnenglu.com/chinloon/archive/2012/03/30/169514.htmlMeiosisMeiosisFri, 30 Mar 2012 06:30:00 GMThttp://www.shnenglu.com/chinloon/archive/2012/03/30/169514.htmlhttp://www.shnenglu.com/chinloon/comments/169514.htmlhttp://www.shnenglu.com/chinloon/archive/2012/03/30/169514.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/169514.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/169514.html!analyze -v 

Meiosis 2012-03-30 14:30 发表评论
]]>
关于 SQLite 优化http://www.shnenglu.com/chinloon/archive/2012/01/19/164380.htmlMeiosisMeiosisThu, 19 Jan 2012 09:58:00 GMThttp://www.shnenglu.com/chinloon/archive/2012/01/19/164380.htmlhttp://www.shnenglu.com/chinloon/comments/164380.htmlhttp://www.shnenglu.com/chinloon/archive/2012/01/19/164380.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/164380.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/164380.html׃客户端本w的数据完整性不重要Q性能非常重要Q所以想止q个文g的生成?br />后来查了一下文档,q实践过后,发现|络上所有的关于关闭/打开某些宏来防止生成的方法都不管用。情急之下,只有Ҏ码了?br />改的地方是在main.c ?nbsp;sqlite3BtreeFactory 里,直接加个宏就好了 omitJournal

 1 int sqlite3BtreeFactory(
 2   const sqlite3 *db,        /* Main database when opening aux otherwise 0 */
 3   const char *zFilename,    /* Name of the file containing the BTree database */
 4   int omitJournal,          /* if TRUE then do not journal this file */
 5   int nCache,               /* How many pages in the page cache */
 6   int vfsFlags,             /* Flags passed through to vfsOpen */
 7   Btree **ppBtree           /* Pointer to new Btree object written here */
 8 ){
 9   int btFlags = 0;
10   int rc;
11   
12   assert( sqlite3_mutex_held(db->mutex) );
13   assert( ppBtree != 0);
14 
15 #ifdef OMIT_JOURNAL
16   omitJournal = 1; //!< turn off journal file
17 #endif



Meiosis 2012-01-19 17:58 发表评论
]]>
boost::python 遇到的一些问题ȝhttp://www.shnenglu.com/chinloon/archive/2011/09/20/156313.htmlMeiosisMeiosisTue, 20 Sep 2011 06:29:00 GMThttp://www.shnenglu.com/chinloon/archive/2011/09/20/156313.htmlhttp://www.shnenglu.com/chinloon/comments/156313.htmlhttp://www.shnenglu.com/chinloon/archive/2011/09/20/156313.html#Feedback3http://www.shnenglu.com/chinloon/comments/commentRss/156313.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/156313.html   WinXP-SP3(chs) + VS2010-SP1(en-us) + boost 1.47.0 + python 2.7(ActivePython2.7 携带)

   boost~译Ӟboost::python库编译ؓ stage debug release link=static runtime-link=shared

问题1:
   python27 不认dll作ؓextension
解决ҎQ?br />   project的output file ?extension 都设|ؓ .pyd

问题2Q?br />   需要在导出cd数时Q支持带指针的参?Q重头戏Q?br />解决ҎQ?br />   q个问题g|上没有一个完整的{案Q零零碎的问题有一堆,但感觉都不到位,接下来我q个方案吧?我对boost::python也不熟,如有错误希望好言指正:) )

 1 #include <boost/python.hpp>
 2 #include <stdio.h>
 3 using namespace boost::python;
 4 
 5 struct World
 6 {
 7     void simpleHello(void)
 8     {
 9         printf("this is simple hello\n");
10     }
11     void hello(int *data)
12     {
13         printf("World say hello :%d\n"*data);
14     }
15     int* ready(void)
16     {
17         return new int(1234);
18     }
19 };
20 
21 BOOST_PYTHON_MODULE(sample)
22 {
23     class_<World>("World")
24     .def("simpleHello"&World::simpleHello)
25     .def("hello"&World::hello, arg("data"))
26     .def("ready"&World::ready, return_value_policy<return_opaque_pointer>())
27     ;
28 }

q里要说明二点:
1Q这个例子既有传指针参数Q又有返回指针对象,是把boost::python两个典型问题囊括了?br />2Qreturn_opaque_pointer 是我查官Ҏ后得到的一个变通(官方推荐q里?manage_new_objectQ但不管你编不编的过Q反正我是编不过Q在MReference manual后看C opaque_pointerQ看名字觉得有戏Q就拿来用了。貌似opaque_pointer的严格性更低一炏V编译通过Q运行OKQ反正就q样了)

Meiosis 2011-09-20 14:29 发表评论
]]>
研究了一天ZeroMQQ有个严重的问题q没解决http://www.shnenglu.com/chinloon/archive/2011/06/14/148641.htmlMeiosisMeiosisTue, 14 Jun 2011 08:59:00 GMThttp://www.shnenglu.com/chinloon/archive/2011/06/14/148641.htmlhttp://www.shnenglu.com/chinloon/comments/148641.htmlhttp://www.shnenglu.com/chinloon/archive/2011/06/14/148641.html#Feedback1http://www.shnenglu.com/chinloon/comments/commentRss/148641.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/148641.html

Meiosis 2011-06-14 16:59 发表评论
]]>
Linux下调试死循环http://www.shnenglu.com/chinloon/archive/2011/06/13/148580.htmlMeiosisMeiosisMon, 13 Jun 2011 05:49:00 GMThttp://www.shnenglu.com/chinloon/archive/2011/06/13/148580.htmlhttp://www.shnenglu.com/chinloon/comments/148580.htmlhttp://www.shnenglu.com/chinloon/archive/2011/06/13/148580.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/148580.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/148580.html  具体跟踪Ҏ记录一下。首先正常启动程序,然后q行收发文g操作Q触发死循环。而后通过 top -H 查看哪个U程(其实是PIDQredhat的线E是forkq程实现?占用CPUq高Q而后gdb -p [pid] attach 之,最后bt 打印堆栈?img src ="http://www.shnenglu.com/chinloon/aggbug/148580.html" width = "1" height = "1" />

Meiosis 2011-06-13 13:49 发表评论
]]>
一D?汇编代码http://www.shnenglu.com/chinloon/archive/2011/01/06/138068.htmlMeiosisMeiosisThu, 06 Jan 2011 04:48:00 GMThttp://www.shnenglu.com/chinloon/archive/2011/01/06/138068.htmlhttp://www.shnenglu.com/chinloon/comments/138068.htmlhttp://www.shnenglu.com/chinloon/archive/2011/01/06/138068.html#Feedback0http://www.shnenglu.com/chinloon/comments/commentRss/138068.htmlhttp://www.shnenglu.com/chinloon/services/trackbacks/138068.html( http://www.shnenglu.com/kevinlynx/archive/2011/01/02/137886.html )
__declspec(naked)
void caller(void* pfn, 
{
    __asm 
    {
        pop eax;
        add eax, 3;
        xchg dword ptr[esp], eax;
        push eax;
        ret;
    }
}
下面是调用方?br>
void print_str( const char *s )
{
    printf( "%s\n", s );
}

{
   ...
caller( print_str, "a string" );
   __asm  add esp, 4
   ...
}

  原作者讲了一些基Q这里就不提?br>看了一遍,发现 "ADD EAX, 3" 的用法有点奇怪(我相信搞破解的h一定比较熟悉,但正常的E序不会q么写。)
初看 EAX 是地址Q?3是很危险的,但仔l一看,发现代码是ؓ了从最外层主调函数一路穿?caller" 直达 print_strQ这里牵涉到一个重要问题,是在CALL指oӞ会有?#8220;CALL指o下一条地址压栈”的操作,那么代码思\很明了了Q就是ؓ了要造出 调用print_strӞESP(+0) 指向 caller(..)调用的下一个地址?br>  W一兛_l顺利搞定,但又到个问题,׃ print_str 的入参是可变的,所以必ȝ cdecl调用Q那RET之后 如何qx呢? 如果直接跛_ caller下一条地址Q就丧失了^栈的ZQ最l会在某个主调函C被微软的 stack cookie捕获抛个SEH?br>  q里q到文章开头提到的 ADD EAX, 3?br>  必须要造一个环境,?caller 调用完成后,l个Z清理现场。于是乎Qcaller之后有?ADD ESP, 4。其实这里的4是与print_str的入参数目相关的Q每个参数要多加 4字节Q如此一来,整个代码qZ?br>  那ؓ什??ADD EAX, 3呢? 应该是预估出一条ADD指o占用多少长度Q和具体的环境有兟뀂因为没看INTEL手册Q这里只能认为ADD 寄存?WORD的长度是3个字节。我用VC试验了一下,的确是如此,我也试了ADD 寄存?DWORDQ长度变Z5个字节?br>

Meiosis 2011-01-06 12:48 发表评论
]]>
պþ| þӰӹ| þþһƷ99þþƷ88| þþþ޾Ʒ| www.þ99| һһþaþþƷۺ鶹| Ʒ˾þþ| þҹӰ| 뾫ƷþɪӰ | ޼VëƬþþƷ| þۺϸϾþúݺݺ97ɫ69| ŷƷһƷþ| þƵ| 㽶þһ޶ӰԺ | ɫۺϾþۺۿ| þ99Ʒ鶹լլ| Ʒvaþþþþþ| ۺɫ77777þ| Ʒþۺ123 | þҹҹݺ2022| ŮдþӰԺ| þþƷרѶ | ƷþþþþĻ| Ʒþþþþþ| þþ뾫ƷպĦ| ٸۺϾþĻ| ޹Ʒþþž| þùӰԺ| ҹҹþݺ| ձѾþþþþþվ| þþƷ޾Ʒɫ| þþþþùƷ| ŷ޹Ʒþø| þþþ޹| þþþþþƷο| ۺϾþþƷɫ| ۺҹҹþ| ˼˼þþƷ| ˾þۺ| þ˽˹Ʒ| 7777þĻ|