自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 业务解耦,以注册机制,实现多条业务线的通信回调问题(主要作用于一个项目内使用)

业务A的处理到一个节点,需要不同情况需要调用或回调不同的多个平级业务。一般情况下,我们会在业务A的主表等中有一个业务类型,通过业务类型判断应该调用或者回调目标业务。但是这种处理是一旦有新的业务需要业务线A去调用或回调其他业务线,不仅需要其他的业务线提供方法,还需要业务线A增加分支判断去调用,会造成业务A中的代码中有大量的跟本身业务无关的其他业务的服务层等的注入,这样就违背了职责单一原则,代码耦合性非常高,维护难度大。即向工厂添加的不同的业务线的具体业务实现,通过key实现具体业务的调用。

2024-02-05 12:44:21 481

原创 mysql: 身份证校验等问题

根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。 出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。 顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺...

2022-04-20 10:25:09 1677

原创 mysql : 结果乱码处理, blob乱码问题

问题:在mysql数据库查看结果是非乱码,但是传到页面变成了 乱码处理方案:使用mysql函数 CASTmysql函数 CAST 说明Cast(字段名 as 转换的类型 ),其中类型可以为:CHAR[(N)] 字符型DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED intTIME 时间型处理乱码选用 CHAR使用方式CAST(字段 as char)...

2022-03-01 10:26:52 956

原创 常用JAVA工具类:基于mybtais的用户DML操作日子记录入库,兼容多数据源

实现过程:第一步:自定义拦截器第二步:sql处理的工具类,请求头中获取当前用户信息,以供在自定义拦截器中使用第三步:设定开关,在yml配置文件中设定开关值,不设定,默认为不开启。第三步: 使用,在数据源配置中,注册自定义的拦截器插件。自定义拦截器,实现 Interceptor 接口以及相关注解,增加一个JdbcTemplate 属性,可传参的构造方法,参数为JdbcTemplate ,为的是在多数据源的情况下,可以明确指定操作数据源。获取相关的数据库信息。...

2022-01-06 15:01:36 970

原创 Java1.8 stream的 orElse 和 orElseGet

