自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 spring解析配置类

spring是如何判断一个类是否是配置类配置类是如何注册成bd的AnnotatedGenericBeanDefinition 配置类bdpublic AnnotationConfigApplicationContext(Class<?>... componentClasses) { // 1. 创建BeanFactory // 2. 生成AnnotatedBeanDefinitionReader // 3. 生成ClassPathBeanDefinitionScan

2021-01-29 16:35:30 285 2

原创 手写jdk动态代理

jdk动态代理原理1.手写动态代理场景:1.生成一个java文件 2.动态编译一个.class文件 3.拿到这个class文件后,我们通过反射获取一个对象target对象-----通过代理生成java文件-------编译成class文件------调用反射方式class.newIstance-----------------得到代理对象proxypublic class StaticProxy implements MyService { private MyService target

2021-01-20 10:56:20 173 2

原创 redis 分布式锁

只要客户端1一旦加锁成功,就会启动一个watch dog看门狗,他是一个后台线程,会每隔10秒检查一下,如果客户端1还持有锁key,那么就会不断的延长锁key的生存时间。解决: 每个线程 在lockkey 的value 设置自己的单独的value 和设置过期时间。第一个请求去加锁过程中 会持有一个Listener 这个 是 看门狗的实现原理。1.在redis中的命令语句中,命令是忽略大小写的,而key是不忽略大小写的。1.场景: 在并发情况下 可能有线程1 把线程2的锁进行释放。...

2022-08-04 22:51:49 631 1

原创 leetcode 快乐数

leetcode快乐数

2022-06-21 15:37:11 115

原创 spring事务原理1

spring 事务原理传播机制 事务挂起spring自带的JdbcTemplate使用示例查询public <T> T queryForObject(String sql, RowMapper<T> rowMapper) throws DataAccessException { List<T> results = query(sql, rowMapper); return DataAccessUtils.nullableSingleResult(res

2021-05-06 21:17:39 209 2

原创 spring事务原理2

ProxyTransactionManagementConfiguration// 标准事务管理1.获取事务属性------->tas.getTransactionAttribute2.创建事务------------->createTransactionIfNecessary3.执行业务逻辑------->invocation.proceedWithInvocation4.异常时完成事务---->completeTransactionAfterThrowing5.清除线

2021-05-06 21:16:32 231 4

原创 SpringBoot 配置本地资源映射路径

springboot配置本地资源映射路径需要配置一下映射资源位置,@Configurationpublic class ResourcesConfig implements WebMvcConfigurer{ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** 本地文件上传路径 */ registry.addResourceHa

2021-04-10 20:09:32 392

原创 spring aop原理

Bean生命周期中AOP的流程1、@EnableAspectJAutoProxy@EnableAspectJAutoProxy注解实际上就是向容器中注册了一个AnnotationAwareAspectJAutoProxyCreator,这个类本身就是一个后置处理器,AOP代理就是由它在这一步完成的。1.postProcessAfterInitialization方法执行public Object postProcessAfterInitialization(@Nullable Object bean

2021-02-23 22:06:30 157

原创 spring aop使用

spring aop一.aop几个概念Advisor 和 Advice在Spring中,Advice分为:前置Advice:MethodBeforeAdvice后置Advice:AfterReturningAdvice环绕Advice:MethodInterceptor异常Advice:ThrowsAdvicePointcut 切点,表示我想让哪些地方加上我的代理逻辑。第一步使用:使用ProxyFactory通过编程创建AOP代理spring aop一.Advisor 和 Ad

2021-02-22 09:26:53 285

原创 spring aop 原理

spring aop一.aop几个概念Advisor 和 Advice在Spring中,Advice分为: 前置Advice:MethodBeforeAdvice 后置Advice:AfterReturningAdvice 环绕Advice:MethodInterceptor 异常Advice:ThrowsAdvice

2021-02-07 21:36:17 51

原创 如何通过反射来构建对象

如何通过反射创建对象```java/** * 如何通过反射来构建对象 */public class Solution { private String str; private int num; public Solution(){ } public Solution(String str, int num) { this.str = str; this.num = num; } public So.

2021-01-20 10:45:10 212 3

原创 spring 是如何创建对象的

spring 是如何创建对象的推断构造方法 进行实例化bean1、在Spring中,什么是Bean?跟对象有什么区别?通过new关键字,反射,克隆等手段创建出来的就是对象。在Spring中,Bean一定是一个对象,但是对象不一定是一个Bean,一个被创建出来的对象要变成一个Bean要经过很多复杂的工序,例如需要被我们的BeanPostProcessor处理,需要经过初始化,需要经过AOP(AOP本身也是由后置处理器完成的)等。spring完成一些组件的注册和准备工作// 完成beanFacto

2020-10-15 18:40:10 1558 1

原创 java剖析线程池原理

通常我们可以使用jdk提供的Executors 工具类去使用线程池执行任务,当然也可以自己实现一个线程池去执行任务,那线程池原理是如何为什么我们execute时就可以执行thread的run方法呢?线程是如何复用的?线程池参数: corePoolSize:线程池核心线程个数; workQueue:用于保存等待执行的任务的阻塞队列;比如基于数组的有界ArrayBlockingQueue,基于链表的无界LinkedBlockingQueue,最多只有一个元素的同步队列Synchr...

2020-10-10 17:15:57 91

原创 模拟spring依赖注入

1.依赖注入可能会造成循环依赖 解决办法为构造2个map 1个是完整的bean对象 一个是早期暴露出的bean对象private ConcurrentHashMap<String, Object> singletonObjects = new ConcurrentHashMap<>(); private ConcurrentHashMap<String, Object> earlySingletonObjects = new ConcurrentHashM

2020-09-21 19:23:08 153

原创 手写简单的spring

我们要模仿spring部分功能,1.首先要把扫描路径下的文件获取到 2.把文件下的class变成对象存放在单例池中 3.测试单例池对象方法是否可以执行1.配置config类@ComponentScan("com.hxy.service")public class AppConfig {}2.配置解析config的处理类 1)解析单个class 存放成BeanDefinition对象,定义如下public class BeanDefinition { private ..

2020-09-21 18:56:33 119

原创 spring 自定义标签使用

spring 自定义标签去注册一个bean,首先有大致几个步骤1.自定义解析的组件2.xsd描述内容3.创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义4.创建Handler文件,扩展字NamespaceHandlerSupport,目的是将组件注册到Spring容器5.编写Spring.handlers和Spring.schemas文件1. 创建一个student组件用于解析public class Stud...

2020-09-21 14:29:11 65

原创 mysql 数据库分页问题

通常我们使用 limit offset 进行分页select * from member where gender=1 limit 100000,1; 优化方案是 使用主键索引进行分页select a.* from member as a inner join (select id from member where gender=1 limit 300000,1) as b on a.id=b.id;...

2020-09-15 16:32:34 106

原创 2020-09-08

1.jvm是如何存储java对象2.jvm 中的gc算法原理3.jvm是如何装载java类的4.seata原理5.轮询算法6.dubbo底层实现原理7.cas算法8.select for update

2020-09-08 11:47:23 62

原创 读取配置信息

@ConfigurationProperties

2020-07-20 15:23:52 88

原创 自定义校验字段值

1.使用@valid注解在controller的方法中的字段加上2.@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })@Constraint(validatedBy = PasswordValidatorClass.class)public @interface PasswordValidator

2020-07-18 15:02:52 256

转载 kafka日志被系统清理导致异常停止

参考这篇https://blog.csdn.net/Ntozot/article/details/106939392针对系统,CentOS 7 系统有一个默认定时器会每隔 1 天执行一次临时目录清理操作,把 /tmp 目录下所有超过 10 天没有任何变动的子目录全部删除。在 /usr/lib/tmpfiles.d/tmp.conf 文件中增加配置项:x /tmp/kafka*表示忽略tmp下的kafka...

2020-07-02 14:29:12 511

原创 springboot前端长轮询使用多线程异步执行任务

1.springboot使用多线程任务时bean 不能使用@Autowired注入 可以提供一个外部类去获取bean对象@Componentpublic class ApplicationProvider implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(Applica

2020-06-23 21:04:30 926

原创 spring aop 原理

spring aop 使用 @EnableAspectJAutoProxy 注解开启aop

2020-05-27 15:10:12 88

原创 重写spring beanname规则

spring 默认的beanname规则方法是AnnotationBeanNameGenerator的buildDefaultBeanName方法 protected String buildDefaultBeanName(BeanDefinition definition) { String shortClassName = ClassUtils.getShortNa...

2020-04-20 13:53:08 529

原创 nginx 配置不缓存html js css

add_header Cache-Control no-cache; add_header Pragma no-cache; add_header Expires 0;

2020-04-20 10:36:17 3771

原创 docker dockerfile的使用

构建镜像首先创建dockerfile 文件夹然后创建dockerfile文件[root@localhost Dockerfile]# mkdir Dockerfile2[root@localhost Dockerfile]# cd Dockerfile2[root@localhost Dockerfile2]# vi Dockerfile# 指定基础镜像,本地没有会从docke...

2020-03-25 11:51:41 111

原创 redis 哨兵及主从环境搭建

配置3台linux服务器修改redis.conf 文件下的主服务器:从服务器 :先启动主redis 在启动从redis配置哨兵: 修改vi sentinel.conf启动redis哨兵 ./src/redis-server sentinel.conf --sentinel &...

2020-03-13 16:13:57 76

原创 linux vm

https://blog.csdn.net/baiboya/article/details/80452822ifup ens33chkconfig NetworkManager offchkconfig network onservice NetworkManager stopservice network start

2020-01-09 09:53:07 96

原创 nginx 自启动

在/etc/init.d下创建文件nginx 文件参考https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/[root@bogon nginx]# vim /etc/init.d/nginx主要修改nginx=”/usr/local/nginx/sbin/nginx” //修改成n...

2020-01-07 09:39:57 100

原创 linux tomcat 和nginx 部署多个项目

tomcat 修改配置文件内容如下</Service> <Service name="Catalina1"> // connector 的port是端口号 <Connector port="9001" protocol="HTTP/1.1" connectionTimeout="20000" ...

2019-12-06 14:17:48 278

原创 linux 多线程

安装man命令yum -y install man-pages man-db manman 3 pthread_create

2019-12-03 15:19:49 72

原创 postpgressql

postpgressql 启动带日志pg_ctl –D /u01/pgdb/data/ -l /u01/pgdb/logs/logs start

2019-11-27 13:20:38 422

原创 redis linux 开机自启动

redis.conf /home/huxinyu/u01/redis/redis.conf-- 添加redis启动至系统#将redis目录下的redis_init_script copy到 etc/init.d目录下cp /home/huxinyu/u01/redis/utils/redis_init_script /etc/init.d/redisvim /et...

2019-11-07 14:00:39 102

原创 java 博客推荐

[Java开源博客系统-Powered by java1234](http://blog.java1234.com/index.html?page=34&)[chenssy的博客 - CSDN博客](http://blog.csdn.net/chenssy/article/category/1424118)

2018-01-22 10:27:43 277

原创 java 增量插入

insert into opm_crm_member_valuecard_extract_cash_detailorg_code,org_name,company_org_code,company_org_name,main_id,source_id,balance_cash,cash,surplus_cash,consume_cash,crea

2017-11-06 15:36:43 870

原创 代码码云

mybatis批量插入choose when otherwise

2017-09-28 09:18:20 250

原创 string的用法

string是引用对象 ,判断相等时,不应该用==判断。  1、str == null;  2、"".equals(str);  3、str.length   4、str.isEmpty();"".equals(str);后置确保不会遇null报错。 还有很多是jar包里的  StingUtil.isEmpty() 判断为空引用对象  不能使用==

2017-03-27 09:31:16 200

原创 org.springframework.dao.InvalidDataAccessResourceUsageException异常

org.springframework.dao.InvalidDataAccessResourceUsageException异常

2017-03-01 10:37:52 780

原创 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传大神按时 是的按时 LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I

2016-08-19 15:12:08 179

空空如也

空空如也

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

TA关注的人

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