1、MIME
2、动态网站有客户端动态还有服务器动态。源程序下载到本地,在本地执行,并打印,不安全。
ActiveX、Applet(用Java开发的小程序,需要一个解释器JVM来执行,Java是一次)都是一种客户端动态,就是一种在客户端执行的一种机制。
3、Java被称为一次编译到处运行。但是它只能运行在虚拟机上,它也是有环境依赖的,只是被虚拟机隐藏起来了。
C就不行了,编译完了的C程序在不同的环境下是不一定能运行的。
4、CGI(Common Gateway Interface,通用网关接口)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。让web服务器能够跟后端程序相结合的,调用后端程序调用输入去执行的接口。
webapp,web应用程序。
5、编程语言:静态语言——编译型语言(C,C++,Java等);动态语言——解释型语言(shell,perl,python等)。
静态语言效率高,性能好,但是每一次它的错误查找调试很麻烦,都需要重新编译,并且它过于底层,别人的末班不好用,它的开发周期很长,维护很难。所以它适合底层应用,不常修改且性能要求很高的场景。比解释型语言高30%左右。
动态语言便于维护,做多共享模块,开发周期短,维护成本小,但是性能差。
所以完美的是用动态语言开发,再用一个转换器转换成一个静态语言。比如Facebook用php开发,用一个内部的转换器(Hiphop)转成一个C++程序。所以它的执行性能很好。
但并非所有的动态语言都适合网页开发,比如说bash,它主要是实现系统自动化,不适合web服务器站点开发。但也有很牛逼的人他就这么做,但是很复杂。
其他很多语言就开发站点需要框架,比如Python需要Django,Java需要ssh(Spring,Stucts,Hibernate),ruby需要rails。除了PHP和asp(too sad,the teacher says it's ugly)是专门用来开发站点的。
----------------PHP-------------------------
1、opcode操作码
php是一种解释型语言。
php源码→利用解释器编译成二进制(编译结果opcode,接近于而只能,不能独立运行,只能在zend引擎当中运行)→执行二进制格式。
.php文件被编译完成之后不在自己的内存空间中,而是放在一个公用的内存空间中(一个缓存器),这样其他的所有的进程都可以访问。这样的缓存器有APC,eAccelerator,XCache,Zend Optimizer和Zend Guard Loader等等。
PHP、javascript
2.MVC(model view control)
当有大量用户并发访问的时候,CGI机制并不是理想的模式。
3.DSO,Dynamic share object.
Apache是模块化设计。用某个模块功能的时候就加载这个模块。将php解释的功能做成一个模块,当我们需要php的时候就直接加载这个模块,这样,当一个用户访问的用户,不用开始两个进程,一个响应用户请求,一个进行php解释。这时候我们只需要一个进程就好了,它能用一个进程完成上面两个功能。
--------------MySQL-------------------
1.协议是规定模块等之间的通信。比如说http需要Apache等等,协议都是需要软件来实现的。
2.DBMS, DataBase Management System, 数据库管理系统
3.数据的组织结构
层次型
网状型
关系型
4.关系型数据库
关系型数据库也有很多不足。范式。所以出现了NoSQL,反关系模型。相应的软件有MongoDB、Redis、HBase。
RDBMS,Relational DataBase Mangement System,关系型数据库管理系统
一张表可以保存为多个文件,一个文件可以有多张表,他们之间没有必然的联系。
DML:Data Manapulate Language: 数据操作语言
INSERT, REPLACE, UPDATE, DELETE
DDL:Data Defination Lanuage: 数据定义语言
CREATE, ALTER, DROP
DCL:Data Control Language: 数据控制语言
GRANT, REVOKE
5.RDBMS的主要有:Oracle、Sybase、Infomix、SQLServer(前三个是最好的三大数据库)
开源的有MySQL、PostgreSQL
6.数据库的出现
一个500G的数据的文件,要对他的条目进行排序,我们需要索引进行操作。不然我们要将整个文件加载进入进程的内存空间进行操作,那显然是不合适的。所以要有DBMS。
7.mysql cluster(集群)
mysql community server
mysql enterprise edition
mysql connectors(连接器)
8.mysql软件包格式:软件包管理器特有的格式(rpm包,.exe),通用二进制格式(类似于绿色软件),源程序
9.表:一个表至少有一个列,可以没有行
行row
列field(字段),column
字段:名称,数据类型,类型修饰符
10.MySQL一些常用的指令
DDL
CREATE
ALTER
DROP
DML
INSERT
UPDATE
DELETE
DCL
GRANT
REVOKE
创建数据库
CREATE DATABASE db_name;
CREATE DATABASE [IF NOT EXISTS] db_name;
DROP DATABASE [IF EXISTS] db_name;
创建表
CREATE TABLE tb_name(col1,col2,...);
查看库中的表:SHOW TABLES FROM db_name;
查看表的结构:DESC tb_name;
删除表:DROP TABLE tb_name;
修改表:
ALTER TABLE tb_name
MODIFY
CHANGE
ADD
DROP
DML:
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE ('STRING', NUM,...);
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE ('STRING', NUM,...),('STRING',NUM,...);
UPDATE tb_name SET column=value WHERE
DELETE FROM tb_name WHERE CONDITION;
选择:
SELECT 字段 FROM tb_name WHERE CONDITION
*: 所有字段
WHERE:没有条件表示显示所有行;
创建用户:
CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD'];
DROP USER 'USERNAME'@'HOST';
为用户设定密码
SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('password')
或者 UPDATE user SET Password=PASSWORD("*****") WHERE USER='*****' AND HOST='*****'
10.MySQL的图形化工具:
phpMyAdmin、Workbench、MySQL Front、Navicat for MySQL
----------
1.WebServer、能运行Webapp的WebAPPServer、数据库服务器。(Apache、PHP、MySQL)
这可以安装在一台机器上(单层结构);两层结构;三层结构(三个安装在不同的服务器上)。
2.LAMP:phpMyAdmin
论坛:discuz(现在已经被腾讯收购)、phpwind(现在已经被阿里巴巴收购)、phpbb
CMS(内容管理系统):drupal、joomla
另一个常用的LAMP:WordPress,这是一个全球性的个人博客系统
--------------自己实验-------------
在实验室的一台机器装上LAMP,在另一台机器山访问。
service被直接访问的文件在目录/var/www/html中。一开始看网上的教程都是直接放在/var/www中,当然了这肯定是由一个配置文件配置它的直接访问目录的。