自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(445)
  • 资源 (5)
  • 收藏
  • 关注

原创 第三章:DDD四种模型详解

在上一章中我们通过一些案例分析了解到了在设计我们的对象和功能时如何去定义我们的DP,本章带着大家系统的了解一下在我们开发时经常遇到的四种领域模型。

2024-04-14 20:12:38 729

原创 docker安装rocketMq

在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署broker与nameserver,考虑到分开部署比较麻烦,这里将会使用。

2024-03-10 14:53:13 567

原创 Docker容器Docker桌面配置镜像加速

打开Docker Desktop应用程序,点击设置。

2024-03-10 14:44:17 567

原创 第二章:Domain Primitive

在第一章中我们初步了解DDD的概念,以及DDD中经常提到的贫血和充血模型,由于 DDD 不是一套框架,而是一种架构思想,所以在代码层面缺乏了足够的约束,导致 DDD 在实际应用中上手门槛很高。让我关注DDD的原因除了公司内整个架构采用DDD的设计之外,它有一个思想Anti-Corruption Layer(防腐层)的概念,特别是其在解决外部依赖频繁变更的情况下,如何将核心业务逻辑和外部依赖隔离的机制。

2024-03-03 20:53:04 901

原创 idea查找所有未使用的代码

最近在做无用代码下线的时候发现一个方法里会引用很多个方法,一旦该方法删除以后,里面被引用的方法应该也一同下线,但是一个一个的找过去比较耗费精力,下面给大家推荐一个idea自带的代码分析工具。

2024-02-23 16:51:57 367

原创 解决com.alibaba.fastjson.JSONException: default constructor not found的问题

在进行JSON和对象互转时,发现有个报错:通过其提示可以看出在利用fastJson转对象时需要无参的构造函数,而我的对象:是没有构造函数的,所以需要手动加进去关键就是这个注解:@NoArgsConstructor,在次尝试就会发现已经解决了

2024-01-15 14:29:42 955

原创 第一章:初识DDD

DDD分为战略设计与战术设计。一般来说,领域建模是属于战略层的,而DDD工程落地是属于战术层的,两者是否结合使用,视实际情况而定,比如传统的MVC架构也能使用DDD进行领域建模,DDD架构最好是先做DDD领域建模。在进行具体的实践之前我们必须对一些专有名词进行了解,本章,就带着大家一起去对领域驱动设计有个初步的认知。

2024-01-15 11:11:49 1172

原创 Java中并发下的ThreadlocalRandom

在看同事写的代码的时候发现代码里有很多像:如果我们想要生成一个随机数,通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想,今天给大家介绍一下JUC包中的用于生成随机数的类–ThreadLocalRandom.(本文基于JDK1.8)当然Random随机数也可以保证线程的安全,但是Random随机数生成是和种子seed有关,而为了保证线程安全性,Random通过CAS机制来保证线程安全性。从next()方法中我们可以发现seed是通过自旋锁和CAS。

2024-01-10 10:44:30 549

原创 SpringBoot接入轻量级分布式日志框架GrayLog

Graylog 日志监控系统Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有比 ELK 好,但是其有商业版本可以选择。部署 Graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDB 和 Graylog。其中。

2023-12-18 19:12:53 2472

原创 Docker-Compose安装教程

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。

2023-12-18 14:17:42 803

原创 Java8之Stream流的Collectors.toMap Duplicate key问题

在项目部署的时候,编译通过,但是一直运行不起来,看到错误日志之后发现:原因是我使用stream将list转成Map的时候,有一个RouteId是重复的,导致转换报错。

2023-11-30 17:34:31 938

原创 注解方式优雅的实现Redisson分布式锁

