﻿<?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++博客-chaogu ---大写的人！</title><link>http://www.cppblog.com/chaogu/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 11 Apr 2026 14:43:16 GMT</lastBuildDate><pubDate>Sat, 11 Apr 2026 14:43:16 GMT</pubDate><ttl>60</ttl><item><title>发个招聘信息</title><link>http://www.cppblog.com/chaogu/archive/2012/02/06/165047.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Mon, 06 Feb 2012 11:03:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2012/02/06/165047.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/165047.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2012/02/06/165047.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/165047.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/165047.html</trackback:ping><description><![CDATA[<div><div>&nbsp;小弟许久未上，上来发个招聘信息，如果有兴趣可以邮件份简历给我&nbsp;chaogu.c@qq.com，如果没有兴趣直接忽视。<br />工作地：深圳（富士康隔壁的一家超级大型的IT公司，由于有要求，不能发公司名称，不过深圳的同城应该能猜到，私聊能提供公司名称）<br />部门：流程与IT管理部（大部分做内部IT系统）下的IT平台部下的SOA服务部<br />技术要求：Java、数据库、Web开发等相关的，.Net的也可以，需求工程师等也要，主要做系统架构等，先发简历，再私聊亦可<br />硬性指标：本科5年以上（含）工作经验，硕士4年以上工作经验，英语4级以上，211重点大学，无中兴工作经历（这个太明显了，有竞争，所以不让招）<br />工资：好像保密，这个要看能力，大概年薪有个20W<br />如果身边有想跳槽的也可以帮忙转发一下<br />一年内有效～～～<br /><br />管理员看看要是不能发招聘信息不要删我号啊，把文章删掉就好了。</div></div><img src ="http://www.cppblog.com/chaogu/aggbug/165047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2012-02-06 19:03 <a href="http://www.cppblog.com/chaogu/archive/2012/02/06/165047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一二事</title><link>http://www.cppblog.com/chaogu/archive/2011/05/09/145991.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Sun, 08 May 2011 17:55:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2011/05/09/145991.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/145991.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2011/05/09/145991.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/145991.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/145991.html</trackback:ping><description><![CDATA[<span style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp; 大四之后我一直很烦，很多很让人提不起精神的事情要我去面对。最近一直想把这段经历写出来，算是发泄心中的郁结，也分享一下个人的经历，因为我觉得技术上我也没什么好跟人讨论的，反而我觉得有些经历可以拿出来分享一下。<br>&nbsp;&nbsp;&nbsp; 从去年（2010）的8月份我才开始准备考研，因为5月-7月期间一直在驾校练车，每天都很累，主要不是练车累而是学校的驾校烂，每天都一大堆人，一上午或一下午也就练个三四把，其余的时间都是在等，而且每天早出晚归，甚是摧残人，所以一直没有开始复习考研。不过驾校这么做也无可厚非，毕竟要赚钱，我们学生交得又少（可能有很大一部分还要孝敬学校）。然后在7月中的时候就把驾校考完了，然后回了趟家。其实我在（2010年）3月份之前（具体我也忘了）就决心考研的。一般人会这样认为，考研是为了逃避找工作的压力，其实不然，我觉得考研要经受的压力和折磨并不比找工作大，反而我觉得工作更好搞。我读研的原因估计与大多数人考研的原因又不一样，一部分人考研说不定还真是逃避工作，有一部分人是为了找更好的工作，有很少的一部分人是真的为了研究。我的原因是家里向我读，他们说反正家里又不需要你养，你能读就尽量读，也不是要你搞研究，拿个研究生的文凭，家里比较有面子。我就是为了我们的&#8220;面子&#8221;加入了考研大军。当然我也有自己想法---我觉得度研究生的时候能有更多的时间做自己想做的事情---可能包括一些研究吧。<br>&nbsp;&nbsp;&nbsp; 回家其实不是我想放自己大假，而是为了跟爷爷奶奶呆一下，毕竟他们老了。然后8月就赶回武汉来，开始了地狱般的考研复习。<br>&nbsp;&nbsp;&nbsp; 8月回到学校，据说武汉最热的那段日子在我来之前刚好过完，不过武汉还是很热。一回到学校我就跟我同学去文都上课。我是什么都没有准备，政治、英语、数学、计算机我一门也没有碰过，就连考什么，用什么教材、辅导书我都一无所知。然后就跑去了上辅导班。英语我是有一定把握的，我同学认为计算机辅导不辅导没多大区别，毕竟我们也一直接触着专业课，所以我就报了数学跟政治。<br>&nbsp;&nbsp;&nbsp; 老实说数学是我最怕的。我以前也算是个数学强人，虽然不是太强的那种，最差也是个中上的那种。上到大学以后我对数学那是深恶痛绝。大一上数学的时候每节课要不是在寝室睡觉就是在教室睡觉，作业也就应付了事，还好我跟老师的关系比较好，所以还得了蛮高分。但真的我就没学到任何东西。还有就是概率，我们就根本没这门课。蛋疼的数学啊&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;<br>&nbsp;&nbsp;&nbsp; 政治我还好，我发现上了大学之后虽然政治课我一节都没听，不过我发现我觉悟提升了不少，感谢党国啊。听了辅导班的课之后，也大概有个了解。<br>&nbsp;&nbsp;&nbsp; 英语---大学三年我就没怎么学过，不过每天接触着英语的专业书籍、论文、blog、论坛，我自认为我英语还是比较强悍的，但是考研的那套根本就不来你会的那套。英语还是强化不来的那种，所以我也只好硬着头皮上。<br>&nbsp;&nbsp;&nbsp; 专业课，蛋疼的专业课啊&#183;&#183;&#183;&#183;&#183;&#183;从0开始（考的那套跟我学的那套不是同一套<img border=0 src="http://www.cppblog.com/Emoticons/QQ/10.gif" width=20 height=20>）<br>&nbsp;&nbsp;&nbsp; 老实说考研的四门我都是从0开始，时间紧迫啊，每天打开书都是在自学，每一门都是自学----高强度的。<br><br>--------------------------------------------------------------<br>--------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp; 复习考研的那段时间是我最烦的一段时间，持续时间长，压力大。其实我不是那种考不上就会怎样的人，反而我老想着考不上我还有很多出路，就算这次考不上我还可以再考（考研大忌啊）。在这样一个复杂的心理情况下，到后面我都不怎么上自习了，每天睡到11点，刷牙洗脸吃饭上午直到2点，然后就开始考虑要不要去上自习，所以后面基本没什么效果。直到考研的那天数学我还没有全部学完。反正刚考完那几天是我最开心的时间，感觉心头悬着的那块重石终于落下来了。<br>&nbsp;&nbsp;&nbsp; 反正考研是一个很痛苦的过程，考研有风险，入行需谨慎。<br>&nbsp;&nbsp;&nbsp; 考完之后，过年，过年蛮开心的。也就是天天呆在家里，不出门，什么也不干，泡茶喝，收红包。<br><br>-------------------------------------------------------------<br>-------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp; 后来开学了，也就回到学校开始毕业设计，我们老师不知是不是变态，随便找了个题目就让我开始了。题目叫做《Sampling-base Contect-rich Motion Contorl》。<br>&nbsp;&nbsp;&nbsp;&nbsp;一边做一边等考研成绩出来，考完之后我也大概猜出我没什么希望，成绩如下<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;政治&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;74<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;英语&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;78<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;计算机&nbsp;&nbsp;&nbsp;&nbsp;94<br>好像比我预计的还好，反正没上（考华南理工），然后就一直在找调剂的学校，因为按我推算，我的肯定能上国家线，我还很积极地去找了调剂的学校。我还去考了下公务员--广东公务员--3月27号，我随便应付了一下（考了100+分，比较低，反正没戏），公务员要看命的，反正我觉得我不是那种命。考完之后，在家呆了几天，因为国家线也就那几天出来，我就等成绩出来，好像是29/30号的时候出来的，A区的没上，也就没戏了。我也就不想了。4月份回到学校的时候有个研究生告诉我B区的中国科技大学的软件工程可以去，我也就去报了一下，19号复试，反正复试很惨，十问九不知，一我没复习，二我太高估自己了。也就没上到。这期间我还找了下南昌大学的，托关系找了人，后来说不要我这么低分的。死心塌地去中科大面试，面试被刷。19号当天下午赶回武汉，20号面试华为。<br><br>-------------------------------------------------------------<br>-------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;这学期（2011年上半年）开学之后，我感觉研究生没戏，然后就一边等成绩一边找工作，投过无数简历，有几家找我笔试面试，有些我直接没去。第一家面试的是广州的一家，笔试感觉良好，当天晚上给我电话，第二天面试，也就跟BOSS谈，BOSS让我开价，我就给开了3500，他说可以。其实我觉得工资不是最重要的，对于一个应届毕业生来说，谈得很好，BOSS让我签，给我4000。当时研究生成绩还没下来，我不敢签，然后找了个借口，好歹推掉了。因为他公司招不够，我推荐了我们寝室的两个和一个隔壁班的去面试，我们寝室的两个签了，3500。<br>&nbsp;&nbsp;&nbsp; 然后在去中科大面试之前又面试了一家公司，笔试时神速做了两套试卷，我给开了4500，第二天面试，谈了一个小时，漫无目的地谈，后来说签，做3D，我拖到华为面试完才拒绝掉他---说起来还有点对不起那BOSS。<br>&nbsp;&nbsp;&nbsp;&nbsp;在中科大面试完，20号回来面试华为，华为真是整死人的，我9点到的，早饭就吃了一根玉米烤肠，很小一根，到2：30才吃的午饭。一面技术面，没问什么，写了个冒泡，问了我一个很简单的分布式应用的问题（其实我不太懂分布式问题太简单了），然后就说可以，5分钟搞定。二面群面，辩论，没什么好辩的，也就个游戏，表现不错，三面其实就不是面试，做个心理测试，到2点多才完，完了之后吃了顿KFC犒劳自己。第二天跟BOSS聊天，BOSS也没问什么，其他人进去都是15+分钟，不到8分钟我就出来了。然后就签了，6000-IT工程师，好像是网管，不清楚。据说今年华为招很多人，我不知道，反正也有点难进，我那组10人剩2个，我跟一个研究生。<br>&nbsp;&nbsp;&nbsp; 华为签了之后几天，去了工商银行的笔试，那人多得，笔试还比较简单，英语部分不够时间，后面瞎选，第二部分关于工行的，我一个不会，我又不是学金融的，瞎选，第三部分，行政能力测试，因为有公务员的经验，答得比较好，时间也比公务员考试宽裕很多。<br>&nbsp;&nbsp;&nbsp;4月29号去了趟广州，面试工商银行软件开发中心，我感觉面试还不错，只是听到我说签了华为，我问他薪酬，他说比华为低，就不想它了。面试完之后回家，在家时候收到工商银行数据中心的面试通知，5月11号，懒得去，5号回到学校。<br>-------------------------------------------END</span> 
<img src ="http://www.cppblog.com/chaogu/aggbug/145991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2011-05-09 01:55 <a href="http://www.cppblog.com/chaogu/archive/2011/05/09/145991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LOG-2011-04</title><link>http://www.cppblog.com/chaogu/archive/2011/05/03/145604.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Tue, 03 May 2011 13:57:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2011/05/03/145604.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/145604.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2011/05/03/145604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/145604.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/145604.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近有人教我写一下日志，不需要条理，能帮助到自己，所以我就写写，结构很复杂，里面东西只有我能看懂。所以你不要尝试去读懂。&nbsp;&nbsp;<a href='http://www.cppblog.com/chaogu/archive/2011/05/03/145604.html'>阅读全文</a><img src ="http://www.cppblog.com/chaogu/aggbug/145604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2011-05-03 21:57 <a href="http://www.cppblog.com/chaogu/archive/2011/05/03/145604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译Luxrender</title><link>http://www.cppblog.com/chaogu/archive/2011/05/03/145603.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Tue, 03 May 2011 13:42:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2011/05/03/145603.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/145603.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2011/05/03/145603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/145603.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/145603.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp; 最近有人叫我编译这个渲染引擎，据说很难编译，我编译无数代码，一般别人的代码拿来编译都很难受，因为作者的机器跟我的机器配置上都有些不痛，可能会丢了什么库之首先上Luxrender的官网，一般的开源项目都有个什么文档之类的东西，一般也会教怎么去编译代码。找找还真有，文档写得太他妈精辟了，就一点点，这也符合我的风格，少说明简单。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">类的一大堆问题，有时可能是编译器的不同，有可能有出现什么符号没定义之类的问题。所以编译代码都是很难受的事情。耗时还耗精力。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">闲话不扯了之间正题。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">Luxrender 官网：<a href="http://www.luxrender.net/en_GB/index">http://www.luxrender.net/en_GB/index</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">编译的文档：<a href="http://www.luxrender.net/wiki/index.php?title=Building_on_Windows">http://www.luxrender.net/wiki/index.php?title=Building_on_Windows</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">据说我的机器还是WindowsXP所以找Windows下的文档。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">然后按它说的方法去干。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">1.下载<a title=http://tortoisehg.sourceforge.net/ href="http://tortoisehg.sourceforge.net/">TortoiseHG</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">2.安装好后在某个盘里面新建个文件夹，这谁都会。我的文件夹名就叫Luxrender</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">3.然后选中那个文件夹&lt;Luxrender&gt;右击。鼠标移动到TortoiseHG，会发现有个叫Clone&#8230;的东西，点击</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">4.然后再source path（也就是源路径）里面输入<a title=http://src.luxrender.net/lux/ href="http://src.luxrender.net/lux/">http://src.luxrender.net/lux/</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">5.在destination（也就是目标路径）里面输入 BASE/lux （其实BASE可要可不要，只是lux文件跟windows和luxrays要在同一级）。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">6.然后点击Clone（克隆）就可以了</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">7.然后就是等待</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">8.等待</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">9.再等待</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">10.等它完成了，然后我们还是依照3的做法，选中文件夹&lt;Luxrender&gt;移动到TortoiseHG，然后Clone&#8230;</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">11.在source path （源路径）里面输入 <a title=http://src.luxrender.net/windows/ href="http://src.luxrender.net/windows/">http://src.luxrender.net/windows/</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">12.在destination （目标路径）里面输入BASE/windows （保证windows文件夹跟lux同级就可以了）</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">13.点击Clone之后等吧</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">14.完成后再按照3的做法选中文件夹&lt;Luxrender&gt;右击移动到TortoiseHG上然后Clone</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">15.在source path 里面输入<a title=http://src.luxrender.net/luxrays/ href="http://src.luxrender.net/luxrays/">http://src.luxrender.net/luxrays/</a></p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">16.在destination 里面输入 BASE/luxrayse （保证luxrays跟lux同级就可以了）</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">17.然后点击Clone就可以开始无限的等待</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">18.等都完成了之后，就打开你的Visual　Studio 2008的Command prompt，VC2005的你尽快装个2008吧，VC2005难受死你。~_~</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">19.然后CD到你的windows文件夹。懂cd的跳过去：一般打开 Command prompt上的默认路径是你的Visual Studio的安装路径。比如我的是在D盘，但是我的Luxrender在G盘所以要换盘，在黑屏上输入 G:&nbsp;。如果你的Luxrender在E盘就输入 E: 。如此类推。然后就是 cd G:\luxrender\BASE\windows\ 我的是这样，如果你的luxrender文件夹是在E盘里面的SRC文件夹中就输入 cd E:\SRC\luxrender\BASE\windows\。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">20.接着你会看到你的windows文件夹中有个叫做 getdeps.bat 的文件。在黑屏上输入 getdeps</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">21.接着又是选择什么的反正getdeps就是把所有的luxrender需要的类库之类的都下载下来，然后解压到一个叫做deps的文件夹里面，deps文件夹是在Luxrender\BASE\文件夹中，也就是跟你的lux、windows、luxrays同一级。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">22.Get完之后就是导入注册表，双击windows文件夹里面的build-vars.reg,然后确定导入就行了。其实它就是把像LUX_WINDOWS_BUILD_ROOT这样的环境变量设置一下。当然你也可以自己一个一个设置。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">23.接下来的事情就是build你下下来的东西 (&lt;deps\&gt;下的东西build一下，比如boost)。在你的Command prompt 里面输入build-deps-x86.bat。（惭愧我还是用32位的WindowsXP）。你不要尝试使用cmd.exe去build，难受的是你。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">24.在无尽的等待回来后，你觉得差不多了，但是厄运才刚刚开始&#8230;&#8230;..</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">开始编译</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">1.然后就是编译，进入BASE/windows然后打开lux.sln</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">2.编译肯定不会成功的，但是要一边编译一边看有什么问题。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">问题：</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">1.出现isatty()找不到</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">加入#include &lt;io.h&gt;</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">将isatty改成&nbsp;&nbsp; _isatty()</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">2.环境变量没设置，会有这个问题的，所以加上它提示的环境变量</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">3.Yacc返回错误，说系统找不到某个东西。要把 BASE/windows/Projects里面的那个project文件（.vcproj）用文本文件打开然后将"$(InputDir)/$(InputName)-hxx.cpp"的反斜杠（/）去掉。有几个文件要改这个的。当你遇到了就改一下。就是这个问题。</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">4.moc.exe找不到，就是QT没有编译好。打开visual studio 2008 的Command prompt 打开，然后cd到QT的根目录比如我的是G:\Luxrender\BASE\deps\x86\qt-everywhere-opensource-src-4.6.2输入configure -debug-and-release -opensource -platform win32-msvc2008完成之后在输入nmake</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">5.miss python31.lib</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;拷贝&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; python31.lib</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:\Luxrender\BASE\deps\x86\Python-3.1.2\PCbuild\&nbsp;&nbsp; </p>
<blockquote style="MARGIN-RIGHT: 0px" dir=ltr>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;To</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:\Luxrender\BASE\deps\x86\Python-2.6.6\PCbuild\</p>
</blockquote>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">6.miss libboost_python-vc90-mt-lib </p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create foulder &lt;python2&gt; in</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; copy</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libboost_python-vc90-mt-lib </p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libboost_python-vc90-mt-1_43.lib</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libboost_python-vc90-mt-gd-1_43.lib</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libboost_python-vc90-mt-gd.lib</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from </p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python3\lib\</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; to</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; G:\Luxrender\BASE\deps\x86\boost_1_43_0\stage\python2\lib\</p>
<p style="FONT-FAMILY: 楷体_GB2312; FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应该来说你就可以全部编译过去了。</p>
<img src ="http://www.cppblog.com/chaogu/aggbug/145603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2011-05-03 21:42 <a href="http://www.cppblog.com/chaogu/archive/2011/05/03/145603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一砣屎自述</title><link>http://www.cppblog.com/chaogu/archive/2010/08/29/125152.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Sun, 29 Aug 2010 04:30:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/08/29/125152.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/125152.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/08/29/125152.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/125152.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/125152.html</trackback:ping><description><![CDATA[<div><div class="real_blog" id="veryContent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 1.8em; zoom: 1; text-indent: 0em; height: auto !important; color: rgb(92, 92, 92); font-family: Arial, Simsun, 'Arial Unicode MS', Mingliu, Helvetica; font-size: 12px; "><div id="paperBottom" class="clear" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; clear: both; "><p class="MsoNormal" style="line-height:21.6pt;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:宋体;mso-font-kerning:0pt">&nbsp;&nbsp; &nbsp;&nbsp;</span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:宋体;mso-font-kerning:
0pt">我是屎，但我是一砣自尊的屎、自信的屎、自以为是的屎．<span lang="EN-US">&nbsp;<br>
</span>　　我不会搞笑，也不会煽情，可能默默无闻的腐败，可能也招来一些厌恶，甚至唾弃．但我义无反顾，也义不容辞自恋或自伤，所以我选择了做屎．<span lang="EN-US">&nbsp;<br>
</span>　　当一砣屎没什麽大不了，也没什麽小不然，一砣屎就是一砣屎，他不能变成一块金子，也不能蜕变成钻石．但他有归属，他是属于马桶的，刘德华说：＂每个马桶都是英雄＂，那归属于英雄的做砣屎又何妨．一砣屎也就是一砣屎，有可能做屎是低下的，但我有自尊我就是第一流的屎．他会腐化成泥土，但每一件物品都会腐化成泥土，无论高尚或低贱，无论伟大或渺小．<span lang="EN-US">&nbsp;<br>
</span>　　我奉呈：<span lang="EN-US">&nbsp;<br>
While there is a lower class I am in it.&nbsp;<br>
While there is a crimical elememts I am of it.&nbsp;<br>
While there is a soul in prison i am no free.<o:p></o:p></span></span></p>

