首页 文章 精选 留言 我的

精选列表

搜索[车载本地化],共2838篇文章
优秀的个人博客,低调大师

🔥 本地化模拟分布式能力的神器:Local-Solon-Cloud-Plugin

引言:统一的开发体验 在微服务架构日益普及的今天,开发人员经常面临一个困境:如何在本地开发环境中高效测试分布式服务功能?或者一套系统给不同的客户使用,有的需要单体部署,有的需要分布式部署,有的需要微服务部署。 传统做法,往往需要在本地搭建复杂的分布式环境,或者为不同部署方式编写不同的代码(要么用微服务方式开发,要么用单体方式开发)。Local-Solon-Cloud-Plugin 正是为解决这一痛点而生。 插件概述 核心定位 Local-Solon-Cloud-Plugin 是一个基于本地适配的 Solon Cloud 插件,它模拟实现了分布式系统的核心能力,却不需要真实的分布式环境。自 v1.11.2 版本开始提供支持,该插件覆盖了 Solon Cloud 所能提供的大部分接口能力。 核心价值 统一开发接口:所有项目使用相同的 Solon Cloud 接口进行开发 无缝环境切换:通过简单配置切换,即可在"本地单体服务"和"分布式服务"之间自由转换 降低测试复杂度:无需搭建复杂分布式环境即可测试分布式功能 应用场景示例 // 同一套代码,不同环境运行 // 本地开发:使用 local-solon-cloud-plugin // 生产环境:切换为 water 或其它分布式实现 import org.noear.solon.cloud.annotation.CloudJob; // 定时任务示例 @CloudJob(name = "demoJob", cron7x = "0 0 0 * * ?") public void executeJob() { // 本地开发时由插件调度 // 生产环境可由 Water 或 XXL-Job 调度 } 快速开始 添加依赖 <dependency> <groupId>org.noear</groupId> <artifactId>local-solon-cloud-plugin</artifactId> <!-- 版本跟随 Solon 主版本 --> </dependency> 基础配置 # app.yml solon.app: name: demoapp group: demo solon.cloud.local: server: "./solon-cloud/" # 必须设置,也可以是资源目录 config: load: "demoapp.yml" # 加载配置到应用属性 discovery: service: demoapp: # 添加本地服务发现 - "http://localhost:8081" 配置区别说明 体外目录(如./solon-cloud/):支持文件上传功能 资源目录(如classpath:META-INF/solon-cloud/):不支持文件上传 Solon Cloud 能力支持详情 云端能力接口 说明 本地模拟实现 备注 CloudConfigService 云端配置服务 ✅ 支持 不支持 namespace;支持 group CloudDiscoveryService 云端注册与发现服务 ✅ 支持 不支持 namespace;支持 group CloudEventService 云端事件服务 ✅ 支持 不支持 namespace;支持 group CloudFileService 云端文件服务 ✅ 支持 完整实现 CloudI18nService 云端国际化服务 ✅ 支持 完整实现 CloudJobService 云端定时任务服务 ✅ 支持 完整实现 CloudListService 云端名单列表服务 ✅ 支持 完整实现 CloudMetricService 云端度量服务 ⚠️ 空实现 仅保证接口调用不报错 CloudTraceService 云端链路跟踪服务 ⚠️ 空实现 仅保证接口调用不报错 核心功能详解 1. 云端配置服务(本地模拟) 支持 YAML、Properties 格式,文件路径格式:config/{group}_{name} 配置加载方式: # app.yml solon.app: name: demoapp group: demo solon.cloud.local: server: "/data/demo/solon-cloud/" config: load: "demoapp.yml,demo-db.properties" 注解注入方式: import org.noear.solon.annotation.Bean; import org.noear.solon.annotation.Configuration; import org.noear.solon.cloud.annotation.CloudConfig; @Configuration public class Config { // 直接注入云端配置(已经 config.load 的配置) @Bean public DataSource initDbConfig(@Inject("${demo-db}") HikariDataSource ds) { return ds; } // 动态获取云端配置(直接注入配置块) @CloudConfig("test.yml") private Properties testSettings; } 2. 服务注册与发现(本地模拟) 在本地环境中模拟服务注册中心的功能: solon.cloud.local: discovery: service: user-service: - "http://localhost:8081" - "http://localhost:8082" order-service: - "http://localhost:8083" 可以通过环境配置,切换单体或分布式的配置需求。 3. 云端事件服务(本地模拟) import org.noear.snack4.ONode; import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Mapping; import org.noear.solon.annotation.Post; import org.noear.solon.cloud.CloudClient; import org.noear.solon.cloud.model.Event; // 发布事件 @Mapping("order") @Controller public class OrderController { @Post @Mapping("create") public void createOrder(Order order) { // 发布订单创建事件 CloudClient.event().publish(new Event("order.created", ONode.serialize(order))); } } //------------------------------------ import org.noear.solon.cloud.CloudEventHandler; import org.noear.solon.cloud.annotation.CloudEvent; import org.noear.solon.cloud.model.Event; // 订阅事件 @CloudEvent("order.created") public class OrderEventHandler implements CloudEventHandler { @Override public boolean handle(Event event) throws Throwable { // 处理订单创建事件 return false; } } 注意:本地模拟实现不支持事件持久化,重启后数据会丢失。生产环境建议使用消息队列适配框架。 4. 文件服务(本地模拟) 文件存储在${server}/file/目录下,支持标准文件操作接口。 5. 国际化服务(本地模拟) 文件格式:i18n/{group}_{name}-{locale}(不支持文件后缀) import org.noear.solon.annotation.Bean; import org.noear.solon.annotation.Configuration; import org.noear.solon.cloud.impl.CloudI18nBundleFactory; import org.noear.solon.i18n.I18nBundleFactory; //注册国际化包工厂 @Configuration public class DemoConfig { @Bean public I18nBundleFactory i18nBundleFactory(){ //将国际化服务,切换为云端接口 return new CloudI18nBundleFactory(); } } //使用 solon.i18n 接口 import org.noear.solon.annotation.Controller; import org.noear.solon.annotation.Mapping; import org.noear.solon.i18n.I18nService; import java.util.Locale; @Controller public class DemoController{ I18nService i18nService = new I18nService("test-api"); @Mapping("/hello") public String hello(Locale locale){ return i18nService.get(locale, "hello"); } } 6. 定时任务调度(本地模拟) import org.noear.solon.cloud.annotation.CloudJob; @CloudJob(name = "dailyReport", cron7x = "0 0 2 * * ?") public void generateDailyReport() { // 每天凌晨2点执行 // 注意:时间到就会启动新的执行,不管上次是否完成 } 7. 名单服务(本地模拟) 支持IP白名单/黑名单等功能,JSON格式存储:list/{name}-{type}.json 实战示例 完整配置示例 solon: app: name: demoapp group: demo solon.cloud.local: server: "./cloud-data/" config: load: "app.yml,db.yml" refreshInterval: 10s # 配置刷新间隔 discovery: service: user-service: - "http://localhost:8080" product-service: - "http://localhost:8081" job: enabled: true # 启用任务调度 event: enabled: true # 启用事件调度 多环境切换配置(参考) # 本地开发环境(使用本地模拟) solon.cloud: local: enabled: true server: "./solon-cloud-local/" # 生产环境(使用真实的分布式服务) # solon.cloud: # water: # server: "water-server:9371" # config: # load: "demoapp.yml" 注意事项 事件持久化:本地事件服务不支持持久化,重要业务场景需注意 性能监控:度量服务和跟踪服务为空实现,生产环境需要替换 集群特性:本地模拟不支持真正的集群特性,如分布式锁、Leader选举等 配置同步:多实例情况下,本地配置需要手动同步(也可以打包到 jar) 总结 Local-Solon-Cloud-Plugin 为 Solon Cloud 生态提供了一种优雅的解决方案,它让开发者在享受分布式架构优势的同时,避免了本地开发的复杂性。通过统一的接口设计和灵活的环境切换能力,该插件显著提升了开发效率,方便适应不同的客户需求。 无论是初创项目快速验证,还是大型项目的本地开发,Local-Solon-Cloud-Plugin 都是一个值得尝试的优秀工具。它的存在使得"一次编写,处处运行"的理念在分布式开发领域得以更好地实现。

