window.onresize = resetDiv;
function resetDiv(){
//浏览器宽度
var sWidth = document.documentElement.clientWidth;
//浏览器高度
var sHeight = document.documentElement.clientHeight;
//设置对象
var obj = document.getElementById('div_login');
//设置的高度和宽度减去DIV自身的高度和宽度
var w = sWidth/2-100;
var h = sHeight/2-100;
obj.style.marginLeft=w+'px';
obj.style.marginTop=h+'px';
}
<body onload="resetDiv();">
已有 0 人发表留言,猛击->>这里<<-参与讨论
ITeye推荐
- —软件人才免语言低担保 赴美带薪读研!—
译者序:
最近在学习一些编译器的基本知识,就找到了这篇英文的博客,在csdn搜了一下貌似没有人翻译,所以我干脆翻译了算了,反正都是学习。
原文地址:http://zserge.com/blog/cucu-part1.html
cucu: 一个易于理解的编译器 (part 1)让我们来讨论一下编译器吧。你有想过自己去写一个编译器吗?
我将会让你看到这是一件多么简单的事情!但这个博客的第一部分有点偏理论,所以希望你们能够保持耐心。
我们的目标CUCU 是一个“玩具”编译器用来编译一个“玩具”语言。我希望这个玩具语言能尽可能的像标准C语言,因此一个正确的CUCU程序同样能够使用C编译器进行编译。当然,整个C语言标准时非常复杂的,我们这里的CUCU所使用的语法只是C语言的一小部分。
比如说,这里有一个有效的CUCU程序片段:
int cucu_strlen(char *s) { int i = 0; while (s[i]) { i = i + 1; } return i; }语法
We're about to define a grammar for our language. It's an important step, because everything in our compiler design depends on it.
接下来我们要定义我们这个编程语言的语法。这是一个重要的步骤,因为在设计我们编译器的时候将会依赖于这个语法。
让我们从上到下来设计语法。我们的源文件包含一个程序。什么是程序?根据经验我们可以知道,程序就是一个列表,包括变量声明、函数声明、函数定义等,比如:
int func(char *s, int len); /* function declaration */ int i; /* variable declaration */ int func(char *s, int len) { /* function definition */ ... }
让我们尝试着将它写成EBNF的形式(如果你不知道什么是EBNF也没关系,它看上去很直观):
(译者:关于EBNF的详细信息请参考http://zh.wikipedia.org/wiki/%E6%89%A9%E5%B1%95%E5%B7%B4%E7%A7%91%E6%96%AF%E8%8C%83%E5%BC%8F)
<program> ::= { <var-decl> | <func-decl> | <func-def> } ;
这个表示法说明:一个函数是一个重复的序列,这个序列中的每一项是变量声明、函数声明或者函数定义。那么,这些所谓的声明和定义又是啥呢?让我们继续往下走。
<var-decl> ::= <type> <ident> ";" <func-decl> ::= <type> <ident> "(" <func-args> ")" ";" <func-def> ::= <type> <ident> "(" <func-args> ")" <func-body> <func-args> ::= { <type> <ident> "," } <type> ::= "int" | "char *"
因此,变量声明很简单:一个类型名加上一个标识符,然后在后面加上一个分号,就像我们经常在C语言中使用的那样。
int i; char *s;
函数声明稍微要复杂一点,首先是“类型+标识符”,然后在括号里可以有选择性的加上 <func-args>
函数的参数表,是一个用逗号分割开的“类型+标识符”的序列,比如:
char *s, int from, int to
Actually, trailing comma in CUCU is still allowed, but not required. It will just simplify our parser code.
The supported data types are only int and char *. Identifier is a sequence of letters, digits and an underscore symbol.
The only thing left is <func-body>. But let's talk about statements and expressionsfirst.
Statement is a smallest standalone element of the language. Here are valid statements in out language:
事实上,参数表最后的逗号在CUCU语言里是允许的,但不是必要的。之所以这么做是为了使我们分析代码变的简单。
语言所支持的类型只有int和char*,标识符是一串字母、数字或者下划线。
唯一没有说明的只有<func-body>. 但首先我们需要讨论一下语句(statements)和表达式(experssions)。
语句是指我们的语言中最小的独立元素。下面是一下有效的语句:
/* 这是一些简单的语句 */ i = 2 + 3; /* 赋值语句 */ my_func(i); /* 函数调用语句 */ return i; /*返回语句 */ /* 这是一些复合语句 */ if (x > 0) { .. } else { .. } while (x > 0) { .. }
Expression is a smaller part of the statement. As opposed to statements, expressions always return a value. Usually, it's just the arithmetic. For example in the statementfunc(x[2], i + j) the expressions are x[2] and i+j.
So, looking back at <func-body>. It's just a valid statement (which is usually a block statement).
表达式是语句的一部分,它比语句更小。和语句不同的是,表达式总是会返回一个值。通常,表达式会是算数预算。比如在语句func(x[2], i + j)里,表达式是 x[2] 和 i
1、显示数据库列表。 show databases; 刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户 ,实际上就是用这个库进行操作。 2、显示库中的数据表: use anying; //打开库,学过FOXBASE的一定不会陌生吧 show tables; 3、显示数据表的结构: describe 表名; 4、建库: create database 库名; 5、建表: use 库名; create table 表名 (字段设定列表); 6、删库和删表: drop database 库名; drop table 表名; 7、将表中记录清空: delete from 表名; 8、显示表中的记录: select * from 表名; 9、显示use的数据库名: SELECT DATABASE(); 10、显示当前的user: SELECT USER();
前提
电脑属性-》环境变量 -》新建 -》变量值 输入MYSQL路径
C:\Program Files\MySQL\MySQL Server 5.0\bin\
第一步 首先打开MYSQL 用 建库命令
建库:
create database 库名;
显示数据库列表。
show databases; 用此命令来判断库是否创建成功,若创建成功!则进行下一步
第二步
打开开始菜单的命令行输入 cmd 打开后
首先使用cd 切换路径命令,切换到sql目录中去
cd C:\Program Files\MySQL\MySQL Server 5.0\bin\
切换成功后输入导入sql文件命令
mysql -u root -pabc123456 anying < E:\data\heroes.sql
输入后可打开 MYSQL用
2、显示库中的数据表:
use anying; //打开库,学过FOXBASE的一定不会陌生吧
show tables;
去判断表是否导入成功!
作者:lloveyou520 发表于2013-1-13 20:32:17 原文链接阅读:37 评论:0 查看评论