题 目: 布尔表达式的翻译程序

针对布尔表达式的文法:

B-> TB′
B′-> and T B′|ε
T-> FT ′
T′-> or  FT′|ε
F-> not F |true|false |(B)| i rop i

利用递归下降分析法编制、调试其语法及语义分析程序,生成的中间代码为逆波兰式。编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

设计原则

1.属性文法

属性文法是在上下文无关文法的基础上,允许每个文法符号x(终结符或非终结符)根据处理的需要,定义与x相关联的属性。如x的类型x.type,x的值x.val,x的存储位置x.place等。对属性的处理有计算、传递信息等,属性处理的过程也就是语义处理过程。当然,处理时必须遵循一定的规则。为此,为每个文法规则式定义一组属性的计算规则,称为语义规则。

下面给出属性文法的形式定义:

一个属性文法形式上定义为一个三元组AG,AG=(G,V,E)。其中G表示一个上下文无关文法;V表示属性的有穷集;E表示属性的断言或谓词的有穷集。

2.递归下降分析法

递归子程序法是比较简单直观易于构造的一种语法分析方法。

实现思想:文法中每个非终结符对应一个递归过程(子程序),每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时能够按LL(1)形式可唯一地确定选择某个候选式进行推导。

3.逆波兰表达式

逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。

逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*。

它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。 其运算方式如下:

如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。

在Windows7 下利用VS2005开发,开发语言为C++。

课程设计和完整代码下载地址:课设

一般超大流量的网站都是将css直接放在页面里面的,这是应付超大流量的一种优化方案,比如网易首页,腾讯首页等。

1、减少http请求

链接到外部不免增加额外的http请求,这个是很耗时的。

2、避免裸页

假如存放css的服务器挂掉,整个首页就挂掉了。放在页面内,比较安全。用户访问页面时,不会因为CSS加载不上,而造成裸页面。

3、关于修改

你可能说这样不便于修改和管理。
实际上一般都是用程序动态加载进来的,然后用缓存静态化首页等。
知道的暂时就这么多了。

一、 确认操作系统

这一步比较简单,主要选择是linux操作系统还是windows操作系统。选择的原则很简单,能用linux的就尽量用linux。国外不像国内,操作系统和软件都可以用盗版,Windows主机的主机提供商需要支付大量版权费用给微软,所以价格比linux等开源系统主机贵很多(godaddy的是个特例)。如果你不是用的asp和.net程序,建议不要选择Windows主机。比如linux和unix主机,价格是十分便宜的,性能方面也很有优势。

二、 确认主机类型

这篇文章可能对你有所帮助国外主机种类不完全手册

这一步的选择原则是根据你的网站需要的资源进行选择。

国外主机最主要的限制是cpu。

如果你的网站消耗资源少,比如大概在日ip3K以下,你可以选择Share Hosting(共享主机)Share Hosting又称web hosting。就是将硬盘划分出若干区域出售,在一个服务器上放置多个站点,大家共享CPU,内存,带宽等资源。只允许自己一个人使用,你再划分空间卖给别人属于被禁止的行为,容易封号。但是价格是最便宜的。

如果你的网站所耗资源稍大一点。你可以选择一些云主机之类的,这类价格也很便宜,仅仅比共享主机稍贵一点。比如GoDaddy的 grid hosting,由多台服务器提供负载均衡。如果网站访问量大,但是又不懂服务器维护或者没有那么大的预算购买vps或者独立主机,选择此类型主机还是不错的。

如果你需要的资源更多,可以选择Reseller Hosting(经销商主机),如果需要更多资源可以选择VPS(虚拟专属服务器),还多一点是Dedicated Server(独立服务器)。这几类主机也可以进行合租(你可以看这篇关于合租的文章浅说国外主机合租计划)。

  • 分销主机,就是你买了这个主机之后一般会有独立的面板,然后你可以将你的主机分销卖给别人,类似二级代理。
  • VPS基本相当于一台独立电脑,但还是IDC将一块空间中的区域划分给你,不过允许使用的CPU,内存,带宽等等都是专属的,不会和服务器中其他的VPS共享。
  • Dedicated Server(独立服务器)就是买一台电脑,也就是服务器,就是服务器放在人家的数据中心而不是你家,你可以自己用,可以和别人共享使用,拥有全部支配权限。

三、 选择主机提供商

不同的主机提供商的网速和服务质量不尽相同。你可以通过这里查看你中意网站的提供商。个人觉得ping的速度未必和网站访问速度成正比。你可以通过一些网速测试网站,比如这个测一下速度。

现在互联网上有很多关于比如godaddy、IXWebHosting等主机提供商的介绍,虽然这些主机提供商确实全球知名,但是网上大部分是提供代购服务的,所以这是一个参考,并不代表全球就这几家公司,只是由于这些公司还不错,而且代购的佣金还不错,所以国内有这么多网站来推荐。如果你英文不错找一些国外的一些主机评测网站看看国外的评测,当然这些主机提供商肯定也不错。

四、 选择购买方式

如果你想安全,请直接到官网上去买,然后去搜一下优惠码,可以打个折。

然后你想价格便宜,建议去看看淘宝呀啥的网站去看一下,不是非常建议去那些代购网站,同样是代购,但是价格方面这些代购网站价格高的多(请查看这篇揭秘美国主机代购、美国主机评测等类似网站的赚钱方式)。但是代购的想退款很难,一般都需要付一定的手续费,请慎重考虑。

