﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-曲径通幽-随笔分类-Mac OS Generic</title><link>http://www.cppblog.com/chinloon/category/14091.html</link><description>programming_with_fun();</description><language>zh-cn</language><lastBuildDate>Wed, 13 Jun 2012 09:38:31 GMT</lastBuildDate><pubDate>Wed, 13 Jun 2012 09:38:31 GMT</pubDate><ttl>60</ttl><item><title>关于 SQLite 优化</title><link>http://www.cppblog.com/chinloon/archive/2012/01/19/164380.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Thu, 19 Jan 2012 09:58:00 GMT</pubDate><guid>http://www.cppblog.com/chinloon/archive/2012/01/19/164380.html</guid><wfw:comment>http://www.cppblog.com/chinloon/comments/164380.html</wfw:comment><comments>http://www.cppblog.com/chinloon/archive/2012/01/19/164380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chinloon/comments/commentRss/164380.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chinloon/services/trackbacks/164380.html</trackback:ping><description><![CDATA[项目里遇到一个问题，在我们程序客户端运行时，sqlite数据库会不断自动生成/删除 journal 文件，高峰时候会占用大量的IO，导致程序很慢。<br />由于客户端本身的数据完整性不重要，性能非常重要，所以想禁止这个文件的生成。<br />后来查了一下文档，并实践过后，发现网络上所有的关于关闭/打开某些宏来防止生成的方法都不管用。情急之下，只有改源码了。<br />改的地方是在main.c 的&nbsp;sqlite3BtreeFactory 里，直接加个宏就好了&nbsp;omitJournal<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 />--><span style="color: #008080; "><strong>&nbsp;</strong>1</span>&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">sqlite3BtreeFactory(</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">const</span>&nbsp;<span style="color: #000000; ">sqlite3&nbsp;*db,</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Main&nbsp;database&nbsp;when&nbsp;opening&nbsp;aux&nbsp;otherwise&nbsp;0&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">const</span>&nbsp;<span style="color: #0000ff; ">char</span>&nbsp;<span style="color: #000000; ">*zFilename</span>,&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Name&nbsp;of&nbsp;the&nbsp;file&nbsp;containing&nbsp;the&nbsp;BTree&nbsp;database&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">omitJournal</span><span style="color: #000000; ">,&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;if&nbsp;TRUE&nbsp;then&nbsp;do&nbsp;not&nbsp;journal&nbsp;this&nbsp;file&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">nCache,</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;How&nbsp;many&nbsp;pages&nbsp;in&nbsp;the&nbsp;page&nbsp;cache&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">vfsFlags,</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Flags&nbsp;passed&nbsp;through&nbsp;to&nbsp;vfsOpen&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;<span style="color: #000000; ">Btree&nbsp;**ppBtree&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;Pointer&nbsp;to&nbsp;new&nbsp;Btree&nbsp;object&nbsp;written&nbsp;here&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">){</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">btFlags&nbsp;=&nbsp;0;</span><br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">int</span>&nbsp;<span style="color: #000000; ">rc;</span><br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;<span style="color: #000000; ">assert(&nbsp;sqlite3_mutex_held(db-&gt;mutex)&nbsp;);</span><br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;<span style="color: #000000; ">assert(&nbsp;ppBtree&nbsp;!=&nbsp;0);</span><br /><span style="color: #008080; ">14</span>&nbsp;<br /><span style="color: #008080; ">15</span>&nbsp;<span style="color: #0000ff; ">#ifdef&nbsp;OMIT_JOURNAL</span><br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;<span style="color: #000000; ">omitJournal&nbsp;=&nbsp;1;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">!&lt;&nbsp;turn&nbsp;off&nbsp;journal&nbsp;file</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000ff; ">#endif</span></div><hr /><img src ="http://www.cppblog.com/chinloon/aggbug/164380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chinloon/" target="_blank">Meiosis</a> 2012-01-19 17:58 <a href="http://www.cppblog.com/chinloon/archive/2012/01/19/164380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>研究了一天ZeroMQ，有个严重的问题还没解决</title><link>http://www.cppblog.com/chinloon/archive/2011/06/14/148641.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Tue, 14 Jun 2011 08:59:00 GMT</pubDate><guid>http://www.cppblog.com/chinloon/archive/2011/06/14/148641.html</guid><wfw:comment>http://www.cppblog.com/chinloon/comments/148641.html</wfw:comment><comments>http://www.cppblog.com/chinloon/archive/2011/06/14/148641.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/chinloon/comments/commentRss/148641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chinloon/services/trackbacks/148641.html</trackback:ping><description><![CDATA[&nbsp; ZeroMQ是一个Message Queue的实现方案，支持超多种语言的Binding，今天研究了一下，起初对它的N:N模型很感兴趣，后来试用了其自带的 Load Balance特性，结果发现一个非常严重的问题，在Server Cluster中，如果有一台服务器在接收消息后Blocking，或者服务器崩溃了，没来得及send response，则客户端的请求一直就停留在这次send req上，永远无法检测出error，我查了关于timeout的文档，后来改用poll模型试了很久，还是没法解决。接下来可能要花时间仔细研读一下Guide了。<img src ="http://www.cppblog.com/chinloon/aggbug/148641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chinloon/" target="_blank">Meiosis</a> 2011-06-14 16:59 <a href="http://www.cppblog.com/chinloon/archive/2011/06/14/148641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>慎用文件 I/O 的 Flush系列函数</title><link>http://www.cppblog.com/chinloon/archive/2010/08/24/124571.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Tue, 24 Aug 2010 11:14:00 GMT</pubDate><guid>http://www.cppblog.com/chinloon/archive/2010/08/24/124571.html</guid><wfw:comment>http://www.cppblog.com/chinloon/comments/124571.html</wfw:comment><comments>http://www.cppblog.com/chinloon/archive/2010/08/24/124571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chinloon/comments/commentRss/124571.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chinloon/services/trackbacks/124571.html</trackback:ping><description><![CDATA[&nbsp; 由于自己是写Server端程序的。最近有个别客户反映在服务端负载量大的情况下，经常有客户端的TCP请求处理超时。看了log文件，发现是服务端接收请求之后，未能及时处理请求并回复客户端应答造成。<br>&nbsp; 仔细观察了请求的处理过程，唯一耗时的就是文件I/O的Flush操作，因为这个操作会强制要求OS提交IO请求，而不是用OS自带的IO缓冲。如果在IO处理非常频繁的情况下，的确会导致服务端I/O告急，磁盘压力过大，性能大幅下降，<br><br><img src ="http://www.cppblog.com/chinloon/aggbug/124571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chinloon/" target="_blank">Meiosis</a> 2010-08-24 19:14 <a href="http://www.cppblog.com/chinloon/archive/2010/08/24/124571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XCode Foundation 工程 添加引用依赖</title><link>http://www.cppblog.com/chinloon/archive/2010/06/20/118331.html</link><dc:creator>Meiosis</dc:creator><author>Meiosis</author><pubDate>Sun, 20 Jun 2010 15:42:00 GMT</pubDate><guid>http://www.cppblog.com/chinloon/archive/2010/06/20/118331.html</guid><wfw:comment>http://www.cppblog.com/chinloon/comments/118331.html</wfw:comment><comments>http://www.cppblog.com/chinloon/archive/2010/06/20/118331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chinloon/comments/commentRss/118331.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chinloon/services/trackbacks/118331.html</trackback:ping><description><![CDATA[&nbsp; 今天在学 《Learning Cocoa With Objective-C》其中有个AddressBook的例子，会发生编译错误。原来是少了引用的依赖。<br>&nbsp; 添加方法是：Project - Add to project， 寻找\System\Library\Framework\AddressBook.framework中找到依赖的项即可。<br><br><img src ="http://www.cppblog.com/chinloon/aggbug/118331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chinloon/" target="_blank">Meiosis</a> 2010-06-20 23:42 <a href="http://www.cppblog.com/chinloon/archive/2010/06/20/118331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>