1.Java 集合类框架的基本接口有哪些? 为什么集合类没有实现 Cloneable 和 Serializable 接口? 什么是迭代器 (Iterator)? Iterator 和 ListIterator 的区别是什么? has

Size: px
Start display at page:

Download "1.Java 集合类框架的基本接口有哪些? 为什么集合类没有实现 Cloneable 和 Serializable 接口? 什么是迭代器 (Iterator)? Iterator 和 ListIterator 的区别是什么? has"

Transcription

1 JAVA 面试宝典 V4.0 版本 目录 JAVA 面试题... 1 基础 简述 JDK 跟 JRE 的区别 简述 path 跟 classpath 的区别 Java 的关键字中有没有 goto static 关键字是什么意思?Java 中是否可以覆盖 (override) 一个 private 或者是 static 的方法? Java 中的方法覆盖 (Overriding) 和方法重载 (Overloading) 是什么意思? Overload 和 Override 的区别? 接口和抽象类的区别是什么? 接口是否可继承接口? 抽象类是否可实现 (implements) 接口? 抽象类是否可继承实体类 (concrete class)? Java 的基本数据类型跟引用数据类型分别有哪些? char 型变量中能不能存贮一个中文汉字? 为什么? 简述 & 和 && 的区别 Java 中垃圾回收有什么目的? 什么时候进行垃圾回收? 如果对象的引用被置为 null, 垃圾收集器是否会立即释放对象占用的内存?... 9 多线程 进程和线程的区别是什么? 创建线程有几种不同的方式? 概括的解释下线程的几种可用状态 同步方法和同步代码块的区别是什么? 什么是死锁 (deadlock)? 如何确保 N 个线程可以访问 N 个资源同时又不导致死锁? sleep() 和 wait() 的区别 实现同步的方式 集合 第 1 页, 共 62 页

2 1.Java 集合类框架的基本接口有哪些? 为什么集合类没有实现 Cloneable 和 Serializable 接口? 什么是迭代器 (Iterator)? Iterator 和 ListIterator 的区别是什么? hashCode() 和 equals() 方法的重要性体现在什么地方? HashMap 和 Hashtable 有什么区别? ArrayList 和 LinkedList 有什么区别? Comparable 和 Comparator 接口是干什么的? 列出它们的区别 Enumeration 接口和 Iterator 接口的区别有哪些? HashSet 和 TreeSet 有什么区别? JAVAWEB Ajax Servlet Cookie&Session 什么是 Cookie Cookie 机制 什么是 Session Session 机制 如何利用 cookie 实现自动登录? 保存 session id 有几种方法? session 什么时候被创建? session 何时被删除? cookie 机制和 session 机制的区别? MySQL 数据库 MySQL 事务 MySQL 索引 普通索引 创建索引 修改表结构 第 2 页, 共 62 页

3 3. 创建表的时候直接指定 删除索引的语法 唯一索引 创建索引 修改表结构 创建表的时候直接指定 使用 ALTER 命令添加和删除索引 显示索引信息 MySQL 临时表 MySQL 处理重复数据 ). MySQL 处理重复数据 ). 防止表中出现重复数据 ). 查询重复记录 ). 统计重复数据 ). 过滤重复数据 ). 删除重复数据 MySQL 导出数据 ). 使用 SELECT... INTO OUTFILE 语句导出数据 ).SELECT... INTO OUTFILE 语句有以下属性 : ). 导出表作为原始数据 ). 导出 SQL 格式的数据 ). 将数据表及数据库拷贝至其他主机 MySQL 导入数据 使用 LOAD DATA 导入数据 使用 mysqlimport 导入数据 mysqlimport 的常用选项介绍 存储过程 ). 创建存储过程 第 3 页, 共 62 页

4 3). 循环语句 Oracle 数据库 对索引的理解 : 索引工作原理 索引的创建 索引的弊端 : 执行计划 explain plan 数据字典 Pl/sql 游标 cursor 存储过程 program window--procedure 存储过程和存储函数的区别 : 触发器 : 数据库三范式是什么? 第一范式 (1NF): 第二范式 (2NF): 第三范式的要求如下 : Struts Struts2 的六个基本包 struts2 配置文件 Struts2 常用注解 struts2 工作流程 Struts2 问题合集 说下 Struts 的设计模式 拦截器和过滤器的区别 struts2 有哪些优点? struts2 框架的核心控制器是什么? 它有什么作用? struts2 默认能解决 get 和 post 提交方式的乱码问题吗? 值栈 ValueStack 的原理与生命周期? ActionContext ServletContext pagecontext 的区别? result 的 type 属性中有哪几种结果类型? servlet 和 filter 的区别 第 4 页, 共 62 页

5 Hibernate Hibernate 的 jar 包 Hibernate 的核心配置文件 Hibernate 的核心 API 接口 Configuration 接口 SessionFactory 接口 Session 接口 Transaction 接口 Query 和 Criteria 接口 hibernate 常用注解 Hibernate 的执行流程 Hibernate 问题合集 Hibernate 中 get 和 load 有什么不同之处? Hibernate 中 save persist 和 saveorupdate 这三个方法的不同之处? Hibernate 中的命名 SQL 查询指的是什么? Hibernate 中的 SessionFactory 有什么作用? SessionFactory 是线程安全的吗? Hibernate 中的 Session 指的是什么? 可否将单个的 Session 在多个线程间进行共享? Hibernate 中二级缓存指的是什么? Hibernate 中的查询缓存指的是什么? Spring Spring 常用 jar 包 Spring 核心 IOC AOP IOC,DI AOP spring 常用注解 Spring 常见问题 spring 配置 bean 实例化有哪些方式? Spring Bean 的生命周期? Bean 注入属性有哪几种方式? Spring 如何处理线程并发问题? 第 5 页, 共 62 页

6 3.4.5 介绍一下 Spring 的事物管理 通知有哪些类型? BeanFactory 接口和 ApplicationContext 接口有什么区别? SpringMVC 简单的谈一下 SpringMVC 的工作流程? 如何解决 POST 请求中文乱码问题,GET 的又如何处理呢? 问题 :springmvc 常用注解有哪些? 问题 : 一个 bean 配置在 springmvc 的配置文件如 springmvc-servlet.xml 跟配置在 spring 全局配置文件 applicationcontext 中有什么区别 Mybatis mybatis 比 IBatis 比较大的几个改进是什么? 接口绑定有几种实现方式, 分别是怎么实现的? 什么情况下用注解绑定, 什么情况下用 xml 绑定 myBatis 实现一对一有几种方式? 具体怎么操作的 myBatis 实现一对多有几种方式, 怎么操作的 myBatis 里面的动态 Sql 是怎么设定的? 用什么语法? 讲下 mybatis 的缓存 myBatis(IBatis) 的好处是什么 Struts2 和 SpringMVC 对比 Hibernate 和 Mybatis 对比 开发对比开发速度 对象管理与抓取策略对象管理 缓存机制对比 Hibernate 缓存 优势对比 面试题数据库 ( 附件 ) 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名 所有部门之间的比赛组合 显示文章标题, 发帖人 最后回复时间 删除除了 id 号不同, 其他都相同的学生冗余信息 航空网的几个航班查询题 : 查询起飞城市是北京的所有航班, 按到达城市的名字排序 第 6 页, 共 62 页

7 2 查询北京到上海的所有航班纪录 ( 起飞城市, 到达城市, 起飞时间, 航班号 ) 查询具体某一天 ( ) 的北京到上海的的航班次数 基础 1. 简述 JDK 跟 JRE 的区别 Jdk 是 java 开发人员在开发过程使用的软件开发包, 他提供了 java 的开发环境和运行环境 JRE 是 Java Runtime Enviroment 是指 Java 的运行环境 如果你只想跑 java 程序, 只要安装 jre 就够了, 如果要从事开发就得安装 jdk 2. 简述 path 跟 classpath 的区别 Path 是系统变量, 跟 java 无关, 里面存放的是各种可执行的应用程序的路径 Classpath 是给 java 使用的, 从字面上来理解, 就是类的路径, 主要是模仿 path, 将类文件 的路径配置到 classpath 中实现在系统的任何位置可以对类文件进行编译和执行 3.Java 的关键字中有没有 goto Goto 是 java 中的保留字不是关键字的一员 4. static 关键字是什么意思?Java 中是否可以覆盖 (override) 一个 private 或者是 static 的方法? static 关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问 Java 中 static 方法不能被覆盖, 因为方法覆盖是基于运行时动态绑定的, 而 static 方法是编译时静态绑定的 static 方法跟类的任何实例都不相关, 所以概念上不适用 第 7 页, 共 62 页

8 5.Java 中的方法覆盖 (Overriding) 和方法重载 (Overloading) 是 什么意思? Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的 情况 与此相对, 方法覆盖是说子类重新定义了父类的方法 方法覆盖必须有相同的方法名, 参数列表和返回类型 覆盖者可能不会限制它所覆盖的方法的访问 6.Overload 和 Override 的区别? 方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现 重写 Overriding 是父类与子类之间多态性的一种表现, 重载 Overloading 是一个类中多态性的一种表现 如果在子类中定义某方法与其父类有相同的名称和参数, 我们说该方法被重写 (Overriding) 子类的对象使用这个方法时, 将调用子类中的定义, 对它而言, 父类中的定义如同被 屏蔽 了 如果在一个类中定义了多个同名的方法, 它们或有不同的参数个数或有不同的参数类型, 则称为方法的重载 (Overloading) 7. 接口和抽象类的区别是什么? Java 提供和支持创建抽象类和接口 它们的实现有共同点, 不同点在于 : 接口中所有的方法隐含的都是抽象的 而抽象类则可以同时包含抽象和非抽象的方法 类可以实现很多个接口, 但是只能继承一个抽象类类可以不实现抽象类和接口声明的所有方法, 当然, 在这种情况下, 类也必须得声明成是抽象的 抽象类可以在不提供接口方法实现的情况下实现接口 Java 接口中声明的变量默认都是 final 的 抽象类可以包含非 final 的变量 Java 接口中的成员函数默认是 public 的 抽象类的成员函数可以是 private,protected 或者是 public 接口是绝对抽象的, 不可以被实例化 抽象类也不可以被实例化, 但是, 如果它包含 main 方法的话是可以被调用的 也可以参考 JDK8 中抽象类和接口的区别 8. 接口是否可继承接口? 抽象类是否可实现 (implements) 接 口? 抽象类是否可继承实体类 (concrete class)? 接口可以继承接口 抽象类可以实现 (implements) 接口, 抽象类是否可继承实体类, 但前提 是实体类必须有明确的构造函数 第 8 页, 共 62 页

9 9.Java 的基本数据类型跟引用数据类型分别有哪些? Java 的基本数据类型有 8 个分别是整数型 byte shrot int long char 浮点型 float double 字符型 char 布尔型 bollean 10.char 型变量中能不能存贮一个中文汉字? 为什么? char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字, 所以, char 型变量中当然可以存储汉字啦 11. 简述 & 和 && 的区别 & 和 && 都可以用作逻辑与的运算符, 表示逻辑与 (and), 当运算符两边的表达式的结果都为 true 时, 整个运算结果才为 true, 否则, 只要有一方为 false, 则结果为 false && 还具有短路的功能, 即如果第一个表达式为 false, 则不再计算第二个表达式 & 还可以用作位运算符 12.Java 中垃圾回收有什么目的? 什么时候进行垃圾回收? 垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源 13. 如果对象的引用被置为 null, 垃圾收集器是否会立即释放 对象占用的内存? 不会, 在下一个垃圾回收周期中, 这个对象将是可被回收的 多线程 1. 进程和线程的区别是什么? 进程是执行着的应用程序, 而线程是进程内部的一个执行序列 一个进程可以有多个线程 线程又叫做轻量级进程 2. 创建线程有几种不同的方式? 有三种方式可以用来创建线程 : 第 9 页, 共 62 页

10 继承 Thread 类实现 Runnable 接口应用程序可以使用 Executor 框架来创建线程池实现 Runnable 接口这种方式更受欢迎, 因为这不需要继承 Thread 类 在应用设计中已经继承了别的对象的情况下, 这需要多继承 ( 而 Java 不支持多继承 ), 只能实现接口 同时, 线程池也是非常高效的, 很容易实现和使用 3. 概括的解释下线程的几种可用状态 1. 新建 ( new ): 新创建了一个线程对象 2. 可运行 ( runnable ): 线程对象创建后, 其他线程 ( 比如 main 线程 ) 调用了该对象的 start () 方法 该状态的线程位于可运行线程池中, 等待被线程调度选中, 获取 cpu 的使用权 3. 运行 ( running ): 可运行状态 ( runnable ) 的线程获得了 cpu 时间片 ( timeslice ), 执行程序代码 4. 阻塞 ( block ): 阻塞状态是指线程因为某种原因放弃了 cpu 使用权, 也即让出了 cpu timeslice, 暂时停止运行 直到线程进入可运行 ( runnable ) 状态, 才有机会再次获得 cpu timeslice 转到运行 ( running ) 状态 阻塞的情况分三种 : ( 一 ). 等待阻塞 : 运行 ( running ) 的线程执行 o. wait () 方法, JVM 会把该线程放入等待队列 ( waitting queue ) 中 ( 二 ). 同步阻塞 : 运行 ( running ) 的线程在获取对象的同步锁时, 若该同步锁被别的线程占用, 则 JVM 会把该线程放入锁池 ( lock pool ) 中 ( 三 ). 其他阻塞 : 运行 ( running ) 的线程执行 Thread. sleep ( long ms ) 或 t. join () 方法, 或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态 当 sleep () 状态超时 join () 等待线程终止或者超时 或者 I / O 处理完毕时, 线程重新转入可运行 ( runnable ) 状态 5. 死亡 ( dead ): 线程 run () main () 方法执行结束, 或者因异常退出了 run () 方法, 则该线程结束生命周期 死亡的线程不可再次复生 举例 : 早上打车去上班新建 ( 准备叫一辆嘀嘀打车 ) 可运行 ( 找到一辆可以带你去上班的车 ) 运行 ( 司机接到你, 带你去上班 ) 阻塞 ( 路上堵车了 ) 死亡 ( 到公司了, 付钱下车 ) 4. 同步方法和同步代码块的区别是什么? 同步方法默认用 this 或者当前类 class 对象作为锁 ; 同步代码块可以选择以什么来加锁, 比同步方法要更细颗粒度, 我们可以选择只同步会发 生同步问题的部分代码而不是整个方法 ; 第 10 页, 共 62 页

