??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
erupt 喷出Q爆?br />annual tade talk 一q一度的贸易谈话
a raft of 大量?br />unveil 揭开Q揭C?br />lucrative 有利?br />placate 安抚
skew 歪斜?br />delegation 代表?br />procurement 获取Q得?br />fake pirated 伪造,盗版
equity 公^
durability 耐久?br />resume 再l,从新开?br />represent 扮演Q象?br />negotiation 谈判
mission 使命Q代表团
]]>
english.But in fact,my english is not good,even a little poor.Since i have passed CET4,
I have attended CET6 for too many times. Howerver,i come back depressedly every time.
Is it really difficult for me to learn english good? I think the main reasons are as
follows:
First, i don't have willpower. This is the primary reason for me! Regularly,i plan to study
english. The idea is good, but it is difficult to implement the plan. As a matter of fact,i
do it well for begining days.Along with the time running out,i forget to implement my
plan.I always make an excuse for my sluttery.So i don't adhere to the original plan.
Second, the way i study english is not very good.I always waste a lot of time but only have
a little harvest.In other words,it is inefficient for me to learn english.So i should
notice to look for the suited way to improve my learning efficiency.
Third, english study is not a clipping process.To study english well,i should learn it
every day.It should be accumulated piece by piece. One who want to imporve his english in
only few days will be failed.
I should learn english every day. I will write my blog in english. I think it is a good way
to help me improve my english in the future. I hope i can adhere to my plan until my
english is better.
?span lang="EN-US">
2005-9-21
M前言Q感触颇深,以前一直认为只要会~程Q能够实现所要求的功能就可以的上是一个合格的E序员了Q然而今天才了解刎ͼq没有这么简单,׃个小的函数而言Q它实现的只是一个功能,但是对一个合格的E序员来说却需要注意很多问题:首先是编E风|一D|齐的代码可读性强Q在适当的地方加上详l的注释Q让别h充分理解你的E序Q如果一D늨序只有编写者自己才能读懂,q段E序只能说是很失败的E序Q其ơ是异常处理Q每一个输入输出都可能产生异常Q而异常则会导致程序的崩溃或者输出结果与预期的gW合Q程序要如何保证对各U各样异常的处理Q如何保证程序运行的正确性,q一点也非常重要Q还有对法的复杂度的设计,同样的功能,不同的算法可能生不同的效率Q所需的资源也可能有差别,不能只是认ؓ单的实现了功能就万事大吉了,要好好的思考一下如何才能提高程序的效率Q要设计高效率的E序?span lang="EN-US">
W一章主要讲文g的结构,文g应该定义两个部分Q头文g和定义文Ӟ在前面还要再加上版权和版本的声明。以前自己写E序都是所有的东西都写在一个文件中Q包括头文gQ定义文Ӟq样Q文件的l构不是很清楚,而且在代码多的时候更加觉的很J琐Q而将q两个文件分开定义则都很分明,在都文g中都是定义的部分Q而在定义文g中写E序的实CQ这h比较清晰的,在项目大的时候会用到目录l构Q需要更加注意?o:p>
W二章讲E序的版式,觉的q部分很重要Q这是一个习惯问题,I和空g会浪费内存,但是却可以得程序结构清晎ͼ其实~程也是一U艺术,清晰的代码会lh很轻杄感觉Q而烦q代码会人容易厌倦,不想再读下去Q变量初始化最好采用就q原则,负责Ҏ忘记Q要L寚w的好习惯Q长行需要拆分,太长会不方便阅读Q要记得注释Q我最q作的两个例子中都很加注释Q清晰的注释更容易让别h理解你的E序Q所以一定要加注释,而且量要注释清楚。类中定义顺序最好先定义public函数Q再定义private数据Q不q我的习惯刚好相反,所以这斚w需要注意?o:p>
W三章讲名规则,大多数公司或者项目组都会又自q命名规则Q不q有一些共有的Q在本章有所介绍Q我在编E的q程中,l常会用到iQj{局部变量,而且很多都只是很单的字母Q这个习惯很不好Q这样代码的可读性差Q所以要注意命名Q要用英文单词的l合让函数或者参C名字上就可以知道他们的作用或者意义,q一点值得注意Q这也是需要养成的习惯?o:p>
W四章讲表达式和基本语句Q布类型与零值的比较要用if(flag)或者在flag前加Q表CfalseQ它不应与具体的值比较,整Ş值比较用Q=Q!Q)Q用Q表C|点型比较:if ((x>=-EPSINON) && (x<=EPSINON))其中EPSINON 是精度,不要?.0比较Q指针应该与NULL比较。用三元运符可以使程序更z!循环要考虑到效率,写法的不同可能导致效率差别很大,要采用高效的循环方式Q还有一些小的细节需要注意,在文章中都有详细的说明?o:p>
W五章讲帔RQ常量用h是很方便的,但是在类中const 数据成员的初始化只能在类构造函数的初始化表中进行,q点值得注意Q在cMq要注意枚D帔R的用!
W六章函数设计,需要注意的几点Q?.输入参数g递,用const &方式提高效率Q?.量用引用传递,但是在某些场合必要用g递,视情况而定Q?.q回值的使用Q不能返回指向“栈内存”的“指针”或者“引用”,q回对象时要考虑到效率;4.函数要短精悍,功能单一Q尽量少用staticQ要用assertq个利器q行试Q?.指针和引用的使用Q我在学习C++的时候,Ҏ针就不是很了解,没有掌握指针的用法,现在q在学习Q不q应该尽量用引用,量避免指针的一些特D用法?o:p>
W七章讲内存理Q这个部分是个难点,对内存的理非常灉|Q但是问题也是非常多的,很容易就会出现很多的问题?.内存分配之后加assert(p!=NULL)Q或者在用new甌内存时用if(p==NULL)或if(p!=NULL)q行防错处理Q?.甌完内存之后马上进行初始化Q这一点要L习惯Q?.内存使用完后Q释攑ֆ存,q点对以前用java的我ؓ重要Q以前在java机制中,不需要释攑ֆ存,由java的机制自动回Ӟ但是vc++不同Q需要释放资源,以免内存泄漏Q?.释放内存之后Q将指针讄为NULLQ防止生“野指针”;5.指针和数l内容的复制要用strcpy函数Q不能用Q=Q而比较要用strcmpQ?.内存定w用sizeof获取Q?.不能用指针申请动态内存,要用指针的指针或者用函数的返回值来传递动态的内存Q?.free和delete只是释放内存Qƈ没有把指针本w干掉;9.“野指针”是指向“垃圑ֆ存的指针”,指针操作越了变量的作用范围会生“野指针”;10. malloc/free不能用在构造函数和析构函数中,在这里要用到new/deleteQ?1.一般情况下Q不会出现内存耗尽的问题,不过高质量的E序q是应该考虑到这个问题。ȝ来说Q本章是个重点,指针的用是一大难点,要学会用指针,有效的用指针可以提到程序的效率Q指针虽然容易出错,但是却非常的灉|Q正用非帔R要?o:p>
W八章讲C++的高U特性,了解了一下的Ҏ:1.重蝲a之就是函数名相同Q参C同(作用域要相同Q;2. 当心隐式cd转换D重蝲函数Q有些|pȝ不知道要转换成什么类型,所以要对其q行昑ּ转换Q这样不至于得到意料之外的结果;3.在覆盖和重蝲的时候经怼遇到隐藏Q很Ҏ搞乱,解决Ҏ载文章中有,覆盖必须要有virtual关键字;4. 参数~省值只能出现在函数的声明中Q而不能出现在定义体中Q函数有多个参数Q参数只能从后向前挨个儿~省Q?.q算W的重蝲Q比较难Q不要轻易用;6. 关键字inline 必须与函数定义体攑֜一h能函数成ؓ内联Q只攑֜声明处不能,cd明之中的成员函数自动地成ؓ内联函数Q内联函数是以内存ؓ代h的,慎用内联?o:p>
W九章讲构造函数等内容Q有以下的收P1.构造函数负责对象的创徏Q用于初始化成员变量Q析构函数用于销毁对象,在构造函C要注意初始化列表的用;2.拯构造函数和赋值函数较隑ֆQ需要在使用中进一步理解体会。本章的内容与类有关Q在以后的编码过E中需要多加注意?o:p>
W十章讲cȝl承和组合,cȝl承体现的面相对象的~程思想Q提倡用,但是在一些情况下需要用到组合,要注意编E的设计ҎQ不要觉得代码正就可以了,要用正确的设计方法,~写出高质量的程序?span lang="EN-US">
W十一章讲其他的编E经验,const的用法有很多Q它不仅仅定义一个常量,q可以定义函敎ͼconst函数不允怿Ҏ据成员和调用非const成员函数。在后面q列Z很多需要注意的技巧,在编E的q程中因该严格执行,L好的~程习惯?o:p>
附录以及习题是对文章中的内容的ȝ和检?span lang="EN-US">
以上是对本文的理解和对关键点的记录,q本书可以作Z个规范,随时ȝQ应该按照里面提到的各种规则严格要求自己Q在以后的编E中形成一U良好的~程习惯Q这h能编出高质量的程序?o:p>
$mail = new PHPMailer();
$smtpserver = "smtp.126.com:25";
$smtpusermail = "wxq3327@126.com";
$smtpusername = "wangxq";
$smtpemailto = $_POST["to"];
$smtpuser = "wxq3327";
$smtppass = "wxq3327";
$uploaddir = 'c:/temp/';
$uploadfile = $uploaddir . basename($_FILES['attachfile']['name']);
$mailsubject = $_POST["name"]." send to you a mail ? . $_POST["title"]."?;
$mailbody = $_POST["mail"];
$mail->IsSMTP(); // send via SMTP
$mail->Host = $smtpserver; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = $smtpuser; // SMTP username
$mail->Password = $smtppass; // SMTP password
$mail->CharSet = "UTF-8";
$mail->From = $smtpusermail;
$mail->FromName = $smtpusername;
$mailsto = explode(",",$smtpemailto);
for ($i=0;$i<count($mailsto);$i++)
{
$mail->AddAddress($mailsto[$i]);
}
if (move_uploaded_file($_FILES['attachfile']['tmp_name'], $uploadfile)) {
$mail->AddAttachment($uploadfile);
} else {
echo "Possible file upload attack!\n";
}
$mail->WordWrap = 100; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = $mailsubject;
$mail->Body = $mailbody;
$mail->AltBody = $mailbody;
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>