- 博客(68)
- 资源 (3)
- 收藏
- 关注
原创 暹罗外卖 2.1 主要更新
<think>我们只需要根据内容生成摘要,≤150字。需要简洁概括主要更新点。注意是文章摘要,可能针对更新日志。用中文。列出关键功能:三端聊天、金刚区配置、系统消息、账单分账、订单详情联系骑手、指派骑手、UniPush、样式优化、多语言、修复。控制在150字内。</think>本次更新新增用户/商家/骑手三端即时聊天,支持订单沟通;平台商户分类与用户端金刚区可配置;新增系统消息模块及平台账单分账记录;用户端可联系骑手并查看位置,总后台支持指派骑手;三端集成UniPush推送;优化商家
2026-09-08 22:47:17
107
原创 暹罗外卖 2.0 主要更新
本次更新主要包含多端功能优化与系统重构:1)三端uni-app升级地图组件、登录注册页及隐私协议,适配小程序审核要求;2)后端重构微信登录接口,新增静默登录能力,集成天地图并优化坐标转换;3)对接多家云打印机,重构WebSocket实现订单实时推送;4)外卖与积分商城接入微信发货接口,新增小程序版本更新提示;5)商家端新增微信登录、商品/活动管理等功能;6)完成70%多语言开发及单体版本开发,修复已知问题。
2026-05-21 23:02:04
38
1
原创 当Spring Boot太重时,不妨看看Vert.x
Vert.x是一款轻量级高性能的Web框架,相比SpringBoot更精简高效。它基于Netty构建,采用事件驱动和非阻塞I/O模型,支持多语言开发,模块化设计可按需组合。Vert.x通过异步编程实现高并发,在等待数据库响应时释放线程处理其他请求,极大提升资源利用率。虽然学习成本较高,但Vert.x特别适合构建高并发、低延迟的Web服务和微服务,是追求极致性能开发者的理想选择。
2026-02-10 09:00:00
630
原创 Linux服务器中招挖矿病毒?一份不重装系统的清理指南
摘要:服务器CPU占用率飙升至100%往往是挖矿病毒所致,表现为kdevtmpfsi或kswapd0进程持续消耗算力。本文提供不重装系统的清理方案:首先终止相关进程,删除带不可变属性的病毒文件;然后清除定时任务等自启动机制;最后建议修改SSH端口、使用密钥登录等加固措施。若清理困难,可编写定时杀进程脚本作为临时方案。强调服务器安全需持续关注系统加固和最小化暴露原则。
2026-02-09 16:00:00
923
原创 Seata 为啥能回滚?扒一扒 undo_log 表里的秘密
Seata实现分布式事务回滚的核心机制是应用层"快照+补偿":在执行业务SQL时,同步记录数据变更前后的镜像到undo_log表,回滚时根据操作类型自动生成反向SQL(如INSERT转为DELETE)。该方案不依赖数据库XA协议,要求表必须有主键,通过拦截SQL和应用层补偿实现跨服务数据一致性。相比传统XA方案,Seata的AT模式对数据库要求更低且性能更优。
2026-02-09 02:26:10
453
原创 Redisson 到底能做什么?从分布式锁说起
摘要:Redisson不仅提供分布式锁功能,还将Java并发工具(如ReentrantLock、Semaphore等)扩展到分布式环境。通过RedissonClient可获取多种分布式对象,如RLock自动续期、RCountDownLatch跨服务协调、RMap支持事件监听等。使用时需注意客户端关闭、锁粒度优化及主从切换问题。Redisson封装了常见分布式协作模式,为开发者提供熟悉的接口,其能力远超简单的分布式锁。
2026-02-09 02:21:01
537
原创 微服务网关中的 WebFlux:为什么 Gateway 要用响应式编程?
摘要:SpringCloudGateway基于WebFlux构建,这是由网关的I/O密集型特性决定的。相比传统阻塞模型会因线程过多导致性能下降,WebFlux采用非阻塞I/O和事件驱动机制,用少量线程处理高并发请求,特别适合网关这种等待网络I/O的场景。其过滤器采用响应式设计,全链路必须非阻塞才能发挥优势。WebFlux的价值在于高并发下的资源效率,而非单个请求速度,这使其成为微服务网关的理想选择。
2026-02-09 02:16:36
610
原创 分布式系统中,CAP 划出边界,BASE 给出出路
摘要:BASE理论(基本可用、软状态、最终一致性)是分布式系统在CAP定理约束下的工程实践方案。它针对选择AP(高可用性)路径的系统,提供了一套可落地的设计哲学:通过允许短暂的数据不一致(软状态)和降级服务(基本可用),确保系统核心功能持续运行,并最终达成数据一致性。BASE不是CAP的替代,而是对AP选择的细化,使放弃强一致性不再意味着系统失控,而是成为可管理、可验证的架构策略。典型应用场景包括社交媒体的内容可见延迟、电商库存的最终一致等。
2026-02-09 02:10:47
545
原创 CAP 定理:分布式系统里,你不可能“全都要”
CAP定理揭示了分布式系统的核心困境:在网络分区(P)不可避免的前提下,一致性(C)和可用性(A)无法同时满足。CP系统(如ZooKeeper)优先保证数据一致性,可能牺牲可用性;AP系统(如Eureka)则优先保证服务可用性,允许短暂不一致。现实中的系统往往采用BASE原则(基本可用、柔性状态、最终一致)进行折中。理解CAP定理有助于根据业务场景(如金融强一致或电商高可用)做出合理架构选择。
2025-12-30 13:17:02
894
原创 ClickHouse:那个让 OLAP 查询快到离谱的数据库,到底强在哪?
ClickHouse是一款专为OLAP设计的列式数据库,由俄罗斯Yandex公司开发。其核心优势在于极速查询性能,能在十亿级数据量下实现毫秒级响应。相比Elasticsearch,ClickHouse在存储成本(低至1/6)、查询速度(快12.7倍)和写入性能(提升5倍)方面表现突出,特别适合实时报表、用户行为分析等场景。其技术亮点包括列式存储、向量化执行引擎、高效压缩和分布式架构,但不适合高频点查和全文搜索。通过Docker可快速体验,生产环境建议采用多分片副本部署。
2025-12-30 13:09:54
781
原创 阿里云 Lindorm:一套数据库,搞定宽表、时序、搜索和文件存储
阿里云Lindorm是一款云原生多模数据库,整合了宽表、时序、搜索、文件和时空五种引擎,支持高并发、低延迟的数据处理。它源于阿里双11等超大规模场景的实战经验,具备千万级QPS、智能冷热分层和自动扩缩容等特性,可降低50%以上的存储成本。Lindorm完全兼容主流数据库协议,迁移简便,已广泛应用于电商、车企、金融等领域,为多数据类型业务提供统一、高效的解决方案。
2025-12-30 13:04:48
989
原创 混沌测试:让系统在“混乱”中变得更强大
混沌测试是一种主动注入故障的工程实践,通过模拟真实故障来验证系统韧性。它源于Netflix的"混沌猴"理念,旨在提前暴露系统薄弱环节,提升容错和自愈能力。实施步骤包括明确目标、设计实验、执行观察和复盘改进,需注意最小化业务影响。主流工具有ChaosMesh、Litmus等。混沌测试将不可控风险转化为可控演练,是构建高可用系统的必要手段。
2025-12-30 12:59:08
543
原创 90天就过期?SSL证书越来越短的真相
摘要:SSL证书有效期正从数年缩短至90天,反映互联网安全理念从"静态防御"转向"动态防御"。自动化技术(如Let's Encrypt和ACME协议)的成熟使频繁更换证书成为可能,浏览器厂商也共同推动这一趋势。虽然企业需建立自动化证书管理体系,但用户无感知,整体网络安全水平得到提升。未来证书有效期可能进一步缩短,表明动态信任模式正取代长期静态信任,这是互联网安全发展的必然方向。(149字)
2025-12-29 13:24:11
366
原创 为什么监控和物联网项目都在用InfluxDB?这篇讲透了
InfluxDB作为专业时序数据库,采用TSM存储引擎优化时序数据管理,支持高效读写和压缩存储。其数据模型包含测量名称、标签、字段和时间戳四部分,适用于监控系统、物联网等场景。开源版存在查询语法限制(如不支持IN操作符)和集群功能缺失,企业版提供完整集群支持。选型需考虑数据规模,小规模场景可用开源版,中大规模建议企业版或TimescaleDB等替代方案。InfluxDB凭借专业的数据模型、高效存储和丰富生态,成为时序数据处理的重要选择。
2025-12-12 00:56:28
882
原创 Mybatis中使用的设计模式解析
MyBatis框架中巧妙运用了多种设计模式:Builder模式分步构建复杂配置对象;工厂模式统一管理核心对象创建;单例模式确保线程上下文唯一性;代理模式实现Mapper接口到SQL执行的转换;组合模式优雅处理动态SQL嵌套结构。这些模式的合理应用使MyBatis保持了代码清晰性,同时具备良好的扩展性和维护性。深入理解这些设计模式的具体实现,有助于在项目中更好地应用这些设计思想。
2025-12-12 00:52:54
314
原创 外卖系统中的搜索架构:主搜与垂搜详解
外卖APP搜索系统由主搜和垂搜两套系统协同完成。主搜采用"召回-粗排-精排"架构,通过多路召回和机器学习模型快速筛选相关商家;垂搜基于正排索引实现实时过滤和重排,满足用户精准筛选需求。两者分工明确:主搜解决"从哪里找"的问题,垂搜处理"如何精准选"的需求,共同构建了智能且高效的外卖搜索体验。系统持续优化方向包括多模态搜索、强化学习等技术应用。
2025-12-12 00:47:56
683
原创 多线程协作利器:CountDownLatch 核心用法与场景解析
CountDownLatch是Java并发工具类,用于线程同步协作。它通过计数器机制实现一个或多个线程等待其他线程完成操作,核心方法为await()和countDown()。主要应用场景包括:主线程等待子任务完成、多线程并发启动和共享资源初始化等待。使用时需注意其一次性特性、确保计数器被正确减少以及与Spring事务的兼容性问题。CountDownLatch能有效解决线程协作问题,使多线程程序更健壮高效。
2025-12-12 00:43:00
968
原创 【系统稳定性】上线三板斧:可灰度、可监控、可应急
互联网公司上线新功能的“三板斧”:可灰度、可监控、可应急。可灰度指分批次逐步发布新版本,将潜在问题限制在极小范围内;可监控是通过收集业务指标、应用性能和系统资源数据,设置告警机制,及时发现线上问题;可应急则包括一键回滚、功能开关等预案,确保快速恢复服务。这三项措施共同构成了保障系统稳定性的关键实践,是业务稳定运行的必备流程和基础能力。
2025-12-12 00:36:15
497
原创 MQTT协议详解:构建高效物联网通信的基石
摘要:MQTT协议是一种专为物联网设计的轻量级通信协议,采用发布/订阅模式,适用于低带宽、不稳定网络环境。与HTTP相比,MQTT具有长连接、低开销等优势,提供三种QoS等级保证不同场景下的数据传输可靠性,并通过心跳机制维持连接。其核心应用包括设备监控、移动推送和智能家居等场景。MQTT在阿里云等平台与RocketMQ结合,实现消息持久化和高并发处理,成为物联网领域的重要通信桥梁,具有轻量高效、适应性强等显著优势。
2025-11-11 09:45:03
921
2
原创 快速搭建ELK日志收集系统:从入门到实战全攻略
摘要:本文详细介绍了ELK(Elasticsearch+Logstash+Kibana)日志管理系统的完整搭建方案。通过Docker方式部署三大组件,并配置SpringBoot应用接入,解决传统日志分析效率低下的问题。文章包含环境准备、组件部署步骤、应用集成方法、查询技巧及常见问题解决方案,帮助开发者快速构建集中式日志管理系统,实现高效日志收集、存储、分析和可视化功能。(148字)
2025-11-11 09:37:35
682
原创 快速搭建分布式链路追踪系统:SkyWalking全攻略
摘要:本文介绍如何通过SkyWalking搭建分布式链路追踪系统来解决微服务架构中的问题定位难题。SkyWalking是一款国产开源的APM工具,具有性能优异、代码无侵入等优势。文章详细讲解了使用Docker快速部署SkyWalking OAP服务器和Web UI的方法,以及如何通过JVM参数将微服务应用接入系统。该系统可提供服务拓扑图、链路追踪详情和性能指标监控等功能,帮助开发者快速定位故障、分析性能瓶颈。最后还提供了常见问题解决方案和相关资源链接,助力实现高效的微服务治理。
2025-11-04 23:54:57
1211
原创 实物电商交易类微信小程序必须接入订单发货管理的公告!
点击「发货」按钮后需先填写该订单的商品信息,即用户购买的商品名称或商品标题,然后根据实际情况选择对应的【物流快递】、【同城配送】、【用户自提】、【虚拟发货】发货方式进行发货,除【物流快递】需填写快递信息外,其他三种发货方式可无需填写快递信息。商家发货后,订单资金进入结算周期。不同发货方式对应不同的结算周期。上传发货信息后,用户会在微信的【服务通知】中收到相应的「订单发货通知」,点击该通知后进入物流进度信息详情页,用户也可在该页面进行确认收货,订单资金在用户确认收货或系统自动确认收货后进行结算。
2025-10-25 19:22:04
1351
原创 快速搭建企业级监控系统:Prometheus + Grafana 全攻略
本文详细介绍了基于Prometheus和Grafana构建企业级监控系统的完整方案。主要内容包括:1)监控架构设计,涵盖主机、数据库、容器等核心组件;2)环境部署步骤,包括Prometheus、Grafana及各类exporter的安装配置;3)数据源整合与仪表盘导入方法;4)告警配置及常见问题排查。文章提供了具体的Docker运行命令、配置文件和Grafana仪表盘ID,可帮助读者从零搭建覆盖全栈的生产级监控平台,并给出了数据持久化、资源限制等生产环境优化建议。
2025-10-20 21:08:15
929
原创 一键搞定PowerDesigner的Name转换Comment
在数据库设计过程中,PowerDesigner的Name(名称)和Comment(注释)字段处理常常让人头疼。今天介绍一个高效的批量转换方法,让你彻底告别手动操作的繁琐。
2025-10-18 22:26:10
243
原创 Redis五大数据类型全解析| 面试必备干货
Redis作为高性能键值数据库,提供五种核心数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Zset(有序集合)。每种类型都有其独特优势和应用场景:String适合简单键值存储,Hash占用空间小适合对象存储,List支持队列操作,Set支持集合运算,Zset适用于排行榜等排序场景。文章详细介绍了各类型的常用命令,并强调了Redis的二进制安全特性、键命名规范等最佳实践。掌握这些数据类型及其应用是使用Redis的基础,开发者应根据实际需求灵活选择合适的数据类型。
2025-10-18 11:24:08
358
原创 暹罗点餐开源啦,一款java多门店点餐系统-连锁门店如蜜雪冰城瑞幸咖啡
暹罗点餐是一款Java餐饮点餐系统,适用于多门店的连锁品牌,对标蜜雪冰城、瑞幸咖啡。系统包含用户端、商家端、配送端以及总管理后台;* 前端使用uni-app开发,可打包部署到微信小程序、APP、H5* Web端使用vue + Element开发* 服务端使用java语言开发,技术栈:Spring Boot + Redis + RocketMQ + WebSocket + ElasticSearch + ELK + SpringBoot Admin
2023-12-18 11:33:24
1262
原创 暹罗外卖开源啦,一款java多商户外卖系统-商家入驻如美团饿了么
暹罗外卖是一款Java外卖配送系统,适用于多商户入驻,对标美团外卖、饿了么。系统包含用户端、商家端、配送端以及总管理后台;前端使用uni-app开发,可打包部署到微信小程序、APP、H5Web端使用vue + Element开发服务端使用java语言开发,技术栈:Spring Cloud & Alibaba + Redis + RocketMQ + WebSocket + ElasticSearch + ELK + Sentinel + Seata + SkyWalking + SpringBoot
2023-12-18 11:31:50
1451
2
原创 博客摘录「 RocketMQ 解决 No route info of this topic 异常步骤」2023年7月13日
注册了broker,有两种方式 第一种、看broker的日志 如果出现形如2018-02-28 16:21:35 INFO BrokerControllerScheduledThread1 - register broker to name server 192.168.192.129:9876 OK2018-02-28 16:22:05 INFO BrokerControllerScheduledThread1。
2023-12-17 21:24:56
182
原创 座位安排,相邻编号之差的绝对值必须大于d
1997: Seating ArrangementTime Limit:1 SecMemory Limit:128 MbSubmitted:543Solved:171 DescriptionMr. Teacher老师班上一共有n个同学,编号为1到n。 在上课的时候Mr. Teacher要求同学们从左至右按1, 2, …, n的顺序坐成一排,这...
2018-07-17 21:15:30
555
2
原创 DetachedCriteria 离线查询
离线查询:离线查询使用DetachedCriteria对象设置限制条件,然后再通过session获取Criteria对象。离线查询的使用场景:例如Biz类和Dao类,在Dao类中利用session操作CRUD,如果你想在Biz中设置限定条件,如果不使用离线查询,那么势必得获取Criteria对象,如此一来又得获取session,有点麻烦。但是使用离线查询的话,可以直接获取DetachedCrit...
2017-04-24 22:23:40
905
2
原创 QBC查询
15、QBC查询格式:qbc的统计查询得使用projection实现,有两种方式:(1)(2)查看文档发现ProjectionList和Projection的关系如下所示:可以使用groupProperty投影对结果集进行分组(使用SQL的GROUP BY子句),当你通过某个属性分组时,程序就会查询出该属性所对应的列名。可以使用
2017-04-24 22:19:26
474
原创 hibernate 批量抓取
15、批量抓取批量抓取的使用场景是查询出来一个集合,然后又查询每个集合对象中的集合。使用set标签中的batch-size属性实现。数据库中只有5个区道信息;设置batch-size=”5”,执行的查询语句如下:而设置batch-size=”5”,执行的查询语句如下:由于发送sql数据的次数多少,所以batch-size的数值越大,效率就
2017-04-24 22:14:37
464
原创 fetch属性
15、fetch属性fetch的属性值有select(默认值)、join、subselect当fetch=”select”时,程序会先查询返回要查询的主体对象,然后根据lazy属性看是否懒加载。当fetch=”join”时,程序会将主体对象和关联对象用一句连接查询的sql同时查询出来,这样以来,懒加载就无用武之地了。subselect和select一样,不会一开始就将关联对象查出来
2017-04-24 22:07:08
667
2
原创 hibernate中的inverse属性
15、hibernate中的inverse属性修改街道对应的区道信息:修改后会发现程序执行了两次修改操作:原因:区道与街道是一对多的关系;由于Hibernate是双向维护外键,所以当修改区道中的街道时,会修改一次外键;在修改街道中的区道时,又会修改一次外键。这样就会产生效率慢的问题,因为如果执行两次修改,那么第二次是无用的操作。利用inverse属性可以解决这一
2017-04-24 22:04:40
474
原创 hibernate中的cascade属性
hibernate中的cascade属性Cascade属性是存在于set标签中,用来做级联删除和保存。它的值有以下几种:默认值是none,不做级联动作;save-update:级联保存delete:级联删除all:级联保存和删除
2017-04-24 22:02:48
425
原创 在struts框架中使用json
13、在struts框架中使用json客户端:Struts.xml:UserAction:注意:struts类库里面没有提供ezmorph-1.0.6.jar文件,所以要手动添加。
2017-04-24 22:00:00
300
2
原创 ul 两级联动
两级联动演示:原理:将数据库中的数据封装成对象,然后将对象转化为json数据,在客户端用异步获取后台的json数据即可。客户端jsp页面:后台:注意:在js中如果某个元素还未被加载,那么只可以获得该元素的引用,不能对该元素进行绑定事件。
2017-04-24 21:54:08
312
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