自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JAVA技术爱好者

平时随写

  • 博客(82)
  • 收藏
  • 关注

原创 Spring BeanFactory后置处理器详解之配置类解析过程

Spring BeanFactory后置处理器详解之配置类解析过程BeanFactoryPostProcessor实现方式BeanFactory后置处理器源码分析invokeBeanFactoryPostProcessors分析BeanFactoryPostProcessorBeanFactoryPostProcessor是spring的一大核心,也是一个扩展点之一,spring的配置类扫描解析就是使用了BeanFactoryPostProcessor来实现的;spring中的两大扩展点之一就是Bean

2020-11-09 22:20:54 1207

原创 Spring启动过程详解

Spring启动过程详解前言spring容器启动过程AnnotationConfigApplicationContext有参数构造方法无参数构造AnnotatedBeanDefinitionReader构造配置类解析register(解析我们的配置类Appconfig)refresh启动准备prepareRefreshprepareBeanFactory(beanFactory)registerBeanPostProcessors(beanFactory)initMessageSourceinitAppli

2020-11-09 22:16:34 15375 16

原创 Spring依赖注入之@Resourcce详解&Bean的销毁

Spring依赖注入之@Resourcce详解&Bean的销毁@Resource和@AutoWired@Resource依赖注入过程源码分析@Resource、@PostConstruct、@PreDestroy寻找注入点applyMergedBeanDefinitionPostProcessorsCommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinitionInitDestroyAnnotationBeanPostProcesso

2020-10-25 17:47:28 825

原创 Spring依赖注入之注入Bean获取详解

Spring依赖注入之注入Bean获取详解依赖注入获取Bean过程resolveDependency方法详解Optional类型的获取beanObjectFactory类型获取beandoResolveDependency(普通注入类型)QualifierAnnotationAutowireCandidateResolver.isAutowireCandidateGenericTypeAwareAutowireCandidateResolver.isAutowireCandidateaddCandidate

2020-10-25 17:33:13 2701

原创 Spring依赖注入@AutoWired

Spring依赖注入@AutoWiredSpring依赖注入的形式XML的方式xml自动注入源码autowireByNameautowireByType以@AutoWired的方式spring的注解依赖注入doCreateBean之注入点postProcessMergedBeanDefinition@AutoWired依赖注入AutowiredFieldElement.inejctAutowiredMethodElement.inject@Autowired例子演示Spring依赖注入的形式Spring

2020-10-25 17:18:36 1746

原创 Spring bean生命周期之doCreateBean方法详解

Spring bean声明周期之doCreateBean方法详解前言@ValuecreateBean方法详解实例化前方法调用实例化前初始化后doCreateBeanapplyMergedBeanDefinitionPostProcessors填充属性&实例化后(populateBean)@AutoWired的实现逻辑&属性填充后的后置处理器初始化BeaninitializeBean初始化前后置处理器初始化方法前言在上一篇笔记中我们介绍了bean的初始化声明周期,但是期间有个最核心的方法c

2020-10-25 12:03:28 3639 3

原创 Spring生命周期Bean初始化过程详解

Spring声明周期Bean初始化过程详解Spring 容器初始化Spring Bean初始化BeanFactory和FactoryBean源码分析Bean的实例化preInstantiateSingletonsgetMergedLocalBeanDefinitiongetBean方法getObjectForBeanInstance例子分析@DependsOnSpring 容器初始化在spring中,不管是以xml文件的方式配置的Bean还是以注解的方式进行配置,最后都会将单例Bean放入到Spring

2020-10-25 11:51:00 11378

原创 Spring源码中涉及到的基本概念详解

这里写目录标题Spring简单介绍Bean定义XML定义Bean三级目录Spring简单介绍可以说spring是目前J2EE架构中最成功的轻量级的J2EE架构,spring发展了很多年了,现在使用已经很广泛了,可以说基本上每一家企业都在使用,包括BAT公司,都在spring架构的基础上做了很多的扩展,这个专题主要记录下spring的一些相关笔记,前段时间看了下spring的容器初始化的过程,发现里面的封装实在是太复杂了,封装了上千个类,如果不理解概念,直接去看源码会直接晕掉,spring最核心的功能就是

