![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 63
辰律
这个作者很懒,什么都没留下…
展开
-
SpringEvent和Async搭配
项目中使用 Spring Event 和 Async 实现了个功能,因为怕数据丢失,还有个比较久才会触发的保底捞数据的定时器。然后某天 event 和定时器同时跑了同一批数据,数量有点多触发了告警,虽然最后被唯一索引拦了,没造成啥影响,不过想研究下为啥Spring Event 中发事件的方法 @Override public void multicastEvent(final ApplicationEvent event, ResolvableType eventType) { Res原创 2021-06-23 23:02:28 · 617 阅读 · 0 评论 -
SpringMVC访问 html 文件404
在 SpringMVC 的控制器中,我们一般是如下配置: <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-clas...转载 2019-11-19 20:17:36 · 430 阅读 · 0 评论 -
JVM垃圾回收介绍
本文总结自周志明的第 2 版《深入理解 Java 虚拟机——JVM 高级特性与最佳实践》文章目录JVM 垃圾回收一、对象死亡1. 引用计数算法2. 可达性分析算法3. Java 中的引用4. 宣告对象死亡5. 方法区回收二、 垃圾回收算法1. 标记—清除算法2. 复制算法3. 标记—整理算法4. 分代收集算法三、 垃圾收集器1. Serial 收集器2. ParNew 收集器3. Paral...原创 2019-10-23 17:22:35 · 107 阅读 · 0 评论 -
Java内部类用法
前两天携程笔试,考到了内部类的一些知识点,已经有些模糊了,现在来通过《Java 编程思想》回顾一下文章目录1. 普通内部类:内部类的创建内部类获取外部类对象2. 局部内部类3. 匿名内部类4. 嵌套类(静态内部类)1. 普通内部类:必须使用外部类的对象来创建该内部类对象。内部类自动拥有对其外部类所有成员的访问权。内部类的创建在外部类的内部,可以直接的创建内部类对象,但如果是在外部类...原创 2019-10-16 17:59:28 · 114 阅读 · 0 评论 -
Java内部循环中断外部循环
这两天看《Java编程思想》,看到一个比较少见的但感觉有用的点,在这里记录一下:Java 中没有 goto 语句进行任意跳转,但是 Java 有一种跟 goto 相似的跳转,也是通过标签,但只能针对循环使用。使用方式:label1:outer-iteration { inner-iteration { //... break; //(1) //... ...原创 2019-10-14 16:28:48 · 1070 阅读 · 3 评论 -
Java中的代理模式
文章目录Java 的三种代理模式1. 什么是代理模式代理模式的定义:代理模式的优点:代理模式的缺点:2. 静态代理3. JDK 动态代理4. Cglib 代理Java 的三种代理模式本文参考自Java的三种代理模式1. 什么是代理模式代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之...转载 2019-09-29 16:41:10 · 96 阅读 · 0 评论 -
Java线程池简单介绍
Java 线程池介绍一、线程池线程池,从字面含义来看,是指管理一组同构工作线程的资源池。线程池是与工作队列密切相关的,其中在工作队列中保存了所有等待执行的任务。工作者线程的任务很简单:从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。跟数据库连接池相似,如果每一次操作,都要新建一个线程(连接)然后销毁,会对系统资源产生巨大开销,通过线程池(连接池)对线程(连接)进行管理,让...原创 2019-10-03 16:36:48 · 206 阅读 · 0 评论 -
[笔记] Java中的线程安全与锁
Java 线程安全与锁本文来自周志明的《深入理解 Java 虚拟机——JVM高级特性与最佳实践》文章目录Java 线程安全与锁一、 线程安全定义二、 共享数据的分类1. 不可变2. 绝对线程安全3. 相对线程安全4. 线程兼容5. 线程对立三、 线程安全的实现1. 互斥同步synchronizedReentrantLock二者对比:2. 非阻塞同步CAS3. 无同步方案可重入代码线程本地存储四...原创 2019-10-09 17:29:10 · 166 阅读 · 0 评论 -
[笔记] Java线程通信
文章目录线程通信1. synchronized2. Lock3. 阻塞队列 BlockingQueue本文主要来自李刚的《疯狂Java讲义》第三版线程通信当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但 Java 也提供了一些机制来保证线程协调运行。我们假设有一个存取款系统,存款跟取款是不同的线程,现在有一个比较特殊的要求,存款与取款的操作一直在进行...原创 2019-10-10 17:00:57 · 125 阅读 · 0 评论 -
Java深拷贝和浅拷贝
深拷贝和浅拷贝拷贝,也是克隆,其功能是,创建一个与被克隆对象一样的对象,而并不是克隆一份引用。浅拷贝:拷贝所有的基本类型,对于引用类型,则直接拷贝引用。深拷贝:拷贝所有的基本类型,对于引用类型,重新创建一个该引用类型的对象,并拷贝这个引用类型对象。在 Java 中,实现拷贝的方法有以下 2 种:1、Object 的 clone()方法调用 Object 的 clone()方法,默认...原创 2019-09-24 21:43:59 · 170 阅读 · 0 评论 -
Java消息中间件简单应用
本篇博客主要来自慕课网的课程:Java消息中间件文章目录中间件介绍一、什么是中间件二、什么是消息中间件三、什么是JMS四、什么是AMQP五、常见消息中间件对比JMS规范一、消息模式1. 队列模式2. 主题模式二、JMS编码接口代码DEMO启动ActiveMQ代码DEMO1. 队列模式生产者消费者2. 主题模式发布者订阅者消息查看中间件介绍一、什么是中间件非底层操作系统软件,非业务应用软件,...原创 2019-09-22 16:19:55 · 460 阅读 · 0 评论 -
JVM内存模型
JVM内存模型:1. 程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转等都依赖于程序计数器。在任意确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令,为了保证每个线程在调度过程中能正确恢复执行,每条线程都需要有一个独立的程序计数器。...原创 2019-09-19 15:12:20 · 83 阅读 · 0 评论 -
JAVA包装类型缓存池详解
前言:我们知道,缓存一些常用的数据能提高程序的运行效率,而在Java中,Java给一些基本类型提供了一个缓存池,缓存池中已经提前存进去了一些元素,提高数据的读取速度。各个类型的缓存池内容如下boolean values true and false //布尔类型中的两个取值 true和falseall byte values ...原创 2019-08-09 20:15:40 · 1676 阅读 · 0 评论 -
Java反射知识点笔记
1. Class对象类是程序的一部分,每个类都有一个Class对象,而反射所依赖的就是这个Class对象。在JVM中,类都是动态加载的,当程序创建第一个对类的静态成员的引用时,就会加载这个类,这个可以证明构造函数也是类的静态方法,即使构造方法没有使用static关键字。类加载器首先检查在这个类的Class对象是否已经加载,如果尚未加载,默认的类加载器就会根据类名查找 .class 文件,这个...原创 2019-08-18 13:30:48 · 120 阅读 · 0 评论 -
Java字符串详解
一、字符串常量池字符串常量池就跟包装类的常量池一样,不过是在 jdk1.7 版本中才加入,实现在堆内存中。与基本类型的包装类不一样,字符串常量池没有装箱拆箱等操作,也不会像包装类一样一开始就有数据,而是在程序运行的过程中,将一些字符串存入常量池中,以此来提高效率。下面通过一个例子来说明一下 public static void main(String[] args) { ...原创 2019-09-04 17:17:46 · 212 阅读 · 0 评论 -
redis存储对象
package com.grh;import com.alibaba.fastjson.JSON;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import java.io.*;import java.util.Map;public class redisJedis ...原创 2019-09-05 18:59:29 · 213 阅读 · 0 评论 -
Java序列化反序列化详解
本文参考自java 序列化,看这篇就够了 一、序列化的定义序列化:将对象写入到 IO 流中反序列化:从 IO 流中恢复对象使用场景:将对象存入数据库或文件时,在网络通信时传输序列化后的对象时 二、实现序列化的方式如果一个类想要实现序列化,那它就要实现Serializable或者Externalizable两个接口中的一个。这里放个 User 类 用来序列化:...转载 2019-09-07 15:54:50 · 249 阅读 · 0 评论 -
Java IO流笔记
一、IO流分类:根据数据流向的不同可分为输入流和输出流;根据处理的数据类型不同可分为字节流和字符流;根据流的角色来分,可以分为节点流和处理流;1. 输入流输出流:一个流的流向是相对于当前这个程序的,从这个程序的内存中传输数据出去,就是输出流;将数据从外部写入程序内存中,就是输入流。在 Java 中,输入流主要由 InputStream 和 Reader 作为基类,输出流主要由 Outp...原创 2019-09-13 16:02:23 · 157 阅读 · 0 评论 -
Java创建线程方法
一、继承Thread类定义 Thread 类的子类,并重写该类的 run() 方法,该 run() 方法的方法体就代表了线程需要完成的任务。因此把 run() 方法称为线程执行体。创建 Thread 子类的实例,即创建了线程对象。调用线程对象的 start() 方法来启动该线程。示例代码如下:public class ThreadTest extends Thread{ pr...原创 2019-09-16 22:20:30 · 90 阅读 · 0 评论 -
Java线程控制
文章目录线程的生命周期线程控制1. 线程加入2. 后台线程3. 线程睡眠4. 线程让步5. 线程优先级8. 线程中断线程的生命周期我们先来看下生命周期的图,该图来自《疯狂 Java 讲义》新建:当一个线程被 new 出来后,他就处于新建状态就绪:当一个线程调用 start()方法后,他就处于就绪状态运行:当一个线程获得 CPU,就开始执行线程执行体即 run()方法,此时就进入了运行...原创 2019-09-18 16:19:05 · 77 阅读 · 0 评论 -
class.newInstance()方法被弃用
在java1.9版本中,newInstance()已经被弃用,取而代之的是class.getDeclaredConstructor().newInstance()class.newInstance()会直接调用该类的无参构造函数进行实例化class.getDeclaredConstructor().newInstance()getDeclaredConstructor()方法会根据他的...原创 2019-08-13 20:27:33 · 28321 阅读 · 3 评论