摘要: 问题 写了一个切面来处理被指定自定义注解标注的方法: @Slf4j @Aspect @Component @RequiredArgsConstructor public class MyAnnoAspect { private final HttpServletRequest request; @A 阅读全文
posted @ 2024-11-16 11:38 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 概念 过滤器即 Servlet 过滤器,参见 Servlet 过滤器入门示例。 拦截器(Interceptor)通常是由特定的框架提供的,不是 Java EE 标准的一部分。 Spring 提供了多种类型的拦截器,如方法拦截器(MethodInterceptor)和控制器拦截器(HandlerInt 阅读全文
posted @ 2024-11-16 10:35 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 简介及目录结构 Apache Tomcat 是一个 Servlet 容器,是应用(Java)服务器,可在其中部署 Java Web 应用。 Tomcat 的目录结构主要包括以下几个重要的文件夹和文件: apache-tomcat/ ├── bin/ # 启动和停止 Tomcat 的脚本 │ ├── 阅读全文
posted @ 2024-11-16 09:33 Higurashi-kagome 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 推荐阅读: Servlet 简介及入门示例 Tomcat 使用入门 Servlet 过滤器的作用 Servlet 过滤器用于在请求到达 Servlet 之前和响应返回客户端之前对请求和响应进行预处理和后处理。过滤器可以用于: 请求和响应的修改:可以修改请求和响应的内容。 日志记录:记录请求和响应的信 阅读全文
posted @ 2024-11-16 01:32 Higurashi-kagome 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 参考:What is a JavaBean exactly? JavaBean 是遵循以下约定的 Java 类: 所有属性都是私有的(使用 getter/setter)。 有公有的无参数构造函数。 实现 Serializable 接口。 之所以有这样的约定,是因为有一些类库是基于 JavaBean 阅读全文
posted @ 2024-11-07 00:03 Higurashi-kagome 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 原文:看懂 UML 类图和时序图 从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstract>>,表示车是一个抽象类; 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与 SUV 之间也是继承关系,它们之间的关系 阅读全文
posted @ 2024-11-06 00:38 Higurashi-kagome 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 原文:ApplicationContextAware 详解用法 当一个类实现了 ApplicationContextAware 接口之后,这个类就可以方便地获得 ApplicationContext 对象(Spring 上下文)。 Spring 容器在创建 Bean 之后,发现 Bean 实现了 A 阅读全文
posted @ 2024-11-02 13:17 Higurashi-kagome 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 参考:Servlet 是用来做什么的?Servlet 技术的特点、ChatGPT 简介 Servlet 是使用 Java 语言编写的运行在服务器端的程序。狭义的 Servlet 是指 Java 语言中的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 阅读全文
posted @ 2024-11-02 11:55 Higurashi-kagome 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 参考: 实现 EnvironmentAware 接口将配置文件中的属性放置到系统环境变量中 EnvironmentAware 接口的作用 EnvironmentAware 接口定义: public interface EnvironmentAware extends Aware { void set 阅读全文
posted @ 2024-11-02 10:59 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 注:建议先阅读 Java 异常分类 Java 中使用自定义异常类,一般是继承 Exception 或者它的某个子类。如果父类是 RuntimeException 或它的某个子类,则自定义异常也是未受检异常;如果是 Exception 或 Exception 的其他子类,则自定义异常是受检异常。 Ja 阅读全文
posted @ 2024-10-31 23:09 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 总结自:《Java 核心技术第 10 版》 下图是 Java 异常层次结构图: 所有的异常都是由 Throwable 继承而来(注意 Throwable 是类而不是接口),Error 和 Exception 是 Throwable 的直接子类。 Error 类用于描述 Java 运行时系统的内部错误 阅读全文
posted @ 2024-10-31 23:06 Higurashi-kagome 阅读(15) 评论(0) 推荐(0) 编辑
摘要: SLF4J MDC(Mapped Diagnostic Context)可以帮助在日志中添加上下文信息,从而更好地跟踪和调试应用程序。MDC 允许你将特定于线程的键值对存储在日志上下文中,便于在日志中输出相关信息。 使用步骤 添加依赖:确保你的项目中已经包含了 SLF4J 和相关的日志实现(如 Lo 阅读全文
posted @ 2024-10-27 16:48 Higurashi-kagome 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 基于:SLF4J 框架源码中是如何实现双重锁的? 当我们使用 SLF4J 时,通常通过如下代码获取对应的 Logger: Logger logger = LoggerFactory.getLogger(NoBindingTest.class); 在 LoggerFactory 的 getLogger 阅读全文
posted @ 2024-10-26 13:50 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 原文:Java 单例模式的 7 种写法中,为何用 Enum 枚举实现被认为是最好的方式? 1、懒汉(线程不安全) public class Singleton { private static Singleton instance; private Singleton() {} // 私有构造函数 阅读全文
posted @ 2024-10-26 13:06 Higurashi-kagome 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 什么是适配器模式 适配器模式中,适配器包装不兼容指定接口的对象,来实现不同兼容指定接口。 SLF4J 中的适配器模式 SLF4J 是一个日志门面系统,其中提供了统一的 Logger 等接口,许多框架都会面向 SLF4J 打印日志,这样就不会和具体的日志框架耦合在一起,框架使用者也就能够很方便地在不同 阅读全文
posted @ 2024-10-26 11:34 Higurashi-kagome 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 总结自:《Head First 设计模式》 简介 适配器的作用是使原本两个不兼容的系统能够兼容起来,比如电源转接口就是一种适配器: 示例 假设有一个 Duck(鸭子)接口,其中有 quack(呱呱叫)和 fly 方法: public interface Duck { void quack(); vo 阅读全文
posted @ 2024-10-26 10:05 Higurashi-kagome 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 基于以下内容总结:从门面模式到 Slf4j、10 分钟讲清楚 Java SLF4J,Java 日志框架的扛把子,从原理到实践 写后端接口的时候,先写一个 Service 接口,这个 Service 接口的实现中可能会调用多个其他 Service 或 Mapper 方法来实现某个业务,对于 Contr 阅读全文
posted @ 2024-10-25 23:22 Higurashi-kagome 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 原文:Java SPI 机制详解 在面向对象的设计原则中,一般推荐模块之间基于接口编程,通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类,就违反了开闭原则。如果需要替换一种实现,就需要修改代码。 为了实现在模块装配的时候不用在程序里面动态指明,这就需要一种服务发 阅读全文
posted @ 2024-10-25 23:21 Higurashi-kagome 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 原文:一个著名的日志系统是怎么设计出来的 1 前言 Java 帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从 C 和 C++ 领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能:输出日志。 对于这一点,IO 大臣其实非常清楚,日志是个很重要的东西,因为程序运行起来以后 阅读全文
posted @ 2024-10-23 23:32 Higurashi-kagome 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 总结自:BV15k4y1k7Ep 简介 一般在开发过程中: 生产者工程: application.yml 文件配置 RabbitMQ 相关信息; 在生产者工程中编写配置类,用于创建交换机和队列,并进行绑定; 注入 RabbitTemplate 对象,通过 RabbitTemplate 对象发送消息到 阅读全文
posted @ 2024-10-19 15:58 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 总结自:BV15k4y1k7Ep 模式说明 Topic类型与Direct相比,都是可以根据Routing key把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key的时候使用通配符! Topic类型的Routing key一般都是由一个或多个单词组成,多 阅读全文
posted @ 2024-10-19 12:19 Higurashi-kagome 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 总结自:BV15k4y1k7Ep 模式说明 和消费订阅模式相比,路由模式特点: 交换机的类型为 Direct。 队列与交换机绑定时,要指定一个Routing key(路由 key)。 消息的发送方在向 Exchange 发送消息时,也必须指定消息的Routing key。 Exchange 不再把消 阅读全文
posted @ 2024-10-19 11:38 Higurashi-kagome 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 总结自:BV15k4y1k7Ep 交换机 订阅模式示例图: 在简单模式和工作队列模式中,只有 3 个角色: P:生产者,也就是要发送消息的程序。 C:消费者,消息的接受者,会一直等待消息到来。 Queue:消息队列,图中红色部分。 而在订阅模型中,多了一个 Exchange 角色,而且工作过程略有变 阅读全文
posted @ 2024-10-19 10:31 Higurashi-kagome 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 总结自:BV15k4y1k7Ep 模式说明 Work queues与简单模式相比,多了一个或一些消费端,多个消费端共同消费同一个队列中的消息。消费者之间是竞争的关系。 对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度。 代码 Work queues与简单模式的代码是几乎一样的,可以完全复 阅读全文
posted @ 2024-10-19 00:48 Higurashi-kagome 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 首先要有个阿里云账号,可到阿里云登录页注册并登录。 登录后访问短信服务快速学习和测试,其中有逐步介绍如何发送短信: 新增资质 新增资质相当于进行实名认证,资质是申请签名的实名化信息。 申请签名 签名是短信中能代表发送者属性的字段。一般就是公司名字。发送短信时,签名会附加到短信开头。 申请模板 短信是 阅读全文
posted @ 2024-10-16 21:09 Higurashi-kagome 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 原文:MySQL 唯一索引的字段值允许多个 NULL 值存在吗 结论:MySQL innoDB 引擎,设置了唯一索引的列,不仅允许 NULL 值存在,而且允许多个 NULL 值存在。 示例:字段 userCardNum 添加了唯一索引。 证实是允许存在的多个 NULL 值数据的: 解释:因为 NUL 阅读全文
posted @ 2024-10-15 00:02 Higurashi-kagome 阅读(43) 评论(0) 推荐(0) 编辑
摘要: ProcessEngineConfiguration 和 ProcessEngine ProcessEngineConfiguration:流程引擎配置类。 ProcessEngine:流程引擎。 ProcessEngineConfiguration 封装 ProcessEngine 的配置信息,P 阅读全文
posted @ 2024-10-14 22:56 Higurashi-kagome 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 鼠标左键不灵了,需要用力按才有用。所以用 AutoHotkey 把右 Ctrl 键映射为鼠标左键临时处理一下: #Requires AutoHotkey v2.0 RCtrl::LButton 注意脚本需要 V2 版本的 AutoHotkey。 参考: 重映射按键 (键盘,鼠标和控制器) 按键列表( 阅读全文
posted @ 2024-10-10 23:55 Higurashi-kagome 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 原文:一文理清 nginx 中的 location 配置(系列一) 参考:Nginx location 能否匹配到问号里的参数? 另:可在 nginx.viraptor.info 上测试 location 匹配 前言 location 指令是 nginx 中最关键的指令之一,location 指令的 阅读全文
posted @ 2024-10-09 23:56 Higurashi-kagome 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 基于:xxl-job 项目的默认的用户名密码 用户表为 xxl_job_user,里边只有一条记录,其中的密码是 Md5 加密算法生成的: 要重置密码为 123456 只需要将记录的 password 值设置为 123456 Md5 加密后的值(32 位小写),也就是 e10adc3949ba59a 阅读全文
posted @ 2024-10-03 22:42 Higurashi-kagome 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 原文:XXL-JOB安装及使用教程(保姆级教程) 前言 XXL-JOB 是一个可以在 WEB 界面配置执行定时任务的中间件,支持分布式服务调用。XXL-JOB 本身是一个基于 SpringBoot 的 Java WEB 程序,可以部署多个节点组成集群,我们可以通过下载 GitHub 源码进行部署。 阅读全文
posted @ 2024-10-03 22:29 Higurashi-kagome 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 先运行ip a查看网卡: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00: 阅读全文
posted @ 2024-10-02 20:36 Higurashi-kagome 阅读(26) 评论(0) 推荐(0) 编辑
摘要: git revert 撤销某次操作,并且会把这次撤销作为一次最新的提交。 假设 Git commit 历史为 A - B - C,此时想要撤回 commit B,可以使用 revert 命令。 执行git revert HEAD^后(HEAD^指向 B),会生成一个新的 commit 记录(命名为 阅读全文
posted @ 2024-10-01 23:40 Higurashi-kagome 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 原文:linux 安装 docker-compose(官网教程) 要在 Linux 上安装 Docker Compose 命令,可以按照以下步骤进行操作: 下载 Docker Compose 的可执行文件。可以使用以下命令下载最新版本: sudo curl -L "https://github.co 阅读全文
posted @ 2024-10-01 23:10 Higurashi-kagome 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 基于:git reset 命令详解(一)—— Git 学习笔记 07 建议先阅读 Git 工作区、暂存区和版本库、Git 分支本质及与 commit、HEAD、tag 的关系。 简介 git reset命令是用来将当前 branch 重置到另外一个 commit 的,也就是用来回退到指定 commi 阅读全文
posted @ 2024-09-28 10:27 Higurashi-kagome 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 基于: Git - Git 是什么? Git - 分支简介 Git - 打标签 本文适合对 Git 有一定使用经验的读者,包括但不限于对分支、分支合并、提交、标签等的了解。 快照 在介绍 Git 分支前,需要知道什么是 commit 对象,介绍 commit 对象前,需要先了解 Git 保存数据的方 阅读全文
posted @ 2024-09-28 01:25 Higurashi-kagome 阅读(71) 评论(0) 推荐(0) 编辑
摘要: Arthas 是一款线上监控诊断产品,用来做线上问题排查。详细介绍见官方文档。 安装并启动 可访问外网时 下载 arthas-boot.jar,java -jar arthas-boot.jar启动程序: $ java -jar arthas-boot.jar * [1]: 35542 [2]: 7 阅读全文
posted @ 2024-09-26 23:19 Higurashi-kagome 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 基于 说清楚 PO、DTO、VO、BO 与使用场景 简介 PO(Persistent Object)/DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。 DTO(Data Transfer Object):数据传输对象。Service 或 Manage 阅读全文
posted @ 2024-09-26 00:09 Higurashi-kagome 阅读(84) 评论(0) 推荐(0) 编辑
摘要: Workspace:工作区。编写代码的区域,即工作目录(Working Directory)。 Repository:仓库区(或本地仓库、版本库)。用来保存 commit,一个 commit,就是工作区的一个历史版本。 Index / Stage:索引(或暂存区)。用来暂存生成 commit 所需的 阅读全文
posted @ 2024-09-22 09:19 Higurashi-kagome 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 合并时冲突 合并时存在冲突,冲突未解决或者解决到一半不想解决了,或者解决完冲突了但是还没提交,想要回退到合并前的状态,使用git merge --abort来退出合并。 该命令会尝试恢复到合并前的状态。注意在合并前,最好把改动暂存或者提交,总之就是尽可能保持工作目录干净再合并,否则可能会有些情况不能 阅读全文
posted @ 2024-09-20 20:24 Higurashi-kagome 阅读(103) 评论(0) 推荐(0) 编辑