关于Apache的内容协商

该功能使得服务器可以根据agent指定的http头来选择合适的资源。
涉及的http头包括: Accept-*
涉及的Apache中的知识: 类型表

1。 需要模块 : modules/mod_negotiation.so
2。 需要在目录的Options中添加: MultiViews;  如: Options FollowSymLinks MultiViews Indexes
3。 参考文档: http://apache.jz123.cn/content-negotiation.html
4。 该功能可能会影响到rewrite,参考: http://www.linuxpk.com/4941.html

apache根据你给的资源名称a,查找所有的a.*资源,加入有两种资源: a.txt 和a.php, 在类型表中查出:
.txt 对应文档类型为: text/plain 
.php 对应文档类型为: application/x-httpd-php

如果请求时使用的 accept为: text/plain ,则返回a.txt
如果请求时使用的 accept为: application/x-httpd-php ,则返回a.php
如果请求时使用的accept为: text/none ,找不到这种类型,则协商失败,apache返回406,并返回所有可用的类型列表,如:

Not Acceptable

An appropriate representation of the requested resource /a could not be found  on this server.

Available variants:

        

  • a.php , type application/x-httpd-php
  •     

  • a.txt , type text/plain

MySQL Show命令的使用

MySQL Show命令的使用

show tables或show tables from database_name;
解释:显示当前数据库中所有表的名称

show databases;
解释:显示mysql中所有数据库的名称

show processlist;
解释:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看
他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。

show table status;
解释:显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间

show columns from table_name from database_name; 或show columns from database_name.table_name;
解释:显示表中列名称

show grants for user_name@localhost;
解释:显示一个用户的权限,显示结果类似于grant 命令

show index from table_name;
解释:显示表的索引

show status;
解释:显示一些系统特定资源的信息,例如,正在运行的线程数量

show variables;
解释:显示系统变量的名称和值

show privileges;
解释:显示服务器所支持的不同权限

show create database database_name;
解释:显示create database 语句是否能够创建指定的数据库

show create table table_name;
解释:显示create database 语句是否能够创建指定的数据库

show engies;
解释:显示安装以后可用的存储引擎和默认引擎。

show innodb status;
解释:显示innoDB存储引擎的状态

show logs;
解释:显示BDB存储引擎的日志

show warnings;
解释:显示最后一个执行的语句所产生的错误、警告和通知

show errors;
解释:只显示最后一个执行语句所产生的错误

关于安装mysql的一些辛酸

现象:
新安装了一台机器,Apache + PHP; 访问时候出现错误:
*** glibc detected *** /data1/apache2/bin/httpd: double free or corruption (!prev): 0x0971ef80 ***

调试步骤:
1。 让apache的进程数减少为2个, strace -p pid; 观察异常所在,没有发现明显的出错地点

2。 在请求的PHP文件中添加断点,发现在mysql_connect 时出现的上述错误

3。 ldd mysql.so 和 ldd mysql 相比较,发现使用的libmysqlclient.so文件不同,系统里面有两套;相比是使用的include头文件和lib文件不是一个版本的

4。 删除安装的杂乱的mysql文件

5。 安装: mysql-5.1.47-linux-i686-glibc23.tar.gz    这个解压就行,不需要编译

6。 指定上面解压的mysql目录,重新编译PHP的mysql模块,问题解决

关于启动mysqld的一些问题:
1。 安装mysqld系统表文件,使用脚本scripts/mysql_install_db ; 需要在script平级的目录执行; 其原理是,使用越过权限检查的方式启动mysqld,默认的my.cnf是/etc/my.cnf ; 将创建系统表的sql语句放到mysqld中执行,于是生成的系统表就放在了(my.cnf中指定的)mysql数据库目录中了

2。 安装后的系统表可能用户权限不对,导致无法启动数据库,这就需要修改系统表和mysql数据库的权限了

调试过程中分别使用了:
strace、ldd、sh -x 等办法

windows 客户端处理http请求(cookie)

Cookie Handling in WinHTTP:
http://msdn.microsoft.com/en-us/library/aa383261%28VS.85%29.aspx

通过WinInet API来实现表单提交并设置获取COOKIE(C++ http请求             :
http://apps.hi.baidu.com/share/detail/17443850

 如何設定和取得 URL,使用 Wininet API 的 Cookie:
http://support.microsoft.com/kb/196062/zh-tw

用wininet库模拟cookie方式验证码登录

http://www.langisle.com/blog/2010/06/22/%E7%94%A8wininet%E5%BA%93%E6%A8%A1%E6%8B%9Fcookie%E6%96%B9%E5%BC%8F%E9%AA%8C%E8%AF%81%E7%A0%81%E7%99%BB%E5%BD%95/

win7 开启telnet命令

win7 上默认不能使用telnet命令,打开方式为:

控制面板 =》 程序和功能 =》 打开或关闭windows功能

这里可以打开telnet客户端、telnet服务器、ftp客户端、tftp客户端、iis服务器等。

注意: 你可能在“控制面板”中看不到“程序和功能” 需要在“控制面板”的查看方式中选择“大图标”或“小图标”