11 5. 什么是死锁 (deadlock)? 两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁 结 果就是这些线程都陷入了无限的等待中 6. 如何确保 N 个线程可以访问 N 个资源同时又不导致死锁? 使用多线程的时候, 一种非常简单的避免死锁的方式就是 : 指定获取锁的顺序, 并强制线程 按照指定的顺序获取锁 因此, 如果所有的线程都是以同样的顺序加锁和释放锁, 就不会出 现死锁了 7.sleep() 和 wait() 的区别 sleep 指线程被调用时, 占着 CPU 不工作, 形象地说明为 占着 CPU 睡觉, 此时, 系统的 CPU 部分资源被占用, 其他线程无法进入, 会增加时间限制 wait 指线程处于进入等待状态, 形象地说明为 等待使用 CPU, 此时线程不占用任何资源, 不增加时间限制 8. 实现同步的方式 同步是多线程中的重要概念 同步的使用可以保证在多线程运行的环境中, 程序不会产生设计之外的错误结果 同步的实现方式有两种, 同步方法和同步块, 这两种方式都要用到 synchronized 关键字 1. 同步方法即有 synchronized 关键字修饰的方法 由于 java 的每个对象都有一个内置锁, 当用此关键字修饰方法时, 内置锁会保护整个方法 在调用该方法前, 需要获得内置锁, 否则就处于阻塞状态 代码如 : public synchronized void save(){} 注 : synchronized 关键字也可以修饰静态方法, 此时如果调用该静态方法, 将会锁住整个类 2. 同步代码块即有 synchronized 关键字修饰的语句块 被该关键字修饰的语句块会自动被加上内置锁, 从而实现同步代码如 : synchronized(object){ } 注 : 同步是一种高开销的操作, 因此应该尽量减少同步的内容 通常没有必要同步整个方法, 使用 synchronized 代码块同步关键代码即可 第 11 页, 共 62 页

12 集合 1.Java 集合类框架的基本接口有哪些? Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类 Java 集合类里面最基本的接口有 : Collection: 代表一组对象, 每一个对象都是它的子元素 Set: 不包含重复元素的 Collection List: 有顺序的 collection, 并且可以包含重复元素 Map: 可以把键 (key) 映射到值 (value) 的对象, 键不能重复 2. 为什么集合类没有实现 Cloneable 和 Serializable 接口? 克隆 (cloning) 或者是序列化 (serialization) 的语义和含义是跟具体的实现相关的 因此, 应该 由集合类的具体实现来决定如何被克隆或者是序列化 3. 什么是迭代器 (Iterator)? Iterator 接口提供了很多对集合元素进行迭代的方法 每一个集合类都包含了可以返回迭代 器实例的迭代方法 迭代器可以在迭代的过程中删除底层集合的元素, 但是不可以直接调用 集合的 remove(object Obj) 删除, 可以通过迭代器的 remove() 方法删除 4.Iterator 和 ListIterator 的区别是什么? Iterator 可用来遍历 Set 和 List 集合, 但是 ListIterator 只能用来遍历 List Iterator 对集合只能是前向遍历,ListIterator 既可以前向也可以后向 ListIterator 实现了 Iterator 接口, 并包含其他的功能, 比如 : 增加元素, 替换元素, 获取前一个和后一个元素的索引, 等等 5.hashCode() 和 equals() 方法的重要性体现在什么地方? Java 中的 HashMap 使用 hashcode() 和 equals() 方法来确定键值对的索引, 当根据键获取值的时候也会用到这两个方法 如果没有正确的实现这两个方法, 两个不同的键可能会有相同的 hash 值, 因此, 可能会被集合认为是相等的 而且, 这两个方法也用来发现重复元素 所以这两个方法的实现对 HashMap 的精确性和正确性是至关重要的 6.HashMap 和 Hashtable 有什么区别? HashMap 和 Hashtable 都实现了 Map 接口, 因此很多特性非常相似 但是, 他们有以下不 第 12 页, 共 62 页

13 同点 : HashMap 允许键和值是 null, 而 Hashtable 不允许键或者值是 null Hashtable 是同步的, 而 HashMap 不是 因此,HashMap 更适合于单线程环境, 而 Hashtable 适合于多线程环境 7.ArrayList 和 LinkedList 有什么区别? ArrayList 和 LinkedList 都实现了 List 接口, 他们有以下的不同点 : ArrayList 是基于索引的数据接口, 它的底层是数组 它可以以 O(1) 时间复杂度对元素进行随机访问, 因此查询某个元素的时间短 与此对应,LinkedList 是以元素列表的形式存储它的数据, 每一个元素都和它的前一个和后一个元素链接在一起, 在这种情况下, 查找某个元素的时间长 相对于 ArrayList,LinkedList 的插入, 添加, 删除操作速度更快, 因为当元素被添加到集合任意位置的时候, 不需要像数组那样重新计算大小或者是更新索引 8.Comparable 和 Comparator 接口是干什么的? 列出它们的 区别 java 提供了只包含一个 compareto() 方法的 Comparable 接口 这个方法可以个给两个对象排序 具体来说, 它返回负数,0, 正数来表明输入对象小于, 等于, 大于已经存在的对象 Java 提供了包含 compare() 和 equals() 两个方法的 Comparator 接口 compare() 方法用来给两个输入参数排序, 返回负数,0, 正数表明第一个参数是小于, 等于, 大于第二个参数 equals() 方法需要一个对象作为参数, 它用来决定输入参数是否和 comparator 相等 只有当输入参数也是一个 comparator 并且输入参数和当前 comparator 的排序结果是相同的时候, 这个方法才返回 true 9.Enumeration 接口和 Iterator 接口的区别有哪些? Enumeration 速度是 Iterator 的 2 倍, 同时占用更少的内存 但是,Iterator 远远比 Enumeration 安全, 因为其他线程不能够修改正在被 iterator 遍历的集合里面的对象 同时,Iterator 允许 调用者删除底层集合里面的元素, 这对 Enumeration 来说是不可能的 10.HashSet 和 TreeSet 有什么区别? Treeset 中的数据是自动排好序的, 不允许放入 null 值 HashSet 中的数据是无序的, 可以放入 null, 但只能放入一个 null, 两者中的值都不能重复, 就如数据库中唯一约束 HashSet 要求放入的对象必须实现 HashCode() 方法, 放入的对象, 是以 hashcode 码作为标识的, 而具有相同内容的 String 对象,hashcode 是一样, 所以放入的内容不能重复 但是同一个类的对象可以放入不同的实例 第 13 页, 共 62 页

14 JAVAWEB 1.Ajax Ajax 的原理简单来说通过 XmlHttpRequest 对象来向服务器发异步请求, 从服务器获得数据, 然后用 javascript 来操作 DOM 而更新页面 这其中最关键的一步就是从服务器获得请求数据 XMLHttpRequest 是 ajax 的核心机制, 它是在 IE5 中首先引入的, 是一种支持异步请求的技术 简单的说, 也就是 javascript 可以及时向服务器提出请求和处理响应, 而不阻塞用户 达到无刷新的效果 优点 : Ajax 的给我们带来的好处大家基本上都深有体会 : 1 最大的一点是页面无刷新, 在页面内与服务器通信, 给用户的体验非常好 2 使用异步方式与服务器通信, 不需要打断用户的操作, 具有更加迅速的响应能力 3 可以把以前一些服务器负担的工作转嫁到客户端, 利用客户端闲置的能力来处理, 减轻服务器和带宽的负担, 节约空间和宽带租用成本 并且减轻服务器的负担,ajax 的原则是 按需取数据, 可以最大程度的减少冗余请求, 和响应对服务器造成的负担 缺点 : 下面所阐述的 ajax 的缺陷都是它先天所产生的 1 ajax 干掉了 back 按钮, 即对浏览器后退机制的破坏 后退按钮是一个标准的 web 站点的重要功能, 但是它没法和 js 进行很好的合作 这是 ajax 所带来的一个比较严重的问题. 2 安全问题技术同时也对 IT 企业带来了新的安全威胁,ajax 技术就如同对企业数据建立了一个直接通道 这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑 ajax 的逻辑可以对客户端的安全扫描技术隐藏起来, 允许黑客从远端服务器上建立新的攻击 还有 ajax 也难以避免一些已知的安全弱点, 诸如跨站点脚步攻击 SQL 注入攻击和基于 credentials 的安全漏洞等 2.Servlet 主要分四大选择器, 分别是基本选择器 层次选择器 过滤选择器 属性过滤选择器 常用的选择器分为以下几种 1. 基本选择器 : Id 选择器 class 选择器 element 选择器 * 选择器 并列选择器 2. 层级选择器 : parent > child( 直系子元素 ) prev + next( 下一个兄弟元素, 等同于 next() 方法 ) prev ~ siblings(prev 元素的所有兄弟元素, 等同于 nextall() 方法 ) 3. 过滤选择器 : 第 14 页, 共 62 页

15 first 和 :last( 取第一个元素或最后一个元素 ) even 和 :odd( 取偶数索引或奇数索引元素, 索引从 0 开始,even 表示偶数,odd 表示奇数 ) t( 取非元素 ) eq(x) ( 取指定索引的元素 ) gt(x) 和 :lt(x)( 取大于 x 索引或小于 x 索引的元素 ) header( 取 H1~H6 标题元素 ) 3.Cookie&Session 会话 (Session) 跟踪是 Web 程序中常用的技术, 用来跟踪用户的整个会话 常用的会话跟踪技术是 Cookie 与 Session Cookie 通过在客户端记录信息确定用户身份,Session 通过在服务器端记录信息确定用户身 份 4. 什么是 Cookie Cookie 实际上是一小段的文本信息 客户端请求服务器, 如果服务器需要记录该用户状态, 就使用 response 向客户端浏览器颁发一个 Cookie 客户端浏览器会把 Cookie 保存起来 当浏览器再请求该网站时, 浏览器把请求的网址连同该 Cookie 一同提交给服务器 服务器检查该 Cookie, 以此来辨认用户状态 服务器还可以根据需要修改 Cookie 的内容 5.Cookie 机制 在程序中, 会话跟踪是很重要的事情 理论上, 一个用户的所有请求操作都应该属于同一个会话, 而另一个用户的所有请求操作则应该属于另一个会话, 二者不能混淆 例如, 用户 A 在超市购买的任何商品都应该放在 A 的购物车内, 不论是用户 A 什么时间购买的, 这都是属于同一个会话的, 不能放入用户 B 或用户 C 的购物车内, 这不属于同一个会话 而 Web 应用程序是使用 HTTP 协议传输数据的 HTTP 协议是无状态的协议 一旦数据交换完毕, 客户端与服务器端的连接就会关闭, 再次交换数据需要建立新的连接 这就意味着服务器无法从连接上跟踪会话 即用户 A 购买了一件商品放入购物车内, 当再次购买商品时服务器已经无法判断该购买行为是属于用户 A 的会话还是用户 B 的会话了 要跟踪该会话, 必须引入一种机制 Cookie 就是这样的一种机制 它可以弥补 HTTP 协议无状态的不足 在 Session 出现之前, 基本上所有的网站都采用 Cookie 来跟踪会话 6. 什么是 Session Session 是另一种记录客户状态的机制, 不同的是 Cookie 保存在客户端浏览器中, 而 Session 保存在服务器上 客户端浏览器访问服务器的时候, 服务器把客户端信息以某种形式记录在服务器上 这就是 Session 客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了 如果说 Cookie 机制是通过检查客户身上的 通行证 来确定客户身份的话, 那么 Session 机制 第 15 页, 共 62 页

16 就是通过检查服务器上的 客户明细表 来确认客户身份 Session 相当于程序在服务器上建 立的一份客户档案, 客户来访的时候只需要查询客户档案表就可以了 7.Session 机制 除了使用 Cookie,Web 应用程序中还经常使用 Session 来记录客户端状态 Session 是服务 器端使用的一种记录客户端状态的机制, 使用上比 Cookie 简单一些, 相应的也增加了服务 器的存储压力 8. 如何利用 cookie 实现自动登录? 当用户在某个网站注册后, 就会收到一个惟一用户 ID 的 cookie 客户后来重新连接时, 这 个用户 ID 会自动返回, 服务器对它进行检查, 确定它是否为注册用户且选择了自动登录, 从而使用户无需给出明确的用户名和密码, 就可以访问服务器上的资源. 9. 保存 session id 有几种方法? A 保存 session id 的方式可以采用 cookie, 这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器 B. 由于 cookie 可以被人为的禁止, 必须有其它的机制以便在 cookie 被禁止时仍然能够把 session id 传递回服务器, 经常采用的一种技术叫做 URL 重写, 就是把 session id 附加在 URL 路径的后面, 附加的方式也有两种, 一种是作为 URL 路径的附加信息, 另一种是作为查询字符串附加在 URL 后面 网络在整个交互过程中始终保持状态, 就必须在每个客户端可能请求的路径后面都包含这个 session id C. 另一种技术叫做表单隐藏字段 就是服务器会自动修改表单, 添加一个隐藏字段, 以便在表单提交时能够把 session id 传递回服务器 10.session 什么时候被创建? 一个常见的错误是以为 session 在有客户端访问时就被创建, 然而事实是直到某 server 端程 序 ( 如 Servlet) 调用 HttpServletRequest.getSession(true) 这样的语句时才会被创建 11.session 何时被删除? A. 程序调用 HttpSession.invalidate() B. 距离上一次收到客户端发送的 session id 时间间隔超过了 session 的最大有效时间 C. 服务器进程被停止 注意关闭浏览器只会使存储在客户端浏览器内存中的 session cookie 失效, 不会使服务器端 的 session 对象失效. 第 16 页, 共 62 页

