自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 容灾方案(异地多活)

容灾(Disaster Recovery)是指当系统发生自然灾害、断电、网络故障等不可控事件时,依然能快速恢复并保持业务运行。

2025-05-13 16:16:36 212

原创 Spring 集成 SM4(国密对称加密)

Spring 集成主要用于保护敏感数据,如身份证、手机号、密码等。下面是完整集成步骤(含工具类 + 使用示例),采用 Java 实现(可用于 Spring Boot)。

2025-05-13 15:13:43 175

原创 OAuth 2.0详解

角色说明资源拥有者(比如用户本人)Client第三方应用程序(比如小红书、微信小程序)授权服务器,颁发访问令牌(access_token)资源服务器,受保护资源的提供者(比如用户的照片、订单信息等)

2025-05-13 14:44:42 279

原创 Base64 vs 对称加密

Base64 是一种便于传输的编码方式并不具备加密和防止泄露的能力不能替代加密算法(如 AES、SM4)若需要真正加密数据,应使用对称或非对称加密算法。

2025-05-13 14:35:48 275

原创 国产操作系统麒麟和欧拉

使用需求推荐选择想部署稳定的企业服务器想使用国产桌面替代 Windows麒麟桌面版想搭建国产软硬件测试环境openEuler + 飞腾/鲲鹏云平台、容器、微服务环境openEuler(优先)政府办公系统麒麟桌面版(兼容 OA 系统)

2025-05-12 15:07:06 178

原创 CentOS 和 RHEL

CentOS 最初是 RHEL(Red Hat Enterprise Linux)的免费开源克隆版,几乎与 RHEL 二进制兼容,广泛用于中小企业、测试和私有云环境。然而,Red Hat 在 2020 年宣布停止 CentOS Linux,转向 CentOS Stream,后者是 RHEL 发布前的预览版,不适合生产环境。因此,用户被建议转向其他替代方案,如 AlmaLinux、Rocky Linux 或直接使用 RHEL 开发版。RHEL 是 Red Hat 的商业 Linux 系统,提供付费订阅和官方技

2025-05-12 14:37:37 455

原创 企业级常用的 CentOS版本

CentOS 曾是企业级环境中广泛使用的免费 RHEL 克隆系统,因其稳定性强、与 RHEL 高度兼容而备受青睐。然而,CentOS 项目在 2020 年底发生重大变化,传统的稳定版本被 CentOS Stream 取代,导致 CentOS 8 提前终止,且 CentOS Stream 不再适合企业生产环境。目前,企业常用的 CentOS 版本包括 CentOS 7(支持至 2024 年)和 CentOS Stream 8/9。对于新部署和长期稳定需求,推荐使用 AlmaLinux 或 Rocky Linu

2025-05-12 14:27:05 351

原创 数据同步选择推Push还是拉Pull

