Java项目,营销抽奖系统设计实现

作者:小傅哥

博客:https://bugstack.cn

项目:https://gaga.plus

沉淀、分享、成长,让自己和他人都能有所收获!😄

大家好,我是技术UP主,小傅哥。

经过这个假期的嘎嘎卷🧨,大营销平台项目第一阶段开发完成并以上线【 在线体验地址:https://gaga.plus 】。项目课程,全程视频手把手从0到1开发,第1阶段仅需要2周学习,即可写到简历冲春招「已提供简历编写模板」

开局一把IDEA,全程视频手把手!

鉴于不少小白伙伴的技术积累偏弱,对照文档学习压力较大,所以这次小傅哥选择了👨🏻‍💻全程视频手把手敲的方式进行教学,让小白伙伴跟着课程从0到1走下来,即可完成项目开发+上线。并且小傅哥选择的项目,都是来自于公司中真实场景的业务项目,有着细腻的业务流程和对应的编程实现技巧,这样的项目非常具有竞争力,也是面试官和你有的聊的项目【全是CRUD或者和业务无关的项目,面试官也不知道问啥,只能聊点八股文】。

做项目,就要做的完整! 完整的经历过,需求 + 开发 + 上线,才能让伙伴们在面试中把东西讲清楚。

工作了十多年,参与多场的大型校招,面试了几百人,深知考察求职者的标准。接下来小傅哥就站在面试官角度来介绍下这个项目,你应该关注到业务流程和实现技术。

文末有加入学习方式,开年活动送福利 4.0 100万 Tokens 助力学习!🉐

一、面试介绍

面试介绍举例,作为学习类项目,你可以参考以下介绍;

面试官您好,大营销平台的 Raffle 抽奖模块,是我独立负责实现的一个(学习/工作)项目,此项目模块在架构设计上运用了 DDD 分层架构和模板模式、责任链模式、组合模式、工厂模式等,这样的设计模式对业务流程进行解耦和实现。

Raffle 抽奖模块的完整开发,让我对 SpringBoot 框架技术,分布式技术栈的运用更加熟练,也把设计模式在实际场景的使用了起来,积累了丰富的设计实现经验。这写技术学习的内容,也可以更好的应对以后的开发工作。非常感谢您给我这次面试机会。

二、简历编写

  • 项目名称:大营销平台 - Raffle 抽奖服务
  • 项目架构:微服务架构、DDD 领域驱动模型、前后端分离设计
  • 核心技术:SpringBoot、MyBatis、MySQL、Redis、SpringCloud/Dubbo【按需添加,只是对外的接口形式】、React、TypeScript
  • 项目描述:Raffle 抽奖模块是整个大营销平台系统中非常重要的一个模块,也是本次项目中我来负责的设计和实现的模块。此模块主要以支撑各类差异化抽奖流程,如;通用抽奖、黑名单、人群、N消耗积分指定抽奖范围、抽奖N次解锁奖品等各类玩法的支持。在此系统模块的设计中运用到了模板模式、责任链模式、组合模式、工厂模式,解决代码的可扩展性,并对抽奖的计算和秒杀做了设计的优化,可以支撑单机 2c4g 服务器 1500 ~ 2000 TPS 的吞吐量。「不同服务器,带宽,以及是否还配置有环境相关,会有不同的数据效果」
  • 核心职责:
    • 以PRD文档诉求和对功能的评审,设计出抽奖的领域模型功能,以及在抽奖的流程抽象上,分为;抽奖前、抽奖中、抽奖后,的节点上扩展各项行为动作。如抽奖前的人群判断、抽奖中库存扣减、抽奖后兜底奖励等。
    • 依赖于领域模型的定义,设计出抽奖库表。抽象抽奖过程为抽奖策略表、策略明细表、规则配置表、规则树动作表,这样会让抽奖更好扩展。
    • 设计模板模式定义抽奖流程标准,再在模板模式中,调用责任链完成抽奖,对于抽奖中和后的动作使用组合模式的规则树进行动态处理【支持库表配置】。
    • 在项目架构中定义统一标准的 api 由触发器层实现,在触发器层定义监听、任务、http、rpc模块,所有的行为动作,都理解为触发行为。
    • 抽奖也是一种峰值流量高的业务场景,因此在设计奖品库存扣减上,采用了 Redis decr 分段消费和加锁兜底的设计,同时对于消费成功的库存,异步队列方式 + 定时任务更新库存。这样可以不超卖的同时,又减少数据库的压力。
    • 在项目开发中熟练运用了 IntelliJ IDEA、WEbStorm、Docker、MySQL、云服务器、SSH工具,并已将项目完整部署到线上【在校伙伴可以提供线上案例版】。

三、项目介绍