<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p></div></div><div class="mode_blog_menus" style="margin-top: 20px; margin-right: 0px; margin-bottom: 19px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; height: 24px; color: rgb(92, 92, 92); font-family: Arial, Simsun, 'Arial Unicode MS', Mingliu, Helvetica; font-size: 12px; "><div class="bts_op" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; float: left; position: relative; z-index: 101; "></div></div></div><img src ="http://www.cppblog.com/chaogu/aggbug/125152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-08-29 12:30 <a href="http://www.cppblog.com/chaogu/archive/2010/08/29/125152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>“三流学校的学生又来了”</title><link>http://www.cppblog.com/chaogu/archive/2010/08/25/124605.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Tue, 24 Aug 2010 17:47:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/08/25/124605.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/124605.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/08/25/124605.html#Feedback</comments><slash:comments>37</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/124605.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/124605.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如果你认为三流学校的人没资格在园子里发表看法，不要点开看了。<br>如果你认为无关技术的不应该发在首页精华，也不要点看看了。<br>如果你认为发在首页精华的都是关于”超高“技术含量的，不要点开看了。<br>如果你看了，然后觉得我说得不对，请你不要人身攻击，我怕我受不了到时赖你就不好了。&nbsp;&nbsp;<a href='http://www.cppblog.com/chaogu/archive/2010/08/25/124605.html'>阅读全文</a><img src ="http://www.cppblog.com/chaogu/aggbug/124605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-08-25 01:47 <a href="http://www.cppblog.com/chaogu/archive/2010/08/25/124605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>四年就学这东西........</title><link>http://www.cppblog.com/chaogu/archive/2010/08/19/123919.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Wed, 18 Aug 2010 22:32:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/08/19/123919.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/123919.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/08/19/123919.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/123919.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/123919.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 大学英语（一）（阅读）      X        高等代数B      X        高等数学A1      X        计算机导论      &nbsp;        计算机高级语言程序设计（C）      &nbsp;    ...&nbsp;&nbsp;<a href='http://www.cppblog.com/chaogu/archive/2010/08/19/123919.html'>阅读全文</a><img src ="http://www.cppblog.com/chaogu/aggbug/123919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-08-19 06:32 <a href="http://www.cppblog.com/chaogu/archive/2010/08/19/123919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于造轮子-为什么造轮子和想造怎么去造？（我的意见+求意见）</title><link>http://www.cppblog.com/chaogu/archive/2010/07/02/119126.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Thu, 01 Jul 2010 17:03:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/07/02/119126.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/119126.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/07/02/119126.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/119126.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/119126.html</trackback:ping><description><![CDATA[





