- 博客(152)
- 收藏
- 关注
原创 @Transactional 嵌套,内层抛异常,外层用 try-catch 捕获但实际事务却回滚了
例如,在一些高并发场景下,当内层事务持有锁,并且在异常发生时数据库为了保证数据一致性,强制回滚整个事务。如果代码存在 AOP 代理相关的问题,例如代理配置错误、方法调用不符合 AOP 代理规则等,可能会导致事务行为不符合预期。虽然外层捕获了异常,但内层事务在抛出异常时可能已经标记了整个事务需要回滚。属性,并且内层抛出的异常类型符合该配置,即使外层捕获了异常,Spring 可能仍然会根据配置决定回滚事务。注解的方法,可能会绕过事务代理逻辑,导致事务行为异常。方法,那么即使外层捕获了异常,事务也会回滚。
2025-02-20 09:50:06
482
原创 传统IO和NIO文件拷贝过程
参考:https://blog.youkuaiyun.com/weixin_57323780/article/details/130250582
2024-07-04 12:23:46
218
原创 lucene
2)Segment段:一个索引包含多个段,段与段是独立的,添加新的文档可以生成新的段,不同改的段可以合并。Query:把用户输入的查询字符串封装成Lucene能识别的query,实现:TermQuery,BooleanQuery,PrefixQuery。3)将Term传给索引组件Indexer,创建一个字典,然后排序,合并相同的Term,成为文档倒排Posting List链表。Directory:索引存储位置。A:找出词(Term)对文档的重要性的过程称为计算词的权重(Term weight)的过程。
2024-04-23 15:38:27
1081
原创 js正则关键字
-> {0,} 尽量多匹配 *?+ -> {1,} 尽量多匹配 +?-> {0,1}尽量多匹配 +?:x)非捕获组,组内数据不出现在结果集。y)x不在y前面才匹配。=y)x在y前面才匹配。/m识别\n为开始或者结尾。\B -> 非边界,内部。[^]除括号内任务字符。{n,m}重复n-m次。[-]连字符 a-z。{n,}至少重复n次。
2024-02-21 10:29:32
368
1
原创 切面Aspect中@target不起作用
1)调试源码中,对于mapper(mybatisplus继承了BaseMapper)的targetClass是Proxy,找不到@HistorySave,所以没有起作用。2)在普通的类上面,增加@HistorySave注解,运行中targetClass就是普通的类名,可以找到HistorySave,能执行切面的代码。背景:想在mapper(mybatisplus)的接口上做一个切面, 所有的insert,update,delete操作都保存下操作数据。结果:切面中代码没有执行,切面没起作用。
2023-06-09 16:22:18
282
原创 Parameter ‘MP_OPTLOCK_VERSION_ORIGINAL‘ not found
新增时,该注解的字段会默认值1, 更新的时候该字段自增1 set version=version+1 where version = version,确保每次修改都是取最新(别人没有更新过的)发现我确实用到了,打印sql, 发现是更新的时候报错了,打印了更新前后该字段的值。更新之前是null,更新之后是1,所以更新之前错误的值(正确的应该是1)@Version注解,没有自动赋值,上面的拦截器配置没起作用。修改自己的取数逻辑,数据库,代码中该字段都修改成int类型。@Version注解的字段。
2023-06-06 16:10:56
3643
4
原创 代理设计模式-动态代理-JDK
1、概念“动态代理是指代理类对象在程序运行时由JVM根据反射机制动态生成的。动态代理不需要定义代理类的,java源文件。 动态代理其实就是jdk运行期间,动态创建class字节码并加载到JVM。”2、实例 public interface SmsService { String send(String message);} public class SmsServiceImpl implements SmsService { public SmsService
2022-05-03 12:15:35
131
原创 layui 自定义弹框皮肤skin
1、自定义配置文件,layer配置引入css文件 1)css文件样式: /*tree 修改源码点击选中变色*/body .riskbtn-class .layui-layer-btn0 { background-color: #009688!important;}body .riskbtn-class .layui-layer-btn1 { background-color: #1E9FFF!important; color: white!importan
2022-04-14 12:55:41
2532
原创 Thymeleaf 全局变量使用
1、设置全局变量 @Componentpublic class ViewResolverConfig { @Value("${message}") private String message; @Autowired @Qualifier("thymeleafViewResolver") private ThymeleafViewResolver thymeleafViewResolver; @Bean private void
2022-04-13 20:23:01
2172
原创 spring-boot打jar包(不能识别jar中的依赖)
参考:jar包的多层级maven依赖的坑与正确传递方法 - 车干飞 - 博客园1、情景:A项目引用B项目,B项目打包(springboot默认打包方式) <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
2021-09-29 17:27:48
652
原创 mybatis-plus-generator
1、依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.3.2</version> <exclusions> <exclusion> <groupI..
2021-07-09 17:12:44
184
原创 ZIP包压缩/解压
1、需求北京市,按照村为单位,生成文件结构(包含市、区、镇,村/小区),最底层结构(村/小区)下面生成excel文件。Excel生成参考:https://blog.youkuaiyun.com/u010286334/article/details/1171075952、压缩2.1、生成树状结构的public class Tree { private String code; private String name; private List<String> ur
2021-05-25 18:38:59
140
原创 zipEntry.getSize()=-1
1、问题情景需要监控特定邮箱邮件, 解析邮件中的zip附件, 然后解析zip文件。拿到zipInputStream之后,zipEntry=zipInputStream.getNextEntry();zipEntry.getSize()=-1zipEntry.getExtra()=null这样就拿不到文件数据流2、解决方案查看ZipInputStream的官方文档getNextEntry() ,读取下一个ZIP文件条目,并将流定位在条目数据的开头。所以猜测调用zipInp.
2021-05-25 18:37:01
946
原创 Easyexcel
1、ExcelReader和ExcelWriter很多方法都过时了。这里使用EasyExcelFactory /EasyExcel2、读excel //excel读取数据转换成实体类public static <T> List<T> read(InputStream inputStream, Class clazz, int sheetNo) throws IOException { List<T> data = new LinkedL...
2021-05-21 09:39:17
643
原创 Java Mail
1、Java Mail API1.1、创建和解析邮件内容的API:Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件;1.2、发送邮件的API:Transport类是发送邮件的核心API类, 它的实例对象嗲表实现了某个邮件发送协议的邮件对象,例如SMTP协议;1.3、接受邮件的API:Store类的接受邮件的核心API类, 它的实例对象代表实现了某个邮件接受协议的邮件接受对象,例如POP3协议1.4、Session类:会话信息2、创建邮件2.1、MimeMes
2021-05-20 10:50:47
91
原创 nacos启动问题总结
window启动nacos1、下载nacos项目下载的项目有n多个子项目,启动相关重点文件启动:distribution/bin/startup.cmd配置:distribution/conf/application.propertiessql:distribution/conf/nacos-mysql.sql2、下载后问题问题1:spring-boot-maven-plugin:unknown方案:增加对应的version <version>XXX...
2021-05-12 16:37:05
5434
4
原创 date丢失时分秒
前端传递参数“2020-09-10 23:59:59”,后端Date接收时丢失了时分秒。解决办法:application/json方式接收参数, 属性上面增加注解@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8" )
2020-12-31 12:57:19
991
原创 Springboot自定义Starter
参考:http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/pages/spring-boot-features.html#boot-features-custom-starter-module-autoconfigure参考:https://www.cnblogs.com/xiaoymin/p/14131982.html参考:https://blog.youkuaiyun.com/zknxx/article/details/791836981、编写st
2020-12-31 12:55:50
168
原创 JUC概念
1、睡眠,挂起,中断,阻塞区别: 阻塞:被动,缺少一些资源 中断:只是设置了一个标识,可以继续执行,设置了中断后,再执行sleep,wait,join时会抛出一个interruptedException,且中断标识 被清除。 睡眠:自己主动停止执行,放弃cpu资源,但是不会释放对象锁。 挂起:自己主动停止执行。2、AQSAbstractQueuedSynchronizer,同步器, JUC中很多类的实现依赖AQS。里面会有一个等待队列,帮助实...
2020-09-04 10:29:26
194
原创 JUC包-分类
JUC class1、Package->atomicclass AtomicBooleanclass AtomicIntegerclass AtomicIntegerArrayabstract class AtomicIntegerFieldUpdaterclass AtomicLongclass AtomicLongArrayabstract class AtomicLongFieldUpda...
2020-09-03 15:32:17
290
原创 Websocket
1、功能:服务器主动向客户端发送消息2、服务器端:继承AbstractWebSocketHandler, 实现handleTextMessage方法,从客户端端发送的消息会调起handleTextMessage方法。 客户端:注册websocket的onmessage消息,能接收到服务器端发送的消息。...
2020-07-28 10:24:32
211
原创 freemarker 页面获取url中参数
1、http://www.baidu.com?a=123;在页面中 ${a}可以返回123 但是123是string类型的。在和其他变量比较时,注意类型转换,否则会一直报错。例如:和int类型比较其中 a??等同于a?exists 判断a是否存在。 a?number 把a转换成数字类型。
2017-10-26 12:13:59
7438
原创 子类实例化
参考链接:http://blog.youkuaiyun.com/zhang_jun_ling/article/details/510094401、子类实例化,父类不会实例化一份放在内存中。2、子类实例化,会重写父类的方法(不会重写父类的构造方法,属性) 重写的方法在任何地方调用都是调用子类的方法,该方法中的属性也都是子类的属性(如果在父类调用,则拿不到子类的属性值,都是null)
2017-08-25 10:06:32
713
原创 spring BeanPostProcessor
一个类TestProcessor(spring可以识别bean,用@Component等注解)实现了BeanPostProcessor的实现以下两个方法 postProcessBeforeInitialization:可以在实例化bean之前对bean做包装 postProcessAfterInitialization:可以在实例化bean之后对bean做包装。
2017-08-24 17:00:28
299
原创 JNDI连接数据库
1、不启动任务服务器private static void initJndi(){try {System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); //需要naming-java包System.setProperty(Cont
2017-08-03 10:13:55
543
原创 request数据读取
参考链接:http://www.cnblogs.com/wihainan/p/6439892.htmlrequest.getInputStream(); request.getReader(); 和request.getParameter("key");三个函数中任何一个函数执行一次后(可正常读取body数据),之后再执行就无效了。
2017-07-27 18:02:26
591
原创 ContextLoaderListener RequestContextListener
ContextLoaderListener RequestContextListener
2017-07-27 14:25:14
329
原创 启动web项目不使用web.xml
1、@WebServlet@WebServlet("/HelloWorldSevlet")public class HelloServlet extends HttpServlet{public HelloServlet(){super();}protected void doGet(HttpServletRequest request, HttpServletResp
2017-07-27 11:57:28
993
原创 JNDI本地加载
测试时,如果不想启动服务器,但是需要使用上下文环境,private static void initJndi(){try {System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");System.setProperty(Context.URL
2017-07-04 12:46:09
917
转载 spring mvc 防止重复提交表单的两种方法,推荐第二种
转载连接:http://blog.youkuaiyun.com/u013378306/article/details/52944780第一种方法:判断session中保存的token比较麻烦,每次在提交表单时都必须传入上次的token。而且当一个页面使用ajax时,多个表单提交就会有问题。注解Token代码:package com.thinkgem.jeesite.
2017-06-21 14:14:12
1444
转载 @Transactional事务几点注意
转载地址:http://blog.youkuaiyun.com/kinseygeek/article/details/54931710这里面有几点需要大家留意:A. 一个功能是否要事务,必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常、测试回滚),确保事务生效。C. 以下列了事务使用过程的注意事项,请大家留意。1.不
2017-06-21 11:39:28
3366
原创 JAVA CheckedException UncheckedException
在Java中,异常主要分为三种:Exception,RuntimeException以及Error。这三类异常都是Throwable的子类。直接从Exception派生的各个异常类型就是我们刚刚提到的Checked Exception。它的一个比较特殊的地方就是强制调用方对该异常进行处理。public void shouldNotThrowCheckedException() {exc
2017-06-21 10:46:46
326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人