- 博客(810)
- 收藏
- 关注
原创 大型前端应用如何做系统融合?
A平台与B平台同属于同一系统链路上,前者主要致力于为用户提供注册入驻服务,后者则专注于提供具体业务操作服务。两者皆为运营人员所依赖的在线管理工具。在经历了为期两个月的紧张工作后,我们成功地将两个大型项目进行了深度整合,取得了显著的阶段性成果。通过这一融合过程,我们不仅统一了项目的代码规范和架构,还显著提升了组件的复用率。尽管在这个过程中我们遇到了诸多挑战和曲折,但最终的成果——用户体验的显著提升——使一切努力都显得弥足珍贵。我们深知,每一个成功的项目背后都有无数次的尝试和优化。
2025-05-20 14:45:57
516
原创 HarmonyOS实战:3秒实现一个自定义轮播图
轮播图作为应用程序中最普通使用的控件被广泛应用,相信对于来发者来说并不陌生。在 Android 中实现一个 轮播图很多选择使用第三方的插件,毕竟在有限的开发排期中自己动手去实现一个轮播图 并不那么简单,需要考虑的细节很多。支持自定义循环播放,自动播放。支持自定义播放时间间隔。支持横向和竖向轮播。支持自定义指示器。在鸿蒙实际开发中,实现一个轮播图是十分方便的,但是这并不是意味着所有功能都简单,还有一些看似简单的效果实现起来却是十分的复杂。学会的小伙伴赶紧动手试试吧!
2025-05-20 14:43:47
257
原创 HarmonyOS:使用PickerController将编辑后的图片替换原图
应用可获得用户从Picker选择的图片、视频的访问权限,读取图片、视频后进行编辑、修改。完成编辑修改后的图片/视频缓存到应用沙箱后,可调用本API,将编辑结果文件发送给PhotoPicker,并指定替换显示的原图。应用指定保存的文件,需在替换显示的范围内。新uri,即替换后的uri。基于originalUri修改后期望在photoPicker上替换originalUri显示的,暂存在应用沙箱的图片/视频uri。应用可通过该接口,将photoPicker中用户勾选的图片替换为应用后期编辑修改后的图片。
2025-05-20 09:19:19
482
原创 鸿蒙HarmonyOS NEXT开发:安全区域、沉浸式页面开发实践,软键盘布局适配解决方案
在软键盘系统避让机制中介绍过,弹窗为避让软键盘会进行避让,整体向上抬,这样可能会影响用户体验。比如下面这个评论里列表的弹窗,使用@CustomDialog实现的。当用户点击弹窗底部的输入框的时候,弹窗会整体上抬,输入框上抬的距离也过多。为了解决以上问题,可以使用Navigation.Dialog,通过设置NavDestination的mode为NavDestinationMode.DIALOG弹窗类型,此时整个NavDestination默认透明显示,示例代码如下:登录后复制@Entry。
2025-05-20 09:19:18
499
原创 Seata源码—7.Seata TCC模式的事务处理
该应用会订阅Dubbo服务,发起分布式事务,调用上述两个TCC参与者,内含TCC事务提交场景和TCC事务回滚场景的演示。TccTransactionService作为分布式事务的入口,其提交事务和回滚事务的接口都会被添加上@GlobalTransactional注解。Action拦截处理器在注册TCC的分支事务时,会调用DefaultResourceManager的branchRegister()方法。在TccActionInterceptor的invoke()方法中,会通过。
2025-05-20 08:55:34
412
原创 Electron Forge【实战】带图片的 AI 聊天
图片很占空间,转为字符串直接存入数据库压力过大,合理的方案是存到应用本地。渲染进程中,无法直接读取本地图片,需借助 protocol 实现。需借助 webUtils 从 File 对象中获取文件路径。函数封装 – 将消息转换为 AI 模型需要的格式。将消息转换为 AI 模型需要的格式后传给 AI。仅支持文字,要想体验图片聊天,需改用。在 createWindow 方法内执行。继续向 AI 提问时图片参数。img 的 src 添加了。发起 AI 聊天传图片参数。用于便捷获取图片的类型。
2025-05-20 07:04:30
395
原创 【node】中间件分类
定义中间件监听req的data事件监听req的end事件使用querystring模块解析请求体数据将解析出来的数据对象挂载req.body将自定义中间件封装为模块data事件来获取客户端发送到服务器的数据。数据量比较大的话,客户端会把数据切割分批发送到服务器端,data事件会触发多次 每次都获取到完整数据的一部分。end事件当请求体数据接收完毕之后,会自动触发req的end事件。因此可在end事件中,拿到并处理完整的请求体数据。登录后复制// 自定义的中间件str+=chunk。
2025-05-19 22:35:08
689
原创 【JavaEE】Mybatis XML配置文件实现增删改查
一、环境准备在使用XML来实现的数据库操作的时候,我们的依赖下载与前面的使用注解时的依赖是一样的。在配置文件yml格式,也需要添加上跟使用注解时的配置。还要多加上。
2025-05-19 22:14:14
548
原创 【Docker项目实战】使用Docker部署MicroBin粘贴应用程序
MicroBin是一个超小型、功能丰富、高度可配置、安全、独立且自托管的 Pastebin Web 应用程序,使用 Rust 编程语言开发。它旨在为用户提供一种简单、高效的方式,以分享文件、文本和URL,并支持多种高级特性,如服务器端和客户端加密、文件上传、原始文本服务、QR码生成、URL缩短与重定向等。1.本次实践部署环境为个人测试环境,生产环境请谨慎;2.在Docker环境下部署MicroBin粘贴应用程序。通过使用 Docker 部署 MicroBin 粘贴应用程序,深刻体会到其便捷性与高效性。
2025-05-19 17:16:41
410
原创 【SLAM】在ORB_SLAM2的ROS模式下使用RealSense D435相机
先前已经编写了如何用TUM数据集运行ORB_SLAM3以及如何在ROS模式下运行ORB_SLAM3的博客,ORB_SLAM3是基于ORB_SLAM2的,甚至代码仓库中还有遗留的ORB_SLAM2命名空间namespace没有修正,二者不管是用TUM RGB-D数据集直接运行还是在ROS模式下运行的命令都完全一致。所以,在阅读本文之前,先参考上面给出的两篇博客,安装ORB_SLAM2的依赖库和ROS环境。
2025-05-19 14:59:46
595
原创 【MCP】了解远程MCP调用背后使用的SSE协议
和MCP的远程服务是通过SSE(Server-Sent Events)启动的,SSE是一个基于HTTP的长连接协议。SSE在逻辑上是一个由客户端发起、由服务器同意而建立的从服务器向客户端发消息的单向管道。这个管道建立之后,客户端给服务器发消息时用传统方式发,服务器给客户端发消息时用这个管道发,双方就可以灵活地进行通信了。MCP SSE客户端会发起多个请求,第一个请求是/sse路径,这是建立SSE长连接的第一步。
2025-05-19 14:59:11
389
原创 【MCP】详细了解MCP协议:和function call的区别何在?如何使用MCP?
2025年,Anthropic提出了MCP协议。MCP全称为Model Context Protocol,翻译过来是大模型上下文协议。这个协议的主要为AI大模型和外部工具(比如让AI去查询信息,或者让AI操作本地文件)之间的交互提供了一个统一的处理协议。我们常用的USB TypeC接口(USB-C)统一了USB接口的样式,MCP协议就好比AI大模型中的USB-C,统一了大模型与工具的对接方式。
2025-05-19 14:58:57
761
原创 Chroma向量检索实战:打造智能客服的“最强大脑”
向量库(Vector Database)是一种专门设计用来存储和检索向量数据的数据库系统。在这个文件中使用的ChromaDB就是一种向量数据库。向量嵌入(Embeddings) :将文本、图像等非结构化数据转换为高维数字向量相似性搜索 :基于向量间的距离(如余弦相似度)快速查找相似内容高效索引 :使用特殊的索引结构(如HNSW)加速相似性搜索。
2025-05-19 14:50:56
422
原创 Harbor2.0仓库镜像清理策略
在策略页面,点击“编辑”按钮,配置策略的执行时间。-配置并执行镜像清理策略后,镜像的元数据会被删除,但实际的存储空间不会立即释放。为彻底释放空间,需要执行垃圾回收操作。目前 公司的Harbor存储已经占用1T,好多的repo的镜像tag达到上百多,没有清理十分占用空间。:多个策略可能存在冲突,Harbor 按照策略的创建顺序依次执行,建议合理规划策略的优先级。在策略页面,点击“立即执行”按钮,可以手动触发策略,立即清理符合条件的镜像。:在生产环境应用策略前,建议在测试环境验证策略的效果,避免误删重要镜像。
2025-05-19 14:49:20
428
原创 Threejs 奇幻几何体:边缘、线框、包围盒大冒险
Draco 是一个开源的 3D 图形压缩库,可以有效地减少 3D 模型的文件大小,加快加载速度,并保持较高的图形质量。在 Three.js 中,模型解压是指将压缩的模型文件解压缩为 Three.js 可以直接使用的模型对象的过程。包围盒(Bounding Box)是一个用于描述物体体积的几何体,用于计算物体的位置、大小和碰撞等属性。方法用于合并两个包围盒,返回值为合并后的包围盒对象。方法用于计算几何体的包围盒,返回值为包围盒对象。属性用于获取几何体的包围盒,返回值为包围盒对象。
2025-05-17 11:15:51
961
原创 春招季面试,Spring 的设计模式考点来了!
哈喽大家好,我是小米,一个在互联网行业摸爬滚打多年的程序员,虽然已经 31 岁了,但依然热爱技术分享,尤其是和小伙伴们一起学习进步!最近春招如火如荼,后台有不少小伙伴私信我:“小米,我去面试 Spring 开发岗位,我支支吾吾说了一些,感觉不够全面,怎么办?没错,这类问题真的太常见了,尤其是社招面试中,面试官总喜欢考一些既基础又深入的知识点,来判断你对框架的理解深度。
2025-05-17 10:31:04
862
原创 【SQL周周练】:利用行车轨迹分析犯罪分子作案地点
大家可以先看看故事背景,这是两个多月前写的。写作方法是我提一个梗概,然后让 Deepseek 或者 Qwen 润色和发散;等它们返回来结果,我再吸收和更改;然后再提问再更改,如此往复五次以上。我还没有尝试过 Gemini 2.5 pro 或 GPT 来写。登录后复制凌晨三点,T 市西郊分局的走廊映着惨白的荧光,袭来一种不真实感。刑警队长王泽宇脚步急促,径直走向拘留室区域,值班台的警员小李正在踱步抵抗困意。“王队,您亲自来了,要提审谁?” 小李看到王队后一个激灵。话音未落,警员老张默默地拉开通道的铁门。
2025-05-16 22:18:20
897
原创 Midi文件的解析和播放
(如果采用了32bit编译,需要将java定义的native方法中句柄类型从long改成int,并使用32bit JDK运行),链接时要加入#pragma comment(lib, "winmm.lib")库,编译后生成midi.dll文件,调用解析播放程序:parse("C:\\Users\\cc\\OneDrive\\src\\resource\\Pachelbel Johann — Canon in D.mid");编写java测试程序,调用如果能正常运行,可从音箱听到钢琴声音。
2025-05-16 21:38:15
983
原创 详细介绍list的模拟实现及特点
在数据结构中,有一种链表结构是带哨兵位的头节点,其每一个节点都有一个指向上一个节点的指针以及指向下一个节点的指针,从而形成一种环状结构。STL中list就采用了带头双向循环链表的结构,弥补了(vector)连续空间的结构不适于对中间数据频繁插入删除的缺点。
2025-05-16 19:58:34
665
原创 基于Java的不固定长度字符集在指定宽度和自适应模型下图片绘制生成实战
在当今数字化与信息化飞速发展的时代,图像的生成与处理技术正日益成为众多领域关注的焦点。从创意设计到数据可视化,从游戏开发到人工智能辅助创作,高效、精准且具有高度适应性的图像生成方案有着广泛而迫切的需求。Java 作为一种强大、稳定且广泛应用的编程语言,在图像绘制领域也发挥着不可忽视的作用。在GIS领域,比如图例的生成就会面对以上的问题。由于在进行字符标注时无法预测文本的长度,因此我们需要能有一种自适应文本长度的生成方法,但是同时,也有可能我们需要指定一种宽度从而对字符文本进行绘制的需要。
2025-05-16 14:20:22
1004
原创 使用Geotools实现将Shp矢量文件加载SLD并合并图例生成-以湖南省周边城市为例
在当今数字化时代,地理信息系统(GIS)技术已成为城市管理、资源规划、环境监测等众多领域不可或缺的工具。GIS 制图作为该技术体系中的核心环节之一,旨在将复杂的地理空间数据以直观、清晰且易于理解的地图形式呈现出来,为决策者提供有力的可视化支持。在 GIS 制图过程中,矢量数据的可视化呈现占据着举足轻重的地位。Shapefile(Shp)格式作为矢量数据的常用存储形式,以其良好的兼容性和通用性,在地理信息数据的交换与共享中得到了广泛应用。
2025-05-16 14:08:33
713
原创 Rust 集合:编程中的得力助手
登录后复制where1.2.3.4.5.6.7.登录后复制where1.2.3.4.5.6.7.8.很多Vec 的方法在VecDeque 中都有实现:.len(), .is_empty(), .insert(index, value), .remove(index), .extend(iterable),等等登录后复制where1.2.3.4.5.6.登录后复制where1.2.3.4.5.6.
2025-05-16 12:09:48
1003
原创 精通Java系列|Java反射机制
由于JVM为每个加载的类class创建了对应的Class类对象,并在实例中保存了该类class的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等,因此,如果获取了某个Class类对象,我们就可以通过这个Class类对象获取到其对应的类class的所有信息。在堆内存中最多只会存在某个类的唯一的Class对象,因为类只会加载一次,每个类的实例对象都会知道自己对应的Class对象,通过Class类对象可以完整地得到其对应的类的信息,通过一系列反射 API。方法创建了一个接口对象。
2025-05-16 12:08:57
661
原创 记一次 .NET某旅行社酒店管理系统 卡死分析
这次卡死的生产事故,是大量数据库的慢请求导致SDK侧的数据库连接池(100)耗尽所致,如果有数据库侧的监控工具,我想一眼就能找到答案。
2025-05-16 11:53:06
595
原创 【redis】哨兵模式
(主节点宕机需手动提升从节点);(无法自动检测节点异常);(网络分区可能导致双主数据冲突)。这些缺陷使得系统可用性难以保障,尤其在分布式场景下隐患显著。为此引入哨兵模式将故障恢复时间从人工介入的分钟级压缩至秒级,构建了完整的高可用体系。
2025-05-16 11:53:01
860
原创 【redis】主从复制
Redis的单机模式仅部署单个实例,一旦节点宕机或网络故障,所有依赖Redis的服务将不可用,这就是所谓的单点故障问题。单节点需承担全部读写请求,并发量高时可能成为性能瓶颈。单节点受限于物理内存容量,无法突破内存物理上限存储海量数据。所有请求都怼到一个实例,磁盘IO、网络IO、带宽、CPU等资源都会成为瓶颈。注意:读写分离并不是Redis自带,需要客户端手动实现。
2025-05-16 11:52:52
896
原创 (JS实现预览DWG文件)WEB CAD的圆孔标记功能
圆孔标记是一种常用的工程图纸标注方式,用于标识圆形孔的位置和特征。本文档将详细介绍如何通过自定义实体来实现圆孔标记功能。具体功能源码可下载MxDraw云图开发包。登录后复制// 圆孔圆心// 圆孔半径// 标记圆上的点集合// 标记中心点集合// 标记圆弧中心点// 标记基点// 包围盒点1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.
2025-05-16 11:47:26
568
原创 MySQL的 where 1=1会不会影响性能?看完官方文档就悟了!
where 1=1和<where> 标签到底会不会影响性能,这个问题在网上已经出现了很多次,今天还是想从官方文档来进行说明。如果 MySQL Server版本大于等于 5.7,两个随便选,或者根据团队的要求来选;如果 MySQL Server版本小于 5.7,假如使用的是 MyBatis,建议使用<where> 标签,如果使用的还是比较老的 iBATIS,只能使用where 1=1;最后,遇到问题,建议首先查找官方的一手资料,这样才能帮助自己在一条正确的技术道路上成长!
2025-05-16 11:25:31
683
原创 在AMD GPU上部署AI大模型:从ROCm环境搭建到Ollama本地推理实战指南
在 AMD 硬件上构建 LLM 推理环境目前仍面临一定技术挑战,尚未达到 NVIDIA CUDA 生态系统的即插即用水平。本文所述的工具链和配置方法,完全可以将现有的 AMD 游戏显卡转化为高效的 AI 推理设备。这种方案不仅在经济性上更具优势,还有助于推动 AI 硬件生态系统的多元化发展。随着 AMD 持续完善 ROCm 平台,以及开源社区对非 NVIDIA 硬件的支持不断增强,基于 AMD GPU 的本地 LLM 部署方案将获得更广泛的应用。
2025-05-16 10:41:20
625
原创 旋转死锁:Threejs 四元数魔法对抗欧拉角困局
在欧拉角的表示里,通常是当绕其中一个轴旋转 ±90 度时,另外两个轴会重合,从而出现万向节死锁。这时候,不管是绕 X 轴旋转还是绕 Z 轴旋转,产生的效果是一样的,这就意味着失去了一个自由度,这种现象就是万向节死锁。四元数是一种表示三维空间中旋转的方法,它由四个部分组成,分别是 w、x、y、z。创建一个欧拉角对象,其中 x、y、z 分别表示绕 x 轴、y 轴和 z 轴的旋转角度,order 表示旋转顺序。绕着哪个轴旋转,哪个轴的分量就为 1,其他轴的分量就为 0。是一个四元数对象,表示物体的旋转。
2025-05-16 10:28:18
949
原创 都说 SpringBoot 启动慢,知道慢在哪吗?
如果你近期准备面试跳槽,建议在ddkk.com在线刷题,涵盖 一万+ 道 Java 面试题,几乎覆盖了所有主流技术面试题,还有市面上最全的技术五百套,精品系列教程,免费提供。可以看到 ,refreshContext 部分才是大头 ,这里就是 Bean 加载创建最核心的流程 ,我们一般知道的。这个是一大根源 ,(由于统计时间的逻辑不够严谨,所以Bean处理的时间被分摊到 prepareRefresh 中了)SpringBoot 本身是知道自己过于臃肿的 ,所以在后面的迭代中都有意识的为自己的代码进行瘦身。
2025-05-16 10:06:46
892
原创 Vue底层原理
优化阶段:遍历AST,找出其中的静态节点,并打上标记;通过VNode,Vue可以在内存中进行DOM操作,避免直接操作真实DOM,从而提高性能。通过这种方式,Vue 能够找出发生变化的部分,并仅对这些部分进行真实 DOM 的更新,从而提高性能。Vue会把用户在标签中写的类似于原生HTML的内容进行编译,把原生HTML的内容找出来,通过理解VNode的结构和生命周期,可以更好地掌握Vue的渲染机制,并编写出更高效的Vue应用。,而render函数会将模板内容生成对应的VNode。,如v-on、v-if等。
2025-05-16 09:58:57
810
原创 使用eNSP模拟在华为交换机S5700上配置针对不同网段用户限速实例
将接口GE0/0/1、GE0/0/2的接入类型分别配置为Trunk,并分别将接口GE0/0/1和GE0/0/2加入VLAN 10、VLAN 20。不同楼层的用户通过不同的接入交换机S3700-1F和S3700-2F连接网络,且分别属于不同的网段,针对不同网段的用户提供不同的带宽。# 在S5700上创建流策略p1,将流分类和对应的流行为进行绑定,并将流策略应用到接口GE0/0/24出方向上,对报文进行流量监管。# 在S5700上创建流分类c1、c2,对来自不同楼层的用户进行分类。
2025-05-16 09:50:36
551
原创 带你用vue2写后台系列(封装Svg组件SvgIcon-挖坑并填埋)
也就是说我们不能使用v-html,这里我们改成svg的方式,这里svg的使用具体可以查看这篇svg文章,之前看的感觉蛮不错的!也可以看看Element的组件这部分源码!当我们的组件十分多的时候,这个时候我们几百上千个总不可能一个一个去注册吧,这个时候我们就会去自动全几乎注册某个文件夹下面的组件。回头看一下我们的svgIcon组件内部,我们使用名字是直接使用的,是不是我们传递参数地址错误了呢?1、封装一个Svgicon组件,全局注册,我们使用的时候,只需要使用上面的名字就可以实现文件夹下icon的使用。
2025-05-16 09:20:05
509
原创 【HarmonyOS NEXT】多目标产物构建实践
在鸿蒙应用开发中,一个应用可定义多个 product,每一个 product 对应一个定制的 APP 包,每个 product 中支持对 bundleName、bundleType、输出产物名称、icon 和 label 以及包含的 target 资源文件等内容进行定制。与此同时,也可以将环境配置和签名信息通过 product 进行隔离,通过选项切换环境进行构建,避免频繁的手动修改关键参数而造成打包遗漏的情况。工程级build-profile.json5文件。
2025-05-15 17:03:01
838
原创 vivo 互联网研发效能关键技术与实践
需求标准化更加强调需求从提出到需求实验全链路闭环管理,最终实现需求端到端交付;研发标准化更多强调从分支拉出到交付上线的标准化、自动化过程。
2025-05-15 15:59:09
899
原创 深入了解结构体
前面我们也涉及到了结构体的讲解,但是只是粗略的讲了一下。接下里详细讲解。结构体位段(bit field)是一种数据结构,在C语言中用于存储和操作内存中的位级数据。结构体位段允许程序员指定一个变量只占用指定位数的内存空间,而不是整个字节或字。这种灵活性允许在一个字节或字中存储多个不同的位级信息,从而节省内存空间。
2025-05-15 11:58:19
862
原创 Linux系列:如何用perf跟踪.NET程序的mmap泄露
这类问题的泄露真的费了我不少心思,曾经让我纠结过,迷茫过,我也捣鼓过 strace,最终都无法找出栈上的托管函数,真的,目前 .NET 在 Linux 调试生态上还是很弱,好无奈,这篇文章我相信弥补了国内,甚至国外在这一块领域的空白,也算是这一年来对自己的一个交代。
2025-05-15 10:17:02
980
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人