优秀的个人博客,低调大师

CKEditor 5 v35.0 发布,迁移到 TypeScript、新增 38 种本地化语言

CKEditor 5 是一个强大的富文本编辑器框架,具有模块化架构、现代集成和协作编辑等功能。CKEditor 5 v35.0.0 正式发布,更新内容如下: 样式下拉菜单与追踪修改功能集成 v34.0.0 版本带来了 "样式" 功能。它让用户可以通过 CKEditor 5 工具栏中的下拉菜单将预定义的样式应用到他们的内容中,样式是由一个 CSS 类表示,可以从内容中添加或删除。 35.0.0 版本将样式功能与强大的协作工具 —— Track Changes(追踪修改)功能进行了整合。从现在开始,语义和表现风格也可以在多用户环境中轻松使用。因此,可以跟踪和标记此类更改以供编辑接受或拒绝。 迁移到 TypeScript 对于像 CKEditor 5 这样的大型复杂项目,TypeScript 是一个更好的选择。 第一个使用 TypeScript 重写的包是 @ckeditor/ckeditor5-utils,它完全由 TS 开发。 新的专业翻译 随着 CKEditor 5 被越来越多用户使用,来自世界各地的用户都希望使用他们的母语来使用编辑器。 从 35.0.1 版本开始,CKEditor 5 将提供 41 种完全翻译的语言,其中 38 种是新的、专业的、商业的翻译。虽然软件的基本语言是英语,但新版本也将提供许多其他欧洲语言、中日韩语言、从右到左的文字语言等。 增强编辑器功能 媒体嵌入功能允许用户轻松地将 YouTube 视频嵌入他们的内容中。从 v35.0.0 开始,在粘贴的链接中也可以包含一个时间戳。这样就很容易在一个特定的时间点开始嵌入视频,从而获得对媒体的更大控制。 错误修复 在应用了样式的折叠选择后,编辑器在进行选择时不再崩溃。 表格属性面板中的颜色按钮现在有了合适的标签,因此它可以供屏幕阅读器使用 编辑器现在允许在 toWidgetEditable() 助手中设置一个无障碍标签,为图像标题添加了缺失标签 更多详情可查看:https://ckeditor.com/blog/ckeditor-5-v35.0.0-with-collaboration-and-typescript-migration/

