在当今竞争激烈的电商环境中,价格是吸引消费者、提升转化率并最终实现商业目标的核心要素。然而,电商平台的商品价格并非简单地由标价决定,它涉及到复杂的促销活动、会员权益、运费计算、税费等多重因素的动态组合。一个高效、准确且灵活的算价系统,是支撑电商业务顺畅运行、保障用户体验并实现精准营销的关键基础设施。

传统的价格计算往往是线性的,但在现代电商场景下,各种促销活动层出不穷,如限时秒杀、满减优惠、多件打折、优惠券、会员专属价、包邮等等。这些促销可能相互关联,也可能相互独立,它们在不同类型、不同优先级上作用于商品价格,使得最终的用户支付价格变得异常复杂。如何在一个统一的框架下,清晰地定义价格的演变路径,高效地应用各类促销规则,并最终计算出准确的结算价格,成为了每个电商平台面临的巨大挑战。

通过对京东等头部电商平台算价模型的深入剖析,我们可以从中汲取宝贵的经验,理解其如何通过分层、模块化的设计来应对算价的复杂性,并为我们构建或优化电商算价系统提供重要的启示。本文将基于对算价模型设计原理的理解,对电商算价的各个核心环节进行深入探讨。

阅读全文 »

在当今竞争激烈的电商环境中,促销活动已不再仅仅是简单的价格打折,而是驱动用户增长、提升销售额、清理库存乃至品牌建设的核心战略工具。一个设计精良的促销系统,是电商平台能否灵活应对市场变化、实现精细化运营的关键。本文将以淘宝的视角为切入点,深入剖析促销系统的核心概念、内部关系,以期为读者提供一个全面而深入的理解。

一、促销系统的核心概念与内在关系

要构建一个强大而灵活的促销系统,首先需要明确其基石——核心概念,以及这些概念之间如何相互作用、构成一个有机整体。

阅读全文 »

说起来,玩 Docker 的朋友估计都有同样的感受:这玩意儿好用是好用,但管起来真有点头疼。市面上不是没有工具,像 Portainer 这种,功能是强大,可总觉得有点“重”。对于我这种只想简单管理几个服务、又不想折腾太多配置的人来说,它就像是开着一辆大卡车去买菜,有点过了。而且,它那套数据备份机制,说实话,我一直觉得不太顺手,总担心哪天数据丢了咋办。

正是因为这些小烦恼,心里就一直琢磨着,能不能自己搞一个更轻便、更好用的 Docker 管理工具呢?毕竟,自己的需求自己最清楚。加上这几年 AI 编程发展得挺快,就想着是不是能借力 AI,把这个想法落地。说干就干,断断续续地折腾了一阵子,还真捣鼓出来一个“Docker in Docker”的维护工具。为啥是 Docker in Docker 呢?因为我觉得这样管理起来更方便,整个工具本身也是一个 Docker 容器,便于部署和迁移,而且特别符合我对“轻量”的追求。

阅读全文 »

近年来,随着大型语言模型的快速发展,智能问答系统已经成为企业提升用户体验、降低客服成本的重要工具。本文将介绍如何利用知乎开源的FUST微服务框架和DeepSeek API,搭建一个高性能、可扩展的智能问答系统。

FUST 谐音 Fast,是知乎开发的一款基于Spring Boot的微服务开发框架,旨在帮助开发者快速构建高质量的微服务应用。它集成了主流组件,提供标准化的开发范式,并在知乎的大规模生产环境经受了考验。

我们将通过实现一个名为”Deep QA”的项目,展示如何将FUST框架与DeepSeek API结合,构建一个功能完善的智能问答系统。

阅读全文 »

在日常的信息处理中,有效管理和查找文档是许多人面临的实际需求。无论是个人积累的资料,还是团队共享的文档,一个可靠的检索工具都能提供帮助。本文将介绍 畅文全索(xyz-search),一个基于 Spring BootElasticSearch 开发的文档检索系统,旨在为用户提供一种相对便捷的文档内容查找方案。

💡 项目概述:畅文全索的功能定位

畅文全索被定位为一个辅助性的全文检索系统。它基于 Spring BootElasticSearch 构建,尝试支持多种文件格式的全文内容检索。通过整合 Spring AI 功能,系统也具备了初步的智能搜索和内容分析能力,以期为用户提供更精准的检索体验。

本系统适用于个人文档管理或小型数字文档集合的检索场景,可处理一定规模的文档数据。它旨在为用户提供一个可行的文档检索和管理工具。

你可以在 GitHub 上找到畅文全索的开源代码。

阅读全文 »

