- 博客(889)
- 收藏
- 关注
原创 RabbitMQ 4.1集群部署与访问测试
为了让3个节点处于同一个集群,我们告诉其中2个节点,如rabbit@gw15、rabbit@gw16,加入到第3个节点的集群,如rabbit@gw14。重置节点会移除节点上的所有数据。消费者程序先前经haproxy连到了gw15节点,当gw15节点上的RabbitMQ实例停掉后,消费者程序自动重连到了其它节点。在gw16节点上,操作与上面是一样的,除了这次我们让节点加入rabbit@gw15节点所在的集群。如上验证所示,使用HaProxy+RabbitMQ集群这种架构,可以保证仲裁队列的高可用,验证通过。
2025-06-04 16:59:36
703
原创 【面试必问】Spring支持注入null和空字符串吗?不懂别去面试了!
如果你遇到这个问题,建议你这样答:在 Spring 中,如果使用 @Value 注入属性时,直接配置为 null 是无法得到真正的 null 的,反而会变成字符串 "null"。如果想注入真正的 null,应该使用 SpEL 表达式 @Value("#{null}")。而空字符串是可以通过配置文件正常注入的,比如 key= 或 key="" 都可以。此外,如果使用 @Autowired 注入 Bean,默认是 required 的,容器中找不到 Bean 会报错。
2025-06-04 16:13:32
437
原创 LangChain4J 教我做人:RAG API 增强原来这么香!
在正式进入主线剧情前,简单给没接触过 RAG 的小伙伴复习一下。RAG 的全称是 Retrieval-Augmented Generation,翻译过来就是“检索增强生成”。本质就是——把用户问题丢给大模型之前,先从你的知识库里找到相关资料,再让大模型结合上下文来回答问题。用户提问 → 检索相关文档 → 组合上下文 → 大模型生成回答这种方式好处多多:更准确、更私有、更可控、更高效。LangChain4J 把整个流程组件化,你可以随意组合。
2025-06-03 22:10:53
459
原创 tomcat 调优-生产环境必备
如果是多核的建议调大 startStopThreads 的值,但不超过内核数。注意一下,为什么我们这里使用的路径是"/dev/./urandom",而不是 "/dev/urandom",是因为在java 8之前的版本设置了/dev/urandom ,但是实际还是使用/dev/random,设置为"/dev/./urandom"才能正常使用 "/dev/urandom" , 这个bug在java8版本已经修复了,如果你是java7版本的话,需要按照上面设置,java8的话可以不用加 "./"。
2025-06-03 12:10:05
523
原创 全网最详细!手把手教你用 LangChain4j 打造 RAG 智能问答系统
一切皆可组合!每个组件都是小而美的 Lego 块,可以按你需求灵活组装,不论是做 Q&A、Agent、还是 PDF 阅读器,都能搞定。你可以简单用 3 行代码喂 PDF,也可以细粒度控制每一步处理逻辑,真的非常适合构建企业级 Java 应用。
2025-06-02 19:17:43
317
原创 HAProxy保持源IP
本篇文章是前一篇《Linux源进源出》的后续,有些场景在那里有更详细的介绍,为能更方便的读懂本文,建议先阅读《Linux源进源出》。负载均衡英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器。常用的负载均衡软件有Nginx,HAProxy,他们功能不在这里复述。负载均衡部署时一般使用反射代理方式,即由负载均衡代理真实的服务器,用户需要访问业务时,首先访问的是负载均衡,再由负载代理用户去访问服务器。
2025-06-02 11:32:10
480
原创 Linux源进源出
源进源出,也叫记录上一跳,即请求报文从某条路径进入,回应报文依然沿着同样的路径返回,而不是通过查找路由表来确定接口,保证了报文从一个接口进出。在我们正常的网络环境下,如果要保证业务正常,就是对整网的路由进行规划,确保回应报文能够回到请求发送者,这也是源进源出的效果。但是有两个场景通过路由规划来实现源进源出不现实:Linux作为互联网接入设备、应用负载均衡记录源。下面以互联网接入设备为场景介绍Linux的源进源出,应用负载均衡记录源将在后面的文章中介绍。Linux的源进源出,主要有几个动作:1。
2025-06-01 11:08:54
816
原创 网络协议相关
包含物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;将其简化为网络接口层、网络层、传输层和应用层;例如OSI的物理层和数据链路层对应TCP/IP的网络接口层,主要处理MAC地址寻址和物理介质传输。
2025-05-31 22:44:45
648
原创 秒杀系统—5.第二版升级优化的技术文档三
如果扣减失败,那么不再获取新的⾃增序列,⽽是在原来的基础之上在加1,然后继续到下⼀台机器扣减库存。通过这个自增序列来记录从哪台Redis实例上扣减库存,然后把这个⾃增序列透传到订单上去,⽐如透传到订单的扩展信息。否则库存就会乱,比如会出现有些机器上库存是负的。首先构建库存在各Redis节点上的库存数据Map对象,然后遍历Redis的节点,接着通过hset命令保存到Redis中(不用设置过期时间)。这样消费订单⽀付成功的消息时,就能找到当时扣减库存的那台Redis,然后就可以进行⽀付成功后的库存扣减操作了。
2025-05-31 22:39:42
530
原创 Java社招面试题:Spring数据访问?我在面试官眼里差点翻车了……
朋友们,我想说:面试中问“Spring数据访问有哪些方式”,不是想考你记得几个框架,而是想看:你用过哪几个?各自适合什么场景?如果让我选,我怎么选?回头看那场面试,我其实挺感激那个面试官的。他没有直接“否掉我”,而是带着我,一步一步把我知识体系中最松散的一块补起来。所以今天这篇文章,就送给准备面试的你、或者像我一样正在“补课”的你。
2025-05-31 22:17:32
902
原创 Linux策略路由
默认优先级为0的ip rule不能删除及修改,它对应的路由表为local,由系统自动产生并更新,local表中有四种目的地址,本机接口的IP,本机接口的IP所属的网段,本机接口的IP所属的网段广播地址,环回地址(127.0.0.0/8)。报文进入Linux时,首先通过prerouting链,在该链中为报文设置meta mark,报文在Linux内部的整个转发过程都会携带这个标识,后续的Rouing模块,或者forward等其它链都可以看到这个标识并把他作为一个匹配条件。
2025-05-31 09:51:01
648
原创 二叉树及建堆的详细介绍
1.调整方向- 向上调整建堆:从最上的叶子节点开始,将每个节点与其父节点比较交换,直到根节点或满足堆的性质。- 向下调整建堆:从最下的根节点开始,与它的左右子节点比较交换,不断向下调整,直到叶子节点或满足堆的性质。2.时间复杂度(向下调整建堆更优)-向上:O(N*logN)-向下:O(N)原因:二叉树最后一层占了几乎一半节点,从下向上调整节点数少,次数少,而从上向下,最后每个节点都要处理,调整次数多(不具体证明了)3.适用场景。
2025-05-30 23:19:57
761
原创 从 RNN 到 GRU、LSTM 再到 Transformer (万字详解)
transformer模型本体的编码器数量一般小于Bert中编码器的数量,导致词汇对上下文的融合能力较弱,此外,由于transformer模型本体一般都以具体的下游任务为导向,数据总量与多样性均不足,并且有明确标注的数据可能在一词多义的情况下导致过拟合(例如模型在测试时遇到低频语义时,可能错误应用高频语义),所以该方法对多义词的处理效果差,即词向量的动态性差。:单维离散,每一个维度采用二进制作为周期函数,非0即1,没有中间量,这种不连续的跳变不符合真实情况(真实的位置信息往往是连续的),不利于模型学习。
2025-05-30 21:31:32
898
原创 「Java教案」Java程序的构成
在Java中,注释用于对代码进行解释说明,提高代码的可读性,或者临时禁用某些代码。变量名 - num1,num2,product,a,b,args。①文档注释 - /** ... */(用于生成API文档);/* 注释1 /* 注释2 */ */ → 错误原因:避免嵌套多行注释。判断以下标识符是否合法:_name、$price、1user、class。编写一个Java类,包含合法标识符的变量、方法,并添加注释。1.列出代码中的所有用户自定义标识符(类名、方法名、变量名)。合法、合法、非法、非法。
2025-05-30 20:25:42
948
原创 Mooncake论文阅读笔记
最近昇腾提供的大EP PD分离推理解决方案非常火,很多开发者都开始使用了。正好这两天也看了一篇PD分离的经典论文,就是Kimi采用的PD分离架构:Mooncake。
2025-05-30 17:35:18
659
原创 尼尔森用户交互设计原则
系统应该让用户时刻清楚当前发生了什么事情,快速的让用户了解自己处于何种状态、对过去发生、当前目标、以及对未来去向有所了解,一般的方法是在合适的时间给用户适当的反馈,防止用户使用出现错误。例如:而当用户输入错误的时候,输入框会变为红色并且在下方出现红色字的错误提示,这样让用户很清楚的知道用户输入错误以及错误的原因,这样用户就知道怎么修改了,这也是容错原则的一种体现。设计的一切表现和表述,尽可能贴近用户所在的环境,将现实环境的操作功能巧妙的转化为线上功能,使其贴近用户。设置防错的机制,减少用户犯错。
2025-05-30 17:04:41
898
原创 Fusion引擎赋能:流利说如何用阿里云Serverless Spark实现数仓计算加速
行业流利说是领先的科技驱动的教育公司,公司自主研发了领先的英语口语评测、写作打分引擎和深度自适应学习系统,致力于为用户提供一整套系统性的英语学习解决方案,从听、说、读、写多个维度提升用户的英语水平。业务特征AI 打分:利用大数据和人工智能算法对用户英语口语评测、写作打分。个性化推荐:根据用户学习目标及评级,自动推荐专项和强化课程内容。数据驱动:通过分析用户画像和学习效果,优化推荐策略,提升用户满意度。数据运营:基于大数据及用户特征,提高运行效率,提升用户黏度及用户满意度。原有架构痛点。
2025-05-30 16:24:28
576
原创 AI编程在BOSS项目的实践经验分享
前言在人工智能技术革新浪潮的推动下,智能编程助手正以前所未有的速度重塑开发领域。这些基于AI的代码辅助工具通过智能提示生成、实时错误检测和自动化重构等功能,显著提升了软件工程的全流程效率。无论是初入行业的开发者还是资深程序员,都能借助这些工具快速突破技术瓶颈——新手可借此规避基础语法错误并学习最佳实践,而资深工程师则能通过智能优化建议将重复性编码工作转化为创造性技术探索,有效缩短从构思到实现的开发周期。一、AI编程的主流方式和选型。
2025-05-30 15:28:15
781
原创 基于YOLOv8的6种金属表面缺陷检测识别项目【完整源码数据集+PyQt5界面+完整训练流程+开箱即用!】
本项目集成了YOLOv8 金属表面缺陷检测模型与PyQt5 图形界面工具,支持对6类金属表面缺陷支持检测输入类型:图片、文件夹、视频、摄像头PyQt5 编写的图形化用户界面(GUI),操作简洁提供完整的模型训练脚本与推理流程开箱即用,适合金属检测类工业项目快速部署项目打包包含完整源码、训练数据集、模型文件及可视化界面程序, 源码附文末。金属表面缺陷检测在制造业中尤为关键,传统方法依赖人工巡检,不仅效率低且误差高。本项目通过集成YOLOv8 深度学习目标检测算法。
2025-05-30 13:58:16
861
原创 OpenTelemetry × Elastic Observability 系列(一):整体架构介绍
本文介绍了 OpenTelemetry Demo 的整体架构,并演示了如何借助 Elastic Observability 实现链路追踪、日志与指标的统一观测。这是 OpenTelemetry × Elastic Observability 实践系列的第一篇文章,在后续的文章中,我们将深入探讨不同编程语言(如 Java、Go、Node.js 和 Python)的 OpenTelemetry 集成实践。
2025-05-30 13:38:22
622
原创 如何启动Windows平台轻量级RTSP服务生成RTSP拉流URL
为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,我们在推送端发布了轻量级RTSP服务模块:简单来说,之前推送端SDK支持的功能,内置轻量级RTSP服务模块后,功能继续支持。
2025-05-30 11:56:59
743
原创 Android平台GB28181历史视音频文件回放规范解读及技术实现
Android平台GB28181历史视音频文件回放,除了上述信令交互外,还需要处理RTP打包发送等,相对其他功能实现更复杂,感兴趣的开发者,可以尝试看看。
2025-05-30 11:55:12
719
原创 DistilQwen-ThoughtX:变长思维链推理模型,超越DeepSeek蒸馏模型
近年来,自然语言处理(NLP)领域以大语言模型(LLM)的出现为标志,发生了深刻变革,引领了语言理解、生成和推理任务的进步。其中,进步尤其显著的是深度推理模型的发展,如 OpenAI 的 o1、DeepSeek-R1 和 QwQ-32B 等,它们在数学问题、代码生成等复杂推理任务中表现突出。这些模型的成功很大程度上得益于使用思维链(Chain-of-Thought, CoT)的推理方式,能够模拟人类的渐进思考过程,将复杂问题化繁为简。
2025-05-30 11:50:05
853
原创 【HarmonyOS 5开发入门】DevEco Studio安装配置完全指南
随着华为鸿蒙OS的快速发展,越来越多的开发者开始关注并投入到这个新兴的生态系统中。作为开发鸿蒙OS应用的第一步,安装并配置好DevEco Studio开发环境至关重要。本文将详细介绍如何下载、安装和初步配置DevEco Studio,帮助你快速进入鸿蒙应用开发的世界。创建项目后,IDE会自动生成项目的基本结构。存放页面代码,每个.ets文件代表一个页面。存放资源文件,包括图片、字符串等。配置文件,用于配置应用的权限、组件等信息。重点关注entry,这是项目的入口模块(Ability)。src。
2025-05-30 11:13:29
560
原创 [建议收藏]RTSP|RTMP直播流录制下来的MP4文件起播慢怎么办?
以上是针对直播流录制起播慢的处理,如果录制下来的文件,需要做在线点播,这块非常必要,有问题或感兴趣的开发者,可以单独跟我沟通探讨。
2025-05-30 11:01:15
322
原创 用trae完全自动化开发一款网页版的俄罗斯方块游戏
我使用的是自定义的大模型,因为我本来以为通过api调用是可以用上最新版本的deepseek R1的。
2025-05-29 17:20:10
957
原创 从Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理
Arm Cortex-M MCU开发大部分会采用满足CMSIS标准的函数,如果使用了编译器的intrinsic函数,在迁移过程中需要适配(比如Keil MDK对应NOP指令的intrinsic函数是__nop,而IAR EWARM对应NOP指令的intrinsic函数是__no_operation)。对应Arm Cortex-M MCU的IAR EWARM支持包:如果对应MCU已经在IAR EWARM的官方支持列表内,则对应MCU的支持包也会在IAR EWARM的安装包内;
2025-05-29 16:18:04
437
原创 HarmonyOS优化应用预置图片资源加载耗时问题性能优化
这些转化后的图片资源可以被GPU直接使用,省略了CPU的处理过程,提高图片的显示速度,减少内存的占用,从而实现内存的提升。纹理压缩是在编译构建中对预置图片进行处理的,首先需要在编辑器的编译文件中配置纹理压缩的相关参数,hvigor根据配置的参数读取将要纹理压缩的文件资源,然后hvigor构造restool命令开始解析并生成资源文件列表,之后根据文件列表来遍历资源文件,将待转换文件进行转码生成纹理格式的文件,已经转换的资源文件不会再打包到构建产物中,最后将纹理文件和未转换的文件一起构建生成资源产物。
2025-05-29 16:08:34
908
原创 vue中使用wangeditor富文本编辑器
需要知道富文本编辑器是所见即所得的文本编辑器,简单来说就是文本上面写的行内样式,那我们该怎样保存这些行内样式呢,在这里我是写成了组件的形式。return中写上如下代码,需要注意的时上传图片后,后端必须返回url图片的链接,否则编辑器中不会显示图片。研究一番发现弱国想要怎加或者修改编辑器的功能首先要获取这个功能的key。到这里其实基本功能已经实现了,那我们怎么保存,编辑器中的内容呢。这个时候编辑器的功能已经实现了 如下图。这个时候就可以看到每个功能的key了。就可以实现你想要的功能了,如下图。
2025-05-29 11:33:52
627
原创 秒杀系统—3.第二版升级优化的技术文档一
中:BossEventBus负责把事件分发给不同的WorkEventBus,每个WorkEventBus就是⼀个事件的通道Channel,每个Channel会关联不同的自定义的Listener。如果要扛1w的秒杀请求,那么至少用15台4核8G的机器部署秒杀系统。即使一个请求发出后刚好遇到JVM正在进行Young GC需要消耗50ms,那么在这50ms内请求会被STW,而在这50ms后请求会开始正常工作,基本一次请求还是可以控制在200ms内,所以Young GC多一点没关系。来实现高效使⽤CPU缓存。
2025-05-29 11:06:40
942
原创 开启 AI 视觉之旅:用 Python 和 YOLO v8 打造专属目标检测模型
当看到图片上那些精准的检测框时,那种成就感油然而生。预训练模型可是 YOLO v8 快速实现目标检测的关键所在,它就像是一位经验丰富的导师,已经在大量数据上进行了训练,具备了一定的目标识别能力。这里为了截图,只开了 30 个周期,但建议大家在实际操作中,训练更多的周期次数,多找一些图片内容进行标注,这样在检测的时候就能更接近预期效果。小贴士:如果下载速度较慢,就像是开车遇到了堵车一样,我们可以尝试更换 pip 源,使用国内镜像源,如阿里云、清华大学等镜像源,这样就能显著提升下载速度,让我们的旅程更加顺畅。
2025-05-29 10:33:59
849
原创 【教程】ISP烧录Digispark的BootLoader固件
如果本文帮助到了你,欢迎[]哦~准备工具硬件软件开始救砖注意事项Digispark被我玩崩了,BootLoader固件被覆盖了,导致Arduino无法烧录代码了,需要重新烧录BootLoader。
2025-05-29 10:06:24
238
原创 面试官问我 Spring 怎么注入集合,我拿出了这份全攻略!
我们今天一起从一个看似简单的问题出发,一步步讲到了:如何注入 List、Set、Map;XML 与注解配置的区别;自动装配多个实现到集合;使用 @Value 从配置文件注入集合;面试中的“加分项”与应对策略。这正是面试中常见的“递进式问题”:你以为它只是一个集合,其实它考察的是你对 Spring IoC 容器、Bean 注入方式、组件管理能力的理解。
2025-05-29 10:00:16
795
原创 12.HarmonyOS NEXT动态卡片布局精解:高度自适应与ForEach渲染技术
登录后复制private cardData: string[] = ['科技新闻', '热点事件', '财经分析', '娱乐资讯', '体育快报']1.本教程详细讲解了如何在HarmonyOS ArkUI框架中使用ForEach组件结合Flex容器实现动态高度卡片列表。我们探讨了ForEach的基本语法和参数,分析了动态高度卡片的实现方法,并提供了多种实用技巧和最佳实践。
2025-05-29 09:11:01
829
原创 供应链计划性能优化解决方案-Clickhouse本地Join
本文主要针对供应链计划业务发展过程中系统产生的瓶颈问题的解决方案进行阐述,并且分享一些问题解决过程中用到的一些工具方法,希望对其他业务同类问题提供启发,原理细节不着重介绍,如有兴趣欢迎一起探讨。
2025-05-27 14:45:08
1001
原创 从扣减库存场景来讲讲redis分布式锁中的那些“坑”
假设这么一个极限情况,当代码用时9.9s运行到判断处,此时因为网络卡顿导致释放锁还没执行,但10s的时间到了锁自动释放了,而这时请求2拿到锁进来了,但请求1执行到释放锁把请求2的锁释放掉了,于是又回到了前面的“虽然代码逻辑很简单,乍一看也没什么问题,但相信聪明的读者已经想到了在高并发场景下可能存在的问题:在短时间内突然大量的请求这个接口,假如有3个请求同时执行到取键值对并进行了扣减库存,那么此时实际上库存是-3,但这3个请求是在同一时刻执行,所以最终只做了减1并重新存储到了redis中。
2025-05-27 10:53:09
845
原创 Spring单例Bean线程安全吗?90%的面试者都答错了!
面试题:Spring中的单例Bean线程安全吗?Spring中的单例Bean是容器级别的单例,即容器中只存在一个Bean实例。但这并不意味着它本身是线程安全的。线程安全与否取决于Bean是否是无状态的。对于无状态的Bean(例如只执行查询、无共享成员变量),是线程安全的;但如果Bean中存在可变的成员变量,且被多个线程共享访问,则需要开发者自己保证线程安全,比如使用同步机制、线程安全的集合、ThreadLocal 或者更改作用域为 prototype。
2025-05-27 09:50:18
567
原创 Python脚本分析CPU使用情况
您可以获得脚本的整个输出,并且在每行之前,您可以看到对其进行的调用次数,运行时间(秒),每次调用的时间和全局时间的百分比,pprofile为我们的输出添加了额外的行(如第44和50行,以(call)开头)与累积指标。与cProfile相比,使用CPython时的分析时间要多28倍,而使用PyPy时,分析时间要多10倍,而且细节水平更加细化。这个分析器的一个主要缺点是它不支持PyPy。例如,在顶部的第三个红色方块中,方法primes占用了98.28%的时间,其中65.44%的内容在其中进行,调用了40次。
2025-05-27 09:06:42
627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人