<p class="MsoNormal"><font  face="华文仿宋" size="6"><span  style="font-size: 21px;"><p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">关于造轮子的问题，褒贬不一，我是赞成造轮子的，很多时候我们没有必要再去造一个已经存在的轮子，这是贬造轮子的重要的看法，我觉得没什么不对的，如果是要立刻用到实际中去，而且时间上很赶的时候造一个轮子出来不是什么好事情。但是造轮子也有很多好处，比如能学到很多东西，可以参见<span lang="EN-US">vczh</span>的<span lang="EN-US"><a href="http://www.cppblog.com/vczh/archive/2010/07/01/119083.html"><span lang="EN-US"><span lang="EN-US">关于造车轮</span></span></a></span>，虽然没有将所有造车轮的好处统计起来，但是很有参考价值。当然你可以去看看国外的大学教程，他们本科生的任务大多就是造个车轮出来。比如<span lang="EN-US">MIT</span>：操作系统课程就是写个操作系统出来，数据库课程就是写个数据库出来，图形学就是写个<span lang="EN-US">raytracer</span>（光线跟踪器）出来。当然还有很多，比如<span lang="EN-US">Stanford</span>：计算机网络就是用<span lang="EN-US">UDP</span>实现<span lang="EN-US">TCP</span>的功能，写个路由协议，图形学就是做一个软件<span lang="EN-US">openGL</span>，等等，所以造轮子（再造轮子）是很有实践价值的，而且很多一流学校就是这么干的。很多时候如果想创造轮子的话再造轮子所获得的经验和能力的提高是很有价值的。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:
16.0pt;font-family:华文楷体">那如果你肯定了再造轮子的好处那就多帮造轮子的人说点好话，当然也说明再造轮子的的限制，不然误人子弟。但是如果你肯定了再造轮子的好处，你想加入再造轮子的大军那你该怎么办呢？<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">这点其实我也在想，如果看到这篇文章而又很有欲望表达自己的看法的前辈留下你的建议。在这里我也表达一下我的看法。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">建议一：书<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">如果我们都想造轮子，但是苦于没有经验而且对轮子的构造很不熟悉，很多时候我们只好放弃这种想法。如果有一本书教你怎么去造这个轮子的话说不定你的轮子就造出来了，而且还不差。所以如果想造一个轮子，很常用的方法就是找一些相关的书籍。优点是结构完整而且描述清晰，而且还很系统（国内人写的书大多不好，所以还是先去找找有没有国外人写的书，老外写的书看得还比较爽）。缺点是大多时候书都比较理论实践的东西少，而且对我们造轮子来说书上的那种结构不是很适合造轮子，如果是大部头书的话还很快就把你的意志给削弱了。所以书不是万能的，我看过一定数量的书，但是到头来还是没有太大的提高。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">建议二：课程<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">对于大多书学生来说这条是最好的。其实大多数学生都是很想学习的，苦于没有人指导加上老师无聊，很多时候学生搞到最后都不想学了。如果你是一个学生，如果让你去造一个轮子出来，想想那是世界上最牛的轮子（转得最快），那是让人激动的，学生学起来也很有劲头。所以造轮子最好的方式是去找一些课程，而那门课程是教你怎么造轮子的，按造那个课程的方式先去造一个出来，然后再想想自己的轮子怎么造，然后你的轮子又是另一个最牛的轮子（转得快不说，还省材料）。优点：系统化，理论实际相结合，而且很多时候那些老师已经帮你完成了一些工作，适合菜鸟级别的人物<span lang="EN-US">---</span>不如说我。缺点：还没有找到，如果非得说有缺点就是：让你见识了一个最牛的轮子，让你觉得你自己独立造的轮子没有技术含量，让你放弃了想法。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">建议三：现成系统<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">我们讨论的是再造轮子，所以这个轮子必然已经存在了，我们仿这个轮子去造一个不就行了。通过分析和比较，使用别人的轮子的时候想想别人底层是怎么做的，怎么设计的，意淫一番之后总结出经验，然后造自己的轮子。而且造一个比原来更加小强（小而强大）的轮子，功能完整，耗费资源少，使用简单<span lang="EN-US">-----</span>那不就是我们想要的吗？缺点就是可能要有些经验。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">建议四：论文<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">如果你是一个骨灰级的轮子玩家这点你应该是清楚的。看论文是一件很痛苦的事情，很多时候我们的理论基础没有论文的作者好，或则论文作者的基础跟你的不一样（比如他是学物理的，而我们是学计算机的），所以看不懂论文，直接结果就是你的轮子造不出来。所以还是要很有经验和理论基础。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">建议五：开源软件<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:16.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun:yes">&nbsp;</span></span><span style="font-size:16.0pt;
font-family:华文楷体">开源是一个好东西，首先它是免费的，再者可以看到代码。这点我不用说了，找到了相似的开源代码，读一读，肯定有收获。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">总结或者想法：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">造轮子肯定不是一件简单的事情，没有恒心就不要造轮子了，而且会花费一些时间。当然如果你很想造轮子而且你确定你有一定的时间（不用太多）你就去造吧。国内的开源软件和基础软件不好，说不定我们这代造了一些轮子之后，国内的基础软件就好了。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">很多时候如果你没有头绪，你就写点代码吧，古人写字静心，我们为什么不能写代码静心呢？说不定你写着写着轮子的框架就出来了，再写着写着轮子就造好了。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:16.0pt;font-family:华文楷体">虽然上面我都说了点，但是很多情况下你找不到你想要的资源，可以尝试问一下别人，说不定他能给你很好的建议<span lang="EN-US">---</span>这个建议可能就一句话。</span></p></span></font></p><img src ="http://www.cppblog.com/chaogu/aggbug/119126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-07-02 01:03 <a href="http://www.cppblog.com/chaogu/archive/2010/07/02/119126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代理服务器的简单实现</title><link>http://www.cppblog.com/chaogu/archive/2010/06/28/118842.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Sun, 27 Jun 2010 17:52:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/06/28/118842.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/118842.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/06/28/118842.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/118842.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/118842.html</trackback:ping><description><![CDATA[

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:14.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp; &nbsp; &nbsp;</span></span><span style="font-size:
14.0pt;font-family:华文楷体">第一次写关于技术的，可能看的人不多，骂烂的也不在少数，但是还是写一点，可能对一些人有帮助，也提高自己的写作水平，以后可以写出更好的东西来。当然我在<span lang="EN-US">blog</span>里面会坚持写自己做过的东西，这起码不会误人子弟（高手直接跳过）。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight:normal"><span style="font-size:14.0pt;font-family:华文楷体">是什么？<span lang="EN-US"><o:p></o:p></span></span></strong></p>

