- 博客(376)
- 收藏
- 关注
原创 Nginx高频用途的详细配置和性能调优
在 Nginx 上终止 HTTPS 加密,将解密后的明文请求转发给后端服务器(如 Tomcat、Node.js)。
2025-04-29 16:55:03
609
原创 日常docker的实操命令场景
为什么想起要研究这个问题?是因为笔者在工作学习中,遇到了这样一种情况。就是在程序中,使用的非对称加密的密钥和签名验证操作时,可能需要不同的密钥,非常不方便。搞清楚了这个问题,就可以基于相同的密钥类型,在不同的使用方式之间进行转换和传输,这样可以大大简化系统开发和应用的配置管理。一个完整的公钥加密的密码学操作,通常包括了密钥对的生成、密钥协商、内容加密、签名和验证等环节。
2025-04-29 16:53:47
845
原创 日常docker的实操命令场景
通过dockfile中指定环境变量,可以通过docker启动命令能直接去修改替换掉它,不加就是默认dockfile中的值。项目对应的子网不能重复,这是为了确保容器网络的正常运行和 IP 地址的唯一性,避免网络冲突。如果需要指定网络的网关和子网掩码的配置,对当前的整个compose服务的网络管理起来。系统默认的软件包镜像源替换为阿里云的镜像源,以加快软件包的下载速度和提高下载的稳定性。再在具体的服务上指定具体的ip地址,例如下述的yy服务指定了ip地址。然后在compose.yml文件中指定网络名,申明。
2025-04-29 16:52:40
863
原创 Java常见面试题(含答案,持续更新中~~)
反射(Reflection)是一种在运行时动态地获取、检查和修改类的方法、属性和构造函数等信息的能力。它允许程序在运行时通过名称获取类的相关信息,并可以动态地创建对象、调用方法和访问属性,而无需在编译时确定这些操作。Java中的反射机制提供了一系列的类(例如Class、Method、Field等)和接口(例如java.lang.reflect包下的接口)来实现反射操作。动态加载类:通过Class.forName()方法可以根据类的完全限定名动态加载一个类,而不需要在源码中显式写明。
2025-04-29 16:42:55
1364
原创 anal到Elasticsearch数据一致性保障分析(基于RocketMQ)
完整性:MySQL 的每条变更记录都能同步到 ES,无丢失。顺序性:同一主键的变更操作按 Binlog 顺序应用到 ES,避免乱序导致数据覆盖。准确性:ES 中的数据与 MySQL 的最新状态一致,正确反映所有变更。及时性:同步延迟在可接受范围内(如秒级),满足近实时查询需求。Canal:事务级 Binlog 解析、断点续传、同步推送至 RocketMQ。RocketMQ:持久化存储、多副本复制、顺序消息、偏移量管理。ES:幂等写入、版本控制、批量操作、写入重试。全链路。
2025-04-28 14:45:57
958
原创 整理面试复盘:设计Elasticsearch索引与高效多级分类筛选
在面试中,设计Elasticsearch(ES)索引和实现高效的多级分类筛选是常见问题。本文以RestHighLevelClient为基础,结合实际场景(如商品搜索),简述ES索引结构的设计思路,以及如何实现高效的多级分类筛选。设计ES索引需要从业务需求、性能优化和扩展性出发,合理定义字段类型(如textkeywordnested)和索引设置(如分片数)。对于商品搜索的多级分类筛选,nested类型结合nested查询和聚合是核心解决方案。通过优化查询结构、缓存结果和异步处理,可以显著提升筛选效率。
2025-04-28 14:45:22
863
原创 深入理解 Java:从基础到进阶的全方位解析
本文将从 Java 的基础知识开始,逐步深入到进阶的技术点,帮助你全面理解这门语言。通过不断学习 Java,你可以掌握编程的核心原则,提高代码的质量和效率。泛型是 Java 5 引入的特性,用于提高代码的可复用性和类型安全性。通过泛型,Java 程序可以在不牺牲类型安全的前提下,操作不同类型的对象。封装是面向对象编程的基本原则之一,它将数据和操作数据的代码封装到一起,隐藏了实现细节,外部只能通过公开的方法访问数据。接口,开发者可以创建并发执行的任务,提高程序的效率。Java 提供了强大的多线程支持。
2025-04-28 14:44:51
397
原创 史上最新Java八股文,程序员必备
AQS全称abstractQueueSynchronizer,即抽象队列同步器,是一种锁机制,它是作为一个基础框架使用的,像Reentrantlock,countdownlatch都是基于AQS实现的AQS内部维护了一个先进先出的双向队列,队列中存储了排队的线程AQS还维护了一个state,表示锁的状态,0为无锁状态,1为有锁状态,如果一个线程将state修改为1,就相当于当前线程获得了资源对state的修改使用cas操作,保证多线程下的原子性。
2025-04-28 14:44:01
832
原创 Java面试八股文合集(持续更新)
AQS全称abstractQueueSynchronizer,即抽象队列同步器,是一种锁机制,它是作为一个基础框架使用的,像Reentrantlock,countdownlatch都是基于AQS实现的AQS内部维护了一个先进先出的双向队列,队列中存储了排队的线程AQS还维护了一个state,表示锁的状态,0为无锁状态,1为有锁状态,如果一个线程将state修改为1,就相当于当前线程获得了资源对state的修改使用cas操作,保证多线程下的原子性。
2025-04-27 15:39:10
693
原创 redis数据结构之字符串
你以为Redis的字符串就是"Hello World"?今天咱们要掀开这位"字符串精分患者"的三重人格面具,准备好瓜子饮料,老司机带你飙车Redis字符串的魔幻底层世界!(温馨提示:阅读本文可能会引起颅内高潮,请系好安全带)
2025-04-26 16:45:53
863
原创 Golang与Kafka的五大核心设计模式
通过事件溯源、CQRS、Saga模式、消费者驱动契约测试以及重试与DLQ,开发者能够充分发挥Kafka在分布式系统中的潜力。结合Golang的高效并发模型,这些模式不仅提升系统的吞吐量和容错性,还简化了复杂业务逻辑的实现。本文提供的完整代码示例可直接应用于实际项目,为构建高可靠、易扩展的实时系统提供坚实基础。
2025-04-26 16:44:47
926
原创 Go 1.15 相比 Go 1.14 有哪些值得注意的改动?
Go 1.15 在 Go 1.14 的基础上带来了一些重要的更新和改进。虽然没有语言层面的重大变化,但工具链、运行时和标准库等方面都有值得关注的调整。GOPROXYGOPROXY404410任何404410directGOMODCACHEvetvetrunebytexstring(x)go testobjdumpobjdump-gnu。
2025-04-26 16:44:09
977
原创 史上最全Java面试八股文合集,持续更新.....
系统的状态是当前给进程分配的资源情况。针对两个特定的锁,开发者可以尝试按照锁对象的hashCode值大小的顺序,分别获得两个锁,这样锁总是会以特定的顺序获得锁,那么死锁也不会发生。问题变得更加复杂一些,如果此时有多个线程,都在竞争不同的锁,简单按照锁对象的hashCode进行排序(单纯按照hashCode顺序排序会出现“环路等待”),可能就无法满足要求了,这个时候开发者可以使用银行家算法,所有的锁都按照特定的顺序获取,同样可以防止死锁的发生,该算法在这里就不再赘述了,有兴趣的可以自行了解一下。
2025-04-26 15:31:35
807
原创 利用Harbor代理缓存镜像实现内网镜像加速
Harbor 代理缓存(Proxy Cache)是一种中间镜像仓库,类似 Nexus 的代理模式,允许 Harbor 代理来自 Docker Hub 或其他私有仓库的镜像请求。当内网客户端第一次拉取某个镜像时,代理缓存仓库会向外网仓库请求镜像并下载至本地缓存。随后其他客户端拉取同一镜像时,直接从本地缓存仓库获取,避免重复访问外网。有效节约内外网带宽,减少 Docker Hub 的访问频率,避免触发速率限制。
2025-04-23 17:24:46
794
原创 银行外汇业务(一)
经常听到我们国家有多少多少亿美元的外汇储备,是否有这样的疑问,外汇储备是什么,它又是怎么来的,银行又是如何处理外汇储备的,今天就闲聊一下。
2025-04-23 17:23:41
809
原创 java中,使用map实现带过期时间的缓存
在 Java 开发领域,缓存机制的构建通常依赖于 Redis 等专业缓存数据库。这类解决方案虽能提供强大的缓存能力,但引入中间件意味着增加系统架构复杂度、部署成本与运维负担。本文将深入探讨一种轻量级替代方案 —— 基于 Java 原生Map实现的带过期时间的缓存机制。该方案无需引入外部工具,仅依托 Java 标准库即可快速搭建起缓存体系,特别适用于对资源占用敏感、架构追求极简的项目场景,为开发者提供了一种轻量高效的缓存数据管理新选择。:该方案存在明显局限性,即数据无法持久化。
2025-04-23 17:22:58
307
原创 程序员必备的100道Java面试题(全网最全)
GC 是 Garbage Collection 的缩写,即垃圾回收。它是 Java 虚拟机(JVM)自动管理内存的一种机制。在 Java 程序运行过程中,会不断创建对象,当这些对象不再被使用时,如果不进行回收,就会占用内存空间,导致内存泄漏等问题。GC 的作用就是自动识别并回收这些不再使用的对象所占用的内存,使程序能够高效地运行,而无需程序员手动管理内存。在 Java 中,线程是程序执行的最小单位。它可以执行一个任务或者一系列任务。
2025-04-23 15:29:12
1579
原创 提高开发效率的利器:百度 Comate 编程助手介绍与使用指南
在现代软件开发中,AI 辅助编程工具逐渐成为提升效率、降低成本的重要手段。百度推出的Comate 编程助手,作为一款智能代码生成与辅助编程平台,正在成为越来越多开发者的得力工具。本文将介绍 Comate 的核心功能、使用方法以及它在实际开发中的应用场景。Comate是由百度自研的 AI 编程助手,基于文心大模型(Ernie)打造。它集成在 IDE 中,支持多种编程语言,为开发者提供代码自动补全、注释生成、单元测试生成、代码纠错、自然语言生成代码等功能。
2025-04-21 14:57:56
441
原创 MCP Server Java 开发框架的体验比较(spring ai mcp 和 solon ai mcp)
开发体验比较比较开发基于组件开发基于组件开发配置通过 yaml 配置组件,即是配置(也可引用 yaml 配置)发布通过配置器发布为 ToolCallbackProvider组件,即是发布jdk要求jdk17或以上jdk8或以上端点支持好像只能一个(一个服务内)支持多端点(一个服务内)solon-ai-mcp 的开发相对更简洁,三位一体。且支持多端点。
2025-04-21 14:57:21
392
原创 深入剖析 Redis 集群:分布式架构与实现原理全解
Redis 集群采用无中心分布式架构,每个节点地位平等,都保存完整的集群状态信息。集群中的节点分为主节点和从节点两种角色:主节点负责处理读写请求并存储数据,从节点则复制主节点数据提供数据冗余和故障转移能力。主从节点组3主从节点组2主从节点组1从节点3A主节点3从节点2A主节点2从节点1A主节点1从节点1B客户端通信端口:默认 6379集群总线端口:默认 16379(客户端端口+10000)集群总线用于节点间传递集群状态、节点状态、故障检测等信息,基于 Gossip 协议实现。
2025-04-21 14:52:09
856
原创 2025 Java面试八股文合集(持续更新)
直接内存不属于JVM内存,是操作系统的内存,常见于NIO操作,用于数据缓冲区,拥有较高的读写性能,且不受JVM内存回收影响BIO(同步阻塞IO)发送请求后线程一直阻塞,直到数据处理完并返回NIO(同步非阻塞IO)通过一个线程轮询大量socket,当有socket准备就绪时通知客户端,客户端调用函数接收。AIO(异步非阻塞IO)每个请求都会绑定一个Buffer;通知操作系统去完成异步的读(这个时间你就可以去做其他的事情)读完之后会通知客户端来读取数据。
2025-04-21 14:09:59
538
原创 MySQL 事务实现机制:从原理到实践的深度解析
事务简单来说就是一组操作的集合,要么全部执行成功,要么全部失败回滚。想象你在 ATM 机上转账,从账户 A 扣款并存入账户 B,这两步必须同时成功或同时失败,否则就会出现钱扣了但没到账,或者钱到账了但没扣款的情况。是否开始事务操作1: 从账户A扣款操作2: 向账户B存款成功?提交事务回滚事务机制实现方式解决的问题相关参数原子性Undo Log确保事务要么全部完成要么全部回滚一致性依赖原子性和隔离性保证数据库从一个一致状态转换到另一个一致状态隔离性锁机制 + MVCC。
2025-04-18 17:00:45
951
原创 Python 列表不香了?聊聊 NumPy 为什么更快更强!
用 Python 列表吧,写起来简单,但处理大规模数据时总感觉“卡卡的”,像是开着一辆小电驴去飙高速。这虽然灵活,但每次计算时 Python 都要检查每个元素的类型,影响性能。,在 CPU 访问数据时更加高效,而 Python 列表的元素是分散存储的,每次读取时 CPU 可能需要多次跳转,影响性能。循环逐个计算,而 NumPy 直接调用底层 C/Fortran 优化过的库,一行代码就能完成整个数组的运算。:NumPy 的连续内存存储方式让计算更快,而 Python 列表因为数据分散,速度更慢。
2025-04-18 16:58:57
388
原创 PyTorch 2.0 一行代码加速模型,简单易懂的基础介绍和实用示例
是 PyTorch 2.0 的核心新特性之一,它通过自动将 PyTorch 代码编译成更高效的底层代码来加速模型运行。它支持绝大多数 PyTorch 代码,包括复杂的控制流(if、for 等)、动态形状张量和自定义函数。只需一行代码包裹模型或函数即可,无需改写代码,兼容性极好。第一次运行时会进行编译,速度较慢,后续运行速度显著加快。python代码解读复制代码。
2025-04-18 16:58:17
612
原创 2025最新常见的Java八股文(就业版)
聚簇索引:索引结构和数据是存放在一起的,也就是在B+树的叶子节点中存放整行的数据。非聚簇索引(也叫二级索引):索引结构和数据不是存放在一起的,也就是在B+树的叶子节点上存放对应的主键且是不唯一的。我们为字段添加索引通常就是二级索引。问:知道什么是回表操作吗?通过二级索引查到的主键再去聚簇索引中查询数据行的过程就是回表。而直接查询聚簇索引则不会出现回表的情况。面向切面编程,将那些于业务无关的复用性比较高的代码快抽取出来,较低代码的耦合度。问:在你的项目中有使用过AOP吗?
2025-04-18 15:49:40
803
原创 小小 Stream,一篇文章拿捏它
我简要提到了 Stream 的使用。在这篇文章中将深入探讨它。首先,我们以一个熟悉的Student类为例。假设有一组学生:java代码解读复制代码java代码解读复制代码现在有这样一个需求:从给定的学生列表中返回年龄大于等于 18 岁的学生,按年龄降序排列,最多返回 2 个。在中,我们会这样实现:java代码解读复制代码在中,借助 Stream,我们可以更优雅地写出以下代码:java代码解读复制代码。
2025-04-17 15:08:28
530
原创 使用正则表达式解决问题:从 LeetCode 到生产环境
本质上,正则表达式就是一种字符串模式。\d+匹配一个或多个数字。^Hello匹配以 "Hello" 开头的字符串。匹配长度至少为 6 的字母和数字组合。正则表达式就像一种模式小语言,可广泛用于多种编程环境 —— 包括 C#、JavaScript、Python、MySQL 甚至 shell 脚本。正则表达式的意义不在于炫技,而是快速、清晰地解决问题。不管是在面试、脚本还是线上查询中,正则都能帮你节省代码量、提升效率。你不需要成为正则大师,但就像 Git 或 SQL 一样,具备正则“读写能力”
2025-04-17 15:07:33
982
原创 leetcode51.N 皇后 回溯算法求解 + 效率优化
递归搜索到下一行,尝试在每一列放置皇后,并判断所放置位置是否与同一列或同一斜线的皇后互相攻击。,将其转化为正值,该值从右上角到左下角依次从 0 变化到 6,因此也可以创建一个数组来表示每一 135 度斜线上是否有皇后,数组的长度为。上面的实现中,在放置皇后之前,需要遍历之前的行,检查前面的行是否有同列、同斜线的皇后与当前皇后相互攻击,这个过程性能较差,可以优化。首先看 45 度斜线,如下图所示,相同颜色的格子表示处于同一斜线,这些处于同一 45° 斜线的格子,它们的。对列的判断容易优化,那斜线要怎么判断?
2025-04-17 15:06:26
400
原创 2025Java常见的面试八股文(offer)
一致独有主隔离不是不被立刻顺序禁止保证不保证立即同步内存泄露弱强回收不会被回收staticThreadLocal 的经典使用场景是数据库连接和 session 管理等。只能不能await()await()acquire()release()
2025-04-17 14:50:15
726
原创 java远程debug调试
是否使用-jar若主类在类路径中,可直接指定主类名启动,无需-jar选项。若要从 JAR 包启动程序,则需使用-jar选项指定 JAR 包名称。
2025-04-15 15:41:51
617
原创 Docker部署的优缺点
Docker 是一个用于开发、部署和运行应用程序的开放平台,它使用容器化技术将应用及其依赖打包成一个独立的容器。以下详细介绍使用 Docker 容器部署的优缺点。
2025-04-15 15:39:45
862
原创 深入剖析 Java ReentrantLock:解锁显式锁的高级特性与实战应用
通过本文的讲解,我们全面了解了 ReentrantLock 的高级特性与应用。特性方法适用场景注意事项基本锁获取lock()一般同步场景必须在 finally 中解锁可重入性内置特性递归调用、嵌套锁调用 unlock 次数必须等于 lock 次数尝试获取锁tryLock()避免死锁、提高响应性结果为 false 时需有备选方案可中断锁获取需要中断能力的场景抛出 InterruptedException 后恢复中断状态超时锁获取限时等待场景超时返回 false。
2025-04-15 15:38:48
989
原创 2025最新JAVA面试八股文,万字长文!
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所 有信息。I 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。应用场景有:要操作权限不够的类属性和方法时、实现自定义注解时、动态加载第三方jar包时、按需加载类,节省编译和初始化时间;获取class对象的方法有:class.forName(类路径),类.class(),对象的getClass()
2025-04-15 14:24:18
1354
原创 Spring AOP源码-动态代理与切面编程
在不修改原始业务逻辑的前提下,将横切关注点以统一的方式织入目标对象的运行流程中。另外多说一嘴,在具体的方法调用上,被抽象成拦截器链。通过的proceed()方法递归触发链式调用,实现通知(Advice)的顺序执行。这里责任链模式我后面会单独拿来说。
2025-04-14 15:44:34
717
原创 打造你的 Java 工具箱:自定义注解处理实战手册
想象一下这个场景:你的团队开发了一个电商平台,每个 API 接口都需要进行参数校验。传统做法是在每个方法中编写重复的验证代码:java代码解读复制代码public Response createOrder(OrderRequest request) { // 参数校验 if (request.getUserId() == null) { return Response.error("用户ID不能为空");
2025-04-14 15:44:00
1027
原创 C#关键字:in、out、ref、in T、out T、[In]、[Out]
请看以下的P/Invoke调用,我们通过调用Windows C++的Api弹出对话框,其中,输入参数我们是可以用[In]关键字修饰的,这个通常情况下可以忽略不写。我们可以将ref关键字去掉,重新执行,可以看到 以下执行效果:执行方法前后打印的结果都是3,在方法中对形参的修改,并没有反应到调用者变量p。out关键字同样也是引用传递,和ref不同的是,它可以将参数直接返回,所以out关键字的使用场景主要是:需要参数返回多个值。我们将上面的代码中in关键字,改为ref关键字,并且在方法内部修改形参的值。
2025-04-14 15:40:08
832
原创 2025年Java面试八股文
基本数据类型,如int,float,double,boolean,char,byte,不具备对象的特征,不能调用方法。装箱:将基本类型转换成包装类对象拆箱:将包装类对象转换成基本类型的值java为什么要引入自动装箱和拆箱的功能?主要是用于java集合中,List<Inteter> list=new ArrayList<Integer>();list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。
2025-04-14 15:06:21
1005
原创 Trae + SwiftUI 1 小时实现一个单词本 Mac App
在 AI 发展越来越好的现在,它的应用已经不仅仅限制于帮我们生成问题的答案,还可以直接通过对自然语言的理解帮助我们直接生成对象的代码。对于某些简单的场景,如模版代码实现、结构简单的 UI 绘制等,它现在已经做得很好,这对于程序员的生产力提升还是非常有帮助的。接下来,我通过一个简单的单词本应用,来给大家展示一下 Trae 的真实体验。从这个小例子的使用感受上来说,对开发者的帮助肯定是正大于负的,比我想象中的要聪明很多。希望大家能够拥抱变化,早早的享受到 AI 的红利。
2025-04-13 16:20:23
662
原创 Augment Code:开启AI代理编程新时代
Augment Code是一款专为专业软件工程师设计的AI编程助手,旨在帮助开发者更好地管理和优化复杂的代码库。它通过智能代码补全、实时代码建议和团队协作功能,显著提升开发效率并降低工作负担。Augment Code在SWE-Bench Verified基准测试中以65.4%的成绩排名第一,结合了Claude Sonnet 3.7和OpenAI O1模型,支持高达20万token的上下文,能够处理大型复杂项目。
2025-04-13 16:19:07
670
原创 VSCode AI三大模式,Copilot与通义灵码对比指南
通过合理运用这些模式,开发者可显著提升编码效率,尤其在处理复杂任务时,Agent模式的自动化能力将释放更多生产力。• Copilot Agent模式适合全流程自动化,通义灵码可作为中文场景补充,Cursor AI适合深度AI定制开发。:通过自然语言对话与AI交互,获取代码建议、问题解答或代码片段解释。:复杂任务(如从零创建应用、修复编译错误)、需多轮迭代的开放性问题。:定义明确的代码修改需求,例如重命名变量、调整代码结构。:快速解决代码疑问、理解复杂逻辑、获取代码优化建议。→ Ask模式(如理解代码逻辑)
2025-04-13 16:18:36
555
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人