自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 DB回溯(Cache-Aside回源)

摘要:DB回溯是数据库恢复技术,支持时间点回退以撤销错误操作或恢复数据。核心特点包括快速恢复(仅需几分钟)、支持反复验证数据变化。主流实现如Amazon Aurora通过控制台选择时间点自动处理事务,分布式数据库则需结合GTM确保一致性。主要应用于误操作恢复和数据差异比对,但需注意其非备份替代品且仅部分数据库支持。技术方案需综合考虑性能与一致性,典型场景需配合缓存策略实现最优效果。

2025-12-01 20:00:00 687

原创 JDK25 新特性尝鲜

Java 25正式发布,带来多项重大更新。作为长期支持版本(LTS),它提供语言增强如简化main方法、灵活构造函数体;性能优化包括结构化并发、分代ZGC垃圾回收;安全方面新增后量子加密支持。特别针对AI开发优化了向量API,提升推理速度。Oracle将为Java 25提供8年免费支持至2028年9月,包含数千项改进,在性能、安全性和开发效率方面均有显著提升。该版本延续Java每6个月的更新节奏,同时降低了新手学习门槛,通过紧凑源文件等特性简化入门难度。

2025-11-27 12:29:01 689

原创 Debian12安装Docker、Docker-compose构建CICD

本文摘要: Debian系统版本查看方法:使用lsb_release -a查看完整版本信息,lsb_release -r只显示版本号。 Docker介绍:开源容器化平台,通过操作系统级虚拟化实现跨平台部署,核心功能包括容器隔离、跨平台兼容和轻量级虚拟化,支持微服务架构和CI/CD流程。 Docker安装与配置: 卸载旧版本后安装依赖 添加官方GPG密钥和仓库 安装Docker引擎及相关组件 设置开机自启和服务状态检查 Docker Compose安装: 下载对应系统架构的二进制文件 验证文件完整性 配置多容

2025-10-15 21:50:18 864

原创 【CompletableFuture】从原理到生产实践

《CompletableFuture深度解析与实践指南》摘要: CompletableFuture基于状态机(Completed/Cancelled/Exceptionally)和CAS机制实现异步编程,支持链式调用与任务组合。核心功能包括异步转换(thenApply)、并行组合(thenCombine)、多任务协调(allOf/anyOf)及异常处理(exceptionally)。生产实践中需注意:区分CPU/IO密集型线程池、避免阻塞、上下文传递和资源清理。典型应用场景涵盖微服务聚合、批量流水线处理和超

2025-10-10 15:32:02 793

原创 @EventListener(ContextRefreshedEvent.class)导致重复执行的问题

文章摘要:排查发现HttpURLConnection请求过多报错,原因是使用@EventListener(ContextRefreshedEvent.class)导致服务启动时重复执行方法,触发大量线程请求。通过增加请求间隔、关闭报错线程等措施缓解问题,最终改用ApplicationRunner解决。分析ContextRefreshedEvent反复触发可能由Nacos配置刷新、显式refresh调用或子上下文事件传播导致。对比不同初始化方式,建议根据场景选用@PostConstruct、Applicati

2025-10-07 18:02:43 737

原创 Netty、IO、时间轮

I/O 任务,即 selectionKey 中 ready 的事件,如 accept、connect、read、write等,由processSelectedKeys 方。且Netty拥有高性能、 吞吐量更高,延迟更。NioEventLoopGroup,主要管理 eventLoop 的生命周期,可以理解为一个线程池,内部维护了一组线程,每个线程。read事件(入站事件)和write事件(出站事件)在一个双向链表中,入站事件会从链表 head 往后传递到最后一个入站的。

2025-06-21 21:22:12 10

原创 分布式事务之Seata

Seata有四种模式AT模式:无侵入式的分布式事务解决方案,适合不希望对业务进行改造的场景,但由于需要添加全局事务锁,对影响高并发系统的性能。该模式主要关注多DB访问的数据一致性,也包括多服务下的多DB数据访问一致性问题。通过更新前快照回滚、更新后快照对比在二阶段提交时是否有人修改(为不受Seata代理的数据源做兜底),解决脏写。优点:一阶段完成直接提交事务,释放数据库资源,性能比较好利用全局锁实现读写隔离没有代码侵入,框架自动完成回滚和提交

