- 博客(56)
- 资源 (11)
- 收藏
- 关注
原创 MySQL + ngram 最佳实践:轻量级中文 & 混合内容全文搜索方案
ngram(N-Gram)分词是一种固定长度切词的方式。例如对词语N3-2016N33--2200116N3-3-2-20201016适合处理:无自然分隔符的语言(如中文)编码、编号、短词(如 SKU、题号、文章编号)项目推荐做法✅ 字段TEXT 类型字段建全文索引✅ 索引使用✅ 查询使用AGAINST+ 空格关键词✅ 兼容性使用 MySQL 8.0+,InnoDB 引擎✅ 性能合理使用 LIMIT,避免排序瓶颈✅ 文本规范化去除无意义符号、统一大小写,提升匹配率。
2025-04-07 10:02:28
899
原创 浅谈「分词」:原理 + 方案对比 + 最佳实践
分词(Tokenization)是指将一段连续的文本切分为有意义的「词语」或「短语」的过程。它是 NLP(自然语言处理)和全文搜索的第一步。
2025-04-07 09:52:55
1041
原创 在 Kubernetes 集群中安装 kube-prometheus-stack
提供了一整套 Kubernetes 监控工具,包括 Prometheus、Alertmanager 和 Grafana。通过 Helm 可以快速安装并进行自定义配置,提高 Kubernetes 集群的可观测性!
2025-04-03 10:55:45
681
原创 Kubernetes 集群中排除节点记录
标记节点不可调度(cordon):防止新的 Pod 被调度到该节点。驱逐现有 Pod(drain):迁移节点上的 Pod 到其他节点。(可选)删除节点:彻底移除该节点。恢复节点(uncordon):当节点维护完成后,重新启用它。
2025-04-03 10:42:01
341
原创 Kubernetes 添加新 Worker 节点记录
在 Kubernetes 集群中,添加新的 Worker 节点可以扩展计算能力,使集群更具可伸缩性。本文将介绍如何在 Kubernetes 集群中安全、高效地添加新的 Worker 节点。执行成功后,Worker 节点将尝试连接 Master 并加入集群。然后复制到 Worker 节点,并重启。运行以下命令在 Master 生成新。(确保防火墙、网络策略允许通信)。,通常是缺少 CNI 网络插件。然后在 Worker 重新执行。可查看当前集群节点)。,则表示节点已成功加入。
2025-04-03 10:33:31
400
原创 Kubernetes Ingress-Nginx 升级记录
Ingress-Nginx 是 Kubernetes 生态中最常用的 Ingress Controller,负责将外部请求路由到集群内部的服务。在实际使用过程中,定期升级 Ingress-Nginx 以修复漏洞、增强功能、提高稳定性是非常重要的。在升级之前,建议备份当前 Ingress-Nginx 配置,以便在升级失败时快速回滚。,请确保选择与其兼容的 Ingress-Nginx 版本。安装的 Ingress-Nginx,可以通过下载最新的。例如,如果你的 Kubernetes 版本是。
2025-04-03 09:33:21
664
原创 Helm 升级记录
Helm 是 Kubernetes 的包管理工具,用于简化应用的部署和管理。随着 Kubernetes 生态的不断发展,Helm 也在不断更新,以提供更好的性能和功能。如果你的 Helm 版本较旧,可能会遇到一些兼容性问题,因此定期升级 Helm 是一个良好的实践。本篇博客记录下如何在 Linux 服务器上升级 Helm,并确保你的环境正确配置。
2025-04-03 09:01:30
404
原创 failed to create containerd task: failed to start shim
containerd 需要。的问题,这通常是由于。
2025-04-01 11:56:23
221
原创 error calling ne: incompatible types for comparison
这个错误表明 Helm Chart 模板。helm version 版本过低 升级。2. 检查升级是否成功。
2025-04-01 10:53:23
303
原创 Spring 并发最佳实践:ConcurrentHashMap + @Async + CountDownLatch 完整指南
在高并发的 Spring 应用中,我们经常需要多个线程并行执行任务,并确保任务执行完毕后再进行下一步操作。让方法异步执行,执行任务时不会阻塞主线程,适用于高并发任务处理。,适用于多个线程读写同一个数据结构的场景。,并确保所有任务执行完毕后继续后续操作。是 Java 并发包中的线程安全。(订单处理、日志存储、用户请求统计)组合,实现在多线程环境下实现。(让任务异步执行,不阻塞主线程)(消息队列、爬虫系统、任务调度)(ETL 数据处理、支付对账)(等待所有任务完成后再继续)(线程安全的数据存储)
2025-03-25 10:39:25
444
原创 Java 多线程共享变量最佳实践
在 Java 并发编程中,多线程共享变量的管理至关重要。合理的共享变量策略可以提升程序性能,避免数据竞争、死锁等问题。本文将介绍几种最佳实践,在 Spring 应用或其他 Java 多线程场景中高效、安全地使用共享变量。确保同一时间只有一个线程执行某个代码块,但可能会造成性能下降。,多个线程可以在不同方法中获取相同的锁。当每个线程需要一个变量的独立副本时,(如 API 网关的限流数据存储)。的场景,确保变量的可见性,但。,但不适用于计数器或复杂操作。如果每个线程都需要独立数据,(如存储用户会话数据)。
2025-03-25 10:16:04
310
原创 Kubernetes 中的 revisionHistoryLimit 配置详解
在 Kubernetes 中, 是 和 等资源的重要配置之一。它决定了在应用更新时,Kubernetes 保留多少个历史版本,以便在需要时回滚到某个历史版本。今天,我们将深入探讨 的作用、如何使用它、以及在实际场景中的最佳实践。 是 或 资源中的一个字段,指定了 Kubernetes 在进行滚动更新时保留的历史版本的数量。它主要用于控制版本历史的数量,防止因过多的历史版本堆积而导致系统资源消耗过大。 的主要作用是管理和控制历史版本的数量。每次应用进行滚动更新时,Kubernetes 会生成一个新的
2025-03-20 10:36:32
714
原创 Kubernetes 中 ReplicaSets 的作用
通过 ReplicaSet,可以确保在不同的节点上运行多个副本,从而提高应用的可用性和容错能力。例如,当你进行版本更新时,Deployment 会逐步创建新的 ReplicaSet,而旧的 ReplicaSet 会逐渐被替换,从而实现无缝滚动更新。在 Kubernetes 中,ReplicaSet 是管理 Pod 副本的核心机制之一,是实现应用高可用性和弹性伸缩的关键组件。配合使用时,ReplicaSet 支持滚动更新,即在更新过程中逐步替换旧版本的 Pod 副本,从而实现应用的零停机升级。
2025-03-20 10:13:25
853
原创 Kubernetes 远程 SSH 执行 kubectl 命令时报 Unauthorized 的解决方案
在日常运维 Kubernetes 时,我们经常需要通过 SSH 远程执行。那么,为什么会出现这种情况呢?本文将分析问题原因,并提供多种解决方案。为了避免每次都手动指定,可以让 SSH 登录时自动加载。默认情况下,Kubernetes 认证文件位于。中设置的,但 SSH 远程执行命令时。如果输出为空,说明 SSH 远程执行时。无法找到正确的认证信息,最终出现。如果这样可以成功执行,则说明问题是。,远程执行时也能正常找到认证信息。如果问题仍然存在,可以检查。,可以手动复制该文件到。
2025-02-20 08:26:49
832
原创 Spring Boot 中实现图片文件压缩
在本文中,我们将探讨如何在 Spring Boot 中实现图片压缩,并提供接口供用户上传和下载压缩后的图片。本文介绍了如何实现一个简单的图片上传接口,支持图片的压缩和下载功能。常见的图片压缩格式包括 JPEG、PNG、WEBP 等,本文将介绍如何使用 Java 的图像处理库来实现图片的压缩。:对于大图片的上传和压缩过程,可以考虑使用 Spring Boot 的异步处理方式,避免阻塞主线程,提高系统性能。,一个轻量级的 Java 图片处理库,它提供了简洁的 API 来进行图片的缩放、压缩等操作。
2025-01-17 16:42:20
2327
原创 如何处理 Nginx 报错:an upstream response is buffered to a temporary file
这表明 Nginx 在处理上游服务器返回的响应时,因响应体过大或缓冲区设置不足,将数据暂存到了磁盘上的临时文件中。Nginx 在代理上游服务器的响应时,会先将响应数据缓存在内存中。如果响应数据的大小超过了配置的缓冲区限制,Nginx 会将超出的部分写入磁盘的临时文件。如果响应体特别大,无法完全存储在内存中,可以增大临时文件大小的限制,确保响应可以正常缓存到磁盘。的配置,可以增加 Nginx 在内存中存储响应数据的能力,减少对临时文件的依赖。具体配置需根据实际场景进行优化,确保性能和资源利用的平衡。
2025-01-17 16:13:36
984
原创 如何解决 You must be logged in to the server (the server has asked for the client to provide credentials
遇到错误时,通常是因为 Kubernetes 客户端找不到有效的凭证或无法认证。确保kubeconfig文件存在且配置正确。如果没有凭证,使用相应的云平台工具(如gcloudawsaz等)获取凭证并更新kubeconfig文件。确保kubectl使用正确的上下文。检查集群和 Kubernetes API Server 是否正常工作。希望通过这些方法,您能够快速解决凭证问题,恢复对 Kubernetes 集群的访问。
2025-01-09 23:47:00
1820
原创 如何解决 /proc/sys/net/bridge/bridge-nf-call-iptables 文件缺失的问题
通过加载必要的内核模块和启用桥接网络的 IP 过滤功能,我们可以轻松解决文件不存在的问题。对于大多数容器化环境和 Kubernetes 用户,这一步骤是至关重要的,能够确保网络通信的稳定性和安全性。记住,如果您希望这些设置在系统重启后仍然生效,可以将其持久化到sysctl配置文件中。希望本文能帮助您解决相关问题,顺利使用容器化应用。
2025-01-09 23:34:28
1356
原创 Kubernetes Egress:管理出站流量的最佳实践
Egress代表 Kubernetes 集群内的流量从 Pod 向外部网络发送的部分。它可以是访问外部数据库、调用第三方 API 或连接到外部云服务等。在 Kubernetes 中,默认情况下,Pod 可以自由地访问外部资源,没有任何出站流量的限制。然而,在一些情况下,我们可能希望控制这些出站流量。安全性需求:限制 Pod 只能访问某些特定的外部资源,防止未经授权的访问。合规性要求:确保所有出站流量都通过特定的网关或监控节点,以符合法规要求。资源管理。
2025-01-07 23:58:12
792
原创 Kubernetes Ingress:流量管理的利器
Ingress是 Kubernetes 中的一种资源类型,用于管理 HTTP 和 HTTPS 流量的路由。它允许你根据域名、路径等规则,将外部流量引导到集群内部的不同服务。Ingress 的出现极大简化了流量管理,尤其在多服务、多环境的场景下,它为流量路由提供了一个集中的配置点。Ingress 并不是一个直接的负载均衡器,而是通过Ingress 控制器来实现流量的路由、负载均衡、SSL 终止等功能。常见的 Ingress 控制器包括 Nginx、Traefik 和 HAProxy 等。
2025-01-07 23:48:53
1168
原创 理解 maven-jar-plugin:如何使用 Add-Opens 配置解决 Java 模块访问问题
Java 9 引入了模块化系统,使得 Java 平台的构建更加模块化、可维护、可扩展。模块是对 Java 类及其相关资源的一个逻辑分组,每个模块都有一个明确的声明,标明它暴露哪些包和功能,哪些是私有的。通过模块化,Java 提供了强大的封装性和依赖管理能力,但也带来了一些挑战,特别是对于那些依赖于反射或者需要访问内部 API 的应用程序。通过的Add-Opens配置,开发者可以在 Java 模块化系统中处理反射、动态代理、序列化等常见需求。特别是,当你需要让传统的 JAR 文件(即。
2025-01-06 15:20:14
2805
2
原创 Maven 构建:如何使用 maven-resources-plugin 处理资源文件
通过灵活配置插件,开发者可以精确控制项目中的资源文件管理,确保构建过程中的资源文件得到正确处理。无论是控制文件的复制路径、设置过滤器文件,还是排除不需要过滤的文件类型,Maven 提供了丰富的配置选项来满足各种需求。如果你在项目中需要处理不同环境的配置文件,或者需要确保某些文件不被过滤,掌握这些配置项将使你更加高效地管理资源文件,提高构建过程的稳定性和灵活性。希望本文能帮助你更好地理解如何使用插件,并通过灵活配置来提高 Maven 构建过程的可控性和效率。
2025-01-06 14:59:39
1125
原创 使用 Spring 状态机构建灵活的状态管理系统
Spring 状态机是一个开源框架,旨在帮助开发者管理应用程序中的状态和事件转换。它允许你轻松定义状态之间的转换规则、事件的触发条件,并且支持复杂的层级状态和事件的持久化。在状态机中,首先需要定义状态和事件。这些枚举将帮助我们描述系统的不同阶段和触发转换的条件。IDLE(待处理)、PROCESSING(处理中)和COMPLETED(已完成)。START(开始)和FINISH(完成)。Spring 状态机是一个功能强大、灵活的工具,适用于需要复杂状态管理和控制的场景。
2025-01-05 23:19:02
937
原创 使用 Spring @Retryable 实现自动重试机制
Retryable使用 Spring@Retryable注解可以非常方便地实现自动重试机制,帮助我们在面对临时故障时自动恢复,减少了手动处理失败的复杂性。通过合理配置重试次数、重试间隔和恢复方法,能够有效提高系统的容错能力和稳定性。无论是在网络请求、数据库操作,还是消息队列消费等场景中,@Retryable都是一个非常有用的工具。
2025-01-05 22:53:19
1127
原创 Spring Boot 中的虚拟线程
虚拟线程是 Java 19 中引入的一个新特性,旨在通过简化线程管理来提升应用程序的并发性能。作为 Java 生态中的革命性进展,虚拟线程让我们可以在不增加操作系统资源负担的情况下,创建成千上万个线程。在这篇文章中,我们将探讨虚拟线程的基本概念、如何在 Spring Boot 中启用和使用虚拟线程,并探讨它们如何改善高并发任务的处理。
2025-01-05 22:35:45
1270
原创 oracle基础:将字段从 VARCHAR 修改为 CLOB
将 Oracle 数据库中的字段从VARCHAR2修改为CLOB是一个常见的需求,特别是在数据量增大的情况下。通过添加新字段、迁移数据、删除旧字段、重命名新字段,可以确保数据安全和操作的无缝过渡。希望本文能为你的数据库设计和优化提供参考。如果有任何疑问或更好的方法,欢迎留言讨论!
2025-01-03 06:00:00
1231
原创 聊:分布式锁
分布式锁是一种在分布式系统中用来协调多个节点对共享资源访问的机制,确保同一时刻只有一个节点能操作某个资源。分布式锁常用于解决分布式环境中的和。
2025-01-02 09:02:28
516
原创 Spring 异步任务与线程同步:@Async 和 CountDownLatch 的完美结合
Async是 Spring 提供的一个注解,用于标记方法异步执行。标记为@Async的方法会在单独的线程中运行,调用它的线程不会被阻塞。异步任务的实现依赖于 Spring 的线程池管理。基本使用在 Spring 配置类中添加,并配置线程池(可选)。@Bean在需要异步执行的方法上使用@Async注解。@Service@AsyncSystem.out.println("异步任务线程:" + Thread.currentThread().getName());
2025-01-02 06:00:00
1027
原创 前后端数据安全传输的实现:Spring Boot 与国密算法的结合实践
SM2:基于椭圆曲线的公钥密码算法,替代 RSA。SM3:哈希算法,替代 SHA 系列。SM4:对称分组加密算法,替代 AES。这些算法在金融、政府等高安全性领域被广泛采用。本篇博客通过 Spring Boot 和国密算法实现了前后端数据安全交互的完整流程。场景算法实现数据加密传输SM2公钥加密,私钥解密签名与验签SM2 + SM3后端签名,前端验签批量数据加密SM4对称加密,适用于大数据量传输数据完整性校验SM3(摘要算法)数据摘要生成与对比。
2025-01-01 07:00:00
1332
原创 Spring Validation 入门与实战
Spring Validation 是基于 Java Bean Validation(JSR 380)规范实现的功能。基础校验@NotNull@Size@Min@Max等。高级校验@Email@Pattern@Future等。自定义校验:通过自定义注解扩展校验逻辑。创建一个UserDTO@Data@NotNull(message = "用户ID不能为空")@NotBlank(message = "用户名不能为空")
2025-01-01 06:00:00
982
原创 Spring Boot 嵌套事务详解及失效解决方案
嵌套事务是一种事务传播行为,允许在一个事务中嵌套另一个事务。Spring 提供了事务传播属性,用于实现嵌套事务。依赖外层事务:嵌套事务的提交取决于外层事务。可以独立回滚:嵌套事务失败时,可以部分回滚,而不影响外层事务。嵌套事务在 Spring Boot 中失效的主要原因是方法调用未通过 Spring 的代理机制。将嵌套事务方法提取到独立类(推荐方式)。使用 ApplicationContext 获取代理对象。使用 AopContext 获取代理对象。
2024-12-31 09:17:45
1094
原创 前后端分离中 Token 和 Cookie 的对比:哪种更适合你的项目?
TokenToken 是一种基于字符串的身份验证机制,通常包含用户信息和签名,可在请求中携带用户身份。最常用的 Token 格式是。自包含性:携带用户的身份信息,无需后端存储会话。通常存储在浏览器的或中。场景推荐方案前后端分离的移动端或 Web 应用Token需要分布式架构和无状态验证的系统Token传统 Web 应用Cookie对安全性要求较高的应用或Cookie最终,选择 Token 或 Cookie 应该基于应用场景和安全需求。
2024-12-31 06:00:00
1055
原创 深入解析 Spring 属性:spring.codec.max-in-memory-size
是 Spring WebFlux 提供的一个配置项,用于设置应用在处理 HTTP 请求体或响应体时,可以在内存中缓冲的数据的最大大小。默认值:256KB(262144 字节)配置类型:字节大小适用场景接收大文件上传的请求处理大数据量的响应防止内存溢出或异常是 Spring WebFlux 提供的一个配置项,用于设置应用在处理 HTTP 请求体或响应体时,可以在内存中缓冲的数据的最大大小。默认值:256KB(262144 字节)配置类型:字节大小适用场景接收大文件上传的请求。
2024-12-30 15:19:58
1424
原创 Nginx 命令解析:停止 quit 与 stop
在 Nginx 的运维和管理中,优雅地停止或强制停止服务是日常任务之一。为了实现这一目标,Nginx 提供了几种不同的停止命令,最常见的就是和。这两者的作用相似,但在细节和行为上有显著的不同。本文将对这两个命令进行详细解析,并探讨它们的使用场景和潜在问题。
2024-12-30 10:08:29
1334
原创 Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports
Spring Boot 提供了强大的自动配置功能,通过约定优于配置的方式大大简化了应用开发。随着版本迭代,自动配置的实现方式也逐渐优化,从早期的。如果你正在构建基于 Spring Boot 的模块化应用,建议立即尝试新方式,以获得更好的开发体验!注解,这是 Spring Boot 2.7 新增的注解,用于标识自动配置类。在 Spring Boot 的早期版本中,自动配置类是通过。对于旧项目,可以逐步迁移以享受新特性的优势。每行一个自动配置类,简单直观,同时支持。,体现了更好的可维护性和性能改进。
2024-12-27 21:15:48
1674
原创 oracle基础:中文字段排序详解
排序规则(Collation)决定了数据库如何比较和排列字符数据。在 Oracle 中,排序规则由NLS_SORT参数控制,影响ORDER BY子句的排序行为。
2024-12-27 14:21:12
823
原创 oracle基础:理解 Oracle SQL 中的 WHERE 后的 (+) 用法
(+)在现代 SQL 开发中,建议逐步替换WHERE (+)为LEFT JOIN或RIGHT JOIN。不过,如果你正在处理遗留系统,了解这种语法的用法将帮助你更好地维护旧代码。
2024-12-26 14:38:07
1496
原创 深入了解 Reactor:响应式编程的利器
Reactor是一个基于Reactive Streams 规范的响应式编程库,主要用于处理非阻塞的数据流。它是响应式流的 Java 实现之一,为开发者提供了强大的工具来构建异步、事件驱动的应用程序。Reactor 官方英文文档Reactor 中文文档异步非阻塞:数据流以事件的形式处理,避免线程阻塞。响应式背压:控制数据流速率,确保系统稳定运行。丰富的操作符:提供了数百种数据操作符,方便处理复杂数据流。与 Spring WebFlux 深度集成。
2024-12-26 11:53:01
1160
原创 Spring WebFlux
Spring WebFlux 是 Spring 提供的响应式 Web 框架,旨在构建异步和非阻塞的 Web 应用。与传统的 Spring MVC 基于阻塞式线程模型不同,WebFlux 依赖于异步运行时(如 Netty),并通过响应式流(Reactive Streams)实现背压控制。非阻塞架构:基于异步处理,不依赖固定线程池。事件驱动:响应式流模型,使应用更加高效和灵活。轻量级:可用于微服务和高并发环境。
2024-12-26 08:00:00
724
python-2.7.9.amd64.msi 和 python-2.7.14.msi
2017-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人