自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Nebula基础的查询操作介绍

这里只是对Nebula基础查询进行介绍,其目的是为了让未接触过Nebula的同学最短时间了解其语句。更详细更准确的内可以查看官方文档。关于查询这里并没有使用官方例子数据,而是自己实际尝试了文档中的语句。

2023-08-24 01:04:36 1173

原创 Nebula基础的操作介绍

这里只是对Nebula基础的介绍,其目的是为了让未接触过Nebula的同学最短时间了解其概念和使用。更详细更准确的内可以查看官方文档。

2023-08-24 01:02:34 1097

原创 JAVA项目中的异步任务

如果需要自定义线程池需要在。

2023-04-09 11:17:23 6650 1

原创 聊一聊代码重构——封装集合和替换算法的代码实践

正常业务中,即使逻辑分支不同,但是其需要经历的流程大多是类似的,这个时候我们使用一些系列公共逻辑将其抽象。但是这些内容有可能并不是最好的方式,在原先的做法之外,可能存在更简单的解决方案,此时在重构代码时需要尝试对原来算法进行重构。很多时候我们封装了对象属性的访问,这能提供属性的安全性,但是对于集合,我们一般会将集合作为一个整体来控制。如果一个系统中是通过优惠标记来进行产品折扣的,那么这种固定产品ID进行折扣的方式,显然和产品正常涉及的逻辑不相符合。将正常的代码逻辑和特殊的代码逻辑隔离出来。

2023-03-12 20:30:27 476 1

原创 聊一聊代码重构——存在继承关系类上的代码实践

当一个子类继承了超类的很多方法,但是只使用其中的几个方法,而且这些方法并不是在子类中实现的,此时就可以考虑使用使用委托关系取代父类重构手法。如果一个字段或者方法在多个子类中使用,但是子类中它们所代表的含义和用法完全脱离的父类的约定,两者仅仅是使用相同的名称。需要注意的是将子类构造方法提升到父类后,这些构造方法会被所有子类使用,如果不仔细考虑代码中可能存在的细微差异,这个重构技巧可能会导致一些潜在的问题。需要注意的是,如果抽取到父类中的字段名称,和某些子类的变量重名时,要注意修改子类变量名,避免混淆。

2023-03-12 19:57:01 372

原创 聊一聊代码重构——程序方法和类上的代码实践

将存在的多个参数整合成一个对象进行传递,他带来的不仅仅是方法可读性的提高。更重要的一点是,构造方法的名称被严格限制,我们无法根据不同的构造方法来分析初始化的用途,但是使用工厂方法,我们可以通过参数名称、或者初始化方法的名称了解到对应方法解释初始化对象的用途。另外一种情况是,当一组方法使用相同的上下文的时候,我们可以为这些方法和上下文设置单独的类,将执行序列中的方法,作为类自身属性。并且需要修改的数据作为命令对象共享的字段,在不同处理方法中,不再需要设置繁琐的参数,所有的字段数据在调用方法后被实时更新。

2023-03-06 00:12:32 349

原创 聊一聊代码重构——程序方法上的代码实践

修改方法名称,一个好的方法名,让我们第一时间了解到方法的在业务中的作用,让我们更快的理解业务逻辑。而移除标记参数就是为了解决这些情况,将代码逻辑根据标记参数对分支的控制,创建对应的方法,每个方法执行对应逻辑分支内的逻辑,在传递标记参数的地方就直接调用对应的方法即可。当方法涉及的业务发生变化,内部逻辑出现调整的时候就需要考虑,方法名称是否可以被修改的前提,仔细了解方法内容,只有明白方法里面到底做了什么,才清楚方法的名称是否正常。在方法中不需要考虑标记方法的含义,因为方法中只存在单一场景的逻辑。

2023-03-05 21:54:55 348

原创 聊一聊代码重构——关于条件表达式的代码实践

和方法分解类似,如果有大的表达式,我们可以将其根据业务场景、数据模型等区分方式进行归类整理,类似的判断独立成一个方法,为其提供一个可以被理解的名称。一层一层嵌套的判断,加上复杂的逻辑,在看这些代码的时候只要分神,我们可能都无法确认当前逻辑存在的层级。很多时候即使将多个简单的表达式合并为一个复杂的表达式,最终的表达式依旧是个容易识别的表达式时,将他们合并起来是个好的方法。很多时候业务中的判断是分层的,我们需要判断上层内容然后再去进行下一层代码的判断,随着参数众多层级众多,我们的判断代码可能成为这个样子。