17 12.cookie 机制和 session 机制的区别? 具体来说 cookie 机制采用的是在客户端保持状态的方案, 而 session 机制采用的是在服务器端保持状态的方案 同时我们也看到, 由于在服务器端保持状态的方案在客户端也需要保存一个标识, 所以 session 机制可能需要借助于 cookie 机制来达到保存标识的目的, 但实际上还有其他选择 MySQL 数据库 1.MySQL 事务 MySQL 事务主要用于处理操作量大, 复杂度高的数据 比如说, 在人员管理系统中, 你删除一个人员, 你即需要删除人员的基本资料, 也要删除和该人员相关的信息, 如信箱, 文章等等, 这样, 这些数据库操 作语句就构成一个事务! 1. 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务 2. 事务处理可以用来维护数据库的完整性, 保证成批的 SQL 语句要么全部执行, 要么全部不执行 3. 事务用来管理 insert,update,delete 语句 一般来说, 事务是必须满足 4 个条件 (ACID): Atomicity( 原子性 ) Consistency( 稳定性 ) Isolation( 隔离性 ) Durability( 可靠性 ) 1. 事务的原子性 : 一组事务, 要么成功 ; 要么撤回 2 稳定性 : 有非法数据 ( 外键约束之类 ), 事务撤回 3 隔离性 : 事务独立运行 一个事务处理后的结果, 影响了其他事务, 那么其他事务会撤回 事务的 100% 隔离, 需要牺牲速度 4 可靠性 : 软 硬件崩溃后,InnoDB 数据表驱动会利用日志文件重构修改 可靠性和高速度不可兼 得, innodb_flush_log_at_trx_commit 选项决定什么时候吧事务保存到日志里 在 MySQL 控制台使用事务来操作 1, 开始一个事务 start transaction 2, 做保存点 savepoint 保存点名称 第 17 页, 共 62 页

18 3, 操作 4, 可以回滚, 可以提交, 没有问题, 就提交, 有问题就回滚 2. MySQL 索引 MySQL 索引的建立对于 MySQL 的高效运行是很重要的, 索引可以大大提高 MySQL 的检索速度 打个比方, 如果合理的设计且使用索引的 MySQL 是一辆兰博基尼的话, 那么没有设计和使用索引的 MySQL 就是一个人力三轮车 索引分单列索引和组合索引 单列索引, 即一个索引只包含单个列, 一个表可以有多个单列索引, 但这不是组合索引 组合索引, 即一个索包含多个列 创建索引时, 你需要确保该索引是应用在 SQL 查询语句的条件 ( 一般作为 WHERE 子句的条件 ) 实际上, 索引也是一张表, 该表保存了主键与索引字段, 并指向实体表的记录 上面都在说使用索引的好处, 但过多的使用索引将会造成滥用 因此索引也会有它的缺点 : 虽然索引大大提高了查询速度, 同时却会降低更新表的速度, 如对表进行 INSERT UPDATE 和 DELETE 因为更新表时,MySQL 不仅要保存数据, 还要保存一下索引文件 建立索引会占用磁盘空间的索引文件 1. 普通索引 1. 创建索引 这是最基本的索引, 它没有任何限制 它有以下几种创建方式 : CREATE INDEX indexname ON mytable(username(length)); 如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度 ; 如果是 BLOB 和 TEXT 类型, 必须指定 length 2. 修改表结构 ALTER mytable ADD INDEX [indexname] ON (username(length)) 3. 创建表的时候直接指定 CREATE TABLE mytable( 第 18 页, 共 62 页

19 ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexname] (username(length)) ); 4. 删除索引的语法 DROP INDEX [indexname] ON mytable; 2. 唯一索引 它与前面的普通索引类似, 不同的就是 : 索引列的值必须唯一, 但允许有空值 如果是组合索引, 则列值 的组合必须唯一 它有以下几种创建方式 : 1. 创建索引 REATE UNIQUE INDEX indexname ON mytable(username(length)) 2. 修改表结构 ALTER mytable ADD UNIQUE [indexname] ON (username(length)) 3. 创建表的时候直接指定 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexname] (username(length)) ); 第 19 页, 共 62 页

20 3. 使用 ALTER 命令添加和删除索引 有四种方式来添加数据表的索引 : 1. ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键, 这意味着索引值必须是唯一的, 且不能为 NULL 2. ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的 ( 除了 NULL 外,NULL 可能会出现多次 ) 3. ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引, 索引值可出现多次 4. ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): 该语句指定了索引为 FULLTEXT, 用于全文索引 4. 显示索引信息 你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息 可以通过添加 \G 来格式化输出信息 尝试以下实例 : mysql> SHOW INDEX FROM table_name\g MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的 临时表只在当前连接可见, 当关闭连接时,MySQL 会自动删除表并释放所有空间 临时表在 MySQL 3.23 版本中添加, 如果你的 MySQL 版本低于 3.23 版本就无法使用 MySQL 的临时表 不过现在一般很少有再使用这么低版本的 MySQL 数据库服务了 如果你使用了其他 MySQL 客户端程序连接 MySQL 数据库服务器来创建临时表, 那么只有在关闭客户端程序时才会销毁临时表, 当然你也可以手动销毁 4. MySQL 处理重复数据 1). MySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录, 有些情况我们允许重复数据的存在, 但有时候 我们也需要删除这些重复的数据 第 20 页, 共 62 页

21 2). 防止表中出现重复数据 你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY( 主键 ) 或者 UNIQUE( 唯一 ) 索 引来保证数据的唯一性 让我们尝试一个实例 : 下表中无索引及主键, 所以该表允许出现多条重复记录 CREATE TABLE person_tbl ( ); first_name CHAR(20), last_name CHAR(20), sex CHAR(10) 如果你想设置表中字段 first_name,last_name 数据不能重复, 你可以设置双主键模式来设置数据的唯 一性, 如果你设置了双主键, 那么那个键的默认值不能为 NULL, 可设置为 NOT NULL 如下所示 : CREATE TABLE person_tbl ( ); first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) 如果我们设置了唯一索引, 那么在插入重复数据时,SQL 语句将无法执行成功, 并抛出错 INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE 会忽略数据库中已经存在的 数据, 如果数据库没有数据, 就插入新的数据, 如果有数据的话就跳过这条数据 这样就可以保留数据库 中已经存在数据, 达到在间隙中插入数据的目的 以下实例使用了 INSERT IGNORE INTO, 执行后不会出错, 也不会向数据表中插入重复数据 : mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 1 row affected (0.00 sec) mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 0 rows affected (0.00 sec) INSERT IGNORE INTO 当插入数据时, 在设置了记录的唯一性后, 如果插入重复数据, 将不返回错 误, 只以警告形式返回 而 REPLACE INTO into 如果存在 primary 或 unique 相同的记录, 则先删 除掉 再插入新记录 第 21 页, 共 62 页

22 另一种设置数据的唯一性方法是添加一个 UNIQUE 索引, 如下所示 : CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) ); 3). 查询重复记录 select user_name,count(*) as count from user_table group by user_name having count>1; select * from people where peopleid in (select peopleid from people group by peopleid having count(peopleid) > 1) 4). 统计重复数据 以下我们将统计表中 first_name 和 last_name 的重复记录数 : mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1; 以上查询语句将返回 person_tbl 表中重复的记录数 一般情况下, 查询重复的值, 请执行以下操作 : 确定哪一列包含的值可能会重复 在列选择列表使用 COUNT(*) 列出的那些列 在 GROUP BY 子句中列出的列 HAVING 子句设置重复数大于 1 第 22 页, 共 62 页

23 5). 过滤重复数据 如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据 mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl -> ORDER BY last_name; 你也可以使用 GROUP BY 来读取数据表中不重复的数据 : mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name); 6). 删除重复数据 如果你想删除数据表中的重复数据, 你可以使用以下的 SQL 语句 : mysql> CREATE TABLE tmp SELECT last_name, first_name, sex -> FROM person_tbl; -> GROUP BY (last_name, first_name); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl; 当然你也可以在数据表中添加 INDEX( 索引 ) 和 PRIMAY KEY( 主键 ) 这种简单的方法来删除表中的重复记录 方法如下 : mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name); 5. MySQL 导出数据 MySQL 中你可以使用 SELECT...INTO OUTFILE 语句来简单的导出数据到文本文件上 第 23 页, 共 62 页

24 1). 使用 SELECT... INTO OUTFILE 语句导出数据 以下实例中我们将数据表 w3cschool_tbl 数据导出到 /tmp/tutorials.txt 文件中 : mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt'; 你可以通过命令选项来设置数据输出的指定格式, 以下实例为导出 CSV 格式 : mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n'; 在下面的例子中, 生成一个文件, 各值用逗号隔开 这种格式可以被许多程序使用 SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; 2).SELECT... INTO OUTFILE 语句有以下属性 : LOAD DATA INFILE 是 SELECT... INTO OUTFILE 的逆操作,SELECT 句法 为了将一个数据库的数据写入一个文件, 使用 SELECT... INTO OUTFILE, 为了将文件读回数据库, 使用 LOAD DATA INFILE SELECT...INTO OUTFILE 'file_name' 形式的 SELECT 可以把被选择的行写入一个文件中 该文件被创建到服务器主机上, 因此您必须拥有 FILE 权限, 才能使用此语法 输出不能是一个已存在的文件 防止文件数据被篡改 你需要有一个登陆服务器的账号来检索文件 否则 SELECT... INTO OUTFILE 不会起任何作用 在 UNIX 中, 该文件被创建后是可读的, 权限由 MySQL 服务器所拥有 这意味着, 虽然你就可以读取该文件, 但可能无法将其删除 3). 导出表作为原始数据 mysqldump 是 MySQL 用于转存储数据库的实用程序 它主要产生一个 SQL 脚本, 其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等 使用 mysqldump 导出数据需要使用 --tab 选项来指定导出文件指定的目录, 该目标必须是可写的 以下实例将数据表 tutorials_tbl 导出到 /tmp 目录中 : 第 24 页, 共 62 页

25 $ mysqldump -u root -p --no-create-info \ --tab=/tmp W3CSCHOOL w3cschool_tbl password ****** 4). 导出 SQL 格式的数据 导出 SQL 格式的数据到指定文件, 如下所示 : $ mysqldump -u root -p W3CSCHOOL w3cschool_tbl > dump.txt password ****** 以上命令创建的文件内容如下 : -- MySQL dump Host: localhost Database: W3CSCHOOL Server version Table structure for table `w3cschool_tbl` -- CREATE TABLE w3cschool_tbl ( w3cschool_id int(11) NOT NULL auto_increment, w3cschool_title varchar(100) NOT NULL default '', w3cschool_author varchar(40) NOT NULL default '', submission_date date default NULL, PRIMARY KEY (w3cschool_id), UNIQUE KEY AUTHOR_INDEX (w3cschool_author) ) TYPE=MyISAM; Dumping data for table `w3cschool_tbl` 第 25 页, 共 62 页

26 -- INSERT INTO w3cschool_tbl VALUES (1,'Learn PHP','John Poul',' '); INSERT INTO w3cschool_tbl VALUES (2,'Learn MySQL','Abdul S',' '); INSERT INTO w3cschool_tbl VALUES (3,'JAVA Tutorial','Sanjay',' '); 如果你需要导出整个数据库的数据, 可以使用以下命令 : $ mysqldump -u root -p W3CSCHOOL > database_dump.txt password ****** 如果需要备份所有数据库, 可以使用以下命令 : $ mysqldump -u root -p --all-databases > database_dump.txt password ****** --all-databases 选项在 MySQL 及以后版本加入 该方法可用于实现数据库的备份策略 5). 将数据表及数据库拷贝至其他主机 如果你需要将数据拷贝至其他的 MySQL 服务器上, 你可以在 mysqldump 命令中指定数据库名 及数据表 在源主机上执行以下命令, 将数据备份至 dump.txt 文件中 : $ mysqldump -u root -p database_name table_name > dump.txt password ***** 如果完整备份数据库, 则无需使用特定的表名称 如果你需要将备份的数据库导入到 MySQL 服务器中, 可以使用以下命令, 使用以下命令你需要确 认数据库已经创建 : $ mysql -u root -p database_name < dump.txt password ***** 你也可以使用以下命令将导出的数据直接导入到远程的服务器上, 但请确保两台服务器是 相通的, 是可以相互访问的 :</p> $ mysqldump -u root -p database_name \ 第 26 页, 共 62 页