2020-10-25 11:40:27 772

原创 并发编程之条件队列CyclicBarrier(栅栏)

并发编程之条件队列CyclicBarrier(栅栏)CyclicBarrier栅栏Condition队列AQS内部定义了ConditionObjectCyclicBarrier实现原理构造方法Condition.await()signalAllCyclicBarrier执行流程(图解)CyclicBarrier栅栏CyclicBarrier栅栏是AQS中除共享锁、独占锁之外的一种条件锁的一种实现,CyclicBarrier和semaphor以及countDownlatch在实现上有一定的区别,Cycli

2020-10-09 11:42:55 740 6

原创 并发编程之AQS(抽象队列同步器)共享锁

并发编程之AQS(抽象队列同步器)共享锁前言Semaphore信号量Semaphore 的构造semaphore.acquire()doAcquireSharedInterruptibly(int arg)semaphore.release()unparkSuccessor(h)实列分析入队解锁出队CountDownLatchcountDown()await流程图前言在上一遍笔记中详细介绍了AQS抽象队列同步器的独占锁,在AQS中,独占锁的实现是使用ReentrantLock来实现的,那么共享锁在AQS

2020-10-09 11:32:47 312

原创 并发编程之AQS(抽象队列同步器)独占锁

并发编程之AQS(抽象队列同步器)独占锁前言AQS原理同步器队列结构ReentrantLock类构造队列的数据结构信息Nodelock过程lock图解过程unlock过程unlock图解过程总结前言在介绍AQS之前,我专门写了CAS、Volatile、synchronized、阻塞队列,链表以及线程中断的笔记,因为在学习AQS之前,如果对于这些基础的东西不了解的话,那么AQS你是看不懂的,AQS我自己认为还是比较难的,但是只要是学习技术,那么如果都那么简单的话,那也就没有专门来学习的必要了,我也难得写笔

2020-09-26 18:22:46 464

原创 并发编程之线程中断&CAS

并发编程之线程中断&CASsynchronized和LOCK的区别线程中断线程中断之唤醒CAS原理什么是CASAtomicInteger(CAS典型使用案例)compareAndSwapInt jvm中的实现CAS缺点什么是ABA问题如何解决ABA问题synchronized和LOCK的区别在前面的笔记中已经记录了synchronized,这个锁是JVM内置的锁,不需要程序员手动释放锁,我们在前面已经知道了synchronized锁主要是使用monitor锁的机制来实现的,而synchroniz

2020-09-26 18:02:42 370

原创 Synchronized详细介绍之锁升级过程

Synchronized详细介绍之锁升级过程前言线程与进程的区别进程线程区别协程二级目录三级目录前言我们在并发编程过程中,会有一些资源或者操作是必须要进行序列化访问的,就是线程之间不能并发的访问,必须要进行串行访问,所以就引入了锁的概念,java中只用的锁主要有两种,一种是jdk内置的锁,一种是juc包下面的锁,jdk内置的锁是不要释放的,由jvm自动给我们释放锁,而juc包下面的锁是有Doug Lea大神开发的,在编程的时候需要在finally进行锁的释放,否则很容易导致死锁;线程与进程的区别谈到

2020-09-24 15:07:15 3942 6

原创 Volatile内存屏障&指令重排

Volatile内存屏障&指令重排前言内存屏障CPU缓存架构之伪共享指令重排as-if-serialhappens-beforeJIT指令重排序指令重排序的手段volatile重排序规则前言在上一篇笔记中提到了volatile关键字的作用,我们知道并发编程的三大理论是可见性、有序性和原子性,而volatile只能保证可见性和有序性,有序性是什么呢?有序性就是让程序能够有序的执行,volatile可以禁止指令重排,但是指令重排在应用中其实很常见的,比如简单的例子就是当cpu在执行一条指令的时候,执