2023-03-05 00:04:30 376

原创 聊一聊代码重构——关于循环逻辑的代码实践

如果循环中的数据存在互相影响和依赖的情况,这会导致尝试理解循环中的代码所实现的目的变的更加困难。另外当多个业务共用一个循环时,如果不同的业务操作迭代范围不同,则需要在循环中添加各种不同的控制语句,会进一步降低代码的可读性。循环中存在另外一个问题就是多层循环,当多个循环在一起出现的时候,尝试阅读每层循环的逻辑会被其他循环所干扰,在理解当前循环内容时容易产生混淆。的核心是对数据的流式操作,它可以让我们通过流水线式的操作来处理数据,而不必编写冗长的循环和条件判断语句。是Java 8引入的一个强大的数据处理工具。

2023-03-04 23:48:29 420

原创 聊一聊代码重构——关于变量的代码实践

当一个表达式被赋值给一个变量后,在后续使用的时候,如果这段逻辑参与了后续的代码业务时,可以使用变量来替代,从而提高了代码复用程度。除了这种情况以外,有些时候变量完成初始化后,在后来的某处代码中会对变量再次进行了赋值,这种赋值有时候代表着变量的职责或者当时的数据状态发生了变化。虽然看起来变量增多了,但是在后续调用的时候可以清晰的理解,这两个变量内容是不一致的,而不至于调用的时候产生混乱。在上面例子中,除了可以将变量封装在对象中使用,部分基于变量的表达式,也可以作为对象自身的特性,作为对象的内部方法进行实现。

2023-03-04 23:35:11 492

原创 聊一聊代码重构——代码中究竟存在哪些坏代码

如果计划重构代码,那么首先要做的是发现坏的代码。坏的代码会导致可读性、可维护性都变的很差。

2023-03-03 23:46:17 494

原创 聊一聊代码重构——我们为什么要代码重构

简单谈一谈重构的内容

2023-03-03 23:35:04 552

原创 PostgreSQL数据类型——数组类型

PostgreSQL数据类型数组类型

2022-11-28 23:44:03 4147

原创 PostgreSQL数据类型——范围类型

PostgreSQL数据类型——范围类型介绍

2022-11-28 23:41:47 2180

原创 工作积累——JPA事务中数据更新后查询结果为旧数据的问题

工作积累——JPA事务中数据更新后查询结果为更新前的问题

2022-11-24 23:39:56 2297

原创 JVM性能——垃圾回收器的优化策略

简单介绍下回收器优化策略

2022-11-02 01:13:11 767

原创 JVM性能——JVM调优参数列表

介绍在进行JVM GC优化的时候可能用到的参数

2022-11-02 00:50:00 332

原创 JVM性能——垃圾回收器的介绍

简单介绍下JDK8的回收器,聊聊用哪种回收器会好些

2022-11-01 23:48:48 693

原创 JVM性能——开启回收日志和实时查看GC信息

如何开启GC日志和分析日志

2022-11-01 23:41:38 3895

原创 工作积累——几种常用的限流方式

目前主要使用的限流方式主要是:计数器、滑动窗口、漏桶和令牌桶限流。

2022-10-17 00:13:10 641

原创 配置NTP服务器进行时间同步

配置NTP服务器进行时间同步

2022-09-16 21:45:00 2455

原创 多个服务器之间免密登录

服务器直接使用ssh免密登录

2022-09-16 20:00:00 474

原创 工作积累——Web请求中使用ThreadLocal遇见的问题

Web请求中使用ThreadLocal遇见的问题

2022-06-23 22:00:30 514

原创 【HikariCP】为HikariCP配置MetricRegistry监控

Hikari提供了setMetricRegistry方法,让我们可以注入MetricRegistry来实现对连接池指标的收集。这样我们可以较为方便的监控连接池的运行状态关于MetricRegistry设置MetricRegistry输出内容输出指标说明输出度量说明手动方式获取连接池指标信息关于MetricRegistry关于MetricRegistry可以看我之前写的内容Metrics 快速入门Metrics的Histogram可配置项Metrics数据的输出格式设置Metri.