2025-05-23 12:51:56 1232

原创 启动报错:An incompatible version [1.2.24] of the Apache Tomcat Native library is installed

复制openssl.exe到JDK的bin目录下,根据电脑位数复制tcnative-1.dll和tcnative-1-src.pdb至jdk的bin目录下。当前目录下为32位所需,64位需要进入x64目录下。虽然不影响正常启动,但是,看着红色的ERROR就必须想办法解决。下载好后用解压工具打开,进入bin目录。

2025-01-24 10:05:05 746

原创 Debian之Maven安装

下载地址:https://maven.apache.org/download.cgi。

2025-01-10 10:07:43 1210

原创 解决java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password‘.

在更新产品的yangtze-shop商城系统部分的版本时,报错。

2024-12-02 13:38:42 2427

原创 程序员、架构师、技术经理、技术总监和CTO分别都是干什么的?

CTO做的事情,是商业、产品、技术、管理、团队相平衡的综合统管,公司的技术研发方向与重点商业化的结果负责,激励员工,营造工程师文化。技术总监主要是协调团队内部各个资源,引入工具,和方法提升工作效率。技术经理角色相对具体,绩效考核,产品落地,执行优胜劣汰的规则。架构师主要是为公司产品的业务问题提供高质量技术解决方案并能有效落地。正像《少有人走的路》,每个人的成长路径都不同,但无一不是兴趣与使命驱动——无论你是程序员,技术经理,还是在CTO的角色。

2024-10-19 11:18:11 2153 1

原创 debian系统安装mysql8

在文件中找到 `[mysqld]` 部分,并添加或修改 `bind-address` 为 `0.0.0.0`,这将允许MySQL监听所有的网络接口。接下来,我们需要从MySQL官方网站下载APT配置工具,并安装它以便能够通过APT仓库安装MySQL。首先,需要确保我们的软件包列表是最新的。这可以通过运行 `apt update` 命令来完成。再次更新软件包列表,以便APT可以识别新添加的MySQL仓库。保存并关闭文件后,重新启动MySQL服务以应用更改。现在我们可以使用APT安装MySQL服务器。

2024-09-02 09:13:17 2208

原创 解决win10蓝屏“选择一个选项”的问题!

今天台式机开机,出现蓝屏问题,记录一下。

2024-07-30 17:20:24 1767

原创 记一次Mycat分库分表实践

例如博客的冷数据表,假如分为100个表,当同时有100万个用户在浏览时,如果是单表的话,会进行100万次请求,而现在分表后,就可能是每个表进行1万个数据的请求(因为,不可能绝对的平均,只是假设),这样压力就降低了很多。顾名思义,就是数据分散,将一台主机上的数据分摊到多台,减轻单台主机的负载压力,有两种切分方式,一种是分库,即按照业务模块分多个库,每个库中的表不一样,还有一种就是分表,按照一定的业务规则或者逻辑将数据拆分到不同的主机上,每个主机上的表是一样的,这个有点类似于Oracle的表分区。

2024-07-25 08:41:32 1186 2

原创 使用kettle抽取数据

ETL简介ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),ETL流程是数据仓库建设的核心环节,它涉及从各种数据源中抽取数据,经过清洗、转换和整合,最终加载到数据仓库中以供分析和决策。对于开发或者运维人员来说,经常会遇到各种数据的处理、转换、迁移。Kettle1、Kettle简介Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,数据抽取高效稳定 (数据迁移工具)。

2024-07-25 08:40:44 1284

原创 解决:error An unexpected error occurred: “https://registry.npm.taobao.org/xxx.tgz: certificate

最近Vue开发过程中,npm run dev遇到报错。查看npm仓库地址。切换淘宝镜像地址或官源地址。再npm run dev依旧报错。ssl过期。

2024-05-08 16:27:20 1292

原创 Python安装和开发环境搭建

Python的下载访问Python语言官网(Welcome to Python.org)进行下载相关安装包,根据需要和系统环境、下载相应的windows/linux/macOs安装包。