<p class="MsoNormal" style="text-indent:21.0pt"><span style="font-size:14.0pt;
font-family:华文楷体">首先吹下水，告诉你什么是代理服务器（<span lang="EN-US">proxy</span>）。<strong><span style="font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;mso-bidi-theme-font:
minor-bidi;color:black;font-weight:normal;mso-bidi-font-weight:bold">代理服务器</span></strong><span><strong style="mso-bidi-font-weight:normal"><span style="color:black">（</span></strong></span><strong><span lang="EN-US" style="font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;mso-bidi-theme-font:
minor-bidi;color:black;font-weight:normal;mso-bidi-font-weight:bold">Proxy</span></strong><span><strong style="mso-bidi-font-weight:normal"><span style="color:black">），</span></strong></span><strong><span style="font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;mso-bidi-theme-font:minor-bidi;
color:black;font-weight:normal;mso-bidi-font-weight:bold">是一种特殊的网络服务，允许客户端通过它与另一个网络服务进行非直接的连接</span></strong><span><strong style="mso-bidi-font-weight:normal"><span style="color:black">。</span></strong><span style="color:black">具体过程为：客户端首先与代理服务器建立连接，接着发出一个对另外的目标服务器的文件或其它资源的连接请求，代理服务器通过与目标服务器连接或从缓存中取得请求的资源，并返回给客户端。通常在这个过程中，代理服务器可能改变客户端请求或服务器端响应的一些内容以满足各种代理需要。<span lang="EN-US"><o:p></o:p></span></span></span></span></p>