2020-09-18 22:19:13 2647 3

原创 并发编程之JMM模型&Volatile底层原理

并发编程之JMM模型&Volatile底层原理并发编程的本质JMM模型并发编程带来的风险计算机组成并发之可见性并发编程的本质并发编程为什么要有?为什么我们要做并发编程,并发编程是实质是什么?我觉得并发编程是一种艺术,在现在的时代,硬件的性能在不断的提升,以前的单核CPU现在已经发展成为了多核CPU,性能已经不断提升,如果我们还保留着以前的单线程程序的话,那么只会出现硬件性能过剩的情况;我们来思考一个问题并发编程的本质是解决什么问题?并发编程在一定的意义上其实就是多线程编程,那么多线程编程中主要有

2020-09-18 21:56:24 498 4

原创 执行引擎、逃逸分析、JIT即时编译

执行引擎、逃逸分析、JIT即时编译执行引擎是什么?java的两种解释器即时编译字节码解释器模板解释器两种解释器执行流程JIT(即时编译)的三种运行模式java中两种即时编译器即时编译启动触发条件热点代码缓冲区即时编译是如何运行的?为什么说java是半解释半编译的语言逃逸分析标量替换锁消除栈上分配执行引擎是什么?执行引擎是JVM的一套子系统,当程序运行的时候,执行引擎就开始工作了;在 Java 虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观(Facade)。

2020-09-15 17:14:27 518

原创 String字符串

String字符串常量池class文件常量池运行时常量池String常量池字符数组的存储方式不同方式创建字符串在JVM中的存在形式字符串连接常量池java中的常量池在我的理解中有三种,分别是calss常量池,运行时常量池和string 常量池class文件常量池class文件中的常量池是在硬盘上的,通过javap -verbose xxx.class可以看到:Constant pool: #1 = Methodref #7.#28 // java/lang/

2020-08-30 22:26:55 249

原创 JVM的内存模型

JVM的内存模型JVM 内存模型方法区虚拟机栈虚拟机栈执行流程局部变量表操作数栈this指针程序计数器JVM堆各个区之间的关系总结JVM 内存模型我们这边所讲的JVM内存模型是指JAVA8的内存模型,JVM的内存模型包含了:堆区、方法区、虚拟机栈、本地方法栈、程序计数器,关于JVM的内存模型,各大博客网站都有非常详细的讲解,这边我主要根据自己的理解做一个简单记录,具体看下图:其中运行数据区是JVM最重要的一块区域,运行数据区中的方法区和堆区是线程共享的区域而虚拟机栈和程序计数器是线程私有的区域,

2020-08-30 22:14:20 658

原创 手动解析java字节码文件

手动解析java字节码文件前言字节码文件原貌手动解析字节码文件常量池解析解析字段属性方法解析结束语前言我们平时编写的java源文件,也就是.java文件在经过编译过后会成为jvm能识别的.class文件,也就是编译成了字节码文件,jvm的执行引擎目前有两种执行的方式,字节码解释执行和模板解释执行,我们的通常的字节码文件要通过jvm(c++)解释成计算机能识别的硬编码,也就是汇编;而模板解释器是直接不通过C++代码进行解释执行,而是通过模板解释器直接解释成计算机能识别的硬编码,而这些被模板解释器解释成的硬

2020-08-28 13:34:45 894 1

原创 JVM类加载器子系统与SPI

类加载器子系统与SPI类加载器启动类加载器扩展类加载器应用类加载器类加载器加载的类如何存储双亲委派打破双亲委派SPI机制类加载器JVM中有两种类型的加载器,一种是由C++编写,一种是由JAVA编写,除了启动类加载器(Bootstrap Class Loader)是由C++编写的以外,其他都是由JAVA编写的,由JAVA编写的加载器都继承与java.lang.ClassLoader,JVM还支持自定义加载器,对于自定义加载器的典型用法就是可以破坏JVM的双亲委派,为什么要破坏双亲委派,想要做到破坏双亲委派

