自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

人生有梦,未来可期

不乱于心,不困于情。不畏将来,不念过往。

  • 博客(21)
  • 收藏
  • 关注

原创 设计模式之状态模式

文章目录一、状态模式介绍二、需求审批状态流转场景1.审批流程2.设计实现测试一、状态模式介绍状态模式描述的是行为导致对象的状态变更。例如,在某个审核流程中,审核人员在待审核列表点击审核通过,那么相应审核项的状态就由待审核状态变成了审核通过状态,审核人员在待审核列表点击审核不通过,那么相应审核项的状态就由待审核状态变成了审核不通过状态二、需求审批状态流转场景本案例模拟一个普通的OA申请流程,假设一个需求从创建到完成需要经过多级审核。1.审批流程审批流程如下:2.设计实现状态枚举:@Gett

2022-01-12 16:45:35 397

原创 RocketMQ事务消息的最佳实践

在分布式的场景下,我们经常能遇到事务一致性问题,如何去保证事务的一致性,是分布式场景下不可避免的一个重要话题。我们很难去做到事务的强一致性(有方案),因此会退一步去保证事务的最终一致性。如何去保证事务的最终一致性呢?我们可以利用RocketMQ的事务消息来保证事务的最终一致性。RocketMQ如何保证事务的一致性呢?原来,RocketMQ通过将应用本地事务和发送消息操作定义到全局事务中,要么同时成功,要么同时失败。这样就保证了本地事务和消息发送的一致性:事务消息的原理可以参考事务消息以及收发事.

2021-04-14 21:41:13 1257

原创 SpringBoot集成RocketMQ之模版方法模式

