- 博客(30)
- 收藏
- 关注
原创 Spring Bean的获取方式
当我们的对象不在容器中时,要获取applicationContext的话,就只能先搞一个Utils将applicationContext拿到并通过静态资源的形式放进去,这个时候就需要用到ApplicationContextAware。ApplicationObjectSupport继承了ApplicationContextAware,在容器创建完成后会执行setApplicationContext方法。9.直接获取容器中的ApplicationContext。通过当前线程获取当前类加载器,从而获得ac。
2023-09-11 07:42:42 243
原创 SpringWeb响应HTTP请求的过程
综上所述,springweb响应http请求的过程为:1.注入dispatchServlet到spring容器2.注入requestMappingHandlerMapping容器到spring容器,并遍历所有带有@controller注解的bean下的所有带有@requestMapping注解的方法,将url(path)、方法以及一些通过@requestMapping定义的http请求限制组合成requestInfoMapping存入一个MappingRegistry中。
2023-07-20 00:55:40 301
原创 @EventListener的使用方式和原理
使用1.定义事件package com.toryxu.eventlistener.event;import lombok.AllArgsConstructor;import lombok.Getter;import lombok.Setter;import lombok.ToString;/** * @author toryxu * @version 1.0 * @date 2022/3/21 7:33 下午 */@AllArgsConstructor@ToStringpub
2022-03-21 21:21:37 997
原创 spring websocket连接不上的问题排查
前言:很久以前就在自己的服务上部署了websocket,现在有一个新接收的项目也要加上websocket,直接把代码复制过去,发现连不上。处理过程1.创建一个websocketserver,并加上@serverEndPoint注解。package com.yuelun.berlin.modules.base;/**• @Author: toryxu• @Date: 2019/5/29 0029 14:31• @Version 1.0 */import lombok.EqualsAndH
2021-04-10 17:43:14 9143
原创 EASYPOI导入报错The part /xl/drawings/drawing1.xml failed to be saved
EASYPOI导入报错The part /xl/drawings/drawing1.xml failed to be savedCaused by: org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Fail to save: an error occurs while saving the package : The part /xl/drawings/drawing1.xml failed to be saved in the
2021-04-06 21:11:27 2065
原创 使用mysqlbinlog恢复被误删的数据(亲测有效)
误删数据也是难免会发生的事(对于粗心的我来说),接下来根据血泪经验讲一下如何恢复被误删的数据。首先你要对mysql有配置binlog具体的配置方式网上有很多,我就不写了,下面附上我的配置。binlog_format = ROWlog-bin = /data/arch/mysql-binlog_bin_index = /data/arch/mysql-bin.indexexpire_logs_days = 7注意⚠️,这边的binlog_format必须设置为Row Level或者Mixed,
2021-03-24 22:53:26 3526 1
原创 解决excelPoi模板导出时公式不自动计算的问题,亲测有效
解决excelPoi模板导出时公式不自动计算的问题,亲测有效需求:多列数据合并,自动计算值。过程:一开始自动计算值,用的是:=SUM(G4:G16)并且已经按网上说的添加了poi的配置,并通过formulaEvaluator对formula表达式进行了eval计算。但是导出时,还是没有效果。个人理解原因是被叠加的数值,其实际类型还不是“数值”(虽然excel里面显示已经是数值了)。于是想到一个办法:*1=SUM(G4*1,G5*1,G6*1,G7*1,G8*1,G9*
2021-03-17 21:25:38 1786
原创 源码:Mybatis的LogFactory生成逻辑
源码:Mybatis的LogFactory生成逻辑 发现某一数据源的sql日志一直没有打印,一看configuration配置,作了configuration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class);注释掉 ,就成功打印。接下来分析源码:public final class LogFactory { /** * Marker to be used by logging impleme.
2021-02-01 18:31:23 589
原创 KAFKA的DOCKER部署
配置项说明:KAFKA_ADVERTISED_LISTENERS:提供给消费者和生产者的broker地址,可以是开放的外网地址。KAFKA_LISTENERS: socket监听的地址,也就是kafka本身的地址。单机docker单独部署export IN=168.13.0.116export OUT=218.108.6.186(内外网ip地址)docker run -d --name zookeeper -p 2181:2181 wurstmeister/zo...
2021-01-27 11:48:02 313
原创 flowable修改运行中的实例流程
flowable修改运行中的实例流程问题解决思路代码总结参考问题今天项目中发现有流程流转时找不到serviceTask里指定的classname,经排查发现是前几天更改了bpmn,将里面的delegate类路径全给改了,所以之前运行中的流程都找不到包了,导致报错:解决思路摆在眼前两条路,第一条是把运行中的流程全都给改了,第二条是在原路径中加上delegate类。第二条路看起来偷懒、简单,但是仔细一看,我的delegate都是注入的bean,这样会导致有重复name的bean。于是采用第一种方法,解
2020-12-14 23:13:25 2707
原创 flowable38张表含义说明
前言:是要对flowable的表先有全面的认识,对深入研究flowable作个铺垫。网上的内容也不是很全,因此整合网上各个来源,加上自己实践过程中的认识整理出来以下内容。表名规则:目前一共38张表Activiti 使用到的表都是ACT_开头的。表名的第二部分用两个字母表明表的用途。act_evt_logFlowable引入了事件日志机制。日志机制基于Flowable引擎的事件机制,并默认禁用。总的来说,来源于引擎的事件会被捕获,并创建一个包含了所有事件数据(甚至更多)的...
2020-11-12 01:07:17 6635 1
原创 Java常用的lambda表达式及其学习的方法论
今天来研究一下几个常用的lambda表达式。目前常用的lambda表达式的用法,列举两个:1.list转map<Object,Object>1 orgMap = recordList.stream().collect(Collectors.toMap(SysOrg::getOrgNum, param -> param, (k1, k2) -> k1));Map<String, Long> tunnelMap = tunnelList.stream().collec
2020-10-28 00:31:00 223
原创 从lambda表达式看final关键字
Variable used in lambda expression should be final or effectively final想必大家在开发java程序的时候应该经常见到。这是因为在lambda的匿名表达式里需要传入final的对象,那么这是为什么呢?因为lambda是匿名表达式,它是在新开的一个线程中执行的,如果它能够修改局部变量的值,则会影响数据的一致性,所以必须传入final的值或者一个数据副本。注意后面的or effectively final,只要数据在定义之后被有被修改
2020-10-15 23:37:18 345
原创 Spring in action5 :反应式编程的理解
反应式编程主要通过flux和mono进行数据的发送和消费,被flux/mono包装的数据可以被订阅并被异步获取。可以通过Spring webflux实现反应式编程的接口。但这需要数据发送方也封装flux/mono的数据进行发送。另外,响应式编程只支持非关系型数据库,不支持关系型数据库。反应式编程主要目的是使数据接收、处理和返回尽可能地异步实现,目前来看没有这个必要。...
2020-09-27 22:57:15 168
原创 Springboot yaml 存放对象数组、map
yamluser-map: maps: { admin: {username: 'admin',password: '123456',node_id: '1',node_name: '集团'}, dianchegongsi2: {username: 'yifengongsi',password: '123456',node_id: '9',node_name: '一分公司'} } userList: - username: yigongsi2
2020-08-26 14:36:57 4328 3
原创 NETTY学习之内存池
优化点:1.能用基本类型就不用包装类型2.能用类变量就不用实例变量NETTY中:1.减少对象本身的内存占用2.对分配内存进行预估3.零拷贝,使用逻辑组合,代替实际复制4.堆外内存5.内存池poolDirectByteBuf1.内存池/非内存池的默认选择及切换方式.childOption(ChannelOption.ALLOCATOR, PooledByteBufAlloca...
2020-04-22 23:32:56 573
原创 NETTY学习之keepalive和idle
记录学习的过程。1.避免网络连接的占用对端崩溃对端忙对端不可达。2.tcp keepaliveidle监测,对空闲的进行关闭。按需keepalive,保证不空闲,如果空闲就idle监测到关闭。idlesatehandler1.设置tcp keepalive怎么生效的设置childOption这里的有两种,后者优于前者。ServerBootstrap b = new S...
2020-04-22 23:29:28 2742
原创 NETTY学习之粘包、半包
前言:netty学习的第一篇文章,讲讲内容是啥。最近在极客时间上学netty相关的课,老师上课方式很有问题,每节课先抛出几个问题,在之后的内容中解答这几个问题。而我的话,在看完课之后,再拿着问题,自己解答一遍,这样学习的效率很不错。所以接下来的几篇文章就都是我的学习总结了。第一篇是粘包、半包。粘包:一个包里发了多个数据原因:1.写入的数据<缓冲区大小(缓冲区没满,就不发)2.接收...
2020-04-22 23:23:51 291
原创 ip、网关、子网掩码之间的关系
今天来整理一下ip、网关、子网掩码都是个啥,之间有啥关系。前言我目前的服务是部署在内网ip为192.168.253.120,一台机子连上了内网的网线,需要手动配置ip、网关、子网掩码才能连上我的服务。172.16.51.155 255.255.255.0 172.16.51.254。之前没问题,现在突然连不上了,就把我搞懵了,这块不太懂,现在来整理一下。IP地址-子网掩码-默认网关之...
2020-04-11 16:03:12 6246
原创 java-security拦截时同时调用多个接口,其中随机部分接口校验不通过问题的定位和解决
前言:又是普通的一天。最近在搞权限配置,用的是Spring security,token是用的jwt,通过服务中心签发token,业务层进行权限的配置。问题:权限这块配置上去了,发现在同时调用多个请求的时候,经常会有1到n个接口报错,报错显示是认证未通过。并且单个接口测试都没问题。先说最终的问题原因:由于每次作token校验的时候,会使用jjwt的parse方法进行解析, 解析时需要传入...
2020-04-09 23:58:02 933
原创 Linux的firewall和iptables
Linux的firewall和iptables的区别又是普通的一天。项目的应用服务器扩容重启了,于是之前的防火墙配置重置了,把服务启动之后,发现访问不了,一看,估计又是防火墙的原因。于是我又百度“linux关闭防火墙”,以下是网上找的:1:查看防火状态systemctl status firewalldservice iptables status2:暂时关闭防火墙systemctl...
2020-04-09 00:22:38 285
原创 源码阅读:理解反应器模式在javaNIO中的实现-总结
经过前面的分析,大概理解了NIO的实现原理,接下来代码实现一下:参考:https://blog.csdn.net/billluffy/article/details/78036998http://www.360doc.com/content/12/0902/17/495229_233773276.shtmlhttps://www.cnblogs.com/caca/archive/2012...
2020-03-31 01:23:16 99
原创 源码阅读:理解反应器模式在javaNIO中的实现-Selector2
源码阅读:理解反应器模式在javaNIO中的实现-Selector2接上文:源码阅读:理解反应器模式在javaNIO中的实现-Selector1本文主要看SelectionKey,以及selector的创建者selectorProvider。SelectionKey* A token representing the registration of a {@link SelectableC...
2020-03-27 00:51:46 159
原创 源码阅读:理解反应器模式在javaNIO中的实现-Selector1
源码阅读:理解反应器模式在javaNIO中的实现-Selector今天来看看Selector源码又是一长串的注解,太棒了。第一句:是提供给Selectablechannel的多路解调器(可不可以理解为分发工具?)A multiplexor of {@link SelectableChannel} objects.以下是对类上注解的翻译,接下来就不贴原文了:selector是通过se...
2020-03-26 01:46:00 98
原创 源码阅读:理解反应器模式在javaNIO中的实现-Channel2
接上文:源码阅读:理解反应器模式在javaNIO中的实现-Channel上文的最后是这么说的:接下来要先看看socketChannel具体connect的实现方式,以及两者对应的open方法,是如何通过SelectorProvider开启channel的(这就要先看看selector了)。本文先看前半部分:connect的实现方式那么就开始吧: public boolean conne...
2020-03-25 01:02:03 127
原创 源码阅读:理解反应器模式在javaNIO中的实现-Channel
通过源码理解反应器模式在javaNIO的实现本文主要分析Serversocketchannel以及socketChannel两个类反应器模式主要分为三步:注册 channel->selector轮询 selector->reactor分发 reactor->handler大致步骤就是将通道注册到选择器,选择器轮询各个reactor,如果接收到消息,则分发到对应的han...
2020-03-24 01:06:08 166
原创 java.lang.ClassNotFoundException: com.zaxxer.hikari.metrics.MetricsTrackerFactory的深入研究
springboot启动报错java.lang.ClassNotFoundException: com.zaxxer.hikari.metrics.MetricsTrackerFactoryspringboot启动报错java.lang.ClassNotFoundException: com.zaxxer.hikari.metrics.MetricsTrackerFactory解决过程总结)...
2020-03-11 00:48:06 7005
原创 JAVA使线程按顺序执行
JAVA使线程按顺序执行java.lang.Threadjava.lang.Runnablejava.util.concurrent.Callable要使线程能够按顺序执行,主要用到的是Thread类的join()方法。一个线程可以在其他线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才继续执 行。如果某个线程在另一个线程t上调用t.join(),此线...
2019-03-18 16:11:44 955
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人