博客园 - 梦在旅途
uuid:7d267088-5232-4821-9010-8cd5fdd6cd4f;id=1074417
2024-02-25T14:27:08Z
梦在旅途
https://www.cnblogs.com/zuowj/
feed.cnblogs.com
https://www.cnblogs.com/zuowj/p/18005149
spring声明式事务(@Transactional)开发常犯的几个错误及解决办法 - 梦在旅途
目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其中Mybatis事务的管理也是交由spring来管理,大部份都是使用声明式事务(@Transactional)来进行事务一致性的管理,然后在实际日常开发过程中,发现很多开发同学都用错了
2024-02-03T12:23:00Z
2024-02-03T12:23:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其中Mybatis事务的管理也是交由spring来管理,大部份都是使用声明式事务(@Transactional)来进行事务一致性的管理,然后在实际日常开发过程中,发现很多开发同学都用错了 <a href="https://www.cnblogs.com/zuowj/p/18005149" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/17653149.html
答疑解惑:解释在Mybatis-Spring下@Mapper与@MapperScan为何不能同时生效以及实现动态条件注册Mapper接口 - 梦在旅途
**若项目中使用了@MapperScan注解后,则@Mapper注解不再生效**, 原因是:@MapperScan注解 会执行@Import(MapperScannerRegistrar.class),而MapperScannerRegistrar又会注册MapperScannerConfigure
2023-08-23T16:52:00Z
2023-08-23T16:52:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】**若项目中使用了@MapperScan注解后,则@Mapper注解不再生效**, 原因是:@MapperScan注解 会执行@Import(MapperScannerRegistrar.class),而MapperScannerRegistrar又会注册MapperScannerConfigure <a href="https://www.cnblogs.com/zuowj/p/17653149.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/17279141.html
任何Bean通过实现ProxyableBeanAccessor接口即可获得动态灵活的获取代理对象或原生对象的能力 - 梦在旅途
如果一个BEAN类上加了@Transactional,则默认的该类及其子类的公开方法均会开启事务,但有时某些业务场景下某些公开的方法可能并不需要事务,那这种情况该如何做呢? 常规的做法: 针对不同的场景及事务传播特性,定义不同的公开方法【哪怕是同一种业务】,并在方法上添加@Transactional
2023-04-02T12:44:00Z
2023-04-02T12:44:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】如果一个BEAN类上加了@Transactional,则默认的该类及其子类的公开方法均会开启事务,但有时某些业务场景下某些公开的方法可能并不需要事务,那这种情况该如何做呢? 常规的做法: 针对不同的场景及事务传播特性,定义不同的公开方法【哪怕是同一种业务】,并在方法上添加@Transactional <a href="https://www.cnblogs.com/zuowj/p/17279141.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/17201946.html
关于JAVA泛型数组类型擦除引发的问题及解决方案 - 梦在旅途
先看如下一个DEMO示例代码:(其中doBatchGet被子类重写了1次) public abstract class BaseDemoService<T> { public String batchGet(T... ints) { T one=ints[0]; System.out.println
2023-03-09T15:40:00Z
2023-03-09T15:40:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】先看如下一个DEMO示例代码:(其中doBatchGet被子类重写了1次) public abstract class BaseDemoService<T> { public String batchGet(T... ints) { T one=ints[0]; System.out.println <a href="https://www.cnblogs.com/zuowj/p/17201946.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/16534102.html
干货分享:小技巧大用处之Bean管理类工厂多种实现方式 - 梦在旅途
前言:最近几个月很忙,都没有时间写文章了,今天周末刚好忙完下班相对早点(20:00下班)就在家把之前想总结的知识点写出来,于是就有了这篇文章。虽无很高深的技术,但小技巧有大用处。 有时我们经常需要将实现了某个基类或某个接口的所有Bean进行分类管理,在需要用到的时候按需获取实现了某个基类或某个接口的
2022-07-30T03:46:00Z
2022-07-30T03:46:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】前言:最近几个月很忙,都没有时间写文章了,今天周末刚好忙完下班相对早点(20:00下班)就在家把之前想总结的知识点写出来,于是就有了这篇文章。虽无很高深的技术,但小技巧有大用处。 有时我们经常需要将实现了某个基类或某个接口的所有Bean进行分类管理,在需要用到的时候按需获取实现了某个基类或某个接口的 <a href="https://www.cnblogs.com/zuowj/p/16534102.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/16400087.html
分享实用小工具:JAVA版本位运算工具类 - 梦在旅途
将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义 或 过多的表字段,同时也能在一些复杂的组合判断场景下利用位与、位或、异或等位运算实现简单高效的逻辑判断 如下是JAVA版位运算工具类,没啥技术含量,主要是运用:位移、位与、位
2022-06-22T04:28:00Z
2022-06-22T04:28:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义 或 过多的表字段,同时也能在一些复杂的组合判断场景下利用位与、位或、异或等位运算实现简单高效的逻辑判断 如下是JAVA版位运算工具类,没啥技术含量,主要是运用:位移、位与、位 <a href="https://www.cnblogs.com/zuowj/p/16400087.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/16002428.html
分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用 - 梦在旅途
思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit (页码-1),每页记录数,这样即可返回指定页码的分页记录,类似SQL如下所示: select * fr
2022-03-13T15:51:00Z
2022-03-13T15:51:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit (页码-1),每页记录数,这样即可返回指定页码的分页记录,类似SQL如下所示: select * fr <a href="https://www.cnblogs.com/zuowj/p/16002428.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/15778534.html
基于javascript引擎封装实现算术表达式计算工具类 - 梦在旅途
JAVA可动态计算表达式的框架非常多,比如:spEL、Aviator、MVEL、EasyRules、jsEL等,这些框架的编码上手程度、功能侧重点及执行性能各有优劣,网上也有大把的学习资料及示例代码,我这里也不在赘述了,本文要介绍的是直接借助于JDK中自带的ScriptEngineManager,使
2022-01-08T08:06:00Z
2022-01-08T08:06:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】JAVA可动态计算表达式的框架非常多,比如:spEL、Aviator、MVEL、EasyRules、jsEL等,这些框架的编码上手程度、功能侧重点及执行性能各有优劣,网上也有大把的学习资料及示例代码,我这里也不在赘述了,本文要介绍的是直接借助于JDK中自带的ScriptEngineManager,使 <a href="https://www.cnblogs.com/zuowj/p/15778534.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/15535271.html
通过实现仿照FeignClient框架原理的示例来看清FeignClient的本质 - 梦在旅途
前言 FeignClient的实现原理网上一搜一大把,此处我就不详细再说明,比如:Feign原理 (图解) - 疯狂创客圈 - 博客园 (cnblogs.com),而且关于FeignClient的使用技巧我之前文章《feignclient各种使用技巧说明》已经讲过,此处仅说一下核心步骤: 启动时:@
2021-11-14T09:43:00Z
2021-11-14T09:43:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】前言 FeignClient的实现原理网上一搜一大把,此处我就不详细再说明,比如:Feign原理 (图解) - 疯狂创客圈 - 博客园 (cnblogs.com),而且关于FeignClient的使用技巧我之前文章《feignclient各种使用技巧说明》已经讲过,此处仅说一下核心步骤: 启动时:@ <a href="https://www.cnblogs.com/zuowj/p/15535271.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14949715.html
Drools规则引擎实践直白总结 - 梦在旅途
Drools规则引擎,网上大把相关的文章介绍,但我感觉不够直白,理解有些困难,且知识点没有集中比较分散、有些还是早前版本的内容,对与新手来说上手可能比较慢,而且比较容易走弯路,故我在深入研究并实践于项目中后,在空闲时间花费精力整理了这篇文章,分享出来,便大家快速上手。 1. 创建Drools环境(引
2021-06-29T06:06:00Z
2021-06-29T06:06:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】Drools规则引擎,网上大把相关的文章介绍,但我感觉不够直白,理解有些困难,且知识点没有集中比较分散、有些还是早前版本的内容,对与新手来说上手可能比较慢,而且比较容易走弯路,故我在深入研究并实践于项目中后,在空闲时间花费精力整理了这篇文章,分享出来,便大家快速上手。 1. 创建Drools环境(引 <a href="https://www.cnblogs.com/zuowj/p/14949715.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14903456.html
空闲时间研究一个小功能:winform桌面程序如何实现动态更换桌面图标 - 梦在旅途
今天休息在家,由于天气热再加上疫情原因,就在家里呆着,空闲时想着,在很早以前(约3年前),产品人员跟我提了一个需求,那就是winform桌面程序的图标能否根据节日动态更换,这种需求在移动APP上还是比较常见,比如:淘宝、天猫、京东、360等,它们在逢节假日时除了APP内容有更新,APP ICON也是
2021-06-19T09:20:00Z
2021-06-19T09:20:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】今天休息在家,由于天气热再加上疫情原因,就在家里呆着,空闲时想着,在很早以前(约3年前),产品人员跟我提了一个需求,那就是winform桌面程序的图标能否根据节日动态更换,这种需求在移动APP上还是比较常见,比如:淘宝、天猫、京东、360等,它们在逢节假日时除了APP内容有更新,APP ICON也是 <a href="https://www.cnblogs.com/zuowj/p/14903456.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14506022.html
确保某个BeanDefinitionRegistryPostProcessor Bean被最后执行的几种实现方式 - 梦在旅途
一、事出有因 最近有一个场景,因同一个项目中不同JAR包依赖同一个组件,但依赖组件的版本不同,导致无论使用哪个版本都报错(无法同时兼容两个JAR包中所需的方法调用),经过分析发现差异的部份是在一个BEAN中的方法出入参不同而矣,故考虑通过动态替换掉这个存在兼容性的BEAN,换成我们自己继承自该B
2021-03-09T07:57:00Z
2021-03-09T07:57:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】一、事出有因 最近有一个场景,因同一个项目中不同JAR包依赖同一个组件,但依赖组件的版本不同,导致无论使用哪个版本都报错(无法同时兼容两个JAR包中所需的方法调用),经过分析发现差异的部份是在一个BEAN中的方法出入参不同而矣,故考虑通过动态替换掉这个存在兼容性的BEAN,换成我们自己继承自该B <a href="https://www.cnblogs.com/zuowj/p/14506022.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14384696.html
feignclient各种使用技巧说明 - 梦在旅途
FeignClient常见用法 常规的FeignClient的创建与使用我相信只要使用过spring cloud全家桶的套件的基本上都是非常熟悉了,我们只需定义一个interface,然后定义相关的远程接口方法签名及在方法上标记相关的请求映射的注解指明请求URL及方式,最后在该接口类上方标记@Fei
2021-02-07T05:08:00Z
2021-02-07T05:08:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】FeignClient常见用法 常规的FeignClient的创建与使用我相信只要使用过spring cloud全家桶的套件的基本上都是非常熟悉了,我们只需定义一个interface,然后定义相关的远程接口方法签名及在方法上标记相关的请求映射的注解指明请求URL及方式,最后在该接口类上方标记@Fei <a href="https://www.cnblogs.com/zuowj/p/14384696.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14207740.html
【实用小技巧】RSA非对称加解密及XML&PEM格式互换方案 - 梦在旅途
最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止timestamp被更改,sign算法(timestamp+相关参数排序、格式化后拼接再MD5)也因为在前
2020-12-29T09:25:00Z
2020-12-29T09:25:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】 最近因考虑接口安全问题,有实现给WEB API实现统一的参数鉴权功能,以防止请求参数被篡改或重复执行,参数鉴权方法基本与常见的鉴权思路相同,采用(timestamp+sign),而我为了防止timestamp被更改,sign算法(timestamp+相关参数排序、格式化后拼接再MD5)也因为在前 <a href="https://www.cnblogs.com/zuowj/p/14207740.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/14046697.html
关于ASP.NET WEB API(OWIN WEBAPI)的几个编码最佳实践总结 - 梦在旅途
近期工作比较忙,确实没太多精力与时间写博文,博文写得少,但并不代表没有研究与总结,也不会停止我继续分享的节奏,最多有可能发博文间隔时间稍长一点。废话不多说,直接上干货,虽不是主流的ASP.NET CORE但ASP.NET WEB API仍然有很多地方在用【而且核心思路与.NET CORE其实都是一样
2020-11-27T02:45:00Z
2020-11-27T02:45:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】近期工作比较忙,确实没太多精力与时间写博文,博文写得少,但并不代表没有研究与总结,也不会停止我继续分享的节奏,最多有可能发博文间隔时间稍长一点。废话不多说,直接上干货,虽不是主流的ASP.NET CORE但ASP.NET WEB API仍然有很多地方在用【而且核心思路与.NET CORE其实都是一样 <a href="https://www.cnblogs.com/zuowj/p/14046697.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/13384701.html
Elasticsearch必知必会的干货知识二:ES索引操作技巧 - 梦在旅途
该系列上一篇文章《Elasticsearch必知必会的干货知识一:ES索引文档的CRUD》 讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建、更改、迁移、查询配置信息等。 仅创建索引:PUT index PUT /index 添加字段设置(mappings):PUT in
2020-07-27T03:56:00Z
2020-07-27T03:56:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】该系列上一篇文章《Elasticsearch必知必会的干货知识一:ES索引文档的CRUD》 讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建、更改、迁移、查询配置信息等。 仅创建索引:PUT index PUT /index 添加字段设置(mappings):PUT in <a href="https://www.cnblogs.com/zuowj/p/13384701.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/13144583.html
【干货】整理分布式技术框架常用的算法及策略 - 梦在旅途
将一些零散的知识点进行整理, 以便加深理解,方便查阅,也希望能帮到大家。 一、负载均衡算法 1. 随机 完全随机 通过系统随机函数,根据后端服务器列表的大小值来随机选择其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果。
2020-06-16T12:48:00Z
2020-06-16T12:48:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】将一些零散的知识点进行整理, 以便加深理解,方便查阅,也希望能帮到大家。 一、负载均衡算法 1. 随机 完全随机 通过系统随机函数,根据后端服务器列表的大小值来随机选择其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果。 <a href="https://www.cnblogs.com/zuowj/p/13144583.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/12810016.html
模块(类)之间解耦利器:EventPublishSubscribeUtils 事件发布订阅工具类 - 梦在旅途
如果熟悉C 语言的小伙伴们一般都会知道委托、事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事件被触发执行时,会自动通知所有的订阅者进行消费处理。(观察者模式用委托来实现是最好不过了,DDD所提倡的事件驱动其根本理
2020-05-07T13:03:00Z
2020-05-07T13:03:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】如果熟悉C 语言的小伙伴们一般都会知道委托、事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事件被触发执行时,会自动通知所有的订阅者进行消费处理。(观察者模式用委托来实现是最好不过了,DDD所提倡的事件驱动其根本理 <a href="https://www.cnblogs.com/zuowj/p/12810016.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/12394120.html
SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类 - 梦在旅途
之前介绍了 "基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil" ,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET CORE并支持依赖注入。 1. 提取定义了一个通用访问数据的接口: 2. 精简版的Dappe
2020-03-02T02:50:00Z
2020-03-02T02:50:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】之前介绍了 "基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil" ,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET CORE并支持依赖注入。 1. 提取定义了一个通用访问数据的接口: 2. 精简版的Dappe <a href="https://www.cnblogs.com/zuowj/p/12394120.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zuowj/p/12217471.html
JAVA并发同步互斥实现方式总结 - 梦在旅途
大家都知道加锁是用来在并发情况防止同一个资源被多方抢占的有效手段,加锁其实就是同步互斥(或称独占)也行,即:同一时间不论有多少并发请求,只有一个能处理,其余要么排队等待,要么放弃执行。关于锁的实现网上大把的例子,我这里只是梳理与总结一下,以便参考方便。 同步互斥按作用范围可分为: 1. 线程间同步互
2020-01-20T04:31:00Z
2020-01-20T04:31:00Z
梦在旅途
https://www.cnblogs.com/zuowj/
【摘要】大家都知道加锁是用来在并发情况防止同一个资源被多方抢占的有效手段,加锁其实就是同步互斥(或称独占)也行,即:同一时间不论有多少并发请求,只有一个能处理,其余要么排队等待,要么放弃执行。关于锁的实现网上大把的例子,我这里只是梳理与总结一下,以便参考方便。 同步互斥按作用范围可分为: 1. 线程间同步互 <a href="https://www.cnblogs.com/zuowj/p/12217471.html" target="_blank">阅读全文</a>