<p class="MsoNormal"><span><strong style="mso-bidi-font-weight:
normal"><span style="font-size:14.0pt;font-family:华文楷体;color:black">为什么需要？<span lang="EN-US"><o:p></o:p></span></span></strong></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:14.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:
14.0pt;font-family:华文楷体">当我们知道什么是代理服务器之后我们就会想代理服务器能干什么？总结如下：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;color:black">1</span></span><span><span style="font-size:14.0pt;font-family:华文楷体;
color:black">、提高访问速度：代理服务器通过设置一个较大的缓冲区，当有外界的信息通过时，同时也将其保存到缓冲区中，当其他用户再访问相同的信息时， 则直接由缓冲区中取出信息，传给用户，以提高访问速度。<span lang="EN-US"><o:p></o:p></span></span></span></p>

<p class="MsoNormal"><span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;color:black">2</span></span><span><span style="font-size:14.0pt;font-family:华文楷体;
color:black">、控制对内部资源的访问：如大学<span lang="EN-US">FTP</span>，使用教育网内地址段免费代理服务器，就可以用于对教育网开放的各类<span lang="EN-US">FTP</span>下载上传，以及各类资料查询共享等服务。暂时我还没有找到我们学校内部的代理服务器。<span lang="EN-US"><o:p></o:p></span></span></span></p>

<p class="MsoNormal"><span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;color:black">3</span></span><span><span style="font-size:14.0pt;font-family:华文楷体;
color:black">、过滤内容：</span></span><span style="font-size:14.0pt;font-family:
华文楷体;color:black;mso-font-kerning:0pt">例如限制对特定计算机的访问，将一种语言的数据翻译成另一种语言，或是防御代理服务器两边的攻击性访问。我们很多东西都被和谐掉了，不知道代理服务器是神是鬼。<span><span lang="EN-US"><o:p></o:p></span></span></span></p>

<p class="MsoNormal"><span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;color:black">4</span></span><span><span style="font-size:14.0pt;font-family:华文楷体;
color:black">隐藏真实<span lang="EN-US">IP</span>：上网者也可以通过代理服务器隐藏自己的<span lang="EN-US">IP</span>，免受攻击。当然黑客可能用这项功能来隐藏自己，让你很难找到。<span lang="EN-US"><o:p></o:p></span></span></span></p>