2022-05-16 21:16:30 4623

原创 ClickHouse使用问题——Serialization is not implemented

ClickHouse使用问题——Serialization is not implemented此系列的内容主要是介绍在使用ClickHouse中遇见的问题以及排除的思路或者方案或者仅仅是过程,所以内容可能会很短也可能会很长。主要的原因是目前ClickHouse相关问题的文章实在太少了。问题在一次对ClickHouse的视图数据集进行查询的时候出现的这样的错误nested exception is ru.yandex.clickhouse.except.ClickHouseException:

2022-05-15 21:19:12 754

原创 监控工具——Metrics数据的输出格式

Metrics数据的输出格式Metrics的Histogram可配置项这篇是之前监控工具——Metrics 快速入门的补充代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里: https://gitee.com/daifyutils/springboot-samples。此篇文章所属模块为:base-metrics支持的格式Metric提供了Reporter接口可以对统计的指标进行不同格式的输出。其提供的基础的输出类型

2022-05-10 00:22:29 2068

原创 监控工具——Metrics的Histogram可配置项

Metrics的Histogram配置参数这篇是之前监控工具——Metrics 快速入门的补充代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里: https://gitee.com/daifyutils/springboot-samples。此篇文章所属模块为:base-metricsHistogram在使用Histogram进行指标统计的时候,可以看到其支持一个Reservoir类型的参数 public Hist

2022-05-09 01:08:44 1551

原创 监控工具——Metrics 快速入门

Metrics 快速入门关于Metrics更多的内容可以查看官网 https://metrics.dropwizard.io/3.1.0/getting-started/代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里: https://gitee.com/daifyutils/springboot-samples。此篇文章所属模块为:base-metrics什么是MetricsMetrics提供了一个强大的工具包,用于衡

2022-05-09 00:58:34 6894

原创 【HikariCP】HikariCP连接时间设置和连接数设置

HikariCP连接时间设置和连接数设置时间设置HikariCP用来控制连接时间的配置主要有:idleTimeout(空闲时间)、maxLifetime(最长时间)idleTimeout:用来控制连接在连接池中空闲的时间。maxLifetime:用来控制连接在连接池中最大的生命周期。idleTimeout空闲时间默认设置为600000毫秒(10分钟)。配置生效的时机当minimumIdle小于maximumPoolSize的时候,HikariCP才开始进行空闲连接的判断,这个时候idle

2022-05-04 16:36:05 9683

原创 【HikariCP】HikariCP配置参数

配置HikariCP的必需配置对于数据源必须要配置的内容只有链接信息,其他内容都是非必须内容连接信息包括数据库驱动或者JDBC URL用户名密码数据库驱动因为现在大多数的JdbcUrl配置中已经指明需要连接的数据库类型,所以一般不需要额外再去设置,这里列出来各个数据库的驱动数据库驱动JDBC URLOracleoracle.jdbc.driver.OracleDriverjdbc:oracle:thin:@dbip:port:SQL Serverco

2022-05-04 11:55:18 6827

原创 工作积累——stream().toMap 空指针异常解决问题时发现的小坑

引子今天测试环境一处代码使用toMap出现了空指针异常,看了下其实很多经常使用lambda表达式进行转换的开发大多遇见过这种问题,本来这个也没什么研究了,现成的解决方案,但是大概就是好久没写东西了,天天忙的焦头烂额的时候突然想写点啥,于是在看到所有文章给出了一个几乎一样的解决方案时,想看看源码是否有其他方案。问题问题很简单就是List转换为Map的时候空指针报错了。大概是一段这样的逻辑,使用toMap的三个参数:键映射、值映射、冲突解决逻辑 public static void m

2022-04-24 23:56:22 4664

原创 扩展JPA对数组字段的支持(postgresql数据库)

扩展JPA对postgresql数据库数组字段的支持postgresql虽然支持数组字段,但是Hibernate却不支持,这里需要特殊处理直接使用三方依赖直接引入Hibernate大佬Vlad Mihalcea自己写的开源库,轻松愉快引入依赖<dependency> <groupId>com.vladmihalcea</groupId> <artifactId>hibernate-types-52</artifactId&g