本次项目是一个 前后端 + Dev-Ops 实践开发真实营销业务场景的,全栈式综合编程项目。此项目会分阶段的交付,目前开发完成的是第一阶段,相当于完整项目的第一个大模块开发完成。这样可以满足小伙伴们快速学习(14天),就可以面试使用。

1. 涉及技术

  • 在项目的分阶段开发和交付中,会逐步的运用到这些技术栈。
  • 同时对于系统架构和设计模式,也都使用功能的非常丰富。正是因为有这些东西,面试才有的讲。

2. 项目部署

  • 小傅哥在每个阶段开发完成后,都会带着你手把手的做服务的上线。在本次阶段完成,所需的服务器配置是2c2g 占用 61% 的内存空间。—— 这些东西只有自己做了,才知道!
  • 在项目部署的讲解中也会给大家扩展各种CI&CD工具和压测,让你可以从我过往工作10+年的工作积累中,吸收经验。

3. 展示效果

  • 项目展示地址:https://gaga.plus - 嘎嘎强,嘎嘎哒学 专门展示星球「码农会锁」的实战项目效果【后续还会提供更多的不同UI的展示效果】。
  • 欢迎点击尝试,也可以模拟压测下。这套买了3年的云服务器,就是给星球伙伴部署项目玩的。

4. 系统模块

- big-market-api 定义API标准,big-market-trigger 实现出3个接口;装配策略接口(调用后将抽奖策略装配到缓存)、查询奖品列表、随机抽奖接口。 - big-market-domain 体现了接口单一职责,抽象类的使用,子类的实现操作。【学过小傅哥的代码,你就知道什么是嘎嘎强!!!】

5. 核心流程

  • 复杂的业务场景,都会涉及模型的拆解、库表的涉及。拆解的部分就是功能的流程的衔接点,做好解耦动作。
  • 从上面的库表中,就能看出,这一套抽奖系统,非常好扩展功能。库表设计也是非常好的经验,在面试中也经常被提起你的库表是如何设计的,新增加的功能怎么做进去。

四、项目大纲

不同于网上项目,这个项目是一步步,一个个章节的带着大家从0到1的方式,进行分析、设计和开发。是一个纯手把手教大家学习实战技术的项目! 大家可以先看看课程的大纲,就知道可以学习到哪些东西了。

  • 介绍

    • 大营销平台系统介绍
    • 面试:技能、简历、问题汇总
  • 第1部分:需求文档

    • 第1节:营销场景的需求设计
  • 第2部分:开发运维

    • 第1节:使用脚手架创建工程&PUSH代码
    • 第2节:第一阶段完成抽奖部署 【第1阶段,预计14天可以学习完成】
  • 第3部分:营销服务

    • 第1节:抽奖策略领域和库表设计
    • 第2节:基础层持久化数据
    • 第3节:策略概率装配处理
    • 第4节:策略权重概率装配
    • 第5节:抽奖前置规则过滤
    • 第6节:抽奖中置规则过滤
    • 第7节:责任链模式处理抽奖规则
    • 第8节:抽奖规则树模型结构设计
    • 第9节:模板模式串联抽奖规则
    • 第10节:不超卖库存规则实现
    • 第11节:抽奖API接口实现
  • 第4部分:前端页面

    • 第1节:React工程创建和抽奖组件使用
    • 第2节:Mock接口对接抽奖页面
    • 第3节:应用接口对接抽奖页面
  • 扩展部分:面试问题

专门为大营销项目整你的常问面试问题,这些问题也是在小册的章节中讲解到的。小傅哥也会在后续继续编写和归档常见的面试题,助大家一臂之力!

课程包括;视频、小册、1 对 1 答疑解惑、专属VIP项目交流群,并且提供简历编写模板结构的一条龙🐲服务。让你学习后,直接拉开与还在玩具项目,其他求职者的差距。提高竞争力,面试脱颖而出!!!


项目地址:https://gaga.plus

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件实际应用实例分享,门诊电子处方模板制作教程,中西医诊所病历开单系统教程

软件实际应用实例分享,门诊电子处方模板制作教程,中西医诊所病历开单系统教程 一、前言 以下软件教程以 佳易王诊所电子处方软件V17.3为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、在开电子处方的时候&#xff0c…

相机图像质量研究(40)常见问题总结:显示器对成像的影响--画面泛白

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

阿里云幻兽帕鲁Windows 服务器怎么下载存档?

阿里云幻兽帕鲁Windows 服务器怎么下载存档?通过远程连接window服务器桌面的方式。 远程连接到阿里云的 Windows 服务器后,可以将压缩后的存档文件,拖动到 workbench\Download 目录后,就会触发浏览器的文件下载,然后将…

[职场] 预算员简历模板 #媒体#微信#笔记

预算员简历模板 个人简历 基本资料 姓名:蓝小小 性别:男 年龄:28岁 籍贯:重庆 现居地址:重庆渝中区 政治面貌:中共党员 婚姻状况:已婚 求职意向 意向岗位:预算员 期望薪…

