大家好,我3y啊。由于去重逻辑重构了几次,好多股东直呼看不懂,于是我今天再安排一波对代码的解析吧。austin支持两种去重的类型:N分钟相同内容达到N次去重和一天内N次相同渠道频次去重。
(资料图)
在最开始,我的第一版实现是这样的:
publicvoidduplication(TaskInfotaskInfo){//配置示例:{"contentDeduplication":{"num":1,"time":300},"frequencyDeduplication":{"num":5}}JSONObjectproperty=JSON.parseObject(config.getProperty(DEDUPLICATION_RULE_KEY,AustinConstant.APOLLO_DEFAULT_VALUE_JSON_OBJECT));JSONObjectcontentDeduplication=property.getJSONObject(CONTENT_DEDUPLICATION);JSONObjectfrequencyDeduplication=property.getJSONObject(FREQUENCY_DEDUPLICATION);//文案去重DeduplicationParamcontentParams=DeduplicationParam.builder().deduplicationTime(contentDeduplication.getLong(TIME)).countNum(contentDeduplication.getInteger(NUM)).taskInfo(taskInfo).anchorState(AnchorState.CONTENT_DEDUPLICATION).build();contentDeduplicationService.deduplication(contentParams);//运营总规则去重(一天内用户收到最多同一个渠道的消息次数)Longseconds=(DateUtil.endOfDay(newDate()).getTime()-DateUtil.current())/1000;DeduplicationParambusinessParams=DeduplicationParam.builder().deduplicationTime(seconds).countNum(frequencyDeduplication.getInteger(NUM)).taskInfo(taskInfo).anchorState(AnchorState.RULE_DEDUPLICATION).build();frequencyDeduplicationService.deduplication(businessParams);}
那时候很简单,基本主体逻辑都写在这个入口上了,应该都能看得懂。后来,群里滴滴哥表示这种代码不行,不能一眼看出来它干了什么。于是怒提了一波pull request重构了一版,入口是这样的:
publicvoidduplication(TaskInfotaskInfo){//配置样例:{"contentDeduplication":{"num":1,"time":300},"frequencyDeduplication":{"num":5}}Stringdeduplication=config.getProperty(DeduplicationConstants.DEDUPLICATION_RULE_KEY,AustinConstant.APOLLO_DEFAULT_VALUE_JSON_OBJECT);//去重DEDUPLICATION_LIST.forEach(key->{DeduplicationParamdeduplicationParam=builderFactory.select(key).build(deduplication,key);if(deduplicationParam!=null){deduplicationParam.setTaskInfo(taskInfo);DeduplicationServicededuplicationService=findService(key+SERVICE);deduplicationService.deduplication(deduplicationParam);}});}
我猜想他的思路就是把构建去重参数和选择具体的去重服务给封装起来了,在最外层的代码看起来就很简洁了。后来又跟他聊了下,他的设计思路是这样的:考虑到以后会有其他规则的去重就把去重逻辑单独封装起来了,之后用策略模版的设计模式进行了重构,重构后的代码 模版不变,支持各种不同策略的去重,扩展性更高更强更简洁
确实牛逼。
我基于上面的思路微改了下入口,代码最终演变成这样:
publicvoidduplication(TaskInfotaskInfo){//配置样例:{"deduplication_10":{"num":1,"time":300},"deduplication_20":{"num":5}}StringdeduplicationConfig=config.getProperty(DEDUPLICATION_RULE_KEY,CommonConstant.EMPTY_JSON_OBJECT);//去重ListdeduplicationList=DeduplicationType.getDeduplicationList();for(IntegerdeduplicationType:deduplicationList){DeduplicationParamdeduplicationParam=deduplicationHolder.selectBuilder(deduplicationType).build(deduplicationConfig,taskInfo);if(Objects.nonNull(deduplicationParam)){deduplicationHolder.selectService(deduplicationType).deduplication(deduplicationParam);}}}
到这,应该大多数人还能跟上吧?在讲具体的代码之前,我们先来简单看看去重功能的代码结构(这会对后面看代码有帮助)
去重的逻辑可以统一抽象为:在X时间段内达到了Y阈值,还记得我曾经说过:「去重」的本质:「业务Key」+「存储」。那么去重实现的步骤可以简单分为(我这边存储就用的Redis):
通过Key从Redis获取记录判断该Key在Redis的记录是否符合条件符合条件的则去重,不符合条件的则重新塞进Redis更新记录为了方便调整去重的参数,我把X时间段和Y阈值都放到了配置里{"deduplication_10":{"num":1,"time":300},"deduplication_20":{"num":5}}。目前有两种去重的具体实现:
1、5分钟内相同用户如果收到相同的内容,则应该被过滤掉
2、一天内相同的用户如果已经收到某渠道内容5次,则应该被过滤掉
从配置中心拿到配置信息了以后,Builder就是根据这两种类型去构建出DeduplicationParam,就是以下代码:
DeduplicationParamdeduplicationParam=deduplicationHolder.selectBuilder(deduplicationType).build(deduplicationConfig,taskInfo);
Builder和DeduplicationService都用了类似的写法(在子类初始化的时候指定类型,在父类统一接收,放到Map里管理)
而统一管理着这些服务有个中心的地方,我把这取名为DeduplicationHolder
/***@authorhuskey*@date2022/1/18*/@ServicepublicclassDeduplicationHolder{privatefinalMapbuilderHolder=newHashMap<>(4);privatefinalMap serviceHolder=newHashMap<>(4);publicBuilderselectBuilder(Integerkey){returnbuilderHolder.get(key);}publicDeduplicationServiceselectService(Integerkey){returnserviceHolder.get(key);}publicvoidputBuilder(Integerkey,Builderbuilder){builderHolder.put(key,builder);}publicvoidputService(Integerkey,DeduplicationServiceservice){serviceHolder.put(key,service);}}
前面提到的业务Key,是在AbstractDeduplicationService的子类下构建的:
而具体的去重逻辑实现则都在LimitService下,{一天内相同的用户如果已经收到某渠道内容5次}是在SimpleLimitService中处理使用mget和pipelineSetEX就完成了实现。而{5分钟内相同用户如果收到相同的内容}是在SlideWindowLimitService中处理,使用了lua脚本完成了实现。
LimitService的代码都来源于@caolongxiu的pull request,建议大家可以对比commit再学习一番:https://gitee.com/zhongfucheng/austin/pulls/19
1、频次去重采用普通的计数去重方法,限制的是每天发送的条数。
2、内容去重采用的是新开发的基于redis中zset的滑动窗口去重,可以做到严格控制单位时间内的频次。
3、redis使用lua脚本来保证原子性和减少网络io的损耗
4、redis的key增加前缀做到数据隔离(后期可能有动态更换去重方法的需求)
5、把具体限流去重方法从DeduplicationService抽取出来,DeduplicationService只需设置构造器注入时注入的AbstractLimitService(具体限流去重服务)类型即可动态更换去重的方法 6、使用雪花算法生成zset的唯一value,score使用的是当前的时间戳
针对滑动窗口去重,有会引申出新的问题:limit.lua的逻辑?为什么要移除时间窗口的之前的数据?为什么ARGV[4]参数要唯一?为什么要expire?
A: 使用滑动窗口可以保证N分钟达到N次进行去重。滑动窗口可以回顾下TCP的,也可以回顾下刷LeetCode时的一些题,那这为什么要移除,就不陌生了。
为什么ARGV[4]要唯一,具体可以看看zadd这条命令,我们只需要保证每次add进窗口内的成员是唯一的,那么就不会触发有更新的操作(我认为这样设计会更加简单些),而唯一Key用雪花算法比较方便。
为什么expire?,如果这个key只被调用一次。那就很有可能在redis内存常驻了,expire能避免这种情况。
推荐项目最后再叨叨吧,很多人可能会发一段截图,跑来问我为什么要这样写,为什么要以这种方式实现,能不能以这种方式实现。这时候,我更想看到的是:你已经实现了第二种方式了,然后探讨你写的这种方案好不好,现有的代码差在哪里。
毕竟问问题很简单,我又不是客服,总不能没诚意的问题我都得一一回答吧。
如果想学Java项目的,我还是强烈推荐我的开源项目消息推送平台Austin,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。
仓库地址(可点击阅读原文跳转):https://gitee.com/zhongfucheng/austin
我开通了股东服务内容,感兴趣可以点击下方看看,主要针对的是项目哟
VIP服务
下一篇:最后一页
X 关闭
推荐内容
- 解剖屎山,寻觅黄金之第二弹 世界热资讯
- 天天简讯:盗墓笔记花爷语录_盗墓笔记中花爷的简介
- 信用卡不激活会作废吗 情况如下 热资讯
- 环球百事通!前程无忧HR派“智造·智招”分享会:数字融合下的制造业人资未来管理模式
- 潮骚_关于潮骚介绍
- 焦点快报!前中甲球员董祥直播中爆料:浙江队门将顾超真出事了
- 合金弹头觉醒Boss有哪些 合金弹头觉醒Boss介绍|每日聚焦
- 当前速递!鲁尼:梅西是历史第一人!哈兰德是世界第一人!
- 计算机行业研究周报:每周一谈,AI浪潮席卷,为协同办公赛道注入新动力 天天速讯
- 环球看点!7月7日是什么日子_了解节日的由来
- Sensor Tower:3月全球手游下载量45亿次 《Subway Surfers 地铁跑酷》位列榜首-每日视点
- 快看点丨再见歌词(zaijian)
- 焦点速看:平安吉祥酒 富贵吉祥酒骗局
- 博睿数据蝉联中国APM市场份额第一,Bonree ONE春季正式版发布 环球短讯
- 2023年4月23日河北省甘油价格最新行情预测_全球新资讯
- 上市公司纷纷跨界卖酒,股票还能沾酒就涨?
- “青春正是读书时”网络主题活动正式启动!期待你的参与 快播报
- 世界播报:8部门发文推进IPv6技术演进和应用创新发展
- 寒气湿气重的症状|快播
- 扬帆“高”歌的姐姐|江秾汇市场服务管理有限公司副总经理赵智:拒绝敷衍 做到最好-全球观热点
- CPO板块持续走强,永鼎股份2连板
- 中天湖南集团稳定价格期结束及超额配股权失效 快讯
- 欧阳伶 焦点快播
- 海力风电:连续3日融资净买入累计6416.74万元(04-21)
- “读书之美”系列思政课|孔子的智慧
- 亚马逊云发布新的人工智能工具亚马逊基岩 世界最资讯
- 动态:长城工资宝货币市场基金2023年劳动节假期前暂停申购和转换转入业务的公告
- 小米的功效_小米的功效是什么
- 即时焦点:炸肉丸子怎么保存 炸肉丸子怎么保存煮的时候不会散
- 世界今日讯!办理中国石油加油卡有什么优惠吗 办理中国石油加油卡有什么优惠
- 前沿热点:在这里领略荆山楚水之美,文旅博览会湖北展区最美展台揭晓
- 尼桑楼兰内饰图片(尼桑楼兰)
- 青浦又新增了这两家幼儿园-天天速讯
- 天天速递!欧褚
- 【天天新要闻】宝马雕车香满路全诗_宝马雕车香满路用了什么修辞手法
- 今日热门!展馆洋溢着节日的气氛 第二届武汉文旅博览会人气爆棚
- 国际民调:“人才红利”已成中国发展强劲动力
- 口罩的分类编码_口罩的分类|环球速递
- 全球热消息:五一假期 铁路成都局预计发送旅客1100万人次
- 研究显示中国空气质量改善减少健康风险-每日头条
- “外卖诗人”王计兵:我笨拙地爱着这个世界_环球速讯
- 调查:2022年我国成年国民人均纸质图书阅读量4.78本 微动态
- 蓝思科技:孙公司拟86.66亿元投建精密部件生产项目及改扩建项目
- 曾加:意甲5队进入欧战半决赛真是太好了,但本土前锋少得可怜
- 焦点速看:工信部等八部门联合印发《关于推进IPv6技术演进和应用创新发展的实施意见》
- 老式巧克力象棋派_有意义的圣诞节礼物送女朋友什么
- 今日周笔畅刚出道与现今对比_周笔畅结婚了吗
- 课堂笔记的重要性_课堂笔记 今日热讯
- 全球微速讯:父亲的身份_父亲的节日
- 提前引进天赋小将 热刺有意16岁小将洛根-今日要闻
- 环球消息!彪悍!俄罗斯出动渔船,专门“猎杀”美军核潜艇,也给中国提了醒
- 高级消防工程师职称评定条件_高级消防工程师 天天聚看点
- 焦点快报!太阳报揭秘C罗健康习惯:一天吃六餐,涂黑指甲防止细菌感染
- 抖音商城五一会有满减吗?抖音五一有什么活动?
- 外媒:苹果公司将推出日记应用,与Day One展开竞争 当前观察
- 民俗“赶潮”,非遗“圈粉”!枣庄山亭民俗文化节开幕 世界快讯
- 企鹅减少或影响南冰洋铁循环-全球快消息
- 祭城路街道办事处扎实做好楼院卫生治理工作
- 有人对自己表白怎么办 有人向自己表白-环球快资讯
- 南昌有座“漂浮森林” 天天亮点
- 头发稀疏可以恢复吗
- 世界观点:南都电源2022净利润同比增长124.18% 锂电池产能达9.5GWh
- 开卷有益⑤丨世界读书日特别策划:春天正是读书天-每日视点
- 焦点速讯:京粮控股:经查询,截至2023年4月20日,公司A股股东总户数约为5.72万
- 中阳县举办迎五一职工羽毛球团体赛
- 世界实时:湖人首发:范德比尔特、詹姆斯、浓眉、里夫斯、拉塞尔
- 世界速递!世运电路2022年净利润增长107% 行业排名不断提升
- 山东提升文旅体验 拓展消费空间
- 援柬埔寨体育技术项目第一阶段在华训练完结 全球视讯
- 华为突破ERP系统封锁!任正非:今天软件仍落后但终会强大_天天热门
- 20个品种营收过亿 华北制药去年净利润负6.89亿元 天天时讯
- 今日如何把QQ空间日志名改成彩色? 全球热讯
- 北京丰台持续从严从实全面推进隐患排查和问题整改工作_世界报资讯
- 今日讯!维固力的功效与作用及食用方法_维固力的功效与作用
- 《三体》电视剧音乐原声 CD 专辑预售,6 月 10 日发货售 99 元_全球快消息 全球今亮点
- 天天速读:“三月三 耍西山”欢乐来袭 系列活动持续至月底
- 【天天报资讯】姜至鹏太辣了!武磊太快了 中超开赛以来最精彩比赛!老哈托大了
- 惊现!iOS 15.6.1 / 16.1.2 内核漏洞,满足越狱?
- 世界快播:c轮融资后多久能上市_c轮融资
- 今年的四月还是个大坏蛋|焦点快播
- 梦想协奏曲少女音乐派对什么时候出 公测上线时间预告_天天新要闻
- 全球微头条丨4nm Zen4!宏碁全球首发AMD锐龙9 7940H笔记本
- 无奋斗不青春作文800字_无奋斗不青春作文800 世界资讯
- 世界新消息丨世界地球日的“骑”妙之旅,让我们一起骑进北京的春天!
- 谈恋爱都有啥技巧_有什么谈恋爱的技巧
- 世界今热点:高速铁路客运服务英语口语_关于高速铁路客运服务英语口语简述
- 天天信息:你准备好了吗?注册会计师考试的难度分析
- [快讯]军工龙头公布第一季报_聚焦
- “中国好故事”网络国际传播精品案例评选结果公布_即时
- 世界快看:2500年前《诗经》里的河南郑州:为何举全国之力,办了一场相亲活动?
- 山西潞安集团五阳煤矿有限公司|天天速递
- 出发!奉化这里已美成童话世界!-今日观点
- 疯狂大家庭第二部全文_大头儿子和小头爸爸 第二部的内容是什么
- 我国的出售出入境证件案件有什么追诉标准呢_全球热推荐
- 环球快看点丨抚松县万良镇:推进市场主体集中入驻“信易贷”平台
- 请回答二零一四全本txt_请回答二零一四
- 天天要闻:浏阳大瑶镇上升村:蜂飞蝶舞花木香
- 苹果系统升级到一半不想升级了怎么办_苹果系统升级ios12 当前独家
- 闯祸了,标签没撕,采购价曝光了! 全球百事通
- 世界速看:Consul 的架构和设计思路
精彩推荐
-
解剖屎山,寻觅黄金之第二弹 世界热资讯2023-04-24
-
天天简讯:盗墓笔记花爷语录_盗墓笔记中花爷的简介2023-04-24
-
信用卡不激活会作废吗 情况如下 热资讯2023-04-24
-
环球百事通!前程无忧HR派“智造·智招”分享会:数字融合下的制造业人资未来管理模式2023-04-24
-
潮骚_关于潮骚介绍2023-04-24
-
焦点快报!前中甲球员董祥直播中爆料:浙江队门将顾超真出事了2023-04-24
-
合金弹头觉醒Boss有哪些 合金弹头觉醒Boss介绍|每日聚焦2023-04-24
-
当前速递!鲁尼:梅西是历史第一人!哈兰德是世界第一人!2023-04-24
-
计算机行业研究周报:每周一谈,AI浪潮席卷,为协同办公赛道注入新动力 天天速讯2023-04-24
-
环球看点!7月7日是什么日子_了解节日的由来2023-04-24
-
快看点丨再见歌词(zaijian)2023-04-24
-
焦点速看:平安吉祥酒 富贵吉祥酒骗局2023-04-24
-
博睿数据蝉联中国APM市场份额第一,Bonree ONE春季正式版发布 环球短讯2023-04-24
-
2023年4月23日河北省甘油价格最新行情预测_全球新资讯2023-04-24
-
上市公司纷纷跨界卖酒,股票还能沾酒就涨?2023-04-24
-
“青春正是读书时”网络主题活动正式启动!期待你的参与 快播报2023-04-24
-
世界播报:8部门发文推进IPv6技术演进和应用创新发展2023-04-24
-
寒气湿气重的症状|快播2023-04-24
-
CPO板块持续走强,永鼎股份2连板2023-04-24
-
中天湖南集团稳定价格期结束及超额配股权失效 快讯2023-04-24
-
欧阳伶 焦点快播2023-04-24
-
海力风电:连续3日融资净买入累计6416.74万元(04-21)2023-04-24
-
“读书之美”系列思政课|孔子的智慧2023-04-24
-
亚马逊云发布新的人工智能工具亚马逊基岩 世界最资讯2023-04-24
-
动态:长城工资宝货币市场基金2023年劳动节假期前暂停申购和转换转入业务的公告2023-04-24
-
小米的功效_小米的功效是什么2023-04-24
-
即时焦点:炸肉丸子怎么保存 炸肉丸子怎么保存煮的时候不会散2023-04-24
-
世界今日讯!办理中国石油加油卡有什么优惠吗 办理中国石油加油卡有什么优惠2023-04-24
-
前沿热点:在这里领略荆山楚水之美,文旅博览会湖北展区最美展台揭晓2023-04-24
-
尼桑楼兰内饰图片(尼桑楼兰)2023-04-24
-
青浦又新增了这两家幼儿园-天天速讯2023-04-24
-
天天速递!欧褚2023-04-24
-
【天天新要闻】宝马雕车香满路全诗_宝马雕车香满路用了什么修辞手法2023-04-24
-
今日热门!展馆洋溢着节日的气氛 第二届武汉文旅博览会人气爆棚2023-04-24
-
国际民调:“人才红利”已成中国发展强劲动力2023-04-23
-
口罩的分类编码_口罩的分类|环球速递2023-04-23
-
全球热消息:五一假期 铁路成都局预计发送旅客1100万人次2023-04-23
-
研究显示中国空气质量改善减少健康风险-每日头条2023-04-23
-
“外卖诗人”王计兵:我笨拙地爱着这个世界_环球速讯2023-04-23
-
调查:2022年我国成年国民人均纸质图书阅读量4.78本 微动态2023-04-23
-
蓝思科技:孙公司拟86.66亿元投建精密部件生产项目及改扩建项目2023-04-23
-
曾加:意甲5队进入欧战半决赛真是太好了,但本土前锋少得可怜2023-04-23
-
焦点速看:工信部等八部门联合印发《关于推进IPv6技术演进和应用创新发展的实施意见》2023-04-23
-
老式巧克力象棋派_有意义的圣诞节礼物送女朋友什么2023-04-23
-
今日周笔畅刚出道与现今对比_周笔畅结婚了吗2023-04-23
-
课堂笔记的重要性_课堂笔记 今日热讯2023-04-23
-
全球微速讯:父亲的身份_父亲的节日2023-04-23
-
提前引进天赋小将 热刺有意16岁小将洛根-今日要闻2023-04-23
-
环球消息!彪悍!俄罗斯出动渔船,专门“猎杀”美军核潜艇,也给中国提了醒2023-04-23
-
高级消防工程师职称评定条件_高级消防工程师 天天聚看点2023-04-23
-
焦点快报!太阳报揭秘C罗健康习惯:一天吃六餐,涂黑指甲防止细菌感染2023-04-23
-
抖音商城五一会有满减吗?抖音五一有什么活动?2023-04-23
-
外媒:苹果公司将推出日记应用,与Day One展开竞争 当前观察2023-04-23
-
民俗“赶潮”,非遗“圈粉”!枣庄山亭民俗文化节开幕 世界快讯2023-04-23
-
企鹅减少或影响南冰洋铁循环-全球快消息2023-04-23
-
祭城路街道办事处扎实做好楼院卫生治理工作2023-04-23
-
有人对自己表白怎么办 有人向自己表白-环球快资讯2023-04-23
-
南昌有座“漂浮森林” 天天亮点2023-04-23
-
头发稀疏可以恢复吗2023-04-23
-
世界观点:南都电源2022净利润同比增长124.18% 锂电池产能达9.5GWh2023-04-23
-
开卷有益⑤丨世界读书日特别策划:春天正是读书天-每日视点2023-04-23
-
焦点速讯:京粮控股:经查询,截至2023年4月20日,公司A股股东总户数约为5.72万2023-04-23
-
中阳县举办迎五一职工羽毛球团体赛2023-04-23
-
世界实时:湖人首发:范德比尔特、詹姆斯、浓眉、里夫斯、拉塞尔2023-04-23
-
世界速递!世运电路2022年净利润增长107% 行业排名不断提升2023-04-23
-
山东提升文旅体验 拓展消费空间2023-04-23
-
援柬埔寨体育技术项目第一阶段在华训练完结 全球视讯2023-04-23
-
华为突破ERP系统封锁!任正非:今天软件仍落后但终会强大_天天热门2023-04-23
-
20个品种营收过亿 华北制药去年净利润负6.89亿元 天天时讯2023-04-23
-
今日如何把QQ空间日志名改成彩色? 全球热讯2023-04-23
-
北京丰台持续从严从实全面推进隐患排查和问题整改工作_世界报资讯2023-04-23
-
今日讯!维固力的功效与作用及食用方法_维固力的功效与作用2023-04-23
-
天天速读:“三月三 耍西山”欢乐来袭 系列活动持续至月底2023-04-23
-
【天天报资讯】姜至鹏太辣了!武磊太快了 中超开赛以来最精彩比赛!老哈托大了2023-04-23
-
惊现!iOS 15.6.1 / 16.1.2 内核漏洞,满足越狱?2023-04-23
-
世界快播:c轮融资后多久能上市_c轮融资2023-04-23
-
今年的四月还是个大坏蛋|焦点快播2023-04-23
-
梦想协奏曲少女音乐派对什么时候出 公测上线时间预告_天天新要闻2023-04-23
-
全球微头条丨4nm Zen4!宏碁全球首发AMD锐龙9 7940H笔记本2023-04-23
-
无奋斗不青春作文800字_无奋斗不青春作文800 世界资讯2023-04-23
-
世界新消息丨世界地球日的“骑”妙之旅,让我们一起骑进北京的春天!2023-04-23
-
谈恋爱都有啥技巧_有什么谈恋爱的技巧2023-04-23
-
世界今热点:高速铁路客运服务英语口语_关于高速铁路客运服务英语口语简述2023-04-23
-
天天信息:你准备好了吗?注册会计师考试的难度分析2023-04-22
-
[快讯]军工龙头公布第一季报_聚焦2023-04-22
-
“中国好故事”网络国际传播精品案例评选结果公布_即时2023-04-22
-
世界快看:2500年前《诗经》里的河南郑州:为何举全国之力,办了一场相亲活动?2023-04-22
-
山西潞安集团五阳煤矿有限公司|天天速递2023-04-22
-
出发!奉化这里已美成童话世界!-今日观点2023-04-22
-
疯狂大家庭第二部全文_大头儿子和小头爸爸 第二部的内容是什么2023-04-22
-
我国的出售出入境证件案件有什么追诉标准呢_全球热推荐2023-04-22
-
环球快看点丨抚松县万良镇:推进市场主体集中入驻“信易贷”平台2023-04-22
-
请回答二零一四全本txt_请回答二零一四2023-04-22
-
天天要闻:浏阳大瑶镇上升村:蜂飞蝶舞花木香2023-04-22
-
苹果系统升级到一半不想升级了怎么办_苹果系统升级ios12 当前独家2023-04-22
-
闯祸了,标签没撕,采购价曝光了! 全球百事通2023-04-22
-
世界速看:Consul 的架构和设计思路2023-04-22