Java
麦田里的稻草人19994
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Excel 读取单元格Cell日期类型、浮点型、长数字处理
【代码】Excel 读取单元格Cell日期类型、浮点型、长数字处理。原创 2024-10-24 16:27:40 · 291 阅读 · 0 评论 -
poi操作 word文档删除页眉页脚
poi 页眉,页脚 清理原创 2023-11-27 09:43:19 · 1204 阅读 · 0 评论 -
获取音频时长
public static Integer getDuration(String fileUrl) { try { URL url=new URL(fileUrl); MultimediaObject multimediaObject = new MultimediaObject(url); MultimediaInfo info = multimediaObject.getInfo(); ret原创 2021-02-22 14:56:42 · 280 阅读 · 0 评论 -
Spring容器的refresh() 过程三、核心bean创建流程
initApplicationEventMulticaster方法在spring 事件监听器原理分析 的时候有分析过,可以参考下,下面主要分析finishBeanFactoryInitialization方法@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this con.原创 2020-09-14 01:00:50 · 348 阅读 · 0 评论 -
Spring容器的refresh() 过程 二、
@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the subclass to refresh the internal bean factory.原创 2020-09-13 17:04:30 · 262 阅读 · 0 评论 -
jvm指令与工具jstat/jstack/jmap/jconsole/jps/visualVM概述
示列代码如下,通过查看示例代码,观察jvm运行情况启动参数为-Xmx10m -Xms10mpublic class JVMTest { public static void main(String[] args) throws InterruptedException { while (true){ Thread.sleep(1000); System.out.println("123456"); } }.原创 2020-09-09 13:35:58 · 402 阅读 · 0 评论 -
spring 事件监听器原理分析
先搭建源码分析环境,这里引用的是org.springframework4.3.12.RELEASE版本分析的,debug之前github上下载相关源码-地址 除了在上述代码中打上断点之外,增加EventListenerMethodProcessor的afterSingletonsInstantiated方法打上断点,AbstractApplicationContext的initApplicationEventMulticaster方法和registerListeners上打上断点。@Componen.原创 2020-09-02 23:32:09 · 653 阅读 · 0 评论 -
spring BeanDefinitionRegistryPostProcessor 原理分析
在所有bean定义信息将要被加载,bean实例还未创建时,优先于BeanFactoryPostProcessor执行,利用BeanDefinitionRegistryPostProcessor给容器中再额外添加一些组件。源码测试环境搭建@ComponentScan("com.atguigu.ext")@Configurationpublic class ExtConfig { @Bean public Blue blue(){ return new Blue(); }}@Co.原创 2020-09-02 00:23:32 · 190 阅读 · 0 评论 -
spring BeanFactoryPostProcessor原理分析
BeanFactoryPostProcessor是beanFactory的后置处理器,在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容,所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建。先搭建源码分析环境@ComponentScan("com.atguigu.ext")@Configurationpublic class ExtConfig { @Bean public Blue blue(){ return new.原创 2020-09-02 00:00:33 · 168 阅读 · 0 评论 -
spring 声明式事务源码分析
同理,先搭建源码分析调试环境@Repositorypublic class UserDao { @Autowired private JdbcTemplate jdbcTemplate; public void insert(){ String sql = "INSERT INTO `tbl_user`(username,age) VALUES(?,?)"; String username = UUID.randomUUID().toString().substring(0, 5).原创 2020-09-01 16:10:52 · 200 阅读 · 0 评论 -
三、spring aop 原理之 目标方法执行
调试代码搭建参考断点为LogAspects类与MathCalculator每个方法 debug执行方法进入断点,intercept方法@Overridepublic Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { Object oldProxy = null; boolean setProxyContext = fal.原创 2020-08-31 17:00:16 · 519 阅读 · 0 评论 -
二、spring aop 原理之 创建代理对象
源码分析之前,先搭建源码分析环境这里引用的是org.springframework4.3.12.RELEASE版本分析的,debug之前github上下载相关源码–地址 打断点的位置如下标注,同时,为了查看AbstractAutoProxyCreator代理对象创建器的处理逻辑,在其postProcessBeforeInstantiation与postProcessAfterInitialization方法处打上断点。@EnableAspectJAutoProxy@Configurationpu.原创 2020-08-31 00:03:27 · 258 阅读 · 0 评论 -
一、spring aop 原理之 后置处理器 AnnotationAwareAspectJAutoProxyCreator 源码解析
1.向容器中注册AnnotationAwareAspectJAutoProxyCreator当开启基于注解的aop模式,要添加注解 @EnableAspectJAutoProxy,点进@EnableAspectJAutoProxy的源码此注解帮助spring处理标记了 AspectJ注解的组件,有点类似原来的xml配置文件里面的 aop:aspectj-autoproxy/** * Enables support for handling components marked with Asp原创 2020-08-29 20:59:30 · 450 阅读 · 0 评论 -
spring aware 接口源码浅析
先来看下aware的官方注释Marker superinterface indicating that a bean is eligible to benotified by the Spring container of a particular framework objectthrough a callback-style method. Actual method signature isdetermined by individual subinterfaces, but should原创 2020-08-23 14:56:41 · 241 阅读 · 0 评论 -
spring自动装配-@Autowired、@Qualifier、@Primary、@Resource、@Inject组合使用
Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;常用的有如下几个注解@Autowired,@Qualifier、@Primary、@Resource、@Inject,组合使用,完成对bean 的依赖注入注解名称说明注意点@Autowired默认优先按照类型去容器中找对应的组件,找到就赋值,如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找,可以使用@Autowired(required=false)@Qualifier.原创 2020-08-19 18:58:11 · 475 阅读 · 0 评论 -
spring属性赋值-@value赋值与@PropertySource加载外部配置文件
1.@Value 赋值1、基本数值2、可以写SpEL表达式:#{ }3、可以写${ },取出配置文件中的值2. @PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值案例:public class Person { @Value("张三") private String name ; @Value("${person.nickName}") private String ni原创 2020-08-19 13:10:44 · 471 阅读 · 0 评论 -
spring生命周期-BeanPostProcessor使用与原理浅析
额外原创 2020-08-18 23:19:30 · 321 阅读 · 0 评论 -
spring 生命周期-bean的初始化和销毁方法
bean的创建—初始化----销毁的过程中 ,容器管理bean的生命周期; 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法。下面简单介绍下面三种方式来自定义我们的bean的初始化和销毁方法1.通过@Bean指定init-method和destroy-method2.通过让Bean实现InitializingBean(定义初始化逻辑),DisposableBean(定义销毁逻辑)3.使用JSR250 @PostConstruct:在bean创建原创 2020-08-18 17:25:51 · 328 阅读 · 0 评论 -
spring常用注解@Import
1.先来看下原创 2020-08-10 23:27:41 · 279 阅读 · 0 评论 -
spring常用注解@Conditional
1.先全局搜下spring官方文档,找到了关于@Conditional的部分信息这个解释的简单概况呢,就是@Profile的注解,是通过@Condition实现的再点进这个官方关于@Condition的官方文档简单总结下:1.只有满足特定条件(自己实现相关方法),被此注解注解的部分才能生效2.特定条件为实现Condition接口与match方法,返回true注册,false不注册3.此注解的应用场景1.和@Component@Configuration组合使用在类上,和@Bean组合用在方原创 2020-08-07 00:17:30 · 252 阅读 · 0 评论 -
Apache Camel 最简单入门教程&案例
apache camel 案例,包含与 mysql,activeMQ等的使用案例,可以看下,简单易懂!!!maven配置<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-core --> <dependency> <groupId>org.apache.camel</groupId>原创 2020-06-28 23:48:53 · 3817 阅读 · 0 评论 -
Java对象之 强引用、弱引用、软引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来弱化引用,如下:o=null; // 帮助垃圾收集器回收此对象 显...转载 2020-07-28 18:31:56 · 241 阅读 · 0 评论 -
ThreadLocal 源码浅析
ThreadLocal大家应该都经常用到,比如多租户模式,动态配置多数据源,源码就不逐句分析了,想必大家都看过,但是具体相关问题,有些也和我一样比较模糊,今天做下记录,带着问题看源码1.为什么ThreadLocal能看到做到线程隔离直接上源码看注释(ThreadLocal 部分源码)public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); #这里获取Map if (ma原创 2020-07-27 23:41:44 · 163 阅读 · 0 评论 -
spring 编程式事务&申明式事务
1.编程式事务:xml 配置事务 在applicationContext.xml 里面配置事务管理器和事务管理器模板的配置 <!--事务模版--> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="txManager"&g原创 2020-07-26 23:07:17 · 153 阅读 · 0 评论 -
事务基本概念&事务隔离级别&spring传播行为
1、事务的概念:为了达到某个目的而做的一系列操作,要么一起成功(事务提交),要么一起失败(事务回滚)事务的四大特性分别为:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。1 、原子性事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。事务开始前和结束后,数据库的完整性约束没有被原创 2020-07-24 00:02:34 · 192 阅读 · 0 评论 -
ajax跨域后端解决方案汇总
附上大神的地址:https://www.imooc.com/learn/947本文主要是对大神讲的跨域问题的后端解决方案做文字性总结1.为什么会产生ajax跨域1.浏览器限制2.本身跨域,就是自身的域名与访问的域名(协议,域名,端口任何一个不一样)3.发出去的请求是XHR(XMLHttpRequest)请求三者同时满足才有可能产生ajax跨域问题2.跨域的解决方向分为调用方解决与被调用方解决2.1 被调用方解决可以通过服务器端实现或者nginx实现(实现效果一样)2.1.1服务器端原创 2020-07-22 23:55:12 · 398 阅读 · 0 评论 -
Oracle生成数据库设计文档
package bigdata.msgcnt.manager.service; import java.awt.Color;import java.io.FileOutputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.uti转载 2020-07-22 11:35:53 · 874 阅读 · 0 评论 -
模板方法 & spring jdbcTemplate 的应用
简要介绍 工作中遇到一个问题,就是office 转pdf ,office 有 ppt,excel,word,viso 文件类型,不同的文件类型,有不同的转码方法,但是步骤都是一样的,都是要检查授权文件,然后设置字体目录,最后转码,此时就可以用到模板方法的设计模式。 代码示例:父类package com.bosssoft.bigdata.form.template;import java.io.File;public abstract class AbstractPDFConverter原创 2020-07-14 23:11:14 · 165 阅读 · 0 评论 -
redis 分布式锁
慕课网上讲师廖师兄分享的package bigdata.admin.redis;import com.alibaba.nacos.client.utils.StringUtils;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;i原创 2020-06-08 13:36:19 · 180 阅读 · 0 评论
分享