随笔分类 -  Java

摘要:常用注解 @Mapper 在DAO接口类上使用@Mapper注解是自动生成相应的实现类; @MapperScan 如果不想麻烦,在每个类都使用@Mapper注解,可以使用@MapperScan注解扫描某一包下的接口,自动生成实现类; 阅读全文
posted @ 2021-03-09 14:55 befmain 阅读(84) 评论(0) 推荐(0)
摘要:注解 @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次) @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次) @Test:测试方法,在这里可以测试期望异常和超时时 阅读全文
posted @ 2021-03-09 11:54 befmain 阅读(70) 评论(0) 推荐(0)
摘要:线程池的实现 ThreadPoolExecutor类实现了ExecutorService接口和Executor接口,可以设置线程池corePoolSize,最大线程池大小,AliveTime,拒绝策略等。常用构造方法: ThreadPoolExecutor(int corePoolSize, int 阅读全文
posted @ 2018-08-16 10:23 befmain 阅读(4910) 评论(0) 推荐(0)
摘要:静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。 静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。 动态代理是实现 JDK 里的 InvocationHandler 接口的 invoke 方法,但注意的是代理的是接口,也就是你的 业务类必须要实现接 阅读全文
posted @ 2018-08-01 16:35 befmain 阅读(5277) 评论(0) 推荐(0)
摘要:1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson 1.2.FastJson的特点: 1.FastJ 阅读全文
posted @ 2018-07-19 18:51 befmain 阅读(304) 评论(0) 推荐(0)
摘要:问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行“随机读写”的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一、入门 1、简介 Kafka is a d 阅读全文
posted @ 2018-07-18 16:29 befmain 阅读(355) 评论(0) 推荐(0)
摘要:参考文献: http://www.blogjava.net/xylz/archive/2010/07/19/326527.html 一、ConcurrentMap API 从这一节开始正式进入并发容器的部分,来看看JDK 6带来了哪些并发容器。 在JDK 1.4以下只有Vector和Hashtabl 阅读全文
posted @ 2018-06-29 15:37 befmain 阅读(254) 评论(0) 推荐(0)
摘要:参考文献: http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 一、Lock与ReentrantLock 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最后的总结篇来整体说明。从这一章开始花少量的篇幅谈谈锁 阅读全文
posted @ 2018-06-29 12:23 befmain 阅读(369) 评论(0) 推荐(0)
摘要:一、从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始)。 很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。注意,这里有三个条件: 这三个条件看起来比较 阅读全文
posted @ 2018-06-29 12:22 befmain 阅读(328) 评论(0) 推荐(0)
摘要:对java并发库一直觉得很神秘,决定好好研究一下。 参考文献: https://blog.csdn.net/hp910315/article/details/50963095 http://www.blogjava.net/xylz 系列博客 一、总体架构 二、 tools 三、locks 四、co 阅读全文
posted @ 2018-06-29 00:47 befmain 阅读(139) 评论(0) 推荐(0)
摘要:对Java多线程中的ThreadLocal类还不是很了解,所以在此总结一下。 主要参考了http://www.cnblogs.com/dolphin0520/p/3920407.html 中的文章。 一、对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做 阅读全文
posted @ 2018-06-28 23:30 befmain 阅读(203) 评论(0) 推荐(0)
摘要:一、传统线程机制 1. 使用类Thread实现 2. 使用Runable对象来实现 3. 总结 通过查看源代码可知,thread调用run()方法时,会先判断有没有设置target,也就是一个runable对象,如果有runable对象,那么就会直接调用runable对象的run方法; 二、 传统定 阅读全文
posted @ 2018-06-28 17:00 befmain 阅读(216) 评论(0) 推荐(0)
摘要:如果多线程并发的访问与一个数据结构,那么很容易破坏一个数据结构。 例如,一个线程可能要向一个散列表中插入一条数据的过程中,被剥夺了控制权。如果另外一个线程也开始遍历同一个链表,很可能造成混乱,抛出异常或者陷入死循环。这就是为什么HashMap不是线程安全的原因。 一、旧的线程安全的集合 通过同步包装 阅读全文
posted @ 2018-06-27 22:18 befmain 阅读(1952) 评论(0) 推荐(0)
摘要:一、线程概述 1. 并发与并行 并行:指在同一时刻,有多条指令在多个处理器上同时执行; 并发:指在同一时刻只能有一条指令执行,但是被快速轮转,表现为多线程。 2. 多线程编程的优点 进程之间不能共享内存,但是线程之间共享内存很容易; 对操作系统而言,线程的创建代价小,而进程的创建和销毁代价很高; 二 阅读全文
posted @ 2018-06-25 22:09 befmain 阅读(232) 评论(0) 推荐(0)
摘要:前学习过一段时间的设计模式,总是感觉学习的不够清楚。现在再重新复习一下,原文地址:https://blog.csdn.net/doymm2008/article/details/13288067 一、设计模式的分类 总体来说设计模式分为三大类: 1. 创建型模式 共五种:工厂方法模式、抽象工厂模式、 阅读全文
posted @ 2018-06-25 12:55 befmain 阅读(3518) 评论(0) 推荐(3)
摘要:线程安全:如果一个对象可以安全的被多个线程同时使用,那它就是线程安全的。 一、Java中的线程安全 1.不可变 不可变的对象一定是线程安全的。String、枚举类型、java.lang.Number的部分子类如Long和Double等数值包装类型,BigInteger和BigDecimal等大数据类 阅读全文
posted @ 2018-06-24 09:27 befmain 阅读(224) 评论(0) 推荐(0)
摘要:Java内存模型是定义线程共享的变量的访问规则(实例字段、静态字段和构成数组对象的元素),但不包括线程私有的局部变量和方法参数。 1.主内存与工作内存 Java内存模型规定,所有的变量都必须存储在主内存中。 线程使用到的变量保存在线程工作内存中,其实主内存的副本拷贝。 2. 内存间的交互操作 loc 阅读全文
posted @ 2018-06-24 00:40 befmain 阅读(169) 评论(0) 推荐(0)
摘要:虚拟机把描述类的Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的。 一、类的生命周期: 类从加载到内存,直至从内存中卸载。整个生命周期如下图: 阅读全文
posted @ 2018-06-23 21:54 befmain 阅读(173) 评论(0) 推荐(0)
摘要:一、垃圾收集器总览 新生代:Serial、 ParNew、 Parallel Scavenge 老年代:CMS、Serial Old、 Parallel Old 最新的:G1 并行和并发的区别: 并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发:指用户线程和垃圾收集线程同时执 阅读全文
posted @ 2018-06-23 13:49 befmain 阅读(175) 评论(0) 推荐(0)
摘要:大部分的开发者都觉得垃圾回收是一件再正常不过的事情,根本没有认真研究过到底垃圾回收是如何实现的。但是如果直接看实际代码的话,就会发现十分晦涩难懂。 所以这篇文章带你初步认识5种最基本的垃圾回收算法,并且为每个算法配上一段生动形象的动画。 1.运行结束时统一回收(没有自动GC) 这是最朴素的垃圾回收算 阅读全文
posted @ 2018-06-23 13:04 befmain 阅读(526) 评论(0) 推荐(0)