- 博客(23)
- 收藏
- 关注
原创 SpringBoot事务提交后再执行后续操作
在异步方法中需要查询新插入的数据,发现查询不到,原因是事务未提交,数据库插入数据操作并未完成,只有处在同一个事务中才能查询到新数据,异步方法已经不处于同一个事务中查询表是查不到数据的。我们经常会有些方法会调用一些方法异步执行,比如入库操作后要异步发送kafka消息,但是往往我们的业务方法总是包含事务的,要么全部成功,要么全部失败。有的时候事务执行失败了或者还没有提交,异步方法就执行完成了。2.当事务失败回滚时,我们的异步操作也不执行。1.异步操作需要等待事务完成后才执行。
2024-01-20 15:30:26 2275
原创 JSON.toJSONString报错
例如:JSON.toJSONString(taskList, SerializerFeature.IgnoreErrorGetter))解决办法: 1、在字段上添加注解 @JSONField(serialize =false),这样做不会报错可以顺利打印,但是添加该注解的字段将不会被序列化并放入到json字符串中。经排查发现,报错的原因是因为某个字段的内容在 fastjson 序列化对象时报错导致。通过了解是每一个entity中若是有null字段存在,就会转换异常。
2023-05-31 17:39:54 3298
转载 Stream使用Collector.tomap方法value值为null时报空指针异常 解决方案
Stream使用Collector.tomap方法value值为null时报空指针异常
2022-06-07 17:35:17 1991 1
原创 git只合并某一个分支的某个commit
在A分支上提交了一个commit(commit id为7f90b31f),B分支也同样需要这个commit的代码git checkout B // 切换到要合并的分支上git cherry-pick 7f90b31f // 提交该commit到当前分支git push // 推送到B分支远程仓库...
2022-04-14 16:19:50 819
原创 了解数据库事务
什么是事务数据库几乎是所有系统的核心模块,它将数据有条理地保存在储存介质(磁盘)中,并在逻辑上,将数据以结构化的形态呈现给用户。支持数据的增、删、改、查,并在过程中保障数据的正确且可靠。要做到这点并非易事,常见的例子就是银行转账,A账户给B账户转账一个亿(T1),买一块地盖房子。在这种交易的过程中,有几个问题值得思考:如何同时保证上述交易中,A账户总金额减少一个亿,B账户总金额增加一个亿? AA账户如果同时在和C账户交易(T2),如何让这两笔交易互不影响? I如果交易完成时数据库突然崩溃,如何
2022-03-30 10:35:46 157
原创 java 批量下载并压缩成一个zip文件
@RequestMapping("/zipDownload2") public void zipDownload2(HttpServletResponse resp) throws BaseAppException { //要下载的文件 List<String> fileUrlList = new ArrayList<>(); fileUrlList.add("D:\\笔记文档\\linux下搭建项目服务.txt");
2021-12-28 18:48:11 710
转载 PostgreSQL操作JSON数据
前言PostgreSQL提供了两种存储JSON数据的类型:json和jsonb;jsonb是json的二进制形式。json格式写入快,但读取慢;jsonb格式写入慢,但读取快;常用语法 // -> 返回json select '[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2 // 输出 {"c":"baz"} select '{"a": {"b":"foo"}, "c":{"a": "aaa"}}'::json->'a' //
2021-11-16 10:30:31 24132 2
原创 PostgreSQL Json字段作为查询条件案例
业务扩展字段在数据库中经常会使用json格式的数据来存储,这就涉及到一个头疼的问题,假设要使用扩展字段里的某个值作为查询条件怎么办,原来PostgreSQL本身就支持这种查询方式。例子:假设业务扩展字段ext_data存的json格式如下:我们需要查询扩展字段中extInfo.userType=1的所有数据,那么对应的SQL语句如下:select * from event_log where (ext_data::json#>>’{extInfo,userType}’)::text =
2021-11-16 09:18:23 2215
原创 ribbon设置url级别的超时时间
序ribbon的超时设置,只能按转发的serviceId来分的,无法像nginx那样直接在每个转发的链接里头设置超时时间。这里hack一下,实现url基本的ribbon超时时间设置。具体的思路就是重写RibbonApacheHttpRequest的toRequest方法,然后进行设置。CustomRibbonApacheHttpRequestpackage com.sunlord.zuul.configuration.ribbon;import lombok.extern.slf4j.Slf4j;
2021-07-30 00:36:35 1097
原创 使用git在本地合并分支
使用git在本地合并分支合并步骤:1、进入要合并的分支(如开发分支合并到master,则进入master目录)git checkout mastergit pull2、查看所有分支是否都pull下来了git branch -a3、使用merge合并开发分支git merge 分支名4、查看合并之后的状态git status5、有冲突的话,通过IDE解决冲突;6、解决冲突之后,将冲突文件提交暂存区git add 冲突文件7、提交merge之后的结果git commit如果不是使
2021-06-28 11:28:29 18890
原创 Git回滚代码到某个commit
Git回滚代码到某个commit回退命令:$ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前$ git reset --hard commit_id 退到/进到 指定commit的sha码强推到远程:$ git push origin HEAD --force...
2021-06-23 20:20:13 264
原创 Springboot整合log4j2日志
常用日志框架java.util.logging:是JDK在1.4版本中引入的Java原生日志框架Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。LogBack:是Log4j的一个改良版本Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了日志门面slf4j
2021-06-22 18:09:03 201
原创 Linux下ps -ef和ps aux的区别及格式详解编辑器
Linux下ps -ef和ps aux的区别及格式详解Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。ps -ef 是用标准的格式显示进程的、其格式如下其中各列的内容意思...
2021-04-14 23:40:34 119
原创 多线程之异步查询汇总数据
利用java异步编程的操作,将分解的sql异步执行并最终汇总数据。这里用到了CountDownLatch和ExecutorService,// 获取时间段所有天数List days = MyDateUtils.getDays(requestParams.getStartTime(), requestParams.getEndTime());// 天数长度int length = days.size();// 初始化合并集合,并指定大小,防止数组越界List<你想要的数据类型> lis
2021-03-11 14:13:31 2487 1
转载 Java并发——Executor框架详解(Executor框架结构与框架成员)
一、什么是Executor框架?我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor框架实现的就是线程池的功能。二、Executor框架结构图解1、Executor框架包括3大部分:(1)任务。也就是工作单元,包括被执行任务需要实现的接口:Runnable接口或者Cal
2021-03-10 09:55:32 129
原创 springboot 之集成kafka
前言本章只介绍springboot微服务集成kafka,跟rabbitmq用法相同,作为一个消息中间件收发消息使用,本章仅介绍集成后的基础用法,研究不深,请各位谅解。环境准备IntelliJ IDEA前一章中搭建的微服务框架前一章之后,对目录结构进行了优化,将config相关类都放到demo.config包下开始集成pom.xml中增加依赖包org.springframework.kafkaspring-kafka加入依赖包后最好先执行mvn clean install编一把,把所
2021-03-02 20:21:06 775
原创 在Windows安装运行Kafka
在Windows安装运行Kafka一、安装JAVA JDK1、下载安装包http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html注意:根据32/64位操作系统下载对应的安装包2、添加系统变量:JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_144二、安装ZooKeeper1、 下载安装包http://zookeeper.apache.or
2021-03-02 10:25:01 138
原创 springcloud微服务框架
最近在学习springcloud微服务框架,看了很多博客和文章之后,自己模拟一个简单的业务场景搭建了一个springcloud项目。本次练习包括对springcloud核心组件:eureka、ribbon、hystrix的使用,以及feign和Gateway的简单尝试!模拟业务场景介绍: 假设现在有个订单服务(order-service)r,要实现订单支付功能,流程如下:调用订单服务的支付接口 订单服务调用商品服务的扣除库存接口 订单服务调用积分服务的增加积分接口一、项目搭建1.1、
2021-02-25 10:57:10 223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人