2024-04-22 18:14:53 922

原创 Go安装和开发环境搭建

完成安装后,用cmd命令打开命令窗口,输入 go 或者go version 命令 ,打印出相应的版本信息证明安装成功。注意:msi文件安装后,会自动配置相应的环境变量。下载完成后,进入到下载目录,选择下载的安装包,进行双击安装文件,然后点击“Next”按钮安装即可。系统会推荐安装再默认路径中,自己也可以安装自己定义的目录中。,根据需要和系统环境、下载相应的windows/linux/macOs安装包。

2024-04-22 14:18:15 284

原创 解决java: 无法访问org.bouncycastle.crypto.params.ECPrivateKeyParameters 找不到org.bouncycastle.crypto.param

如果使用了ProGuard或其他混淆工具,可能需要相应地配置以保留Bouncy Castle的类。:检查构建脚本或IDE设置,确保包含了Bouncy Castle jar包的路径。:检查使用的Bouncy Castle版本,确保它与项目兼容,并且包含所需的类。:可能使用的Bouncy Castle jar包版本不兼容,或者缺少某些类。:在某些情况下,Java的安全管理器可能阻止加载某些类。:即使已经添加了jar包,类路径也可能没有正确设置。:更新混淆配置,以确保所需的类不被混淆或重命名。

2024-03-24 11:46:20 4267

原创 解决Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tre

请注意,如果在经过上述尝试后,即使重新运行构建后仍然出现错误,可能是由于 IntelliJ 有一些缓存仍在获取以前的 lombok 版本。问题原因是Lombok ,与 JDK 21 兼容的最低 Lombok 版本是 1.18.30,最小的 Spring Boot 版本是 3.1.4。直接先升级lombok至1.18.30或以上版本,若仍不行,再尝试升级Spring Boot 至3.1.4或以上版本。在更新自建项目基础过程中,compile、install报错。这里先升级到1.18.30版本、问题解决。

2024-03-23 21:05:53 85666 29

原创 Go语言基础

