什么是用户控件(User Control)?
用户控件其实就是一种自定义的组合控件,通常由系统提供的可视化控件组合而成,
用户控件中不仅可以定义显示页面,还可以编写事件处理代码。当多个网页中包括
有部分相同的用户界面时,可以将这些内容相同的部分提取出来,做成用户控件。
HttpHandler:事实上,当一个HTTP请求到达HttpModule时,整个ASP.NET
Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于Http
请求来讲,HttpModule是一个HTTP请求的“必经之路”它可以在这个HTTP请求
传递到真正的请求处理中心之前附加一些需要的信息在这个HTTP请求信息之上,
或者针对截获的这个HTTP请求信息做一些额外的工作,或者在某些情况下干脆终止
满足一些条件的HTTP请求,从而可以起到一个Filter(过滤器)的作用。
HttpHandler:HttpHandler是HTTP请求的真正处理中心。正是在这个HttpHandler
容器中,ASP.NET才真正地对客户端请求的服务器页面做出编译和执行,并将处理后的信息
附加HTTP请求信息流中再次返回到HttpModule中,这时候HttpModule则会继续对处理
完毕的HTTP请求信息流进行层层的转交动作,直到返回到客户端为止。 ......
在linux下面安装mysql,首相要根据操作系统的版本,选择对应的mysql的版本,官方网站上有非常明确的分类
http://dev.mysql.com/downloads/
在这里我实验的操作系统是redhat linux
mysql 用了两个安装包,一个是server端,一个是client,我用的是rpm包,安装的指令比较简单。
MySQL-server-community-5.1.42-0.rhel4.i386
MySQL-client-community-5.1.42-0.rhel4.i386
推荐采用的默认的安装路径,然后运行两条简单的指令就安装完成了。
rpm -Uhv MySQLMySQL-server-community-5.1.42-0.rhel4.i386
rpm -Uhv MySQL-client-community-5.1.42-0.rhel4.i386
mysql安装的几个默认路径.
1,数据目录, /var/lib/mysql
2,配置文件, /usr/share/mysql
3,相关的命令 /usr/bin
4,启动脚本 /etc/rc.d/init.d
安装完成过后如果不能启动服务,
the server quit without updating PID file
这个错误很大部分是由配置文件引起的,你只需要根据你系统的配置把/usr/share/mysql下面对应的配置文件copy到/etc
并重命名为my.cnf.选择合适的配置文件参考http://www.kuqin.com/database/20090725/64156.html
配置文件搞定后,就启动mysql的服务,
service mysql ......
在linux下面安装mysql,首相要根据操作系统的版本,选择对应的mysql的版本,官方网站上有非常明确的分类
http://dev.mysql.com/downloads/
在这里我实验的操作系统是redhat linux
mysql 用了两个安装包,一个是server端,一个是client,我用的是rpm包,安装的指令比较简单。
MySQL-server-community-5.1.42-0.rhel4.i386
MySQL-client-community-5.1.42-0.rhel4.i386
推荐采用的默认的安装路径,然后运行两条简单的指令就安装完成了。
rpm -Uhv MySQLMySQL-server-community-5.1.42-0.rhel4.i386
rpm -Uhv MySQL-client-community-5.1.42-0.rhel4.i386
mysql安装的几个默认路径.
1,数据目录, /var/lib/mysql
2,配置文件, /usr/share/mysql
3,相关的命令 /usr/bin
4,启动脚本 /etc/rc.d/init.d
安装完成过后如果不能启动服务,
the server quit without updating PID file
这个错误很大部分是由配置文件引起的,你只需要根据你系统的配置把/usr/share/mysql下面对应的配置文件copy到/etc
并重命名为my.cnf.选择合适的配置文件参考http://www.kuqin.com/database/20090725/64156.html
配置文件搞定后,就启动mysql的服务,
service mysql ......
[本文转自]http://www.scmlife.com/index.php/214/dp-bbsthread-21094.html
附件文档大纲:
环境
1.安装Apache2.2.14
2.安装Subversion
1.6.6
3.安装后的系统设置
4.Apache设置
5.svn库的配置
6.运行SVN服务器
环境:
Red Hat Enterprise Linux Server release 5.3
(Tikanga)
httpd-2.2.14.tar.gz
subversion-1.6.6.tar.gz
到官网http://subversion.tigris.org/
下载当前最新的稳定版本subversion-1.6.6.tar.gz
到官网http://httpd.apache.org/
下载当前最新的稳定版本httpd-2.2.14.tar.gz
1.安装Apache2.2.14
用root账号执行以下命令:
tar
zxf httpd-2.2.14.tar.gz #解压到当前目录
cd httpd-2.2.14 #进入解压后的目录
./configure
--prefix=/local/svnroot/apache2 --enable-so --enable-mods-shared=all
--enable-dav=share --enable-dav-fs --with-ldap --enable-ldap
--enable-authnz-ldap --enable-authn-alias
#定义安装的目标路径(可据自己需要修改),使能LDAP
make
#编译
make install #安装
/local/svnroot/apache2/bin/apachectl start
#启动Apache
用IE访问以下网址,http://hostIP/,如果提示It
works!, ......
到了main.c,其实main.c中的大部分的内容是调用函数来实现初始化的工作,但是还是将它看完了。下面就是代码了。主要参考的是linux内核完全注释,在一些不太明白的地方,参考网上的介绍。废话少说。还有很长的路啊。努力啊O(∩_∩)O~。
/*
* main.c功能描述。
*/
//main.c程序的主要功能是利用setup.s程序取得的系统参数设置系统的
// 的根文件设备号和一些全局变量。这些变量至两名了内存的开始地址
// 系统包含的内存容量和作为高速缓存区内存末端地址。如果还定义了
// 虚拟盘,则主存将会相应的减少。整个内存的镜像如下 :
//
// -------------------------------------------
// | kernel | buffer | ramdisk | main memory |
// -------------------------------------------
//
// 高速缓存部分还要扣除显存和rom bios占用的部分。高速缓冲区主要
// 是磁盘等设备的临时存放数据的场所。主存的区域主要是由内存管理
// 模块mm通过分页机制进行内存的管理分配,以4k字节为一个页单位。
// 内核程序可以直接访问自由的高速缓冲区,但是对于页面的访问,则
// 需要通过mm模块才能实现将其分配到内存页面。
//
// 然后内核进行所有方 ......
到了main.c,其实main.c中的大部分的内容是调用函数来实现初始化的工作,但是还是将它看完了。下面就是代码了。主要参考的是linux内核完全注释,在一些不太明白的地方,参考网上的介绍。废话少说。还有很长的路啊。努力啊O(∩_∩)O~。
/*
* main.c功能描述。
*/
//main.c程序的主要功能是利用setup.s程序取得的系统参数设置系统的
// 的根文件设备号和一些全局变量。这些变量至两名了内存的开始地址
// 系统包含的内存容量和作为高速缓存区内存末端地址。如果还定义了
// 虚拟盘,则主存将会相应的减少。整个内存的镜像如下 :
//
// -------------------------------------------
// | kernel | buffer | ramdisk | main memory |
// -------------------------------------------
//
// 高速缓存部分还要扣除显存和rom bios占用的部分。高速缓冲区主要
// 是磁盘等设备的临时存放数据的场所。主存的区域主要是由内存管理
// 模块mm通过分页机制进行内存的管理分配,以4k字节为一个页单位。
// 内核程序可以直接访问自由的高速缓冲区,但是对于页面的访问,则
// 需要通过mm模块才能实现将其分配到内存页面。
//
// 然后内核进行所有方 ......
相关函数
fork,execve,waitpid,popen
表头文件
#i nclude<stdlib.h>
定义函数
int system(const char * string);
函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值
=-1:出现错误
=0:调用成功但是没有出现子进程
>0:成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值>。 如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。
附加说明
在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
范例
#i nclude<stdlib.h>
main()
{
system(“ls -al /etc/passwd /etc/shadow”);
}
执行结果:
-rw-r--r-- 1 root root 705 Sep 3 13 :52 ......
作者:刘洪涛,华清远见嵌入式学院讲师。
四、在内核里写i2c设备驱动的两种方式
前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。
(1) Adapter方式(LEGACY)
(下面的实例代码是在2.6.27内核的pca953x.c基础上修改的,原始代码采用的是本文将要讨论的第2种方式,即Probe方式)
● 构建i2c_driver
static struct i2c_driver pca953x_driver = {
.driver = {
.name= "pca953x", //名称
&nbs ......
作者:刘洪涛,华清远见嵌入式学院讲师。
四、在内核里写i2c设备驱动的两种方式
前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。
(1) Adapter方式(LEGACY)
(下面的实例代码是在2.6.27内核的pca953x.c基础上修改的,原始代码采用的是本文将要讨论的第2种方式,即Probe方式)
● 构建i2c_driver
static struct i2c_driver pca953x_driver = {
.driver = {
.name= "pca953x", //名称
&nbs ......