2020-08-26 23:11:25 697

原创 JVM底层之类加载器

JVM底层之类加载器前言JVM中的Klass模型验证准备初始化前言这篇博客记录下JVM底层的类加载器,关于类加载器网络上有不少博客写到,我这边只是根据自己的理解记录下jvm类加载器的过程,可能不会太详细,只是用于自己平时偶尔翻翻回忆下自己的曾经所获所得。JVM中的Klass模型java中的每一个类在JVM中都是以Klass形式存在的,其中包含了元数据信息,包含属性信息、方法信息以及常量池。Klass的模型结构如下:最顶层的父类是MeaSpaceObj,然后元信息类Metadata是子类,而我们

2020-08-26 23:02:32 611

原创 JVM是如何得到数组长度的

JVM是如何得到数组长度的这篇笔记主要记录下我们在java中编写的数组,比如int arr[] ={1,2,3};,那么我们使用int len = arr.length;jvm底层是如何得到数组长度的;数组在jvm底层是动态 产生的,也就是说不是静态的,类似于我们得到一个对象的hashcode一样,如果你没有重写过hashcode方法,那么对象的hashcode默认就是对象的内存地址,所以hashcode也是动态产生的,我们的数组也是一样的,我们定义好数组过后,数组在运行时是可以动态生成、动态添加以及动

2020-08-25 13:21:14 797 1

原创 JAVA实现Spring IOC 容器技术和AOP切面编程技术

JAVA实现Spring IOC 容器技术和AOP切面编程技术Spring IOC介绍spring AOP自定义spring ioc容器和AOP切面技术实现过程创建注解创建扫描注解父类创建IOC相关的类IOC的创建最后来编写测试类结束语Spring IOC介绍spring ioc技术在目前来说已经是非常成熟的JAVA容器技术了,使用也是非常广泛,可以说目前市场上用了spring,那么IOC是其最核心的部分;IOC全称叫Inversion of Control,是控制反转的意思,平时我们编写java代码时

2020-05-21 16:27:01 682 5

原创 DB2命令

查看db2缓冲区大小: db2 get db cfg for arterydb|grep -i buff 修改db2缓存区大小:db2 -v update db cfg for dpdb using LOGBUFSZ 2048db2 -v terminatealter bufferpool IBMDEFAULTBP immediate size 102400修改db2 IBMDE...

2016-07-06 16:45:17 277

原创 maven安装

mvn install:install-file -Dfile=F:\commons-configuration-1.8.jar -DgroupId=org.apache.commons.commons-configuration -DartifactId=commons-configuration -Dversion=1.8 -Dpackaging=jar maven打包到maven...

2016-07-06 16:40:39 213

原创 金融ARQC、ARPC验证生成规则

从2012年从事金融行业的IT开发和实施工作以来,接触最多的就是IC卡片的ARQC等安全验证,只从发行IC卡以来,行业里面安全验证就是使用ARQC来验证交易的安全性,最近在项目中实施改造的时候因为前段读卡上送过来的ARQC到我系统,我系统去安全平台做ARQC验证失败,原因排查了好久都不知道什么原因,所以我自己研究了下将验证ARQC和生产ARPC的过程写下来,网上有很多关于 ARQC生成的规则文章,...

2016-07-06 16:34:38 8309

原创 spring + hibernate + mysql 事务不回滚

首先声明,这个问题涉及到的数据库是MySQL。这是个很奇怪的问题,事务怎么会不回滚呢?实际上这是个愚蠢的问题,是经验不足导致的,越是奇怪的问题解决起来就越容易。不回滚的根本原因不在Hibernate,更不是SSH框架,而在MySQL本身。查看MySQL数据库使用的存储引擎:mysql>show variables like '%storage_engine%';...

2012-08-15 09:39:32 219

原创 NIO ByteBuffer 使用方法

