Java AOP 操作日志
前言在原先的开发过程中,因项目较小所以针对日志的输出并无太多要求,只是单纯的使用 @Slf4j 注解进行日志输出。
但是在最近,项目出现了报错,在通过日志记录排除问题时出现了较尴尬的场景。因为使用人数的增加,接口的调用可能会出现多并发的情况,导致日志虽然都有输出,但是日志却是混乱、串行的。
虽然能用,但是排查问题起来较为麻烦。所以今天分享通过 MDC + AOP 的方式,为日志加上ID,方便我们后续进行筛选。
示例代码1.引入 AOP 依赖。
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>
2.创建日志切面。
123456789101112131415161718192021222324252627282930/** * @author XiaoDeng * @Date 2023/8/22 08:29 ...
IDEA插件推荐:Log Support 2
前言我们平时在项目开发中,需要输入日志,以便于后续出现问题时查询。
但是每次都需要编写时,往往都会添加这么一句代码
1private static final Logger log = LoggerFactory.getLogger(LogTest.class);
做着重复工作,不免有些麻烦。今天向大家推荐一款插件:Log Support2 ,它能够帮我们自动添加上该语句,我们只需要关注日志的输出即可。
插件安装1.打开IDEA设置,在 Plugins 中搜索:Log Support2 。
2.选择后点击 Install 进行安装。
3.完成安装后选择其他设置(Other Settings),找到 Log Support ,设置日志门面,这里我们设置 SLF4J。
4.另外进入编辑器(Editor),找到代码模版(Live Templates),我们将 AndroidLog 取消勾选。
插件使用完成上述安装设置后,我们在需要输出日志的地方,输入 logi 就会显示提示,我们按 Table 键即可。它会出现 log.info(“”) ,并且自动添加代码块:
1private s ...
SpringBoot + MinIO 开发壁纸API
前言利用 MinIO + SpringBoot 开发一个壁纸API。实现每次调用接口时都会随机返回一张壁纸图片,可用于博客文章封面展示。
项目依赖12345678910<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.0.3</version></dependency><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version></dependency>
Service层123456789101112131415package com.techhut.wallpaper.service;import io.minio.m ...
使用CloudFlare搭建OpenAI方向代理
很多小伙伴可能会使用香港的服务器部署,或者在国内部署(别在国内部署!),任何无法直连到 OpenAI 官网的服务器,都需要一个反向代理,这里提供两个最简单的反向代理配置方案,免费!
方法一(CloudFlare Worker )前提准备
一个 CloudFlare 账号。
一个域名,最好是绑定到 CloudFlare 的域名。
实现步骤1.登录网站:https://dash.cloudflare.com/ ,右上角切换语言。
2.点击Workers,点击创建服务。
3.给你的项目命名,然后点击右下角部署按钮,进行部署。
4.进入配置界面,点击编辑代码按钮。
5.将下述代码粘贴进去。
123456789101112131415161718async function handleRequest(request) { const url = new URL(request.url) const fetchAPI = request.url.replace(url.host, 'api.openai.com') // 添加跨域处理 const ...
使用Vercel无成本搭建ChatGPT镜像网站
搭建 ChatGPT 的方法有很多,但如果只是自己使用,专门去购买一台国外服务器有一些浪费了,本次将教大家如何使用 Vercel 无成本搭建自己的ChatGPT。
前提准备1.GitHub 账号 (GitHub可能需要魔法才能打开,网上也有一些其他办法,可以自行百度)
实现步骤项目创建1.登录 GitHub 。
2.创建一个新的项目。在上面输入你的项目名:chatgpt-web。
3.完成输入后点击按钮 Create a new repository ,进行项目创建。进入界面后拉到最底下,点击 Import code。
4.输入URL: https://github.com/xiaodeng262/chat-web.git ,这是我为大家准备好的代码。直接导入到你的项目即可。
5.输入 URL 后点击 Begin Import 开始导入。
6.完成导入后,点击下方的链接跳转至你的项目。
项目部署1.登录 Vercel ,这里可以使用你的 GitHub 进行登录。
2.完成登录,选择创建一个新的 Project 。
3.进入创建界面后,会出现刚才我们在GitHub上创建的 ...
React学习之Redux的使用
依赖安装1npm install @reduxjs/toolkit react-redux
其中 Redux Toolkit 是一个官方提供的用于简化和改进Redux开发体验的工具集。它提供了一组实用的函数和API,帮助开发者更轻松地编写Redux代码,并提供了一些约定和最佳实践,以减少样板代码并提高开发效率。
使用方法1.创建 Redux stroe。
12345import { configureStore } from '@reduxjs/toolkit'export default configureStore({ reducer: {}})
2.创建 Redux State Slice 。
在 Redux Toolkit 中,它允许我们在 reducers 写 “可变” 逻辑。它并不是真正的改变状态值,因为它使用了 Immer 库可以检测到“草稿状态“ 的变化并且基于这些变化生产全新的不可变的状态。
123456789101112131415161718192021222324252 ...
Java针对对象属性进行Copy映射
前言当涉及到对象之间的属性复制时,Apache BeanUtils和Spring BeanWrapper等库是常见的选择。然而,这些库在性能方面可能存在一些问题。在这种情况下,你可以考虑使用BeanCopier来进行属性复制,它是一个高性能的属性复制工具。下面我来为搭建演示了如何使用BeanCopier进行属性复制。
示例代码FieldGroupVO 对象
12345@Dataclass FieldGroupVO { private int id; private String name;}
FieldGroupBatchRequest 对象
12345@Dataclass FieldGroupBatchRequest { private int id; private String name;}
实现代码
1234567891011121314151617181920212223import net.sf.cglib.beans.BeanCopier;public class BeanCopierExampl ...
Vue读取Excel表格数据
依赖安装1npm install xlsx
示例代码前端样式123<el-upload action="" :auto-upload="false" :show-file-list="false" :on-change="readExcel"> <el-button slot="trigger" type="primary">批量导入</el-button></el-upload>
引入依赖网上很多教程是:
1import XLSX from 'xlsx'
但是这种写法在运行代码的时候会报错,找不到 XLSX 对应的方法,例如后面会用到的 read,下方为正确的引入方式:
1import * as XLSX from 'xlsx'
JavaScrip12345678910111213141516readExcel(file) { const fi ...
idea设置Class自动生产序列化提示
前言在 Java 的开发过程中,避免不了针对 Java 类的序列化操作,那么有没有什么办法自动回事呢刚才UID呢?答案是有的,今天我来教大家如何设置 idea,自动生成序列化提示。
操作步骤
按住ctrl+alt+s 或者 ile–>settings 打开 idea 设置。
在上方输入框输入Serializable,如下图所示,找到我框出来的选项进行打勾。
完成设置点击 OK -》Apply ,关闭设置窗口。
效果如下创建完新的类后,将光标放到类名上会出现下方提示,点击即可。
微信接入ChatGPT
前言ChatGPT的玩法有很多种,前两天教了大家如何搭建属于自己的ChatGPT项目,今天我来教大家如何将ChatGPT接入自己的VX,通过VX去与ChatGPT聊天。
提前准备
境外服务器(阿里云、腾讯云、华为云…)
ChatGPT KEY
一个已经实名并开通支付的微信号(为安全起见,建议使用自己的微信小号。并解绑绑定的银行卡)
实现步骤服务器购买今天,我也将演示如何在阿里云购买一台国外服务器。
打开阿里云网站。
选择 产品 -> 云服务器ECS
跳转页面后点击立即购买,前往购买页面。
如果大家只是想体验一次,并不想长期部署的话,我们选择按量付费,它是按使用时间进行扣费的,我们在使用完成后释放服务器即可,每小时几毛钱。因为我们要购买国外的,所以地域我们选择美国(硅谷),其他配置默认即可。
选择完配置,来到最下面,设置服务器的连接密码。这是之后我们使用运程工具时需要用到的。
设置完成后点击右侧确认下单按钮,下单购买。(按量购买需要账号余额有100元,这里大家可以充值,在使用完成后再将账户里面的钱提出来即可)
完成后,点击实例ID,跳转控制台,获 ...