<p class="MsoNormal"><span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;color:black">5</span></span><span><span style="font-size:14.0pt;font-family:华文楷体;
color:black">、突破内容过滤机制，访问个别过滤的网站。如果<span lang="EN-US">Google</span>以后不能访问的话看来我要找个代理服务器了。现在都很多优秀的网站我都访问不了了。<span lang="EN-US"><o:p></o:p></span></span></span></p>

<p class="MsoNormal"><span><strong style="mso-bidi-font-weight:
normal"><span style="font-size:14.0pt;font-family:华文楷体;color:black">怎么去做？</span></strong></span><strong style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;color:black"><o:p></o:p></span></strong></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:14.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:
14.0pt;font-family:华文楷体">当我们搞清楚是什么和为什么需要时，我们就开始想怎么去做一个出来（当然有人觉得没什么意思，也就没有兴致考虑怎么去做了）。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span lang="EN-US" style="font-size:14.0pt;font-family:
华文楷体"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size:
14.0pt;font-family:华文楷体">首先我们需要知道代理服务器是怎么去完成工作的。其实很简单：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l2 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">1&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">获得客户端的请求<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l2 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">2&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">转发客户端的请求<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l2 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">3&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">获得目标服务器的响应<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l2 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">4&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">返回<span lang="EN-US">target</span>的响应<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="text-indent:21.0pt"><span style="font-size:14.0pt;
font-family:华文楷体">当然刚开始我们不要去考虑太多复杂的内容，我们先要将上面的功能实现了。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="text-indent:21.0pt"><span style="font-size:14.0pt;
font-family:华文楷体">接着我就来代码了：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:12.0pt;font-family:
&quot;Courier New&quot;;color:blue;mso-font-kerning:0pt;mso-no-proof:yes">int</span><strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:
0pt;mso-no-proof:yes"> main(</span></strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;color:blue;mso-font-kerning:0pt;mso-no-proof:yes">int</span><strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:
0pt;mso-no-proof:yes"> argc, </span></strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;color:blue;mso-font-kerning:0pt;mso-no-proof:yes">char</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:
0pt;mso-no-proof:yes">** argv)<o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:12.0pt;font-family:
&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">{<o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes"><span style="mso-tab-count:1">&nbsp;&nbsp; </span>cout&lt;&lt;</span></strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;color:maroon;mso-font-kerning:
0pt;mso-no-proof:yes">"Demo HTTP Proxy Server ver. 0.1.0.0"</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:
0pt;mso-no-proof:yes">&lt;&lt;endl;<o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes"><span style="mso-tab-count:1">&nbsp;&nbsp; </span>cout&lt;&lt;</span></strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;color:maroon;mso-font-kerning:
0pt;mso-no-proof:yes">"Developed by:Like Zhang"</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;
mso-no-proof:yes">&lt;&lt;endl;<o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes"><span style="mso-tab-count:1">&nbsp;&nbsp; </span>RunServer();</span></strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;
mso-no-proof:yes"><o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><strong><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span></strong><span lang="EN-US" style="font-size:
12.0pt;font-family:&quot;Courier New&quot;;color:blue;mso-font-kerning:0pt;mso-no-proof:
yes">return</span><strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes"> 0;</span></strong><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;
mso-no-proof:yes"><o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:12.0pt;font-family:
&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">}<o:p></o:p></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">主函数什么事情都没有做，就是<span lang="EN-US">RunServer</span>，将服务启动。那开始看下<span lang="EN-US">server</span>是怎么工作的：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">文字描述<span lang="EN-US">(</span>代码太多，伪码描述比较合适<span lang="EN-US">)</span>：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" align="left" style="margin-left:18.0pt;text-align:left;
text-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo2;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:
0pt;mso-no-proof:yes"><span style="mso-list:Ignore">1&gt;<span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span></span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">准备服务器套接字，绑定套接字，让套接字在一个端口上监听<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" align="left" style="margin-left:18.0pt;text-align:left;
text-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo2;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:
0pt;mso-no-proof:yes"><span style="mso-list:Ignore">2&gt;<span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span></span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">然后申请<span lang="EN-US">N</span>多的线程<span lang="EN-US">(</span>就叫做<span lang="EN-US">&lt;threadArray&gt;)</span>，放到数组中<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" align="left" style="margin-left:18.0pt;text-align:left;
text-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo2;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:
0pt;mso-no-proof:yes"><span style="mso-list:Ignore">3&gt;<span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span></span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">然后就等待客户端连接到服务器上<span lang="EN-US">(</span>也就是<span lang="EN-US">accept</span>了<span lang="EN-US">)</span>，一直等<span lang="EN-US">&#8230;&#8230;<o:p></o:p></span></span></p>

