文章
87
标签
106
分类
7
首页
统计
  • 标签
  • 分类
  • 归档
关于
暮色之狐
搜索
首页
统计
  • 标签
  • 分类
  • 归档
关于

暮色之狐

Spring事件监听在业务使用中的优化
发表于2025-12-18|后端
事件驱动的开发方式在业务系统开发中扮演着关键角色,若能妥善运用,将对系统的拓展性产生至关重要的影响。Spring框架对事件驱动进行了出色的封装,然而在实际业务应用中,我们发现了一些可优化的领域,因此针对这些问题进行了封装和优化工作。 Spring事件驱动的使用在电商订单创建的场景中,一旦订单成功创建,必须执行一系列附加的业务操作。这些操作包括向用户发送相关信息,并将订单信息同步到相关系统中。考虑到此场景的特点,事件驱动的开发方式被广泛认为是最合适的选择,因其能够在不对业务系统造成负面影响的前提下进行处理。 事件定义在订单创建事件中,可以定义包含订单对象以及与订单相关的属性,例如订单ID等。通过此事件,能够有效地传递订单信息,并为其他业务操作提供必要的数据依据。 12345678@Data@AllArgsConstructorpublic class CreateTradeEvent{ // 可以在此定义订单创建事件中的相关属性 private Trade trade; } 事件发布在订单成功创建之后,我们可以获取到订单实体或其他...
知其然知其所以然:Boolean类型命名规范
发表于2025-12-06|后端
对应阿里巴巴开发手册-编码规约-命名风格第9条,规约中写的比较模糊,之前只知道这样命名可能会存在问题,这里探索一下具体什么场景会存在问题。 对上面举的反例感觉有些怪,**基本数据类型Boolean isDeleted属性的Getter方法是isDeleted()**,手册应该写的有问题,印象中基本数据类型boolean是这样的,但是Boolean包装类型并不是如此,后面会对这里进行探索,坑很大。 实例深究JavaBean规范首先了解下JavaBean的规范,属性应该由一组读写方法(Getter/Setter)来访问,如果操作的字段为boolean类型,此时Getter不应命名为getXXX方法,而应该是isXXX,如果boolean类型的属性名以is开头,则将属性名中的is自动去除,例如boolean isSuccess的Getter是isSuccess(),但是对于Boolean类型的属性并没有明确的规范进行约定。 以下示例基于IDEA 2023.1 JDK11 布尔类型存在基本数据类型和包装类型,所以存在四种情况 1234private boolean succe...
Ubuntu 安装 Docker 操作手册
发表于2025-12-06|系统运维
官方操作手册 操作系统要求要安装 Docker 引擎,您需要以下 Ubuntu 版本的 64 位版本之一: Ubuntu Questing 25.10  Ubuntu 探索版 25.10 Ubuntu Plucky 25.04  Ubuntu 勇敢版 25.04 Ubuntu Noble 24.04 (LTS)  Ubuntu 贵族版 24.04 (LTS) Ubuntu Jammy 22.04 (LTS)  Ubuntu 甜蜜版 22.04 (LTS) Ubuntu 的 Docker Engine 与 x86_64(或 amd64)、armhf、arm64、s390x 和 ppc64le(ppc64el)架构兼容。 查看系统版本 1234567891011121314sharkidon@ubuntu:~$ cat /etc/os-releasePRETTY_NAME="Ubuntu 25.10"NAME="Ubuntu"VERSION_ID="25.10"VERSION="25.10 (Questing ...
Ubuntu修改国内源解决下载问题
发表于2025-11-27|系统运维
经常使用Ubuntu的同学都会遇到软件安装下载速度慢的情况,究其原因,是因为Ubuntu默认源的地址都在国外所导致,其实国内也有很多优秀的源,比如阿里源、中科大源、清华源、163源等,只需要简单的更换一下源,下载度立刻就上来了。 以下操作都必须在管理员模式下(使用su命令进入)进行,否则会执行失败 备份官方源 1mv /etc/apt/sources.list /etc/apt/sources.list.bk 下载第三方源文件更换 具体使用哪一个,可以自行测试按照效果选用 1234567891011#163源wget 'https://gitee.com/zaozuotime/ubuntu-update-source-file/raw/master/163.sources.list' -O /etc/apt/sources.list#阿里源wget 'https://gitee.com/zaozuotime/ubuntu-update-source-file/raw/master/aliyun.sources.list' -O /etc...
Tomcat进程残留问题
发表于2025-11-20|系统运维
运行shutdown.sh,tomcat停止, 但它的java进程还在, 不过状态为S(sleep), 不是运行时的R(Runnable), 如果不kill的话, 这种进程越来越多,导致JVM进程越来越多, 占据了大量的内存空间, 有可能使得新程序在启动JVM时由于内存不够用而无法启动。 kill强制杀死进程1ps -ef|grep java 若显示以下内容代表使用的java进程还存在,没有完全停止 12345root     50530     1 99 10:25 pts/0    00:00:45 /usr/local/java/jdk1.7.0_51/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-7.0.92/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dign...
Oracle特殊字符处理
发表于2025-11-20|后端
在Oracle数据库中,有时字段中会存入一些特殊字符(设计不当或者程序BUG),例如制表符、换行符以及回车符等,如果包含特殊字符是看不出来的,但是在进行字段关联的时候就会查不出数据。 特殊字符ASCII码定义: 制表符 chr(9)换行符 chr(10)回车符 chr(13) 去掉表中的特殊字符1update table set field=replace(field,chr(9), '') where instr(field, chr(9)) > 0 其他特殊字符也可以使用ascii函数查出ASCII码然后进行替换1select ascii('?') from dual;
Linux防火墙命令
发表于2025-11-20|系统运维
linux系统常用的防火墙分别是iptables和firewall防火墙,记录一下常用的命令 firewall防火墙12345678910111213141516171819202122232425#查看firewall服务状态systemctl status firewalld#查看firewall的状态firewall-cmd --state# 开启service firewalld start# 重启service firewalld restart# 关闭service firewalld stop#查看防火墙规则firewall-cmd --list-all # 查询端口是否开放firewall-cmd --query-port=8080/tcp# 开放80端口firewall-cmd --permanent --add-port=80/tcp# 移除端口firewall-cmd --permanent --remove-port=8080/tcp#重启防火墙(修改配置后要重启防火墙)firewall-cmd --reload 参数解释firwall-cmd:是Lin...
Windows系统SSH服务安装指南
发表于2025-11-20|系统运维
最近在做Jenkins的持续集成,公司的应用服务器大多是Windows系统,平时的运维主要是靠远程桌面的方式,为了使用Jenkins自动部署,需要在windows系统上安装SSH的服务,这里介绍微软官方的解决方案,详细介绍可以参考官网wiki。基于PowerShell的OpenSSH: https://github.com/PowerShell/Win32-OpenSSH/releases 安装步骤 进入链接下载最新的OpenSSH-Win64.zip,解压至 C:\Program Files\OpenSSH 打开cmd,进入 C:\Program Files\OpenSSH安装目录,执行以下命令 1powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 设置服务自动启动并启动服务 12sc config sshd start= autonet start sshd 修复主机端的文件权限,进入 C:\Program Files\OpenSSH,右键 FixHostFilePermissions.ps1【使...
Spring MVC接口监控必备:原始路径模板获取全解析
发表于2025-11-20|后端
问题场景原始路径模板:/users/{id}实际获取路径:/users/40000478 在监控和统计场景中,带具体参数值的路径会导致: 相同的接口被统计为多个不同的路径 难以进行有效的聚合分析 通知信息不够清晰直观 解决方案:Spring MVC路径模板获取Spring MVC在处理请求时,会在请求属性中存储丰富的映射信息。通过以下方式可以获取原始路径模板: 12345678910111213import org.springframework.web.servlet.HandlerMapping;import javax.servlet.http.HttpServletRequest;public class MonitoringUtils { public static String getOriginalPathPattern(HttpServletRequest request) { // 获取最佳匹配的路径模式,如 /ad/launch/task/sendConfirmEmail/{id...
Typora安装与配置
发表于2025-11-18|软件工具
Typora安装注册 先安装 typora-setup-x64-1.2.4.exe,并记录安装路径,下载地址 将 app.asar 替换到安装路径下的resources文件夹,替换掉app.asar文件 重启typora!!!!!! 输入邮箱、注册码,邮箱随便输入,注册码:E8Q9Y5-KXMTL5-7578SL-4S5XKS 仅供学习,请在下载24小时之内删除,请支持正版 图片上传文件 -> 偏好设置中设置图像相关配置,上传服务我使用的是PicGo-Core(command line),其实和PicGo-Core(app)一样,主要是我不想托盘中多出一个程序放在那里,看着不舒服 点击下载或更新,下载更新完成后,点击打开配置文件,配置图床的地址,有些版本能直接打开,有些无反应,需要手动进到指定的目录进行修改config.json文件 picgo 的默认配置文件为~/.picgo/config.json。其中~为用户目录。不同系统的用户目录不太一样。 linux 和 macOS 均为~/.picgo/config.json。 windows 则为C:\Users\你的用...
VSCode Python开发配置
发表于2025-11-18|软件工具
Jupyter VSCode中安装jupter插件 使用#%%分割代码块 .ipynb文件中使用jupyter vscode中运行jupter时提示需要安装ipykernel,安装报错可以执行以下脚本进行安装 打开工程:code + 路径 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipykernel Pylance Python › Analysis: auto format string Python › Analysis › Inlay Hints: Call Argument Names 选择partial Python › Analysis: Type Checking Mode 选择standard Python › Analysis: inlay Hints:Function Return Types IntelliCode CompletionsAI自动补全功能 Code Spell Checker单词拼写检查 Error lens错误检查
Spring事务代码重构实战:用事务回调优化业务逻辑
发表于2025-11-18|后端
背景在开发过程中我们更多的是使用Spring的声明式事务,也就是使用@Transactional注解。 需要注意的是@Transactional在很多种情况下失效,总结起来大概两种场景,第一没有经过Spring Bean的AOP代理,比如同一个bean中,一个方法调用另一个方法,如果第二个方法使用声明式事务处理就不会生效。 第二是在异步线程中,Spring的声明式事务不会达到预期的效果,在方法中启动了一个异步线程,异步线程中事务控制,这种情况对于事务的处理会达不到预期效果,因为主线程和异步线程拿到的数据库连接不同,无法保证主线程和异步线程的事务一致性。 在很多场景下,可能会有分布式事务问题,但是由于各种历史原因,或者引入的成本太高,或者这个场景对一致性的要求并不是特别的高,我们一般会尽量的去保证做到事务的一致性,并没有引入本地消息表、事务消息等去实现。 在开发过程中,我们要保证事务尽量小。因为开启关闭事务是有资源消耗成本存在,另外就是数据库的连接池也是有限的,如果存在大事务,他持有的这个线程一直不释放,那么对于整个线程池的吞吐量会有影响,所以在代码实现时需要避免大事务,能批量...
1…5678
gloamfox
君子以顺德,积小以高大。
文章
87
标签
106
分类
7
Follow Me
公告
此博客为记录工作学习总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
最新文章
Docker日志太多撑爆硬盘?一次搞定日志轮转与清理2026-08-05
WG-Easy 极简部署 WireGuard VPN,可视化管理2026-08-05
手把手教你给Debian服务器换国内镜像源,速度瞬间起飞!2026-08-04
企业级VPN搭建实战:WireGuard极简操作,10分钟实现远程互联2026-08-03
OpenVPN Docker 容器多站点互联与宿主机访问问题排查实录2026-08-01
分类
  • 前端7
  • 后端23
  • 思维模型3
  • 系统运维22
  • 计算机基础3
  • 软件工具23
  • 软件设计6
标签
Markdown Nginx SQL iptables Claude Code Docker 冯·诺依曼 Obsidian Keycloak 线程池 后端 VSCode AI工程 快捷键 知识组织 Linux Spring Cloud 计算机结构 技术面试 序列化 Tomcat Flynn分类 Hexo IO模型 Node.js 持久化 权限管理 激活 决策分析 技术学习 Redis Feign 防火墙 OpenVPN VPN协议 Kubernetes 服务发现 死锁 SSH 编程风格
归档
  • 八月 2026 5
  • 七月 2026 12
  • 五月 2026 2
  • 四月 2026 15
  • 三月 2026 23
  • 二月 2026 1
  • 一月 2026 1
  • 十二月 2025 4
网站信息
文章数目 :
87
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By gloamfox框架 Hexo 7.3.0|主题 Butterfly 5.5.4
鲁ICP备2026017338号-1
搜索
数据加载中