- 博客(589)
- 收藏
- 关注
原创 Dubbo介绍及示例用法
RPC ✅ 优势:HTTP ✅ 优势:下面通过一个完整的示例,演示如何使用 Dubbo 实现「发布文章送积分」的分布式业务场景。假设系统分为三个模块:定义 Dubbo 服务接口和 DTO,供其他模块依赖。实现积分逻辑,暴露 Dubbo 服务。调用积分服务,实现发布文章逻辑。提供 HTTP 接口,内部调用 Dubbo 服务。 输出结果: 5. 关键设计点 服务解耦: 文章服务不直接操作积分数据库,通过 RP
2025-07-09 15:06:05
406
原创 我是如何实现在线客服系统的极致稳定性与安全性的
作为一名软件工程师,我曾经坚信“功能为王”。功能够强,界面够炫,用户自然会来。然而,真正上线运营一款客服系统后我才深刻明白:功能可以让用户试用,但稳定性和安全性才是让用户留下来的根本。客服系统的特殊性在于:它与客户业务直接挂钩,是一线成交和售后的桥梁。你永远无法预知用户什么时候打开网页,发出一句“请问在吗?” 你也无法承受这种情况下系统突然宕机、消息延迟、甚至数据泄露的代价。某次凌晨系统崩溃了,第二天早上一查,客户错失了上百条访客咨询;有访客反馈聊天记录丢失,客服追踪不到历史对话;
2025-07-09 15:05:34
407
原创 鸿蒙内核源码分析(文件句柄篇) | 你为什么叫句柄?
只要写过应用程序代码操作过文件不会陌生这几个函数,文件操作的几个关键步骤嘛,跟把大象装冰箱分几步一样.先得把冰箱门打开,再把大象放进去,再关上冰箱门.其中最重要的一个参数就是。去申请这个编号,内核会创建文件相关的一系列对象,返回编号,后续通过编号就可以操作这些对象.原理就是这么的简单,本篇将从。,即最多可打开256个文件.文件也是资源的一种,系列篇多次说过进程是管理资源的,所以在进程控制块中能看到文件的影子。的成员,负责记录所有进程文件句柄的信息,个人觉得鸿蒙这块的实现有点乱,没有封装好.
2025-07-09 15:04:11
263
原创 2025最全Java基础篇面试题
本文整理了Java核心面试知识点,包含以下主要内容: HTTP请求方法:Get与Post的区别 Java多态的实现方式:重载与重写 String、StringBuffer与StringBuilder的对比 ==与equals的区别及hashCode重写原则 Java基本数据类型及集合框架 ArrayList与LinkedList的实现原理 HashMap与Hashtable的线程安全机制 常见排序算法实现:冒泡、二分查找、快速排序 异常处理机制及设计模式(单例、代理、工厂等) 抽象类与接口的关键区别 访问修
2025-07-09 14:37:50
835
原创 Java 实现本地 APK 文件搜索与 HTTP 下载服务
递归搜索本地目录,查找所有 APK 文件根据文件修改时间找出最新的 APK 文件通过 HTTP 请求响应机制,将 APK 文件返回给前端处理各种异常情况,确保服务稳定可靠下面让我们一步步实现这些功能。通过本文介绍的方法,你可以轻松实现一个本地 APK 文件搜索和 HTTP 下载服务。这个服务可以方便开发团队内部共享最新的应用安装包,提高测试和部署效率。
2025-07-08 14:25:05
734
原创 大数据-34 HBase 单节点配置 hbase-env hbase-site xml
这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。2C4G 编号 h1212C4G 编号 h1222C2G 编号 h123HBase (Hadoop Database) 是一款基于 Google 的 BigTable 论文设计而来的开源分布式数据库系统。它属于列式存储的非关系型数据库(NoSQL),专门用于处理超大规模数据集的实时随机读写需求。行式存储 vs 列式存储:MySQL 采用行式存储,即使某些字段为空也会占用存储空间;
2025-07-08 14:22:56
706
原创 Golang-GMP 万字洗髓经
在GoLang中的并发工具(例如Mutex、通道Channel等)均契合GMP进行适配改造,保证在执行阻塞操作时,会将阻塞粒度限制在Groutine粒度,而非 M Thread粒度,使得阻塞与唤醒操作都属于用户态行为,无需内核的介入,同时一个 G 的阻塞也完全不会影响 M下的其他 G 的运行。最后是关于“抢占”的流程介绍,抢占和让渡有相同之处,都表示由 g->g0 的流转过程,但区别在于,让渡是由 g 主动发起的(第一人称),而抢占则是由外力干预(sysmon thread)发起的(第三人称).
2025-07-08 14:20:32
747
原创 Java核心面试题(200道)
本文总结了Java面向对象编程的核心概念与常见问题。主要内容包括:面向对象五大原则(SRP、OCP、LSP、DIP、ISP)、抽象类与接口的区别、变量类型比较、构造方法特性、内部类分类(静态/成员/局部/匿名)及应用场景、值传递机制、IO流分类(BIO/NIO/AIO)、反射机制原理及应用,以及String类的不可变特性等。这些知识点涵盖了Java基础语法、面向对象设计、内存管理、IO操作等核心内容,是Java开发者必须掌握的技术要点。文章通过原理说明、代码示例和对比分析的方式,帮助读者系统理解这些关键概念
2025-07-08 13:58:29
948
原创 【OpenHarmony】鸿蒙开发之Jmustache
jmustache 是mustache模板系统的零依赖实现,通过使用散列或对象中提供的值来扩展模板中的标签。
2025-07-07 15:10:33
706
原创 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统
本篇讲一个大型图书馆的管理方案,来说清楚计算机文件系统是如何管理的.如果读懂了这个方案,就基本了解了文件系统最底层的运行机制.
2025-07-07 15:10:03
946
原创 利用布隆过滤器设计亿级用户视频浏览历史过滤系统:方案详解与内存预估
布隆过滤器是一种基于位数组和多个哈希函数的概率型数据结构,用于判断某元素是否存在于一个集合中。高空间效率:比传统哈希结构节省内存数十倍。查询速度快:时间复杂度为O(k),k为哈希函数个数。误判率可控:存在假阳性(误判存在),但无假阴性(漏判)。不支持删除:标准布隆过滤器无法删除元素。布隆过滤器广泛应用于缓存穿透防护、去重、推荐系统等场景。优化方案核心思路优势典型应用场景分时间窗口分片按时间划分布隆过滤器,定期清理控制存储规模,方便过期管理只保留最近30天浏览记录分层过滤。
2025-07-07 15:09:29
926
原创 JAVA集合面试题52道
Java集合框架核心知识摘要 Java集合框架提供了存储和管理对象的容器,主要分为Collection和Map两大类。Collection包含List(有序可重复)和Set(无序唯一)子接口,Map存储键值对映射。 集合与数组的主要区别在于:集合长度可变,只能存储引用类型,且可存储不同类型对象。集合框架的优势包括自动扩容、高性能数据结构、易于扩展和维护。 常用实现类: List:ArrayList(数组)、LinkedList(链表) Set:HashSet(哈希表)、TreeSet(红黑树) Map:Ha
2025-07-07 14:25:25
586
原创 Centos项目部署之Nginx 的安装与卸载
说明:指定 Nginx 的安装目录。默认值作用:所有相关的文件(如配置文件、日志文件等)都会在这个目录下创建。说明:指定 Nginx 可执行文件(nginx)的安装路径。默认值作用:此参数将其安装到。说明:指定 Nginx 配置文件的路径。默认值作用:此参数将其设置为。说明:指定 Nginx 进程 ID 文件的路径。默认值作用:此参数将其设置为。说明:指定 Nginx 的锁文件路径,用于防止多个 Nginx 实例同时运行。默认值作用:此参数将其设置为。说明。
2025-07-06 14:42:31
834
原创 Centos项目部署之运行SpringBoot打包后的jar文件
目录下,创建文件 java-blog-admin-api-9001.service java-blog-admin-api-9002.service。1、创建/usr/local/project/java/blog-admin-api 目录。2、上传 blog-admin-0.0.1-SNAPSHOT.jar 文件到这个目录下。创建java-blog-admin-api-9001.service文件。创建java-blog-admin-api-9002.service文件。推荐: 生产环境推荐使用。
2025-07-06 14:41:22
338
原创 JDK 代理原理
为解决静态代理的强耦合问题,我们可以将增强逻辑从代理类中抽离,通过一个通用的接口来封装。代理类只需负责调用处理器,而无需关心具体的增强逻辑。代码中的实现如下:// 自定义InvocationHandler(简化版) @FunctionalInterface public interface InvocationHandler { void invoke() throws Exception;
2025-07-06 14:40:52
584
原创 Java高频面试题(2025最新版)
这篇文章主要讲解了Java框架中常见的循环依赖问题及其解决方案,对比了Java对象和Spring Bean的生命周期差异。重点介绍了Spring通过三级缓存机制解决循环依赖的原理,并分析了二级缓存在AOP场景下的必要性。文章还涵盖了Spring MVC的工作流程、常用注解及JSON数据处理,MyBatis的动态SQL、缓存机制和批量操作等内容。最后讨论了SpringBoot的自动配置原理和Spring Cloud的常用组件,如Nacos、Feign等,以及服务注册发现、限流算法等微服务相关技术。全文提供了丰
2025-07-06 13:50:07
984
原创 Java最新真题面试八股文(高频版)
【Java面试核心知识点总结】 Java基础部分: 重写与重载:重载指同一类中方法名相同但参数不同;重写要求子类方法与父类方法签名相同,且访问修饰符更宽松。 JDK包含JRE,JRE包含JVM。JVM是执行引擎,JRE包含运行环境,JDK包含开发工具。 Object类关键方法:equals()、hashCode()、toString()等,许多类会重写这些方法。 字符串处理: String不可变,StringBuilder非线程安全但高效,StringBuffer线程安全。 字符串创建推荐使用直接量&quo
2025-07-03 14:33:42
713
原创 深入理解 C++ 智能指针的底层原理与实战应用
是一种独占所有权的智能指针,意味着一个资源只能被一个unique_ptr拥有。当unique_ptr被销毁时,其所管理的对象也随之被销毁。cpp 复制编辑 #include <iostream> #include <memory> void demo_unique_ptr() { std::unique_ptr<int> ptr = std::make_unique<int>(42);当函数退出时,ptr自动释放所指向的内存,无需手动调用delete。unique_ptr。
2025-07-03 14:31:58
907
原创 一次 Bash 脚本调试经历:`set -e` 与 bru run 返回码的问题
并不是所有非 0 返回码都意味着“错误”,上下文语义很重要;set -e是一把双刃剑,虽然能简化错误处理,但遇到特殊返回值时容易踩坑;写脚本时要清楚每个命令的“返回语义”,才能避免误判。希望这个经验能帮你在自动化任务中少踩坑!
2025-07-02 15:10:17
278
原创 使用 JavaScript、Mastra 和 Elasticsearch 构建一个具备代理能力的 RAG 助手
AI 代理可以与其他系统交互,独立运行,并根据其定义的参数执行操作。Agentic RAG 将 AI 代理的自主性与检索增强生成(- RAG)的原理相结合,使 LLM 能够选择调用哪些工具、使用哪些数据作为上下文来生成响应。你可以在这里阅读更多关于RAG的内容。查询某球员对特定对手的历史平均值。查询某球员对特定对手的赛季平均值。这些将是我们为 AI 代理定义工具时使用的主要函数,用于比较球员之间的统计数据。1)进入 backend/lib 目录,创建一个名为的文件。
2025-07-02 15:09:46
940
原创 jmeter 测试乐观锁解决超卖的异常率Bug
当我将扣减库存的逻辑修改如下时,我用jmeter去测试时,发现异常率为100%,按理来说是50%,然后我去分析jmeter查看结果树的报告,发现HTTP请求错误的Response code 为 401,那我们在黑马点评里有设置返回状态码为401的一段代码如下,没错原来是。
2025-07-02 15:08:56
157
原创 2025年Java最新面试题总结(三年经验)
Java核心面试笔记摘要 本文涵盖Java面试核心知识点,主要包括: 基础技术栈 ArrayList与LinkedList区别:数组结构查询快增删慢 vs 链表结构增删快查询慢 字符串操作:倒序输出方法、+拼接原理(StringBuilder实现) 集合框架分类:List、Set、Map三大接口及其实现类特性 ConcurrentHashMap分段锁原理 equals与==区别 单例模式实现(饿汉式、懒汉式) JVM机制 内存区域划分:堆、栈、方法区等 垃圾回收算法:标记清除、复制、分代收集 G1收集器特点
2025-07-02 14:21:37
290
原创 SQL 入门到精通:从基础到高级的完整指南
SQL(结构化查询语言)是一种用于管理和操作关系数据库的语言。它是数据世界的基石,广泛应用于数据存储、查询和分析。通过 SQL,你可以执行创建、读取、更新和删除(CRUD)操作,管理数据库中的数据。创建新表。定义主键,确保唯一性和非空性。END IF;用户定义函数可以在 SQL 中封装复杂的计算逻辑。SQL 是一个强大的工具,掌握它可以帮助你高效地管理和分析数据。从基础的 CRUD 操作到高级的窗口函数和存储过程,SQL 为你提供了丰富的功能。
2025-07-01 15:30:07
712
原创 Mac端使用Docker部署Redis 主从复制踩坑实录:别再被 localhost 坑了
localhost和127.0.0.1不总是等价的,特别是在 Docker 容器环境下。如果你用的是 macOS 的 Docker Desktop,或者不确定平台行为,请统一使用127.0.0.1来做服务间通信。使用配置 Redis 主从时,虽然可以用--slaveof参数设置从属关系,但这不会写入配置文件,容易重启后失效。建议挂载redis.conf文件并写入,确保稳定生效。
2025-07-01 15:29:31
354
原创 使用inotify来监控系统文件
对于linux系统的文件,如果需要监控其文件状态是否出现了增、删、改,在2.6.13或更新的linux kenerl版本上,我们可以用linux系统中提供的inotifyapi 来实现详细的api说明可以参考:man-pages。
2025-07-01 15:28:56
182
原创 Java全网面试八股文 最详细了!!!
候选人:嗯,是这样的,**单节点Redis的并发能力是有上限的,**要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要把数据同步到从节点中B+Tree是在BTree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构聚簇索引主要是指数据与索引放到一块B+树的叶子节点保存了整行数据,主键在作为聚簇索引的有且只有一个非聚簇索引值指的是数据与索引分开存储。
2025-07-01 14:18:15
1609
原创 Java 项目分层架构详细实操指南及案例解析
Java 项目分层架构,Spring Boot, 微服务架构,分层设计原则,后端开发,MyBatis, 领域驱动设计,项目架构案例,接口设计,服务分层,Spring Cloud, 架构优化,分层架构实战,Java 开发,系统架构设计。以下是一个基于Java项目分层架构实操指南等最新技术的Java项目分层架构实操指南,结合用户管理系统实例进行说明。建议在实际项目中根据需求调整架构,不需要完全遵循所有层次,保持"够用就好"的原则。处理HTTP请求,校验参数,返回统一格式结果。接口,无需编写基础CRUD方法。
2025-06-30 14:54:15
389
原创 【OpenHarmony】二维码的库:js-tokens
Go语言的Context包是并发编程中的核心组件,它提供了一种在API边界和进程间传递截止时间、取消信号和其他请求范围值的方式。本文将从源码角度深入分析Context的实现机制,重点探讨取消传播实现和valueCtx的内存泄露风险。
2025-06-30 14:36:01
805
原创 【OpenHarmony】二维码的库:js-tokens
本库是OpenHarmony系统下基于js-tokens库使用的开发示例,js-tokens 是一个微型JavaScript的分词器。小巧的、正则表达式驱动的、宽松的、几乎符合规范的 JavaScript 标记器。
2025-06-30 14:35:00
713
原创 Java面试八股文 很详细了!!!
候选人:嗯,是这样的,**单节点Redis的并发能力是有上限的,**要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据之后,需要把数据同步到从节点中B+Tree是在BTree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构篇幅限制下面就只能给大家展示小册部分内容了。
2025-06-30 13:45:51
706
原创 HashMap 核心原理
选择标准单线程场景:优先使用 HashMap。多线程场景:使用 ConcurrentHashMap,避免 HashMap。性能优化预估初始容量(如),减少扩容次数。自定义 key 类时重写hashCode()和equals()方法,降低哈希冲突。注意事项避免在多线程环境下对 HashMap 进行 put 操作,否则需外部同步(如理解红黑树与链表的转换条件,避免频繁树化 / 退化影响性能。
2025-06-29 16:02:26
592
原创 Java 多线程共享变量可见性研究
主线程运行结束后整个程序会立即终止,但是当去掉最后一行代码后,程序还是在运行中,说明陷入了死循环,也证实了并非主线程运行结束了,所以整个程序才结束了。主线程结束后,将对flag的修改从其工作内存中刷新回了主内存。IDE中运行上述代码后,程序会立即结束,理论自然是正确的,为何会得出相悖的结果?修饰,现代计算机应该会在一个较短的时间内将修改值刷新回主内存,但现在看起来并不会,具体原因可以参考。在jdk17,MacOS平台下并未能看到相应的汇编代码,只能暂时作罢,等后面有空了再研究一下。上面的一大段空白,都是。
2025-06-29 15:58:45
389
原创 【OpenHarmony】加密算法类库:crypto-js
本软件是移植开源软件 crypto-js 源码在OpenHarmony上进行功能适配,在OpenHarmony上已支持原库crypto-js的功能,目前crypto-js已支持的算法有:MD5、SHA-1、SHA-256、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2、AES、RC4、DES等。
2025-06-29 15:58:19
373
原创 2025最新Java面试八股文(完整版)
我们使用java编译命令就能将java源文件编译对应成字节码文件(.class),字节码文件是一种八位数据的二进制流文件,可以被JVM快速加载到内存中运行AQS全称abstractQueueSynchronizer,即抽象队列同步器,是一种锁机制,它是作为一个基础框架使用的,像Reentrantlock,countdownlatch都是基于AQS实现的AQS内部维护了一个先进先出的双向队列,队列中存储了排队的线程。
2025-06-29 14:24:19
798
原创 深入浅出 ReentrantLock:解密 Java 并发编程的“锁”事儿!
通过上面的讲解,相信你对 ReentrantLock,特别是它的公平锁和非公平锁的底层实现,已经有了更深入的理解。那么,在实际开发中,我们应该如何选择和使用 ReentrantLock 呢?1.优先使用 synchronized:在大多数简单的并发场景下,synchronized 仍然是首选。它由 JVM 自动管理锁的获取和释放,使用起来更简单,也更不容易出错。JVM 在 synchronized 的优化上也做得非常好,性能通常不比 ReentrantLock 差。
2025-06-26 20:13:03
613
原创 Solana 智能合约开发入门教程(二)
我们已经学会了如何创建智能合约项目、部署合约以及调用连上合约,接下来深入了解一下智能合约编程语言的写法,关注如何写出自己想要的逻辑。我们将会以写一个简单的 USDT 代币合约为例,分析相关的代码,并且理解 Solana 智能合约的写法。
2025-06-26 20:12:15
626
原创 使用 xUnit 快速编写 .NET 应用单元测试
在当今快速迭代的软件开发环境中,单元测试已成为保障代码质量和项目可靠性的重要基石,通过验证程序最小单元(如函数、方法、类等)的独立行为,能够在开发阶段快速发现逻辑错误或边界条件问题。今天大姚将带领大家使用 xUnit 快速编写 .NET 应用单元测试。xUnit 是一个开源、免费、以社区为中心的 .NET 单元测试框架,是用于 C# 和 F#(其他 .NET 语言可能也能运行,但未提供官方支持)进行单元测试的最新技术。xUnit 能够与。
2025-06-26 20:11:57
555
原创 ClickHouse 可观测性最佳实践
ClickHouse 是一款高性能、列式存储的开源分析型数据库,专为在线分析处理(OLAP)场景设计。它能够处理海量数据,支持实时查询和复杂的数据分析,具备极高的读写性能和数据压缩能力。ClickHouse 提供了强大的 SQL 支持,包括对复杂查询、聚合操作和窗口函数的优化,使其成为处理大规模数据集的理想选择。此外,ClickHouse 支持分布式架构,通过数据分片和副本机制,能够实现高可用性和水平扩展。它广泛应用于日志分析、物联网数据处理、实时监控等领域,帮助企业快速获取数据洞察,驱动业务决策。
2025-06-26 20:08:15
809
原创 2024年Java最新面试题总结(三年经验)
threadlocl是作为当前线程中属性ThreadLocalMap集合中的某一个Entry的key值,不同的线程之间threadlocal这个key值是一样,但是不同的线程所拥有的ThreadLocalMap是独一无二的,也就是不同的线程间同一个ThreadLocal(key)对应存储的值(value)不一样,从而到达了线程间变量隔离的目的。这种方法的优点是实现简单,提高系统的性能,缺点是可能会导致数据不一致,因为MySQL写操作的数据和Redis读操作的数据之间的同步延迟,与存在一定的延迟。
2025-06-26 16:17:58
359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人