优秀的个人博客,低调大师

BM25 + 向量混合检索本地化落地:赣州同城 AI 获客底层技术方案

生成式大模型驱动的同城本地流量竞争,已经从 POI 完善、内容铺量的表层运营,下沉至 RAG 检索召回底层。当前赣州大量实体商家陷入共性困境:完成 NAP 标准化、结构化 FAQ 搭建后,依然存在店名精确搜索漏召、本地口语化需求匹配失真、跨区县无效咨询泛滥、大模型难以主动引用商户信息等问题。

优秀的个人博客,低调大师

城市公交车载双目立体视觉客流感知终端关键技术机理与系统架构解析

双目成像单元经高精度立体标定完成内参矩阵、畸变系数、外参矩阵及极线几何校正,校正后左右视图同名点严格行对齐,将立体匹配搜索空间由二维压缩至一维。同步采集的双目图像序列经匹配代价计算、半全局多路径代价聚合、视差一致性校验与亚像素细化全流水线处理,生成亚像素级视差图,通过三角测量原理映射为稠密三维空间点云。基于点云空间几何特征与人体形态先验模型完成目标实例分割,通过欧式聚类、三维骨架关键点提取与人体运动学约束,实现人体目标与随身行李、手推车等非人体刚体的特征区分。多目标跟踪框架下,卡尔曼滤波运动状态估计与匈牙利算法数据关联维持目标身份的连续性,对目标运动轨迹开展时空连续性校验,识别折返、瞬时停留等异常运动模式并完成计数去重;高密度遮挡场景下依托深度维度的空间分层信息,解除二维平面遮挡导致的目标混淆,保障复杂场景下的计数精度。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册