- 博客(99)
- 收藏
- 关注
原创 LinkedHashMap 详解(底层原理+设计思想)
本文深入剖析了JDK11中LinkedHashMap的设计原理与实现机制。作为HashMap的子类,LinkedHashMap通过"哈希表+双向链表"结构,在保持高效查找的同时实现有序遍历。其核心设计亮点包括:1)通过继承扩展节点结构,最小化代码冗余;2)accessOrder开关实现插入顺序和访问顺序的灵活切换;3)巧妙利用HashMap的钩子方法实现低耦合扩展。文章还展示了如何基于LinkedHashMap快速实现LRU缓存,并总结了可复用的设计思想:复用已有组件、通过钩子方法扩展、
2026-01-29 22:13:50
637
原创 Java 正则核心 API 拆解
Java正则API的核心在于理解其底层NFA引擎机制和合理使用Pattern与Matcher类。正则表达式需先编译为Pattern对象(可复用),再通过Matcher进行状态化匹配操作。关键点包括:1)避免重复编译Pattern,将常用正则定义为常量;2)Matcher的find()方法实现迭代匹配;3)分组提取需在匹配成功后进行。String便捷方法虽简单但性能较差,适合一次性操作。性能优化要点包括复用Pattern、减少分组、避免贪婪匹配等。正确使用模式应为:根据业务场景选择API组合,再基于NFA特性
2026-01-29 22:06:18
647
原创 从 0 到 1,读懂 Kubernetes 核心概念
Kubernetes核心概念与应用编排摘要 Kubernetes通过资源抽象管理集群,主要分为有状态(如MySQL)和无状态(如Nginx)服务。所有内容都被抽象为资源对象,通过API进行管理。资源分为元数据型(HPA)、集群级(Namespace)和命名空间级三类,通过YAML清单配置。每个对象包含spec(期望状态)和status(实际状态)两个关键字段,Kubernetes通过控制器确保两者一致。理解这些核心概念是掌握Kubernetes编排的基础,能帮助开发者有效部署应用并排查问题。
2026-01-21 23:37:41
667
原创 Kubernetes集群架构和组件
本文介绍了Kubernetes的核心架构与组件组成。主要内容包括:1)Kubernetes集群由控制平面和工作节点组成,控制平面包含kube-apiserver、etcd等核心组件,工作节点运行kubelet、kube-proxy等组件;2)详细说明了各层组件功能,控制平面负责集群状态管理,节点组件维护Pod运行;3)阐述了Kubernetes的分层架构设计,包括核心层、应用层、管理层等;4)列举了DNS、监控等附加组件。全文旨在帮助读者深入理解Kubernetes底层架构原理,为集群运维和故障排查奠定基础
2026-01-20 12:32:49
716
原创 认识Kubernetes
Kubernetes(k8s)是Google开源的容器编排系统,源自Google多年的大规模生产经验。其核心功能包括自我修复、弹性伸缩、自动部署回滚、服务发现、配置管理、存储编排和批处理支持。相比Apache Mesos和Docker Swarm等方案,Kubernetes通过Pod抽象简化容器管理,提供更灵活的部署方式,已成为最流行的容器编排平台。虽然节点规模支持不及Mesos,但功能更全面,适用场景更广泛,特别适合需要复杂编排的企业级应用。Kubernetes降低了容器化应用的管理难度,提升了部署效率和
2026-01-20 11:49:45
567
原创 远程连接 VirtualBox 虚拟机
本文介绍如何在虚拟机中配置NAT网络端口转发实现SSH远程连接。首先在虚拟机网络设置中选择NAT模式并勾选接入网线,然后在端口转发规则中添加一条记录:设置主机IP为192.168.0.106、主机端口为2222,子系统IP为10.0.2.15(通过ifconfig查看)、子系统端口为22。配置完成后,即可通过SSH工具使用主机IP和转发端口号连接虚拟机。该设置适用于需要远程访问虚拟机Linux系统的场景。
2026-01-20 00:14:19
149
原创 深入理解 Java 中的 CompletableFuture:提升并发编程的效率
CompletableFuture 是 Java 8 引入的异步编程工具,相比 Future 提供了更强大的功能。它支持异步任务链、回调处理、任务组合和异常处理,能显著简化并发编程。通过 supplyAsync 启动异步任务,thenApply 等链式方法处理结果,exceptionally 捕获异常,allOf/anyOf 组合多个任务,使代码更简洁高效。本文介绍了 CompletableFuture 的基本用法和高级特性,帮助开发者提升 Java 应用的并发性能。
2025-10-27 11:41:19
462
原创 数据分区、分库、分表:理解与实践
摘要: 在大数据和高并发场景下,数据库优化常采用分区、分库、分表三种策略。分区(如按时间、范围划分)将表拆分为逻辑子表,提升查询效率,但设计复杂;分库通过水平或垂直拆分数据到不同实例,解决单库瓶颈,但跨库查询复杂;分表(水平/垂直)减少单表数据量,但增加查询复杂度。三者各有优劣:分区适合局部优化,分库用于横向扩展,分表应对单表过大问题,实际可结合使用以平衡性能与扩展性。
2025-10-22 20:25:19
850
原创 NoSQL介绍
NoSQL是非关系型数据库的统称,以灵活性、高扩展性和高并发处理能力著称。其核心特点包括无固定模式、非关系存储、水平扩展优先和优异的高可用性。NoSQL分为四大类型:文档型(如MongoDB)、键值型(如Redis)、列族型(如HBase)和图数据库(如Neo4j),分别适用于不同场景。它特别适合大数据存储、高并发读写、数据结构多变等需求,但在复杂事务和查询能力上存在局限。相较于关系型数据库,NoSQL更擅长处理非结构化数据,但不适合需要强一致性的场景。选择时需根据业务需求权衡其特性。
2025-10-17 14:51:32
1001
原创 go语言了解
Go语言是一种由Google开发的高性能编程语言,兼具简洁性、高并发支持和高效内存管理。其特点包括:简洁易学的语法、接近C语言的性能、原生支持轻量级goroutine并发、丰富的标准库以及自动垃圾回收机制。Go语言特别适用于构建高并发系统、Web服务、微服务和云原生应用,如Kubernetes和Docker等。通过结构体和方法实现面向对象编程,并利用隐式接口提供灵活的多态支持。Go以快速编译、高效运行和开发者友好性著称,成为现代系统编程的热门选择。
2025-10-14 17:59:08
766
原创 utf8mb4_bin、 utf8mb3_general_ci 、utf8mb4_0900_ai_ci 这几个有什么区别
MySQL字符集与排序规则对比:utf8mb4_bin按字节值严格排序,大小写敏感;utf8mb3_general_ci仅支持3字节字符,不区分大小写;utf8mb4_0900_ai_ci(MySQL8.0+默认)支持全Unicode且不区分大小写和重音。选择时需考虑字符支持范围、大小写敏感性及MySQL版本,新版推荐utf8mb4_0900_ai_ci以获得最佳多语言兼容性。
2025-09-26 14:43:39
600
原创 Rust语言了解
Rust语言以安全性、并发性和性能为核心设计理念,同时兼顾简洁性和易用性。其语法借鉴现代语言特点,提供零成本抽象、所有权系统等创新特性,确保内存安全而无需垃圾回收。Rust通过Result和Option类型实现显式错误处理,配备强大的工具链(如cargo)和友好的编译器错误提示。虽然所有权等概念带来一定学习曲线,但完善的文档和社区支持帮助开发者逐步掌握。Rust特别适合对性能和安全性要求高的系统编程领域,在保证底层控制的同时提供高级语言的生产力。
2025-09-25 00:04:37
983
原创 Python中的函数
本文介绍了Python函数的基础知识,包括函数定义、参数类型(默认、关键字、位置、任意参数)、嵌套函数、匿名函数(lambda)、返回值以及变量作用域(按引用/值传递)。还展示了递归函数的实现示例。通过多个代码示例,详细讲解了函数声明、参数处理方式及不同场景下的应用,如range()、map()等内置函数的使用。全文提供了清晰的语法说明和输出结果,适合初学者快速掌握Python函数的核心概念。
2025-09-23 12:59:36
263
原创 Java多线程练习三
本文介绍了Java中线程命名与获取线程名称的方法。主要内容包括: 两种设置线程名称的方式:通过Thread构造函数直接命名和使用setName()方法间接命名 获取当前线程名称的方法:使用Thread.currentThread().getName() 对比了Thread.start()和Thread.run()的区别:前者创建新线程并执行run()方法,后者只是普通方法调用 通过代码示例展示了每种方法的具体实现,帮助理解线程命名的实际应用场景以及多线程执行机制的差异。这些方法对于提高代码可读性和调试效率很
2025-09-23 10:09:13
657
原创 给线程池加个脑袋,Nacos 实现智慧调度
本文探讨了如何结合Nacos实现动态线程池管理,以应对微服务架构中负载变化带来的挑战。传统固定配置的线程池在负载突增或低峰期时,可能造成资源浪费或性能瓶颈。通过引入Nacos配置中心,可将线程池参数(核心线程数、最大线程数等)集中管理,并实现实时动态调整。文章详细介绍了实现步骤:首先引入Nacos客户端依赖,然后创建线程池管理器类,通过监听Nacos配置变更来自动更新线程池参数。这种方案能有效提升系统资源利用率,避免手动调整的运维负担,使线程池能够智能适应不同负载场景。
2025-09-22 12:22:11
892
原创 Java多线程练习二
摘要:本文介绍了Java中的Thread类,包括其构造函数和常用方法。Thread类用于创建和管理线程,每个线程都通过实现Runnable接口并重写run()方法来执行任务。文章详细列举了Thread类的7种构造函数及其用途,并通过示例代码演示了如何创建和启动线程。此外,还总结了Thread类提供的关键方法,如获取活动线程数、获取当前线程引用等。输出结果表明线程执行顺序是不确定的,体现了多线程的并发特性。(149字)
2025-09-19 21:25:03
622
原创 Kotlin-基础语法练习四
Kotlin函数支持默认参数和命名参数,使函数调用更灵活。默认参数允许为参数指定默认值,当调用时不传参则使用默认值。命名参数则允许按参数名而非位置传递值,提升代码可读性。Kotlin函数分为用户自定义函数和标准库函数,前者可模块化代码实现重用,后者提供常用功能如计算平方根、求余数等。这些特性使Kotlin在保持代码简洁的同时增强了表达力,但也需注意函数过多可能影响性能和调试难度。
2025-09-18 13:00:34
1270
原创 Java多线程练习一
多线程允许程序的两个或更多部分并发执行,以实现最大化的 CPU 利用率。它能够提高应用程序的性能和响应能力。多进程是指一个系统中拥有多个处理器的情况。在多进程中,通过增加 CPU 来提高系统的计算速度。由于多进程的存在,多个进程可以同时执行。1. Symmetric Multiprocessing-对称多处理2. Asymmetric Multiprocessing-非对称多处理优势通过利用多个处理器来增加计算能力。适用于需要大量计算资源的任务。劣势进程创建过程较为耗时。
2025-09-16 23:37:40
825
原创 Kotlin-基础语法练习三
本文介绍了Kotlin中数组(Array)和字符串(String)的基本用法。主要内容包括:1)数组的创建方式,如使用arrayOf()函数、Array构造函数和工厂方法;2)数组元素的访问和修改,包括get()/set()方法和索引操作;3)数组遍历技巧,如for循环和forEach方法;4)可变参数(vararg)的使用,包括如何通过*运算符将数组展开为参数传递,以及如何结合普通参数和命名参数使用。文章通过多个代码示例展示了这些特性的实际应用,帮助开发者掌握Kotlin中处理数组和可变参数的技巧。
2025-09-16 12:26:19
1021
原创 使用 Spring Security 实现 OAuth2:一步一步的操作指南
本文介绍了如何在Spring Boot应用中集成OAuth2授权框架,通过Spring Security实现安全登录。文章首先解释了OAuth2的基本概念和四种授权流程,重点介绍了授权码模式的工作原理。随后详细展示了实现步骤:创建Spring Boot项目、添加依赖、配置应用属性、定义用户模型和服务类,最后通过SecurityConfig类完成安全配置。该方案允许用户通过Google或GitHub等OAuth2提供商安全登录,无需直接共享密码凭证,既保障了账户安全又简化了登录流程。
2025-09-07 21:49:21
1466
原创 Netty + WebSocket:搭建快速且稳定的双向通信通道
摘要 本文介绍了基于Netty和WebSocket构建高效双向实时通信的方法。WebSocket协议支持全双工通信,具有低延迟和节省带宽的优势,适用于即时聊天、物联网等场景。Netty作为高性能网络框架,通过NIO和模块化设计提升并发处理能力。文章详细展示了搭建流程:1)添加Netty和WebSocket依赖;2)实现服务器端,包括创建WebSocketServerHandler、配置EventLoopGroup及启动服务。核心代码演示了握手请求处理和消息传输机制,为开发者提供了一套完整的实时通信解决方案。
2025-09-03 11:16:11
860
原创 10分钟掌握Gradle:从零开始构建高效项目
本文介绍了 Gradle 的基础知识,并通过一个简单的示例帮助读者快速入门。Gradle 是一款现代化的构建工具,广泛用于 Java、Kotlin、Android 等项目中,凭借其灵活性、高效性和强大的依赖管理能力,成为开发者的首选工具。文章涵盖了 Gradle 的安装、项目初始化、构建配置、依赖管理等内容,旨在帮助初学者在短短 10分钟 内掌握 Gradle 的基本使用方法。通过本文,读者可以快速创建并构建一个 Java 项目,了解如何使用 Gradle 进行增量构建、运行任务以及管理依赖。
2025-09-01 12:02:33
1110
原创 Google Protobuf初体验
Google Protobuf是一种高效、跨语言的序列化数据格式,支持多种编程语言,适用于微服务通信、RPC系统和数据存储等场景。其核心优势在于紧凑的二进制格式(比JSON/XML更小更快)、可扩展性和跨平台兼容性。使用步骤包括:定义.proto文件描述数据结构,用protoc编译器生成代码,然后在代码中实现序列化/反序列化。Protobuf尤其适合带宽受限或高性能要求的场景,但缺乏人类可读性。源码中通过.proto文件定义消息类型,结合编译器生成平台相关代码来实现跨语言数据交换。
2025-08-30 16:29:38
1226
原创 Netty 心跳与链路保活机制详解:保证高并发环境下的稳定连接
在高并发网络应用中,长时间保持稳定的连接至关重要,尤其是在即时通讯、在线游戏和金融交易等场景下。Netty 提供了强大的心跳机制和链路保活机制,能够有效防止由于空闲连接导致的网络断开和资源浪费。本文详细解析了 Netty 中心跳与链路保活机制的实现原理,介绍了 IdleStateHandler 的使用方法,并探讨了在高并发环境下如何通过心跳包保证连接的持续性、减少资源消耗、提高系统的异常检测与恢复能力。通过具体场景分析,本文展示了心跳机制如何在实际应用中提升系统稳定性和用户体验,从而确保连接的高效管理和可靠
2025-08-30 13:19:20
1028
原创 Netty:现代网络应用的利器
Netty高性能网络通信框架入门指南 摘要:本文介绍了Netty这一高性能、异步事件驱动的网络通信框架。Netty基于NIO实现,采用Channel、EventLoop、Pipeline和Handler等核心组件构建,具有高性能、灵活性、易用性等特点。文章详细讲解了Netty的基本架构设计,包括对多种协议的支持和高效资源管理机制,并列举了其在分布式系统、即时通讯、游戏开发等领域的实际应用场景。最后提供了一个简单的TCP服务端实现示例,展示了如何使用Netty快速搭建网络服务。Netty凭借其卓越的性能和稳定
2025-08-27 23:26:36
1271
原创 把CentOS 7默认yum源改成腾讯云镜像
本文介绍将CentOS 7的yum源更换为腾讯云镜像源的操作步骤:首先备份原有源配置文件,然后下载腾讯云提供的CentOS 7镜像源配置文件,最后清理并重新生成yum缓存使新源生效。文中提供了具体命令,包括备份原文件、下载新配置文件以及执行yum缓存更新的完整操作流程。该操作可提升软件包下载速度,同时给出了回滚方案确保操作安全。
2025-08-27 15:07:29
459
原创 github拉取OpenSSL SSL_read: Connection was reset, errno 10054
Git 克隆仓库时出现 SSL 连接重置错误(errno 10054),主要因网络不稳定、代理设置、防火墙限制或 GitHub 服务问题导致。解决方法包括:检查网络连接、改用 SSH 协议、临时禁用 SSL 验证(不推荐)、调整代理设置、更换网络环境或更新 Git/OpenSSL 版本。若问题持续,可关注 GitHub 服务状态。
2025-08-26 10:57:05
804
原创 性能优化必看:AIO、NIO和BIO使用全解析
在现代软件开发中,I/O(输入输出)操作是最常见且最具挑战性的性能瓶颈之一。特别是在高并发、高负载的场景下,如何有效地处理大量的I/O请求,直接决定了系统的响应速度和稳定性。Java作为一种广泛应用的编程语言,提供了多种I/O模型供开发者选择,其中最常见的三种便是、和。每种I/O模型在不同的应用场景下有着独特的优势和劣势。如果能够根据具体需求合理选择合适的I/O模型,就能显著提升系统的性能。然而,由于这三种模型之间的差异较大,很多开发者在选择时常常感到困惑。本篇文章将带你全面解析AIO、NIO和BIO的特点
2025-08-23 08:42:41
885
原创 python3基础语法梳理(六)
本文介绍了Python函数的基础知识和高级用法。主要内容包括:函数声明语法、参数类型(默认参数、关键字参数、可变参数等)、Docstring文档字符串、嵌套函数、匿名函数(lambda)、返回值处理、参数传递方式(按引用/值传递)以及递归函数。通过多个代码示例,展示了如何定义和调用函数,处理不同类型参数,以及使用高级函数特性。文章还强调了使用函数的好处:代码复用、缩短代码长度和提高可读性。对于Python初学者来说,这是一份全面的函数使用指南,涵盖了从基础到进阶的各类函数知识。
2025-08-22 12:18:04
1054
原创 Kotlin-基础语法练习二
Kotlin程序由表达式和语句组成:表达式用于计算值,语句用于执行操作。代码块通过大括号{}组织代码,常用于函数和控制结构。文章详细介绍了Kotlin的if表达式,包括基本语法、if-else语句、if-else-if阶梯表达式以及嵌套if结构,并通过具体示例展示了各类条件判断的用法。同时阐述了语句(单语句与多语句)和代码块的概念,说明了控制流在Kotlin编程中的重要性。所有语法均配有流程图和完整代码示例,帮助理解Kotlin的条件逻辑实现方式。
2025-08-21 22:02:46
1045
原创 Kotlin-变量
Kotlin变量声明与使用要点: 变量必须先声明后使用,支持类型推断(如val name = "Alice"自动推断为String) 两种声明方式: val声明不可变变量(只读,但可运行时赋值) var声明可变变量(可重新赋值) 核心区别:val保证引用不变(对象内容可能可变),var允许修改引用 命名规范采用小驼峰式(lowerCamelCase) 作用域限定在声明代码块内,支持嵌套作用域 示例说明:val声明的对象属性可修改(如book.name),但变量引用不可变;var允许完全重
2025-08-16 00:24:15
556
原创 Kotlin数据类型
Kotlin数据类型解析:原始类型与引用类型 本文深入解析Kotlin中的数据类型体系,包括原始数据类型和引用数据类型两大类。原始数据类型部分详细介绍了Byte、Short、Int、Long等整型,Float、Double浮点型,以及Char和Boolean类型,通过示例代码展示了各类型的取值范围和使用方法。引用数据类型部分重点讲解了String和Array类型,强调其作为对象类型的特性。文章特别指出Kotlin原始数据类型本质上是对象类型,可以调用方法和访问属性这一重要特性。通过丰富的代码示例,帮助开发者
2025-08-12 00:18:24
1046
原创 Kotlin初体验
Kotlin作为现代编程语言,凭借其简洁语法、空指针安全机制和与Java的完美互操作性,正成为开发者的新宠。本文从Kotlin的历史背景、核心特性入手,详细介绍了环境搭建、基础语法(变量、条件语句、函数定义等)和高级特性(数据类、扩展函数、协程等)。特别强调了Kotlin在Android开发中的应用优势,如减少模板代码、提升开发效率。文章分享了学习过程中的挑战与收获,指出Kotlin的现代化特性使代码更简洁高效。最后展望了Kotlin的发展前景,建议开发者通过实际项目逐步掌握这门语言。
2025-08-09 23:28:17
1329
原创 Centos6停止服务后yum改用阿里云
在CentOS 6.9系统中配置失效的yum源时,需先备份原配置文件,然后下载阿里云镜像源。由于CentOS 6已停止维护,需修改配置文件:1) 将"centos"替换为"centos-vault";2) 将变量$releasever替换为"6.9"。最后执行yum clean all和yum makecache更新缓存。这些操作解决了因官方源失效导致的yum不可用问题。
2025-08-07 21:19:44
773
原创 Containerd全面上手实践
Containerd 是一个开源的容器运行时工具,最初由 Docker 项目分离并独立发展,现为云原生计算基金会(CNCF)托管的工业级标准项目。其核心功能聚焦于容器生命周期管理,包括镜像传输与存储、容器执行、网络配置及存储管理等。Containerd 通过轻量级设计和对 OCI(开放容器倡议)标准的严格遵循,实现了跨平台兼容性,并成为 Kubernetes 等容器平台的核心组件。
2025-08-03 08:00:00
1370
原创 Kubernetes容器运行时-Docker or Containerd
摘要: Docker和Containerd是两种主流容器运行时。Docker提供完整的容器化平台功能(镜像构建、网络配置等),适合开发测试环境,但资源占用高且与Kubernetes兼容性较差。Containerd是轻量级运行时,专注于容器生命周期管理,资源占用低、性能高,与Kubernetes集成紧密,适合生产环境。选择依据:开发或需要高级功能(如Docker Compose)选Docker;生产环境或Kubernetes集群优先选Containerd。Kubernetes从1.20版本起推荐Contain
2025-08-02 07:34:55
1444
原创 云端指挥官- Kubernetes初认识
Kubernetes(K8s)是一个开源的容器编排平台,旨在自动化容器应用的部署、扩展和管理。它的核心概念包括:Pod:最小的部署单位,通常包含一个或多个紧密相关的容器。Node:集群中的工作机器,每个 Node 上可以运行多个 Pod。Service:用于定义和访问 Pod 的网络策略,提供负载均衡和服务发现。Deployment:管理 Pod 副本的控制器,确保它们按预期运行。ReplicaSet:确保指定数量的 Pod 副本处于运行状态。Namespace:用于将资源隔离成多个
2025-08-01 12:17:33
1510
原创 Spring也会发‘广播’?一文教你搞定事件机制与监听器
文章摘要: 本文深入探讨了Spring框架中的事件机制及其自定义实现方案。Spring事件基于发布-订阅模式,通过ApplicationEventPublisher发布事件,ApplicationListener监听事件,实现组件间解耦。文章详细演示了自定义事件(UserRegisteredEvent)的创建、发布和监听过程,包括两种监听器实现方式(ApplicationListener接口和@EventListener注解)。此外,还介绍了从零构建自定义事件处理机制的关键组件:事件接口(JmanusEve
2025-07-30 08:09:38
959
原创 python3基础语法梳理(五)
本文介绍了Python面向对象编程中的类属性与方法、模块与包的使用以及生成随机数和推导式等特性。主要内容包括: 类成员访问控制:私有属性/方法(双下划线开头)只能在类内部访问,公共属性/方法可被外部访问。通过示例演示了私有成员的访问限制。 类的专有方法:如__init__、__del__等特殊方法的功能说明。 模块与包的使用:展示import和from...import两种导入方式,以及包的层级引用方法。 随机数生成:使用random模块的randint()和choice()函数生成随机数和随机选择。 推导
2025-07-29 10:41:25
1119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