27 mysql -h other-host.com database_name 以上命令中使用了管道来将导出的数据导入到指定的远程主机上 6. MySQL 导入数据 MySQL 中可以使用两种简单的方式来导入 MySQL 导出的数据 使用 LOAD DATA 导入数据 MySQL 中提供了 LOAD DATA INFILE 语句来插入数据 以下实例中将从当前目录中读取文件 dump.txt, 将该文件中的数据插入到当前数据库的 mytbl 表中 mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl; 如果指定 LOCAL 关键词, 则表明从客户主机上按路径读取文件 如果没有指定, 则文件在服务器上按路径读取文件 你能明确地在 LOAD DATA 语句中指出列值的分隔符和行尾标记, 但是默认标记是定位符和换行符 两个命令的 FIELDS 和 LINES 子句的语法是一样的 两个子句都是可选的, 但是如果两个同时被指定,FIELDS 子句必须出现在 LINES 子句之前 如果用户指定一个 FIELDS 子句, 它的子句 (TERMINATED BY [OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 也是可选的, 不过, 用户必须至少指定它们中的一个 mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl -> FIELDS TERMINATED BY ':' -> LINES TERMINATED BY '\r\n'; LOAD DATA 默认情况下是按照数据文件中列的顺序插入数据的, 如果数据文件中的列与插入表中的列不一致, 则需要指定列的顺序 如, 在数据文件中的列顺序是 a,b,c, 但在插入表的列顺序为 b,c,a, 则数据导入语法如下 : mysql> LOAD DATA LOCAL INFILE 'dump.txt' -> INTO TABLE mytbl (b, c, a); 使用 mysqlimport 导入数据 mysqlimport 客户端提供了 LOAD DATA INFILEQL 语句的一个命令行接口 mysqlimport 的大多数 选项直接对应 LOAD DATA INFILE 子句 第 27 页, 共 62 页

28 从文件 dump.txt 中将数据导入到 mytbl 数据表中, 可以使用以下命令 : $ mysqlimport -u root -p --local database_name dump.txt password ***** mysqlimport 命令可以指定选项来设置指定格式, 命令语句格式如下 : $ mysqlimport -u root -p --local --fields-terminated-by=":" \ --lines-terminated-by="\r\n" database_name dump.txt password ***** mysqlimport 语句中使用 --columns 选项来设置列的顺序 : $ mysqlimport -u root -p --local --columns=b,c,a \ database_name dump.txt password ***** mysqlimport 的常用选项介绍 选项 功能 -d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息 -f or --force 不管是否遇到错误,mysqlimport 将强制继续插入数据 -i or --ignore mysqlimport 跳过或者忽略那些有相同唯一关键字的行, 导入文件 中的数据将被忽略 -l or -lock-tables 数据被插入之前锁住表, 这样就防止了, 你在更新数据库时, 用户的查询和更新受到影响 -r or -replace 这个选项与 -i 选项的作用相反 ; 此选项将替代 表中有相同唯一关键字的记录 --fields-enclosed- by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起 默认的情况下数据是没有被字符括起的 --fields-terminated- by=char 指定各个数据的值之间的分隔符, 在句号分隔的文件中, 分隔符是句号 您可以用此选项指定数据之间的分隔符 默认的分隔符是跳格符 (Tab) --lines-terminated- by=str 此选项指定文本文件中行与行之间数据的分隔字符串 或者字符 第 28 页, 共 62 页

29 默认的情况下 mysqlimport 以 newline 为行分隔符 您可以选择用一个字符串来替代一个单个的字符 : 一个新行或者一个回车 mysqlimport 命令 等 常用的选项还有 -v 显示版本 (version), -p 提示输入密码 (password) 7. 存储过程 1). 创建存储过程 1>. 基本语法 : create procedure sp_name() begin end 2>. 参数传递 2) 调用存储过程 基本语法 :call sp_name() 注意 : 存储过程名称后面必须加括号, 哪怕该存储过程没有参数传递 3). 删除存储过程 1>. 基本语法 : drop procedure sp_name// 2>. 注意事项 (1) 不能在一个存储过程中删除另一个存储过程, 只能调用另一个存储过程 4. 区块, 条件, 循环 1). 区块定义, 常用 begin end; 第 29 页, 共 62 页

30 也可以给区块起别名, 如 : lable:begin.. end lable; 可以用 leave lable; 跳出区块, 执行区块以后的代码 2). 条件语句 if 条件 then statement else statement end if; 3). 循环语句 (1).while 循环 [label:] WHILE expression DO statements END WHILE [label] ; (2).loop 循环 [label:] LOOP statements END LOOP [label]; (3).repeat until 循环 [label:] REPEAT statements UNTIL expression END REPEAT [label] ; 5. 其他常用命令 1).show procedure status 显示数据库中所有存储的存储过程基本信息, 包括所属数据库, 存储过程名称, 创建时间等 2).show create procedure sp_name 显示某一个存储过程的详细信息 第 30 页, 共 62 页

31 Oracle 数据库 1. 对索引的理解 : 1 索引相当于字典的目录, 作用在于提升查询效率, 降低磁盘读写, 提升数据库性能 2 索引是一种独立于表的数据库对象, 可以存储在于表不同的磁盘中间或表空间 3 索引一旦创建, 由 oracle 数据库自己来维护, 并且由 oracle 管理系统来指定何时使用索引, 我们不需要在查询语句中自己指定索引 4 索引的删除或损毁不会对数据库表带来影响, 只会影响查询效率 5 创建索引的时候, 如果没有指定表空间, 会存储到默认的表空间 6 在删除表的时候, 基于表的索引会被删除 2. 索引工作原理 创建索引的时候,oracle 会先在表空间中给索引开辟一个空间, 并按索引字段对应的值进行分组, 并把分 好组的地址 rowid 存入索引空间中, 当再次查询的时候, 数据库会自动判断查询的条件中是否建有索引, 如果有, 则根据索引去查询符合条件的数据 3. 索引的创建 两种 :1. 自动创建 即在创建主键 primarykey 或唯一性约束 unique 的时候, 数据库会自动在相应的列上创建唯一性索引一般业务过程中通过主键查询比较频繁, 提升查询效率 2. 手动创建 即在不唯一的列上创建非唯一的索引, 加速查询效率 create index index_xxx_xxx on 表 ( 创建索引的列 ) tablespace 表空间 ( 表空间可以不指定 ) 工具创建 4. 索引的弊端 : 一般在数据量比较大的表中并且经常查询的字段上才去建立索引, 数据量小或不经常查询的字段建立 索引的话, 不仅会占用内存空间, 而且会降低查询效率, 索引不是越多越好, 下列情形不要创建索引 1 表很小 2 列不经常作为连接条件的 3 表经常更新的 系统日志历史表必须增加索引, 效率超高 第 31 页, 共 62 页

32 5. 执行计划 explain plan 作用 : 查询索引是否生效以及预估索引性能效果等 方式 :1 explain plan window 窗口 2 对查询语句按 f5 6. 数据字典 主要存储的是数据库系统信息, 由数据库系统自己去维护管理, 一般我们只进行查询, 不做修改 7. Pl/sql 是 oracle 对 sql 语言的过程化扩张, 是存储过程的基础组成 : 声明部分 可执行部分 异常处理部分普通变量 引用变量 (%type) 记录型变量(%rowtype) 1, 使用引用类型, 当列中的数据类型发生改变, 不需要修改变列的类型 而使用普通方式, 当列的类型改变时, 需要修改变列的类型使用 %TYPE 是非常好的编程风格, 因为它使得 PL/SQL 更加灵活, 更加适应于对数据库定义的更新 8. 游标 cursor 可以理解为数据库表返回的结果集, 它带有向前移动的指针, 并且每次只向前移动一行数据 作用 : 可以临时存储返回的多行数据, 通过变量游标, 可以得到每一行的数据 9. 存储过程 program window--procedure 定义 : 是一组预编译的 sql 语句, 也就是给 plsql 语句包装起来, 完成一次创建任意调用的功能, 相当于 java 中的方法 作用 : 在开发中, 有时候为了某种特定的业务功能, 需要对数据库进行多次的连接关闭, 这种连接关闭是 很耗费资源的, 并且会对数据库进行多次的 io 读写, 性能比较低, 如果把业务功能放在 plsql 中, 只需要 第 32 页, 共 62 页

33 连接关闭一次数据库就可以实现我们的业务功能, 大大提高了效率 2 更好的安全机制, 对于没有权限执行存储过程的用户, 也可以授权他们执行存储过程 3 对应大量的 sql 语句和重复执行的 sql 语句, 存储过程执行要快 = 参数 : 不带参数的 带输入参数的 带输入输出参数的 关于写存储的 3 个窗口的选择 : 预发布的时候使用 command 测试使用 test 10. 存储过程和存储函数的区别 : 1 存储过程可以有返回值也可以没有返回值, 存储函数必须有返回值 2 存储过程和存储函数都可以通过输出参数 out 实现多个返回值怎么选择 : 原则上只有一个返回值的用存储函数, 否则用存储过程但是我们一般都使用存储过程, 因为 1 存储过程可以有返回值也可以没有返回值, 存储的灵活性 2 存储过程既然有返回值了, 可以替代存储函数 3 Oracle 新版中已经不推荐适用存储函数了 Java 中通过 CallableStatement 调用存储过程 11. 触发器 : 解释 : 1 是一段 plsql 程序 2 它用来触发 dml(insert update delete) 操作的 3 在进行 dml 操作时会自动触发执行的一段程序换句话说 : 触发器就是在执行某个操作 ( 增删改 ) 的时候触发一个动作 ( 一段程序 ) 有点像 struts2 的拦截器, 可以对 cud 增强 触发器类型 1 语句级触发器( 表级触发器 ) 在指定的操作语句执行之前或之后执行一次, 不管它影响了多少行 2 行级触发器(for each row) 触发语句作用都的每一条语句都会被触发 第 33 页, 共 62 页

34 数据库三范式是什么? 第一范式 (1NF): 字段具有原子性, 不可再分 所有关系型数据库系统都满足第一范式 ) 数据库表中的字段都是单一属性的, 不可再分 例如, 姓名字段, 其中的姓和名必须作为一个整体, 无法 区分哪部分是姓, 哪部分是名, 如果要区分出姓和名, 必须设计成两个独立的字段 第二范式 (2NF): 第二范式 (2NF) 是在第一范式 (1NF) 的基础上建立起来的, 即满足第二范式 (2NF) 必须先满 足第一范式 (1NF) 第 34 页, 共 62 页

35 要求数据库表中的每个实例或行必须可以被惟一地区分 通常需要为表加上一个列, 以存储各个实例的惟一标识 这个惟一属性列被称为主关键字或主键 第二范式 (2NF) 要求实体的属性完全依赖于主关键字 所谓完全依赖是指不能存在仅依赖主关键字一部分的属性, 如果存在, 那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体, 新实体与原实体之间是一对多的关系 为实现区分通常需要为表加上一个列, 以存储各个实例的惟一标识 简而言之, 第二范式就是非主属性非部分依赖于主关键字 第三范式的要求如下 : 满足第三范式 (3NF) 必须先满足第二范式 (2NF) 简而言之, 第三范式 (3NF) 要求一个数据库表中不包含已在其它表中已包含的非主关键字信息 所以第三范式具有如下特征 : 1, 每一列只有一个值 2, 每一行都能区分 3, 每一个表都不包含其他表已经包含的非主关键字信息 例如, 帖子表中只能出现发帖人的 id, 而不能出现发帖人的 id, 还同时出现发帖人姓名, 否则, 只要出现同一发帖人 id 的所有记录, 它们中的姓名部分都必须严格保持一致, 这就是数据冗余 Struts2 1.1Struts2 的六个基本包 struts2-core jar : 开发的核心类库 freemarker jar :struts2 的 UI 标签的模板使用 freemarker 编写 commons-logging jar : 日志包 ognl jar : 对象图导航语言, 通过它来读写对象属性 xwork jar :xwork 类库,struts2 在其上进行构建 commons-fileupload jar: 文件上传组件,2.1.6 版本后必须加入此 jar 包 1.2struts2 配置文件 (1). web.xml 文件主要完成对 StrutsPrepareAndExecuteFilter 的配置 ( 在以前的版本中 是对 FilterDispatcher 配置, 新版本同样支持用 FilterDispatcher 配置 ), 它的实质是一个过滤 器, 它负责初始化整个 Struts 框架并且处理所有的请求 这个过滤器可以包括一些初始化参 数, 有的参数指定了要加载哪些额外的 xml 配置文件, 还有的会影响 struts 框架的行为 除 了 StrutsPrepareAndExecuteFilter 外,Struts 还提供了一个 ActionContexCleanUp 类, 它的主 要任务是当有其它一些过滤器要访问一个初始化好了的 struts 框架的时候, 负责处理一些特 殊的清除任务 (2). struts.xml 文件框架的核心配置文件就是这个默认的 struts.xml 文件, 在这个默认 的配置文件里面我们可以根据需要再包括其它一些配置文件 在通常的应用开发中, 我们可 第 35 页, 共 62 页

