在Docker上部署Oracle

近期由于工作的需求,需要补充一下Oracle DB的知识;

oracle-xe-11g是Oracle推出的一款免费产品,可惜只有rpm包; 由于习惯于使用界面更加友好的Ubuntu,但是Google了很久,在Ubuntu上安装oracle-xe-11g确实是件痛苦的事情。另外,为了趁此机会学习一下时髦的Docker,决定使用docker-oracle-xe-11g。


Java interview 总结三

  1. 多系统之间调用超时问题处理多系统之间调用超时问题处理
    如系统A调用系统B服务,系统B需要处理大量数据(或耗时较长的DB call),设计出现超时情况,如何处理? (系统B事务回滚、系统A重试机制、aop等)

  2. 控制service最大并发量
    (容器级别、单一service级别、线程池)

  3. 1亿条数据中查找1条数据,查询时间响应问题,可能解决方案
    (硬件、index、表分片、分布式DB)


Java interview 总结二

6. Spring MVC基本流程

  1. spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
  2. DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
  3. DispatcherServlet请请求提交到目标Controller.
  4. Controller进行业务逻辑处理后,会返回一个ModelAndView.
  5. Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。
  6. 视图对象负责渲染返回给客户端。

7. Class.getResource(String path)和ClassLoader.getResource(String path)

Class.getResource(path) 当path以’/’开头时,从ClassPath根目录下获取资源;否则是该类所在的包下获取资源.
ClassLoader.getResource(path) path不能以’/’开头,是从ClassPath根目录下获取资源. this.getClass.getResource("/") == this.getClass.getClassLoader.getResource("")


Java interview 总结一

1. Jdk和Jre

今天面试的一道题目,惭愧ing,java开发近2年,对于这2个单词,最熟悉不过,也知道其中的含义,但是如何二者的区别和联系是什么?

JDK: Java Development Kit
JRE: Java Runtime Environment

JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

2. Http协议特点

无连接,无状态 详细说明见: + 如何理解HTTP协议的 “无连接,无状态” 特点?


Spring AOP demo

本文摘自:https://nkcoder.github.io/2014/03/13/spring-aop-example/

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦。所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见的横切关注点有日志、事务和安全等。

将横切关注点抽离形成独立的类,即形成了切面。切面主要由切点和通知构成,通知定义了切面是什么,以及何时执行何种操作;切点定义了在何处执行通知定义的操作。

下面以简单的日志作为切面,分别介绍通过xml配置和注解实现AOP。

0. 添加依赖

因为Spring AOP用到AspectJ的相关对象和注解,需要添加AspectJ的依赖:

<dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjrt</artifactId>
	<version>1.7.4</version>
</dependency>
<dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjweaver</artifactId>
	<version>1.7.4</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-aop</artifactId>
	<version>${spring.version}</version>
</dependency>