数据同步选择“推”(Push)还是“拉”(Pull”,要根据实际场景、系统架构和对实时性、资源消耗、安全性的需求来决定。

2025-05-09 14:09:18 287

原创 边缘网关(边缘计算)

边缘网关正成为数字化转型的基础设施,尤其在IoT、AI和5G的推动下,其灵活性和高效性将释放更多创新应用场景。边缘网关是边缘计算架构中的关键组件,充当连接终端设备(如传感器、IoT设备)与云端或核心网络的桥梁。● 隐私合规:敏感数据(如人脸、位置)可在本地脱敏后再上传,符合GDPR等法规。● 带宽优化:仅上传关键数据,降低网络负载(可减少高达90%的上传数据量)。● 安全风险:物理暴露风险(如户外部署)需强化硬件级安全(TPM芯片)。● 5G融合:结合5G网络切片,保障关键任务(如远程手术)的可靠性。

2025-05-08 08:54:01 506

原创 好的软件系统

好的软件系统不仅仅是能运行的代码,而是一个经过精心设计、能满足当前需求并适应未来变化的有机整体。以下是评估软件系统质量的全面框架:一、核心质量属性功能性(Functional Quality)正确性:精确实现需求规格完备性:覆盖所有用户场景合规性:符合行业标准和法规非功能性质量(Non-Functional Quality)可靠性故障率低(如99.99%可用性)自动恢复能力(健康检查、熔断机制)数据持久性保证性能// 良好的性能设计示例:缓存+异步处理。

2025-05-07 17:14:03 889

原创 Java 常用的 ORM框架(对象关系映射)

● 适用场景:SQL 逻辑复杂、需要精确控制 SQL 的项目(比如金融、电商)。● 适用场景:快速开发 CRUD 接口,适合数据模型结构清晰的项目。● 适用场景:与 Spring Boot 配合使用,快速开发项目。● 适用场景:中大型项目,需要复杂 ORM 映射和缓存机制。● 适用场景:对性能要求高、需要动态构造 SQL 的项目。● 适用场景:希望减少样板代码、简化开发的项目。● 适用场景:JPA 教学或特定项目迁移。○ JPA 规范的一个实现,较少使用。○ 完整的 ORM 框架,功能强大。

2025-05-07 15:02:24 277

原创 java.time 和 java.util.Date的区别

Java 的时间 API 在 Java 8 中做出了重大改进,推出了 java.time 包,它提供了对日期、时间、时区等的更好支持。与旧版的 java.util.Date 和 java.util.Calendar 相比,新的时间 API 更加简洁、安全和易于使用java.util.Date 是一个较老的日期时间类,功能较为简单且存在一些设计上的缺陷(如线程不安全、时区问题等)。

2025-05-07 09:43:22 558

原创 datetime 和LocalDateTime 的区别

LocalDateTime java.time Java 8 (JSR-310) 新版 API, immutable(不可变)且线程安全。建议:在新项目中尽量使用 java.time 包(如 LocalDateTime),避免 Date 和 Calendar。LocalDateTime 无时区信息 仅表示本地日期时间(如 2025-05-07T14:30:00),不涉及时区转换。Date 隐式依赖系统时区 内部存储 UTC 时间戳(毫秒数),但 toString() 会按系统时区显示。

2025-05-07 09:39:29 488

原创 Chronyd 和 NTP 的关系

Chronyd是实现NTP协议的软件,底层走的就是NTP协议,比ntpd更轻量、适应性更强。Chronyd 和 NTP 的关系● NTP(Network Time Protocol) 是一种协议,用于在计算机系统之间同步时间。● Chronyd 是一个实现了NTP协议的程序,也就是说 Chronyd是NTP协议的一个实现者/客户端工具。● 类似地,传统上还有一个叫做 ntpd 的程序,也是NTP协议的实现(ntp.org官方版的守护进程)。

2025-04-28 15:41:37 231

原创 Linux普通用户怎么切换为root用户

在 Linux 中,普通用户切换到 root 用户的常用命令有以下几种:切到root用户sudo -i(当前用户的密码)su -(需要知道root 密码)

2025-04-08 22:29:04 1339

原创 linux中apt 和yum安装的区别

yum:yum 在 RHEL 系列发行版中已经被 dnf(Dandified YUM)替代,在新版本的 RHEL 和 Fedora 中,dnf 取代了传统的 yum,提供更好的性能和现代化功能。apt:包源通常是通过 .deb 文件的形式,在 /etc/apt/sources.list 或 /etc/apt/sources.list.d/ 中配置。yum:虽然 yum 在一些操作上较慢,但它也在不断改进,特别是在 yum 的新版本(如 dnf,在 RHEL 8 和 Fedora 中使用)中,性能有所提升。

2025-03-30 07:46:30 713

原创 查看linux系统重启的日志

在某些 Linux 发行版中,系统日志会记录在 /var/log/messages 或 /var/log/syslog 文件中。● /var/log/messages 或 /var/log/syslog:查找系统日志中的重启记录。/var/log/wtmp 文件记录了系统的登录、注销和重启事件。/var/log/boot.log 文件记录了系统启动时的日志。● /var/log/wtmp:记录系统登录、注销和重启事件。● /var/log/boot.log:查看系统启动时的日志。

2025-03-12 09:09:01 1237

原创 Ubuntu 上设置 iptables 规则开机自启

你可以创建一个 systemd 服务来在启动时恢复 iptables 规则。创建 iptables 服务添加以下内容:[Unit][Service][Install]2. 重新加载 systemd 并启用服务验证 iptables 规则是否生效如果重启后 iptables 规则仍然存在,则说明设置成功。如果你是用于生产环境,建议使用 方法 1(iptables-persistent),因为它是 Ubuntu 官方推荐的方法,并且管理方便。

2025-03-04 08:43:32 910

原创 linux防火墙iptables、ufw、firewalld

在 CentOS 8 及以上版本中,nftables 逐渐取代 iptables,但 iptables 仍然可以通过兼容层使用。在 CentOS 中,ufw 不是主流工具,更多使用 firewalld 或直接配置 iptables。在 Ubuntu 中,firewalld 不是主流工具,更多使用 ufw 或直接配置 iptables。在 Ubuntu 中,iptables 是底层工具,但通常通过 ufw 或直接配置来管理。在 CentOS 7 及更早版本中,iptables 是主要的防火墙工具。

2025-03-01 17:03:56 697

原创 Ubuntu 防火墙iptables和 ufw

如果你只需要基本的防火墙功能,推荐使用 ufw;iptables 是 Linux 内核中 Netfilter 框架的用户空间工具,用于配置和管理网络数据包的过滤、网络地址转换(NAT)等。需要手动保存规则(如使用 iptables-save)并在启动时加载(如使用 iptables-restore)。iptables 和 ufw 是 Linux 系统中用于管理防火墙的工具,但它们的设计目标和使用方式有所不同。配置复杂,需要用户熟悉网络协议、链(Chains)、表(Tables)和规则(Rules)等概念。

2025-03-01 16:48:23 717

原创 ubuntu防火墙iptables

通过这种方式,你可以确保在多台机器之间的服务通信不受防火墙的影响,同时保证服务器的安全性。作用阶段: 数据包经过路由决策后,目标不是本地系统(即数据包需要转发到其他主机)。作用阶段: 数据包经过路由决策后,目标是本地系统(即数据包是发给本机的)。用途: 通常用于 DNAT(目标地址转换)或修改数据包的目标地址。用途: 通常用于 SNAT(源地址转换)或修改数据包的源地址。适用表: filter 表、nat 表、mangle 表。作用阶段: 数据包进入网络接口后,但在路由决策之前。

2025-03-01 16:39:00 886

原创 HTTPS的加密原理

客户端和服务器在连接时,会通过公钥加密的方式交换一些信息,以确保在后续的通信中使用对称加密的密钥(称为“会话密钥”)来加密和解密数据。HTTPS 的连接过程通常通过 SSL/TLS 协议来完成,最常见的 SSL/TLS 协议版本为 TLS 1.2 和 TLS 1.3。● 一旦客户端和服务器通过非对称加密交换了会话密钥,就会使用 对称加密(如 AES)来加密会话中的数据传输。● 公钥加密:服务器将公钥公开,客户端使用服务器的公钥加密信息,只有持有对应私钥的服务器才能解密。非对称加密(公钥加密)

2025-01-22 08:53:29 1156

原创 redis热Key问题

在 Redis 中,热 key(Hot Key)问题是指某些 Redis key 由于频繁的访问或操作,导致 Redis 实例负载过重,影响整个 Redis 集群或实例的性能。redis-cli --bigkeys 命令可以扫描 Redis 中的大 key,虽然它主要用于定位大 key,但有时访问频繁的大 key 也会成为热 key。结合该命令,可以找到潜在的热 key。热 key 可能是某些特定的业务请求导致的,如果这些 key 经常被访问,可以考虑将它们分离到专门的缓存中,采用不同的缓存策略。

2025-01-21 10:50:13 496

原创 Redis线上阻塞要如何排查

因为Redis执行指令是单线程的,因为单次执行速度会非常快,但是如果你让单次执行变慢了,那么也会阻塞后续的指令执行。哪些情况会让指令变慢:1.指令获取的数据很多,比如大数据量下执行keys、hgetall、smembers等指令。我们可以通过查看Redis的慢查找到问题,不要去执行慢查操作2.大Key,我单次查询的的数据过大,也会导致单次执行变慢。所以我们需要拆分大key。keys命令全库扫描:KEYS 命令会扫描整个数据库中的所有键,匹配符合给定模式的键名。

2025-01-21 10:41:00 889

原创 systemd 系统systemctl命令

要将一个自定义程序或脚本加入到 systemctl 中管理,需要创建一个 systemd 服务文件,并将其放置在适当的目录中(通常是 /etc/systemd/system)。以下是详细步骤:步骤 1:创建服务文件服务文件的命名通常是 <服务名>.service,文件路径为 /etc/systemd/system/<服务名>.service。示例:创建服务文件步骤 2:编写服务文件内容一个典型的 systemd 服务文件内容如下:[Unit]

2025-01-21 10:17:49 904

原创 linux环境变量配置文件区别 /etc/profile和~/.bash_profile

文件 作用 优先级/etc/profile 定义系统全局环境变量和配置 系统优先加载。/etc/profile.d/* 细化全局配置,模块化管理 /etc/profile后加载。~/.bash_profile 用户个性化的登录配置,可覆盖系统配置 用户优先。~/.bashrc 用户的交互式配置,通常由 .bash_profile加载 非登录 Shell 优先加载。/etc/bashrc 系统级别的交互式配置,供所有用户使用 高于 ~/.bashrc。

2025-01-21 09:59:39 1741

原创 Semaphore 信号量

Semaphore 是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore 的锁释放操作也由手动进行,因此与 ReentrantLock 一样,为避免线程因抛出异常而无法正常释放锁的情况发生,释放锁的操作也必须在 finally 代码块中完成。当多个线程请求访问资源时,公平模式保证线程按请求顺序获取许可,而不公平模式则可能导致一些线程长时间无法获取许可(例如,后来的线程可能在前面的线程之前获得许可)。

2024-11-22 18:02:11 774

原创 多线程环境下安全地使用 SimpleDateFormat的常见方法

因为,SimpleDateFormat类的内部有一个Calendar对象引用,这个对象主要用来储存和这个SimpleDateFormat相关的日期信息。当我们把SimpleDateFormat作为多个线程的共享资源来使用的时候,那就意味着多个线程之间会共享这个SimpleDateFormat里面的Calendar引用。如果多个线程同时于操作这个Calendar对象的情况下,就会出现数据脏读的现象,从而导致一些不可预料的错误。那么,保证SimpleDateFormat线程安全呢。

2024-11-11 13:32:55 734

原创 java日志MDC日志追踪

它是日志框架(如 Logback 和 Log4j)的一部分,允许你在日志事件中附加额外的上下文信息,这些信息能够帮助你在日志中更清晰地标识和过滤特定请求、会话或线程的活动。在多线程的应用中,尤其是 Web 应用,通常会有多个请求在同一时间处理,日志记录需要能够标识出每个请求或线程的相关信息(例如请求的唯一 ID、用户信息等)。MDC 信息泄漏:如果你将 MDC 信息传递到异步线程中,可能会出现信息泄漏问题(例如,线程池中的线程可能会复用上一个请求的 MDC 信息)。

2024-11-11 11:34:29 1203

原创 springboot拦截器实现日志登录和操作记录

【代码】springboot拦截器实现日志登录和操作记录。

2024-11-11 11:29:26 457

原创 日志记录访问客户端ip地址

X-Forwarded-For:当请求通过反向代理或负载均衡器时,这个头包含客户端的原始 IP 地址。在 Java 中,获取客户端 IP 地址通常是在处理 Web 请求时进行的。在我们项目开发中,很多时候需要记录访问ip地址,方便跟踪操作日志定位是哪个机器访问了我们的服务(逮住证据),或者根据ip做一些分析统计。当你需要记录日志时,通常会在日志中记录客户端的 IP 地址。Proxy-Client-IP 和 WL-Proxy-Client-IP:这些是某些代理服务器或 Web 服务器可能设置的头。

2024-11-11 10:05:07 819

原创 MongoDB

mongodbMongoDB 是一种基于文档的 NoSQL 数据库,使用 BSON(Binary JSON)格式来存储数据。与传统的关系型数据库相比,MongoDB 提供了更灵活的结构、可扩展性和高性能。以下是对 MongoDB 的详细介绍,包括基本概念、数据模型、操作、特性、优缺点以及应用场景。MongoDB 是一种灵活且高效的 NoSQL 数据库,适合需要快速开发和动态变化的数据应用。理解其基本概念和操作方式,可以帮助开发人员在项目中更好地利用 MongoDB 的特性。

2024-11-04 18:02:08 1259

原创 WebService详解

WebService 是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用 java 编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上WebService 是一种标准化的网络服务,允许不同平台和应用程序之间通过网络进行通信。它使得不同语言和平台的应用能够互操作。以下是 WebService 的详细介绍,包括基本概念、类型、工作原理以及应用场景。

2024-11-04 16:16:59 1459

原创 yum和dnf的区别

联网 ping www.baidu.comyum 是一种在基于 RPM(Red Hat Package Manager)的 Linux 发行版中使用的包管理器。它用于在系统中搜索、安装、更新和删除软件包。yum 最初是为 CentOS、Fedora 和 RHEL(Red Hat Enterprise Linux)等发行版设计的,它使用 RPM 包管理系统来管理软件包。使用 yum 命令可以轻松处理软件包的依赖关系,并从配置的软件源(如官方仓库或自定义仓库)中下载并安装软件包。

2024-11-04 14:37:22 1278

原创 Spring 实现异步流式接口

在 Spring 中实现异步流式接口通常使用 WebFlux 或 Spring MVC 的异步特性。

2024-11-04 14:22:24 419

原创 Apollo配置中心使用

apollo官网源码:https://github.com/apolloconfig/apolloapollo使用文档:https://www.apolloconfig.com/#/zh/README。

2024-11-04 13:28:19 1599

原创 Java实现MD5加密的三种方式

MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示。因此,MD5的输出结果可以表示为一个32位的字符串。MD5算法常用于数据完整性验证、密码加密等场景,通常将输入的数据经过MD5处理后,得到一个32位的摘要(digest),该摘要作为数据的唯一表示,可以用于验证数据的完整性或作为密码的加密存储。

2024-11-04 10:55:39 7017

原创 Java导出Word文档的几种方法

在 Java 中导出 Word 文档可以通过多种库和方法实现。

2024-11-04 10:18:21 1904 2

原创 Commons-Lang3使用

Commons-Lang3是Apache Commons项目中的一个重要组件,为Java开发者提供了一系列实用的公共基础类。一、Commons-Lang3简介Commons-Lang3是Apache的Jakarta Commons工程下的一个模块,它提供了一系列增强Java标准库的工具类。这些工具类涵盖了字符串处理、数组操作、日期处理、数字处理、集合操作等多个方面,旨在帮助开发者减少重复代码,提高开发效率。

2024-11-04 09:52:32 881

原创 JMS消息中间件

JMS(Java Message Service)即 Java 消息服务应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数 MOM 提供商都对JMS 提供支持。简短来说,JMS 是一种与厂商无关的 API,是 sun 公司为了统一厂商的接口规范,而定义出的一组api接口,用来访问消息收发系统消息。

2024-11-04 09:13:23 1052

空空如也

空空如也

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

TA关注的人

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