36 能想为每个不同的模块单独配置一个 struts.xml 文件, 这样也利于管理和维护 这也是我们 要配置的主要文件 (3).struts.properties( 参 default.properties) 在 Struts 框架使用了很多属性, 我们可以 通过改变这些属性来满足我们的需求 要改变这些属性, 只需在 struts.properties 文件中指 定属性的 key 和 value 即可 属性文件可以放在任何一个包含在 classpath 中的路径上, 但 是通常我们都把它放在 /WEB-INF/classes 目录下面 我们可以在 struts-default.properties 文 件中找到一个属性的列表 (4)struts-default.xml 此文件是 struts2 框架默认加载的配置文件, 它定义了 struts2 一 些核心 bean 和拦截器, 它会自动包含 (included) 到 struts.xml 文件中 ( 实质是通过 <package extends="struts-default">), 并为我们提供了一些标准的配置 我们可以在 struts2-core.jar 中找到这个文件 1.3Struts2 一个结果的映射 ( 注意没有 指定某个请求处理方法的请求 URL 注意, 它不能添加在 Action 类 上, : 映射一个声明异常自定义注解拦截器权限控制 1.4struts2 工作流程 Struts 2 框架本身大致可以分为 3 个部分 : 核心控制器 FilterDispatcher 业务控制器 Action 和用户实现的企业业务逻辑组件 核心控制器 FilterDispatcher 是 Struts 2 框架的基础, 包含了框架内部的控制流程和处理机制 业务控制器 Action 和业务逻辑组件是需要用户来自己实现的 用户在开发 Action 和业务逻辑组件的同时, 还需要编写相关的配置文件, 供核心控制器 FilterDispatcher 来使用 Struts 2 的工作流程相对于 Struts 1 要简单, 与 WebWork 框架基本相同, 所以说 Struts 2 是 WebWork 的升级版本 基本简要流程如下 : 1 客户端初始化一个指向 Servlet 容器的请求 ; 2 这个请求经过一系列的过滤器 (Filter) ( 这些过滤器中有一个叫做 ActionContextCleanUp 的可选过滤器, 这个过滤器对于 Struts2 和其他框架的集成很有帮助, 例如 :SiteMesh Plugin) 3 接着 FilterDispatcher 被调用, 第 36 页, 共 62 页

37 FilterDispatcher 询问 ActionMapper 来决定这个请是否需要调用某个 Action 4 如果 ActionMapper 决定需要调用某个 Action, FilterDispatcher 把请求的处理交给 ActionProxy 5 ActionProxy 通过 Configuration Manager 询问框架的配置文件, 找到需要调用的 Action 类 6 ActionProxy 创建一个 ActionInvocation 的实例 7 ActionInvocation 实例使用命名模式来调用, 在调用 Action 的过程前后, 涉及到相关拦截器 (Intercepter) 的调用 8 一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果 返回结果通常是 ( 但不总是, 也可能是另外的一个 Action 链 ) 一个需要被表示的 JSP 或者 FreeMarker 的模版 在表示的过程中可以使用 Struts2 框架中继承的标签 在这个过程中需要涉及到 ActionMapper 9 响应的返回是通过我们在 web.xml 中配置的过滤器 10 如果 ActionContextCleanUp 是当前使用的, 则 FilterDispatecher 将不会清理 sreadlocal ActionContext; 如果 ActionContextCleanUp 不使用, 则将会去清理 sreadlocals 1.5Struts2 问题合集 说下 Struts 的设计模式 MVC 模式 : web 应用程序启动时就会加载并初始化 ActionServler 用户提交表单时, 一个配置好的 ActionForm 对象被创建, 并被填入表单相应的数据,ActionServler 根据 Strutsconfig.xml 文件配置好的设置决定是否需要表单验证, 如果需要就调用 ActionForm 的 Validate() 验证后选择将请求发送到哪个 Action, 如果 Action 不存在,ActionServlet 会先创建这个对象, 然后调用 Action 的 execute() 方法 Execute() 从 ActionForm 对象中获取数据, 完成业务逻辑, 返回一个 ActionForward 对象,ActionServlet 再把客户请求转发给 ActionForward 对象指定的 jsp 组件,ActionForward 对象指定的 jsp 生成动态的网页, 返回给客户 拦截器和过滤器的区别 1 拦截器是基于 java 反射机制的, 而过滤器是基于函数回调的 2 过滤器依赖于 servlet 容器, 而拦截器不依赖于 servlet 容器 3 拦截器只能对 Action 请求起作用, 而过滤器则可以对几乎所有请求起作用 第 37 页, 共 62 页

38 4 拦截器可以访问 Action 上下文 值栈里的对象, 而过滤器不能 5 在 Action 的生命周期中, 拦截器可以多次调用, 而过滤器只能在容器初始化时被调用一次 1.5.3struts2 有哪些优点? 1) 在软件设计上 Struts2 的应用可以不依赖于 Servlet API 和 struts API Struts2 的这种设计属于无侵入式设计 ; 2) 拦截器, 实现如参数拦截注入等功能 ; 3) 类型转换器, 可以把特殊的请求参数转换成需要的类型 ; 4) 多种表现层技术, 如 :JSP freemarker Velocity 等 ; 5)Struts2 的输入校验可以对指定某个方法进行校验 ; 6) 提供了全局范围 包范围和 Action 范围的国际化资源文件管理实现 1.5.4struts2 框架的核心控制器是什么? 它有什么作用? 1)Struts2 框架的核心控制器是 StrutsPrepareAndExecuteFilter 2) 作用 : 负责拦截由 <url-pattern>/*</url-pattern> 指定的所有用户请求, 当用户请求到达时, 该 Filter 会过滤用户的请求 默认情况下, 如果用户请求的路径不带后缀或者后缀以.action 结尾, 这时请求将被转入 struts2 框架处理, 否则 struts2 框架将略过该请求的处理 可以通过常量 "struts.action.extension" 修改 action 的后缀, 如 : <constant name="struts.action.extension" value="do"/> 如果用户需要指定多个请求后缀, 则多个后缀之间以英文逗号 (,) 隔开 <constant name="struts.action.extension" value="do,go"/> 第 38 页, 共 62 页

39 1.5.5struts2 默认能解决 get 和 post 提交方式的乱码问题吗? 不能 struts.i18n.encoding=utf-8 属性值只能解析 POST 提交下的乱码问题 值栈 ValueStack 的原理与生命周期? 1)ValueStack 贯穿整个 Action 的生命周期, 保存在 request 域中, 所以 ValueStack 和 request 的生命周期一样 当 Struts2 接受一个请求时, 会迅速创建 ActionContext, ValueStack,action 然后把 action 存放进 ValueStack, 所以 action 的实例变量可以被 OGNL 访问 请求来的时候,action ValueStack 的生命开始, 请求结束,action ValueStack 的生命结束 ; 2)action 是多例的, 和 Servlet 不一样,Servelt 是单例的 ; 3) 每个 action 的都有一个对应的值栈, 值栈存放的数据类型是该 action 的实例, 以及该 action 中的实例变量,Action 对象默认保存在栈顶 ; 4)ValueStack 本质上就是一个 ArrayList; 5) 关于 ContextMap,Struts 会把下面这些映射压入 ContextMap 中 : parameters : 该 Map 中包含当前请求的请求参数 request : 该 Map 中包含当前 request 对象中的所有属性 session : 该 Map 中包含当前 session 对象中的所有属性 application : 该 Map 中包含当前 application 对象中的所有属性 attr: 该 Map 按如下顺序来检索某个属性 : request, session, application 6) 使用 OGNL 访问值栈的内容时, 不需要 # 号, 而访问 request session application attr 时, 需要加 # 号 ; 第 39 页, 共 62 页

40 7) 注意 : Struts2 中,OGNL 表达式需要配合 Struts 标签才可以使用 如 : <s:property value="name"/> 8) 在 struts2 配置文件中引用 ognl 表达式, 引用值栈的值, 此时使用的 "$", 而不是 # 或者 %; 1.5.7ActionContext ServletContext pagecontext 的区别? 1)ActionContext 是当前的 Action 的上下文环境, 通过 ActionContext 可以获 取到 request session ServletContext 等与 Action 有关的对象的引用 ; 2)ServletContext 是域对象, 一个 web 应用中只有一个 ServletContext, 生命 周期伴随整个 web 应用 ; 3)pageContext 是 JSP 中的最重要的一个内置对象, 可以通过 pagecontext 获 取其他域对象的应用, 同时它是一个域对象, 作用范围只针对当前页面, 当前 页面结束时,pageContext 销毁, 生命周期是 JSP 四个域对象中最小的 1.5.8result 的 type 属性中有哪几种结果类型? 一共 10 种 : dispatcher struts 默认的结果类型, 把控制权转发给应用程序里的某个资源不能把控制权转发给一个外部资源, 若需要把控制权重定向到一个外部资源, 应该使用 redirect 结果类型 redirect 把响应重定向到另一个资源 ( 包括一个外部资源 ) redirectaction 把响应重定向到另一个 Action freemarker velocity chain httpheader xslt plaintext stream 1.5.9servlet 和 filter 的区别 Filter 可认为是 Servlet 的一种 变种, 它主要用于对用户请求进行预处理, 第 40 页, 共 62 页

41 也可以对 HttpServletResponse 进行后处理, 是个典型的处理链 它与 Servlet 的区别在于 : 它不能直接向用户生成响应 完整的流程是 :Filter 对用户请求进行预处理, 接着将请求交给 Servlet 进行处理并生成响应, 最后 Filter 再对服务器响应进行后处理 Hibernate 2.1Hibernate 的 jar 包 最基本的 Hibernate3.3.2 之 JAR 包 ( 必要 ): hibernate3.jar 核心 JAR 包 antlr.jar Another Tool for Language Recognition, 可以构造语言识别器, 解析 HQL 需要 commons-collections.jar 包含了一些 Apache 开发的集合类, 功能比 Java.util.* 强大 dom4j.jar 越来越多的 Java 软件都在使用 dom4j 来操作 XML,Hibernate 也不例外 javassist.jar 操作字节码, 跟 cglib 相关 jta.jar slf4j.jar 定义 JTA 规范的 JAR 包, 当 Hibernate 使用 JTA 的时候需要 整合各志框架种日的工具 slf4j-nop.jar 包含了对 slf4j.jar 的实现类 2.2Hibernate 的核心配置文件 Hibernate 框架支持 properties 和 xml 两种方式的 Hibernate 属性的配置, 对应的两种核心 配置文件为 : hibernate.properties 配置常用的属性, 必须手动加载 hbm 文件或持久化类 ( 了解 ) hibernate.cfg.xml 配置常用的属性, 配置加载 hbm 映射, 配置缓存策略等 ( 推荐 ) 第 41 页, 共 62 页

42 2.3Hibernate 的核心 API 接口 所有的 Hibernate 应用中都会访问 Hibernate 的 5 个核心接口 Configuration 接口 : 配置 Hibernate, 根启动 Hibernate, 创建 SessionFactory 对象 SessionFactory 接口 : 初始化 Hibernate, 充当数据存储源的代理, 创建 Session 对象 Session 接口 : 负责保存 更新 删除 加载和查询对象 Transaction 接口 : 管理事务 Query 和 Criteria 接口 : 执行数据库查询 Configuration 接口 Configuration 对象用于配置并且启动 Hibernate Hibernate 应用通过 Configuration 实例来 指定对象 - 关系映射文件的位置或者动态配置 Hibernate 的属性, 然后创建 SessionFactory 实 例 SessionFactory 接口 一个 SessionFactory 实例对应一个数据存储源, 应用从 SessionFactory 中获得 Session 实例 SessionFactory 有以下特点 : 它是线程安全的, 这意味着它的同一个实例可以被应用的多个线程共享 它是重量级的, 这意味着不能随意创建或销毁它的实例 如果应用只访问一个数据库, 只需要创建一个 SessionFactory 实例, 在应用初始化的时候创建该实例 如果应用同时访问多个 数据库, 则需要为每个数据库创建一个单独的 SessionFactory 实例 之所以称 SessionFactory 是重量级的, 是因为它需要一个很大的缓存, 用来存放预定义的 SQL 语句以能映射元数据等 用户还可以为 SesionFactory 配置一个缓存插件, 这个缓存插 件被称为 Hibernate 的第二级缓存, 该缓存用来存放被工作单元读过的数据, 将来其他工 作单元可能会重用这些数据, 因此这个缓存中的数据能够被所有工作单元共享 一个工作单 元通常对应一个数据库事务 Session 接口 Session 接口是 Hibernate 应用使用最广泛的接口 Session 也被称为持久化管理器, 它提供 了和持久化相关的操作, 如添加 更新 删除 加载和查询对象 Session 有以下特点 : 不是线程安全的, 因此在设计软件架构时, 应该避免多个线程共享同一个 Session 实例 Session 实例是轻量级的, 所谓轻量级, 是指它的创建和销毁不需要消耗太多的资源 这意 味着在程序中可以经常创建和销毁 Session 对象, 例如为每个客户请示分配单独的 Session 实例, 或者为每个工作单元分配单独的 Session 实例 Session 有一个缓存, 被称为 Hibernate 的第一级缓存, 它存放被当前工作单元加载的对象 每个 Session 实例都有自己的缓存, 这个 Sesion 实例的缓存只能被当前工作单元访问 第 42 页, 共 62 页

43 2.3.4Transaction 接口 Transaction 接口是 Hibernate 的数据库事务接口, 它对底层的事务接口做了封装, 底层事务 接口包括 : JDBC API JTA(Java Transaction API) CORBA(Common Object Requet Broker Architecture) API Hibernate 应用可通过一致的 Transaction 接口来声明事务边界, 这有助于应用在不同的环境 容器中移植 尽管应用也可以绕过 Transaction 接口, 直接访问底层的事务接口, 这种方法 不值得推荐, 因为它不利于应用在不同的环境移植 2.3.5Query 和 Criteria 接口 Query 和 Criteria 接口是 Hibernate 的查询接口, 用于向数据库查询对象, 以及控制执行查 询的过程 Query 实例包装了一个 HQL 查询语句,HQL 查询语句和 SQL 查询语句有些相似, 但 HQL 查询语句是面向对象的, 它引用类句及类的属性句, 而不是表句及表的字段句 Criteria 接口完全封装了基于字符串的查询语句, 比 Query 接口更加面向对象,Criteria 接口 擅长执行动态查询 Session 接口的 find() 方法也具有数据查询功能, 但它只是执行一些简单的 HQL 查询语句 的快捷方法, 它的功能远没有 Query 接口强大 2.4hibernate 声明实体 bean, 每一个持久化 POJO 类都是一个实体 bean, 注解来进行声明 注解则声明了该实体 bean 的标识属性, 对应相应表使用 id 是类一级的注解, 注解可以为实体 bean 映射指定表 (table), 目录 (catalog) 和 schema 的名字. 那么系统自动使用默认值 : 实体的短类名 ( 不附带包名 实体 bean 中所有的非 static 非 transient 的属性都可以被持久化, 定义该标识符的生成策略 AUTO - 可以是 identity column 类型, 或者 sequence 类型或者 table 类型, 取决于不同的底层数据库. TABLE - 使用表保存 id 值 IDENTITY - identity column SEQUENCE - 注解可以建立实体 bean 注解来定义多对一关联 第 43 页, 共 62 页

44 2.5 Hibernate 的执行流程 1. 通过 Configuration.configure() 读取并解析 hibernate.cfg.xml 配置文件 ; 2. 由 hibernate.cfg.xml 中的 <mapping resource= com/xx/user.hbm.xml /> 读取并解析映 射信息 ; 3. 通过 config.buildserssionfactory() 创建 SessionFactory; 4.sessionFactory.openSession() 打开 session; 5.session.beginTransaction() 创建事务 transation; 6.persistent operate( 持久化操作 ); 7.session.getTransaction().commit() 提交事务 ; 8. 关闭 session; 9. 关闭 SessionFactory 2.6Hibernate 问题合集 2.6.1Hibernate 中 get 和 load 有什么不同之处? 把 get 和 load 放到一起进行对比是 Hibernate 面试时最常问到的问题, 这是因为只有正确理解 get() 和 load() 这二者后才有可能高效地使用 Hibernate get 和 load 的最大区别是, 如果在缓存中没有找到相应的对象,get 将会直接访问数据库并返回一个完全初始化好的对象, 而这个过程有可能会涉及到多个数据库调用 ; 而 load 方法在缓存中没有发现对象的情况下, 只会返回一个代理对象, 只有在对象 getid() 之外的其它方法被调用时才会真正去访问数据库, 这样就能在某些情况下大幅度提高性能 你也可以参考 Hibernate 中 get 和 load 的不同之处, 此链接给出了更多的不同之处并对该问题进行了更细致的讨论 2.6.2Hibernate 中 save persist 和 saveorupdate 这三个方法的不同之处? 除了 get 和 load, 这又是另外一个经常出现的 Hibernate 面试问题 所有这三个方法, 也就是 save() saveorupdate() 和 persist() 都是用于将对象保存到数据库中的方法, 但其中有些细微的差别 例如,save() 只能 INSERT 记录, 但是 saveorupdate() 可以进行记录的 INSERT 和 UPDATE 还有,save() 的返回值是一个 Serializable 对象, 而 persist() 方法返回值为 void 你还可以访问 save persist 以及 saveorupdate, 找到它们所有的不同之处 2.6.3Hibernate 中的命名 SQL 查询指的是什么? Hibernate 的这个面试问题同 Hibernate 提供的查询功能相关 命名查询指的是用 <sqlquery> 标签在影射文档中定义的 SQL 查询, 可以通过使用 Session.getNamedQuery() 方法对 它进行调用 命名查询使你可以使用你所指定的一个名字拿到某个特定的查询 Hibernate 第 44 页, 共 62 页

45 中的命名查询可以使用注解来定义, 也可以使用我前面提到的 xml 影射问句来定义 在 Hibernate 用来定义多个命名 查询 2.6.4Hibernate 中的 SessionFactory 有什么作用? SessionFactory 是线程安全的吗? 这也是 Hibernate 框架的常见面试问题 顾名思义,SessionFactory 就是一个用于创建 Hibernate 的 Session 对象的工厂 SessionFactory 通常是在应用启动时创建好的, 应用程序中的代码用它来获得 Session 对象 作为一个单个的数据存储, 它也是线程安全的, 所以多个线程可同时使用同一个 SessionFactory Java JEE 应用一般只有一个 SessionFactory, 服务于客户请求的各线程都通过这个工厂来获得 Hibernate 的 Session 实例, 这也是为什么 SessionFactory 接口的实现必须是线程安全的原因 还有,SessionFactory 的内部状态包含着同对象关系影射有关的所有元数据, 它是不可变的, 一旦创建好后就不能对其进行修改了 2.6.5Hibernate 中的 Session 指的是什么? 可否将单个的 Session 在多个线程间进行共享? 前面的问题问完之后, 通常就会接着再问这两个问题 问完 SessionFactory 的问题后就该轮到 Session 了 Session 代表着 Hibernate 所做的一小部分工作, 它负责维护者同数据库的链接而且不是线程安全的, 也就是说,Hibernage 中的 Session 不能在多个线程间进行共享 虽然 Session 会以主动滞后的方式获得数据库连接, 但是 Session 最好还是在用完之后立即将其关闭 2.6.6Hibernate 中二级缓存指的是什么? 这是同 Hibernate 的缓存机制相关的第一个面试问题, 不出意外后面还会有更多这方面的问 题 二级缓存是在 SessionFactory 这个级别维护的缓存, 它能够通过节省几番数据库调用往 返来提高性能 还有一点值得注意, 二级缓存是针对整个应用而不是某个特定的 session 的 2.6.7Hibernate 中的查询缓存指的是什么? 这个问题有时是作为上个 Hibernate 面试问题的后继问题提出的 查询缓存实际上保存的是 sql 查询的结果, 这样再进行相同的 sql 查询就可以之间从缓存中拿到结果了 为了改善性能, 查询缓存可以同二级缓存一起来使用 Hibernate 支持用多种不同的开源缓存方案, 比如 EhCache, 来实现查询缓存 第 45 页, 共 62 页

46 Spring 3.1Spring 常用 jar 包 1. spring.jar 是包含有完整发布模块的单个 jar 包 2. org.springframework.aop 包含在应用中使用 Spring 的 AOP 特性时所需的类 3. org.springframework.aspects 提供对 AspectJ 的支持, 以便可以方便的将面向方面的功能 集成进 IDE 中, 比如 Eclipse AJDT 4. org.springframework.beans 所有应用都要用到的, 它包含访问配置文件 创建和管理 bean 以及进行 Inversion of Control / Dependency Injection(IoC/DI) 操作相关的所有类 5. org.springframework.context 为 Spring 核心提供了大量扩展 可以找到使用 Spring ApplicationContext 特性时所需的全部类,JDNI 所需的全部类,UI 方面的用来与模板 (Templating) 引擎如 Velocity FreeMarker JasperReports 集成的类, 以及校验 Validation 方面的相关类 6. org.springframework.core 包含 Spring 框架基本的核心工具类,Spring 其它组件要都要使 用到这个包里的类, 是其它组件的基本核心 7. org.springframework.expression Spring 表达式语言 8. org.springframework.oxm Spring 对 Object/XMl 的映射支持, 可以让 Java 与 XML 之间来 回切换 9. org.springframework.test 对 Junit 等测试框架的简单封装 10. org.springframework.transaction 为 JDBC Hibernate JDO JPA 等提供的一致的声明式 和编程式事务管理 3.2Spring 核心 IOC AOP IOC,DI IoC Inverse of Control 反转控制的概念, 就是将原本在程序中手动创建 UserService 对象的 控制权, 交由 Spring 框架管理, 简单说, 就是创建 UserService 对象控制权被反转到了 Spring 框架 DI:Dependency Injection 依赖注入, 在 Spring 框架负责创建 Bean 对象时, 动态的将依赖 对象注入到 Bean 组件 3.2.2AOP 面向切面编程 (AOP) 提供另外一种角度来思考程序结构, 通过这种方式弥补了面向对象编 程 (OOP) 的不足, 除了类 (classes) 以外,AOP 提供了切面 切面对关注点进行模块化, 第 46 页, 共 62 页

47 例如横切多个类型和对象的事务管理 Spring 的一个关键的组件就是 AOP 框架, 可以自由选择是否使用 AOP 提供声明式企业服务, 特别是为了替代 EJB 声明式服务 最重要的服务是声明性事务管理, 这个服务建立在 Spring 的抽象事物管理之上 允许用户实现自定义切面, 用 AOP 来完善 OOP 的使用, 可以把 Spring AOP 看作是对 Spring 的一种增强 AOP 中的名词 切面 (Aspect): 一个关注点的模块化, 这个关注点可能会横切多个对象 事务管理是 J2EE 应用中一个关于横切关注点的很好的例子 在 Spring AOP 中, 切面可以使用通用类 ( 基于 模式的风格 ) 注解 (@AspectJ 风格 ) 来实现 连接点 (Joinpoint): 在程序执行过程中某个特定的点, 比如某方法调用的时候或者处理异 常的时候 在 Spring AOP 中, 一个连接点总是代表一个方法的执行 通过声明一个 org.aspectj.lang.joinpoint 类型的参数可以使通知 (Advice) 的主体部分获得连接点信息 通知 (Advice): 在切面的某个特定的连接点 (Joinpoint) 上执行的动作 通知有各种类型, 其中包括 around before 和 after 等通知 通知的类型将在后面部分进行讨论 许 多 AOP 框架, 包括 Spring, 都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截 器链 切入点 (Pointcut): 匹配连接点 (Joinpoint) 的断言 通知和一个切入点表达式关联, 并在 满足这个切入点的连接点上运行 ( 例如, 当执行某个特定名称的方法时 ) 切入点表达式如 何和连接点匹配是 AOP 的核心 :Spring 缺省使用 AspectJ 切入点语法 引入 (Introduction):( 也被称为内部类型声明 (inter-type declaration)) 声明额外的方法 或者某个类型的字段 Spring 允许引入新的接口 ( 以及一个对应的实现 ) 到任何被代理的 对象 例如, 你可以使用一个引入来使 bean 实现 IsModified 接口, 以便简化缓存机制 目标对象 (Target Object): 被一个或者多个切面 (aspect) 所通知 (advise) 的对象 也有 人把它叫做被通知 (advised) 对象 既然 Spring AOP 是通过运行时代理实现的, 这个对 象永远是一个被代理 (proxied) 对象 AOP 代理 (AOP Proxy): AOP 框架创建的对象, 用来实现切面契约 (aspect contract)( 包 括通知方法执行等功能 ) 在 Spring 中,AOP 代理可以是 JDK 动态代理或者 CGLIB 代理 注 意 :Spring 2.0 最新引入的基于模式 (schema-based) 注解风格的切面声 明, 对于使用这些风格的用户来说, 代理的创建是透明的 织入 (Weaving): 把切面 (aspect) 连接到其它的应用程序类型或者对象上, 并创建一个被 通知 (advised) 的对象 这些可以在编译时 ( 例如使用 AspectJ 编译器 ), 类加载时和运行 时完成 Spring 和其他纯 Java AOP 框架一样, 在运行时完成织入 3.3spring 所有受 Spring 管理组件的通用形式, 对应表现层的 Bean, 也就是 Action 注解标识 UserAction 之后, 就表示要把 UserAction 交给 Spring 容器管理, 在 Spring 容器中会存在一个名字为 useraction 的 action, 这个名字是根据 UserAction 类名 来取的 注意 : 不指定其 则默认的 bean 名字为这 第 47 页, 共 62 页

48 个类的类名首字母小写, 如果指定 UserAction ) UserAction ), 则使用 value 作为 bean 表示将 Action 的范围声明为原型 可以利用容器的 scope= prototype 来保证每一个请求有一个单独的 Action 来处理, 避免 struts 中 Action 的线程安全问题 spring 默认 scope 是单例模式 (scope= singleton ), 这样只会创建一个 Action 对象, 每次访问都是同一 Action 对象, 数据不安全,struts2 是要求每次次访问都对应不同的 Action, scope= prototype 可以保证当有请求的时候都创建一个 Action 对应的是业务层 对应数据访问层 Bean 补充 : 理解 Spring 中的 控制反转 如, 在 UserAction 中要用到 UserServiceImpl 中的方法, 最初的方法是在 UserAction 中通过 UserService userservice = new UserServiceImpl; 需要时就 new 出来, 控制权在自己手里, 但是使用 spring 后,UserAction 就不用主动去创建 UserServiceImpl 的实例了, 创建 UserServiceImpl 实例已经交给 Spring 来做了,Spring 把创建好的 UserServiceImpl 实例给 UserAction,UserAction 拿到就可以直接用了 UserAction 由原来的主动创建 UserServiceImpl 实例后就可以马上使用, 变成了被动等待由 Spring 创建好 UserServiceImpl 实例之后再注入给 UserAction,UserAction 才能够使用 这说明 UserAction 对 UserServiceImpl 类的 控制权 已经被 反转 了 3.4Spring 常见问题 spring 配置 bean 实例化有哪些方式? 1) 使用类构造器实例化 ( 默认无参数 ) <bean id="bean1" class="cn.itcast.spring.b_instance.bean1"></bean> 2) 使用静态工厂方法实例化 ( 简单工厂模式 ) // 下面这段配置的含义 : 调用 Bean2Factory 的 getbean2 方法得到 bean2 <bean id="bean2" class="cn.itcast.spring.b_instance.bean2factory" factorymethod="getbean2"></bean> 3) 使用实例工厂方法实例化 ( 工厂方法模式 ) // 先创建工厂实例 bean3facory, 再通过工厂实例创建目标 bean 实例 <bean id="bean3factory" class="cn.itcast.spring.b_instance.bean3factory"></bean> <bean id="bean3" factory-bean="bean3factory" factory-method="getbean3"></bean> Spring Bean 的生命周期? 1instantiate bean 对象实例化 2populate properties 封装属性 3 如果 Bean 实现 BeanNameAware 执行 setbeanname 4 如果 Bean 实现 BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setbeanfactory 或者上下文对象 setapplicationcontext 第 48 页, 共 62 页

49 5 如果存在类实现 BeanPostProcessor( 后处理 Bean), 执行 postprocessbeforeinitialization, BeanPostProcessor 接口提供钩子函数, 用来动态扩展修改 Bean ( 程序自动调用后处理 Bean) 6 如果 Bean 实现 InitializingBean 执行 afterpropertiesset 7 调用 <bean init-method="init"> 指定初始化方法 init 8 如果存在类实现 BeanPostProcessor( 处理 Bean), 执行 postprocessafterinitialization 9 执行业务处理 10 如果 Bean 实现 DisposableBean 执行 destroy 11 调用 <bean destroy-method="customerdestroy"> 指定销毁方法 customerdestroy Bean 注入属性有哪几种方式? spring 支持构造器注入和 setter 方法注入 构造器注入, 通过 <constructor-arg> 元素完成注入 setter 方法注入, 通过 <property> 元素完成注入 开发中常用方式 3.4.4Spring 如何处理线程并发问题? Spring 使用 ThreadLocal 解决线程安全问题我们知道在一般情况下, 只有无状态的 Bean 才可以在多线程环境下共享, 在 Spring 中, 绝大部分 Bean 都可以声明为 singleton 作用域 就是因为 Spring 对一些 Bean( 如 第 49 页, 共 62 页

50 RequestContextHolder TransactionSynchronizationManager LocaleContextHolder 等 ) 中非 线程安全状态采用 ThreadLocal 进行处理, 让它们也成为线程安全的状态, 因为有状态的 Bean 就可以在多线程中共享了 ThreadLocal 和线程同步机制都是为了解决多线程中相同变量的访问冲突问题 在同步机制中, 通过对象的锁机制保证同一时间只有一个线程访问变量 这时该变量是多个 线程共享的, 使用同步机制要求程序慎密地分析什么时候对变量进行读写, 什么时候需要锁 定某个对象, 什么时候释放对象锁等繁杂的问题, 程序设计和编写难度相对较大 而 ThreadLocal 则从另一个角度来解决多线程的并发访问 ThreadLocal 会为每一个线 程提供一个独立的变量副本, 从而隔离了多个线程对数据的访问冲突 因为每一个线程都拥有自己的变量副本, 从而也就没有必要对该变量进行同步了 ThreadLocal 提供了线程安全 的共享对象, 在编写多线程代码时, 可以把不安全的变量封装进 ThreadLocal 由于 ThreadLocal 中可以持有任何类型的对象, 低版本 JDK 所提供的 get() 返回的是 Object 对象, 需要强制类型转换 但 JDK5.0 通过泛型很好的解决了这个问题, 在一定程度地简化 ThreadLocal 的使用 概括起来说, 对于多线程资源共享的问题, 同步机制采用了 以时间换空间 的方式, 而 ThreadLocal 采用了 以空间换时间 的方式 前者仅提供一份变量, 让不同的线程排队访问, 而后者为每一个线程都提供了一份变量, 因此可以同时访问而互不影响 介绍一下 Spring 的事物管理 Spring 支持两种类型的事务管理 : 编程式事务管理 : 这意味你通过编程的方式管理事务, 给你带来极大的灵活性, 但是难维护 声明式事务管理 : 这意味着你可以将业务代码和事务管理分离, 你只需用注解和 XML 配置来管理事务 通知有哪些类型? 前置通知 (Before advice): 在某连接点 (join point) 之前执行的通知, 但这个通知不能阻止连接点前的执行 ( 除非它抛出一个异常 ) 返回后通知 (After returning advice): 在某连接点 (join point) 正常完成后执行的通知 : 例如, 一个方法没有抛出任何异常, 正常返回 抛出异常后通知 (After throwing advice): 在方法抛出异常退出时执行的通知 后通知 (After (finally) advice): 当某连接点退出的时候执行的通知 ( 不论是正常返回还是异常退出 ) 环绕通知 (Around Advice): 包围一个连接点 (join point) 的通知, 如方法调用 这是最强大的一种通知类型 环绕通知可以在方法调用前后完成自定义的行为 它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行 环绕通知是最常用的一种通知类型 大部分基于拦截的 AOP 框架, 例如 Nanning 和 JBoss4, 都只提供环绕通知 切入点 (pointcut) 和连接点 (join point) 匹配的概念是 AOP 的关键, 这使得 AOP 不同于其它仅仅提供拦截功能的旧技术 切入点使得定位通知 (advice) 可独立于 OO 层次 例如, 一个提供声明式事务管理的 around 通知可以被应用到一组横跨多个对象中的方法上 ( 例 第 50 页, 共 62 页

51 如服务层的所有业务操作 ) BeanFactory 接口和 ApplicationContext 接口有什么区别? 1 ApplicationContext 接口继承 BeanFactory 接口, Spring 核心工厂是 BeanFactory,BeanFactory 采取延迟加载, 第一次 getbean 时才会初始化 Bean, ApplicationContext 是会在加载配置文件时初始化 Bean 2ApplicationContext 是对 BeanFactory 扩展, 它可以进行国际化处理 事件传递和 bean 自动装配以及各种不同应用层的 Context 实现 开发中基本都在使用 ApplicationContext, web 项目使用 WebApplicationContext, 很少用到 BeanFactory SpringMVC 1. 简单的谈一下 SpringMVC 的工作流程? 流程 1 用户发送请求至前端控制器 DispatcherServlet 2 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器 3 处理器映射器找到具体的处理器, 生成处理器对象及处理器拦截器 ( 如果有则生成 ) 一并返回给 DispatcherServlet 4 DispatcherServlet 调用 HandlerAdapter 处理器适配器 5 HandlerAdapter 经过适配调用具体的处理器 (Controller, 也叫后端控制器 ) 6 Controller 执行完成返回 ModelAndView 第 51 页, 共 62 页

52 7 HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet 8 DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器 9 ViewReslover 解析后返回具体 View 10 DispatcherServlet 根据 View 进行渲染视图 ( 即将模型数据填充至视图中 ) 11 DispatcherServlet 响应用户 2. 如何解决 POST 请求中文乱码问题,GET 的又如何处理呢? 在 web.xml 中加入 :. <filter>. <filter-name>characterencodingfilter</filter-name>. <filterclass>org.springframework.web.filter.characterencodingfilter</ filter-class>. <init-param>. <param-name>encoding</param-name>. <param-value>utf-8</param-value>. </init-param>. </filter>. <filter-mapping>. <filter-name>characterencodingfilter</filter-name>. <url-pattern>/*</url-pattern>. </filter-mapping> 以上可以解决 post 请求乱码问题 对于 get 请求中文参数出现乱码解决方法有两 个 : 修改 tomcat 配置文件添加编码与工程编码一致, 如下 :. <Connector URIEncoding="utf-8" connectiontimeout="20000" port="8080" protocol="http/1.1" redirectport="8443"/> 另外一种方法对参数进行重新编码 :. String username = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8") ISO 是 tomcat 默认编码, 需要将 tomcat 编码后的内容按 utf-8 编码 第 52 页, 共 62 页

53 3. 问题 :springmvc 是一个用来处理请求地址映射的注解, 可用于类或方法上 用于类上, 用于将请求 URL 中的模板变量映射到功能处理方法的参数上, 即取出 uri : 主要用于在 SpringMVC 后台控制层获取参数, 类似一种是 request.getparameter("name"), 它有三个常用参数 :defaultvalue = "0", required = false, value = "isapp";defaultvalue 表示设置默认值,required 铜过 boolean 设置是否是必须要传入的参数,value : 该注解用于将 Controller 的方法返回的对象, 通过适当的 HttpMessageConverter 转换为指定格式后, 写入到 Response 对象的 body 数据区 使用时机 : 返回的数据不是 html 标签的页面, 而是其他某种格式的数据时 ( 如 json xml 等 ) : 该注解常用来处理 Content-Type: 不是 application/x-www-formurlencoded 编码的内容, 例如 application/json, application/xml 等 : 可以把 Request 请求 header : 可以把 Request header 中关于 cookie 的值绑定到方法的参数上 4. 问题 : 一个 bean 配置在 springmvc 的配置文件如 springmvc-servlet.xml 跟配置在 spring 全局配置文件 applicationcontext 中有什么区别 答 : 配置在 springmvc 配置文件中的 bean 属于子容器中内容 配置在全局配置文件中的 bean 属于父容器 子容器可以获取父容器中的内容, 而父容器不可以获得子容器中的内容 Mybatis 1.mybatis 比 IBatis 比较大的几个改进是什么? a. 有接口绑定, 包括注解绑定 sql 和 xml 绑定 Sql, b. 动态 sql 由原来的节点配置变成 OGNL 表达式, c. 在一对一, 一对多的时候引进了 association, 在一对多的时候引入了 collection 节点, 不过都是在 resultmap 里面配置 2. 接口绑定有几种实现方式, 分别是怎么实现的? a. 一种是通过注解绑定, 等注解里面包含 Sql 语 第 53 页, 共 62 页

Spring3.x开发入门

Spring3.x开发入门 Spring Bean 管理 Spring 的工厂类 课程安排 Spring 的 Bean 管理 (XML 方式 ) Spring 的属性注入 (XML 方式 ) Spring 的 Bean 管理 ( 注解方式 ) Spring 的属性注入 ( 注解方式 ) Spring 的工厂类 Spring 的 Bean 管理 (XML 方式 ) 三种实例化 Bean 的方式 使用类构造器实例化 ( 默认无参数

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

untitled

untitled -JAVA 1. Java IDC 20 20% 5 2005 42.5 JAVA IDC JAVA 60% 70% JAVA 3 5 10 JAVA JAVA JAVA J2EE J2SE J2ME 70% JAVA JAVA 20 1 51 2. JAVA SUN JAVA J2EE J2EE 3. 1. CSTP CSTP 2 51 2. 3. CSTP IT CSTP IT IT CSTP

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

优迈科技教学大纲2009版本

优迈科技教学大纲2009版本 java 软 件 工 程 师 培 训 教 学 大 纲 1 JAVA 软 件 工 程 师 培 训 教 学 大 纲 深 圳 软 件 园 人 才 实 训 基 地 2009 年 3 月 目 录 java 软 件 工 程 师 培 训 教 学 大 纲 2 教 学 阶 段...3 第 一 章 JAVA 起 步...3 第 二 章 面 向 对 象 的 编 程...4 第 三 章 数 据 结 构 IO 线 程 网 络...5

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

untitled

untitled 653 JAVA 2008 11 Institution of Software Engineer... 2... 4... 4... 5... 5... 8... 8... 8... 8... 8... 9... 9... 9... 11... 13... 13... 13... 13... 15... 15... 15... 15... 16... 16... 17... 17... 17...

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM CHAPTER 6 SQL SQL SQL 6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM 3. 1986 10 ANSI SQL ANSI X3. 135-1986

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

未命名

未命名 附录三 ADS- MySQL 基础语法偏表 类别语法偏类 MySQL 语法 ADS 语法备注 型 Utility DESCRIBE {DESCRIBE DESC} tbl_name [col_name wild] {DESCRIBE DESC} dbname.tbl_name EXPLAIN 负偏 {EXPLAIN} [explain_type] explainable_stmt {EXPLAIN}

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘 ITE 資 訊 專 業 人 員 鑑 定 資 料 庫 系 統 開 發 與 設 計 實 務 試 卷 編 號 :IDS101 注 意 事 項 一 本 測 驗 為 單 面 印 刷 試 題, 共 計 十 三 頁 第 二 至 十 三 頁 為 四 十 道 學 科 試 題, 測 驗 時 間 90 分 鐘 : 每 題 2.5 分, 總 測 驗 時 間 為 90 分 鐘 二 執 行 CSF 測 驗 系 統 -Client

More information

Untitled

Untitled Spring 4.0.0 spring-framework-reference QQ 413615763 Weibo le Email not-three@foxmail.com 2013.12.16 2.2 2013.12.17 2.3 : 2013.12.18 2.3 : 2013.12.18 2.3 :- Commons Logging Spring Spring Spring IoC StrutsHibernate

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 Spring 的核心容器 Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 依赖注入的概念 了解 Spring 的概念和优点 理解 Spring 中的 IoC 和 DI 思想 掌握 ApplicationContext 容器的

Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 Spring 的核心容器 Spring 的入门程序 依赖注入的概念 依赖注入的实现方式 依赖注入的概念 了解 Spring 的概念和优点 理解 Spring 中的 IoC 和 DI 思想 掌握 ApplicationContext 容器的 Java EE 企业级应用开发教程 (Spring+Spring MVC+MyBatis) 课程教学大纲 ( 课程英文名称 ) 课程编号 : XXXX 学分 : 5 学分学时 : 90 学时 ( 其中 : 讲课学时 :55 上机学时 :35) 先修课程 :Java 基础案例教程 Java Web 程序设计任务教程 MySQL 数据库入门适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

计算机软件技术专业教学计划

计算机软件技术专业教学计划 计 算 机 软 件 技 术 专 业 人 才 培 养 方 案 ( 服 务 外 包 方 向 ) 专 业 大 类 名 称 ( 代 码 ):++(++) 专 业 类 名 称 ( 代 码 ):++++++(++++) 专 业 名 称 ( 代 码 ):+++++++(++++++) 修 业 年 限 : 三 年, 全 日 制 招 生 对 象 : 三 年 制 普 通 高 中 及 对 口 中 职 专 业 毕 业 生

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

Microsoft Word - 第7章 初识Hibernate—教学大纲.doc

Microsoft Word - 第7章 初识Hibernate—教学大纲.doc SSH 框架整合实战教程 课程教学大纲 ( 课程英文名称 ) 课程编号 : 学分 : 5 学分学时 : 108 学时 ( 其中 : 讲课学时 :76 上机学时 :32) 先修课程 :Java 基础入门 MySQL 数据库入门 JavaWeb 程序开发入门 JavaWeb 程序开发进阶适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 SSH 框架整合实战教程 是面向计算机相关专业的一门专业

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 16 ODBC 和 JDBC 指南 FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,

More information

untitled

untitled Work Managers 什 Work Managers? WebLogic Server 9.x 行 (thread) 理 thread pool 數量 立 execute queues 來 量 理 thread count, thread priority 參數 理 thread pool 數量? WebLogic Server 9.x 理 行 (thread) (self-tuning) 句

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

季刊9web.indd

季刊9web.indd 在 全 国 现 场 会 上 成 功 展 示 全 国 烟 叶 收 购 暨 现 代 烟 草 农 业 建 设 现 场 会 7 月 6 日 至 8 日 在 昆 明 召 开 在 国 家 局 的 领 导 下, 由 我 司 技 术 开 发 的 烟 站 ( 单 元 ) 烟 叶 管 理 信 息 系 统 在 现 场 会 上 成 功 展 示, 并 得 到 参 会 领 导 及 代 表 们 的 关 注 与 认 可 该 系 统

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式... 6 1. 软 件 工 程 专 业 课 程 类 型...7

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式... 6 1. 软 件 工 程 专 业 课 程 类 型...7 计 算 机 系 软 件 工 程 专 业 习 指 南 广 东 科 技 院 计 算 机 系 2015-9-1 软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式... 6 1. 软 件 工 程 专 业 课 程 类 型...7

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

TopTest_Adminstrator.doc

TopTest_Adminstrator.doc 壹 前 言... 3 貳 系 統 簡 介... 4 一 TKB multimedia Top-Test 系 統 架 構...4 1. 使 用 者 介 面 層 (Presentation tier)...5 2. 商 業 邏 輯 層 (business logic tier)...5 3. 資 料 服 務 層 (data services tier)...5 二 TKB Multimedia Top-Test

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法 ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 0 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : 0 /// 测试方法 : 测试将 DataTable 导出到 EXCEL, 无模板 public void TestExportToExcelByDataTable() string excelpath

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

SQL Server SQL Server SQL Mail Windows NT

SQL Server SQL Server SQL Mail Windows NT ... 3 11 SQL Server... 4 11.1... 7 11.2... 9 11.3... 11 11.4... 30 11.5 SQL Server... 30 11.6... 31 11.7... 32 12 SQL Mail... 33 12.1Windows NT... 33 12.2SQL Mail... 34 12.3SQL Mail... 34 12.4 Microsoft

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放 性... 8 3.5 高 性 能 和

目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放 性... 8 3.5 高 性 能 和 致 远 协 同 管 理 软 件 V5 平 台 白 皮 书 北 京 致 远 协 创 软 件 有 限 公 司 2014 年 6 月 1 / 20 目 录 目 录... 2 1 平 台 概 述... 3 2 技 术 架 构... 4 3 技 术 特 点... 7 3.1 基 于 统 一 平 台 的 多 产 品 线 支 撑... 7 3.2 先 进 性... 7 3.3 安 全 性... 7 3.4 开 放

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 组件技术概述 现在软件开发都已经转向了基于组件的开发, 目前具备代表性的组件技术有微软的 COM COM+, 有 Sun 的 Bean 和 EJB(Enterprise Bean), 另外还有 CORBA(Common Object Request Broker Architecture, 公 共对象请求代理结构 ) Bean Bean 规范将 软件组件

More information

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

resp.getwriter().print(j + * + i + = + j * i+ ); resp.getwriter().print(<br/>); protected void dopost(httpservletrequest req, HttpServletRespo 第三章补充案例 案例 3-1 HttpServlet 一 案例描述 1 考核知识点名称 :HttpServlet 编号 : 2 练习目标 掌握 HttpServlet 的 doget() 方法和 dopost() 方法 3 需求分析由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互, 因此, 在 Servlet 接口中, 提供了 一个抽象类 javax.servlet.http.httpservlet,

More information

欢迎访问动力节点官方网站,动力节点java0基础免费学习半个月,java就业班免费学习一个月,满意后再交学费,请稊等,正在为您接入咨询老师

欢迎访问动力节点官方网站,动力节点java0基础免费学习半个月,java就业班免费学习一个月,满意后再交学费,请稊等,正在为您接入咨询老师 JDK 中的设计模式应用实例在 JDK(Java Development Kit) 类库中, 开发人员使用了大量设计模式, 正因为如此, 我们可以在不修改 JDK 源码的前提下开发出自己的应用软件, 本文列出了部分 JDK 中的模式应用实例, 有兴趣的同学可以深入研究, 看看前 Sun 公司的开发人员是如何在实际框架开发中运用设计模式的,Sunny 认为, 研究 JDK 类库中的模式实例也不失为学习如何使用设计模式的一个好方式.

More information

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind 企 业 信 息 表 公 司 名 称 : 中 铁 信 安 ( 北 京 ) 信 息 安 全 技 术 有 限 公 司 公 司 性 质 : 国 企 控 股 公 司 规 模 : 100 人 左 右 所 属 行 业 : 互 联 网 计 算 机 软 件 招 聘 人 数 :12 工 作 地 点 : 北 京 市 海 淀 区 公 司 能 够 提 供 的 福 利 : 五 险 一 金 晋 升 旅 游 节 假 日 礼 物 加

More information

Microsoft Word - 王彬_已修改_.doc

Microsoft Word - 王彬_已修改_.doc 第 39 卷 第 1 期 应 用 科 技 Vol.39, No.1 2012 年 2 月 Applied Science and Technology Feb. 2012 doi:10.3969/j.issn.1009-671x.201110009 基 于 J2EE 网 络 教 学 系 统 的 设 计 与 实 现 李 静 梅, 王 彬, 彭 晴 晴 哈 尔 滨 工 程 大 学 计 算 机 科 学 与

More information

序号:001

序号:001 第 一 组 选 题 简 介 序 号 :001 题 目 : 基 于 BPEL 的 网 上 订 餐 系 统 的 设 计 与 实 现 网 上 订 餐 系 统 是 在 互 联 网 上 进 行 菜 单 信 息 发 布 网 上 订 餐 以 及 维 护 客 户 关 系 的 电 子 商 务 系 统, 餐 饮 企 业 可 以 通 过 这 个 电 子 商 务 系 统 发 布 自 己 的 菜 单 信 息 以 供 客 户

More information

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M ASP.NET MVC Visual Studio 2017 1 1-4 MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\MvcExamples firstmvc MVC 1-7 ASP.NET MVC 1-9 ASP.NET

More information

J2ME ISBN J2ME MIDP MIDP 2.0 API J2ME Netbeans IDE 4.1 Mobility Pack 4.1 MIDlet MIDlet MIDP PUSH API PDA API Ja

J2ME ISBN J2ME MIDP MIDP 2.0 API J2ME Netbeans IDE 4.1 Mobility Pack 4.1 MIDlet MIDlet MIDP PUSH API PDA API Ja Java JBuilder 2005 2005 6 ISBN 7-121-01166-2 69.00 1 688 JBuilder JBuilder 2005 JBuilder JBuilder 2005 JBuilder 2005 Java Java Java JBuilder 17 J2ME 2006 1 ISBN 7-121-02210-9 39.00 1 436 J2ME MIDP MIDP

More information

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S 一 個 SQL Injection 實 例 的 啟 示 頁 1 / 6 你 的 網 站 在 裸 奔 嗎? 一 個 SQL Injection 實 例 的 啟 示 作 者 : 李 明 儒 SQL Injection( 資 料 隱 碼 攻 擊 ) 問 題 早 就 不 是 什 麼 新 聞, 但 前 陣 子 在 一 個 頗 具 知 名 度 的 活 動 網 站 上, 赫 然 發 現 它 大 刺 刺 地 現 身!

More information

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20%

KV-cache 1 KV-cache Fig.1 WorkflowofKV-cache 2.2 Key-value Key ; Key Mem-cache (FIFO) Value Value Key Mem-cache ( Value 256B 100 MB 20% 38 11 2013 11 GeomaticsandInformationScienceofWuhanUniversity Vol.38No.11 Nov.2013 :1671-8860(2013)11-1339-05 :A GIS Key-value 1 1 1 1 (1 129 430079) : 设计了一种基于 Key-value 结构的缓存 KV-cache 旨在简化数据结构 高效管理缓存数据

More information

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

北 风 网 讲 师 原 创 作 品 ---- 仅 供  学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 北 风 网 讲 师 原 创 作 品 ---- 仅 供 www.ibeifeng.com 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 者 远 ; 顺 风 而 呼, 声 非 加 疾 也, 而 闻 者 彰 假 舆 马 者, 非 利 足 也,

More information

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX BPMX3 技 术 白 皮 书 业 务 流 程 开 发 平 台 介 绍 目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇... 3 1.1 业 务 流 程 管 理... 4 2. 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX3... 5 2.1 BPMX3 是 什 么... 5 2.2 为 什 么 要 优 先 采 用 BPMX3... 5 2.2.1 BPMX3

More information

J2EE MVC with Webwork2 Xwork, to J2EE MVC with Webwork2 Xwork

J2EE MVC with Webwork2 Xwork,  to J2EE MVC with Webwork2 Xwork MVC with Webwork2 Xwork Action...1 ActionContext...3 ActionProxyFactory Factory...4 ActionProxyFactory Proxy AOP...7 XworkInterceptor...8 Interceptor...9 LoginAction...10 LoginInterceptor...12 Action Result

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

回滚段探究

回滚段探究 oracle oracle internal DBA oracle document oracle concepts oracle document oracle DBWR update t set object_id = '0' where object_id = '12344'; 1 row updated. commit; Commit complete. 0 12344 12344 0 10%

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

untitled

untitled Database System Principle Database System Principle 1 SQL 3.1 SQL 3.2-3.3 3.4 3.5 3.6 Database System Principle 2 3.1 SQL SQL Structured Query Language SQL Database System Principle 3 SQL 3.1.1 SQL 3.1.2

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

FAQ -PowerDesigner9.5.DOC

FAQ -PowerDesigner9.5.DOC PowerDesigner 9.5 FAQ 1. PowerDesigner PowerDesigner PowerDesigner (CASE Tool,Computer Aided Software Engineering) PowerDesigner 1989 9.5 2. PowerDesigner PowerDesigner Internet ( Java) PowerDesigner 7.0

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

1

1 PRIMETON TECHNOLOGIES, LTD. EOS EOS Manager No part of this document may be reproduced, stored in any electronic retrieval system, or transmitted in any form or by any means, mechanical, photocopying,

More information

Oracle高级复制冲突解决机制的研究

Oracle高级复制冲突解决机制的研究 Oracle dbms_rectifier_diff Oracle : eygle (eygle.com@gmail.com dbms_rectifier_diff Oracle dbms_rectifier_diff : http://www.eygle.com/archives/2005/01/eoadbms_rectifi.html DIFFERENCES Oracle dbms_rectifier_diff.differences

More information

第03章 控制反转(Spring IoC)

第03章  控制反转(Spring IoC) 3 Spring IoC GoF Design Patterns: Elements of Reusable Object-Oriented Software Programming to an Interface not an Implementation Java Java Java GoF Service Locator IoC IoC Spring IoC 3.1 IoC IoC IoC Dependency

More information

ebook46-23

ebook46-23 23 Access 2000 S Q L A c c e s s S Q L S Q L S Q L S E L E C T S Q L S Q L A c c e s s S Q L S Q L I N A N S I Jet SQL S Q L S Q L 23.1 Access 2000 SQL S Q L A c c e s s Jet SQL S Q L U N I O N V B A S

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 15 ODBC 和 JDBC 指南 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker

More information

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1 使用 odu 恢复被 drop 表过程 一. 数据库版本 SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production PL/SQL Release

More information

PowerPoint Presentation

PowerPoint Presentation 数 据 库 培 训 项 目 研 究 Oracle 索 引 探 究 B*tree 索 引 与 位 图 索 引 的 特 点 作 者 : 赵 超 2008 年 12 月 18 日 实 验 环 境 Windows-server2003 内 存 :2G Oracle 10.2.0 ORACLE_SID=orcl 索 引 类 型 B*tree 索 引 ( 默 认 方 式 ) 位 图 索 引 (bitmap) 反

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

untitled

untitled OO 1 SQL Server 2000 2 SQL Server 2000 3 SQL Server 2000 DDL 1 2 3 DML 1 INSERT 2 DELETE 3 UPDATE SELECT DCL 1 SQL Server 2 3 GRANT REVOKE 1 2 1 2 3 4 5 6 1 SQL Server 2000 SQL Server SQL / Microsoft SQL

More information

untitled

untitled 01 1-1 PHP 1-2 PHP 1-3 MySQL 1-4 1-5 http://w3techs.com/technologies/history_overview/programming_language w3techs.com (Server-side) 2012 7 77.8% PHP PHP PHP PHP 1-1 PHP PHP HTML Script Windows ASP(Active

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information