notepad++的下载与使用

1.进入官网下载 https://notepad-plus-plus.org/ 点击下载即可 2.选择中文简体 3.建议安装在D盘 其余步骤按照指示就行 4.安装后这几个是必选的 设置完成后就可以写中文了 以此为例 结果为

mysql mgr集群部署

一、前言 mysql mgr集群是为了实现mysql高可用,分为单主集群和多主集群,单主集群只有一个主节点可写,节点发生故障时,自动进行主从的故障切换,多主集群所有节点都可写,当节点发生故障时,将故障节…

如何在iStoreOS软路由系统中安装cpolar实现公网远程本地电脑桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是:** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能,也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

Python算法100例-1.8 冒泡排序

完整源代码项目地址,关注博主私信’源代码’后可获取 1.问题描述2.问题分析3.算法设计4.完整的程序5.问题拓展 1.问题描述 对N个整数(数据由键盘输入)进行升序排列。 2.问题分析 对于N个类型相同的数,…

【Node.js】path 模块进行路径处理

Node.js 执行 JS 代码时,代码中的路径都是以终端所在文件夹出发查找相对路径,而不是以我们认为的从代码本身出发,会遇到问题,所以在 Node.js 要执行的代码中,访问其他文件,建议使用绝对路径 实例&#xff1…

040 构造器详解

无参构造器 当一个类未定义任何构造器时,代码编译后会自动生成一个无参构造器,如果只需要无参构造器就可以直接省略定义。 public class Person {public Person(){}String name;int age; }public class Person {String name;int age; }有参构造器 有参…

自定义表单工作流的优势特点有啥?

低代码技术平台是提升办公效率的得力武器,在当今竞争激烈的社会中获得了很多中小企业的喜爱与支持。流辰信息是一家专业研发低代码技术平台的服务商,IBPS开发平台用于很多行业中,助力企业实现了办公流程化。自定义表单工作流的优势多、简单灵…

RSA之前端加密后端解密

RSA之前端加密后端解密 RSA加密解密方式有: (1)公钥加密,私钥解密; (2)私钥加密,公钥解密; 此文章中以下我使用的是前端公钥加密,后端私钥解密; …

【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解

【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解 提示:最近开始在【点云配准】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【点云配准】【深度学习】Windows11下PCRNet代码Pytorch实现与源码讲解前言PCRNet模型运行环境…

Linux内核解读

来自鹅厂架构师 作者:aurelianliu 工作过程中遇到的调度、内存、文件、网络等可以参考。 1.os运行态 X86架构,用户态运行在ring3,内核态运行在ring0,两个特权等级。 (1)内核、一些特权指令,例…

debug - 只要在内存中有显示相关的数据, 就会被CE找到

文章目录 debug - 只要在内存中有显示相关的实际数据, 就会被CE找到概述笔记demo实现demo运行效果用CE查找实际数据地址找到自己的调试点 - 方法1找到自己的调试点 - 方法2打补丁备注END debug - 只要在内存中有显示相关的实际数据, 就会被CE找到 概述 自己写了一个demo, 想验…

人工智能_PIP3安装使用国内镜像源_安装GIT_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_002---人工智能工作笔记0097

接着上一节来看,可以看到,这里 创建软连接以后 [root@localhost Python-3.10.8]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3 [root@localhost Python-3.10.8]# python3 -V Python 3.10.8 [root@localhost Python-3.10.8]# pwd /usr/local/Python-3.10.8 [root@…

Vue26 内置标签 v-text v-html

实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>v-text指令</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js"></script></head><…

第一件事 什么是 Java 虚拟机 (JVM)

1、什么是虚拟机&#xff1f; - 这个其实是一个挺逗的事情&#xff0c;说白了&#xff0c;就是基于某个硬件架构&#xff0c;在这个硬件部署了一个操作系统&#xff0c;再构架一层虚拟的操作系统&#xff0c;这个新构架的操作系统就是虚拟机。 不知道的兄弟姐妹们&#xff0c;…

重学Java 18.学生管理系统项目

臣无祖母&#xff0c;无以至今日&#xff0c;祖母无臣&#xff0c;无以终余年 母孙二人&#xff0c;更相为命&#xff0c;是以区区不能废远 —— 陈情表.李密 —— 24.2.20 一、编写JavaBean public class Student {//学号private int id;//姓名private String name;//年龄pr…

Codeforces Round 925 (Div. 3)(A,B,C,D,E,F,G)

比赛链接 这场打的很顺&#xff0c;感觉难度和 div 4 差不多&#xff0c;不是很难。D题稍微考了考同余的性质&#xff0c;E题直接模拟过程即可&#xff0c;F题也可以暴力模拟或者拓扑排序&#xff0c;G题是个数学题&#xff0c;是个简单隔板法。A到F题都可以直接模拟就有点离谱…