
J2SE
文章平均质量分 62
hoaven
目前就职于蚂蚁金服,负责花呗、借呗和网商银行的智能风控。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
javassist 版本导致ClassNotFoundException: javassist.ClassPath异常
1、异常描述使用Dubbo时,引入了javassist导致出现了ClassNotFoundException: javassist.ClassPath异常,因为此异常网上资料较少,特分享出来供大家脱坑: 服务启动后报错:message: Context initialization failed (o.s.web.context.ContextLoader:350) [localhost-sta原创 2018-03-30 11:34:29 · 16158 阅读 · 2 评论 -
Java线程池的实现--Executor、ThreadPoolTaskExecutor、@Async的使用
一、为什么要使用线程池 当我们需要的并发执行线程数量很多时,且每个线程执行很短的时间就结束了,这样,我们频繁的创建、销毁线程就大大降低了工作效率(创建和销毁线程需要时间、资源)。java中的线程池可以达到这样的效果:一个线程执行完任务之后,继续去执行下一个任务,不被销毁,这样线程利用率提高了。二、Jdk 1.5后线程池 //【固定的线程池】定义进程池并指定其大小 ...原创 2018-06-05 17:33:21 · 5710 阅读 · 0 评论 -
Java后端接口、Mysql优化建议与规范
一、后端接口禁止使用递归;原因:每次递归调用时会向栈中push当前方法的运行状态(现场),而Java栈内存的使用超过限制的大小时,程序会出现栈异常;避免层级嵌套循环;注意方法、类文件中的代码量,适度分离;使用基本类型定义变量时,千万注意该变量值可能为null的情况,此时建议使用对应的包装类来定义变量;避免在同一接口中过多的访问数据库,建议次数控制在3次以内;避免过多使用static...原创 2018-04-28 11:25:55 · 1922 阅读 · 0 评论 -
slf4j、slf4j-logback日志框架使用
写在前面:本文旨在代码中使用@Slf4j注解实现日志处理,使用slf4j作为门面api,使用slf4j-logback作为日志绑定。一、Slf4J介绍 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。1、依赖 <dependency> ...原创 2018-04-28 11:00:09 · 508 阅读 · 0 评论 -
lombok-Java插件使用
一、lombok介绍 lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。二、lombok安装1、安装插件2、引入依赖<dependency> <groupId>org.projectlombok</gr...原创 2018-04-28 10:26:10 · 441 阅读 · 0 评论 -
单例设计模式的几种Java实现
一、静态变量初始化实现线程安全的单例模式 static变量instance是在类被加载时初始化并仅被初始化一次,这样就可以保证只有一个instance被初始化。public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} ...原创 2018-04-28 09:34:46 · 189 阅读 · 0 评论 -
java.util.concurrent源码分析(二)atomic包
1、atimic包介绍Aomic数据类型有四种类型:AomicBooleanAomicIntegerAomicLongAomicReferrence:引用,针对Object以上四种类型对应的数组类型所有原子操作都是依赖于sun.misc.Unsafe这个类,它是Java的一个安全的开发工具。2、关于CAS现代主流CPU都支持的一种硬件级别的原子操作, 比较并交换, 操作包含三个操作数:*原创 2018-03-26 17:50:51 · 283 阅读 · 0 评论 -
java.util.concurrent源码分析(五)ConcurrentHashMap实现
1、线程安全和非线程安全引入问题:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?以上是Java面试中常见的提问,众所周知,前者是非线程安全的,后者是线程安全的。那何为非线程安全?何为线程安全?线程安全:线程安全就是说多线程访问同一代码(临界资源),不会产生不确定的结...原创 2018-03-27 18:40:53 · 216 阅读 · 0 评论 -
java.util.concurrent源码分析(四)ReentrantReadWriteLock实现
1、ReentrantReadWriteLock介绍(1)ReentrantReadWriteLock与ReentrantLock ReentrantLock实现了标准的互斥操作, 也就是一次只能有一个线程持有锁, 也即所谓独占锁的概念. 显然这个特点在一定程度上面降低了吞吐量, 实际上独占锁是一种保守的锁策略, 在这种情况下任何”读/读”, “写/读”, “写/写”操作都不能同时发生.但是同样原创 2018-03-27 13:30:18 · 210 阅读 · 0 评论 -
Redis分布式锁Java实现
一、背景 在天猫、京东、苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,可能会有几十万几百万的并发量,来抢这个手机,在高并发的情形下会对数据库服务器、文件服务器、应用服务器造成巨大的压力,严重时甚至宕机了。另一个问题是,秒杀的东西都是有量的,例如一款手机只有10台的量秒杀,那么,在高并发的情况下,成千上万条数据...原创 2018-04-09 11:27:42 · 258 阅读 · 0 评论 -
java.util.concurrent源码分析(一)包结构
写在前面近期在研究java.util.concurrent源码,将自己学到的一些鄙见记录下来,供新入坑的朋友一起学习。持续更新...1、Aomic数据类型这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括 Boolean, Integer, Long, 和Referrence这四种类型以及这四种类型的数组类型。...原创 2018-03-26 16:37:42 · 626 阅读 · 0 评论 -
Java面试题-阿里、饿了么、链家、携程
一、J2SE部分1、Java基础==与equals()方法的区别?1. ==在比较基本数据类型时比较的是值,比较两个对象时比较的是地址值;2. equals()方法存在于Object类中,Object类中equals()方法底层依赖的是==操作, 在所有没有重写equals()的类中,调用equals()其实和使用==的效果一样,也是比较的地址值。 Strin...原创 2018-07-19 21:29:36 · 9540 阅读 · 4 评论