Spring中的@Schedule注解
Spring中的基本概念什么是Spring BeanBean就相当于定义一个组件,这个组件是用于具体实现某个功能的。
在Spring文档的官方解释是:在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是由Spring IoC 容器实例化、组装和管理的对象。
简单说明一下就是:
bean 是对象,一个或者多个不限定
bean 由 Spring 中一个叫 IoC 的东西管理的
我们的应用程序由一个个 bean 构成
Bean就是Spring当中的最小执行单位
什么是IOCIOC(Inversion of Control,控制反转)Spring IOC它的主要作用是将对象的创建和依赖关系的管理交给 Spring 容器来处理,而不是在代码中手动创建和管理对象。
控制反转通过依赖注入(DI)方式实现对象之间的松耦合关系。程序运行时,依赖对象由辅助程序动态生成并注入到被依赖对象中,动态绑定两者的使用关系。Spring IoC 容器就是这样的辅助程序,它负责对象的生成和依赖的注入,然后再交由我们使用。
通过这种方式,Spring ...
Spring的三级缓存以及循环依赖什么是循环依赖:假设我们有两个类 A 和 B,类A和类B的实例互为成员变量即为循环依赖。
什么情况下会出现死循环?
当 Spring 框架启动后,开始根据注解将类 A 实例化并注入到容器当中,在实例化 A 之后就会尝试获取类 B 的实例来进行依赖注入。
由于类 B 并没有进行实例化,那么 Spring 框架就会去实例化类 B,同样的也会需要将类 A 的依赖注入到类 B 的实例中最终,无论先实例化哪个类,都会形成死循环。
三级缓存是什么①一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象
②二级缓存:缓存早期的bean对象(生命周期还没走完)
③三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象的
缓存名称
源码名称
说明
一级缓存
singletonObjects
单例池,缓存已经初始化完成的bean对象。
二级缓存
earlySingletonObjects
缓存早期的bean对象。(例如:只进行了实例化,还没有进行依赖注入)
三级缓存
singletonFactories ...
Spring中的@Schedule注解
抽奖整体流程设计 包含前置,中置以及后置规则,有一点类似于Bean对象
为了将代码进行解耦,这里我们需要使用到责任链模式:
责任链模式:职责链模式有时候也叫责任链模式,它是一种对象行为的设计模式。目的是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。发送请求的客户端并不知道链上的哪个对象会处理这个请求,这使得系统在不影响客户端的情况下动态的组织和分配责任。
这里在装配规则的时候使用到了工厂模式以及责任链模式,因为例如黑名单,白名单,权重计算等都是针对于用户的过滤规则,所以使用责任链模式来判断用户应该应用到的规则。由于不同的策略可能存在一种或者多种规律规则,所以需要使用到了工厂模式来进行创建。
以我的大营销抽奖项目为例子:
Redis 作为缓存主要是为了应对高并发和系统实时性要求。抽奖系统通常有以下几个特点,结合这些需求,我选择 Redis:
1. 高并发处理抽奖活动往往伴随着瞬时的大量用户涌入,比如秒杀、限时优惠等。这时 Redis 的高性能读写能力尤为重要。Redis 可以在内存中快速处理数据,不需要频繁访问数据库,从而减少数据库的压力,并保证抽奖系统在高并发情况下仍然能快速响应。
2. 库存和奖品计数在抽奖过程中,奖品数量是需要精确控制的。使用 Redis 的原子性操作,如 INCR、DECR 等,可以保证每次减少奖品数量的操作是线程安全的,防止多个用户同时中奖时出现超卖、超发的情况。这在并发用户访问时,保证了奖品数量的精确控制。
3. 用户状态管理抽奖活动需要记录用户的参与状态,防止用户重复参与或者超额参与。可以使用 Redis 来存储用户的参与记录,设置过期时间(TTL),这样可以在短时间内快速判断用户是否已经参与过,而不需要每次都查询数据库,提升系统的响应速度。
4. 实时性需求抽奖系统通常有实时开奖或者中奖公告的需求,Redis 的低延迟操作能够满足这类实时性的 ...
表1:strategy
ID: 自增ID
strategy id:抽奖策略ID
strategy_desc:抽奖策略描述
rule_models:策略模型, rule配置规则记录
create_time:创建时间(带默认时间)
update_time:更新时间(带默认时间)
表2:steategy_award 抽奖策略的详情
ID: 自增ID
strategy id:抽奖策略ID
award_id: 抽奖奖品ID
award_title: 抽奖奖品的标题
award_subtitle: 抽奖奖品的附标题
award_count: 抽奖奖品的库存总量
award_count_surplus: 抽奖奖品的库存剩余
award_rate: 抽奖奖品的中奖概率
rule_models:规则模型, rule配置规则记录
这一条配置是为了方便直接从数据库中取出有关规则的数据,而不用再从后端中通过应用计算取出数据
sort: 排序
create_time: 创建时间(带默认时间)
update_time: 更新时间(带默认时间)
表3:strategy_rule
...
2024安排进度安排:⏳ 未开始 🔄 进行中 ✅ 完成
已拍摄
已修图
编号
日期
模特
拍摄地点
拍摄主题
✅ 完成
✅ 完成
1
3.14
QQ
前海石公园
野餐
✅ 完成
✅ 完成
2
3.20
心怡
塔公草原
藏服
✅ 完成
✅ 完成
3
4.3
钱多多
外滩源
街拍
✅ 完成
✅ 完成
4
4.3
ZY
淮海中路
街拍
✅ 完成
✅ 完成
5
4.4
ZY
龙艺术馆
樱花人像
✅ 完成
✅ 完成
6
4.8
土豆
华润前海中心
街拍
✅ 完成
✅ 完成
7
4.10
桦桦
演艺公园
落日人像
✅ 完成
✅ 完成
8
4.13
十絮
园岭新村
日杂
✅ 完成
✅ 完成
9
4.15
UU
长河公园
瞎拍
✅ 完成
✅ 完成
10
4.15
水水
雨果相馆
日杂
✅ 完成
✅ 完成
11
4.20
张白给
价值工厂
严肃
✅ 完成
✅ 完成
12
4.30
土豆
中山公园
精灵
✅ 完成
✅ 完成
13
5.4
小圆
园岭新村
日杂jk
✅ 完成
🔄 进行中
14
5.12
丹丹
会展中心
清新
✅ 完 ...
项目:区块链
未读主要页面页面1: 欢迎界面包含元素:部分商品展示,平台介绍,功能入口
页面2:拍卖中/报价揭示中/拍卖结束
页面3:商品详细信息
页面4:提交拍卖申请
页面5:带有分类的信息展示页
页面6:链接钱包
页面7:关于我们
主要组件组件1:顶部导航
组件2:底部信息栏
项目:区块链
未读后端启动及区块链部署1.启动IPFS12ipfs init启动ipfs.exe
2.启动ganache-cli命令行直接运行:
1ganache-cli
然后记录下区块链中用户的私钥
3. 部署合约在项目根目录下使用 truffle 部署合约
1truffle migrations
等待所有的合约运行结束
4.后端启动在数据库中创建一个名为”ebay”的数据库,然后导入如下脚本:
12345678910111213create table `product` ( `blockchainId` int (11), `productName` varchar (768), `category` varchar (768), `ipfsImageHash` varchar (768), `ipfsDescHash` varchar (768), `auctionStartTime` bigint (20), `auctionEndTime` bigint (20), `price` varchar (768), `productCondition` int (11), `pro ...