Java
文章平均质量分 54
花开百
物来顺应 未来不迎 当时不杂 既过不恋
展开
-
java 实现PGP生成公私钥对生成,以及加解密文件
介绍最近和联通的数据生成系统对接需要使用PGP工具,网上查了资料,调了一整天终于出来了,下面介绍下使用方法以及碰到的一些的小坑使用方法依赖jar包 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15...原创 2020-04-07 17:24:30 · 4215 阅读 · 29 评论 -
oracle迁移mysql 遇到的一些坑
背景疫情期间,有一个老项目要从oracle迁移到MySQL, 其中碰到了一些坑,在此做个记录和大家分享一下sequence 变 自增id老项目中oracle主键id都是使用sequence,在mysql中自然得使用自增主键,这块主要朋友的问题是,在老项目中使用的dao层框架是springJdbc,再插入数据库中,有时需要返回插入的主键ID,oracle数据库一般都是,先查询nextval()...原创 2020-02-28 10:32:13 · 1037 阅读 · 0 评论 -
SpringBean生命周期-初始化和销毁
Spring Bean初始化和销毁:在实际开发中经常需要在Bean使用之前或者之后作写必要的操作,Spring对Bean的生命周期的操作提供了支持。下面是SpringBean的生命周期流程图:根据上面的流程图我们有三种方式实现对Bean的生命周期进行操作:Java配置方式:使用@Bean的initMethod和destroyMethod(相当于xml配置的init-method和dest...原创 2020-01-13 23:19:55 · 299 阅读 · 0 评论 -
设计模式-代理模式 建造者模式
什么是代理模式通过代理控制对象的访问,可以详细访问某个对象的方法,在这个方法调用处理,或调用后处理。既(AOP微实现) ,AOP核心技术面向切面编程。应用场景SpringAOP、事物原理、日志打印 等等代理的分类静态代理(静态定义代理类)动态代理(动态生成代理类),又可以分为Jdk自带动态代理,Cglib 、javaassist(字节码操作库)静态代理由程序员创建或工具生成代理...原创 2019-12-26 23:09:42 · 194 阅读 · 0 评论 -
并发编程之并发队列及线程池
并发队列在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞5️⃣,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。阻塞队列与非阻塞队列阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程...原创 2019-12-21 22:27:54 · 228 阅读 · 0 评论 -
并发编程之锁机制了解
介绍锁的机制大家一定听说过很多,比如乐观锁,悲观锁,排他锁,重入锁,CAS无锁机制,自旋锁,分布式锁等等,下面简单简绍下这些锁悲观锁与乐观锁悲观锁:悲观锁悲观的认为每一次操作都会造成更新丢失问题,在每次查询时加上排他锁。每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,...原创 2019-12-19 09:22:31 · 184 阅读 · 0 评论 -
并发编程之线程通讯
线程通讯多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。比如一个写操作,一个读操作。wait notify 方法1.因为涉及到对象锁,他们必须都放在synchronized中来使用. Wait、Notify一定要在synchronized里面进行使用。2.Wait必须暂定当前正在执行的线程,并释放资源锁,让其他线程可以有机会运行3. notify/notifyall...原创 2019-12-17 20:55:55 · 200 阅读 · 0 评论 -
并发编程之java内存模型(JMM)
多线程三大特性原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其中就包括,读取i的值,计算i,写入i。这行...原创 2019-12-17 09:21:27 · 89 阅读 · 0 评论 -
并发编程之线程安全
什么是线程安全当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。public class ThreadTrain implements Runnable { private int trainCount = 100; @Override public void run() { while (t...原创 2019-12-13 21:24:34 · 102 阅读 · 0 评论 -
并发编程之多线程基础
多线程和进程的区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入、文...原创 2019-12-12 22:20:15 · 93 阅读 · 0 评论 -
java动态代理
介绍Spring框架是目前开发中使用最广泛框架,spring的核心功能一个是ioc一个是aop.。Aop的核心功能就是使用java的动态代理,在许多框架中也使用了动态代理,目前在看mybatis源码,数据库连接池中,关闭connection连接中,是将connection放回了连接池,而不是调用了close()方法,这块就使用了动态代理的方式,我先介绍下动态代理的实现方式,后面介绍mybatis...原创 2019-09-11 14:53:59 · 111 阅读 · 0 评论 -
Jdk1.8 Stream
jdk1.8已经发布好几年了,最新的已经发布到jdk12了,但是目前开发种还是jdk1.8用到的较多,最近在工作种用到了Stream,在这做个笔记整理学习。什么是StreamStream是java8的新特性,位于包java.util.stream,但是和java的iostream完全不同,是对集合功能的增强,可以进行大批量的数据操作,分为并行和串行操作,结合java8 lambda表达式使用...原创 2019-09-10 11:01:55 · 117 阅读 · 0 评论 -
Spring aop
介绍spring aop 的使用方式,使用的框架是spring-boot核心概念Aspect:即切面,切面一般定义为一个 Java 类, 每个切面侧重于特定的跨领域功能,比如,事务管理或者日志打印等。Joinpoint:即连接点,程序执行的某个点,比如方法执行。构造函数调用或者字段赋值等。在 Spring AOP 中,连接点只会有 方法调用 (Method execution)。Advic...原创 2019-09-02 10:50:06 · 82 阅读 · 0 评论 -
java Enum枚举
介绍最近在写TLS连接,里边有用到大量的有关联的参数,起初用常量字符串定义,不好管理,后面就想到用枚举,好久没有用过枚举,正好借这个机会复习一下。jdk从1.5开始提供枚举(enum),枚举的本质是将当前类自动继承java.lang.Enum,Enum是一个抽象类,当我们创建enum时,编译器负责解析简单枚举public enum TestEnum { MON,TUE,WED,...原创 2019-07-02 17:08:51 · 129 阅读 · 0 评论 -
spring 属性编辑器
介绍在spring中可以把普通属性注入道对象中,但是Date类型就无法被识别。列如public class User { private Date dateValue; public Date getDateValue() { return dateValue; } public void setDateValue(Date dateValue) { this.dateV...原创 2019-06-03 16:07:44 · 215 阅读 · 0 评论 -
Excuteable类
JAVA Excuteable介绍1.构造函数2Class<?>[] getParameterTypes();介绍最近再研究Spring源码,再阅读通过创建Bean时,类org.springframework.beans.factory.support.RootBeanDefinition中的字段参数,resolvedConstructorOrFactoryMethod 为jdk...原创 2019-05-29 11:29:07 · 228 阅读 · 0 评论