2021-05-30 15:01:16 2888

原创 JPA中使用自定义数据类型

JPA中使用自定义类型此内容代码并未完全贴出来,代码码云地址:https://gitee.com/daifylearn/postgresql使用Convert转换器hibernate提供了一个Convert注解,其配置在字段属性上,参数中可以指定一个类型转换器,通过此类型转换器实现JAVA数据存在到DB中以及DB中数据读取到JAVA的过程中的解析。@Convert 中需要指定一个转换器类,此类需要实现了@AttributeConverter接口示例针对实体类中某个参数是一个嵌套对象@Data

2021-05-30 15:01:02 2331

原创 Spring Boot 整合——使用Spring Shell开发java命令行工具

关于版本依赖版本springboot2.0.8.RELEASEspring-shell-starter2.0.0.RELEASE关于项目本内容也是我尝试整理工作中接触过各种工具在springboot中使用的方法。下面介绍的所有方法都已经提供了测试用例。因为每个例子涉及代码较多,所以文章中只贴出了部分代码。全部的代码在这里gitee代码仓库spring shellSpring-shell是Spring提供的一个组件,此组件可以将Java中的代码逻辑封装为shell命

2021-03-27 16:43:02 4577 1

原创 Spring Boot 整合——Spring Mobile用来识别请求设备类型的小工具

文章前面关于版本依赖版本springboot2.0.8.RELEASEspring-mobile-starter2.0.0.M2关于项目本内容也是我尝试整理工作中接触过各种工具在springboot中使用的方法。下面介绍的所有方法都已经提供了测试用例。因为每个例子涉及代码较多,所以文章中只贴出了部分代码。全部的代码在这里:https://gitee.com/daifyutils/springboot-samples。Spring Mobilespring mob

2021-03-21 14:45:21 2806 1

原创 Spring Boot 整合——Spring retry有状态重试以及其注释和组件介绍

关于版本依赖版本springboot2.4.0spring retry2.4.0代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里:https://gitee.com/daifyutils/springboot-samples。通过配置状态重试来使用CircuitBreaker带熔断功能的重试无状态的重试无状态重试,是在一个循环中执行完重试策略,即重试上下文保持在一个线程上下文中。有状态的重试有

2021-01-17 22:06:49 1085

原创 Spring Boot 整合——Spring retry的基本使用

关于版本依赖版本springboot2.4.0spring retry2.4.0代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里:https://gitee.com/daifyutils/springboot-samples。Spring retry之前在介绍Spring batch的提到过其重试功能之后被独立出了一个新的项目spring retry。通常来说我们可以使用retry来解决一些因为网络

2021-01-17 22:06:12 2778

原创 日常工作——TransactionSynchronizationManager.registerSynchronization使用中事务传播产生的问题

主要是今天遇见使用TransactionSynchronizationManager出现的事务问题TransactionSynchronizationManager是一个事务管理的核心类,通过TransactionSynchronizationManager我们可以管理当前线程的事务。而很多时候我们使用这个类是为了方便我们在事务结束或者开始之前实现一些自己的逻辑。类似下面的逻辑我们希望在事务结束后再执行某些业务。所以可以使用TransactionSynchronizationManager.reg.

2021-01-05 23:51:31 18913 13

原创 Spring Boot 整合——Spring batch重试和回滚

关于版本依赖版本springboot2.4.0spring batch2.4.0代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里: https://gitee.com/daifyutils/springboot-samples。此篇文章所属模块为:base-batch-2.4.0目录地址目录测试目录内容dai.samples.batch.allowstartdai.sa

2020-12-27 19:37:51 2323 3

原创 Spring Boot 整合——Spring batch任务流程控制以及流程分割

关于版本依赖版本springboot2.4.0spring batch2.4.0代码地址因为每个例子涉及代码较多,且包含测试用例,如果都贴到文章中内容过多,所以只贴出了部分代码。全部的代码在这里: https://gitee.com/daifyutils/springboot-samples。此篇文章所属模块为:base-batch-2.4.0目录地址目录测试目录内容dai.samples.batch.allowstartdai.sa

2020-12-27 19:37:27 2514

空空如也

空空如也

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

TA关注的人

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