运算符是一种特殊的符号,可以表示数据的运算,赋值,比较等1)算术运算符2)赋值运算符3)比较运算符4)逻辑运算符5)位运算符6)其他运算符比较两个数的大小。a:=101b:=66if(a>b){fmt.Printf("a大一些")}else{fmt.Printf("b大一些")注意:go语言不支持三元运算符在Go语言中,切片(Slice)是数组的一个引用。它会生成一个指向数组的指针,并通过切片长度关联到底层数组部分或者全部元素。

2024-03-10 19:14:17 804 1

原创 解决java: 无法访问javax.servlet.ServletException

在对历往项目工具类总结和归纳更新过程中,common模块在compile编译过程中遇到了“Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件”这个报错问题。IDE使用的是idea2021。

2024-03-07 16:12:26 2355

原创 Java之BigDecimal详解

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。

2023-12-14 12:25:57 1123

原创 Linux安装RocketMQ

又又又....Linux裝RocketMQ。

2023-09-17 10:07:22 175

原创 Linux下Nginx的安装和配置

报错:./configure: error: the HTTP rewrite module requires the PCRE library.报错:./configure: error: the HTTP gzip module requires the zlib library.下载:wget http://www.zlib.net/zlib-1.3.tar.gz。进入nginx文件:切换到根目录 执行cd /usr/local/nginx。启动命令:./sbin/nginx。

2023-09-15 17:37:32 170

原创 Linux安装JDK

又又又又..Linux装JDK。

2023-09-13 21:42:45 298

原创 Linux安装MySQL8.0

自定义密码比较简单,不符合密码策略。yum仓库文件:wget http://repo.mysql.com/mysql80-community-release-el7-10.noarch.rpm。查看安装的mysql信息:rpm -qa|grep -i mysql。删除mysql相关服务:rpm -e --nodeps。

2023-09-13 21:24:24 800

原创 ArrayList底层实现原理

jdk 1.2 ~ jdk 1.6 中,ArrayList 的确是会通过空参构造方法生成一个指定底层数据结构容量为 10 的空数组。ArrayList最早出现在 JDK 1.2中,底层基于数组实现,它是一个动态数组列表结构的容器。ArrayList最早出现在 JDK 1.2中,底层基于数组实现,它是一个动态数组列表结构的容器。增加ArrayList实例的容量,如果必需的,以确保它至少可以容纳元素的数量由最小容量参数指定。将ArrayList实例的容量缩减为列表的当前大小。应用程序可以使用此操作最小化。

2023-09-04 17:13:35 287

原创 设计模式之工厂方法模式(FactoryMethod)

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

2023-08-12 07:57:54 566

原创 设计模式之简单工厂模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

2023-08-12 07:37:05 1282

原创 JNI之Java实现蓝牙交互

蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间,通过蓝牙设备之间的无线通信实现数据传输,实现数据传输,音频传输,文件传输,图片传输等多种应用的无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。

2023-08-06 11:38:16 1082

原创 设计模式之模板方法

定义一个操作中的算法的骨架,将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

2023-08-05 22:33:03 998

原创 设计模式之策略模式(Strategy)

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的类而变化。

2023-08-05 21:25:09 948

原创 设计模式之适配器模式

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

2023-08-05 19:49:56 880

原创 规则引擎技术解决方案

Drools是⼀款由JBoss组织提供的基于Java语⾔开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在⽂件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、不⽤重启服务器就可以在线上环境立即生效。Drools官网地址:https://drools.org/​ drools源码下载地址:https://github.com/kiegroup/drools。

2023-08-04 18:21:02 266

原创 Python常用命令

type() 函数:查询对象的类型input() 函数在:函数接受一个标准输入数据,返回为 string 类型range() 函数:用于构造一个从[start, stop) (不包含stop)之间的连续的不可变的整数序列对象len() 函数: 用于获取容器对象中的元素个数reversed() 函数:反转序列对象,你可以将字符串进行反转,将列表进行反转,将元组反转random() 函数:返回随机生成的一个实数,它在[0,1)范围内。

2023-08-01 17:04:17 1061

原创 ELK日志管理平台架构和使用说明

对每个request和response的header增加uid和traceId,同时向log4j.MDC中加入uid和traceId,即可向日志中写入该参数,该项非必须操作。3.2 .Net应用1. 这里以NLog组件为例:首先需要引入NLog组件;2. 修改NLog.config配置文件,加入TCP连接方式;黄色字体部分为需要从配置中心获取日志解析服务对应的配置项,进行动态更新;粉色部分为定义的变量,这里用来表示一级标识;这里用来表示二级标识;

2023-07-29 21:53:08 450

原创 Lambda-Java8新特性最佳实践

Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读代码简洁,开发迅速方便函数式编程非常容易进行并行计算Java 引入 Lambda,改善了集合操作代码可读性变差在非并行计算中,很多计算未必有传统的 for 性能要高不容易进行调试。

2023-07-28 11:08:04 192

原创 热点活动-秒杀功能设计

秒杀活动是提升购买率的营销活动,商家可结合活动前预热的措施拉新促活,引导客户在有限的时间内完成超低价的抢购。对比其他的营销活动,秒杀限时性更强,抢购氛围更浓,可营造出一种不是所有人都能抢到的刺激感。秒杀与限时促销功能的区别在于应用的场景不同,限时促销往往是被商家作为一种日常的促销(如我们商城版本的买两年送两年),而秒杀倾向于作为一种阶段性(限时感更强)的营销。

2023-07-27 21:18:55 195

原创 营销系统积分数据库设计

积分商城/系统是指将用户在使用产品或服务时产生的积分,通过兑换礼品、优惠券等方式进行回馈和激励。这种方式将传统的消费者购买商品的行为转变为参与积分活动,增强了用户对品牌的认知和粘性。而积分商城/系统作为一种新型的营销方式,正受到企业的青睐。会员积分信息表 VipMemberPointValue。会员积分表 MemberPointChangeLog。会员额外信息表 VipExtraInfo。商家会员积分信息 MemberCard。会员额外信息,用Json进行模板描述。积分编号类别,1:增加,2:减少。

2023-07-27 20:55:57 148

redis-7.4.1.tar.gz

redis-7.4.1.tar.gz

2025-09-06

空空如也

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

TA关注的人

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