一、背景随着vivo商城的业务架构不断升级,整个商城较为复杂多变的营销玩法被拆分到独立的促销系统中。拆分后的促销系统初期只是负责了营销活动玩法的维护,促销中最为重要的计价业务仍然遗留在商城主站业务中,且由于历史建设问题,商城核心交易链路中商详页、购物车、下单这三块关于计价逻辑是分开独立维护的,没有统一,显然随着促销优惠的增加或者玩法的变动,商城侧业务重复开发 ......
390
0
0
2022-10-19
一、背景官网商城在双11、双12等大促期间运营同学会精心设计许多给到用户福利的促销活动,当促销活动花样越来越多后就会涉及到很多的运营配置工作(如指定活动有效期,指定活动启停状态,指定活动参与商品等等)。如果因为某些原因导致其中部分配置未按预期配置,等到大促那一刻才发现配置没有正确配置,这样大概率会流失不少订单,同样也可能会出现错配优惠导致一些本不该享受的优惠 ......
370
0
0
2022-10-19
我们先从下图开始简单介绍Dubbo分层设计概念:(引用自Duboo开发指南-框架设计文档)如图描述Dubbo实现的RPC整体分10层:service、config、proxy、registry、cluster、monitor、protocol、exchange、transport、serialize。service:使用方定义的接口和实现类; config: ......
404
0
0
2022-10-19
一、RocketMQ架构简介1.1 逻辑部署图(图片来自网络)1.2 核心组件说明通过上图可以看到,RocketMQ的核心组件主要包括4个,分别是NameServer、Broker、Producer和Consumer,下面我们先依次简单说明下这四个核心组件:NameServer:NameServer充当路由信息的提供者。生产者或消费者能够通过NameServ ......
328
0
0
2022-10-18
一、业务背景目前移动端的使用场景中会用到大量的消息推送,push消息可以帮助运营人员更高效地实现运营目标(比如给用户推送营销活动或者提醒APP新功能)。对于推送系统来说需要具备以下两个特性:消息秒级送到用户,无延时,支持每秒百万推送,单机百万长连接。支持通知、文本、自定义消息透传等展现形式。正是由于以上原因,对于系统的开发和维护带来了挑战。下图是推送系统的简 ......
367
0
0
2022-10-18
在《vivo 营销自动化技术解密 |开篇》中,我们从整体上介绍了vivo营销自动化平台的业务架构、核心业务模块功能、系统架构和几大核心技术设计。本次带来的是系列文章的第2篇,本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性,以及实践过程中的思考和总结。一、引言营销业务本身极具复杂多变性,特别是伴随着数字化营销蓬勃发展的趋势,在市场的不同时期 ......
499
0
0
2022-10-18
一、WebFlux 简介WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架。通过Reactor项目实现Reactive Streams规范,完全异步和非阻塞框架。本身不会加快程序执行速度,但在高并发情况下借助异步IO能够以少量而稳定的线程处理更高的吞吐,规避文件IO/网络IO阻塞带来的线程堆积。1.1 WebFlux ......
452
0
0
2022-10-18
背景Demo基于Java实现简单的TCP传输/接收协议词义百科TCP协议(传输控制协议)TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据。它提供了两台计算机之间的可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过“三次握手”三次握手:TCP协议中,在发送 ......
351
0
0
2022-10-17
目录一、简介二、依赖和配置2.1、maven依赖2.2、application.properties配置三、实践(后面的实例全部采用@PostConstruct测试)3.1、@Value方式获取3.2、Environment对象获取3.3、@ConfigurationProperties方式获取(强烈推荐)3.4、@PropertySource方式获取3.5 ......
386
0
0
2022-10-17
Cron 表达式的介绍:cron 的表达式是被用来配置 CronTrigger 实例的。cron 的表达式是字符串,实际上是有七个子表达式,描述个别细节的时间表。这些子表达式是由空格分开的,分别代表:SecondsMinutesHoursDay-of-MonthMonthDay-of-WeekYear (可选字段)例如 “0 0 12 ? * WED” 表示 ......
369
0
0
2022-10-17
ckage org.fh.config; import org.apache.shiro.cache.ehcache.EhCacheManager; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.i ......
354
0
0
2022-10-16
简介栈应该是一种非常简单并且非常有用的数据结构了。栈的特点就是先进后出FILO或者后进先出LIFO。实际上很多虚拟机的结构都是栈。因为栈在实现函数调用中非常的有效。今天我们一起来看学习一下栈的结构和用法。栈的构成栈一种有序的线性表,只能在一端进行插入或者删除操作。这一端就叫做top端。定义一个栈,我们需要实现两种功能,一种是push也就是入栈,一种是pop也 ......
360
0
0
2022-10-15
Quarkus 令你可以使用类似 Java 的技术开发无服务器的工作负载。对 无服务器 Java 的研究始于函数 —— 就是按需求运行的一小段代码。这一阶段并没有持续很长时间。虽然在 1.0 阶段,基于虚拟机架构的函数使这种范式变得很流行,但它仍然有局限性,例如执行时间、协议和糟糕的本地开发体验,都不太理想,如下图所示。开发者随后意识到, ......
341
0
0
2022-10-15
使用 thenReturn、doReturn设置方法的返回值thenReturn 用来指定特定函数和参数调用的返回值。thenReturn 中可以指定多个返回值,在调用时返回值依次出现。若调用次数超过返回值的数量,再次调用时返回最后一个返回值。import org.junit.Assert; import org.junit.Test; import s ......
473
0
0
2022-10-14
数据库地址表设计通用的区域街道地址表 tz_sys_area 字段名称 类型 备注 area_id bigint 区域 ID area_name varchar(32) 区域名称 parent_id bigint 所属父区域 ID level int 层级 type char 区域类型 0 国家 1 省份直辖市 2 地市 3 区县 ......
336
0
0
2022-10-13