<p class="MsoListParagraph" align="left" style="margin-left:18.0pt;text-align:left;
text-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo2;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:
0pt;mso-no-proof:yes"><span style="mso-list:Ignore">4&gt;<span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span></span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">如果等到有客户端连接，那就将<span lang="EN-US">accept</span>到的套接字放到响应队列<span lang="EN-US">(</span>就叫做<span lang="EN-US">&lt;socketBuffer&gt;</span>吧<span lang="EN-US">)</span>中，当然由于这个队列是一个共享资源，使用互斥体保证它的安全<span lang="EN-US">---</span>先加共享锁，然后将套接字放入队列，然后再释放共享锁。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" align="left" style="margin-left:18.0pt;text-align:left;
text-indent:-18.0pt;mso-char-indent-count:0;mso-list:l0 level1 lfo2;mso-layout-grid-align:
none;text-autospace:none"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:
0pt;mso-no-proof:yes"><span style="mso-list:Ignore">5&gt;<span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span></span><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">&lt;threadArray&gt;</span><span style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:&quot;Courier New&quot;;
mso-font-kerning:0pt;mso-no-proof:yes">里面的线程是怎样工作的呢？接下来介绍线程函数<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">文字描述线程函数：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l1 level1 lfo3"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:0pt;mso-no-proof:
yes"><span style="mso-list:Ignore">1&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">首先加共享锁，接着看下<span lang="EN-US">socketBuffer</span>有没有东西，如果没有东西（也就是有没有客户来连接服务器）释放共享锁接着循环，如果有东西，那就将套接字弹出（记住释放共享锁），用这个套接字做事情。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l1 level1 lfo3"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:0pt;mso-no-proof:
yes"><span style="mso-list:Ignore">2&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">做什么事情呢？其实很简单，就是将客户端的请求拿过来，然后转发出去。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing" style="margin-left:36.0pt;text-indent:-36.0pt;mso-list:
l1 level1 lfo3"><span lang="EN-US" style="font-size:14.0pt;
font-family:华文楷体;mso-bidi-font-family:华文楷体;mso-font-kerning:0pt;mso-no-proof:
yes"><span style="mso-list:Ignore">3&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">转发出去之后接收目标服务器的响应，请求完了，转发也完了，就将套接字关掉，线程函数返回。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">但是这里遇到了一些问题：怎么去找到目标服务器？怎么去接受目标服务器的响应（性能考虑）？<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">熟悉<span lang="EN-US">HTTP</span>协议的人都是知道的，在<span lang="EN-US">HTTP</span>请求中就带有请求的<span lang="EN-US">URL</span>。所以我们只要解释一下客户端的请求就知道了。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">而接受目标服务器的响应我们使用<span lang="EN-US">IO</span>复用就行了。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNoSpacing"><span style="font-size:14.0pt;font-family:华文楷体;
mso-bidi-font-family:&quot;Courier New&quot;;mso-font-kerning:0pt;mso-no-proof:yes">讲解完毕！<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNoSpacing"><font face="华文楷体" size="6"><span style="font-size: 19px;">看下代码：windows版本的是Like Zhang实现的，版权归他所有。这里只做交流使用，如果Like Zhang需要撤下我会撤下。</span></font></p><p class="MsoNoSpacing"><font face="华文楷体" size="6"><span style="font-size: 19px;">Linux版本是我实现的，没有实现IO复用，也没有Windows的快（Linux开50个线程直接卡住）。</span></font></p><p class="MsoNoSpacing"><font face="华文楷体" size="6"><span style="font-size: 19px;"><a href="http://www.cppblog.com/Files/chaogu/http_proxy.rar" title="http_proxy" target="_blank" style="color: rgb(255, 0, 0); ">http-proxy</a></span></font></p><p class="MsoNoSpacing"><font face="华文楷体" size="6"><p class="MsoNormal"><span style="font-size:14.0pt;font-family:华文楷体">功能是实现了，但是还是有很多的不足，我从以下几点描述：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体">1&gt;</span><span style="font-size:14.0pt;font-family:华文楷体">性能：测试结果表明性能不高，特别是当客户端也是多线程实现的时候，某个意义上说这个代理服务器没有任何的性能提高和需要的价值。所以还要优化性能，主要是：内存、线程的复用<span lang="EN-US">IO</span>上做优化。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体">2&gt;</span><span style="font-size:14.0pt;font-family:华文楷体">提供的功能：就算是性能提高了，但是没有提供吸引人的功能时也没有存在的意义，所以还要提供一些实质上的功能：页面缓存、过滤信息和安全保护机制。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体">3&gt;</span><span style="font-size:14.0pt;font-family:华文楷体">设计：如果看过代码可能知道这个东西的代码很差，如果要扩展这个东西设计还是很重要的，比如我们要加入更多的功能，将这些功能差分开再进行编码会爽很多。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span style="font-size:14.0pt;font-family:华文楷体">性能改进建议：<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" style="margin-left:36.0pt;text-indent:-36.0pt;
mso-char-indent-count:0;mso-list:l0 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">1&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">内存：要想实现一个高效的并发的服务器程序是需要很多的努力，在内存的管理上不能忽略，还有比如缓存页面需要大量的内存使用，如果能对内存使用上做一些努力能获得很高的性能提升。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" style="margin-left:36.0pt;text-indent:-36.0pt;
mso-char-indent-count:0;mso-list:l0 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">2&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">线程池：这个很重要，在线程的管理上一点都不能马虎，动态的线程管理是很有必要的，当连接少时要申请少量的线程，当用户增多，为了服务的质量要动态地去增加线程。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoListParagraph" style="margin-left:36.0pt;text-indent:-36.0pt;
mso-char-indent-count:0;mso-list:l0 level1 lfo1"><span lang="EN-US" style="font-size:14.0pt;font-family:华文楷体;mso-bidi-font-family:华文楷体"><span style="mso-list:Ignore">3&gt;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="font-size:14.0pt;font-family:华文楷体">缓存页面，前面也提到要缓存页面，可以想想如果在一点时间段很多人要访问<span lang="EN-US">Google</span>的网站（比如<span lang="EN-US">50</span>个）我们缓存了<span lang="EN-US">Google</span>的页面我们就只要下载一次。当然加入这个功能的时候要深入的去了解下<span lang="EN-US">HTTP</span>协议，比如怎么去替换掉缓存的页面，如果目标的页面更改了，我们还是要重新下载一次的。<span lang="EN-US"><o:p></o:p></span></span></p></font></p><p class="MsoNoSpacing"><font  face="华文楷体"><span  style="font-size: xx-large; "><br></span></font></p><img src ="http://www.cppblog.com/chaogu/aggbug/118842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-06-28 01:52 <a href="http://www.cppblog.com/chaogu/archive/2010/06/28/118842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再写一篇----我属于哪个层次-怎么去提高层次（求意见）</title><link>http://www.cppblog.com/chaogu/archive/2010/06/19/118214.html</link><dc:creator>chaogu</dc:creator><author>chaogu</author><pubDate>Fri, 18 Jun 2010 19:06:00 GMT</pubDate><guid>http://www.cppblog.com/chaogu/archive/2010/06/19/118214.html</guid><wfw:comment>http://www.cppblog.com/chaogu/comments/118214.html</wfw:comment><comments>http://www.cppblog.com/chaogu/archive/2010/06/19/118214.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/chaogu/comments/commentRss/118214.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chaogu/services/trackbacks/118214.html</trackback:ping><description><![CDATA[<font  size="6"><span  style="font-size: 19px;"><p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:
华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size:14.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;
color:black;mso-font-kerning:0pt">上一篇提到不在<span lang="EN-US">blog</span>写泄愤的话，好像自己没有做到这一点，也扯太远了，在这一篇里道个歉希望博友见谅。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">我并不是什么技术牛人，但是我想写一些自己的经验给各位看看，如果觉得没什么意思，就笑笑，如果对你有帮助也笑笑<span lang="EN-US">------</span>笑一笑，十年少。</span><span lang="EN-US" style="font-size:14.0pt;
font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;mso-bidi-font-family:宋体;
mso-font-kerning:0pt"><o:p></o:p></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">我的专业是这个的，当然少不了要编程但是编来编去不知道方向了，也不知道怎么再去提高了，这是一个很恐怖的事情，有时我就会问自己我是属于哪个层次的，我还有什么不足，我该怎么去提高？这些对我来说都是比较实在的问题。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">我是两年前开始学编程的，如果不算我浪费的大学第一年。大一的时候，我们是有教<span lang="EN-US">C++</span>，有上机实习，当时在我看来那都是瞎扯淡，连函数都不知为何物，就拼凑一些我都不知道干什么用的代码，然后当作作业提交上去，如果不是那该死的<span lang="EN-US">MFC</span>我也不会这样，因为我连函数变量这些基本的东西都不懂，你叫我用<span lang="EN-US">MFC</span>那不如杀了我。再加上没有人给我讲<span lang="EN-US">MFC</span>，我感觉代码是一种神秘的东西。其实也不能说我不努力，其实努力了，只是没有得到该有的回报。可能路走错了，走错路是一件很可怕的事情，比如你走了一个反方向的路，当然地球是圆的，你最终会到达终点，不过你错过了好的时机，浪费了大把的时间和精力。如果走错了方向及时改正过来还是可以的<span lang="EN-US">-----</span>如果你没有放弃的。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">是的，我没有放弃（虽然我想过），我及时的改变的方向。从小学到高中我都想脱离老师的方向，最终我还是不敢脱离老师的方向。不过在大学我没有想到我无意间脱离了老师的方向，算是圆了我的梦。大二开了门<span lang="EN-US">Java</span>，老师不错，然后我从<span lang="EN-US">Java</span>学会了编程然后我再去学<span lang="EN-US">C++</span>，很讽刺，我现在喜欢的是<span lang="EN-US">C++</span>，而我的<span lang="EN-US">C++</span>是从<span lang="EN-US">Java</span>里面学来的。其实如果你遇到了好的老师，那个老师不需要很牛，也不需要人品很好，但是他能教会你东西，你算是捡到宝了。我就是捡到宝的人，不要脸的说一句我就是<span lang="EN-US">luck dog</span>。然后我就做一些<span lang="EN-US">ACM</span>的题目，这也是因为我遇到了好的朋友<span lang="EN-US">----</span>他叫我去做一些<span lang="EN-US">ACM</span>的题目，然后我通过做题<span lang="EN-US">-</span>翻书<span lang="EN-US">-</span>做题，我的水平就提上去了，最起码我对<span lang="EN-US">Coding</span>有了从来没有的兴趣。做了一些题后我感觉没有什么代码我是写不出来的（现在想想很可笑）。然后我又重新玩了一点<span lang="EN-US">MFC</span>，看的是《深入浅出<span lang="EN-US">MFC</span>》和孙鑫的<span lang="EN-US">MFC</span>视屏。然后我懂了<span lang="EN-US">MFC</span>的一些底层的东西，做<span lang="EN-US">MFC</span>有了点感觉。不过我很讨厌<span lang="EN-US">MFC</span>，毕竟是它让我对编程失去了信心。在这段路我走了弯路，不过这个弯路是值得的，梅花香自苦寒来。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">如果停留在做<span lang="EN-US">ACM</span>的题目上的话我还是不可一世的人，因为完成一个题目给你带来的满足感是多么让人难以自拔的（我知道园子里很多题目达人，不要拍我）。我承认做<span lang="EN-US">ACM</span>题目很锻炼人，能时刻保持住你的思维能力，而且不断提高能力，但是不要一直做题目，要出来透透气，我是那种对什么都感兴趣的人，当然也是缺乏耐心的人。所以玩了一些无关痛痒的东西，比如<span lang="EN-US">QT</span>、<span lang="EN-US">mingw</span>、<span lang="EN-US">Linux</span>等等，当然老师没有要求，如果跟着老师我永远不知道外面的世界是什么样的，幸好我看了很多这些东西，然后我对这些东西都多少了解点，自己做起事情来也知道怎么去选取不同的方案，为什么这么做。在这段时间我的操作系统的那个老师对我帮助很大，他每节课都不务正业，天天吹牛，然后在他的吹牛下我也变成一个会吹牛的人<span lang="EN-US">------</span>他说了一些对我来说是新鲜的东西，然后我课下自己找到这些新鲜的东西，然后自己消化，然后就可以吹牛的，不过水平也只限于吹牛。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">很多时候人都是在浪费时间，我浪费了不少时间。然后也养成了不守时，做事情拖沓的习惯<span lang="EN-US">----</span>现在在改。接着我大三的时候接触了高级的东西<span lang="EN-US">----</span>图形学。可能对有些人甚至大多数人图形学不是什么高级的东西，但对于我来说是高级的。因为我一直在看没有做事情，所以水平还是<span lang="EN-US">"</span>水<span lang="EN-US">"</span>字来形容。我在这门课上学了很多东西，比如需求、测试、设计、<span lang="EN-US">MVC</span>、面向对象。我写了很多代码，看了很多书，然后我就是现在这个水平。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">那我现在是什么水平呢？我很难判断。对于自己都不了解是没有办法去找到自己的不足，也没有办法去提高自己的水平。所以我罗列一下自己：<span lang="EN-US">1</span>、<span lang="EN-US">C++</span>语法还没有学透。我给自己的定义是低级<span lang="EN-US">C++</span>程序员。虽然对于常用的<span lang="EN-US">C++</span>是会用的，用<span lang="EN-US">C++</span>去做出大多数功能是没有问题的。但是让我去设计一个<span lang="EN-US">C++</span>系统还是不行，简单的可以，但是对于复杂的系统还是不行。就算设计出来了也可能设计得不好。所以这方面需要自己努力一下。<span lang="EN-US">2</span>、<span lang="EN-US">Java</span>学得跟<span lang="EN-US">C++</span>一样。<span lang="EN-US">3</span>、<span lang="EN-US">python</span>还处于写<span lang="EN-US">demo</span>阶段。<span lang="EN-US">4</span>、总的来说语言不是障碍了，但是设计和知识储备还不够。<span lang="EN-US">5</span>、没有处理过复杂的系统<span lang="EN-US">---</span>比如一个游戏或一个<span lang="EN-US">3D</span>引擎。<span lang="EN-US">6</span>、没有经验<span lang="EN-US">-----</span>很少接触过真实的软件开发，基本不知道要干嘛。也就是说我就不知道别人要一个什么样的程序。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal" align="left" style="text-align:left;mso-pagination:widow-orphan;
background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体;mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;
mso-font-kerning:0pt"><span style="mso-tab-count:1">&nbsp;&nbsp; </span></span><span style="font-size:14.0pt;font-family:楷体_GB2312;mso-hansi-font-family:华文楷体;
mso-bidi-font-family:&quot;Times New Roman&quot;;color:black;mso-font-kerning:0pt">别人说我编程很牛，是的，我可以指导低年级的实习，我可以给低年级讲一些我熟悉的东西，但是很牛算不上，还是叫我低级程序员好一点，甚至是很低很低的那种。有时我还戏称自己为：写代码的小男孩。<span lang="EN-US"><o:p></o:p></span></span></p>

<p class="MsoNormal"><span lang="EN-US" style="font-size:14.0pt;font-family:楷体_GB2312;
mso-hansi-font-family:华文楷体"><o:p>&nbsp;</o:p></span></p></span></font><img src ="http://www.cppblog.com/chaogu/aggbug/118214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chaogu/" target="_blank">chaogu</a> 2010-06-19 03:06 <a href="http://www.cppblog.com/chaogu/archive/2010/06/19/118214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>