- 博客(39)
- 收藏
- 关注
原创 spring解析配置类
spring是如何判断一个类是否是配置类配置类是如何注册成bd的AnnotatedGenericBeanDefinition 配置类bdpublic AnnotationConfigApplicationContext(Class<?>... componentClasses) { // 1. 创建BeanFactory // 2. 生成AnnotatedBeanDefinitionReader // 3. 生成ClassPathBeanDefinitionScan
2021-01-29 16:35:30 386 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 188 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 687 1
原创 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 332 2
原创 spring事务原理2
ProxyTransactionManagementConfiguration// 标准事务管理1.获取事务属性------->tas.getTransactionAttribute2.创建事务------------->createTransactionIfNecessary3.执行业务逻辑------->invocation.proceedWithInvocation4.异常时完成事务---->completeTransactionAfterThrowing5.清除线
2021-05-06 21:16:32 327 4
原创 SpringBoot 配置本地资源映射路径
springboot配置本地资源映射路径需要配置一下映射资源位置,@Configurationpublic class ResourcesConfig implements WebMvcConfigurer{ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { /** 本地文件上传路径 */ registry.addResourceHa
2021-04-10 20:09:32 450
原创 spring aop原理
Bean生命周期中AOP的流程1、@EnableAspectJAutoProxy@EnableAspectJAutoProxy注解实际上就是向容器中注册了一个AnnotationAwareAspectJAutoProxyCreator,这个类本身就是一个后置处理器,AOP代理就是由它在这一步完成的。1.postProcessAfterInitialization方法执行public Object postProcessAfterInitialization(@Nullable Object bean
2021-02-23 22:06:30 273
原创 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 323
原创 spring aop 原理
spring aop一.aop几个概念Advisor 和 Advice在Spring中,Advice分为: 前置Advice:MethodBeforeAdvice 后置Advice:AfterReturningAdvice 环绕Advice:MethodInterceptor 异常Advice:ThrowsAdvice
2021-02-07 21:36:17 59
原创 如何通过反射来构建对象
如何通过反射创建对象```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 226 3
原创 spring 是如何创建对象的
spring 是如何创建对象的推断构造方法 进行实例化bean1、在Spring中,什么是Bean?跟对象有什么区别?通过new关键字,反射,克隆等手段创建出来的就是对象。在Spring中,Bean一定是一个对象,但是对象不一定是一个Bean,一个被创建出来的对象要变成一个Bean要经过很多复杂的工序,例如需要被我们的BeanPostProcessor处理,需要经过初始化,需要经过AOP(AOP本身也是由后置处理器完成的)等。spring完成一些组件的注册和准备工作// 完成beanFacto
2020-10-15 18:40:10 1603 1
原创 java剖析线程池原理
通常我们可以使用jdk提供的Executors 工具类去使用线程池执行任务,当然也可以自己实现一个线程池去执行任务,那线程池原理是如何为什么我们execute时就可以执行thread的run方法呢?线程是如何复用的?线程池参数: corePoolSize:线程池核心线程个数; workQueue:用于保存等待执行的任务的阻塞队列;比如基于数组的有界ArrayBlockingQueue,基于链表的无界LinkedBlockingQueue,最多只有一个元素的同步队列Synchr...
2020-10-10 17:15:57 101
原创 模拟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 171
原创 手写简单的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 132
原创 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 83
原创 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 119
原创 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 73
原创 自定义校验字段值
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 293
转载 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 540
原创 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 977
原创 重写spring beanname规则
spring 默认的beanname规则方法是AnnotationBeanNameGenerator的buildDefaultBeanName方法 protected String buildDefaultBeanName(BeanDefinition definition) { String shortClassName = ClassUtils.getShortNa...
2020-04-20 13:53:08 552
原创 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 3818
原创 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 122
原创 redis 哨兵及主从环境搭建
配置3台linux服务器修改redis.conf 文件下的主服务器:从服务器 :先启动主redis 在启动从redis配置哨兵: 修改vi sentinel.conf启动redis哨兵 ./src/redis-server sentinel.conf --sentinel &...
2020-03-13 16:13:57 85
原创 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 112
原创 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 114
原创 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 288
原创 postpgressql
postpgressql 启动带日志pg_ctl –D /u01/pgdb/data/ -l /u01/pgdb/logs/logs start
2019-11-27 13:20:38 436
原创 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 112
原创 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 293
原创 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 914
原创 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 209
原创 org.springframework.dao.InvalidDataAccessResourceUsageException异常
org.springframework.dao.InvalidDataAccessResourceUsageException异常
2017-03-01 10:37:52 797
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传大神按时 是的按时 LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I
2016-08-19 15:12:08 193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人