orElse(null)表示如果一个都没找到返回null。【orElse()中可以塞默认值。如果找不到就会返回orElse中你自己设置的默认值。】orElseGet(null)表示如果一个都没找到返回null。【orElseGet()中可以塞默认值。如果找不到就会返回orElseGet中你自己设置的默认值。】区别就是在使用方法时,即时时没有值 也会执行 orElse 内的方法, 而 orElseGet则不会。@Test public void test1(){ List<In

2022-01-05 18:22:08 18947 5

原创 java报错系列:java.lang.IllegalArgumentException: non null key required

redis 取值需要非空键。

2022-01-04 10:28:14 990

原创 java报错系列:Prefix must be in canonical form(已解决)

prefix里面不能用驼峰写法,全部小写。这个注解你礼貌么

2021-12-21 17:38:08 608

原创 数据结构系列:栈讲解及使用数组模拟

栈原理,数组模拟栈,栈的使用

2021-12-06 14:44:46 91

原创 IT开发好用的在线工具,API等

在线代码格式化1在线代码格式化https://tool.oschina.net/codeformat/xml在线代码格式化2 这里边的json转excle很好用在线JSON转excel,JSON转csv(ES JSON在线工具)在线Json字符串转Excel/Csv工具:可以便捷地将Json字符串转成Excel或者Csv数据格式,支持Json数组的转换。http://www.esjson.com/jsontoexcel.htmlJavaApiJava 多线程编程 | 菜鸟教程Java 多线程编程

2021-11-17 16:59:11 80

原创 常用Java工具类:spring boot 将空字符串转换为null,防止mybatis-plus根据实体类查询时候带上空字符串查询

问题原因:wrapper.setEntity(t)装载实体类,在进行sql拼装的时候非null,都会拼到where后边, 作为字段过滤,这其中也包括空串,那这就不符合我们的预期结果。所以需要将空串转为null。阿咚举出三种方式:第一种:继承 org.springframework.beans.BeanUtils 这类,重写 copyProperties,copyProperties方法.这是springframework下的一个BeanUtils工具。传入参数,一个是数据源,一个是

2021-11-12 12:14:22 3456

原创 数接结构系列:单向循环列表,约瑟夫问题

Josephu 问题:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。约瑟夫问题,可以抽象为一个单项循环链表图示:阿咚,用Java类的解决约瑟夫问题的思路:用一个不带头结点的循环链表来处理:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的..

2021-11-10 13:43:13 270

转载 java报错系列:HikariPool-1 - dataSource or dataSourceClassName or jdbcUrl is required.解决方案

这个大神讲的超级对https://xingyun.blog.csdn.net/article/details/102567458以上是这个大神从源码级别讲解,并附上解决方案两种,亲测有效。

2021-11-09 09:57:34 1279

原创 常用Java工具类:手机号脱敏,身份证号脱敏

目录:1 手机号脱敏2 身份证号脱敏3 姓名脱敏1 手机号脱敏本案要求:手机号的保留前三后四,中间的为星号 "*" // 手机号码前三后四脱敏 public static String mobileEncrypt(String mobile) { if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) { return mobile; } ...

2021-11-05 13:37:22 5078

原创 SpringBoot相关系列:获取注解的信息

第一种获取字段上的以@TableField 注解为例,Map<String, String> map = new ConcurrentHashMap<>();Field[] fields = T.class.getDeclaredFields();for (Field field : fields) { if (field.isAnnotationPresent(TableField.class)) { /** * 获取字段...

2021-11-04 18:33:55 1235

原创 SpringBoot相关系列:多数据源配置

阿咚的多数据实现是使用配置类,以及yml文件的方式。话不多说直接上代码。数据源1配置类import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Qualifier

2021-11-01 09:54:43 122

原创 java报错系列:java.util.NoSuchElementException: No value present

原因:阿咚最近遇到Java1.8的Stream报出java.util.NoSuchElementException: No value present的异常。然后查看如下源码原来在使用stream流对数据进行过滤,filter()等操作时,数据中没有符合的数据,这时使用get()方法,就会报出上方的异常。解决办法: Java1.8中提供了一个Optional类,来解决null值问题,并使用以下方法来做null值判断示例代码:T t=null;Optional<T&.

2021-10-29 11:30:17 2338 1

原创 常用Java工具类:java抽奖码生成

本案要求生成10W条由大写字母加数字组成的抽奖码。由要求得字符集为:ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789为保证数据不重复,且不可破解的要求。阿咚使用5位的随机字符,加5位由10进制的序列号转为36进制的字符组成。该10进制每使用一次加一,以保证数据的唯一性。如果该抽奖码是多次生成,可以将每次生成后最大的序列号保存在数据库,以便迭代使用。具体代码如下:import java.util.Random;import java.util.concurrent.

2021-10-25 11:34:45 758

原创 intellij idea使用时,Git拉取代码后 ,大量的依赖失效

1,先查看修改父项目的pom.xml 文件 ,响应的子模块是否正常引用。 是否包含你的微服务模块 没有则自己补齐2使用idea的工具将maven依赖资源拉取按下图中顺序点击,2步为你的微服务项目,4步双击即可3,刷新项目,如项目还有依赖未导入成功 请查看自己的依赖配置是否是自动导包,pom.xml 文件是否有问题。...

2021-10-15 10:31:38 2315

原创 springCloud注解系列:@FeignClient 作用简述

FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上源码如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface FeignClient { @AliasFor("name") String value() default ""; @Deprecated String servic

2021-10-13 17:01:54 5509

原创 数据结构系列:自定义双向链表,原理及代码实现

双向链表就是在单向链表的基础上增加一个指向前一个节点的引用(指针)。两者的区别单向链表:只有一个指向下一个节点的指针。优点:单向链表增加删除节点简单。遍历时候不会死循环;缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。适用于节点的增加删除。双向链表:有两个指针,一个指向前一个节点,一个后一个节点。优点:可以找到前一个节点和后一个节点,可进可退;缺点:增加删除节点复杂,需要多分配一个指针存储空间。适用于需要双向查找节点值的情况。双向链表的图解:

2021-10-13 15:47:25 177

原创 数据结构系列:单链表的反转

本案要求是对单链表指针指向反转,如下图所示:ps:单链表的基本原理,以及代码实现请查看:数据结构系列:使用数组模拟环形队列,原理分析,及代码实现_阿咚do懂的博客-CSDN博客先上实现代码: //将单链表反转 public static void reversetList(DongNode head) { //如果当前链表为空,或者只有一个节点,无需反转,直接返回 if(head.next == null || head.next.next == null) { ...

2021-10-12 16:09:26 114

原创 数据结构系列:自定义单链表,以及基本功能实现

链表(Linked List)介绍链表特点:1,链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:2,指向下一个节点. 如图:发现链表的各个节点不一定是连续存储.3,链表分带头节点的链表和没有头节点的链表,本案分析带头节点的单链表。单链表(带头结点) 逻辑结构示意图如下:本案举例用对阿咚四兄弟做操作,大咚,二咚,三咚,四咚。第一步:创建节点类。//定义DongNode , 每个DongNode 对象就是一个节点class Do.

2021-10-12 15:11:55 289

原创 微信小程序系列:订阅消息,发送消息

小程序订阅消息功能介绍消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面消息类型1. 一次性订阅消息一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。2. 长期订阅消息一次性订阅消息可满足小程序的大部分服务.

2021-09-24 14:38:28 2299

原创 最新手机号正则表达式,及生成程序

获取手机号段网址:https://www.jihaoba.com/tools/haoduan/先给截止于日期 2021-08-20的结果String patternPHone="^1((3[0-9])|(4[5-7])|(4[0|9])|(5[0-3])|(5[5-9])|66|(7[5-8])|(7[2|3])|(8[0-9])|(9[5-9])|(9[1|3]))\\d{8}$";Pattern p = Pattern.compile(patternPHone);Matcher m ...

2021-08-20 14:28:45 966

原创 数据结构系列:稀松数组分析,及代码实现

基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。应用场景分析原因:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.,使用稀松数组。可以很好的记录棋盘数据,以及下棋记录。以上图五子棋为例,我们要存棋盘的下棋记录 ,我们设计一个int[11][11]的数组,来记录每个棋子下落的位置,0.

2021-08-13 16:23:15 111

原创 数据结构系列:使用数组模拟环形队列,原理分析,及代码实现

一;队列介绍队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出二:设计分析 因为本章基于数组模拟队列,首先确认一下几点要素: 1)全局变量: 1,队列的最大存量, maxSize,即最多几个元素,也是模拟的数组的长度。 2,队首, int front ,初始设定为0, 即模拟的数组的下标,首位,读取数据时从这个下标读数据。然后这个值移动到下一个位置front = ...

2021-08-01 19:13:31 111

原创 mysql:日期加时间

基础语法:select date_add(字段, interval 1 day); select date_add(字段, interval 1 hour); select date_add(字段, interval 1 minute); select date_add(字段, interval 1 second);select date_add(字段, interval 1 microsecond);select date_add(字段, interval 1

2021-07-30 11:12:15 1226

原创 常用Java工具类:LocalDate,LocalDateTime ,ZonedDateTime之间转换,带上时区

LocalDate==》LocalDateTime==》ZonedDateTime,阿咚直接上代码 LocalDateTime l2 =LocalDateTime.of(LocalDate.parse("2021-07-27"), LocalTime.of(0, 0,0)); //时区亚州上海 东八区 ZonedDateTime r=ZonedDateTime.of(l2, ZoneId.of("Asia/Shanghai"))

2021-07-30 10:06:24 1459

原创 常用Java工具类:JSONObject与实体类,JSONArray与集合之间的转换

基于com.alibaba.fastjso实体类转换为JSONObject JSONObject jsonObject =JSON.parseObject(JSON.toJSONString(T)); 集合转为JSONArray JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(List<T>));JSONObject转为实体类JSONObject jsonObject=JSON.toJava...

2021-07-15 11:51:20 434

原创 mysql:判断非null非空串问题

ISNULL(字段)=0 and LENGTH(trim(字段))>0

2021-07-07 16:58:22 439

原创 常用Java工具类:计算两个LocalDate,LocalDateTime时间段相差多少天

// LocalDate 计算//后边的日期LocalDate localDate1 =LocalDate.of(2021,7,7);//前边的日期LocalDate localDate2 = LocalDate.of(2021,7,1);//后减前 为正数long days = localDate1.toEpochDay() - localDate2.toEpochDay();//得出相差天数System.out.println("相差天数"+days);输出结果:相差天数6//前减后.

2021-07-07 16:49:57 3549

原创 Java8 内置的四大核心函数式接口

Java8中内置了以下4种函数名 函数简述 函数成员方法 描述 Consumer<T> 消费型接口 void accept(T t); 将传入参数做相应的逻辑处理,无返回值。 Supplier<T> 供给型接口 T get(); Function<T, R> 函数型接口 R apply(T t); Predicate<T> 断言型接口 boo...

2021-06-22 16:59:42 362

原创 Java1.8 新特性之Lambda实例 简述

一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符箭头操作符将 Lambda 表达式拆分成两部分:左侧:Lambda 表达式的参数列表右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体语法格式一:无参数,无返回值 () -> System.out.println("Hello Lambda!");语法格式二:有一个参数,并且无返回值 (x) -> ...

2021-06-22 15:56:01 210

原创 企业微信客户联系-回调事件

企业微信客户联系-回调事件Java xml报文方式第一步 下载资源下载企业微信提供的关于加密解密,IO解析的 工具包点击 https://work.weixin.qq.com/api/doc/90000/90138/90307#java库第二步 工具包下载的压缩包打开后,按下图路径打开,将这6个工具包复制到自己的项目中,建议用一个单独的包存放,作为企业微信工具包。第三步 回调的接口编写这个作为这个是回调函数的访问接口例子完整的例子/**...

2021-05-26 15:02:25 3024

原创 Java:sonar代码审查问题总结 ----Random 问题

"Random" objects should be reused

2021-05-25 14:58:42 1520

空空如也

空空如也

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

TA关注的人

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