通常我们都会将redisson实例注入到方法类里面,然后调用加锁方法进行加锁,如果其他业务方法也需要加锁执行,将会产生很多重复代码,由此采用AOP切面的方式,只需要通过注解的方式就能将方法进行加锁处理。/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/**

2023-11-27 20:08:05 555

原创 解决:ERR This instance has cluster support disabled

注意:不能通过命令config set cluster-enable yes来解决,因为config命令里面没有cluster-enable配置项。修改配置文件redis.conf中的cluster-enabled参数的值为yes并把参数前#去除,重启Redis服务器。出现这种提示的原因,是因为此Redis实例已经禁用了集群(默认状态下是禁用状态)。重启服务之后,执行:cluster nodes。

2023-11-21 16:22:47 619

原创 解决:java.lang.IllegalArgumentException: Java 8 date/time type `java.time.LocalDate` not supporte

在使用ObjectMapper进行Map和对象的转换时,因为对象中有一个字段的属性为:LocalDate,导致产生:解决方法也很简单,按照它的错误提示,添加:完整代码:

2023-11-03 16:29:47 431

原创 Bean转换工具MapStruct看这一篇就够了

mapstruct是一种实体类 映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类。它基于约定优于配置方法极大地简化了 Java bean 类型之间映射的实现,有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,在编译过程中,mapstruct会自动生成该接口的实现类,实现将源对象映射到目标对象的效果。总的来说,有如下三个特点:基于注解在编译期自动生成映射转换代码类型安全、高性能、无依赖性。

2023-10-24 19:29:56 944

原创 我的创作纪念日

在技术领域,本人一直信奉只有开源,才能够促使技术有更大的进步,每个人在不同的领域想要快速的提升,就必须站在巨人的肩膀上,少走一些弯路,因为知识领域的共享产生的效果是远远大于1+1=2的,当然最初的初心也并不是为了共享知识,因为自己也没那么多的知识储备,当时只是纯粹当成自己的在线学习笔记来用,今天,借着这个机会,分享一下通过CSDN带来的提升和一些潜在的价值。在后面的工作历程中,会逐步剖析目前用到或者见到的系统架构、技术,让技术落地,以更加系统全面的方式贡献自己的技术。

2023-10-23 17:14:17 393

原创 idea中还原dont ask again

在使用idea打开另外一个项目的时候,一不小心勾选为当前项目而且是不在下次询问,导致后面每次打开新的项目都会把当前项目关闭,如下图所示。下面我们就一起看一下如何把这个询问按钮还原回来。

2023-10-18 15:26:28 702

原创 Java中双冒号“::”到底什么意思

看到这儿大家应该对什么是方法引用有了一些认知,其本质就是Runnable或Consumer来指向一个具体的方法,至于该使用哪一个就要看指向的方法是否有参数。上面的内容均是无返回结果的,因为不管是Runnable的run方法还是Consumer的accept方法,均无返回值,如果我们需要返回值则可以使用。通过其源码也可以发现,Consumer也是一个函数式接口,里面提供了一个有参的accept方法,这个方法对应到。,是Java 8中的Lambda表达式写法之一,一种执行方法的方法。

2023-10-07 17:27:39 1413

原创 SpringBoot+Redis BitMap 实现签到与统计功能

最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系型数据库进行计算和统计是非常耗费性能的,所以目前市面上主要依赖于高性能缓存功能来实现。先看看利用Mysql实现以上功能会有哪些缺陷和短板。

2023-09-15 17:23:06 1208 1

原创 MAC终端美化

由于agnoster 主题内夹带有特殊符号,需要另外安装Powerline 字体才能够正常显示,在终端机上输入底下安装Powerline 字体指令即可,在终端依次输入一下三行命令。安装过程中如果出现了链接超时的错误,不要慌,就再来一次,一次不够来两次~,安装完毕后,就会看见一个非常大字oh my zsh ,如上图所示。至于像【agnoster】这种类似的主题的名字怎么去找,大家可以自行去Oh My Zsh的官网去查看,当设置完成之后,在回到我们的终端就会发现,已经较默认的漂亮很多了。进入终端的偏好设置项。

2023-09-08 17:59:20 1055

原创 Spring的事件处理机制

Component@Overridetry {LogUtil.errorLog().log("获取IP地址异常", e);return;由于一些限制,没法针对代码做逐行讲解,只能借着一个点,把相关的核心技术点讲解一下,这个核心技术点就是Spring的事件监听机制ApplicationListener。Spring中的事件处理机制是对设计模式中的观察者模式的一种扩展,它可以实现应用程序中的解耦,提高代码的可维护性和可扩展性。

2023-08-13 21:52:33 439

原创 同一份数据,Redis为什么要存两次

本文主要分析了set对象和zset对象的底层存储结构, intset 和 skiplist 的实现原理,并且重点分析了有序集合如何实现排序以及为何同时使用两种数据结构(字典和跳表)同时进行进行存储数据的原因。

2023-07-26 11:23:08 470

原创 SpringBoot实现pdf添加水印

在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍几种方案来实现PDF添加水印。

2023-07-09 23:01:33 775

原创 一文带你彻底掌握Java Stream流

Java 8 新增的 Stream 是为了解放程序员操作集合(Collection)时的生产力,之所以能解放,很大一部分原因可以归功于同时出现的 Lambda 表达式——极大的提高了编程效率和程序可读性。从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。

2023-06-25 22:49:03 521

原创 AI自动写代码:GitHub copilot插件在Idea的安装和使用教程

GitHub Copilot 是微软与OpenAI共同推出的一款AI编程工具,基于GitHub及其他网站的源代码,根据上文提示为程序员自动编写下文代码,可以极大地提高编写代码的效率。先看看ChatGpt是怎么回答Copilot的功能特点:Copilot使用的是OpenAI烧了数千万美元研发出来的GPT-3.5模型,Copilot在GPT-3模型基础之上通过对GitHub的开源代码进行学习,得到了Codex模型,该模型具备强大的代码生成能力在使用Copilot之前,需要一些准备工作。

2023-06-18 21:05:10 37624 8

原创 Netty的高性能之道

Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。Netty 现在都在用的是4.x,5.x版本已经废弃,Netty 4.x 需要JDK 6以上版本支持。

2023-06-09 17:09:57 1286

原创 MAC安装Mysql

5.下载了dmg格式的安装包之后,一路next就可以,不过有一点需要注意,一定要选择Use Legacy Password Encryption,选择Use Strong Password Encryption可能在运行过程中出现其他问题。1.首先,登陆Mysql的 官网: https://www.mysql.com/downloads/4.选择MACOS的DMG格式文件下载,我的芯片是因特尔的,所以选择的是下图所示的版本。7.查看是否安装成功:在系统偏好设置内,查看是否有mysql,如果有,即安装成功。

2023-05-24 14:56:40 801

原创 Mac终端主题配置

如果你不想安装item2这类第三方终端,可以试试我下面的步骤,先上效果图,如果感觉还符合你的胃口,可以继续读下去啦!!!

2023-05-15 10:59:58 810

原创 Optional的使用详解

如果list集合为空创建一个空对象集合赋值给newList,保证list集合永远不为空,也就避免了空指针异常。这样写其实功能上没有任何问题,但是如果需要判断的字段比较多,或者本身已经嵌套了多重循环或者判断,再加上这一层判断,代码就会变得非常臃肿,可读性非常差。其本质就是一系列三目运算,首先执行ofNullable()方法,如果T对象为空,执行empty()方法;下面我们看看具体如何使用,isPresent和orElse已经在上面的代码中有所体现,下面我们看看map是怎么使用的。

2023-05-05 15:50:38 625

原创 解决:java: 警告: 源发行版 17 需要目标发行版 17

将 Settings --> Build, Execution, Deployment --> Complier --> Java Complier 配置下的 Project bytecode version: 17 改为 与 项目使用的 JDK 版本一样.java: 警告: 源发行版 17 需要目标发行版 17。下面我们还有一步,修改pom文件的java编译版本。

2023-05-05 15:46:58 17574 2

原创 解决mac系统mkdir命令不可用的问题

如果没删除成功,可以尝试直接使用rm -rf命令将这个文件夹删除即可,然后再试试mkdir命令,就会发现可以用啦。他会在你的主目录下创建一个disabled_shell_files文件夹。然后经过我的各种尝试终于给解决了,所以到这儿记录一下。可以通过上面这个命令切换到你的主目录下。1.选择shell->新建命令。在弹出的对话框里面输入。

2023-05-05 14:46:12 1160

原创 Mac 系统:zsh: command not found: pip解决方法

mac zsh: command not found: pip解决方法。

2023-04-28 09:57:52 7027 3

原创 Mac使用命令行工具解压和压缩rar文件

目前在Mac电脑里支持解压缩的格式主要有:zip、gz等,但是还不支持rar格式的文件,接下来带着大家学习一下如何解压缩rar格式文件。

2023-04-26 14:48:39 3778

原创 mac在终端中使用vscode打开文件

我们都知道使用open命令 + 指定文件(文件夹)便可打开文件,但是mac自带的文件应用不如vscode好用,如何直接使用一个命令采用vscode的方式来打开指定文件呢?

2023-04-26 11:21:17 2594

原创 RabbitMQ 保证消息不丢失的几种手段

我们通过分析消息从生产者发送消息到消费者消费消息的全过程,得出了消息可能丢失的几种场景,并给出了相应的解决方案,如果需要保证消息在整条链路中不丢失,那就需要生产端、mq自身与消费端共同去保障。生产端:对生产的消息进行状态标记,开启confirm机制,依据mq的响应来更新消息状态,使用定时任务重新投递超时的消息,多次投递失败进行报警。mq自身:开启持久化,并在落盘后再进行ack。如果是镜像部署模式,需要在同步到多个副本之后再进行ack。

2023-04-16 23:07:30 3984

原创 好用到爆的windows文件检索工具--Everything

如果你的电脑是windows系统,那么这款软件强烈推荐大家安装=>Everything,他可以帮助你快速的检索的磁盘里的文件,话不多说,开始安装。

2023-04-06 16:52:41 646

原创 基于Canal的Mysql&Redis数据同步实现

我们在做mysql与redis的数据同步时,往往采用的是代码层实现,或者通过等缓存框架。但是仍然有某些场景,比如说原项目无源码,或者不能进行二开时,就需要独立的第三方来实现数据同步。我们需要一种无代码入侵式的数据同步,完全由第三方组件管理。这就需要借助canal来实现mysql到redis的数据同步canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB。

2023-04-06 13:49:24 1635 1

原创 Canal安装教程

本文将详细介绍Canal在docker环境和windows环境下的安装教程由于同步是基于binlog实现的,所以要先在mysql中开启binlog。

2023-03-12 21:34:19 2134

原创 MySQL 数据同步到 Redis 缓存方案

为了减轻数据库的压力,我们一般会通过加入缓存的方式来解决,本着先查询缓存在查询数据库的原则,那么数据库中的数据如何写入缓存则成为首要问题。本文就以redis缓存为例带着大家一起了解一下数据同步的方案。binlog。

2023-03-12 18:20:03 1965

原创 解决Error error0308010Cdigital envelope routinesunsupported

出现这个错误是因为 node.js V17版本之后最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

2023-02-17 15:27:34 1227

分布式+链路追踪+skywaling+探针

分布式+链路追踪+skywaling+探针

2022-11-11

计算机网络第五版课后答案已经ip类型题目详解

里面的有第五版(谢希仁)微课版完整的课后答案以及ip类型的题目及其详解

2018-12-23

学生在线管理系统

使用bootStrap,ssm,jquery,excel导出等功能实现在线学生管理系统

2018-12-09

在线视频播放器

里面使用springboot以及bootstrap,video,js,bootstrap-box,在线翻译等主流技术搭建一个在线播放视频,音频的播放器,可以实现即时更新,即时切换,在线翻译,在线搜索资源等技术,里面有详细的文档说明次代码

2018-12-06

vue实现用户管理系统

里面有详细的步骤和页面设计的样式来使用vue实现用户管理系统

2018-11-18

java_I/O流的教程

里面有java流的详解----从入门到掌握,里面有详细的代码解释,也有详细的笔记教程,望采纳

2018-11-18

空空如也

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

TA关注的人

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