摘要:
自定义注解实现日志记录 引入所需的依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>版本号</version> <r 阅读全文
posted @ 2024-11-05 21:31
CH_song
阅读(91)
评论(0)
推荐(0)
摘要:
自定义注解实现权限校验 引入所需的依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>版本号</version> <r 阅读全文
posted @ 2024-11-05 21:30
CH_song
阅读(93)
评论(0)
推荐(0)
摘要:
线程-ThreadLocal ThreadLocal 是 Java 中的一个类,提供了一种创建线程局部变量的机制。每个访问 ThreadLocal 变量的线程都有一个独立的、初始化的变量副本。 这可以避免线程间的同步问题,因为每个线程只能访问自己的ThreadLocal变量。通过ThreadLoca 阅读全文
posted @ 2024-11-05 21:30
CH_song
阅读(36)
评论(0)
推荐(0)
摘要:
新特性lambda & stream Lambda(简化函数式接口生成的匿名内部类) Java的函数式编程是一种编程范式,它强调使用函数作为一等公民(first-class citizens),即函数可以像其他数据类型一样被赋值给变量、作为参数传递给其他函数或作为其他函数的返回值。 在Java中,函 阅读全文
posted @ 2024-11-05 21:30
CH_song
阅读(29)
评论(0)
推荐(1)
摘要:
druid配置详解 属性 说明 建议值 url 数据库的jdbc连接地址。一般为连接oracle/mysql。示例如下: mysql : jdbc:mysql://ip:port/dbname?option1&option2&… oracle : jdbc:oracle:thin:@ip:port: 阅读全文
posted @ 2024-11-05 21:29
CH_song
阅读(55)
评论(0)
推荐(0)
摘要:
Mybatis-Plus 的修改策略 Mybatis-Plus update strategy 使用Mybatis-Plus提供的更新方法时,若实体中的字段为null,默认情况下,最终生成的update语句中,不会包含该字段。但是如果为空串时还是会操作.若想改变默认行为,可做以下配置。 全局配置 在 阅读全文
posted @ 2024-11-05 21:26
CH_song
阅读(652)
评论(0)
推荐(0)
摘要:
密码处理 用户的密码通常不会直接以明文的形式保存到数据库中,而是会先经过处理,然后将处理之后得到的"密文"保存到数据库,这样能够降低数据库泄漏导致的用户账号安全问题。 密码通常会使用一些单向函数进行处理,如下图所示 常用于处理密码的单向函数(算法)有MD5、SHA-256等,Apache Commo 阅读全文
posted @ 2024-11-05 21:26
CH_song
阅读(28)
评论(0)
推荐(0)
摘要:
枚举类处理 如果传递枚举类型则使用@EnumVaLue获取其中的数据当作查询的参数 @EnumValue 当对象转化为JSON串时如果遇到枚举类型则使用其中的值当作JSON @JsonValue public enum ItemType implements BaseEnum { APARTMENT 阅读全文
posted @ 2024-11-05 21:24
CH_song
阅读(32)
评论(0)
推荐(0)
摘要:
接口文档[Knife4j] 接口文档是描述 API 接口的详细文档,通常用于沟通开发、测试和使用 API 的团队。一个好的接口文档不仅能够让开发人员明确接口的使用方法,还可以帮助使用者理解 API 的功能和预期行为。 Knife4j 使用,参考:https://doc.xiaominfo.com/d 阅读全文
posted @ 2024-11-05 21:24
CH_song
阅读(297)
评论(0)
推荐(0)
摘要:
分布式锁实现 分布式锁主流的实现方案: 基于数据库实现分布式锁 基于缓存( Redis等) 基于Zookeeper 每一种分布式锁解决方案都有各自的优缺点: 高性能:Redis最高 可靠性:zookeeper最高 分布式锁的关键是多进程共享的内存标记(锁),因此只要我们在Redis中放置一个这样的标 阅读全文
posted @ 2024-11-05 21:24
CH_song
阅读(69)
评论(0)
推荐(0)
摘要:
反射 java.lang.Class类 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 要想解剖一个类,必须先要获取到该类的Class对象 阅读全文
posted @ 2024-11-05 21:23
CH_song
阅读(22)
评论(0)
推荐(0)
摘要:
支付宝支付 官网地址:https://open.alipay.com/ 支付宝(中国)网络技术有限公司 [1] 是国内的第三方支付平台,致力于提供“简单、安全、快速”的支付解决方案 [2] 。支付宝公司从2004年建立开始,始终以“信任”作为产品和服务的核心。旗下有“支付宝”与“支付宝钱包”两个独立 阅读全文
posted @ 2024-11-05 21:23
CH_song
阅读(187)
评论(0)
推荐(0)
摘要:
支付宝退款功能 参考地址:https://opendocs.alipay.com/open/4b7cc5db_alipay.trade.refund?scene=common&pathHash=d98b006d 1、引入依赖 <dependency> <groupId>com.alipay.sdk< 阅读全文
posted @ 2024-11-05 21:22
CH_song
阅读(104)
评论(0)
推荐(0)
摘要:
阿里云手机验证码 在Java中使用阿里云的短信服务发送手机号验证码,你需要使用阿里云提供的SMS SDK。 添加依赖 <dependency> <groupId>com.aliyun.dysmsapi</groupId> <artifactId>dysmsapi</artifactId> <vers 阅读全文
posted @ 2024-11-05 21:22
CH_song
阅读(42)
评论(0)
推荐(0)
摘要:
多线程 并发与并行(了解) 并行(parallel):指多个事件任务在同一时刻发生(同时发生)。指在同一时刻,有多条指令在多个处理器上同时执行。单核CPU同一时刻只能处理一条指令,所以单核CPU做不到并行处理。 并发(concurrency):指两个或多个事件在同一个微小的时间段内发生。指在同一个时 阅读全文
posted @ 2024-11-05 21:21
CH_song
阅读(37)
评论(0)
推荐(0)
摘要:
Converter 在Spring3中引入了一个Converter接口,它支持从一个Object转为另一个Object。除了Converter接口之外,实现ConverterFactory接口和GenericConverter接口也可以实现我们自己的类型转换逻辑。 Converter接口 Conve 阅读全文
posted @ 2024-11-05 21:20
CH_song
阅读(363)
评论(0)
推荐(0)
摘要:
SpringBoot-定时任务 在Spring Boot中实现定时任务相对简单,主要可以通过使用@Scheduled注解来完成。 添加依赖:确保你的pom.xml中包含Spring Boot Starter。通常情况下,Spring Boot Web Starter已经包含了所需的依赖。 <depe 阅读全文
posted @ 2024-11-05 21:20
CH_song
阅读(54)
评论(0)
推荐(0)
摘要:
Spring AMQP基本API 1. RabbitTemplate【发接消息】 RabbitTemplate 是 Spring AMQP 的核心 API,用于发送和接收消息。它提供了多种方法来发送消息到指定的交换机和路由键。 发送消息:将消息发送到指定的交换机和路由键。 接收消息:从指定的队列中接 阅读全文
posted @ 2024-11-05 21:19
CH_song
阅读(72)
评论(0)
推荐(0)
摘要:
redis缓存常见问题及解决方案 1、缓存穿透 缓存穿透: 是指查询一个不存在的数据,由于缓存无法命中,将去查询数据库,但是数据库也无此记录,并且出于容错考虑,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要 阅读全文
posted @ 2024-11-05 21:19
CH_song
阅读(239)
评论(0)
推荐(0)
摘要:
MySql与Redis 1.Redis和MySQL如何保持数据一致性 数据同步可以有延时 一、延时双删策略 在写库前后都进行redis.del(key)操作,并且设定合理的超时时间。 public void write( String key, Object data ){ redis.delKey 阅读全文
posted @ 2024-11-05 21:18
CH_song
阅读(17)
评论(0)
推荐(0)
摘要:
Minio 部署MinIO 在server01部署MinIO,安装方式采用rpm离线安装,具体步骤可参考官方文档。 获取MinIO安装包 下载地址如下:https://dl.min.io/server/minio/release/linux-amd64/archive/minio-202308092 阅读全文
posted @ 2024-11-05 21:18
CH_song
阅读(173)
评论(0)
推荐(0)
摘要:
JWT工具类 一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷与签名。前两部分需要经过 Base64 编码,后一部分通过前两部分 Base64 编码后再加密而成。具体内容可参考官方文档。 头部(Header)头部用于描述关于该 JWT 的最基本的信息 载荷(playload)载荷就是存 阅读全文
posted @ 2024-11-05 21:17
CH_song
阅读(622)
评论(0)
推荐(0)
摘要:
JackSon的忽略注解 在本教程中,我将通过一个示例向您展示如何在使用 Jackson @JsonIgnore、@JsonIgnoreProperties 和 @JsonIgnoreType注释将对象序列化为 JSON 时忽略某些字段。这些注解用于忽略 JSON 序列化和反序列化中的逻辑属性 @J 阅读全文
posted @ 2024-11-05 21:17
CH_song
阅读(206)
评论(0)
推荐(0)
摘要:
JSON字符串处理 jackson Jackson是一个用于处理JSON数据的Java库,它提供了将Java对象转换为JSON格式和将JSON格式转换为Java对象的功能。 添加依赖:如果你使用Maven,可以在pom.xml中添加以下依赖: <dependency> <groupId>com.fa 阅读全文
posted @ 2024-11-05 21:17
CH_song
阅读(46)
评论(0)
推荐(0)
摘要:
EasyExcel 导入导出 是阿里巴巴开源的一个 Excel 处理工具,专门用于简化 Excel 文件的读写操作。 1、 添加 Maven 依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactI 阅读全文
posted @ 2024-11-05 21:16
CH_song
阅读(59)
评论(0)
推荐(0)
摘要:
EasyCaptcha 在 Java 中实现 EasyCaptcha 工具类可以生成验证码,使用图像或简单的数学问题进行验证。官方文档。 引入依赖 <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</ 阅读全文
posted @ 2024-11-05 21:15
CH_song
阅读(154)
评论(0)
推荐(0)
摘要:
接口优化方案 (1)程序本身,减少不必要的条件判断、循环 (2)减少数据库的交互次数,以及每个sql查询的数据量(列数和行数越少越好) (3)提高sql的性能,通过建立合适的索引 (4)使用java8的stream流提高集合的遍历操作的效率 (5)引入缓存,从redis中加载数据的效率高于mysql 阅读全文
posted @ 2024-11-05 21:15
CH_song
阅读(79)
评论(0)
推荐(0)
摘要:
CORS(跨域资源共享) 跨域问题主要是由于浏览器的同源策略(Same-Origin Policy)引起的。 同源策略要求,只有当网页和其请求的资源来自同一个源(即协议、域名和端口号都相同)时,浏览器才允许网页访问这些资源。如果网页试图访问一个不同源的资源,就会遇到跨域问题。 不同的协议:如果一个网 阅读全文
posted @ 2024-11-05 21:14
CH_song
阅读(69)
评论(0)
推荐(0)
摘要:
线程池(重点) 线程池(Thread Pool)是一种多线程处理形式,处理过程中将任务提交给线程池,线程池中的线程会异步地执行这些任务。线程池的主要目的是复用线程,减少线程的创建和销毁开销,提高程序的响应速度和吞吐量。 在Java中,java.util.concurrent 包提供了对线程池的支持, 阅读全文
posted @ 2024-11-05 21:12
CH_song
阅读(66)
评论(0)
推荐(0)
摘要:
JUC工具 JUC(Java Util Concurrent)是Java提供的一组并发工具和类,主要用于处理多线程编程中的常见问题。JUC包的主要目标是促进并发编程,并提供更简洁和高效的方法来管理线程、锁、执行任务等。 并发工具类 在JUC并发包里提供了几个非常有用的并发容器和并发工具类,供我们在多 阅读全文
posted @ 2024-11-05 21:12
CH_song
阅读(25)
评论(0)
推荐(0)
摘要:
并发容器类 这些类专为支持并发环境中的高效数据访问和操作而设计。与传统的容器类相比,并发容器类具有更好的线程安全性和性能。在使用多线程环境时,通常推荐使用这些并发容器以避免手动加锁和同步操作。 ConcurrentHashMap 特点:一个线程安全的哈希表,支持高效的并发访问。通过分段锁定(Segm 阅读全文
posted @ 2024-11-05 21:11
CH_song
阅读(25)
评论(0)
推荐(0)
摘要:
JUC简述 JUC实际上就是我们对于jdk中java.util.concurrent工具包的简称。这个包下的类都是和 **Java多线程开发 **相关的类。 线程与进程 程序:为了完成某个任务和功能,选择一种编程语言编写的一组指令的集合。 软件:1个或多个应用程序+相关的素材和资源文件等构成一个软件 阅读全文
posted @ 2024-11-05 21:11
CH_song
阅读(160)
评论(0)
推荐(0)
摘要:
字节码文件 字节码文件是指一种中间代码格式,它通常是被编译后的程序代码,以便于在虚拟机或特定运行环境中执行。字节码的主要目的是实现跨平台性和提高执行效率。 字节码的优点包括 平台独立性:字节码可以在任何支持相应虚拟机的操作系统上运行。 安全性:在虚拟机中运行的字节码可以提供沙箱安全性,限制代码的执行 阅读全文
posted @ 2024-11-05 21:10
CH_song
阅读(237)
评论(0)
推荐(0)
摘要:
线上问题定位 1、CPU飙升问题排查 1、找到对应java进程的id jps -l 查询当前服务器上所有的java进程id,然后通过:top命令查看当前服务器上的各个进程资源占用情况。cpu占用情况。 2、使用jdk提供的工具 jstack,将指定的进程内的各个线程的堆栈日志输出到一个指定文件中。 阅读全文
posted @ 2024-11-05 21:10
CH_song
阅读(27)
评论(0)
推荐(0)
摘要:
jvm JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 分为三个步骤: 1、编写Java源代码文件。 2、使用Java编译器(javac命令)将源代码编译成Java字节码文件。 3、使用 阅读全文
posted @ 2024-11-05 21:09
CH_song
阅读(78)
评论(0)
推荐(0)
摘要:
Gateway(网关)组件 官网:https://docs.spring.io/spring-cloud-gateway/docs/4.0.x/reference/html/ springcloud中提供了一个组件Gateway,用于搭建微服务的网关。 网关处于客户端(前端)和微服务端之间,作为前端 阅读全文
posted @ 2024-11-05 21:09
CH_song
阅读(135)
评论(0)
推荐(0)
摘要:
sentinel(微服务限流) 官网地址:https://sentinelguard.io/zh-cn/ 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是由阿里巴巴开源的一款流量防护组件,Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服 阅读全文
posted @ 2024-11-05 21:08
CH_song
阅读(232)
评论(0)
推荐(0)
摘要:
SpringCloud 微服务架构 随着互联网的不断发展,软件系统的架构也是在不断的更新。由原先的单体架构逐渐演变成分布式系统架构,再到目前非常主流的微服务系统架构。 分布式系统架构是指将一个软件系统分割成多个独立的服务,并且这些服务可以在不同的计算机或服务器上运行,并通过网络进行通信。 微服务系统 阅读全文
posted @ 2024-11-05 21:08
CH_song
阅读(43)
评论(0)
推荐(0)
摘要:
延迟队列 延迟队列存储的对象肯定是对应的延时消息,所谓”延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 场景:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行取消处理。这时就可 阅读全文
posted @ 2024-11-05 21:06
CH_song
阅读(51)
评论(0)
推荐(0)
摘要:
消息超时 TTL 全称 Time To Live(存活时间/过期时间)。 当消息到达存活时间后,还没有被消费,会被自动清除。 RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。 具体实现 一、队列层面设置 1、设置 别忘了设置绑定关系: 2、测试 不启动消费端程序 阅读全文
posted @ 2024-11-05 21:06
CH_song
阅读(48)
评论(0)
推荐(0)
摘要:
消费端限流 生产者发送10000个消息 消费端并发能力上限:同时处理1000个请求 设定: 每次最多从队列取回1000个请求 生产者端代码 @Test public void testSendMessage() { for (int i = 0; i < 100; i++) { rabbitTe 阅读全文
posted @ 2024-11-05 21:06
CH_song
阅读(18)
评论(0)
推荐(0)
摘要:
死信队列 死信队列,英文缩写:DLX 。DeadLetter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就是DLX。 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 阅读全文
posted @ 2024-11-05 21:05
CH_song
阅读(172)
评论(0)
推荐(0)
摘要:
消息的可靠性投递 问题引入 正常的下单流程 故障情况1: 消息没有发送到消息队列上,后果:消费者拿不到消息,业务功能缺失,数据错误 故障情况2: 消息成功存入消息队列,但是消息队列服务器宕机了,原本保存在内存中的消息也丢失了,即使服务器重新启动,消息也找不回来了。后果:消费者拿不到消息,业务功能缺失 阅读全文
posted @ 2024-11-05 21:05
CH_song
阅读(24)
评论(0)
推荐(0)
摘要:
消息幂等性保障 幂等性指一次和多次请求某一个资源,对于资源本身应该具有同样的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。 在MQ中指,消费多条相同的消息,得到与消费该消息一次相同的结果 消息幂等性保障 乐观锁机制 @Component public class MyM 阅读全文
posted @ 2024-11-05 21:03
CH_song
阅读(24)
评论(0)
推荐(0)
摘要:
RabbitMQ工作模式 RabbitMQ提供了多种工作模式:简单模式,work模式 ,Publish/Subscribe发布与订阅模式,Routing路由模式,Topics主题模式等 官网对应模式介绍:https://www.rabbitmq.com/getstarted.html 1、简单模式 阅读全文
posted @ 2024-11-05 21:02
CH_song
阅读(145)
评论(0)
推荐(0)
摘要:
创建所有常用镜像和容器 1、安装docker Docker安装 官网安装步骤: https://docs.docker.com/engine/install/centos/ docker 分为 CE(Community Edition: 社区版,免费) 和 EE(Enterprise Edition 阅读全文
posted @ 2024-11-05 21:01
CH_song
阅读(49)
评论(0)
推荐(0)
摘要:
docker Docker 是一个开源平台,旨在自动化应用程序的部署、扩展和管理。它利用容器技术提供了一种轻量级的虚拟化方式,使得开发者能够将他们的应用及其依赖项打包成一个可移植的容器,这样无论在什么环境中,应用都能以相同的方式运行。 docker官网地址:https://www.docker.co 阅读全文
posted @ 2024-11-05 21:00
CH_song
阅读(85)
评论(0)
推荐(0)

浙公网安备 33010602011771号