- 博客(22)
- 收藏
- 关注
原创 springboot redisTemplate redis实现分布式锁
获取锁实现原理 使用redis lua脚本 lua脚本执行是个原子操作重要命令 setnx 如果key不存在则设置值代码: /** * 获取锁 * 原因是 redis是单线程的 一但一个线程获取锁后 其它线程就不能获取的锁 * @param lockKey 锁名称 * @param value 值 * @param exp...
2020-01-15 11:42:00
1485
原创 tomcat8.5 配置https证书
第一步:用java自带的工具生成证书keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:\apache-tomcat-8.5.31\conf\key\tomcat.keystore -validity 36500第二步:<Connector port="8443" protocol="org.apache.coy...
2019-11-06 14:30:34
854
原创 重载和重写的区别
1.重载(Overload)重载方法名相同,参数列表不同(参数个数不同,参数类型不同,参数列表不同)。注:重载中返回值类型,方法修饰符可以不同,但是返回值类型,修饰符不同不能判断是否为重载。2.重写(Override)1.方法名相同,参数列表相同2.返回值为基本类型,则返回值类型相同(除子类返回值是父类返回值的子类)3.子类抛出的异常不能比父类大4.子类方法修饰符不能...
2019-03-26 14:06:09
586
原创 线程的终止操作
1.使用interrupt()/isInterrupted()/interrupted()interrupt() 在一个线程中调用另一个线程的interrupt()方法,即会向那个线程发出信号-->线程中断标志已设置isInterrupted() 判断当前线程的中断状态(true 终止)interrupted() 线程的静态方法,用来恢复中断状态(注:作用与当前线程中)int...
2019-03-26 12:12:52
222
原创 CountDownLatch使用和分析
使用案例:/** * CountDownLatch 使用以及原理分析 */public class CountDownLatchDemo { public static void main(String[] args) throws Exception { CountDownLatch latch = new CountDownLatch(3); ...
2019-03-25 16:36:15
378
原创 Final关键字的理解
final 不可变1.Final修饰的类不能被继承2.final修饰的方法不能重写3.final修饰的变量必须初始化且只能初始化一次4.final修饰的基本类型不可改变5.final修饰的引用类型不可变,内容可以改变final不可变,而继承是多态的体现同一个对象不同的表现,所以final修饰的类和方法不能被继承和重写。...
2019-03-22 15:27:35
160
原创 Vector源码分析以及ArrayList比较
源码分析如下:package easyExcel;import java.util.Vector;public class VectorDemo { public static void main(String[] args) { /** protected Object[] elementData; 数组存储元素 ...
2019-03-21 13:18:35
162
原创 ArrayList和LinkedList源码分析
ArrayList和LinkedList源码分析:package easyExcel;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.LinkedList;public class App { public static void main( String...
2019-03-20 22:49:56
206
原创 代理模式
1.静态代理接口package ProxyDemo.staticProxy;public interface Person { void findJob();}委托类package ProxyDemo.staticProxy;public class Tom implements Person{ @Override public void...
2019-03-12 11:47:05
110
原创 强引用、软引用、弱引用、虚引用
强引用以前我们使用的大部分引用实际上都是强引用。如果一个对象具有强引用垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机会抛出OutOfMemoryError错误,使程序异常终止。public class StrongReferenceDemo { static Object object = new Object(); public static void m...
2019-03-04 10:57:20
149
原创 ArrayList扩容机制
ArrayList构造函数 //存储元素transient Object[] elementData;//扩容时使用private static final Object[] EMPTY_ELEMENTDATA = {};//元素的个数private int size;//默认容量大小private static final int DEFAULT_CAPACIT...
2019-02-13 16:56:50
544
1
原创 asList详解
asList(T... a)返回的是一个固定大小的list集合源码分析:public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }此时的ArrayList为Arrays里面自定义的一个私有的内部类 private static cla...
2019-01-18 09:30:20
1388
原创 Zookeeper使用
1.安装...................2.Zookeeper常见命令①create命令创建节点create [-s][ -e] path data acl-s:顺序节点 -e:临时节点 都不加为持久节点 path:节点名称 data节点值 acl权限②读取节点ls pathpath:表示命令名称 命令 命令说明 create(创建节点)...
2018-12-26 13:42:45
171
原创 分布式相关概念
1.CAP理论 C:一致性(Consistency) A:可用性(Availability)和分区容错性(Partition tolerance)。在一个分布式系统里面不可能同时满足CAP这三个基本需求,最多只能同时满足其中两项(在现在分布式系统中P是都会满足)。 一致性:是指数据在多个副本之间是否能够保持一致性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操...
2018-12-20 17:01:58
323
原创 mybatis批量新增
批量新增两种方式:①:使用case when end形式 update capital_invoice_item setstatus=case id then 1 then 11case id then 2 then 22endwhere id in (1,2)UPDATE capital_invoice_item <trim prefix="s...
2018-12-20 14:06:52
685
原创 Java SPI(Service Provider Interface)
1.什么是SPI SPI全称Service Provide Interface,是JDK内置的一种服务提供发现机制(如:JDBC)。是一种动态替换发现机制。例如:有个接口想在运行时才发现具体的实现类,那么你只需要在程序运行前添加一个实现即可,并把新加的实现描述给JDK即可。实现类系统类加载器AppClassLoader来加载(注:这里是违反了类加载器双亲委派模式)。2.SPI规范...
2018-12-20 11:56:13
222
原创 zookeeper简介
1.什么是zookeeper zookeeper是一个高效可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式服务。是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、分布式协调通知、Master选举、分布式锁和分布式队列等功能。zookeeper可以保证如下分布式一致性特性。 顺序一致...
2018-12-19 17:14:51
579
原创 通过poi读取Excel的内容
package com.cp.base.util;import com.cp.annotation.NameAnnotation;import org.apache.poi.ss.usermodel.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import ...
2018-11-14 11:24:53
222
原创 版本号规则
版本号命名规则x.y.z X表示主版本号,当API兼容变化时,X需要递增 Y表示次版本号,当增加功能时(不影响API的兼容性),Y递增 Z表示修订号,当做Bug修复时(不影响API的兼容性),z需要递增X.Y.Z必须为非负整数,且不包含前导零,必须按照数值递增。当API的兼容变化时,X必须递增,Y和Z同时设置为0,当新增功能(不影响API的兼容性)或者API标记为D...
2018-09-07 09:59:30
2650
原创 java反射
反射: JAVA反射机制是在运行状态(不是在编译期)中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射的具体实现: public static void main(String[] args) { //1.获取Class对象的三种方式 ...
2018-09-06 14:25:34
143
原创 switch case 中如何使用枚举
枚举类: public enum ContractTempletEnum { PPT(1,"普通模板"),SIGNT(2,"签约模板"); private Integer id; private String name; private ContractTempletEnum(Integer id, String name) { this.id = id; this.na...
2018-07-27 13:18:09
20855
原创 mysql 日期函数date_format(date,format)
date_format(date,format)将日期转换为指定的format格式 例如:date_format(now(),'%Y-%m-%d %H:%i:%s') --> 2018-01-01 12:12:12常见的format格式:%Y 年 4位 例 2018%m 月 2位 例 01%d 日 2位 例 01%H 时 24小时 01、23%i 分 2位 例 0...
2018-07-26 14:00:43
1169
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人