- 博客(23)
- 收藏
- 关注
原创 CompletableFuture事物回滚的问题 本地事物和feign调用的回滚
缺点:1.这种方式局限性很大 但是也支持某些参加2.原子性不能得到完全一致性的保证 但是一般能正常回滚3 需要try catch 每次需要手动提交4.feign调用也需要重复操作优点:1.可以解决异步中的回滚事物 (但是不能回滚主线程中的事物)2.分布式事物对异步中的增删改没有效果 利用本地事物进行异常捕获来提交异常 利用Redis来保证事物是否进行回滚1.A @Autowired private TransactionDefinition transactionDefiniti
2022-04-27 15:25:13
3868
原创 JSON转get参数去掉首位空格和&后的空格
/** * json格式转Get * * 案例 * { * "data":{ * "box_size":3, * "client_order_id":"72755da14c35", * "client_shipment_code":"72755da14c28", * "merchant_id":"457", * "product_name":"Product A", * "
2021-12-07 13:45:04
213
原创 javav动态数组包
java由于jdk提供的数组是静态的当数组被初始化后,该数组的长度就不可变了。java程序中的数组必须经过初始化才可以使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值。优缺点1、静态数组:已经确定子数组大小的数组。会造成空间浪费。2、动态数组:使用动态数组的优点是可以根据用户需要,有效利用存储空间。不管什么方式,一旦初始化后,其长度就不可变,可以通过数组length属性(注意与length()的区别)来访问数组的长度。动态实现/** * 动态数组 */pub
2021-11-24 13:45:40
411
原创 反射通过配置文件获取service方法
public interface HelloService { String sayHello(String name);}public class HelloServiceImpl implements HelloService { @Override public String sayHello(String msg) { int i = 1 / 0; return "你好, " + msg; }}反射获取 通过配置文件获取
2021-11-20 19:53:22
237
原创 地图偏移围栏工具包
计算圆和多边形package com.htstar.ovms.device.util;import java.awt.geom.Point2D;import java.util.ArrayList;import java.util.List;public class GeographyUtil { // private static double EARTH_RADIUS = 6378.137; private static double EARTH_RADIUS = 637
2021-10-26 12:16:42
79
原创 Redis分布式锁的简单应用工具包结合RedisTemplate
分布式锁的原理 自行百度理解/** * 锁名称 */ public static final String LOCK_PREFIX = "redis_lock"; /** * 加锁失效时间,毫秒 */ public static final int LOCK_EXPIRE = 300; private RedisTemplate<String, Object> redisTemplate; public Red
2021-10-20 18:16:20
114
原创 Sets 、 Lists工具类的常用方式
/** * Sets工具类的常用方法 * 并集 / 交集 / 差集 / 分解集合中的所有子集 / 求两个集合的笛卡尔积 * * Lists工具类的常用方式 * 反转 / 拆分 */ private static final Set set1 = Sets.newHashSet(1, 2); private static final Set set2 = Sets.newH...
2021-10-20 16:23:49
610
原创 Stream流的排序和分组
项目实战中可以用stream流的分组和排序来自定义排序和分组 @Data @AllArgsConstructor class Jiaoyi { private BigDecimal jy; private String name; private LocalDateTime date; } /** * 分组 */ @Test public void test3() {
2021-10-19 16:06:31
1960
原创 Idea 插件指南
描述:中文支持官网:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----Translation描述:翻译插件,鼠标选中文本,点击右键即可自动翻译成多国语言。官网:https://plugins.jetbrains.com/plugin/8579-translation/Key Promoter X描述:快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形
2021-10-18 17:44:05
309
转载 mysql查询自身向上、自身向下递归
SELECT id FROM ( SELECT a.id, IF //子集 ( find_in_set( parent_id, @pid ) > 0, @pid := concat( @pid, ',', id ), 0 ) AS subset, IF //自身 ( find_in_set( id, @pid ) > 0, @pids := concat( @pid, ',', id ), 0 ) AS oneself FROM ( SELECT id, pa.
2021-10-15 18:13:25
558
原创 springboot 配置oracle和mysql
springboot 配置oracle和mysql1.oracle配置 (mysql自行百度)spring.datasource.oracle.driver-class-name = oracle.jdbc.driver.OracleDriverspring.datasource.oracle.type = com.zaxxer.hikari.HikariDataSourcespring.datasource.oracle.jdbc-url = jdbc:oracle:thin:@xxx:19002
2021-10-09 15:25:48
911
原创 脚本启动web服务 简单启动
脚本启动服务将jar包拷贝到服务器中对应的目录,一般和模块同名,如eureka-service-1.0.0.jar 放在/zcy/platform_parent_hk_2/eureka/目录下添加启动文件save_version.txtstartup.sh内容save_version.txtstartup.sh#!/bin/bash#chkconfig: 345 99 99source /etc/profileservice_dir=`dirname $0`service_name
2021-10-08 12:51:40
304
原创 SpringCloud Stream整合rocketmq消息发送与接收
SpringCloud Stream整合rocketmq消息发送与接收1.生产者public interface RocketSource { /** * 这里的名称对应了spring.cloud.stream.rocketmq.bindings.<channelName> * 集群单点消费消息 */ /** * 广播指令(对象消息) */ String DEVICE_COMMAND_OUTPUT = "devi
2021-10-08 11:03:11
835
原创 字母前缀排序可以用到 Arrays.sort(keys);
字母前缀排序可以用到 Arrays.sort(keys); public static void main(String[] args) { // 第一步:检查参数是否已经排序 Map<String, Object> dicInfo = new HashMap<>(); dicInfo.put("firstOrgCode", "HTBD"); dicInfo.put("secondOrgCode", "001"
2021-09-22 12:13:46
172
原创 CompletableFuture的使用
项目使用jdk1.8CompletableFuture异步 来进行需求使用推送消息优点:实现了Future和CompletionStage接口,保留了Future的优点,并且弥补了其不足。即异步的任务完成后,需要用其结果继续操作时,无需等待。/ try { //异步获取用户名称 CompletableFuture<String> applyNickName = CompletableFuture.supplyAsync(new Supplier<
2021-09-03 09:36:44
87
原创 JVM线上初次实战问题排查和解决
JVM线上初次实战问题排查和解决原因:公司项目多次oom内存泄漏导致了客户的极大不满,最后这一个任务交给了我一小白,压力大,但是经过实战分析发现这也是一次经验,所以来写着来分享分享。jvm内存溢出说复杂很复杂 说不复杂 搞懂jvm原理其实很简单 ,我几乎都是百度解决 自己jvm原理不是很懂,所以请教了很多jvm大佬的帮助。记录一下我解决过程1.工具 工具的使用能大幅度提升解决OnOutOfMemoryError问题 工具有: 监控堆和cpu 工具( jvisualvm) 和分析dump 工
2021-08-30 18:19:10
152
原创 Java时间工具类
public static String formatDuring(long mss) { long days = mss / (60 * 60 * 24); long hours = (mss % (60 * 60 * 24)) / (60 * 60); long minutes = (mss % (60 * 60)) / (60); if (days != 0) { return days + "d " +...
2021-06-11 15:46:57
170
1
转载 基于Filter的跨域 做sql xss 攻击
config配置** * 基于Filter的跨域 做sql xss 攻击 */@WebFilter//@Configuration@Componentpublic class CrosXssFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(CrosXssFilter.class); @Override public void init(Filt
2021-05-28 17:12:17
114
原创 企业菜单权限树 利用递归和非递归
/** * 构建树 * * @param la 是否是懒加载 * @param parentId 父节点ID * @return */ List<MenuTree> treeMenu(boolean la, Integer parentId); /** * 构建树查询 * 1. 不是懒加载情况,查询全部 * 2. 是懒加载,根据parentId 查询 * 2.1 父节点为空,则查询ID -1 * * @param lazy 是否是.
2021-05-28 15:50:46
236
原创 2021-05-24 WebSocket 推送gps点 demo (前端代码不算原创也不算转载,根据他人代码改动而来)
WebSocket 推送gps点 demo//依赖: <!--websocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency&
2021-05-24 11:47:31
175
原创 2021-05-08 递归查询企业树和条件筛选
@Override public List<EtpInfoSVo> makeTrees(Integer etpId) { List<EtpInfoSVo> tree = new ArrayList<EtpInfoSVo>(); List<EtpInfoSVo> root = null; if (etpId == CommonConstants.ETP_ID_1) { //如果是最顶级 直.
2021-05-08 11:24:18
192
5
原创 2021-04-14 简单的AOP 切面做方法耗时 用来追踪方法的执行时长
简单的AOP 切面做方法耗时 用来追踪方法的执行时长,有缺点可以补充package com.jinzhu.aspect;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.s
2021-04-14 09:38:21
234
原创 java后台监听器导出 后期还需优化仅供自己适用
/** jz * 导出行程报表 后台导出然后上传到文件服务 给客户链接下载 * 公司最近导出百万数据 但是不用第三方插件 只能以这种办法进行导出 * 突然和另一个开发想到可以凑合用用 监听器后台导出 */ public R exportTripReportForms(@RequestBody ExprotDeviceTripDTO exprotDeviceTripDTO) { OvmsUser user = SecurityUtil...
2021-03-29 10:46:55
176
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人