2024 书单

  • 《最好的告别》阿图·葛文德(12 月)
  • 《蛤蟆先生去看心理医生》罗伯特·戴博德(8 月)
  • 《我在北京送快递》胡安焉(8 月)
  • 《哪有什么感同身受:16 张生存素描》(8 月)
  • 《读懂一本书:樊登读书法》樊登(7 月)
  • 《我的阿勒泰》李娟(7 月)
  • 《低风险创业》樊登(6 月)
  • 《好好思考》成甲(3 月)
  • 《醉汉的脚步》列纳德·蒙洛迪诺
  • 《毛泽东选集》
  • 《毛泽东传》

2023 书单

  • 《太白金星有点烦》马伯庸(12 月)
  • 《生死疲劳》莫言(11 月)
  • 《奇特的一生》(10 月)
  • 《长安的荔枝》马伯庸(10 月)
  • 《小米创业思考》雷军(9 月)
  • 《可复制的领导力》樊登(9 月)
  • 《卓有成效的管理者》彼得·德鲁克(9 月)
  • 《新摄影笔记》(8 月)
  • 《可复制的沟通力》樊登(7 月)
  • 《5000 天后的世界》凯文凯利(6 月)
  • 《我在通用汽车的岁月》斯隆
  • 《一本书读懂财报》肖星

2022 书单

《黑客与画家》(7 月)
《垃圾回收的算法与实现》(3 月)
《软件架构设计:大型网站技术架构与业务架构融合之道》(3 月)
《MacTalk·人生元编程》池建强(3 月)
《戒糖:改变一生的科学饮食法》(1 月)
《传习录》王阳明
《高效能人士的七个习惯》
《GraalVM与Java静态编译:原理与应用》林子熠

本文讨论了软件复杂性及其产生原因,介绍了如何度量软件复杂性,及 SOLID 软件设计原则,并探讨管理复杂性的方法,包括使用代码重构、设计模式、领域驱动设计等。通过遵循这些原则和方法,开发人员可以降低软件复杂性,提高代码质量和可维护性。这篇文章内容涵盖了软件开发的道与术,希望能对你所有帮助,欢迎评论交流~

  1. 什么是软件复杂性
  2. 软件复杂性产生原因
  3. 如何度量软件复杂性
  4. SOLID 软件设计原则
  5. 管理复杂性的方法
阅读全文 »

场景说明

目标是需要拆分出内部服务 Y 为独立的系统,且暂时不改变系统 A 的被依赖关系,拆分前的情况如下图。

这里假定两个接口层处理模块只会调用只会调用内部服务 Y,并且其中存在着业务逻辑,也许你会疑惑接口层为什么会有业务逻辑,事实上你大多数情况下会遇到。更具体的说,接口层的业务接口 1 中包含业务逻辑,于是会产生对内部服务 Y 的两个及以上接口的调用。

处理思路

那么你会遇到以下几种情况需要处理。

阅读全文 »

前言

分布式系统主要的目的之一就是解决大量用户的高并发问题。自己做过几个业务系统,也和别人聊过他们所做过的业务系统,其实大家都使用了相同的数据库,有的系统会使用 Redis 缓存,会使用 MQ 做系统解耦,有的也会使用搜索引擎。这些系统的构件相同的地方都是在处理数据,只不过职责不同罢了。归纳有以下几类:

  • 数据库提供结构化的持久保证。
  • 缓存为了提高并发和响应速度。
  • MQ 带着事件消息将后续任务解耦。
  • 搜索引擎提供快速的全文检索能力。

以上这几个构件就可以组成相对完备的实时数据系统,可以应对常见的业务需求。

数据框架

关于一个业务系统的通用数据框架可以用下面的图来表述。

阅读全文 »

前言

这篇文章是汇总历史发布过的,所有关于我的博客编写发布系统文章。文章以时间线倒序的方式罗列整理。

2022-04-07 博客主题必备功能

  1. 支持数学公式
  2. 支持 mermaid 流程图
  3. 支持标准的 Markdown

测试页面

2022-02-13 统一博客编写环境

日常会在 macOS 和 Ubuntu 之间切换,博客是基于 Hexo 生成的,不同系统的 Node 版本会有较大差异、环境稳定性比较差,为了方便平时写博客,想到了用 Docker 统一博客生成环境,于是自己写了 Dockerfile,在结合 VS Code 编写,可以做到系统无差。

日常开发只需要在 VS Code 中边写边预览,图片是通过 PasteImage 插件快捷键插入。预览和发布只需要以下两个命令即可。

预览本地博客:alias run-blog='docker exec -it container_id python utils/goto.py blog'

发布博客文章:alias push-blog='docker exec -it container_id python utils/goto.py push'

Docker 项目:https://github.com/noogel/noogel.github.io.docker

阅读全文 »