﻿<?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++博客-hdqqq</title><link>http://www.cppblog.com/hdqqq/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 03 Apr 2026 21:04:52 GMT</lastBuildDate><pubDate>Fri, 03 Apr 2026 21:04:52 GMT</pubDate><ttl>60</ttl><item><title>自己组装路由器</title><link>http://www.cppblog.com/hdqqq/archive/2014/09/02/208208.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Tue, 02 Sep 2014 12:37:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2014/09/02/208208.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/208208.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2014/09/02/208208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/208208.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/208208.html</trackback:ping><description><![CDATA[<div><div>自己组装路由器</div></div><div></div><div>&nbsp; &nbsp; 很长时间没有更新博客了。这段时间，很多智能化的新产品层出不穷，穿戴设</div><div>备，智能路由器啥的，可以说，移动互联的时代正在到来。所以，本着人生苦短，</div><div>及时折腾的原则，投身其中，也买了几块板子开始折腾。</div><div></div><div>先上张图：</div><div><img src="http://www.cppblog.com/images/cppblog_com/hdqqq/53ba8965jw1e4oaukc6z4j218g0xcwka.jpg" width="1024" height="768" alt="" /></div><div>个人mini服务器。</div><div></div><div>&nbsp; &nbsp; 目前，我们的长城越来越强大，google可以算是歇菜了，现在查资料，基本上</div><div>靠运气。写个博客、围脖啥的，稍微一不小心，就碰到敏感词，都没啥积极性了，</div><div>去年，弄了块pcduino的开发板，征用了儿子几块乐高积木，自己组了个服务器，</div><div>上面博客、文件共享、代码管理能带的都带上。空闲的时候，记记日记，贴贴照片，</div><div>，顺带文件备份啥的，自娱自乐。当然，光靠开发板自带的存储空间是不够的，需</div><div>要附加存储。考虑电源的功率问题和静音要求，弄了个ssd加移动硬盘盒。现在跑</div><div>得不错，已经运行了79天。板子买的较早，加上ssd的成本，在800 RMB 左右。</div><div></div><div>第二张图：</div><div><img src="http://www.cppblog.com/images/cppblog_com/hdqqq/mmexport1409629305441.jpg" width="854" height="640" alt="" /></div><div>&nbsp; &nbsp; 去年开始，新的，基于ARM芯片可以玩的板子越来越多了。树莓就不说了，</div><div>cubieboard、swift board、beaglebone等，性能、接口等都比以前好。所以，又</div><div>入手了一块。 banana pi，1G内存，关键是带一个千兆网口，可以配合使用的系统</div><div>也多。继续折腾。再配块便宜点的64G ssd，总价格在500 RMB 左右。</div><div></div><div>&nbsp; &nbsp; 相对来说，用这个开发板组个无线路由器还是很简单的。找个支持的无线网卡，</div><div>NAT，配上相关的软件，很容易实现，网上也有教程。</div><div></div><div>&nbsp; &nbsp; 但是路由器，如果仅仅实现NAT转发上网，qos等功能，其实还算是很简单的。</div><div>相比软路由，上网行为管理，应用层协议分析，协议过滤等功能，还是缺很多的。</div><div></div><div>&nbsp; &nbsp; 我想要的功能，就是记录每个人上网，什么时候，都上了些什么网，做分析和</div><div>统计。这个功能，在目前市面上100多的路由器中，因为硬件成本的关系，基本上</div><div>都是没有的。尽管刷openwrt系统的路由，如果配上外接存储，能把日志存下来，</div><div>但因为内存有限，效果不好。</div><div></div><div>&nbsp; &nbsp; 但是，如果用linux做软路由，内存足够的情况下，可以通过iptable+squid的</div><div>方式实现。现在的开发板，内存可以到1G，芯片都是双核1.6G，性能已经足够强大。</div><div>所以，本次折腾的目标就是用开发板，实现透明代理，用以记录所有人员的上网日</div><div>志。</div><div></div><div>一个网口，配合LINUX虚拟网卡，也可以实现路由功能。</div><div></div><div>操作系统：</div><div></div><div>Lubuntu for arm，写到SD卡上启动。</div><div></div><div>接下来介绍步骤：</div><div></div><div>1、LINUX启动数据包转发。</div><div>2、设置网卡eth0的ip地址，网关等。</div><div>3、设置虚拟网卡，作为内网网段。</div><div>&nbsp; &nbsp;ifconfig eh0:0 192.168.0.1 netmask 255.255.255.0</div><div>&nbsp; &nbsp;虚拟网卡不用设网关。</div><div>4、安装和设置dnsmasq，启动dns cache和dhcp服务</div><div>5、安装squid3，设置访问规则和其他参数，作为透明代理使用</div><div>&nbsp; &nbsp;http_port 192.168.0.1:3128 transparent</div><div>&nbsp; &nbsp;考虑日志存在SD卡上较慢，可以把日志存在内存中。</div><div>6、设置iptabes，启动NAT和端口转发</div><div>&nbsp; &nbsp;iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</div><div>&nbsp; &nbsp;iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j</div><div>REDIRECT --to-ports 3128</div><div></div><div>其他说明：</div><div>&nbsp; &nbsp; 因为是一个网口做路由，所以需要一个HUB或交换机，连接上行网络和内网。</div><div></div><div>吞吐量测试：</div><div></div><div>使用一台NAS模拟外网机器，计算机模拟内网，都接千兆交换机。拷贝文件测试。</div><div>4G数据文件，路由工作在千兆双工模式</div><div></div><div>下行：</div><div>20MB/s 左右，系统负载峰值0.09左右</div><div></div><div>上行：</div><div>16.5MB/s 左右，系统负载峰值0.26左右。</div><div></div><div></div><div>日志分析：</div><div>&nbsp; &nbsp; squid的日志，有现成工具进行分析。sarg，安装后，指定日志文件和输出路</div><div>径就可以了。</div><div></div><div>后记：</div><div>&nbsp; &nbsp; 因为功率和静音的需要，硬盘选了低端的64G SSD，190左右。对比前段时间比</div><div>较火的小米路由，缺双频的无线WIFI。但内存相对来说高一点，加上软件丰富，可</div><div>玩性更高一些。</div><div></div><div></div><img src ="http://www.cppblog.com/hdqqq/aggbug/208208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2014-09-02 20:37 <a href="http://www.cppblog.com/hdqqq/archive/2014/09/02/208208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UBUNTU DNS查询慢的问题</title><link>http://www.cppblog.com/hdqqq/archive/2012/04/07/170330.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Sat, 07 Apr 2012 01:52:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2012/04/07/170330.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/170330.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2012/04/07/170330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/170330.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/170330.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; UBUNTU系统缺省安装后，DNS查询很慢，网上大多数的解决办法是改DNS服务器和自己安装dns服务，像dnsmaq和bind服务。用fedora就没有这个问题。实际的解决办法是，修改 /etc/nsswitch.conf文件，把其中的 hosts:&nbsp;<span style="font-size: 12px;">files mdns4_minimal [NOTFOUND=return] dns mdns4 &nbsp;修改为 hosts： files dns<br /><br /></span><img src ="http://www.cppblog.com/hdqqq/aggbug/170330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2012-04-07 09:52 <a href="http://www.cppblog.com/hdqqq/archive/2012/04/07/170330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在cygwin下使用vim</title><link>http://www.cppblog.com/hdqqq/archive/2011/03/21/140174.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Mon, 21 Mar 2011 09:17:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2011/03/21/140174.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/140174.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2011/03/21/140174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/140174.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/140174.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: cygwin putty vim 编辑器&nbsp;&nbsp;<a href='http://www.cppblog.com/hdqqq/archive/2011/03/21/140174.html'>阅读全文</a><img src ="http://www.cppblog.com/hdqqq/aggbug/140174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2011-03-21 17:17 <a href="http://www.cppblog.com/hdqqq/archive/2011/03/21/140174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VIM实现自动添加新行</title><link>http://www.cppblog.com/hdqqq/archive/2010/12/07/135719.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Tue, 07 Dec 2010 09:59:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2010/12/07/135719.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/135719.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2010/12/07/135719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/135719.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/135719.html</trackback:ping><description><![CDATA[<div style="text-align: center;">VIM实现自动添加新行<br></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emacs在编辑代码时，有个功能，在输入｛｝；时可以自动追加新的一行。减少敲回车的次数。将下面的代码加入VIM的配置文件后，可以在编辑c,cpp,h后缀的文件时，也同样有这个功能。<br><br><br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">function&nbsp;Find_for()<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;search(</span><span style="color: #000000;">'</span><span style="color: #000000;">^\s*[f]or</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;line(</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;endif<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;search(</span><span style="color: #000000;">'</span><span style="color: #000000;">\"</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;line(</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;searchpair(</span><span style="color: #000000;">'</span><span style="color: #000000;">\"</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">''</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">\"</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">''</span><span style="color: #000000;">,&nbsp;line(</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\r</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>&nbsp;&nbsp;&nbsp;&nbsp;endif<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;search(</span><span style="color: #000000;">'</span><span style="color: #000000;">\</span><span style="color: #000000;">'''</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;line(</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;searchpair(</span><span style="color: #000000;">'</span><span style="color: #000000;">\</span><span style="color: #000000;">'''</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">;</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">\</span><span style="color: #000000;">'''</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">''</span><span style="color: #000000;">,&nbsp;&nbsp;line(</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\r</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>&nbsp;&nbsp;&nbsp;&nbsp;endif<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\r</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>endfunction<br>&nbsp;<br>autocmd&nbsp;BufReadPost&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">.{c,cpp,h}&nbsp;inoremap&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">expr</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">buffer</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">{</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">\r</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>autocmd&nbsp;BufReadPost&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">.{c,cpp,h}&nbsp;inoremap&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">expr</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">buffer</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">}</span><span style="color: #000000;">'</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">\r</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>autocmd&nbsp;BufReadPost&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">.{c,cpp,h}&nbsp;inoremap&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">expr</span><span style="color: #000000;">&gt;&lt;</span><span style="color: #000000;">buffer</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;;&nbsp;&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">;</span><span style="color: #000000;">'</span><span style="color: #000000;">.Find_for()</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp; 缺点，对于&#8220;和&#8216;的匹配没有重复，嵌套检测的功能。在某些情况下，会导致自动回车。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "hello world" &lt;&lt; "second ;<br>&nbsp;&nbsp;&nbsp;&nbsp; 有兴趣的话，可以再改进一下。<br><br> <img src ="http://www.cppblog.com/hdqqq/aggbug/135719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2010-12-07 17:59 <a href="http://www.cppblog.com/hdqqq/archive/2010/12/07/135719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个NERD_tree的改进</title><link>http://www.cppblog.com/hdqqq/archive/2010/09/25/127587.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Sat, 25 Sep 2010 02:49:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2010/09/25/127587.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/127587.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2010/09/25/127587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/127587.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/127587.html</trackback:ping><description><![CDATA[NERD_tree是vim的一个插件，支持树形显示目录和文件，此插件支持文件和隐藏文件过滤，可以设置一个文件过滤的表达式列表,来阻止NERD_tree显示这些文件。<br><br>但是在有些情况下，想要显示某些特定后缀的文件，如一个h头文件和cpp代码文件混合的目录，想只显示cpp文件，NERD_tree的过滤就显得有些不方便，因为原来实现的是排除过滤。<br><br>因此，对NERD_tree做了些改进，可以过滤显示某种类型的文件。<br><br>使用方法：<br><br>将光标移动到某个文件：<br><br>l&nbsp;&nbsp; 只显示此类后缀的文件<br>L&nbsp;&nbsp; 恢复显示所有文件<br><br>安装方法：<br><br>filter.vim&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制到vim插件目录的nerdtree_plugin 目录下<br>NERD_tree.vim&nbsp;&nbsp; 替换原来的plugin目录下的文件<br><br>下载地址：<br><br>http://www.cppblog.com/Files/hdqqq/nerd_tree_improve.zip<br><br><br> <img src ="http://www.cppblog.com/hdqqq/aggbug/127587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2010-09-25 10:49 <a href="http://www.cppblog.com/hdqqq/archive/2010/09/25/127587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模板实现的红黑树</title><link>http://www.cppblog.com/hdqqq/archive/2009/11/20/101450.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Fri, 20 Nov 2009 01:53:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2009/11/20/101450.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/101450.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2009/11/20/101450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/101450.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/101450.html</trackback:ping><description><![CDATA[&nbsp; 自己用模板实现的红黑树,算是对红黑树有了一个深入的了解.<br>&nbsp; 测试代码如下:<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">rb_tree.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;test()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;rb_tree</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;ltree;<br>&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">the&nbsp;tree&nbsp;is&nbsp;empty:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;(ltree.empty()&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">false</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;std::endl;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">15</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ltree.insert(i,&nbsp;i);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;ltree.show_tree();<br>}<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;test();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
&nbsp; 红黑树的代码位置:<br>&nbsp; http://www.cppblog.com/Files/hdqqq/rb_tree.zip<br><img src ="http://www.cppblog.com/hdqqq/aggbug/101450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2009-11-20 09:53 <a href="http://www.cppblog.com/hdqqq/archive/2009/11/20/101450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个自画的list control</title><link>http://www.cppblog.com/hdqqq/archive/2008/07/14/56084.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Mon, 14 Jul 2008 04:05:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2008/07/14/56084.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/56084.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2008/07/14/56084.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/56084.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/56084.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 界面开发 自定义 list control&nbsp;&nbsp;<a href='http://www.cppblog.com/hdqqq/archive/2008/07/14/56084.html'>阅读全文</a><img src ="http://www.cppblog.com/hdqqq/aggbug/56084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2008-07-14 12:05 <a href="http://www.cppblog.com/hdqqq/archive/2008/07/14/56084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysqldump 导出数据</title><link>http://www.cppblog.com/hdqqq/archive/2008/06/28/54858.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Fri, 27 Jun 2008 22:10:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2008/06/28/54858.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/54858.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2008/06/28/54858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/54858.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/54858.html</trackback:ping><description><![CDATA[mysqldump 是mysql 用户导出数据的工具,可以把mysql的数据库导出成sql文件.也可以通过管道直接把数据重定向到mysql.<br><br>如在两台机器间导数据可以<br><br>mysqldump -h host1 --databases db | mysql -h host2<br><br>如果导出的数据库很大,就需要在mysqldump 上加 --quick 参数.因为mysqldump缺省的操作是先导出所有数据,然后写入管道,如果数据库很大的话,会因为内存不足,出错.<br><br>mysqldump还有其它参数,如果是在数据库之间追加数据, 则需要加 --skip-opt, --no-create-info 等参数,其中和--skip-opt和--quick同时使用,一定要把 --quick 放在 --skip-opt参数后面,否则,会被覆盖.<br><br><img src ="http://www.cppblog.com/hdqqq/aggbug/54858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2008-06-28 06:10 <a href="http://www.cppblog.com/hdqqq/archive/2008/06/28/54858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个轻量级家用爬虫</title><link>http://www.cppblog.com/hdqqq/archive/2008/05/09/49300.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Fri, 09 May 2008 06:09:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2008/05/09/49300.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/49300.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2008/05/09/49300.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/49300.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/49300.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个简单的网络爬虫&nbsp;&nbsp;<a href='http://www.cppblog.com/hdqqq/archive/2008/05/09/49300.html'>阅读全文</a><img src ="http://www.cppblog.com/hdqqq/aggbug/49300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2008-05-09 14:09 <a href="http://www.cppblog.com/hdqqq/archive/2008/05/09/49300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML 转 text 工具</title><link>http://www.cppblog.com/hdqqq/archive/2008/04/03/46158.html</link><dc:creator>hdqqq</dc:creator><author>hdqqq</author><pubDate>Thu, 03 Apr 2008 03:24:00 GMT</pubDate><guid>http://www.cppblog.com/hdqqq/archive/2008/04/03/46158.html</guid><wfw:comment>http://www.cppblog.com/hdqqq/comments/46158.html</wfw:comment><comments>http://www.cppblog.com/hdqqq/archive/2008/04/03/46158.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/hdqqq/comments/commentRss/46158.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hdqqq/services/trackbacks/46158.html</trackback:ping><description><![CDATA[最近在网上爬东西，很多网页需要处理，自己写了个html 到 text 转换的小工具。<br><br>dos 命令行下运行，可同时处理多个<br><br>html2txt.exe&nbsp; *.html<br><br><br><br>下载地址<br><br>http://www.cppblog.com/Files/hdqqq/html2txt.rar<br><br><br><img src ="http://www.cppblog.com/hdqqq/aggbug/46158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hdqqq/" target="_blank">hdqqq</a> 2008-04-03 11:24 <a href="http://www.cppblog.com/hdqqq/archive/2008/04/03/46158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>