症状

上传文件到 Windows  server + IIS 6.0或者IIS7.0 服务器的时候遇到下列错误:

请求对象错误 ‘ASP 0104 : 80004005′

操作被禁止

原因

IIS6.0 和IIS7禁止上传超过 200kB 的文件. 因此你需要修改 IIS 的默认设置。

当然此200k限制仅限无组件上传,如果使用aspupload等上传时不会有此限制。

解决方法

IIS6

首先停止 IIS 服务,之后打开 C:\Windows\System32\Inetsrv 中的 metabase.XML, 并修改 AspMaxRequestEntityAllowed 为你需要的值(例如 1073741824, 1GB)。启动IIS服务。

若你想在iis运行的时候修改其配置文件,则打开iis管理器,打开internet信息服务属性面板,钩选“允许直接编辑配置数据库,允许在iis运行时编辑iis配置数据库配置文件”

IIS7

启动Internet 信息服务(IIS)管理器,选中要修改的站点,选择ASP图标,在限制属性里面找到最大请求实体主机限制,改为你所需要的值。

技术背景

在 IIS 6.0 中, AspMaxRequestEntityAllowed 属性指定了一个 ASP 请求(Request)可以使用的最大字节数. 如果 Content-Length 头信息中包含的请求长度超过了 AspMaxRequestEntityAllowed 的值, IIS 将返回一个 403 错误信息.

这个属性值与 MaxRequestEntityAllowed 相似, 但是是针对 ASP 请求的. 假如你知道自己的 ASP 应用只需要处理很少的请求数据, 你可以在 World Wide Web Publishing Service (WWW 发布服务)层级设定全局的 MaxRequestEntityAllowed 属性为 1MB, 并单独设定 AspMaxRequestEntityAllowed 为一个较小的值.

Godaddy主机禁用了mail函数,故需要用SMTP发邮件。

所以首先安装首先安装WP-Mail-SMTP插件,按照如下设置。

godaddy-wordpress-smtp

注意邮件作者有些邮箱可能不能用,我用的是zw@ourys.com,成功了。之后可以发邮件了,但是评论回复邮件通知需要安装另一个插件:WordPress Thread Comment

切忌,有些发邮件插件重写的mail函数,会导致邮件评论发送不出去,比如Comment Reply Notification插件,我将这个插件发送的header部分去掉,发现可以发送,但是还是有其他问题,所以建议大家用WordPress Thread Comment就可以了。

一、错误标志

wordpress的rss打开异常,CommentLuv里面无文章显示,IE打开有“无效的 xml 声明”的提示等。。

一、错误原因

rss输出时输出了空行,在所有<?php之前和?>之后出现空行,可能出现的地方:

  • 1、wp-rss2.php、wp-atom.php、wp-config.php等配置文件。
  • 2、插件文件中出现空行
  • 3、主题文件中出现空行,最大可能是function.php

一、解决办法

文件很多,当然不好找,所以必须一步一步的测试。

切忌:因为rss不是实时的,所以没做一次测试,请将一篇文章改为草稿,或者改回来,让rss更新。

1、第一步,安装一个Fix rss feed的插件,启用有修复,然后让rss更新,查看是否改好。

2、如果以上不行,禁用所有插件,然后让rss更新,查看是否改好。如果好了,一个一个查找插件原因。

3、如果以上不行,启用默认主题,然后让rss更新,查看是否改好。如果好了查找主题原因。

4、如果以上不行,查看wp-rss2.php、wp-atom.php、wp-config.php配置文件,在所有<?php之前和?>之后是否出现空行,如果有去掉。然后让rss更新,查看是否改好。

一:边框border缩写

border:border-width|border-style|border-color  例如:border:1px solid #000;

二:背景background缩写

background:background-color|background-image|background-repeat|background-attachment|background-position
例如:background:#f00 url(background.gif) no-repeat fixed 0 0;

三:字体font缩写

font:font-style|font-variant|font-weight|font-size|line-height|font-family
例如:font:italic small-caps bold 12px/1.5 sans-serif;
注意,如果你缩写字体定义,至少要定义font-size和font-family两个值。

四:列表list缩写

list-style:list-style-type|list-style-position|list-style-image
例如:list-style:square inside url(image.gif);

五:外边距margin与内边距padding缩写

1、基本写法
margn外边距与padding内边距是制作布局时常用到的两个属性,传统的写法如下:
margin:margin-top | margin-right | margin-bottom  |  margin-left
padding: padding-top | padding-right | padding-bottom | paddin-left
2、参数含义
margin与padding可以带一个、二个、三个、四个参数,各有不同的含义。
  • 一个参数时,例如我们常用到的*{margin:0;padding:0;}表示margin-top、margin-right、margin-bottom、margin-left和padding-top、padding-right、padding-bottom、paddin-left都一样为0。
  • 两个参数时,例如:*{margin:10px 5px; pdding:10px 5px;}表示margin-top、margin-bottom、padding-top、padding-bottom为10px,margin-right、margin-left、padding-right、paddin-left为5px
  • 当三个参数,例如:*{margin:10px 5px 6px; pdding:10px 5px 6px;}表示margin-top、padding-top为10px,margin-right、margin-left、padding-right、paddin-left为5px,margin-bottom、padding-bottom为6px.