﻿<?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++博客-</title><link>http://www.cppblog.com/keycw88/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:39:29 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:39:29 GMT</pubDate><ttl>60</ttl><item><title>记录些linux下碰到的问题和解决方案，资料等</title><link>http://www.cppblog.com/keycw88/archive/2011/11/02/159488.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Wed, 02 Nov 2011 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/11/02/159488.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/159488.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/11/02/159488.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/159488.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/159488.html</trackback:ping><description><![CDATA[apue.h的编译设置:http://www.cnblogs.com/moiyer/archive/2009/11/19/1952702.html         http://topic.csdn.net/u/20070423/11/1a20307c-4f46-4911-8122-0576698082f8.html  
不错的截图工具 http://forum.ubuntu.org.cn/viewtopic.php?t=91685 
apue note:http://blog.csdn.net/intrepyd/article/details/4508770#comments<img src ="http://www.cppblog.com/keycw88/aggbug/159488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-11-02 09:31 <a href="http://www.cppblog.com/keycw88/archive/2011/11/02/159488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>placement new, operator new and new operator[ZZ]</title><link>http://www.cppblog.com/keycw88/archive/2011/09/20/156301.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Tue, 20 Sep 2011 05:12:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/09/20/156301.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/156301.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/09/20/156301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/156301.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/156301.html</trackback:ping><description><![CDATA[<div><div>转自：http://www.cnblogs.com/swpattern/archive/2010/05/11/1732352.html<br />   <div><div id="cnblogs_post_body"><p>笔者觉得这3个new有点意思，有时候我也被搞懵了，这些创造者难不成觉得C++过于简单，所以搞一点含糊的术语出来。这次总结一下，以便再懵的时候有个参考。有错的地方请不吝赐教，多谢先！</p> <p>简单点吧:</p> <p>1. new operator，即熟悉的new操作符，用它从堆中分配一个对象，并且初始化。CHeapObject* p=new CHeapObject(name);</p> <p>既然是操作符，那么它的行为就和其他+-*/操作符一样，是由C++语言定义的，不能改变，即使通过重载的方式也不能改变。C++规定了new操作符的行为：分配一个合适的空间容纳CHeapObject对象，然后调用其构造函数初始化对象。</p> <p>2. operator new，就是new操作，1种说的&#8220;<em><span style="color: #ff0000;">分配一个合适的空间容纳CHeapObject对象</span></em>&#8221;就是通过new操作完成的。全局的new操作是如下声明的：</p> <p>void * operator new(size_t size);</p> <p>这是一个函数声明，在Ｃ＋＋里我们可以通过重载该函数改变这个函数的行为，即分配空间的方式，相信大家都干过这事。</p> <p>补充一下，虽然operator new是给new operator调用的，但是也可以被你调用，如：</p> <p>void* p=operator new(sizeof(CHeapObject));</p> <p>它只分配空间，等同于C里的malloc()。</p> <p>虽然我们重载了operator new，但是我们没有改变1中new operator的行为。</p> <p>3. placement new</p> <p>唉，我又懵了:-)</p> <p>这是在已经分配好的空间上(比如malloc, operatornew,返回的void*，没有对象信息)，调用CHeapObject的对象构造函数，这也是一个特殊的new操作。上例子吧：</p> <p>void* buffer=operator new(100*sizeof(CHeapObject));///分配100个对象的空间</p> <p>CHeapObject* construct(void* buf, string objname)</p> <p>{</p> <p>&nbsp; return new(buf) CHeapObject(objname);</p> <p>}</p> <p>这个函数返回对象指针，对象是在传递进来的buffer上分配。这个new的用法是new操作符的另一个用法，需要一个额外的变量buf，new操作的隐含调用operator new的时候会把buf传递给它，这是operator new的定义如下：</p> <p>void * operator new(size_t, void *buffer)</p> <p>{</p> <p>&nbsp; return buffer;</p> <p>}</p> <p>这就是placement new。</p> <p>最后来个总结吧：</p> <p>如果想在堆上创建一个对象，应该用new操作符，它分配内存，同时又为对象调用构造函数。</p> <p>如果仅仅想分配内存，就用operator new函数，它不会调用构造函数。</p> <p>如果你想定制自己的在堆对象被建立时的内存分配过程，应该重载写你自己的operator new函数，new操作符会调用你定制的operator new。</p> <p>如果想在一块已经分配好的内存里建立一个对象，使用placement new。</p></div></div>   <br /> </div> </div><img src ="http://www.cppblog.com/keycw88/aggbug/156301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-09-20 13:12 <a href="http://www.cppblog.com/keycw88/archive/2011/09/20/156301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wget 需要验证登录[ZZ]</title><link>http://www.cppblog.com/keycw88/archive/2011/08/08/152819.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Mon, 08 Aug 2011 14:31:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/08/08/152819.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/152819.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/08/08/152819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/152819.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/152819.html</trackback:ping><description><![CDATA[<div>来自：http://www.blogjava.net/zhyiwww/archive/2009/10/27/299957.html</div><div>在用wget抓取数据的时候，有的时候需要用户登录才能进行。这种情况下就需要时用cookie.<br /> 先看下面的代码：<br /> &nbsp;<br /> wget --load-cookies cookies.txt --save-cookies cookies.txt  --keep-session-cookies -O output/login.html --post-data  "username=NNNNNNNNNNN&amp;password=MMMMMMMMMMM"  http://www.xxxxxxxxxxxxxx.org/login<br /> &nbsp; <br /> &nbsp; wget --load-cookies cookies.txt --save-cookies cookies.txt  --keep-session-cookies -O output/directory-list.html  "http://www.xxxxxxxxxxxxxxx.org/list?category=resturants&amp;page=1"<br /> &nbsp; <br /> 第一个操作，就是先获得一个cookie,用来登陆并保存此session,然后在后面的抓数据的过程中使用此session和cookie.<br /> 注意：<br /> http://www.xxxxxxxxxxxxxx.org/login要换成对应的登陆页面的url<br /> --post-data "username=NNNNNNNNNNN&amp;password=MMMMMMMMMMM"&nbsp; post数据里面的参数要根据登陆页面里面对应的参数设定。<br /> <br /> 第二个操作，就是用上面的cookie去验证用户，并取得一个有效的连接，进而去取得数据。<br /> --load-cookies 就是载入你上一个操作所取得的cookie.<br /> <br /> 在抓取数据的时候，我自己用了一个脚本，如下，以供参考：<br /> <br /> get --load-cookies cookies.txt --save-cookies cookies.txt  --keep-session-cookies -O login.html --post-data  "username=xxxxxxxxxx&amp;password=11111111111111111"  http://www.mmmmmmmmmmmmmmmmmm.mmmmmmmmm/login<br /> &nbsp; <br /> &nbsp; <br /> &nbsp; <br /> &nbsp; for i in {1..89}<br /> &nbsp; do<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j in {1..20}<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo i=$i -- j=$j<br /> &nbsp; <br /> &nbsp; echo "wget --load-cookies cookies.txt --save-cookies cookies.txt  --keep-session-cookies&nbsp; -O $i-$j.html  'http://www.ccccccccccccccc.ccccccccccc/directory/resturant/list?keyword=&amp;class=$i&amp;page=$j'"<br /> &nbsp; <br /> &nbsp; wget --no-dns-cache --no-cache --load-cookies cookies.txt  --save-cookies cookies.txt --keep-session-cookies&nbsp; -O $i-$j.html  "http://www.qqqqqqqqq.xxxxxxxxx/directory/bar/list?keyword=&amp;class=$i&amp;page=$j"<br /> &nbsp; <br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; done</div><img src ="http://www.cppblog.com/keycw88/aggbug/152819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-08-08 22:31 <a href="http://www.cppblog.com/keycw88/archive/2011/08/08/152819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux修改环境变量[ZZ]</title><link>http://www.cppblog.com/keycw88/archive/2011/07/22/151641.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Fri, 22 Jul 2011 07:44:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/07/22/151641.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/151641.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/07/22/151641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/151641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/151641.html</trackback:ping><description><![CDATA[之前装Ubuntu时，可以直接用shutdown，init 0等命令。<br />这次用虚拟机装centos,发现一些命令用不了，上网搜了下，原来是环境变量没有设置好。<br />查阅了些资料，大概了解了如何设置环境变量。<br /><br /><div><p>一、Linux的变量种类<br /> <br /> 按变量的生存周期来划分，Linux变量可分为两类：<br /> <br /> 1. 永久的：需要修改配置文件，变量永久生效。<br /> <br /> 2. 临时的：使用export命令行声明即可，变量在关闭shell时失效。<br /> <br /> 二、设置变量的三种方法<br /> <br /> <span style="font-weight: bold;">1. 在/etc/profile文件中添加变量【对所有用户生效（永久的）】</span><br /> <br /> 用VI在文件/etc/profile文件中增加变量，该变量将会对Linux下所有用户有效，并且是&#8220;永久的&#8221;。<br /> <br /> 例如：编辑/etc/profile文件，添加CLASSPATH变量<br /> <br /> # vi /etc/profile<br /> <br /> export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib<br /> <br /> 注：修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。<br /> <br /> <span style="font-weight: bold;">2. 在用户目录下的.bash_profile文件中增加变量【对单一用户生效（永久的）】</span><br /> <br /> 用VI在用户目录下的.bash_profile文件中增加变量，改变量仅会对当前用户有效，并且是&#8220;永久的&#8221;。<br /> <br /> 例如：编辑guok用户目录（/home/guok）下的.bash_profile<br /> <br /> $ vi /home/guok/.bash.profile<br /> <br /> 添加如下内容：<br /> <br /> export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib<br /> <br /> 注：修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。<br /> <br /> <span style="font-weight: bold;">3. 直接运行export命令定义变量【只对当前shell（BASH）有效（临时的）】</span><br /> <br /> 在shell的命令行下直接使用[export变量名=变量值]定义变量，该变量只在当前的shell（BASH）或其子shell（BASH）下是有效的，shell关闭了，变量也就失效了，再打开新shell时就没有这个变量，需要使用的话还需要重新定义。<br /> 三、另外</p> <p>1.使用readonly命令设置只读变量，如果使用了readonly命令的话，变量就不可以被修改或清除了。</p> <p>2.使用unset命令来清除环境变量  $ unset TEMP_KEVIN #删除环境变量TEMP_KEVIN</p></div><br /><br /><img src ="http://www.cppblog.com/keycw88/aggbug/151641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-07-22 15:44 <a href="http://www.cppblog.com/keycw88/archive/2011/07/22/151641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vim命令，不断更新</title><link>http://www.cppblog.com/keycw88/archive/2011/07/22/151607.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Fri, 22 Jul 2011 02:19:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/07/22/151607.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/151607.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/07/22/151607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/151607.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/151607.html</trackback:ping><description><![CDATA[<div>普通模式:<br />左下右上:hjkl<br />w前进一个单字<br />b后退一个单字<br />ctrl+u向上翻半页<br />ctrl+d向下翻半页<br /><div>ctrl+f向上翻一页</div><div>ctrl+b向下翻一页<br />H文本第一行<br />M文本中间行<br />L文本最后行<br /><div>^光标移动到当前行第一个字符(非空白字符)</div>$光标移动到当前行最后一个字符<br /><div>0光标移动到当前行第一个字符(包括所有字符)<br />G光标移动到最后一行<br />nG光标移动到第n行<br />n+Enter向下移动n行<br />~改变光标处字符大小写<br />guu整行字符变小写<br />gUU整行字符变大写<br />guw,gUw,gub,gUb<br />ddp 交换上下行</div></div><br />gg=G 格式化所有代码<br />gg到行首<br />==格式化当前行<br /><br />/word向下查找word<br />?word向上查找word<br />n下一个<br />N上一个<br /><br />x为删除当前字符<br />nx删除连续向后n个字符<br />dd删除当前行内容<br />dG删除光标到最后一行<br />d0删除光标到行首内容<br />d$删除光标到行末内容<br />ndd删除光标向下n行内容<br />dnG删除光标到第n行内容<br /><br />y复制(yank)<br />yy复制当前行内容<br /><div></div><div>yG复制当前行到最后一行内容<br />y0复制光标到行首内容<br />y$复制光标到行末内容<br /><div>nyy复制光标向下n行内容</div>ynG复制光标到第n行数据</div><br />p粘贴到下一行<br />P粘贴到上一行<br />c修改(change)<br />&gt;缩进<br />&lt;反缩进<br /><br />.重复上一次操作<br />u undo<br />ctrl+r&nbsp; redo<br /><br />末行模式:<br />set cindent shiftwidth=4设定普通模式下&gt;》移动为8个字符<br /><div>n1,n2s/word1/word2/g 在n1到n2行查找word1,并替换成word2<br /> n2改为$就是最后一行<br /> g改为gc则需要用户确认<br /><div>忽略大小写</div><div>set ingorecase &nbsp; or &nbsp;/searchword\c</div><div>查找统计个数</div><div>:%s/searchword//gn</div></div><br />全选:<br />gg行首，v转为可视模式(visual mode)<br />G最后一行前一个光标，然后要$选中剩余的行<br /><br />普通模式-&gt;插入模式<br />a光标前，A行首<br />i光标后，I行末<br />o下一行，O上一行</div><img src ="http://www.cppblog.com/keycw88/aggbug/151607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-07-22 10:19 <a href="http://www.cppblog.com/keycw88/archive/2011/07/22/151607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux命令，不断更新</title><link>http://www.cppblog.com/keycw88/archive/2011/07/22/151606.html</link><dc:creator>chuwei</dc:creator><author>chuwei</author><pubDate>Fri, 22 Jul 2011 02:15:00 GMT</pubDate><guid>http://www.cppblog.com/keycw88/archive/2011/07/22/151606.html</guid><wfw:comment>http://www.cppblog.com/keycw88/comments/151606.html</wfw:comment><comments>http://www.cppblog.com/keycw88/archive/2011/07/22/151606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/keycw88/comments/commentRss/151606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/keycw88/services/trackbacks/151606.html</trackback:ping><description><![CDATA[<div>1.uname<br />
显示系统信息<br />
option:<br />
-a 所有信息<br />
-s 系统名<br />
-n 网络节点名称<br />
-r 内核发行版本<br />
-v 操作系统版本<br />
-p 系统处理器的体系结构<br />
缺省为-s<br />
<br />
2.cd<br />
更改工作目录<br />
cd -返回上一次的工作目录<br />
cd .当前目录<br />
cd ..父目录<br />
<br />
3.pwd<br />
打印当前工作目录<br />
<br />
4.history<br />
查看当前用户命令历史<br />
后可加| head -n&nbsp; tail -n more等命令<br />
<br />
5.ls<br />
列出目录下的文件<br />
-a 所有文件<br />
-l 长格式显示<br />
-t 按时间排序<br />
-r 反序<br />-d 目录文件<br />
<br />
6.mkdir<br />
创建目录<br />-p为多级目录<br />
<br />7.du<br />统计目录和文件占用内存的情况<br />-a 全部文件,包括隐参文件<br />-h 以K M单位显示信息,默认是以块(block)为单位<br />-s 统计所有文件总和<br /><br />8.rmdir<br />删除空目录<br /><br />9.rm<br />删除文件<br />-r 递归删除<br />-f 强制删除<br />-i 需要用户确认,为缺省参数<br />\加在命令前,可去掉缺省参数,如\rm, -i参数就会去掉<br /><br />10.cp [option] src des<br /><div>-r 递归持续复制，用于目录的复制行为；</div><div>-f 强制复制,若有重复或其它疑问时,不会询问使用者,而强制复制<br /><div>-p 保留原来的权限属性</div></div>13.mv src des<br />移动文件,可用来更改文件名(在同一目录下)<br /><br />10.cat<br />查看文件内容<br /><br />11.touch<br />新建文件,也可以更改文件创建时间<br /><br />12.file<br />查看文件类型<br /><br />13.which<br />查找命令文件位置,是通过$PATH的值寻找。<br />-a 列出所有结果<br /><br />14.find<br />查找文件位置<br />find 查找目录路径 -name 文件名<br /><br />15.tar<br />解压,压缩<br />-c 创建打包文件<br />-x 解打包,解压缩<br /><div>-j 通过bzip2的支持进行压缩/解压缩</div><div>-z 通过gzip的支持进行压缩/解压缩</div>-f filename 要被处理的文件名,-f和filename必须连在一起<br />-v 显示正在处理的文件名<br />
</div><img src ="http://www.cppblog.com/keycw88/aggbug/151606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/keycw88/" target="_blank">chuwei</a> 2011-07-22 10:15 <a href="http://www.cppblog.com/keycw88/archive/2011/07/22/151606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>