摘要:
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1publicnativeinthashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实... 阅读全文
摘要:
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationE... 阅读全文
摘要:
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因?一、大... 阅读全文
摘要:
首先从公司一道笔试题开始 1 package test; 2 3 public class Test implements Runnable { 4 5 public int i = 0; 6 7 @Override 8 public void run() { 9 ... 阅读全文
摘要:
谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。饿汉式:Java代码 1 package com.bijian.study; 2 3 public class Singleton { 4 5 privat... 阅读全文
摘要:
输出指令${}过滤输出输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签。格式:${expression} 示例:${user.name}注:HTTL缺省开启了EscapeXmlFilter,以防止HTML注入攻击,参见:安全示例。如果你需要更强的过滤,请自行实现Filter,并配置到... 阅读全文
摘要:
在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。请通过以下方式下载github源代码:git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git本地事务和分布式事... 阅读全文
摘要:
在本系列的上一篇文章中,我们讲到了使用动态代理的方式完成事务处理,这种方式将service层的所有public方法都加入到事务中,这显然不是我们需要的,需要代理的只是那些需要操作数据库的方法。在本篇中,我们将讲到如何使用Java注解(Annotation)来标记需要事务处理的方法。这是一个关于Jav... 阅读全文
摘要:
在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在service层中声明一个TransactionTemplate。在本篇文章中,我们将使用Java提供的动态代... 阅读全文
摘要:
在本系列的上一篇文章中,我们讲到了使用TransactionManger和ConnectionHolder完成线程安全的事务管理,在本篇中,我们将在此基础上引入Template模式进行事务管理。Template模式大家应该都很熟悉,比如Spring就提供了许多Template,像JdbcTempla... 阅读全文