动手写web框架(1): 加载配置项 发表于 2017-02-16 | 分类于 动手写web框架 定义框架所需的配置项 smart.properties在src/main/resources目录下创建名为smart.properties的文件。1234567891011jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost ... 阅读全文 »
Java注解 发表于 2017-02-16 | 分类于 Java SE 注解是JDK 1.5中引入的,可以提供代码的额外信息。 元注解元注解的作用就是负责注解其他注解,Java定义了4个标准的元注解类型: @Target @Retention @Documented @Inherited @Target@Target说明了注解所修饰的对象范围,ElementType ... 阅读全文 »
Spring: AOP原理 发表于 2017-02-15 | 分类于 Spring AOPAOP,面向切面编程,将系统公共服务(例如,日志记录、事务管理、缓存、性能监测等)从核心业务逻辑中剥离出封装成独立的模块(切面)。 AOP的具体实现由两种:编译期静态织入和运行期动态代理。 AspectJ 是一个基于 Java 语言的 AOP 框架,提供了强大的 AOP 功能,其他很多 A ... 阅读全文 »
Java异常 发表于 2017-02-15 | 分类于 Java SE 异常情形是指阻止当前方法或者作用域继续执行的问题。 为什么要使用异常 异常的处理机制可以确保我们程序的健壮性,提高系统可用率。 在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值。虽然可以解决异常问题 ... 阅读全文 »
表连接JOIN 发表于 2017-02-14 | 分类于 数据库 内连接内连接:用比较运算符比较要连接的列的值,JOIN或INNER JOIN。 eg: select * from t1 join t2 on t1.id = t2.id; 外连接外连接包括:LEFT JOIN、RIGHT JOIN或FULL JOIN。 LEFT JOIN左连接:LEFT JOIN ... 阅读全文 »
SQL优化 发表于 2017-02-14 | 分类于 数据库 SQL优化的一般步骤通过show status命令了解SQL执行频率MySQL通过show [session|global] status命令可以提供服务器状态信息,默认是session(当前连接),global会显示自数据库上次启动至今。 eg: show status like 'Com ... 阅读全文 »
存储过程、函数和触发器 发表于 2017-02-14 | 分类于 数据库 存储过程存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。存储过程经过语法检查和编译的SQL语句,所以执行速度比普通的SQL语句的执行速度快。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 参数有三种(IN、OUT ... 阅读全文 »
数据库索引 发表于 2017-02-14 | 分类于 数据库 索引是对数据库表中一个或多个列的值进行排序的数据结构。建立索引的目的是加快表中记录的查找或排序。 如果没有索引,必须遍历整个表,直到找到目标记录为止;有了索引之后即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。 类型普通索引普通索引是最基本的数据库索引,没有任何限制。 唯一索 ... 阅读全文 »
hashCode()和equals() 发表于 2017-02-13 | 分类于 Java SE hashcode的作用Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。 虽然,每个Java类都包含hashCode() 函数。但是,仅仅当创建某个“类的散列表”(HashMap,Hashtable,Hash ... 阅读全文 »
数据库事务 发表于 2017-02-13 | 分类于 数据库 一个事务是可以被看作一系列SQL语句的集合。这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 事务的ACID特性原子性原子性(Atomicity):事务对数据的修改,要么全都执行,要么全都不执行。一个事务对同一数据项的多次读取的结果一定是相同的。 一致性一致性(Consistency ... 阅读全文 »