缓冲区分配和包装 在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区: ByteBuffer buffer = ByteBuffer.allocate(1024); allocate() 方法分配一个具有指定大小的底层数组,并将它包装到一个缓冲区对象中 — 在本例中是一个 ByteBuffer。 还可以将一个现有的数组转换为缓冲区: byte array[] = n...

2012-04-13 11:42:23 197

java 用反射和泛型操作Excel

 package xxxx.util;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.lang.reflect.Fi...

2012-03-23 15:39:28 320

原创 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码

1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">2.只能输入数字,能输小数点.<input onkeyup="if(isNaN(value))execCom...

2012-03-22 09:42:37 179

原创 myEclipse中安装vss插件地址

<!--StartFragment -->[Version 6.2] http://download.dynamsoft.com/eclipseplugin/sawv/ [Version 6.1] http://download.dynamsoft.com/eclipseplugin/sawv6.1/ [Version 6.0] http://download.dynamsoft....

2012-03-21 09:50:26 187

原创 Socket简单通信

最近感觉网络编程方面知道的比较少,今天做了一个小例子,就是客服端与服务器端的连接,使用了多线程,具体的代码如下:服务器端:package com.bmldyq.sockey.server;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import jav...

2012-03-20 17:37:21 156

原创 JAVA操作WebService

我琢磨了下JAVA中的WebService,java中的Webservice现在比较流行的有两种: XFire和AxisXFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。 相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的W...

2012-03-20 15:53:02 187

原创 hibernate锁机制

hibernate锁机制 1.悲观锁 它指的是对数据被外界修改持保守态度。假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数据,为了保持数据被操作的一致性,于是对数据采取了数据库层次的锁定状态,依靠数据库提供的锁机制来实现。 基于jdbc实现的数据库加锁如下: select * from account where name="Erica" for update 在更新的过程...

2012-03-20 15:40:31 191

原创 hibernate 中get和load的区别

hibernate中提供了两个方法get和load这两个方法,具体的实现方式如下:...get(User.class,id);....load(Organization.class, id)); 这两个方法中都是获取数据的意思1.get方法是要先从内部缓存中去找数据,如果找不到数据就通过sql去数据库中去取,而load方法不会去数据库中取而是通过内部缓存(hibernate一级缓存...

2012-03-20 15:36:58 167

原创 JAVA面试题

JAVA经典面试题汇总Java基础方面:0、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 当前类 同一package 子孙类 其他packagepublic √        √                  √       √protected √  √                  √        ×friendly √     √...

2012-03-15 15:58:30 205

原创 MemCached缓存

在服务器端安装了MemCached服务过后我们就可以使用第三方缓存技术MemCached,这个使用比较简单,在系统初始化的时候就可以加载缓存public class CacheService { boolean cacheUse; // 指定memcached服务地址 String[] cacheServerList; // 设置初始连接数100 int initialConnec...

2012-03-13 22:35:00 147

将web请求的参数全部封装到Map中

最近有用将用户的请求参数全部封装到Map中,这个可以根据自己的需求进行封装,有些项目使用这样不是很好,在效率方面不是有好,有些项目又比较实用,但是可以自己选择型的封装。我这边没有做任何处理,就直接封装起来,大家可以根据自己的需求去处理。定义一个filter进行处理,在web中配置过后就可以使用了:public void doFilter(ServletRequest request, Serv...

2012-03-13 22:29:36 578

原创 JPA简单DAO基础类实现

最近研究jpa,写了个简单的DAO基础类,对简单的CRUD进行操作package com.dyqsoft.base.dao.imp;import java.lang.reflect.Constructor;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.Arr...

2012-03-13 22:25:12 507

原创 be+into be found of

be+into是表示对、、、感兴趣。如:I'm into java。(我对java敢兴趣)I‘m not into singsing.(我对唱歌不感兴趣) be found of 后+sing形式或者是情态动词He found of singsing....

2012-03-12 11:57:04 454

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除