text: /*
  Navicat MySQL Data Transfer
  
  Source Server         : klfront
  Source Server Version : 50736
  Source Host           : 23.105.222.218:3306
  Source Database       : klcms-test
  
  Target Server Type    : MYSQL
  Target Server Version : 50736
  File Encoding         : 65001
  
  Date: 2022-02-19 23:09:50
  */
  
  SET FOREIGN_KEY_CHECKS=0;
  
  -- ----------------------------
  -- Table structure for article
  -- ----------------------------
  DROP TABLE IF EXISTS `article`;
  CREATE TABLE `article` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT,
    `title` varchar(64) DEFAULT NULL,
    `keyword` varchar(512) DEFAULT NULL,
    `content` text NOT NULL COMMENT 'Html内容',
    `text` text COMMENT '文本内容',
    `category_id` varchar(16) NOT NULL,
    `author` varchar(32) DEFAULT NULL,
    `create_time` datetime NOT NULL,
    `page_view` int(11) NOT NULL DEFAULT '0',
    `sort` int(11) NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`),
    KEY `Title` (`title`)
  ) ENGINE=MyISAM AUTO_INCREMENT=279 DEFAULT CHARSET=utf8;
  
  -- ----------------------------
  -- Records of article
  -- ----------------------------
  INSERT INTO `article` VALUES ('2', '程序员应该关注的数据库设计与编程规范', null, '<p>\r\n	本文主要涉及的以下几个方面：</p>\r\n<p>\r\n	1.&nbsp;数据库命名规范；</p>\r\n<p>\r\n	2.&nbsp;数据库设计范式；</p>\r\n<p>\r\n	3.&nbsp;数据库编程规范；</p>\r\n<p>\r\n	4.数据库设计和编程规范管理。</p>\r\n<h1>\r\n	<span style=\"font-size:18px;\">一、数据库命名规范</span></h1>\r\n<h2>\r\n	<span style=\"font-size:16px;\">1.1命名规范解析</span></h2>\r\n<p>\r\n	命名规范主要考虑如下几个方面：大小写、前后缀、组成部分、语义等的规范性。</p>\r\n<p>\r\n	大小写：根据特定情况使用Pascal&nbsp;或CamelCase命名法，请不要使用全部大写或全部小写，这会使您的同事在查看您的项目或阅读您编写的代码时异常的痛苦。</p>\r\n<p>\r\n	前后缀：函数、存储过程等名称常用，多用于描述所代表对象的性质、功能等，如存储过程名称的sp_&nbsp;，up_，_Select，_Delete等。</p>\r\n<p>\r\n	组成部分：相对复杂的名称可由多个基本部分组成，要求每部分都遵循命名规范，部分的组成和顺序要合理、便于理解。如up_User_DeleteById&nbsp;表示一个用户自定义存储过程，该存储过程针对User表进行操作的，具体功能是根据Id删除相应的记录。</p>\r\n<p>\r\n	语义：语义规范主要是要求命名能见文之义，每部分用准确的单词表示，尽量不用缩写，如果缩写，也要保证名称的可读性。不要使用字符的无意义组合。如表示产品名称使用ProductName，而不要使用PName、PdtName或ProdName等。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">1.2&nbsp;命名方式的选择</span></h2>\r\n<p>\r\n	Pascal&nbsp;命名法：第一个单字首字母采用大写字母；后续单字的首字母亦用大写字母。单字之间不以空格断开或连接号（-）、底线（_）连结。</p>\r\n<p>\r\n	CamelCase命名法：首字母小写，其他同Pascal命名法。</p>\r\n<p>\r\n	组合命名：由多部分组成，每部分遵循Pascal或CamelCase大大小写规范和及语义规范要求。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">1.3&nbsp;数据库命名规范</span></h2>\r\n<p>\r\n	这里数据库以Ms&nbsp;Sqlserver进行举例，其整体思想与C#中面向对象思想是一致的。如果将数据库、数据表、表中的字段分别与C#中类库、类、类的属性相对应，就很容易理解对数据库、数据表、表中的字段采用Pascal命名法的合理性。如果您使用过代码生成技术为数据库生成实体层、数据操作层、业务层的代码，或者使用过Entity&nbsp;Framework、NHibernate等ORM技术，您会体会到到这样规范的命名的好处。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">1.3.1&nbsp;数据库命名</span></h3>\r\n<p>\r\n	Pascal命名法：数据库库名，使用Pascal规则命名，即每部分单词首字符要大写。如：可用BookShop定义“图书商城”的库名。</p>\r\n<p>\r\n	组合命名：如果项目中涉及多个库，或者为便于管理不同项目的数据库，也可通过添加前缀采用组合命名方式。如用Children_BookShop定义“少儿图书商城”的库名，用Fashion_BookShop定义“时尚图书商城”的库名。组合命名的每部分也要遵循Pascal命名法规则。</p>\r\n<p>\r\n	例外：除非是IMS、CMS这样为大家所熟知的专业名词，对普通的单词不要使用全部大写。大写字符不符合人们的阅读习惯，会大大增加阅读和理解的难度。通常您需要将这些大写字符在脑海中“翻译”成小写，才会发现这一串陌生的字符原来是一个熟悉的单词。如：可用StudentIMS命名“学生信息管理系统”，LibraryIMS命名“图书信息管理系统”。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">1.3.2&nbsp;数据表命名</span></h3>\r\n<p>\r\n	Pascal命名法：使用Pascal规则命名，就像定义C#中的类名一样。表名一般不要加前缀（tb_也不要加，实在没有必要），尽量不要使用下划线。如用Book命名图书表，用Price命名价格表等。</p>\r\n<p>\r\n	组合命名：多表间的关系表可使用下划线连接，Re_Book_Author或R_Book_Author命名“图书与作者的关系表”，Re是Relative的缩写。</p>\r\n<p>\r\n	前缀例外：对于大型系统，有多个子系统（或多个模块），数据表非常多的情况，可按子系统（模块）缩写前缀 实际表名命名，二者间使用下划线连接。如：系统管理模块表使用Sys_开头，。</p>\r\n<p>\r\n	网上查过很多关于数据库命名的介绍，总说纷纭，让人莫衷一是。以下这篇文章比较难得，对其观点与笔者契合度达到90%以上，因此链接在此做个推荐。</p>\r\n<p>\r\n	<a href=\"http://www.360doc.com/content/12/0823/09/9318309_231847691.shtml\">http://www.360doc.com/content/12/0823/09/9318309_231847691.shtml</a></p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">1.3.3&nbsp;字段命名</span></h3>\r\n<p>\r\n	Pascal命名法：不要使用小写开头的CamelCase命名法，字段名不要加表名前缀。当您使用代码生成技术为表生成实体类时，这些字段的名称会被应用到实体的属性上。想像一下，如果属性以小写开头，或者以类名前缀开头（当字段以表名加下划线开头时），该有多糟糕！</p>\r\n<p>\r\n	弃用ID：使用“Id”不要使用“ID”。这里“Id”完全遵循了Pascal规则，也是现在推荐的用法，“ID”则是历史遗留的不规范的用法。在一个公司里不同的开发人员协同设计数据库时，出现Id和ID同事存在的情况。这种情况会相应的存在实体类中。在web开发，数据源转为Json格式数据后，前端页面取属性时可能因为Id的大小写弄错而导致前端页面的异常。</p>\r\n<p>\r\n	语义规范：如推荐使用”UserName”，而不是”Uname”。使用”Password“而不是”Pwd”。很多时候，字段的缩写不同程度的降低可读性，当多人协同设计时，因各自缩写风格不一致，该问题会更加突出。</p>\r\n<h2>\r\n	<span style=\"font-size:14px;\">1.3.4&nbsp;存储过程命名</span></h2>\r\n<p>\r\n	CamelCase命名法：使用首字母小写的驼峰命名法。命名构成及说明如下：</p>\r\n<p>\r\n	[proc][MainTableName]&nbsp;By&nbsp;[FieldName(optional)]&nbsp;[Action]</p>\r\n<p>\r\n	存储过程必须有proc、up等前缀，前缀选择由公司具体情况而定。</p>\r\n<p>\r\n	表名就是存储过程访问的对象；</p>\r\n<p>\r\n	条件部分：可选字段名就是条件子句；</p>\r\n<p>\r\n	最后的行为动词就是存储过程要执行的任务，Select、Insert、Update、Delete、Save（有更新和插入）、Output（返回输出参数或0）。</p>\r\n<p>\r\n	如：procUsersByNameGet、upUsersByNameGet。</p>\r\n<p>\r\n	组合命名：有下划线连接的多部分组合而成。各部分组成及说明如下：</p>\r\n<p>\r\n	&nbsp; up_[MainTableName]_[Action]By[FieldName(condition)]</p>\r\n<p>\r\n	构成说明同上。</p>\r\n<p>\r\n	up_Users_Get、up_Users_GetByName、up_Users_Delete</p>\r\n<p>\r\n	关于sp_:</p>\r\n<p>\r\n	推荐不使用这样的前缀，因为会稍微的减慢。任何的系统存储过程都有前缀\"sp_\"，即使当前数据库中存在带&nbsp;sp_&nbsp;前缀的用户自定义的存储过程，总会先检查&nbsp;master&nbsp;数据库。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">1.3.5&nbsp;函数命名</span></h3>\r\n<p>\r\n	格式：fn_Name&nbsp;或func_Name，建议根据企业实际情况确定统一的前缀。&nbsp;</p>\r\n<p>\r\n	前缀用来标志这是一个函数，用以与系统函数相区别。Name则根据函数功能进行命名，一个或多个单词都可，Name部分遵循Pascal命名法。</p>\r\n<p>\r\n	有见到函数名所有字符大写的情况，从规范性和可读性角度考虑，不赞同这种命名习惯。</p>\r\n<h1>\r\n	<span style=\"font-size:18px;\">二、数据库设计规范</span></h1>\r\n<p>\r\n	这里讨论的关系型数据库的设计应遵循的基本规范，NoSql不在本次讨论范围内。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">2.1&nbsp;数据库设计三大范式</span></h2>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.1.1&nbsp;列的原子性</span></h3>\r\n<p>\r\n	&nbsp;第一范式（1NF），即每个属性都是不可再分的最小数据单元（不能是多个单元的组合）。</p>\r\n<p>\r\n	例如：假定一件物品的描述，包含尺寸和颜色两个方面的信息。这时应该做为分开的两个属性来定义，虽然很多情况下二者的组合最终来确定这件物品的型号。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.1.2&nbsp;主键依赖</span></h3>\r\n<p>\r\n	表内的每一行数据都应该被唯一标志（有唯一键）。</p>\r\n<p>\r\n	满足第二范式（2NF）必须先满足第一范式（1NF）。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.1.3 消除传递依赖</span></h3>\r\n<p>\r\n	表内不应该存在依赖于其他键（非主键）的非键属性，所有非主键属性应该只依赖于主键。简而言之，第二范式就是非主属性非部分依赖于主关键字。</p>\r\n<p>\r\n	满足第三范式（3NF）必须先满足第二范式（2NF）。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">2.2 违反三大范式的情况</span></h2>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.2.1&nbsp;第一范式</span></h3>\r\n<p>\r\n	第一范式，应该是也很容易理解，也很容易做到的，在建表时确保字段代表的属性不可拆分就行了。</p>\r\n<p>\r\n	举个例子，有一张用户信息表，已有联系电话字段(命名为Telephone)，存储的是用户办公电话号码。可能有一天，开发部接到一个紧急的需求：因为有时需要在下班时间联系用户，因此需要存储用户的家庭电话号码，而且时间很紧急，希望马上改出来。有的人可能提出类似这样的方案：页面上加一个文本框用来输入家庭号码，存储时与办公电话号码用分好（；）或竖线（|）拼接起来，存到Telephone这一列，查询的时候Split处理一下就好了。数据库，数据访问层，业务层全都不用变了，只要改改界面，几分钟就好，“省事”，“高效”。于是，第一范式在这里失守了！</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.2.2 第二范式</span></h3>\r\n<p>\r\n	建表不设主键，这样就违反了第二范式。情况可能有两种：</p>\r\n<p>\r\n	1.&nbsp;建表时有设计Id，或有可以做为主键用的字段，但是没有给表设主键。这种情况有可能是设计者无意忘记了，也有可能是习惯性的做法。</p>\r\n<p>\r\n	2.&nbsp;建表时没有专门设计可以用作主键的字段，也没有任何字段符合做为主键用的条件。这种情况有可能会造成很麻烦的问题。</p>\r\n<p>\r\n	以上两种情况是本人在一些项目中遇到过的，是确有其事的。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.2.3 第三范式</span></h3>\r\n<p>\r\n	前面两种情况设计上的不规范问题，一般提出来都会被接受，因为能避免一些不必要的麻烦。相比前面两种情况，违反第三范式有时似乎直接被忽视。一些设计者或开发人员为了查询数据的便利，直接忽视该范式，坚持要保留一些冗余字段。</p>\r\n<p>\r\n	比如一张业务表中已经有城市表的主键字段（CityId），非要再定义一个城市名称字段（CityName），虽然在City表中可以通过CityId确定CityName了。因为这样在查询的时候，就不用join了，能直接从业务表查出想要的城市名称。</p>\r\n<p>\r\n	这种不合理的设计可能会长期沿用而得不到修正，而新的冗余字段又在不断产生，最终引发数据的一致性问题。</p>\r\n<h2>\r\n	<span style=\"font-size: 16px;\">2.3&nbsp;数据库三大范式的重要性</span></h2>\r\n<p>\r\n	而关系型数据库设计初衷就是为了是数据存储更结构化、更有序。只要这样才能支持高效的查询和灵活的扩展，也只有这样才能支撑复杂的应用软件系统。</p>\r\n<p>\r\n	满足设计范式的数据库是简洁的、结构明晰的，不会发生插入、删除和更新产生操作异常。反之则是混乱的，不仅给数据库的编程人员制造麻烦，而且可能存储了大量不需要的冗余信息。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.3.1关于第一范式</span></h3>\r\n<p>\r\n	第一范式（1NF）是对关系模式的基本要求，不满足第一范式（1NF）的数据库就不是关系数据库。</p>\r\n<p>\r\n	在一个字段中通过分隔符拼接多项属性的做法，是一种极其不负责任的偷懒的做法。当数据库中这种不规范的情况不断增多，系统业务逐渐复杂，工程代码量不断增大，开发人员不断更替，系统后期的维护和扩展将会越来越困难，而系统业务越复杂，这种弊端也就越明显。而当系统长时间运行后，即便想要修正这些问题，也会投鼠忌器了。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.3.2&nbsp;第二范式的作用</span></h3>\r\n<p>\r\n	对于没有主键的表，其他表无法将其做为子表的使用。</p>\r\n<p>\r\n	按条件分页查询，跳过多少行时通常需要用到主键，没有主键将会很麻烦。</p>\r\n<p>\r\n	ORM或都会需要用到主键，如果有的表没有主键，可能影响方案的应用。而没有主键可能导致使用代码生成技术批量生成底层基础代码时异常。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">2.3.3&nbsp;关于第三范式</span></h3>\r\n<p>\r\n	违反第三范式会导致数据库中产生大量的冗余数据，同时也让人编程的时候感到无所适从。</p>\r\n<p>\r\n	如上面的例子中，假设City表中某个城市的名称发生变化了，要在业务表中去更新所有的业务记录中的城市名称，否则将会导致同一个城市在系统中不同地方的名称不一致。而这增加的是完全不必要的工作。另外当需要按城市条件筛选数据时，有的人可能用CityId比较，有的可能会用CityName去比较，会造成一些混乱。如果不幸用的CityName，碰巧城市表中某个城市的名称改变了，如果业务表没有即时更新过来，就会导致某些功能这里的筛选失效。这实际上也是增加了整个系统的耦合性，让系统变得更脆弱了。</p>\r\n<h1>\r\n	<span style=\"font-size:18px;\">三、数据库编程规范</span></h1>\r\n<h2>\r\n	<span style=\"font-size:16px;\">3.1&nbsp;存储过程的使用</span></h2>\r\n<h3>\r\n	<span style=\"font-size:14px;\">3.1.1存储过程特点</span></h3>\r\n<p>\r\n	优点：</p>\r\n<p>\r\n	经过预编译，查询快。</p>\r\n<p>\r\n	存储过程中可定义变量、临时表，可使用游标等，处理复杂查询及对查询进行二次处理。</p>\r\n<p>\r\n	对于C/S架构系统，方便扩展和修改业务，特别避免了客户端重新编译和更新的麻烦。</p>\r\n<p>\r\n	缺点：</p>\r\n<p>\r\n	可移植性差，从sql&nbsp;server换成mysql或Oracle，移植处理存储过程麻烦。</p>\r\n<p>\r\n	降低程序的可读性、增加调试的难度。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">3.1.2存储过程使用原则</span></h3>\r\n<p>\r\n	通常的情况，简单的增删查改不要使用存储过程。过多使用存储过程降低了程序可读性，也增加维护存储过程的工作。</p>\r\n<p>\r\n	没有特殊的必要，不要将过多的业务逻辑全部放到一个存储过程里面（使用存储过程处理复杂的查询而不是处理大量的业务逻辑和判断）。</p>\r\n<h3>\r\n	<span style=\"font-size:14px;\">3.1.3存储过程使用场景</span></h3>\r\n<p>\r\n	批量查询：在程序中的需多次调用方法，多次连接查询，在存储过程只要一次连接，实现批量查询。</p>\r\n<p>\r\n	分页查询：方便处理多条件、多表联合查询，并做分页处理的操作。</p>\r\n<p>\r\n	复杂查询：存储过程中可以方便的使用游标、临时表等来处理比较复杂的统计和汇总。普通的Sql语句难以实现复杂的查询，Sql语句写复杂了难以理解和维护。</p>\r\n<p>\r\n	C/S架构缓解网络带宽：对于批量执行SQL语句，而从客户端发送存储过程名称和参数请求，不用发送所有的Sql语句。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">3.2&nbsp;触发器的使用</span></h2>\r\n<p>\r\n	触发器对并发性能影响太大，Web开发中一般不使用触发器。</p>\r\n<p>\r\n	C/S架构的特殊项目有使用触发器的情况。不过一般情况能不用就不用。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">3.3&nbsp;外键关联的使用</span></h2>\r\n<p>\r\n	&nbsp;使用了外键关联，删除和修改是都必须考虑外键约束，给开发增加麻烦。</p>\r\n<p>\r\n	&nbsp;一些业务复杂的企业级系统中有用外键关联保证数据的完整和一致。</p>\r\n<p>\r\n	&nbsp;从性能角度考虑，没有特殊的必要，Web开发中一般不建议使用外键关联。</p>\r\n<h1>\r\n	<span style=\"font-size:16px;\">四、数据库设计与编程规范管理</span></h1>\r\n<h2>\r\n	<span style=\"font-size:16px;\">4.1&nbsp;级别限制</span></h2>\r\n<p>\r\n	有专门的人员负责数据库的设计和编程工作，严格从源头保证数据库结构和代码的纯净和规范。</p>\r\n<p>\r\n	问题：中小企业人手不够，通常开发人员会同时负责各个环节，较难落实专人负责制度。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">4.2&nbsp;审核机制</span></h2>\r\n<p>\r\n	放宽参与设计人员的限制，但是所有参与者的设计要通过负责人员的审核，才能生效投入使用。</p>\r\n<h2>\r\n	<span style=\"font-size:16px;\">4.3&nbsp;培训与规范要求</span></h2>\r\n<p>\r\n	如果以上两点都无法得到较好地落实，至少应该对参与设计的人员进行必要的培训，要求大家自觉遵守规范。</p>\r\n<p>\r\n	公司制定统一的规范，应强制要求员工遵守，不可随意违反规范进行设计。员工对规范有意见或建议，可以提出，公司可采纳合理的建议对规范进行修订。</p>\r\n<p>\r\n	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (全文完)</p>\r\n<p align=\"center\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><strong>（转载本文请注明作者和出处 <a href=\"http://www.iprogram.com.cn/\">i 编程网-iprogram.com.cn</a> ，请勿用于任何商业用途）</strong></span></font></span></font></span></font></span></font></span></p>\r\n<p>\r\n	&nbsp;</p>\r\n', '本文主要涉及的以下几个方面：\r\n\r\n	1.&nbsp;数据库命名规范；\r\n\r\n	2.&nbsp;数据库设计范式；\r\n\r\n	3.&nbsp;数据库编程规范；\r\n\r\n	4.数据库设计和编程规范管理。\r\n\r\n	一、数据库命名规范\r\n\r\n	1.1命名规范解析\r\n\r\n	命名规范主要考虑如下几个方面：大小写、前后缀、组成部分、语义等的规范性。\r\n\r\n	大小写：根据特定情况使用Pascal&nbsp;或CamelCase命名法，请不要使用全部大写或全部小写，这会使您的同事在查看您的项目或阅读您编写的代码时异常的痛苦。\r\n\r\n	前后缀：函数、存储过程等名称常用，多用于描述所代表对象的性质、功能等，如存储过程名称的sp_&nbsp;，up_，_Select，_Delete等。\r\n\r\n	组成部分：相对复杂的名称可由多个基本部分组成，要求每部分都遵循命名规范，部分的组成和顺序要合理、便于理解。如up_User_DeleteById&nbsp;表示一个用户自定义存储过程，该存储过程针对User表进行操作的，具体功能是根据Id删除相应的记录。\r\n\r\n	语义：语义规范主要是要求命名能见文之义，每部分用准确的单词表示，尽量不用缩写，如果缩写，也要保证名称的可读性。不要使用字符的无意义组合。如表示产品名称使用ProductName，而不要使用PName、PdtName或ProdName等。\r\n\r\n	1.2&nbsp;命名方式的选择\r\n\r\n	Pascal&nbsp;命名法：第一个单字首字母采用大写字母；后续单字的首字母亦用大写字母。单字之间不以空格断开或连接号（-）、底线（_）连结。\r\n\r\n	CamelCase命名法：首字母小写，其他同Pascal命名法。\r\n\r\n	组合命名：由多部分组成，每部分遵循Pascal或CamelCase大大小写规范和及语义规范要求。\r\n\r\n	1.3&nbsp;数据库命名规范\r\n\r\n	这里数据库以Ms&nbsp;Sqlserver进行举例，其整体思想与C#中面向对象思想是一致的。如果将数据库、数据表、表中的字段分别与C#中类库、类、类的属性相对应，就很容易理解对数据库、数据表、表中的字段采用Pascal命名法的合理性。如果您使用过代码生成技术为数据库生成实体层、数据操作层、业务层的代码，或者使用过Entity&nbsp;Framework、NHibernate等ORM技术，您会体会到到这样规范的命名的好处。\r\n\r\n	1.3.1&nbsp;数据库命名\r\n\r\n	Pascal命名法：数据库库名，使用Pascal规则命名，即每部分单词首字符要大写。如：可用BookShop定义“图书商城”的库名。\r\n\r\n	组合命名：如果项目中涉及多个库，或者为便于管理不同项目的数据库，也可通过添加前缀采用组合命名方式。如用Children_BookShop定义“少儿图书商城”的库名，用Fashion_BookShop定义“时尚图书商城”的库名。组合命名的每部分也要遵循Pascal命名法规则。\r\n\r\n	例外：除非是IMS、CMS这样为大家所熟知的专业名词，对普通的单词不要使用全部大写。大写字符不符合人们的阅读习惯，会大大增加阅读和理解的难度。通常您需要将这些大写字符在脑海中“翻译”成小写，才会发现这一串陌生的字符原来是一个熟悉的单词。如：可用StudentIMS命名“学生信息管理系统”，LibraryIMS命名“图书信息管理系统”。\r\n\r\n	1.3.2&nbsp;数据表命名\r\n\r\n	Pascal命名法：使用Pascal规则命名，就像定义C#中的类名一样。表名一般不要加前缀（tb_也不要加，实在没有必要），尽量不要使用下划线。如用Book命名图书表，用Price命名价格表等。\r\n\r\n	组合命名：多表间的关系表可使用下划线连接，Re_Book_Author或R_Book_Author命名“图书与作者的关系表”，Re是Relative的缩写。\r\n\r\n	前缀例外：对于大型系统，有多个子系统（或多个模块），数据表非常多的情况，可按子系统（模块）缩写前缀 实际表名命名，二者间使用下划线连接。如：系统管理模块表使用Sys_开头，。\r\n\r\n	网上查过很多关于数据库命名的介绍，总说纷纭，让人莫衷一是。以下这篇文章比较难得，对其观点与笔者契合度达到90%以上，因此链接在此做个推荐。\r\n\r\n	http://www.360doc.com/content/12/0823/09/9318309_231847691.shtml\r\n\r\n	1.3.3&nbsp;字段命名\r\n\r\n	Pascal命名法：不要使用小写开头的CamelCase命名法，字段名不要加表名前缀。当您使用代码生成技术为表生成实体类时，这些字段的名称会被应用到实体的属性上。想像一下，如果属性以小写开头，或者以类名前缀开头（当字段以表名加下划线开头时），该有多糟糕！\r\n\r\n	弃用ID：使用“Id”不要使用“ID”。这里“Id”完全遵循了Pascal规则，也是现在推荐的用法，“ID”则是历史遗留的不规范的用法。在一个公司里不同的开发人员协同设计数据库时，出现Id和ID同事存在的情况。这种情况会相应的存在实体类中。在web开发，数据源转为Json格式数据后，前端页面取属性时可能因为Id的大小写弄错而导致前端页面的异常。\r\n\r\n	语义规范：如推荐使用”UserName”，而不是”Uname”。使用”Password“而不是”Pwd”。很多时候，字段的缩写不同程度的降低可读性，当多人协同设计时，因各自缩写风格不一致，该问题会更加突出。\r\n\r\n	1.3.4&nbsp;存储过程命名\r\n\r\n	CamelCase命名法：使用首字母小写的驼峰命名法。命名构成及说明如下：\r\n\r\n	[proc][MainTableName]&nbsp;By&nbsp;[FieldName(optional)]&nbsp;[Action]\r\n\r\n	存储过程必须有proc、up等前缀，前缀选择由公司具体情况而定。\r\n\r\n	表名就是存储过程访问的对象；\r\n\r\n	条件部分：可选字段名就是条件子句；\r\n\r\n	最后的行为动词就是存储过程要执行的任务，Select、Insert、Update、Delete、Save（有更新和插入）、Output（返回输出参数或0）。\r\n\r\n	如：procUsersByNameGet、upUsersByNameGet。\r\n\r\n	组合命名：有下划线连接的多部分组合而成。各部分组成及说明如下：\r\n\r\n	&nbsp; up_[MainTableName]_[Action]By[FieldName(condition)]\r\n\r\n	构成说明同上。\r\n\r\n	up_Users_Get、up_Users_GetByName、up_Users_Delete\r\n\r\n	关于sp_:\r\n\r\n	推荐不使用这样的前缀，因为会稍微的减慢。任何的系统存储过程都有前缀\"sp_\"，即使当前数据库中存在带&nbsp;sp_&nbsp;前缀的用户自定义的存储过程，总会先检查&nbsp;master&nbsp;数据库。\r\n\r\n	1.3.5&nbsp;函数命名\r\n\r\n	格式：fn_Name&nbsp;或func_Name，建议根据企业实际情况确定统一的前缀。&nbsp;\r\n\r\n	前缀用来标志这是一个函数，用以与系统函数相区别。Name则根据函数功能进行命名，一个或多个单词都可，Name部分遵循Pascal命名法。\r\n\r\n	有见到函数名所有字符大写的情况，从规范性和可读性角度考虑，不赞同这种命名习惯。\r\n\r\n	二、数据库设计规范\r\n\r\n	这里讨论的关系型数据库的设计应遵循的基本规范，NoSql不在本次讨论范围内。\r\n\r\n	2.1&nbsp;数据库设计三大范式\r\n\r\n	2.1.1&nbsp;列的原子性\r\n\r\n	&nbsp;第一范式（1NF），即每个属性都是不可再分的最小数据单元（不能是多个单元的组合）。\r\n\r\n	例如：假定一件物品的描述，包含尺寸和颜色两个方面的信息。这时应该做为分开的两个属性来定义，虽然很多情况下二者的组合最终来确定这件物品的型号。\r\n\r\n	2.1.2&nbsp;主键依赖\r\n\r\n	表内的每一行数据都应该被唯一标志（有唯一键）。\r\n\r\n	满足第二范式（2NF）必须先满足第一范式（1NF）。\r\n\r\n	2.1.3 消除传递依赖\r\n\r\n	表内不应该存在依赖于其他键（非主键）的非键属性，所有非主键属性应该只依赖于主键。简而言之，第二范式就是非主属性非部分依赖于主关键字。\r\n\r\n	满足第三范式（3NF）必须先满足第二范式（2NF）。\r\n\r\n	2.2 违反三大范式的情况\r\n\r\n	2.2.1&nbsp;第一范式\r\n\r\n	第一范式，应该是也很容易理解，也很容易做到的，在建表时确保字段代表的属性不可拆分就行了。\r\n\r\n	举个例子，有一张用户信息表，已有联系电话字段(命名为Telephone)，存储的是用户办公电话号码。可能有一天，开发部接到一个紧急的需求：因为有时需要在下班时间联系用户，因此需要存储用户的家庭电话号码，而且时间很紧急，希望马上改出来。有的人可能提出类似这样的方案：页面上加一个文本框用来输入家庭号码，存储时与办公电话号码用分好（；）或竖线（|）拼接起来，存到Telephone这一列，查询的时候Split处理一下就好了。数据库，数据访问层，业务层全都不用变了，只要改改界面，几分钟就好，“省事”，“高效”。于是，第一范式在这里失守了！\r\n\r\n	2.2.2 第二范式\r\n\r\n	建表不设主键，这样就违反了第二范式。情况可能有两种：\r\n\r\n	1.&nbsp;建表时有设计Id，或有可以做为主键用的字段，但是没有给表设主键。这种情况有可能是设计者无意忘记了，也有可能是习惯性的做法。\r\n\r\n	2.&nbsp;建表时没有专门设计可以用作主键的字段，也没有任何字段符合做为主键用的条件。这种情况有可能会造成很麻烦的问题。\r\n\r\n	以上两种情况是本人在一些项目中遇到过的，是确有其事的。\r\n\r\n	2.2.3 第三范式\r\n\r\n	前面两种情况设计上的不规范问题，一般提出来都会被接受，因为能避免一些不必要的麻烦。相比前面两种情况，违反第三范式有时似乎直接被忽视。一些设计者或开发人员为了查询数据的便利，直接忽视该范式，坚持要保留一些冗余字段。\r\n\r\n	比如一张业务表中已经有城市表的主键字段（CityId），非要再定义一个城市名称字段（CityName），虽然在City表中可以通过CityId确定CityName了。因为这样在查询的时候，就不用join了，能直接从业务表查出想要的城市名称。\r\n\r\n	这种不合理的设计可能会长期沿用而得不到修正，而新的冗余字段又在不断产生，最终引发数据的一致性问题。\r\n\r\n	2.3&nbsp;数据库三大范式的重要性\r\n\r\n	而关系型数据库设计初衷就是为了是数据存储更结构化、更有序。只要这样才能支持高效的查询和灵活的扩展，也只有这样才能支撑复杂的应用软件系统。\r\n\r\n	满足设计范式的数据库是简洁的、结构明晰的，不会发生插入、删除和更新产生操作异常。反之则是混乱的，不仅给数据库的编程人员制造麻烦，而且可能存储了大量不需要的冗余信息。\r\n\r\n	2.3.1关于第一范式\r\n\r\n	第一范式（1NF）是对关系模式的基本要求，不满足第一范式（1NF）的数据库就不是关系数据库。\r\n\r\n	在一个字段中通过分隔符拼接多项属性的做法，是一种极其不负责任的偷懒的做法。当数据库中这种不规范的情况不断增多，系统业务逐渐复杂，工程代码量不断增大，开发人员不断更替，系统后期的维护和扩展将会越来越困难，而系统业务越复杂，这种弊端也就越明显。而当系统长时间运行后，即便想要修正这些问题，也会投鼠忌器了。\r\n\r\n	2.3.2&nbsp;第二范式的作用\r\n\r\n	对于没有主键的表，其他表无法将其做为子表的使用。\r\n\r\n	按条件分页查询，跳过多少行时通常需要用到主键，没有主键将会很麻烦。\r\n\r\n	ORM或都会需要用到主键，如果有的表没有主键，可能影响方案的应用。而没有主键可能导致使用代码生成技术批量生成底层基础代码时异常。\r\n\r\n	2.3.3&nbsp;关于第三范式\r\n\r\n	违反第三范式会导致数据库中产生大量的冗余数据，同时也让人编程的时候感到无所适从。\r\n\r\n	如上面的例子中，假设City表中某个城市的名称发生变化了，要在业务表中去更新所有的业务记录中的城市名称，否则将会导致同一个城市在系统中不同地方的名称不一致。而这增加的是完全不必要的工作。另外当需要按城市条件筛选数据时，有的人可能用CityId比较，有的可能会用CityName去比较，会造成一些混乱。如果不幸用的CityName，碰巧城市表中某个城市的名称改变了，如果业务表没有即时更新过来，就会导致某些功能这里的筛选失效。这实际上也是增加了整个系统的耦合性，让系统变得更脆弱了。\r\n\r\n	三、数据库编程规范\r\n\r\n	3.1&nbsp;存储过程的使用\r\n\r\n	3.1.1存储过程特点\r\n\r\n	优点：\r\n\r\n	经过预编译，查询快。\r\n\r\n	存储过程中可定义变量、临时表，可使用游标等，处理复杂查询及对查询进行二次处理。\r\n\r\n	对于C/S架构系统，方便扩展和修改业务，特别避免了客户端重新编译和更新的麻烦。\r\n\r\n	缺点：\r\n\r\n	可移植性差，从sql&nbsp;server换成mysql或Oracle，移植处理存储过程麻烦。\r\n\r\n	降低程序的可读性、增加调试的难度。\r\n\r\n	3.1.2存储过程使用原则\r\n\r\n	通常的情况，简单的增删查改不要使用存储过程。过多使用存储过程降低了程序可读性，也增加维护存储过程的工作。\r\n\r\n	没有特殊的必要，不要将过多的业务逻辑全部放到一个存储过程里面（使用存储过程处理复杂的查询而不是处理大量的业务逻辑和判断）。\r\n\r\n	3.1.3存储过程使用场景\r\n\r\n	批量查询：在程序中的需多次调用方法，多次连接查询，在存储过程只要一次连接，实现批量查询。\r\n\r\n	分页查询：方便处理多条件、多表联合查询，并做分页处理的操作。\r\n\r\n	复杂查询：存储过程中可以方便的使用游标、临时表等来处理比较复杂的统计和汇总。普通的Sql语句难以实现复杂的查询，Sql语句写复杂了难以理解和维护。\r\n\r\n	C/S架构缓解网络带宽：对于批量执行SQL语句，而从客户端发送存储过程名称和参数请求，不用发送所有的Sql语句。\r\n\r\n	3.2&nbsp;触发器的使用\r\n\r\n	触发器对并发性能影响太大，Web开发中一般不使用触发器。\r\n\r\n	C/S架构的特殊项目有使用触发器的情况。不过一般情况能不用就不用。\r\n\r\n	3.3&nbsp;外键关联的使用\r\n\r\n	&nbsp;使用了外键关联，删除和修改是都必须考虑外键约束，给开发增加麻烦。\r\n\r\n	&nbsp;一些业务复杂的企业级系统中有用外键关联保证数据的完整和一致。\r\n\r\n	&nbsp;从性能角度考虑，没有特殊的必要，Web开发中一般不建议使用外键关联。\r\n\r\n	四、数据库设计与编程规范管理\r\n\r\n	4.1&nbsp;级别限制\r\n\r\n	有专门的人员负责数据库的设计和编程工作，严格从源头保证数据库结构和代码的纯净和规范。\r\n\r\n	问题：中小企业人手不够，通常开发人员会同时负责各个环节，较难落实专人负责制度。\r\n\r\n	4.2&nbsp;审核机制\r\n\r\n	放宽参与设计人员的限制，但是所有参与者的设计要通过负责人员的审核，才能生效投入使用。\r\n\r\n	4.3&nbsp;培训与规范要求\r\n\r\n	如果以上两点都无法得到较好地落实，至少应该对参与设计的人员进行必要的培训，要求大家自觉遵守规范。\r\n\r\n	公司制定统一的规范，应强制要求员工遵守，不可随意违反规范进行设计。员工对规范有意见或建议，可以提出，公司可采纳合理的建议对规范进行修订。\r\n\r\n	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (全文完)\r\n\r\n	（转载本文请注明作者和出处 i 编程网-iprogram.com.cn ，请勿用于任何商业用途）\r\n\r\n	&nbsp;', '020105', 'king', '2014-07-31 02:45:13', '0', '0');
  INSERT INTO `article` VALUES ('3', 'Windows7系统中IIS7.5上部署MVC', null, '<p class=\"p17\" style=\"line-height: 150%; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\">这是我之前发表在博客园上的一篇文章，现将其移到本站下，并做了一些修改。本文在博客园的地址：</span><span><a href=\"http://www.cnblogs.com/Extreme/archive/2013/03/09/2951002.html\"><span class=\"16\" style=\"font-family: \'宋体\'; color: rgb(0,0,255); text-decoration: underline; mso-spacerun: \'yes\'\">http://www.cnblogs.com/Extreme/archive/2013/03/09/2951002.html</span></a></span><span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></p>\r\n<p class=\"p17\" style=\"line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">这段时间在用<font face=\"Times New Roman\">MVC</font><font face=\"宋体\">写一个导游网站，在</font><font face=\"Times New Roman\">Window7</font></span><span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\">的</span><span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\">IIS7.5</span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">上部署的时候，遇到和处理了一些问题。</span><span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\">（以下截图是在</span><span style=\"font-family: \'宋体\'; font-size: 12pt; mso-spacerun: \'yes\'\">Windows&nbsp;8<font face=\"宋体\">下完成的，也就是说该部署方案同样适用于</font><font face=\"Times New Roman\">Windows8</font><font face=\"宋体\">下的</font><font face=\"Times New Roman\">IIS7.5</font><font face=\"宋体\">部署。）</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></p>\r\n<p class=\"p17\" style=\"line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">现将完整的过程整理出来，供大家参考<font face=\"Times New Roman\">:</font></span></p>\r\n<p class=\"p17\" style=\"line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p17\" style=\"text-align: left; line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 16px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">一、部署准备：</span></span></p>\r\n<p class=\"p17\" style=\"text-align: left; line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p17\" style=\"text-align: left; line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">1.<font face=\"宋体\">安装</font><font face=\"Times New Roman\">Microsoft&nbsp;.net&nbsp;FrameWork&nbsp;4.0</font><font face=\"宋体\">包</font></span></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></p>\r\n<p class=\"p17\" style=\"text-align: left; line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">2.<font face=\"宋体\">安装</font><font face=\"Times New Roman\">ASP.NET&nbsp;MVC&nbsp;3.0</font></span></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></p>\r\n<p class=\"p17\" style=\"text-align: left; line-height: 150%; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">3.<font face=\"宋体\">发布</font><font face=\"Times New Roman\">MVC</font><font face=\"宋体\">网站应用程序（或将发布好的目录拷贝到</font><font face=\"Times New Roman\">IIS</font><font face=\"宋体\">所在电脑）</font></span></span></p>\r\n<p>\r\n	<img src=\"/Upload/Images/2014/8/5/9A6C27D14E522C23BF71C8535008168C.jpg\" /></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 16px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">二、<font face=\"Times New Roman\">IIS7.5</font><font face=\"宋体\">部署</font></span></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">1.&nbsp;<font face=\"宋体\">修改</font><font face=\"Times New Roman\">ISAPI</font><font face=\"宋体\">和</font><font face=\"Times New Roman\">CGI</font><font face=\"宋体\">限制</font></span></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/ECB33D2B9A2F61F588FCFB44CC9F2B84.jpg\" /></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<!--EndFragment-->\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">如果<strong>&nbsp;</strong></span><strong><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">Asp.NET&nbsp;v4.0.30319</span></strong><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><strong>&nbsp;</strong>的<font face=\"Times New Roman\">&ldquo;</font><font face=\"宋体\">限制</font><font face=\"Times New Roman\">&rdquo;</font><font face=\"宋体\">为</font><font face=\"Times New Roman\">&ldquo;</font><font face=\"宋体\">不允许</font><font face=\"Times New Roman\">&rdquo;</font><font face=\"宋体\">，将其更改为</font><font face=\"Times New Roman\">&ldquo;</font><font face=\"宋体\">允许</font><font face=\"Times New Roman\">&rdquo;</font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><img src=\"/Upload/Images/2014/8/5/47FCEC40A4992B42D823E3196D707EA5.jpg\" /></font></span></p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">修改后，如下图所示：</span></p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><img src=\"/Upload/Images/2014/8/5/14A17C0794ED06ED454E6D205814C02A.jpg\" /></span></p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">2.&nbsp;<font face=\"宋体\">在应用程序上</font><font face=\"Times New Roman\">&ldquo;</font><font face=\"宋体\">添加应用程序池</font><font face=\"Times New Roman\">&rdquo;</font><font face=\"宋体\">并选择</font><font face=\"Times New Roman\">.Net&nbsp;Framework&nbsp;v4.0.30319</font><font face=\"宋体\">版本</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">这里命名为<font face=\"Times New Roman\">&ldquo;Asp.Net&nbsp;v4.0&rdquo;</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></span></p>\r\n<p>\r\n	<span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><!--EndFragment--><img src=\"/Upload/Images/2014/8/5/0D37B17ACB71687D638E42EFB66A9342.jpg\" /></span><!--EndFragment--><!--EndFragment--></p>\r\n<div id=\"cke_pastebin\" style=\"position: absolute; width: 1px; height: 1px; overflow: hidden; top: 776px; left: -1000px\">\r\n	<img src=\"/Upload/Images/2014/8/5/47FCEC40A4992B42D823E3196D707EA5.jpg\" /></div>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">3.&nbsp;<font face=\"宋体\">右击网站</font><font face=\"Times New Roman\">&ldquo;</font><font face=\"宋体\">添加网站</font><font face=\"Times New Roman\">&rdquo;</font></span></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><img src=\"/Upload/Images/2014/8/5/A6AE138211D7599DFD27DCEF49650454.jpg\" /></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	&nbsp;</p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">物理路径选择<font face=\"Times New Roman\">MVC</font><font face=\"宋体\">网站应用程序发布版本的目录</font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\">&nbsp;</font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/C3E8BB52829085E9223E545A065A87EA.jpg\" /></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\">&nbsp;</font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">4.<font face=\"宋体\">为网站选择应用程序池</font></span></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/E6553FD984707ACEBA8860E82E5E07A3.jpg\" /><img height=\"373\" src=\"/Upload/Images/2014/8/5/42BCAEE187E4699A20ABCC254BA422D7.jpg\" style=\"width: 412px; height: 359px\" width=\"420\" /></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">至此，部署完毕！如下：</span></font></span></font></span></p>\r\n<p class=\"p15\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p>\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><!--EndFragment--></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/62CFDC52859190FD984EB85CAE827C7F.jpg\" /></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 16px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">三、常见异常处理：</span></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 16px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">1.&nbsp;.Net&nbsp;framework&nbsp;4.0<font face=\"宋体\">注册问题</font></span></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 16px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">报错及提示：</span></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">&ldquo;<font face=\"宋体\">未能从程序集</font><font face=\"Times New Roman\">&ldquo;System.ServiceModel,&nbsp;Version=3.0.0.0,&nbsp;Culture=neutral,</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">PublicKeyToken=b77a5c561934e089&rdquo;<font face=\"宋体\">中加载类型</font><font face=\"Times New Roman\">&ldquo;System.ServiceModel.Activation.HttpModule&rdquo;</font><font face=\"宋体\">。</font><font face=\"Times New Roman\">&rdquo;</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">解决：</span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">这里出现版本问题，加载<font face=\"Times New Roman\">3.0</font><font face=\"宋体\">的</font><font face=\"Times New Roman\">dll</font><font face=\"宋体\">现象。据说是因为先安装</font><font face=\"Times New Roman\">.Net&nbsp;framework&nbsp;4.0</font><font face=\"宋体\">后安装</font><font face=\"Times New Roman\">IIS7.5&nbsp;</font><font face=\"宋体\">的原因。</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">于是重新使用<font face=\"Times New Roman\">Net&nbsp;framework&nbsp;4.0</font><font face=\"宋体\">的</font><font face=\"Times New Roman\">aspnet_regiis.exe</font><font face=\"宋体\">重新注册</font><font face=\"Times New Roman\">.Net&nbsp;framework&nbsp;4.0</font><font face=\"宋体\">。</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">运行&nbsp;<font face=\"Times New Roman\">CMD</font><font face=\"宋体\">后进入</font><font face=\"Times New Roman\">&ldquo;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319&rdquo;</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">执行语句为：<font face=\"Times New Roman\">&ldquo;aspnet_regiis.exe&nbsp;&ndash;iru&rdquo;</font></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><img src=\"/Upload/Images/2014/8/5/8071D089CC55262DA078394A80088275.jpg\" /></font></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><span style=\"font-size: 14px\">2.&nbsp;<font face=\"宋体\">扩展名被禁用的问题</font></span></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 14px\"><span style=\"font-family: \'Times New Roman\'; mso-spacerun: \'yes\'\"><o:p></o:p></span></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">报错：<font face=\"Times New Roman\">404.7&nbsp;</font></span></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 14px\">请求筛选规则禁用了扩展名</span></font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><span style=\"font-size: 14px\">解决：在请求筛选设置中将</span><font face=\"Times New Roman\">.<span style=\"font-size: 14px\">cshtml</span></font><span style=\"font-size: 14px\"><font face=\"宋体\">允许为</font><font face=\"Times New Roman\">false</font></span><font face=\"宋体\"><span style=\"font-size: 14px\">的项删除</span>。</font></span><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><o:p></o:p></span></font></span></font></span></font></span></p>\r\n<p>\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><!--EndFragment--><!--EndFragment--></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/10B055EC71BF1DD75CFFBC36B6F6E3D8.jpg\" /></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p class=\"p16\" style=\"text-align: left; margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-size: 14px\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\">3.<font face=\"宋体\">页面浏览测试</font></span></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><img src=\"/Upload/Images/2014/8/5/A1A9CA23AB8283722094E4C81C075F4A.jpg\" /></font></span></font></span></font></span></font></span></p>\r\n<p class=\"p16\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></font></span></p>\r\n<p class=\"p15\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\">浏览页面，能出来相应的页面内容，则表示成功。</span></font></span></font></span></font></span></font></span></p>\r\n<p class=\"p15\" style=\"margin-top: 0pt; margin-bottom: 0pt\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\">&nbsp;</font></span></font></span></font></span></font></span></p>\r\n<p align=\"center\">\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span style=\"font-family: \'Times New Roman\'; font-size: 12pt; mso-spacerun: \'yes\'\"><strong>（转载本文请注明作者和出处 <a href=\"http://www.iprogram.com.cn/\">i 编程网-iprogram.com.cn</a> ，请勿用于任何商业用途）</strong></span></font></span></font></span></font></span></font></span></p>\r\n<p>\r\n	<span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"Times New Roman\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><span class=\"15\" style=\"font-family: \'Times New Roman\'; font-weight: bold; mso-spacerun: \'yes\'\"><font face=\"宋体\"><!--EndFragment--></font></span><!--EndFragment--></font></span><!--EndFragment--></font></span><!--EndFragment--></font></span><!--EndFragment--></p>\r\n', '这是我之前发表在博客园上的一篇文章，现将其移到本站下，并做了一些修改。本文在博客园的地址：http://www.cnblogs.com/Extreme/archive/2013/03/09/2951002.html\r\n\r\n	这段时间在用MVC写一个导游网站，在Window7的IIS7.5上部署的时候，遇到和处理了一些问题。（以下截图是在Windows&nbsp;8下完成的，也就是说该部署方案同样适用于Windows8下的IIS7.5部署。）\r\n\r\n	现将完整的过程整理出来，供大家参考:\r\n\r\n	&nbsp;\r\n\r\n	一、部署准备：\r\n\r\n	&nbsp;\r\n\r\n	1.安装Microsoft&nbsp;.net&nbsp;FrameWork&nbsp;4.0包\r\n\r\n	2.安装ASP.NET&nbsp;MVC&nbsp;3.0\r\n\r\n	3.发布MVC网站应用程序（或将发布好的目录拷贝到IIS所在电脑）\r\n\r\n	\r\n\r\n	二、IIS7.5部署\r\n\r\n	&nbsp;\r\n\r\n	1.&nbsp;修改ISAPI和CGI限制\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n\r\n	如果&nbsp;Asp.NET&nbsp;v4.0.30319&nbsp;的&ldquo;限制&rdquo;为&ldquo;不允许&rdquo;，将其更改为&ldquo;允许&rdquo;\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	修改后，如下图所示：\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	2.&nbsp;在应用程序上&ldquo;添加应用程序池&rdquo;并选择.Net&nbsp;Framework&nbsp;v4.0.30319版本\r\n\r\n	这里命名为&ldquo;Asp.Net&nbsp;v4.0&rdquo;\r\n\r\n	\r\n\r\n	\r\n\r\n	3.&nbsp;右击网站&ldquo;添加网站&rdquo;\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	物理路径选择MVC网站应用程序发布版本的目录\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	4.为网站选择应用程序池\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	至此，部署完毕！如下：\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	三、常见异常处理：\r\n\r\n	1.&nbsp;.Net&nbsp;framework&nbsp;4.0注册问题\r\n\r\n	报错及提示：\r\n\r\n	&ldquo;未能从程序集&ldquo;System.ServiceModel,&nbsp;Version=3.0.0.0,&nbsp;Culture=neutral,\r\n\r\n	PublicKeyToken=b77a5c561934e089&rdquo;中加载类型&ldquo;System.ServiceModel.Activation.HttpModule&rdquo;。&rdquo;\r\n\r\n	解决：\r\n\r\n	这里出现版本问题，加载3.0的dll现象。据说是因为先安装.Net&nbsp;framework&nbsp;4.0后安装IIS7.5&nbsp;的原因。\r\n\r\n	于是重新使用Net&nbsp;framework&nbsp;4.0的aspnet_regiis.exe重新注册.Net&nbsp;framework&nbsp;4.0。\r\n\r\n	运行&nbsp;CMD后进入&ldquo;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319&rdquo;\r\n\r\n	执行语句为：&ldquo;aspnet_regiis.exe&nbsp;&ndash;iru&rdquo;\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	2.&nbsp;扩展名被禁用的问题\r\n\r\n	\r\n\r\n	报错：404.7&nbsp;\r\n\r\n	请求筛选规则禁用了扩展名\r\n\r\n	解决：在请求筛选设置中将.cshtml允许为false的项删除。\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	3.页面浏览测试\r\n\r\n	&nbsp;\r\n\r\n	\r\n\r\n	&nbsp;\r\n\r\n	浏览页面，能出来相应的页面内容，则表示成功。\r\n\r\n	&nbsp;\r\n\r\n	（转载本文请注明作者和出处 i 编程网-iprogram.com.cn ，请勿用于任何商业用途）', '020301', 'king', '2014-08-05 00:59:30', '0', '0');
  INSERT INTO `article` VALUES ('11', 'Jquery Validate两步实现输入合法校验', null, '<div>\r\n	<strong>Step1：引用Jquery库和jquery.validate.js库</strong></div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;script src=&quot;../Script/jquery-1.7.2.js&quot;&gt;&lt;/script&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;script src=&quot;../Script/jquery.validate.js&quot;&gt;&lt;/script&gt;</div>\r\n<div>\r\n	<strong>Step2：在页面加载完成后中对表单注册校验机制</strong></div>\r\n<div>\r\n	<strong>&nbsp; &nbsp; &nbsp;</strong>要验证的表单和表单元素通过Id匹配，在rules中定义验证规则，在message中定义不合法的提示信息。</div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;script type=&quot;text/javascript&quot;&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; $(function () {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(&quot;#frmReg&quot;).validate({</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rules: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtUserName: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxlength: 50</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtNickname: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxlength: 50</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: 6</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword2: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: 6,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equalTo: &quot;#txtPassword&quot;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtEmail: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email: true</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messages: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtUserName: &quot;*&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtNickname: &quot;*&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: &quot;*密码不能小于6个字符&quot;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword2: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: &quot;确认密码不能小于6个字符&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equalTo: &quot;两次输入密码不一致&quot;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtEmail: {</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email: &quot;*请输入正确的Email地址&quot;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; });</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;/script&gt;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	<strong>附：表单及表单元素的代码如下：</strong></div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;form id=&quot;frmReg&quot; method=&quot;post&quot; action=&quot;Register.aspx&quot;&gt;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &lt;div id=&quot;divMain&quot;&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;title&quot;&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 用户注册</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;table style=&quot;margin-top: 10px;&quot;&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;登录帐号：&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtUserName&quot; name=&quot;txtUserName&quot; /&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;用户昵称：&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtNickname&quot; name=&quot;txtNickname&quot; /&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;密码：&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;password&quot; id=&quot;txtPassword&quot; name=&quot;txtPassword&quot; /&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;确认密码：&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;password&quot; id=&quot;txtPassword2&quot; name=&quot;txtPassword2&quot; /&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;Email：&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtEmail&quot; name=&quot;txtEmail&quot; /&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot;&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input id=&quot;submit&quot; type=&quot;submit&quot; value=&quot;注册&quot; /&gt;&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;&lt;/td&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/table&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div&gt;&lt;/div&gt;</div>\r\n<div>\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp; &nbsp; &lt;/form&gt;</div>\r\n', 'Step1：引用Jquery库和jquery.validate.js库\r\n\r\n	&nbsp; &nbsp; &lt;script src=&quot;../Script/jquery-1.7.2.js&quot;&gt;&lt;/script&gt;\r\n\r\n	&nbsp; &nbsp; &lt;script src=&quot;../Script/jquery.validate.js&quot;&gt;&lt;/script&gt;\r\n\r\n	Step2：在页面加载完成后中对表单注册校验机制\r\n\r\n	&nbsp; &nbsp; &nbsp;要验证的表单和表单元素通过Id匹配，在rules中定义验证规则，在message中定义不合法的提示信息。\r\n\r\n	&nbsp; &nbsp; &lt;script type=&quot;text/javascript&quot;&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; $(function () {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(&quot;#frmReg&quot;).validate({\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rules: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtUserName: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxlength: 50\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtNickname: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxlength: 50\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: 6\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword2: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: true,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: 6,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equalTo: &quot;#txtPassword&quot;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtEmail: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email: true\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messages: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtUserName: &quot;*&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtNickname: &quot;*&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: &quot;*密码不能小于6个字符&quot;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtPassword2: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minlength: &quot;确认密码不能小于6个字符&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equalTo: &quot;两次输入密码不一致&quot;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; txtEmail: {\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; required: &quot;*&quot;,\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email: &quot;*请输入正确的Email地址&quot;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; });\r\n\r\n	&nbsp;\r\n\r\n	&nbsp; &nbsp; &lt;/script&gt;\r\n\r\n	&nbsp;\r\n\r\n	附：表单及表单元素的代码如下：\r\n\r\n	&nbsp;\r\n\r\n	&nbsp; &nbsp; &lt;form id=&quot;frmReg&quot; method=&quot;post&quot; action=&quot;Register.aspx&quot;&gt;\r\n\r\n	&nbsp;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &lt;div id=&quot;divMain&quot;&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;title&quot;&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 用户注册\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;table style=&quot;margin-top: 10px;&quot;&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;登录帐号：&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtUserName&quot; name=&quot;txtUserName&quot; /&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;用户昵称：&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtNickname&quot; name=&quot;txtNickname&quot; /&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;密码：&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;password&quot; id=&quot;txtPassword&quot; name=&quot;txtPassword&quot; /&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;确认密码：&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;password&quot; id=&quot;txtPassword2&quot; name=&quot;txtPassword2&quot; /&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;\r\n\r\n	&nbsp;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td class=&quot;right&quot;&gt;Email：&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; id=&quot;txtEmail&quot; name=&quot;txtEmail&quot; /&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot;&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input id=&quot;submit&quot; type=&quot;submit&quot; value=&quot;注册&quot; /&gt;&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;&lt;/td&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/tr&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/table&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div&gt;&lt;/div&gt;\r\n\r\n	&nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;\r\n\r\n	&nbsp;\r\n\r\n	&nbsp; &nbsp; &lt;/form&gt;', '020403', 'king', '2014-10-05 11:37:28', '0', '0');
  INSERT INTO `article` VALUES ('179', 'Markdown语法', null, '<div>\r\n	1. 标题设置（让字体变大，和word的标题意思一样）</div>\r\n<div>\r\n	在Markdown当中设置标题，有两种方式：</div>\r\n<div>\r\n	第一种：通过在文字下方添加“=”和“-”，他们分别表示一级标题和二级标题。</div>\r\n<div>\r\n	第二种：在文字开头加上 “#”，通过“#”数量表示几级标题。（一共只有1~6级标题，1级标题字体最大）</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	2. 块注释（blockquote）</div>\r\n<div>\r\n	通过在文字开头添加“&gt;”表示块注释。（当&gt;和文字之间添加五个blank时，块注释的文字会有变化。）</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	3. 斜体</div>\r\n<div>\r\n	将需要设置为斜体的文字两端使用1个“*”或者“_”夹起来</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	4. 粗体</div>\r\n<div>\r\n	将需要设置为斜体的文字两端使用2个“*”或者“_”夹起来</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	5. 无序列表</div>\r\n<div>\r\n	在文字开头添加(*, , and -)实现无序列表。但是要注意在(*, , and -)和文字之间需要添加空格。（建议：一个文档中只是用一种无序列表的表示方式）</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	6. 有序列表</div>\r\n<div>\r\n	使用数字后面跟上句号。（还要有空格）</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	7. 链接（Links）</div>\r\n<div>\r\n	Markdown中有两种方式，实现链接，分别为内联方式和引用方式。</div>\r\n<div>\r\n	内联方式：This is an [example link](http://example.com/).</div>\r\n<div>\r\n	引用方式：</div>\r\n<div>\r\n	I get 10 times more traffic from [Google][1] than from [Yahoo][2] or [MSN][3].&nbsp;&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	[1]: http://google.com/&nbsp; &nbsp; &nbsp; &nbsp; \"Google\"&nbsp;</div>\r\n<div>\r\n	[2]: http://search.yahoo.com/&nbsp; \"Yahoo Search\"&nbsp;</div>\r\n<div>\r\n	[3]: http://search.msn.com/&nbsp; &nbsp; \"MSN Search\"</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	8. 图片（Images）</div>\r\n<div>\r\n	图片的处理方式和链接的处理方式，非常的类似。</div>\r\n<div>\r\n	内联方式：![alt text](/path/to/img.jpg \"Title\")</div>\r\n<div>\r\n	引用方式：</div>\r\n<div>\r\n	![alt text][id]&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	[id]: /path/to/img.jpg \"Title\"</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	9. 代码（HTML中所谓的Code）</div>\r\n<div>\r\n	实现方式有两种：</div>\r\n<div>\r\n	第一种：简单文字出现一个代码框。使用`&lt;blockquote&gt;`。（`不是单引号而是左上角的ESC下面~中的`）</div>\r\n<div>\r\n	第二种：大片文字需要实现代码框。使用Tab和四个空格。</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	10. 脚注（footnote）</div>\r\n<div>\r\n	实现方式如下：</div>\r\n<div>\r\n	hello[^hello]</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	[^hello]: hi</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	11. 下划线</div>\r\n<div>\r\n	在空白行下方添加三条“-”横线。（前面讲过在文字下方添加“-”，实现的2级标题）</div>\r\n', '1. 标题设置（让字体变大，和word的标题意思一样）\r\n\r\n	在Markdown当中设置标题，有两种方式：\r\n\r\n	第一种：通过在文字下方添加“=”和“-”，他们分别表示一级标题和二级标题。\r\n\r\n	第二种：在文字开头加上 “#”，通过“#”数量表示几级标题。（一共只有1~6级标题，1级标题字体最大）\r\n\r\n	&nbsp;\r\n\r\n	2. 块注释（blockquote）\r\n\r\n	通过在文字开头添加“&gt;”表示块注释。（当&gt;和文字之间添加五个blank时，块注释的文字会有变化。）\r\n\r\n	&nbsp;\r\n\r\n	3. 斜体\r\n\r\n	将需要设置为斜体的文字两端使用1个“*”或者“_”夹起来\r\n\r\n	&nbsp;\r\n\r\n	4. 粗体\r\n\r\n	将需要设置为斜体的文字两端使用2个“*”或者“_”夹起来\r\n\r\n	&nbsp;\r\n\r\n	5. 无序列表\r\n\r\n	在文字开头添加(*, , and -)实现无序列表。但是要注意在(*, , and -)和文字之间需要添加空格。（建议：一个文档中只是用一种无序列表的表示方式）\r\n\r\n	&nbsp;\r\n\r\n	6. 有序列表\r\n\r\n	使用数字后面跟上句号。（还要有空格）\r\n\r\n	&nbsp;\r\n\r\n	7. 链接（Links）\r\n\r\n	Markdown中有两种方式，实现链接，分别为内联方式和引用方式。\r\n\r\n	内联方式：This is an [example link](http://example.com/).\r\n\r\n	引用方式：\r\n\r\n	I get 10 times more traffic from [Google][1] than from [Yahoo][2] or [MSN][3].&nbsp;&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	[1]: http://google.com/&nbsp; &nbsp; &nbsp; &nbsp; \"Google\"&nbsp;\r\n\r\n	[2]: http://search.yahoo.com/&nbsp; \"Yahoo Search\"&nbsp;\r\n\r\n	[3]: http://search.msn.com/&nbsp; &nbsp; \"MSN Search\"\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	8. 图片（Images）\r\n\r\n	图片的处理方式和链接的处理方式，非常的类似。\r\n\r\n	内联方式：![alt text](/path/to/img.jpg \"Title\")\r\n\r\n	引用方式：\r\n\r\n	![alt text][id]&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	[id]: /path/to/img.jpg \"Title\"\r\n\r\n	&nbsp;\r\n\r\n	9. 代码（HTML中所谓的Code）\r\n\r\n	实现方式有两种：\r\n\r\n	第一种：简单文字出现一个代码框。使用`&lt;blockquote&gt;`。（`不是单引号而是左上角的ESC下面~中的`）\r\n\r\n	第二种：大片文字需要实现代码框。使用Tab和四个空格。\r\n\r\n	&nbsp;\r\n\r\n	10. 脚注（footnote）\r\n\r\n	实现方式如下：\r\n\r\n	hello[^hello]\r\n\r\n	&nbsp;\r\n\r\n	[^hello]: hi\r\n\r\n	&nbsp;\r\n\r\n	11. 下划线\r\n\r\n	在空白行下方添加三条“-”横线。（前面讲过在文字下方添加“-”，实现的2级标题）', '020205', 'king', '2018-01-28 11:58:41', '0', '0');
  INSERT INTO `article` VALUES ('270', ':nth-child(n) 选择器的坑', ':nth-child(n) ', '<p>\r\n	<span style=\"font-size:16px;\"><!-- 通过后台传递给模板的数据赋值，转义过的标签<dependencies>会被自动反转义为<dependencies>\r\n									         因此改为通过ajax请求接口，得到的文章内容（不会被反转义）通过js赋值给CKEditor编辑器。\r\n									 	 -->css匹配选择第n个子元素可以使用:nth-child(n) 选择器。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">其匹配属于其父元素的第N个子元素，不论元素的类型。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">其逻辑是先找到:nth-child(n)前元素的父元素，再找父元素的第n个子元素。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">举例：</span></p>\r\n<p>\r\n	页面有以下html标签：</p>\r\n<pre style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">\r\n<span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"parent\"</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n    <span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"other\"</span><span style=\"background-color:#efefef;\">&gt;</span>other1<span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n    <span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"other\"</span><span style=\"background-color:#efefef;\">&gt;</span><span style=\"color:#0000ff;\">other2</span><span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n    <span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"one-third\"</span><span style=\"background-color:#efefef;\">&gt;</span>one-third1<span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n    <span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"one-third\"</span><span style=\"background-color:#efefef;\">&gt;</span><span style=\"color:#ff0000;\">one-third2</span><span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n    <span style=\"background-color:#efefef;\">&lt;</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div </span><span style=\"color:#0000ff;background-color:#efefef;font-weight:bold;\">class</span><span style=\"color:#008000;background-color:#efefef;font-weight:bold;\">=\"one-third\"</span><span style=\"background-color:#efefef;\">&gt;</span>one-third3<span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span>\r\n<span style=\"background-color:#efefef;\">&lt;/</span><span style=\"color:#000080;background-color:#efefef;font-weight:bold;\">div</span><span style=\"background-color:#efefef;\">&gt;</span></pre>\r\n<p>\r\n	要为类样式.one-third的第2个元素（one-third2）设置红色，则使用<span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\"><span style=\"background-color:#afeeee;\">.</span></span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\"><span style=\"background-color:#afeeee;\">one-third</span></span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\"><span style=\"background-color:#afeeee;\">:</span></span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\"><span style=\"background-color:#afeeee;\">nth-child</span></span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\"><span style=\"background-color:#afeeee;\">(</span></span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 255);\"><span style=\"background-color:#afeeee;\">4</span></span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\"><span style=\"background-color:#afeeee;\">)</span>, 而不是</span><strike><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">.</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\">one-third</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">:</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\">nth-child</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">(</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 255);\">2</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">)</span></strike></p>\r\n<p>\r\n	<span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">.</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\">one-third</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">:</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 128); font-weight: bold;\">nth-child</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">(</span><span style=\"font-family: Consolas; font-size: 9.8pt; color: rgb(0, 0, 255);\">4</span><span style=\"color: rgb(0, 0, 0); font-family: Consolas; font-size: 9.8pt;\">) {</span></p>\r\n<pre style=\"font-family: Consolas; font-size: 9.8pt;\">\r\n<span style=\"color: rgb(0, 0, 0);\">    </span><span style=\"color:#ff0000;\"><b>color：red；</b>// 将one-third2设置为红色</span>\r\n\r\n}</pre>\r\n<p>\r\n	&nbsp;</p>\r\n<p>\r\n	.one-third:nth-child(2) {</p>\r\n<p>\r\n	<span style=\"font-size:11px;\">&nbsp;&nbsp; color：blue；// 将other2设置为蓝色</span></p>\r\n<p>\r\n	}</p>\r\n', 'css匹配选择第n个子元素可以使用:nth-child(n) 选择器。\r\n\r\n	其匹配属于其父元素的第N个子元素，不论元素的类型。\r\n\r\n	其逻辑是先找到:nth-child(n)前元素的父元素，再找父元素的第n个子元素。\r\n\r\n	举例：\r\n\r\n	页面有以下html标签：\r\n\r\n&lt;div class=\"parent\"&gt;\r\n    &lt;div class=\"other\"&gt;other1&lt;/div&gt;\r\n    &lt;div class=\"other\"&gt;other2&lt;/div&gt;\r\n    &lt;div class=\"one-third\"&gt;one-third1&lt;/div&gt;\r\n    &lt;div class=\"one-third\"&gt;one-third2&lt;/div&gt;\r\n    &lt;div class=\"one-third\"&gt;one-third3&lt;/div&gt;\r\n&lt;/div&gt;\r\n\r\n	要为类样式.one-third的第2个元素（one-third2）设置红色，则使用.one-third:nth-child(4), 而不是.one-third:nth-child(2)\r\n\r\n	.one-third:nth-child(4) {\r\n\r\n    color：red；// 将one-third2设置为红色\r\n\r\n}\r\n\r\n	&nbsp;\r\n\r\n	.one-third:nth-child(2) {\r\n\r\n	&nbsp;&nbsp; color：blue；// 将other2设置为蓝色\r\n\r\n	}', '020402', 'king', '2022-01-21 02:11:36', '0', '0');
  INSERT INTO `article` VALUES ('232', 'Webstorm安装及快捷键', null, '<div>\r\n	https://blog.csdn.net/voke_/article/details/76418116</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	http://180.76.140.202:9123 (2018/07/20)</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	http://idea.wrbugtest.tk/ (2018/06/16)</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	点击：Activate即可。</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	下面是Webstorm的一些常用快捷键：</div>\r\n<div>\r\n	1. ctrl + shift + n: 打开工程中的文件，目的是打开当前工程下任意目录的文件。</div>\r\n<div>\r\n	2. ctrl + j: 输出模板</div>\r\n<div>\r\n	3. ctrl + b: 跳到变量申明处</div>\r\n<div>\r\n	4. ctrl + alt + T: 围绕包裹代码(包括zencoding的Wrap with Abbreviation)</div>\r\n<div>\r\n	5. ctrl + []: 匹配 {}[]</div>\r\n<div>\r\n	6. ctrl + F12: 可以显示当前文件的结构</div>\r\n<div>\r\n	7. ctrl + x: 剪切(删除)行，不选中，直接剪切整个行，如果选中部分内容则剪切选中的内容</div>\r\n<div>\r\n	8. alt + left/right:标签切换</div>\r\n<div>\r\n	9. ctrl + r: 替换</div>\r\n<div>\r\n	10. ctrl + shift + up: 行移动</div>\r\n<div>\r\n	11. shift + alt + up: 块移动(if(){},while(){}语句块的移动)</div>\r\n<div>\r\n	12. ctrl + d: 行复制</div>\r\n<div>\r\n	13. ctrl + shift + ]/[: 选中块代码</div>\r\n<div>\r\n	14. ctrl + / : 单行注释</div>\r\n<div>\r\n	15. ctrl + shift + / : 块注释</div>\r\n<div>\r\n	16. ctrl + shift + i : 显示当前CSS选择器或者JS函数的详细信息</div>\r\n<div>\r\n	17. ctrl + &#39;-/+&#39;: 可以折叠项目中的任何代码块，它不是选中折叠，而是自动识别折叠。</div>\r\n<div>\r\n	18. ctrl + &#39;.&#39;: 折叠选中的代码的代码。</div>\r\n<div>\r\n	ctrl+/ 单行注释</div>\r\n<div>\r\n	ctrl+shift+/块注释</div>\r\n<div>\r\n	ctrl+shift+ +/-展开/折叠</div>\r\n<div>\r\n	ctrl+alt+L 格式化代码</div>\r\n<div>\r\n	ctrl+shift+ up/down 上下移动句子</div>\r\n<div>\r\n	Alt+回车 导入包,自动修正</div>\r\n<div>\r\n	Ctrl+N 查找类</div>\r\n<div>\r\n	Ctrl+Shift+N 查找文件</div>\r\n<div>\r\n	Ctrl+Alt+L 格式化代码</div>\r\n<div>\r\n	Ctrl+Alt+O 优化导入的类和包</div>\r\n<div>\r\n	Alt+Insert 生成代码(如get,set方法,构造函数等)</div>\r\n<div>\r\n	Ctrl+E或者Alt+Shift+C 最近更改的代码</div>\r\n<div>\r\n	Ctrl+R 替换文本</div>\r\n<div>\r\n	Ctrl+F 查找文本</div>\r\n<div>\r\n	Ctrl+Shift+Space 自动补全代码</div>\r\n<div>\r\n	Ctrl+空格 代码提示</div>\r\n<div>\r\n	Ctrl+Alt+Space 类名或接口名提示</div>\r\n<div>\r\n	Ctrl+P 方法参数提示</div>\r\n<div>\r\n	Ctrl+Shift+Alt+N 查找类中的方法或变量</div>\r\n<div>\r\n	Alt+Shift+C 对比最近修改的代码</div>\r\n<div>\r\n	Shift+F6 重构-重命名</div>\r\n<div>\r\n	Ctrl+Shift+先上键</div>\r\n<div>\r\n	Ctrl+X 删除行</div>\r\n<div>\r\n	Ctrl+D 复制行</div>\r\n<div>\r\n	Ctrl+/ 或 Ctrl+Shift+/ 注释（// 或者/*...*/ ）</div>\r\n<div>\r\n	Ctrl+J 自动代码</div>\r\n<div>\r\n	Ctrl+E 最近打开的文件</div>\r\n<div>\r\n	Ctrl+H 显示类结构图</div>\r\n<div>\r\n	Ctrl+Q 显示注释文档</div>\r\n<div>\r\n	Alt+F1 查找代码所在位置</div>\r\n<div>\r\n	Alt+1 快速打开或隐藏工程面板</div>\r\n<div>\r\n	Ctrl+Alt+ left/right 返回至上次浏览的位置</div>\r\n<div>\r\n	Alt+ left/right 切换代码视图</div>\r\n<div>\r\n	Alt+ Up/Down 在方法间快速移动定位</div>\r\n<div>\r\n	Ctrl+Shift+Up/Down 代码向上/下移动。</div>\r\n<div>\r\n	F2 或Shift+F2 高亮错误或警告快速定位</div>\r\n<div>\r\n	代码标签输入完成后，按Tab，生成代码。</div>\r\n<div>\r\n	选中文本，按Ctrl+Shift+F7 ，高亮显示所有该文本，按Esc高亮消失。</div>\r\n<div>\r\n	Ctrl+W 选中代码，连续按会有其他效果</div>\r\n<div>\r\n	选中文本，按Alt+F3 ，逐个往下查找相同文本，并高亮显示。</div>\r\n<div>\r\n	Ctrl+Up/Down 光标跳转到第一行或最后一行下</div>\r\n<div>\r\n	Ctrl+B 快速打开光标处的类或方法</div>\r\n<div>\r\n	&nbsp;</div>\r\n', 'https://blog.csdn.net/voke_/article/details/76418116\r\n\r\n	&nbsp;\r\n\r\n	http://180.76.140.202:9123 (2018/07/20)\r\n\r\n	&nbsp;\r\n\r\n	http://idea.wrbugtest.tk/ (2018/06/16)\r\n\r\n	&nbsp;\r\n\r\n	点击：Activate即可。\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	下面是Webstorm的一些常用快捷键：\r\n\r\n	1. ctrl + shift + n: 打开工程中的文件，目的是打开当前工程下任意目录的文件。\r\n\r\n	2. ctrl + j: 输出模板\r\n\r\n	3. ctrl + b: 跳到变量申明处\r\n\r\n	4. ctrl + alt + T: 围绕包裹代码(包括zencoding的Wrap with Abbreviation)\r\n\r\n	5. ctrl + []: 匹配 {}[]\r\n\r\n	6. ctrl + F12: 可以显示当前文件的结构\r\n\r\n	7. ctrl + x: 剪切(删除)行，不选中，直接剪切整个行，如果选中部分内容则剪切选中的内容\r\n\r\n	8. alt + left/right:标签切换\r\n\r\n	9. ctrl + r: 替换\r\n\r\n	10. ctrl + shift + up: 行移动\r\n\r\n	11. shift + alt + up: 块移动(if(){},while(){}语句块的移动)\r\n\r\n	12. ctrl + d: 行复制\r\n\r\n	13. ctrl + shift + ]/[: 选中块代码\r\n\r\n	14. ctrl + / : 单行注释\r\n\r\n	15. ctrl + shift + / : 块注释\r\n\r\n	16. ctrl + shift + i : 显示当前CSS选择器或者JS函数的详细信息\r\n\r\n	17. ctrl + &#39;-/+&#39;: 可以折叠项目中的任何代码块，它不是选中折叠，而是自动识别折叠。\r\n\r\n	18. ctrl + &#39;.&#39;: 折叠选中的代码的代码。\r\n\r\n	ctrl+/ 单行注释\r\n\r\n	ctrl+shift+/块注释\r\n\r\n	ctrl+shift+ +/-展开/折叠\r\n\r\n	ctrl+alt+L 格式化代码\r\n\r\n	ctrl+shift+ up/down 上下移动句子\r\n\r\n	Alt+回车 导入包,自动修正\r\n\r\n	Ctrl+N 查找类\r\n\r\n	Ctrl+Shift+N 查找文件\r\n\r\n	Ctrl+Alt+L 格式化代码\r\n\r\n	Ctrl+Alt+O 优化导入的类和包\r\n\r\n	Alt+Insert 生成代码(如get,set方法,构造函数等)\r\n\r\n	Ctrl+E或者Alt+Shift+C 最近更改的代码\r\n\r\n	Ctrl+R 替换文本\r\n\r\n	Ctrl+F 查找文本\r\n\r\n	Ctrl+Shift+Space 自动补全代码\r\n\r\n	Ctrl+空格 代码提示\r\n\r\n	Ctrl+Alt+Space 类名或接口名提示\r\n\r\n	Ctrl+P 方法参数提示\r\n\r\n	Ctrl+Shift+Alt+N 查找类中的方法或变量\r\n\r\n	Alt+Shift+C 对比最近修改的代码\r\n\r\n	Shift+F6 重构-重命名\r\n\r\n	Ctrl+Shift+先上键\r\n\r\n	Ctrl+X 删除行\r\n\r\n	Ctrl+D 复制行\r\n\r\n	Ctrl+/ 或 Ctrl+Shift+/ 注释（// 或者/*...*/ ）\r\n\r\n	Ctrl+J 自动代码\r\n\r\n	Ctrl+E 最近打开的文件\r\n\r\n	Ctrl+H 显示类结构图\r\n\r\n	Ctrl+Q 显示注释文档\r\n\r\n	Alt+F1 查找代码所在位置\r\n\r\n	Alt+1 快速打开或隐藏工程面板\r\n\r\n	Ctrl+Alt+ left/right 返回至上次浏览的位置\r\n\r\n	Alt+ left/right 切换代码视图\r\n\r\n	Alt+ Up/Down 在方法间快速移动定位\r\n\r\n	Ctrl+Shift+Up/Down 代码向上/下移动。\r\n\r\n	F2 或Shift+F2 高亮错误或警告快速定位\r\n\r\n	代码标签输入完成后，按Tab，生成代码。\r\n\r\n	选中文本，按Ctrl+Shift+F7 ，高亮显示所有该文本，按Esc高亮消失。\r\n\r\n	Ctrl+W 选中代码，连续按会有其他效果\r\n\r\n	选中文本，按Alt+F3 ，逐个往下查找相同文本，并高亮显示。\r\n\r\n	Ctrl+Up/Down 光标跳转到第一行或最后一行下\r\n\r\n	Ctrl+B 快速打开光标处的类或方法\r\n\r\n	&nbsp;', '020203', 'king', '2019-01-08 18:45:00', '0', '0');
  INSERT INTO `article` VALUES ('275', 'Springboot使用ResponseBodyAdvice处理String类型返回值异常', 'ResponseBodyAdvice，String类型，StringHttpMessageConverter', '<p>\r\n	<!-- 通过后台传递给模板的数据赋值，转义过的标签<dependencies>会被自动反转义为<dependencies>\r\n									         因此改为通过ajax请求接口，得到的文章内容（不会被反转义）通过js赋值给CKEditor编辑器。\r\n									 	 -->内容来源：<a href=\"https://my.oschina.net/u/1757225/blog/1543715\">Springboot使用了ResponseBodyAdvice处理返回值异常？ - 少不读水浒的个人空间 - OSCHINA - 中文开源技术交流社区</a></p>\r\n<p>\r\n	&nbsp;</p>\r\n<p style=\"box-sizing: inherit; margin: 0px 0px 20px; line-height: inherit; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;\">\r\n	为了统一接口响应的报文，现实了ResponseBodyAdvice接口，通过这个接口的实现类来统一处理报文</p>\r\n<p>\r\n	&nbsp;</p>\r\n<pre class=\"hljs java\" style=\"box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 13px; word-break: break-word; overflow-wrap: normal; overflow: auto; position: relative; margin-top: 0px; margin-bottom: 20px; padding: 1em; border: none; border-radius: 4px; line-height: 1.5; background: rgb(246, 246, 246); color: rgb(51, 51, 51);\">\r\n<span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">public</span> <span class=\"hljs-class\" style=\"box-sizing: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">class</span> <span class=\"hljs-title\" style=\"box-sizing: inherit; color: rgb(111, 66, 193);\">BaseGlobalResponseBodyAdvice</span> <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">implements</span> <span class=\"hljs-title\" style=\"box-sizing: inherit; color: rgb(111, 66, 193);\">ResponseBodyAdvice</span>&lt;<span class=\"hljs-title\" style=\"box-sizing: inherit; color: rgb(111, 66, 193);\">Object</span>&gt; </span>{\r\n\r\n   <span class=\"hljs-comment\" style=\"box-sizing: inherit; color: rgb(106, 115, 125);\">//这个方法表示对于哪些请求要执行beforeBodyWrite，返回true执行，返回false不执行</span>\r\n   <span class=\"hljs-meta\" style=\"box-sizing: inherit; color: rgb(106, 115, 125);\">@Override</span>\r\n   <span class=\"hljs-function\" style=\"box-sizing: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">public</span> <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">boolean</span> <span class=\"hljs-title\" style=\"box-sizing: inherit; color: rgb(111, 66, 193);\">supports</span><span class=\"hljs-params\" style=\"box-sizing: inherit;\">(MethodParameter methodParameter, Class aClass)</span> </span>{\r\n      <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">true</span>;\r\n   }\r\n\r\n   <span class=\"hljs-comment\" style=\"box-sizing: inherit; color: rgb(106, 115, 125);\">//对于返回的对象如果不是最终对象ResponseResult，则选包装一下</span>\r\n   <span class=\"hljs-meta\" style=\"box-sizing: inherit; color: rgb(106, 115, 125);\">@Override</span>\r\n   <span class=\"hljs-function\" style=\"box-sizing: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">public</span> Object <span class=\"hljs-title\" style=\"box-sizing: inherit; color: rgb(111, 66, 193);\">beforeBodyWrite</span><span class=\"hljs-params\" style=\"box-sizing: inherit;\">(Object o, MethodParameter methodParameter, MediaType mediaType,\r\n         Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse)</span> </span>{\r\n      <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">if</span>(!(o <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">instanceof</span> ResponseResult)) {\r\n         <span style=\"color:#b22222;\"><span style=\"background-color:#40e0d0;\">ResponseResult responseResult = </span><span class=\"hljs-keyword\" style=\"box-sizing: inherit;\"><span style=\"background-color:#40e0d0;\">new</span></span><span style=\"background-color:#40e0d0;\"> ResponseResult(CodeConstant.SUCCESS, o);</span></span>\r\n         <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> responseResult;\r\n      }\r\n      <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> o;\r\n   }\r\n\r\n}</pre>\r\n<p>\r\n	<span style=\"color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;\">在StringMessageConverter类型，他只接受String类型的返回类型。</span></p>\r\n<p>\r\n	<span style=\"color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;\">我们在ResponseBodyAdvice中将返回值从String类型改成ResponseResult类型之后，调用StringMessageConverter方法发生类型强转。ReponseResult无法转换成String，发生类型转换异常。</span></p>\r\n<p>\r\n	&nbsp;</p>\r\n<p>\r\n	<span style=\"color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;\">解决该异常最好的方式就是重写StringMessageConverter方法，让他可以解决ResonseResult类型的转化。</span></p>\r\n<p>\r\n	<span style=\"color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px;\">这样相对比较麻烦，所以换了一种思路，在ResponseBodyAdvice中做了针对String类型返回值的修改。</span></p>\r\n<p>\r\n	&nbsp;</p>\r\n<p>\r\n	<span style=\"color: rgb(106, 115, 125); background-color: rgb(246, 246, 246); font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 13px;\">@Override</span></p>\r\n<pre class=\"hljs typescript\" style=\"box-sizing: border-box; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 13px; word-break: break-word; overflow-wrap: normal; overflow: auto; position: relative; margin-top: 0px; margin-bottom: 20px; padding: 1em; border: none; border-radius: 4px; line-height: 1.5; background: rgb(246, 246, 246); color: rgb(51, 51, 51);\">\r\n   <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">public</span> <span class=\"hljs-built_in\" style=\"box-sizing: inherit;\">Object</span> beforeBodyWrite(<span class=\"hljs-built_in\" style=\"box-sizing: inherit;\">Object</span> o, MethodParameter methodParameter, MediaType mediaType,\r\n         Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {\r\n      <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">if</span>(!(o <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">instanceof</span> ResponseResult)) {\r\n         ResponseResult responseResult = <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">new</span> ResponseResult(CodeConstant.SUCCESS, o);\r\n         <span class=\"hljs-comment\" style=\"box-sizing: inherit; color: rgb(106, 115, 125);\">//因为handler处理类的返回类型是String，为了保证一致性，这里需要将ResponseResult转回去</span>\r\n         <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">if</span>(o <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">instanceof</span> <span class=\"hljs-built_in\" style=\"box-sizing: inherit;\">String</span>) {\r\n            <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> <span class=\"hljs-built_in\" style=\"box-sizing: inherit;\">JSON</span>.toJSONString(responseResult);\r\n         }\r\n         <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> responseResult;\r\n      }\r\n      <span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: rgb(215, 58, 73);\">return</span> o;\r\n   }</pre>\r\n', '内容来源：Springboot使用了ResponseBodyAdvice处理返回值异常？ - 少不读水浒的个人空间 - OSCHINA - 中文开源技术交流社区\r\n\r\n	&nbsp;\r\n\r\n	为了统一接口响应的报文，现实了ResponseBodyAdvice接口，通过这个接口的实现类来统一处理报文\r\n\r\n	&nbsp;\r\n\r\npublic class BaseGlobalResponseBodyAdvice implements ResponseBodyAdvice&lt;Object&gt; {\r\n\r\n   //这个方法表示对于哪些请求要执行beforeBodyWrite，返回true执行，返回false不执行\r\n   @Override\r\n   public boolean supports(MethodParameter methodParameter, Class aClass) {\r\n      return true;\r\n   }\r\n\r\n   //对于返回的对象如果不是最终对象ResponseResult，则选包装一下\r\n   @Override\r\n   public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType,\r\n         Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {\r\n      if(!(o instanceof ResponseResult)) {\r\n         ResponseResult responseResult = new ResponseResult(CodeConstant.SUCCESS, o);\r\n         return responseResult;\r\n      }\r\n      return o;\r\n   }\r\n\r\n}\r\n\r\n	在StringMessageConverter类型，他只接受String类型的返回类型。\r\n\r\n	我们在ResponseBodyAdvice中将返回值从String类型改成ResponseResult类型之后，调用StringMessageConverter方法发生类型强转。ReponseResult无法转换成String，发生类型转换异常。\r\n\r\n	&nbsp;\r\n\r\n	解决该异常最好的方式就是重写StringMessageConverter方法，让他可以解决ResonseResult类型的转化。\r\n\r\n	这样相对比较麻烦，所以换了一种思路，在ResponseBodyAdvice中做了针对String类型返回值的修改。\r\n\r\n	&nbsp;\r\n\r\n	@Override\r\n\r\n   public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType,\r\n         Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {\r\n      if(!(o instanceof ResponseResult)) {\r\n         ResponseResult responseResult = new ResponseResult(CodeConstant.SUCCESS, o);\r\n         //因为handler处理类的返回类型是String，为了保证一致性，这里需要将ResponseResult转回去\r\n         if(o instanceof String) {\r\n            return JSON.toJSONString(responseResult);\r\n         }\r\n         return responseResult;\r\n      }\r\n      return o;\r\n   }', '020606', 'king', '2022-02-18 02:46:07', '0', '0');
  INSERT INTO `article` VALUES ('276', '程序中对象的相关概念', '对象，类型，接口，封装，继承，多态，六大设计原则', '<p>\r\n	<em>内容来源：<span style=\"font-family: Arial, sans-serif; font-size: 13px;\">Bruce Ecke 的 《</span>On Java8<span style=\"font-family: Arial, sans-serif; font-size: 13px;\">》</span>（事实上的《Java编程思想》第五版）</em></p>\r\n<h2>\r\n	<strong>一、对象的描述</strong></h2>\r\n<p>\r\n	<span style=\"font-size:16px;\">Grady Booch对对象的简介描述：一个对象有自己的状态、行为和标识。即对象有自己的内部数据（提供状态）、方法（产生行为），并彼此区分（通过标识区分，每个对象在内存中都有唯一地址）。</span></p>\r\n<h2>\r\n	<strong>二、对象的五大特征</strong></h2>\r\n<p>\r\n	<span style=\"font-size:16px;\">1.万物皆对象。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">2.程序是一组对象，通过消息传递来告知彼此该做什么。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">3.每个对象都有自己的存储空间，可容纳其他对象。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">4.每个对象都有一种类型。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">5.同一类所有对象都能接收相同的消息。</span></p>\r\n<h2>\r\n	<strong>三、类型与接口</strong></h2>\r\n<p>\r\n	<span style=\"font-size:16px;\">程序中使用基本关键字class来引入新的类型。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">有一种观点认为：强调type决定了接口，而class是那个接口的一种特殊实现方式。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">我们向对象发出的请求是通过它的“接口”（Interface）定义的，对象的“类型”或”类”则规定了它的接口形式。类型和接口的对应关系是面向对象程序设计的基础。</span></p>\r\n<h2>\r\n	四、面向对象三大特性</h2>\r\n<h3>\r\n	1.封装</h3>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">概念：将类的某些信息隐藏在类内部，不允许外部程序直接访问，而是通过该类提供的方法来实现对隐藏信息的操作和访问。</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><strong><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">软件设计的原则是高内聚，每个对象的功能单一且高效。</span></strong></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">访问修饰符与访问权限：</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">&nbsp; &nbsp;类中元素的访问权限：</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">（1）public（公开）: 无论是谁，无论在哪，都可以访问和使用该元素。</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">（2）protected（受保护）：类似于private，区别是子类可以访问protected成员，不可以访问private成员。</span><span style=\"color: rgb(255, 0, 0);\"><span style=\"font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">protected也提供包访问权限。</span></span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">（3）default（默认）：包访问权限，可以被同一包（库组件）中其他类的成员访问。包访问权限把相关类聚集到一个包下，以便他们能轻易互相访问。</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">（4）</span><span style=\"color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">private（私有）：除了类本身和类内部的方法，外界无法直接访问该元素。</span></span></p>\r\n<h3>\r\n	复用：组合与聚合关系</h3>\r\n<p>\r\n	<span style=\"font-size:16px;\">组合（Composition）：经常用来表示拥有关系（has-a），整件拥有部件的生命周期。例如汽车拥有引擎。UML中用实心菱形箭头表示。</span></p>\r\n<div>\r\n	<span style=\"font-size:16px;\">聚合（Aggregation）：动态的组合。整件不会拥有部件的生命周期。</span></div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	<span style=\"font-size:16px;\">区别：<span style=\"color: rgb(255, 0, 0);\">组合关系，多个整件不可以同时共享同一个部件</span>。因为整件拥有部件的生命周期，整件删除，部件一定跟着删除。</span></div>\r\n<div>\r\n	&nbsp;</div>\r\n<h3>\r\n	2.继承</h3>\r\n<p>\r\n	<span style=\"font-size:16px;\">继承是类与类的一种关系，是一种“is-a”的关系。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">如果继承一个类而不做任何变化，没有什么意义。有两种方法可以让派生类与基类不同：一种是在派生类中添加新方法（基类无法访问新添加的方法，这种关系称为is-like-a）；另一种是改变现有基类方法的行为，即覆盖基类的方法（可以用一个派生类对象完全替代基类对象，这种</span><span style=\"font-size: 16px;\">纯粹替代</span><span style=\"font-size: 16px;\">关系是is-a）。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">方法覆盖就是方法重写。改变现有基类的行为，即在派生类中重新定义这个方法，被称为覆盖（overriding）。覆盖（重写）的方法返回值类型、方法名、参数类型及个数都与父类继承的方法相同。</span></p>\r\n<h2>\r\n	五、面向对象设计六大原则</h2>\r\n<p>\r\n	<span style=\"font-size:16px;\">1.单一职责原则SRP(Single Responsibility Principle)</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">一个类是对一组相关性高的函数、数据的封装。完全不一样的功能不应该放在一个类中。也适用于方法，功能单一，颗粒度要细。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">（封装性）</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">2.开放封闭原则OCP(Open - Close Principle )&nbsp;&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">对修改封闭、对扩展开放。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">（继承的原则）</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">3.里氏转换原则LSP (the Liskov Substitution Principle)&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">父类能出现的地方子类也可以出现。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">（多态性）</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">4.依赖倒置原则DIP(the Dependency Inversion Principle )&nbsp;&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">高层模块和底层模块都依赖于抽象类或接口，而不依赖细节。依赖注入模式是该原则的一个实现。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">（面向抽象或接口编程）</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">5.接口分离原则ISP(the Interface Segregation Principle )&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">客户端不依赖它不需要的接口。接口的设计尽可能粒度小，组合使用。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">6迪米特法则LoD(Law of Demeter)&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">最少知识原则，只与直接的朋友通信，门面模式（Facade）和中介模式（Mediator），都是迪米特法则应用的例子。谨慎使用Serializable,尽量降低一个类的访问权，尽量降低成员的访问权限。</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">（只公开必要的访问和操作）</span></p>\r\n<h2>\r\n	六、类型之间的六种的关系</h2>\r\n<p>\r\n	<span style=\"font-size:16px;\">来源：博客园 千里之行，始于足下&nbsp;<a href=\"https://www.cnblogs.com/ylq1990/p/8473041.html\">https://www.cnblogs.com/ylq1990/p/8473041.html</a></span></p>\r\n<h3>\r\n	<span style=\"font-size:16px;\">1.泛化（Java中用来表示继承）</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\">一种一般与特殊、一般与具体之间的关系。UML图中用<strong>实线空心三角形箭头</strong>表示。</span></p>\r\n<h3>\r\n	<span style=\"font-size:16px;\">2.实现</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\">一种类与接口的关系，表示类是接口所有特征和行为的实现。UML中用<strong>虚线空心三角形箭头</strong>表示。</span></p>\r\n<h3>\r\n	<span style=\"font-size:16px;\">3.依赖</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">一种使用的关系，即一个类的实现需要另一个类的协助。</span><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\"><strong>方法参数需要传入另一个类的对象，就表示依赖这个类</strong>。</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">UML用虚线箭头表示，指向被依赖的类。</span></span></p>\r\n<h3>\r\n	<span style=\"font-size:16px;\">4.关联</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的，一般是长期性的。</span><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\"><strong>一个类的全局变量引用了另一个类</strong>，就表示关联了这个类。</span></span></p>\r\n<div>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">UML用实线箭头表示，指向被依引用的类。</span></span></div>\r\n<h3>\r\n	<span style=\"font-size:16px;\">5.聚合</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">聚合关联关系的一种特例，是强的关联关系。聚合是整体和个体之间的关系，即has-a的关系，整体与个体可以具有各自的生命周期，部分可以属于多个整体对象，也可以为多个整体对象共享。</span><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">程序中聚合和关联关系是一致的，只能从语义级别来区分。</span></span></p>\r\n<div>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">UML用</span><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">尾部为<strong>空心菱形</strong>的实线箭头表示，箭头由部分指向整体。</span></span></div>\r\n<h3>\r\n	<span style=\"font-size:16px;\">6.组合</span></h3>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">组合也是关联关系的一种特例。组合是一种整体与部分的关系，即contains-a的关系，比聚合更强。部分与整体的生命周期一致，整体的生命周期结束也就意味着部分的生命周期结束，组合关系不能共享。程序中组合和关联关系是一致的，只能从语义级别来区分。</span></span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\"><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">UML用</span><span style=\"color: rgb(0, 0, 0); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">尾部为<strong>实心菱形</strong>的实线箭头表示，箭头由部分指向整体。</span></span></p>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n<div>\r\n	&nbsp;</div>\r\n', '内容来源：Bruce Ecke 的 《On Java8》（事实上的《Java编程思想》第五版）\r\n\r\n	一、对象的描述\r\n\r\n	Grady Booch对对象的简介描述：一个对象有自己的状态、行为和标识。即对象有自己的内部数据（提供状态）、方法（产生行为），并彼此区分（通过标识区分，每个对象在内存中都有唯一地址）。\r\n\r\n	二、对象的五大特征\r\n\r\n	1.万物皆对象。\r\n\r\n	2.程序是一组对象，通过消息传递来告知彼此该做什么。\r\n\r\n	3.每个对象都有自己的存储空间，可容纳其他对象。\r\n\r\n	4.每个对象都有一种类型。\r\n\r\n	5.同一类所有对象都能接收相同的消息。\r\n\r\n	三、类型与接口\r\n\r\n	程序中使用基本关键字class来引入新的类型。\r\n\r\n	有一种观点认为：强调type决定了接口，而class是那个接口的一种特殊实现方式。\r\n\r\n	我们向对象发出的请求是通过它的“接口”（Interface）定义的，对象的“类型”或”类”则规定了它的接口形式。类型和接口的对应关系是面向对象程序设计的基础。\r\n\r\n	四、面向对象三大特性\r\n\r\n	1.封装\r\n\r\n	概念：将类的某些信息隐藏在类内部，不允许外部程序直接访问，而是通过该类提供的方法来实现对隐藏信息的操作和访问。\r\n\r\n	软件设计的原则是高内聚，每个对象的功能单一且高效。\r\n\r\n	访问修饰符与访问权限：\r\n\r\n	&nbsp; &nbsp;类中元素的访问权限：\r\n\r\n	（1）public（公开）: 无论是谁，无论在哪，都可以访问和使用该元素。\r\n\r\n	（2）protected（受保护）：类似于private，区别是子类可以访问protected成员，不可以访问private成员。protected也提供包访问权限。\r\n\r\n	（3）default（默认）：包访问权限，可以被同一包（库组件）中其他类的成员访问。包访问权限把相关类聚集到一个包下，以便他们能轻易互相访问。\r\n\r\n	（4）private（私有）：除了类本身和类内部的方法，外界无法直接访问该元素。\r\n\r\n	复用：组合与聚合关系\r\n\r\n	组合（Composition）：经常用来表示拥有关系（has-a），整件拥有部件的生命周期。例如汽车拥有引擎。UML中用实心菱形箭头表示。\r\n\r\n	聚合（Aggregation）：动态的组合。整件不会拥有部件的生命周期。\r\n\r\n	&nbsp;\r\n\r\n	区别：组合关系，多个整件不可以同时共享同一个部件。因为整件拥有部件的生命周期，整件删除，部件一定跟着删除。\r\n\r\n	&nbsp;\r\n\r\n	2.继承\r\n\r\n	继承是类与类的一种关系，是一种“is-a”的关系。\r\n\r\n	如果继承一个类而不做任何变化，没有什么意义。有两种方法可以让派生类与基类不同：一种是在派生类中添加新方法（基类无法访问新添加的方法，这种关系称为is-like-a）；另一种是改变现有基类方法的行为，即覆盖基类的方法（可以用一个派生类对象完全替代基类对象，这种纯粹替代关系是is-a）。\r\n\r\n	方法覆盖就是方法重写。改变现有基类的行为，即在派生类中重新定义这个方法，被称为覆盖（overriding）。覆盖（重写）的方法返回值类型、方法名、参数类型及个数都与父类继承的方法相同。\r\n\r\n	五、面向对象设计六大原则\r\n\r\n	1.单一职责原则SRP(Single Responsibility Principle)\r\n\r\n	一个类是对一组相关性高的函数、数据的封装。完全不一样的功能不应该放在一个类中。也适用于方法，功能单一，颗粒度要细。\r\n\r\n	（封装性）\r\n\r\n	2.开放封闭原则OCP(Open - Close Principle )&nbsp;&nbsp;\r\n\r\n	对修改封闭、对扩展开放。\r\n\r\n	（继承的原则）\r\n\r\n	3.里氏转换原则LSP (the Liskov Substitution Principle)&nbsp;\r\n\r\n	父类能出现的地方子类也可以出现。\r\n\r\n	（多态性）\r\n\r\n	4.依赖倒置原则DIP(the Dependency Inversion Principle )&nbsp;&nbsp;\r\n\r\n	高层模块和底层模块都依赖于抽象类或接口，而不依赖细节。依赖注入模式是该原则的一个实现。\r\n\r\n	（面向抽象或接口编程）\r\n\r\n	5.接口分离原则ISP(the Interface Segregation Principle )&nbsp;\r\n\r\n	客户端不依赖它不需要的接口。接口的设计尽可能粒度小，组合使用。\r\n\r\n	6迪米特法则LoD(Law of Demeter)&nbsp;\r\n\r\n	最少知识原则，只与直接的朋友通信，门面模式（Facade）和中介模式（Mediator），都是迪米特法则应用的例子。谨慎使用Serializable,尽量降低一个类的访问权，尽量降低成员的访问权限。\r\n\r\n	（只公开必要的访问和操作）\r\n\r\n	六、类型之间的六种的关系\r\n\r\n	来源：博客园 千里之行，始于足下&nbsp;https://www.cnblogs.com/ylq1990/p/8473041.html\r\n\r\n	1.泛化（Java中用来表示继承）\r\n\r\n	一种一般与特殊、一般与具体之间的关系。UML图中用实线空心三角形箭头表示。\r\n\r\n	2.实现\r\n\r\n	一种类与接口的关系，表示类是接口所有特征和行为的实现。UML中用虚线空心三角形箭头表示。\r\n\r\n	3.依赖\r\n\r\n	一种使用的关系，即一个类的实现需要另一个类的协助。方法参数需要传入另一个类的对象，就表示依赖这个类。\r\n\r\n	UML用虚线箭头表示，指向被依赖的类。\r\n\r\n	4.关联\r\n\r\n	这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的，一般是长期性的。一个类的全局变量引用了另一个类，就表示关联了这个类。\r\n\r\n	UML用实线箭头表示，指向被依引用的类。\r\n\r\n	5.聚合\r\n\r\n	聚合关联关系的一种特例，是强的关联关系。聚合是整体和个体之间的关系，即has-a的关系，整体与个体可以具有各自的生命周期，部分可以属于多个整体对象，也可以为多个整体对象共享。程序中聚合和关联关系是一致的，只能从语义级别来区分。\r\n\r\n	UML用尾部为空心菱形的实线箭头表示，箭头由部分指向整体。\r\n\r\n	6.组合\r\n\r\n	组合也是关联关系的一种特例。组合是一种整体与部分的关系，即contains-a的关系，比聚合更强。部分与整体的生命周期一致，整体的生命周期结束也就意味着部分的生命周期结束，组合关系不能共享。程序中组合和关联关系是一致的，只能从语义级别来区分。\r\n\r\n	UML用尾部为实心菱形的实线箭头表示，箭头由部分指向整体。\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;\r\n\r\n	&nbsp;', '020601', 'king', '2022-02-18 23:44:04', '0', '0');
  INSERT INTO `article` VALUES ('278', '开发运维中常用的Linux命令', '', '<p>\r\n	<!-- 通过后台传递给模板的数据赋值，转义过的标签<dependencies>会被自动反转义为<dependencies>\r\n									         因此改为通过ajax请求接口，得到的文章内容（不会被反转义）通过js赋值给CKEditor编辑器。\r\n									 	 --></p>\r\n<p>\r\n	<span style=\"font-size: 16px;\">变换目录：</span><strong style=\"font-size: 16px;\">cd [path]</strong><span style=\"font-size: 16px;\">&nbsp;,如cd /usr/local</span></p>\r\n<p>\r\n	<span style=\"font-size: 16px;\">使用yum命令安装程序：&nbsp;</span><strong style=\"font-size: 16px;\">yum install [servername]</strong><span style=\"font-size: 16px;\">, 如yum install openssh-server</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">解压文件<strong>tar&nbsp;-zxvf [filename]</strong>,&nbsp; 如tar&nbsp;-zxvf nginx-1.17.0.tar.gz&nbsp;</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">查看文件：<strong>cat [path]</strong>, 如cat /etc/ssh/sshd_config</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">编辑文件，<strong>vi&nbsp;</strong></span><strong><strong style=\"font-size: 16px;\">&nbsp;[path]</strong></strong><strong style=\"font-size: 16px;\">，</strong><span style=\"font-size: 16px;\">如vi /etc/ssh/sshd_config，<strong>键入i开始编辑，esc退出编辑，:wq保存退出</strong>。</span></p>\r\n<p>\r\n	<span style=\"font-size: 16px;\">查看进程启动情况：<strong>ps -e|grep [keyword]</strong>，grep对匹配一个或多个正则表达式的文本进行搜索，如 ps -e|grep ssh</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">根据端口查询进程：</span><strong style=\"font-size: 16px;\">netstat -lnp |grep [port]</strong>，<span style=\"font-size: 16px;\">如</span><span style=\"font-size:16px;\">netstat -lnp |grep 8081</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">杀掉进程：<strong>kill -9&nbsp; [pid]</strong>&nbsp;, 如kill -9 11749</span></p>\r\n<p>\r\n	<span style=\"font-size:16px;\">启动java程序：<strong>nohup</strong><strong>&nbsp;java -jar [xxx.jar]</strong>&nbsp;<strong>&amp;，</strong>如nohup&nbsp;java -jar klcms.jar&nbsp;&amp;</span></p>\r\n', '变换目录：cd [path]&nbsp;,如cd /usr/local\r\n\r\n	使用yum命令安装程序：&nbsp;yum install [servername], 如yum install openssh-server\r\n\r\n	解压文件tar&nbsp;-zxvf [filename],&nbsp; 如tar&nbsp;-zxvf nginx-1.17.0.tar.gz&nbsp;\r\n\r\n	查看文件：cat [path], 如cat /etc/ssh/sshd_config\r\n\r\n	编辑文件，vi&nbsp;&nbsp;[path]，如vi /etc/ssh/sshd_config，键入i开始编辑，esc退出编辑，:wq保存退出。\r\n\r\n	查看进程启动情况：ps -e|grep [keyword]，grep对匹配一个或多个正则表达式的文本进行搜索，如 ps -e|grep ssh\r\n\r\n	根据端口查询进程：netstat -lnp |grep [port]，如netstat -lnp |grep 8081\r\n\r\n	杀掉进程：kill -9&nbsp; [pid]&nbsp;, 如kill -9 11749\r\n\r\n	启动java程序：nohup&nbsp;java -jar [xxx.jar]&nbsp;&amp;，如nohup&nbsp;java -jar klcms.jar&nbsp;&amp;', '020205', 'king', '2022-02-19 08:54:37', '0', '0');
  
  -- ----------------------------
  -- Table structure for category
  -- ----------------------------
  DROP TABLE IF EXISTS `category`;
  CREATE TABLE `category` (
    `id` varchar(16) NOT NULL,
    `pid` varchar(8) DEFAULT '0' COMMENT '父级Id',
    `name` varchar(32) NOT NULL,
    `icon` varchar(32) DEFAULT NULL,
    `remark` varchar(512) DEFAULT NULL,
    `sort` int(11) DEFAULT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  
  -- ----------------------------
  -- Records of category
  -- ----------------------------
  INSERT INTO `category` VALUES ('0201', '02', '基础技术', 'fab fa-elementor', '计算机原理、编程语言、操作系统、网络技术、数据库原理、数据结构与算法', '5');
  INSERT INTO `category` VALUES ('0203', '02', '服务端技术', 'fas fa-server', 'Web服务端技术', '2');
  INSERT INTO `category` VALUES ('0204', '02', '前端开发', 'fas fa-desktop', 'Web前端、小程序、Android', '4');
  INSERT INTO `category` VALUES ('0205', '02', '后端架构', null, '高性能、高并发、高可用架构。后端、中间件、数据库等相关组件的规划，组件间通讯方案，分布式与集群的规划等', '3');
  INSERT INTO `category` VALUES ('020101', '0201', '编程语言', null, '汇编语言、C、C++、Java', null);
  INSERT INTO `category` VALUES ('020103', '0201', '操作系统', null, 'Window、Linux的常用命令，开发和运维中涉及到的知识点', null);
  INSERT INTO `category` VALUES ('020301', '0203', 'ASP.Net', null, 'ASP.Net 、ASP.Net MVC', null);
  INSERT INTO `category` VALUES ('020302', '0203', 'PHP Web', null, 'php mvc 、yii、thinkphp', null);
  INSERT INTO `category` VALUES ('020303', '0203', 'Java Web实践（SSM）', null, 'SSM、SpringBoot', null);
  INSERT INTO `category` VALUES ('0206', '02', 'Java专题', null, 'Java编程思想、Java虚拟机', '1');
  INSERT INTO `category` VALUES ('020401', '0204', 'Html/Html5', null, null, null);
  INSERT INTO `category` VALUES ('020402', '0204', 'Css/Css3', null, '', null);
  INSERT INTO `category` VALUES ('020403', '0204', 'JavaScript/Ajax', null, '', null);
  INSERT INTO `category` VALUES ('020405', '0204', 'Web前端框架', null, 'weback、vue、react', null);
  INSERT INTO `category` VALUES ('020105', '0201', '数据库原理与技术', null, '', null);
  INSERT INTO `category` VALUES ('020503', '0205', '存储方案', null, '', null);
  INSERT INTO `category` VALUES ('020204', '0202', '版本管理', null, 'Git、Gitlab、SVN', null);
  INSERT INTO `category` VALUES ('020205', '0202', '运维及其他', null, '', null);
  INSERT INTO `category` VALUES ('020406', '0204', 'Android', null, '', null);
  INSERT INTO `category` VALUES ('020501', '0205', '微服务架构（SpringCloud）', null, '微服务治理框架及技术', null);
  INSERT INTO `category` VALUES ('020502', '0205', '消息通讯', null, '', null);
  INSERT INTO `category` VALUES ('0202', '02', '综合其他', 'fas fa-tools', '开发环境、设计软件、IDE、浏览器、运维等', '6');
  INSERT INTO `category` VALUES ('020104', '0201', '网络技术', null, 'HTTP（S）、TCP/IP、SSL/TLS、数字证书与加密技术', null);
  INSERT INTO `category` VALUES ('020201', '0202', '开发运行环境', null, '服务器端系统环境（Nginx、Java、数据库）、开发机环境（Java/Maven/Node环境、SecureCRT/SecureFXPortable 、Navicat、InfluxDBStudio、RedisDesktopManager ）', null);
  INSERT INTO `category` VALUES ('020202', '0202', '设计软件', null, '原型设计软件、UML设计软件（Enterprise Architect等）、数据库设计软件（PowerDesigner等）、思维导图（XMind等）', null);
  INSERT INTO `category` VALUES ('020203', '0202', 'IDE', null, 'IDEA、Eclipse、PhpStorm、WebStorm、Android Studio、Visual Studio等，工程构建工具（Maven/Gradle/Node/Webpack等）、辅助工具（浏览器开发者工具、Fiddler、Wireshark、AnyColorSpy）', null);
  INSERT INTO `category` VALUES ('020504', '0205', '设计模式应用', null, '', null);
  INSERT INTO `category` VALUES ('020505', '0205', '三高架构', null, '', null);
  INSERT INTO `category` VALUES ('020601', '0206', 'Java语言', null, '', null);
  INSERT INTO `category` VALUES ('020602', '0206', 'Java虚拟机', null, '', null);
  INSERT INTO `category` VALUES ('020603', '0206', 'Java并发编程', null, '', null);
  INSERT INTO `category` VALUES ('020604', '0206', 'Java类库API', null, '', null);
  INSERT INTO `category` VALUES ('020605', '0206', 'Class文件', null, '字节码文件', null);
  INSERT INTO `category` VALUES ('020102', '0201', '数据结构与算法', null, '', null);
  INSERT INTO `category` VALUES ('020606', '0206', 'Spring框架', null, '', null);
  INSERT INTO `category` VALUES ('020304', '0203', 'SpringCloud实践', null, 'SpringCloud项目构建过程，及相关问题解决', null);
  
  -- ----------------------------
  -- Table structure for dept
  -- ----------------------------
  DROP TABLE IF EXISTS `dept`;
  CREATE TABLE `dept` (
    `deptno` int(11) NOT NULL,
    `dname` varchar(32) DEFAULT NULL,
    `db_source` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`deptno`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
  -- ----------------------------
  -- Records of dept
  -- ----------------------------
  INSERT INTO `dept` VALUES ('0', 'klfront', 'klcms');
  
  -- ----------------------------
  -- Table structure for user
  -- ----------------------------
  DROP TABLE IF EXISTS `user`;
  CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `username` varchar(32) NOT NULL,
    `nickname` varchar(32) DEFAULT NULL,
    `password` varchar(64) NOT NULL,
    `email` varchar(32) NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
  
  -- ----------------------------
  -- Records of user
  -- ----------------------------
  INSERT INTO `user` VALUES ('11', 'admin', 'admin', '03cba5d825a27d5d60487b20744c9', 'kinglong1984@126.com');
  