前言我们经常使用RocketMQ来进行业务逻辑的解藕,或者在分布式环境下,用来进行系统之间的通信。相比于Kafka、Rabitmq等其他消息中间件,RocketMQ有很多优势特性,这里就不一一介绍了。使用与封装RocketMQ使用起来十分简单与便捷,官网上也有很多示例,但是我们系统中往往不止一个生产者/消费者实例。这时候,就需要封装一下,一来可以统一逻辑、二来减少重复的代码,没必要去单独的配置每个生产者/消费者。基于模版方法的封装我们首先来看看,一个简单的消费者实例(生产者其实不需要特别的封装,不

2020-09-03 22:45:24 677

原创 SpringBoot实现WebMvcConfigurationSupport导致自定义的JSON时间返回格式不生效

给理想留点时间,熬过低谷,繁华自现。一、场景(ps:SpringBoot版本为2.0.3-RELEASE)1、提供出去的rest接口,请求入参带有时间类型参数@GetMapping("/date")public DateResponse get(@RequestParam(value = "localDate", defaultValue = "2020-12-12", required = false) LocalDate localDate, @RequestParam(value = ".

2020-06-21 11:49:09 2089 3

原创 Failed to convert value of type java.lang.String to required type java.time.LocalDate

花开从不是为了别人的欣赏,努力也是。一、提供出去的接口,请求入参带有时间类型参数@GetMapping("/date")public DateResponse get(@RequestParam(value = "localDate", defaultValue = "2020-12-12", required = false) LocalDate localDate, @RequestParam(value = "date", defaultValue = "2020-12-12 12:12:1.

2020-06-21 10:32:55 15860 2

原创 SpringBoot全局异常处理

前言:在我们开发项目过程中,经常会主动的抛出异常提示,又或者程序出现了未知的异常而抛出的堆栈异常,此时,我们调用方会收到下面的信息(以swagger为例):{ "timestamp": "2020-05-18T14:21:05.180+0000", "status": 500, "error": "Internal Server Error", "message": "参数错误", "path": "/err2"}这种方式很不优雅,那么有没有一种优雅点的方式,来统一处理程序抛出的

2020-05-18 22:31:52 383

原创 Spring动态注册Bean

一、前言一般而言,使用静态配置信息,即可由Spring容器生成我们需要的Bean。但是在一些场景下,我们需要Spring容器根据我们的配置信息动态的生成Bean,这时就需要将Bean动态的注册到Spring容器中去。一般而言,我们使用@Componment、@Service等注解,就可以向Spring容器注册Bean,下面介绍自动的动态注入Bean到Spring容器。具体的应用场景,可以参考我写的一个简单快捷的rocketmq-spring-boot-start里的实现。二、设计测试的Bean1、

2020-05-14 19:34:34 975

原创 Java中的异常处理

简介定义:异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。异常分类及类结构图一般将异常归为三类:检查性异常:这种异常,一般是程序员无...

2020-04-25 22:51:13 155

原创 Java list转tree

一、数据模型@Setter@Getterclass Tree { private Integer pid; private Integer id; private Boolean isLeaf = false; private List<Tree> children; public Tree(Integer pid, Integer id...

2020-04-10 14:36:19 270

原创 Java普通树的遍历

一、数据结构@Setter@Getterpublic class A { private Integer i; private List<A> children;}二、需求描述如上所述的树,现在已知子节点121/132,需要返回数据如下:三、算法如下 private void getSubTree(A a, List<Integer> ...

2020-02-08 13:50:01 794

原创 SpringBoot创建Bean之singtone模式与prototype模式

一、单例管理的对象spring创建的对象,默认都是单例模式。以BeanC为示例,创建对象过程中一些方法的调用属顺序如下:@Setter@Getterpublic class BeanC implements InitializingBean { public BeanC() { System.out.println("BeanC construct()"); ...

2020-01-18 17:56:11 1803

原创 SpringCloud使用feign调用下载文件服务

SpringCloud是当下最流行的分布式服务解决方案之一,是微服务架构的集大成者,将一系列优秀的组件进行了整合。SpringCloud基于springboot构建,对于使用过SpringBoot的同学来说,上手比较容易。今天学习一下 使用feign跨服务文件下载。一. 服务提供者集成Easyexcel实现读入数据(ExcelUtil,easyExcel集成可参考快速入门,使用EasyEx...

2019-09-10 10:38:54 3508 2

原创 快速入门,使用EasyExcel导入导出文件

maven依赖包<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> ...

2019-08-30 10:36:12 2413

原创 使用FastJson进行JSON字符串、JSON对象与Java对象之间的转换

maven依赖包:<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> ...

2019-08-30 10:03:45 16146

原创 SpringBoot内部方法调用事务方法事务不回滚

在开发中往往会遇到事务问题,当我们必须保证事务的时候,可以在进行具体的保存方法上面加上Spring的事务注解***@Transactional***,即如下的方式:public class SomeServiceImpl implement ISomeService { @Override @Transactional public void save() { do saving....

2019-04-02 10:34:50 4992 1

原创 web开发中,多个线程对同一数据修改时的线程安全问题

在web应用中,每次请求都是不同的线程,因此,当对统一数据进行访问更新的时候,有可能会引发数据问题。举个例子:有一个apple表,里面有个字段count,表示某种apple的数量。同时,后台提供获取这种苹果的服务,获取苹果之后,就需要将count的值修改。假设apple表中有这么一条数据id count12345 100---------- class ...

2018-08-24 16:10:22 2933

原创 小型Java Web项目之DAO操作标准、DAO接口真实实现类、DAO代理实现类、DAO工厂

DAO模式的好处是数据访问和业务逻辑分离,便于数据维护,业务逻辑不需要了解访问细节。 DAO的组成: 1.DatabaseConnection:负责打开和关闭数据库; 2.VO:包含属性以及其getter和setter方法; 3.DAO:定义操作的接口,使之更标准; 4.Impl:DAO接口的真实实现类,完成具体的数据库操作,但不负责数据库的打开和关闭; 5.Proxy:代理实现类,完成

2017-05-02 21:59:48 2969 1

原创 小型Java Web项目之DatabaseConnection

做JavaWeb项目必然离不开数据库,这里使用的是MySQL数据库进行开发。具体链接类如下:package dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import javax.naming.Context;import javax.naming.Initia

2017-05-02 21:42:10 866

原创 小型Java Web项目之用户类JavaBean

这两个月复习了一下去年所学的Java Web开发,因此也写了一个小型的Java Web项目,这个项目虽然比较小,但是还是用了DAO+MVC模式,目的在于好好熟悉一下这两个模式。 登陆用户类的JavaBean如下:package vo;public class User { private String uname; private String upassw; privat

2017-05-02 21:36:00 561

原创 前一日函数PreDate(static方法与非static的区别)

最近写了一段求给定日期的前一天的日期的一个程序,虽然简单,但也有点收获 程序如下:import java.util.Scanner;public class PreDate { public static boolean isCorrect(int year,int month,int day){ boolean flag=false; if(year>=1

2017-03-18 16:37:31 1480

原创 时制转换时的电话账单

最近做过这样一个题目:对电话账单来说,春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题。春季,这种转换发生在(3 月末,4 月初的)星期日凌晨 2:00 时,这时时钟要设置为凌晨 3: 00 时。对称的转换通常发生在 10 月最后一个星期日,时钟要从 2:59:59 调回到 2:00:00。请为采用以下费率计算用户的每月通话费:(1)通话时间(2)通话时间>20 分钟时

2017-03-18 16:08:59 1983

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除