摘要:
在Struts2中,可以实现Interceptor接口或继承AbstractInterceptor类,来自定义拦截器。 ①接口中的init()方法,在拦截器被创建后立即被调用,它在拦截器的生命周期内只被调用一次,可以在该方法中对相关资源进行必要的初始化; ②每拦截一个请求,intercept()方法 阅读全文
摘要:
Hashmap本质是数组加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。 ConcurrentHashMap:在hashMap的基础上,ConcurrentHashMap将数据分为多个segment,默认16个(concurren 阅读全文
摘要:
分为3种:一对一、一对多、多对多。 阅读全文
摘要:
手写9x9乘法表,冒泡排序 9x9乘法表 class Demo {public static void main(String[] args) {for(int x = 0;x <= 9; x++) {for(int y = 1;y <= x; y++) {System.out.print(y+"* 阅读全文
摘要:
主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 阅读全文
摘要:
传统的数据库连接方式 一个连接对象对应一个物理连接,每次操作都打开一个物理连接,使用完都关闭连接,造成系统性能低下。 连接池技术 客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的 阅读全文
摘要:
由于重复点击或者网络重发,或者nginx重发等情况会导致数据被重复提交 解决办法: 集群环境:采用token加redis(redis单线程的,处理需要排队) 单JVM环境:采用token加redis或token加jvm内存 处理流程: 1. 数据提交前要向服务的申请token,token放到redi 阅读全文
摘要:
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM 阅读全文
摘要:
DD是指在编写真正的功能实现代码之前先写测试代码,然后根据需要重构实现代码。在JUnit的作者Kent Beck的大作《测试驱动开发:实战与模式解析》(Test-Driven Development: by Example)一书中有这么一段内容:“消除恐惧和不确定性是编写测试驱动代码的重要原因”。因 阅读全文
摘要:
阿里校招java面试题汇总 1.HashMap和HashTable的区别,及其实现原理。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的,继承自AbstractMap,Map interface的一个实现。 HashMap允许将null作为一个entry的ke 阅读全文
摘要:
①读未提交 read uncommitted;一个事务读到另一个事务没有提交的数据; (未解决,3问题都存在) ②读已提交 —— oracle默认 read committed;一个事务读到另一个事务已提交的数据; (解决脏读) ③可重复读 mysql默认 repeatable read;在一个事务 阅读全文
摘要:
集中式与进程内负载均衡的区别是什么? 目前业界主流的负载均衡方案可分成两类: 第一类:集中式负载均衡, 即在consumer和provider之间使用独立的负载均衡设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把 访问请求 通过某种策略转发至provider; 第二类:进程 阅读全文
摘要:
①在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。 ②在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例 阅读全文