php hello wordd 的Java写法

jquery笔记_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
38页免费48页免费15页免费8页免费11页免费 71页2下载券8页免费5页免费6页免费9页免费
喜欢此文档的还喜欢10页免费17页免费97页1下载券9页1下载券42页免费
jquery笔记|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢2441人阅读
在初学一门编程语言的时候,写一个&Hello world!&程序是最常见的入门方法。通过写一个成功的&Hello world!&,可以实践这门语言最基本的语法特性,还可以带给自己成就感,真是一举两得。C/C++语言本身有很多特性,如果能够将这些技术分解出来变 成一个个的&Hello world!&,并且将这些技术点到为止,貌似也算是一件善事。这里,列举了10个&Hello world!&程序,大家雅俗共赏一下。
在初学一门编程语言的时候,写一个 &Hello world!&程序是最常见的入门方法。通过写一个成功的&Hello world!&,可以实践这门语言最基本的语法特性,还可以带给自己成就感,真是一举两得。C/C++语言本身有很多特性,如果能够将这些技术分解出来变 成一个个的&Hello world!&,并且将这些技术点到为止,貌似也算是一件善事。这里,列举了10个&Hello world!&程序,大家雅俗共赏一下。
1. 最经典的&Hello world!& &Hello world!&最经典的写法当然是直接用 printf 输出&Hello world!&这几个字符了。无论用C还是 C++,写起来都非常的简洁明了。这里把最常见的几个全部列在下面。
#include &stdio.h& #include &iostream&
int main() { &&& printf(&Hello world!&);&&&&&&&&&&&&&&&&&& // 教科书的写法 &&& puts(&Hello world!&);&&&&&&&&&&&&&&&&&&&& // 我最喜欢的 &&& puts(&Hello& & & &world!&);&&&&&&&&&&&&&& // 拼接字符串 &&& std::cout && &Hello world!& && std:: // C++风格的教科书写法
&&& return 0; }
特别需要注意的是,在C/C++里,如果两个字符串之间除空白符以外没有任何东西,编译器会自动认为这两个字符串是连在一起的字符串。这样,如果一个字符串过长,可以用这种方法换行来写,既不浪费性能,又美观。
2. 用宏写的&Hello world!& 在C/C++里,宏是一个神奇的东西。特别是在C语言中,宏可以帮我们做一些&又脏又累&的活,包括拼接代码片断、隐藏繁琐的实现细节等等。其中特别有趣的是&#&的用法,它可以&提取&参数的名字,把它变成字符串。
#include &stdio.h&
#define Say(sth) puts(#sth)
int main() { &&& return Say(Hello world!); }
请注意,这个Hello world可是完全没有出现引号哦!
3. 断章取义的&Hello world!& 字 符串是一种常量这当然毫无疑问,但是它的类型是什么,这就需要考虑一下了。使用C++的typeid就可以这个问题的答案,而且只要是符合C或C++标准 的编译器就应该是一样的结果。比如字符串&Hello world!&,它的类型就是 char const [13]。 知道了这个,就可以写出以下的&Hello world!&:
#include &stdio.h&
int main() { &&& return puts(&&Do not say: Hello world!&[12]); }
4. 退出时运行的&Hello world!& 大 家都知道 main 函数退出意味着程序结束,可是这并不完全正确,我们完全可以在 main 函数退出以后做很多事呢&&比如说,输出&Hello world!&。这个功能依赖于C标准库中提供的函数 atexit(),调用这个函数并注册自己的回调函数就行。需要注意,这个函数可以调用多次,最后注册的函数最先执行。
#include &stdio.h& #include &stdlib.h&
void say() { &&& printf(&world!&); }
void sth() { &&& printf(&Hello &); }
int main() { &&& return atexit(say), atexit(sth); }
5. 读取自己的&Hello world!& C/C++的编译器提供了一些有用的内置宏,最常用的就是 __FILE__ 和 __LINE__ 了。其中,__FILE__ 代表当前的源文件的文件名,嗯,对了,如果我们让这个程序读取自己的源文件,不就可以做一个很有意思的&Hello world!&了么?
// Hello world!
#include &iostream& #include &fstream& #include &string&
int main() { &&& std::ifstream ifs(__FILE__); &&& std::string say, some,
&&& ifs && say && some && &&& std::cout && some && & & &&
&&& return 0; }
6. 话分两头的&Hello world!& 有了C++的类,我们就可以光明正大的在 main 函数执行之前和之后做感兴趣的事情了。我们可以声明一个全局的类的实例,这样,在 main 函数执行之前会调用这个类的构造函数,结束之后则会调用析构函数。
#include &iostream&
class say { public: &&& say() &&& { &&&&&&& std::cout && &Hell&; &&& }
&&& ~say() &&& { &&&&&&& std::cout && &world!&; &&& } }
int main() { &&& std::cout && &o &; &&& return 0; }
7. 传入模板的&Hello world!& C++的模板功能极为强大,可以说是C++里面最艰深、最经典、最时尚的部分。一个&Hello world!&当然无法使用很多很高级的模板技巧,我也不想只使用模板特化这样无阻挂齿的小技巧,嗯,那就来演示一个比较罕见的用法吧。
#include &iostream&
template &char * words& class say { public: &&& void operator () () &&& { &&&&&&& std::cout && &&& } };
extern char hello[] = &Hello world!&;
int main() { &&& return say&hello&()(), 0; }
请注意,这个 extern 是十分必要的,只有加上了 extern,这个指针才是一个编译器间可以确定的值,也才可以参与模板运算。还有,hello 必须为数组类型,而不能为 char*,这个道理和加 extern 是一样的。 此外,这里还演示了 functor 的用法,嗯,关于它的优点就不在这里多说了,反正是与原生指针相比有很多好处就是了。
8. 调用私有函数的&Hello world!& 我们知道,C++类的私有函数是不能被外界访问的,比如说 main 函数里面,它绝对不能访问类的私有函数,除非把它设为类的友元函数。不过我们还是可以用一些比较奇怪的方法访问类的私有函数&&当然,这个私有函数必须满足一个条件:它是虚函数。 这里就涉及到一个问题,指向虚函数的虚表放在哪里?对于 VS.Net 2003 而言,虚表是类的第一个成员,虚函数指针按照函数声明的顺序放在虚表里面。当然,这个说法并不严谨,更细节的东西还是去看看那本&成人高钙奶粉&吧,它会给出最权威的解答。 这里是一个很有意思的例子:
#include &iostream& #include &cstddef&
class secret { private: &&& virtual void say() &&& { &&&&&&& std::cout && &Hello world!&; &&& } };
int main() { &&& &&& (reinterpret_cast&void (*)()&(**(intptr_t**)(&word)))();
&&& return 0; }
9. 最暴力的&Hello world!& 最暴力 的调用函数的方法是:直接修改函数的返回地址,让这个地址指向我们想要调用的函数。这也就是缓冲区溢出漏洞的应用方法了,不过里面还涉及到很多问题,在这 里就不一一列举,想要了解的话,还是去 Google 吧。这里只演示一个可以在 VS.Net 2003 下可以用的&Hello world!&。
#include &stdio.h& #include &stdlib.h& #include &stddef.h&
void say() { &&& puts(&Hello world!&); &&& exit(0); }
int main() { &&& volatile intptr_t a = 0; &&& volatile intptr_t * p = &a;
&&& *(p + 2) = (intptr_t) &&& *(p + 3) = (intptr_t)
&&& return 0; }
10. 外星人说的&Hello world!& 好了,这个&Hello world!&是最匪夷所思的一个了!不过它并没有涉及任何复杂的C/C++语言特性,只是看起来有点酷。你能看懂外星人在说什么不? #include &stdio.h&
void alien_say(char * p) { &&& while (putchar(*(p += *(p + 1) - *p))); }
int main() { &&& return alien_say(&BETHO! Altec oh liryom(a loadjudas!) dowd.&), 0; }&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4771778次
积分:46486
积分:46486
排名:第23名
原创:1199篇
转载:326篇
译文:42篇
评论:2850条
(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(7)(6)(9)(17)(27)(13)(16)(29)(16)(17)(10)(10)(13)(12)(25)(13)(10)(13)(17)(9)(13)(9)(13)(13)(27)(13)(18)(17)(15)(23)(19)(34)(27)(27)(19)(18)(10)(31)(23)(55)(78)(76)(13)(28)(33)(21)(68)(113)(65)(83)(43)(22)(74)(78)(48)robots.txt写法
robots.txt写法
在了解robots.txt写法之前,我们必须要清楚robots.txt的概念、作用和语法。后面我还将介绍知名的引擎机器人Robots、知名站点robots.txt举例、常见robots.txt错误、Robots META标签和在线生成robots.txt网址。
一、robots.txt是什么,它有什么作用?
robots.txt是一个纯文本文件。当一个搜索引擎爬虫访问一个网站时,它会先检查站点根目录下是否存在robots.txt,如果存在,搜索爬虫就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索爬虫将能够访问网站上所有没有被口令保护的页面。
二、robots.txt的语法
robots.txt文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
&field&:&optionalspace&&value&&optionalspace&。
在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:
User-agent:
该项的值用于描述搜索引擎robot的名字,在&robots.txt&文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在&robots.txt&文件中,&User-agent:*&这样的记录只能有一条。
Disallow :
该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被robot访问到。
例如&Disallow: /help&对/help.html和/help/index.html都不允许搜索引擎访问,而&Disallow: /help/&则允许robot访问/help.html,而不能访问/help/index.html。
任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在&/robots.txt&文件中,至少要有一条Disallow记录。如果robots.txt是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的。
下面是一些robots.txt基本的用法:
1、禁止所有搜索引擎访问网站的任何部分:
User-agent: *
Disallow: /
2、允许所有的robot访问
User-agent: *
或者也可以建一个空文件robots.txt
3、禁止所有搜索引擎访问网站的几个部分(下例中的cgi-bin、tmp、private目录)
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /private/
4、禁止某个搜索引擎的访问(下例中的BadBot)
User-agent: BadBot
Disallow: /
5、只允许某个搜索引擎的访问(下例中的WebCrawler)
User-agent: WebCrawler
User-agent: *
Disallow: /
三、常见搜索引擎机器人Robots名字
名称                     搜索引擎
Googlebot             
Baiduspider           
Scooter               
ia_archiver           
FAST-WebCrawler       
Slurp                 
MSNBOT                 
四、robots.txt举例
下面是一些著名站点的robots.txt:
五、常见robots.txt错误
1、颠倒了顺序:
User-agent: *
Disallow: GoogleBot
正确的应该是:
User-agent: GoogleBot
Disallow: *
2、把多个禁止命令放在一行中:
例如,错误地写成
Disallow: /css/ /cgi-bin/ /images/
正确的应该是
Disallow: /css/
Disallow: /cgi-bin/
Disallow: /images/
3、行前有大量空格
Disallow: /cgi-bin/
尽管在标准没有谈到这个,但是这种方式很容易出问题。
4、404重定向到另外一个页面:
当Robot访问很多没有设置robots.txt文件的站点时,会被自动404重定向到另外一个Html页面。这时Robot常常会以处理robots.txt文件的方式处理这个Html页面文件。虽然一般这样没有什么问题,但是最好能放一个空白的robots.txt文件在站点根目录下。
5、采用大写。例如
USER-AGENT: EXCITE
虽然标准是没有大小写的,但是目录和文件名应该小写:
user-agent:GoogleBot
6、语法中只有Disallow,没有Allow!
错误的写法是:
User-agent: Baiduspider       Disallow: /john/
allow: /jane/
7、忘记了斜杠/
错误的写做:
User-agent: Baiduspider       Disallow: css
正确的应该是
User-agent: Baiduspider       Disallow: /css/
六、Robots META标签
1、什么是Robots META标签
Robots.txt文件主要是限制整个站点或者目录的搜索引擎访问情况,而RobotsMETA标签则主要是针对一个个具体的页面。和其他的META标签(如使用的语言、页面的描述、关键词等)一样,RobotsMETA标签也是放在页面的&head&&/head&中,专门用来告诉搜索引擎ROBOTS如何抓取该页的内容。具体的形式类似(见黑体部分):
&title&时代营销–网络营销专业门户&/title&
&meta name=&Robots& &
&meta http-equiv=&Content-Type& &
&meta name=&keywords& &
&meta name=&description& &
&link rel=&stylesheet& href=&/public/css.css& type=&text/css&&
2、Robots META标签的写法:
RobotsMETA标签中没有大小写之分,name=”Robots”表示所有的搜索引擎,可以针对某个具体搜索引擎写为name=”BaiduSpider”。content部分有四个指令选项:index、noindex、follow、nofollow,指令间以“,”分隔。
INDEX 指令告诉搜索机器人抓取该页面;
FOLLOW 指令表示搜索机器人可以沿着该页面上的链接继续抓取下去;
Robots Meta标签的缺省值是INDEX和FOLLOW,只有inktomi除外,对于它,缺省值是INDEX,NOFOLLOW。
这样,一共有四种组合:
&META NAME=&ROBOTS& &
&META NAME=&ROBOTS& &
&META NAME=&ROBOTS& &
&META NAME=&ROBOTS& &
&META NAME=&ROBOTS& &可以写成
&META NAME=&ROBOTS& &;
&META NAME=&ROBOTS& &可以写成
&META NAME=&ROBOTS& &
需要注意的是:上述的robots.txt和Robots META标签限制搜索引擎机器人(ROBOTS)抓取站点内容的办法只是一种规则,需要搜索引擎机器人的配合才行,并不是每个ROBOTS都遵守的。
目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于RobotsMETA标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。例如:
&META NAME=&googlebot& &
表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照。复制内容到剪贴板代码:
# robots, scram
User-agent: *
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH
User-agent: Mozilla/3.01 (hotwired-test/0.1)
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH
User-agent: Slurp
Disallow:   /cgi-bin
Disallow:   /TRANSCRIPTS
Disallow:   /development
Disallow:   /third
Disallow:   /beta
Disallow:   /java
Disallow:   /shockwave
Disallow:   /JOBS
Disallow:   /pr
Disallow:   /Interactive
Disallow:   /alt_index.html
Disallow:   /webmaster_logs
Disallow:   /newscenter
Disallow:       /virtual
Disallow:       /DIGEST
Disallow:       /QUICKNEWS
Disallow:       /SEARCH
建议加上robots.txt
原因是有些虚拟主机服务商自定义了404页面. 在文件类型不确定的时候, 有可能导致spider认为404页面是robots。
解决办法是,可以在目录下放一个空文件,名字叫robots.txt就可以了。
老外的robots在线生成网址(地址不保证永久有效):
转载请注明来自:[]}

我要回帖

更多关于 php hello word 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信