java
文章平均质量分 89
止戈(Frank)
这个作者很懒,什么都没留下…
展开
-
SpringBoot最最最常用的注解梳理
一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Java代码可以检查类型安全。@EnableAutoConfiguration自动配置。@Compone...原创 2021-01-18 14:05:37 · 154 阅读 · 0 评论 -
Java实现简单的RPC框架
Java实现简单的RPC框架一、RPC简介RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。 RPC示意图如上图所示,假设Computer1在调用sayHi()方法,对于Computer1而言调用sayHi()方法就像调用本地方法一样,调用 –>返回。但从后续调用可以...转载 2021-01-11 17:34:52 · 725 阅读 · 0 评论 -
Excel导入导出之easyexcel
环境搭建 读取excel文件 小于1000行数据 默认读取 指定读取 大于1000行数据 默认读取 指定读取 导出excle 单个Sheet导出 无模型映射导出 模型映射导出 多个Sheet导出 工具类 测试类环境搭建easyexcel 依赖(必须) springboot (不是必须) lombok (不是必须)...转载 2020-04-01 14:40:45 · 409 阅读 · 0 评论 -
JAVA导出数据到excel
导出成csv格式大数据量的导出成csv格式分为以下几步:1.首先引入需要的jar包 一下是我maven的配置方式 1 2 3 4 5 6 7 8 9 10 <dependency> <groupId>org.mvel</groupId...原创 2020-04-01 14:13:03 · 97 阅读 · 0 评论 -
Java的三种代理模式
1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明...原创 2019-08-13 16:03:34 · 91 阅读 · 0 评论 -
关于redisson锁的使用和理解
对于分布式锁的要求互斥性:分布式锁需要保证在不同节点的不同线程的互斥。这是最根本的。可重入性:同一个节点上的同一个线程如果获取了锁之后也可以再次获取这个锁。锁超时:和本地锁一样支持锁超时,防止死锁。高可用:加锁和解锁需要高效,同时也需要保证高可用防止分布式锁失效,可以增加降级。支持阻塞和非阻塞:和 ReentrantLock 一样支持 lock 和 trylock 以及 tryLock(...转载 2019-08-13 15:50:12 · 1402 阅读 · 0 评论 -
选择排序、冒泡排序、插入排序、快速排序、希尔排序、归并排序和堆排序
public class ArraySort { /** * 选择排序<br/> * <li>在未排序序列中找到最小元素,存放到排序序列的起始位置</li> * <li>再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。</li> * <li>以此类推,直到所有元素均...原创 2019-08-13 15:42:28 · 98 阅读 · 0 评论 -
HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录一、什么是哈希表二、HashMa...转载 2019-02-26 16:05:02 · 191 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我...转载 2019-02-26 16:06:38 · 114 阅读 · 0 评论 -
ConcurrentHashMap源码分析(1.8)
0、说明 ※为了分析源码的时候方便调试,把ConcurrentHashMap的源码放在本地了,名字改为了ConcurrentHashMapDebug由于源码中的unsafe有很多限制,不能直接在本地使用,所以,在源码的最后面的静态代码块处修改了U的初始化方法。private static final sun.misc.Unsafe U;static{ U = getUn...转载 2019-02-15 16:32:01 · 1036 阅读 · 0 评论 -
ConcurrentHashMap底层实现原理(JDK1.8)源码分析
ConcurrentHashMap数据结构 ConcurrentHashMap相比HashMap而言,是多线程安全的,其底层数据与HashMap的数据结构相同,数据结构如下: 说明:ConcurrentHashMap的数据结构(数组+链表+红黑树),桶中的结构可能是链表,也可能是红黑树,红黑树是为了提高查找效率。ConcurrentHashMap源码分析 1、类的继承...转载 2019-02-15 16:29:08 · 324 阅读 · 0 评论 -
JDK源码之AQS源码剖析
AbstractQueuedSynchronizer(AQS)是JDK中实现并发编程的核心,平时我们工作中经常用到的ReentrantLock,CountDownLatch等都是基于它来实现的。 AQS类中维护了一个双向链表(FIFO队列), 如下图所示:队列中的每个元素都用一个Node表示,我们可以看到,Node类中有几个静态常量表示的状态:复制代码static final cla...原创 2019-02-15 16:16:08 · 142 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大...转载 2019-02-15 16:11:27 · 90 阅读 · 0 评论 -
maven全局配置文件settings.xml详解
maven全局配置文件settings.xml详解概要settings.xml有什么用?如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。settings.xml文件是干什么的,为什么要配置它呢?从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置...原创 2018-04-13 10:00:26 · 128 阅读 · 0 评论