最新要闻
- 当前关注:重回中国!福建13岁女孩4.82秒打破鲁班锁世界纪录
- 今日讯!ROG新款幻14笔记本即将上市:锐龙9 7940HS 可选RTX 4060
- 免费用!中国信通院全球网测APP iOS版上线:支持5G/千兆接入测速
- 速读:71款任选 森马T恤33元清仓手慢无
- 动态:祝福!比尔盖茨有新女友了 身家超33亿女富婆:双方沉默 前妻也有新恋情
- 完美收官!《三体》电视剧最后5集被赞爆:老外满分刷屏
- 快看:80km续航 雅迪电动车DN2千元秒杀:2699元起还是新国标
- 今亮点!女子熬夜看《狂飙》:患高启强同款干眼症
- 世界热头条丨逆天 韩国学生用ChatGPT写论文“喜”提0分 校方:剽窃!
- 快资讯:再续一个月:《阿凡达:水之道》再次宣布延长上映
- 28款CPU性能实测:Intel实力屠榜 AMD游戏神U赢回面子
- 全球消息!全国首座高速公路重卡充换电站亮相:电池包350kWh 3分钟自动换电
- 环球视点!无损压缩鼻祖去世了 没有他就没有今天的Zip、PNG、PDF
- 当前观点:博主“科普”鲸鱼会假装搁浅吸引人来救 博物杂志辟谣:九死一生
- 天天快讯:行驶中会“熄火” 大众召回超2万辆ID.4电动车
- 世界报道:欧洲玩家吐槽《霍格沃茨之遗》捏脸系统:最浅的皮肤选项依然很深
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球看点:if else 代码优化实战
前言介绍几种方法,不使用if else语句也能做条件判断。
一:使用枚举
首先定义一个公用接口 RoleOperation,表示不同角色所能做的操作
package com.gavin.enums;public interface RoleOperation { //定义一个方法来表示某个角色,有哪些op(操作)权限 String op();}
接下来我们将不同角色的情况全部交由枚举类来做,定义一个不同角色有不同权限的枚举类
(资料图)
package com.gavin.enums;public enum RoleEnum implements RoleOperation{ //定义一个超级管理员的操作权限(有AAA的操作权限) ROLE_ROOT_ADMIN { @Override public String op() { return "ROLE_ROOT_ADMIN:has AAA permission"; } }, //定义一个订单管理员的操作权限(有BBB的操作权限) ROLE_ORDER_ADMIN { @Override public String op() { return "ROLE_ORDER_ADMIN:has BBB permission"; } }, //定义一个普通用户的操作权限(有CCC的操作权限) ROLE_NORMAL { @Override public String op() { return "ROLE_NORMAL:has CCC permission"; } };}
一行代码,if/else也灰飞烟灭了
package com.gavin.enums;public class JudgeRole { public static void main(String[] args) { String roleName = "ROLE_ROOT_ADMIN"; String operation = RoleEnum.valueOf(roleName).op(); System.out.println("操作权限:" + operation); }}
以后扩充条件,只需要去枚举类中加代码即可。
二:使用工厂模式
不同分支做不同的事情,很明显就提供了使用工厂模式的契机,我们只需要将不同情况单独定义好,然后去工厂类里面聚合即可。
首先,针对不同的角色,单独定义其业务类:
package com.gavin.factory;import com.gavin.enums.RoleOperation;public class RootAdminRole implements RoleOperation { //定义属性值 private String roleName; //有参构造方法 public RootAdminRole (String roleName) { this.roleName = roleName; } //实现RoleOperation接口,然后重写接口方法 @Override public String op() { return roleName + " has AAA permission"; }}
package com.gavin.factory;import com.gavin.enums.RoleOperation;public class OrderAdminRole implements RoleOperation { //定义属性值 private String roleName; //有参构造方法 public OrderAdminRole(String roleName) { this.roleName = roleName; } //实现RoleOperation接口,然后重写接口方法 @Override public String op() { return roleName + " has BBB permission"; }}
package com.gavin.factory;import com.gavin.enums.RoleOperation;public class NormalRole implements RoleOperation { //定义属性值 private String roleName; //有参构造方法 public NormalRole(String roleName) { this.roleName = roleName; } //实现RoleOperation接口,然后重写接口方法 @Override public String op() { return roleName + " has CCC permission"; }}
接下来再写一个工厂类 RoleFactory对上面不同角色进行聚合:
package com.gavin.factory;import com.gavin.enums.RoleOperation;import java.util.HashMap;import java.util.Map;public class RoleFactory { //定义一个Map集合,使用static修饰后会与类一起加载进堆中 //加载顺序早于没有用static修饰的常量、变量和方法 static Map map = new HashMap<>(); //定义一个静态方法进行初始化 static { map.put("ROLE_ROOT_ADMIN", new RootAdminRole("ROLE_ROOT_ADMIN")); map.put("ROLE_ORDER_ADMIN", new OrderAdminRole("ROLE_ORDER_ADMIN")); map.put("ROLE_NORMAL", new NormalRole("ROLE_NORMAL")); } //定义一个获取操作权限的静态方法,提供给其它方法调用 public static RoleOperation getOp(String roleName) { return map.get(roleName); }}
接下来借助上面这个工厂,业务代码调用也只需一行代码:
package com.gavin.factory;public class JudgeRole02 { public static void main(String[] args) { /** * 使用工厂模式实现思路,先调用RoleFactory类中的getOp方法,找到对应的角色对象中的权限 * 再调用该对象中的op()方法获取角色的权限信息 */ String roleName = "ROLE_ROOT_ADMIN"; String operation = RoleFactory.getOp(roleName).op(); System.out.println("操作权限:" + operation); }}
扩展条件也很容易,只需要增加新代码,而不需要动以前的业务代码,非常符合“开闭原则”。
三:使用策略模式
策略模式和工厂模式写起来其实区别也不大!
在上面工厂模式代码的基础上,按照策略模式的指导思想,我们也来创建一个所谓的策略上下文类,这里命名为 RoleContext:
package com.gavin.strategy;import com.gavin.enums.RoleOperation;public class RoleContext { //定义可更换的策略,传入不同的策略对象,业务即相应变化 private RoleOperation roleOperation; public RoleContext(RoleOperation roleOperation) { this.roleOperation = roleOperation; } //定义获取角色权限的方法 public String execute() { return roleOperation.op(); }}
很明显上面传入的参数 operation就是表示不同的“策略”。我们在业务代码里传入不同的角色,即可得到不同的操作结果:
package com.gavin.strategy;import com.gavin.enums.RoleOperation;import com.gavin.factory.NormalRole;import com.gavin.factory.OrderAdminRole;import com.gavin.factory.RootAdminRole;public class JudgeRole03 { public static void main(String[] args) { JudgeRole03 judgeRole03 = new JudgeRole03(); String operation = judgeRole03.judge(new RootAdminRole("ROLE_ROOT_ADMIN")); System.out.println("operation=" + operation); String operation2 = judgeRole03.judge(new OrderAdminRole("ROLE_ORDER_ADMIN")); System.out.println("operation2=" + operation2); String operation3 = judgeRole03.judge(new NormalRole("ROLE_NORMAL")); System.out.println("operation3=" + operation3); } //定义一个方法来调用RoleContext对象中获取角色权限的execute()方法 public String judge(RoleOperation roleOperation) { RoleContext roleContext = new RoleContext(roleOperation); return roleContext.execute(); }}
几种常用的if else语句的优化方法,写代码前还是得多思考一番,考虑是否有更具可扩展性的写法!
四:实战应用
用枚举扩展实战
public class PublicEvent extends ProcessPubicListener { /** * 全局流程监听事件 * @param eventName * @param taskInstance * @param processExecutionContext */ @Override public void call(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { PublicOperationEnum.valueOf(eventName).pOperation(eventName,taskInstance,processExecutionContext); System.out.println("操作流程是:" + "------======------ ------======------"); }}
定义接口:
public interface ProcessOperation { //定义一个方法来表示某个流程,有哪些(操作) void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext);}
定义枚举:
public enum PublicOperationEnum implements ProcessOperation { PROCESS_BEFORE_RESTART{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processBeforeRestart(eventName,processExecutionContext); } }, TASK_DELEGATE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.taskDelegate(eventName,taskInstance,processExecutionContext); } }, TASK_READ{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.taskRead(eventName,taskInstance); } }, PROCESS_CREATE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processCreate(eventName,processExecutionContext); } }, TASK_CREATE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.taskCreate(eventName,taskInstance,processExecutionContext); } }, PROCESS_BEFORE_DELETE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processBeforeDelete(eventName,taskInstance,processExecutionContext); } }, TASK_DELETE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.taskDelete(eventName,taskInstance,processExecutionContext); } }, PROCESS_DELETE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processDelete(eventName,taskInstance,processExecutionContext); } }, PROCESS_REMIND{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processRemind(eventName,taskInstance,processExecutionContext); } }, PROCESS_UPDATE{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processUpdate(eventName,taskInstance); } }, PROCESS_RESTART{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processRestart(eventName,taskInstance,processExecutionContext); } }, PROCESS_EVENT_END{ @Override public void pOperation(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { ProcessTask.processEventEnd(eventName,taskInstance,processExecutionContext); } };}
定义流程任务:
public class ProcessTask { public static void processEventEnd(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到[" + eventName + "]" + taskInstance); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--[" + eventName + "]" +",结束!"); } public static void processRestart(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:流程重置事件[" + eventName + "]" + taskInstance); System.out.println("此时,任务实例是空的!"); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--流程重置,结束!"); } public static void processUpdate(String eventName, TaskInstance taskInstance) { System.out.println("--我监听到:流程修改事件[" + eventName + "]" + taskInstance); System.out.println("此时,任务实例,流程实例都是是空的!"); System.out.println("--流程修改,结束!"); } public static void processRemind(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:流程催办[" + eventName + "]" + taskInstance); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--流程催办,结束!"); } public static void processDelete(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:流程实例删除后[" + eventName + "]" + taskInstance); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--流程实例删除后,结束!"); } public static void taskDelete(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:任务删除[" + eventName + "]" + taskInstance); if(taskInstance==null){//当任务实例为空的时候是真删除,像流程撤销、流程实例删除 List deleteTaskList = (List )processExecutionContext.getParameter("taskList"); System.out.println("输出TASK_DELETE删除的已办任务实例(此处获取的删除任务列表是流程撤消前和流程删除前获取的总和)"); for(TaskInstance htask:deleteTaskList){ System.out.println("删除taskInstID为::"+htask.getId()); } System.out.println("此时是真删除,像流程撤销、流程实例删除,流程实例、任务实例都是空的!"); }else{//当任务实例是非空,那么就是假删除,像流程提交 String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("此时是假删除,像流程提交,流程实例、任务实例都是空的!"); } System.out.println("--任务删除,结束!"); } public static void processBeforeDelete(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:流程实例删除前[" + eventName + "]" + taskInstance); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); List tasks = SDK.getTaskQueryAPI().processInstId(processInstID).list(); System.out.println("输出删除前要删除的任务实例:"); for(TaskInstance task:tasks){ System.out.println("删除taskInstID为::"+task.getId()); } List Historytasks = SDK.getHistoryTaskQueryAPI().processInstId(processInstID).list(); System.out.println("输出删除前要删除的已办任务实例"); for(TaskInstance htask:Historytasks){ System.out.println("删除taskInstID为::"+htask.getId()); } System.out.println("流程实例::"+processInstID+"::状态:"+processState); System.out.println("--流程实例删除前,结束!"); } public static void taskCreate(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:任务实例创建[" + eventName + "]" + taskInstance); System.out.println("任务节点信息为:"+taskInstance.getActivityDefId()); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--任务实例创建,结束!"); } public static void processCreate(String eventName, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到流程实例创建[" + eventName + "]" ); System.out.println("此时,任务实例是空的!"); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--流程实例创建,结束!"); } public static void taskRead(String eventName, TaskInstance taskInstance) { System.out.println("--我监听到:任务阅读[" + eventName + "]" + taskInstance); System.out.println("--任务阅读,结束!"); } public static void taskDelegate(String eventName, TaskInstance taskInstance, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:任务转办[" + eventName + "]" + taskInstance); System.out.println("转办人:"+taskInstance.getOwner()); String processInstID = processExecutionContext.getProcessInstance().getId(); String processState = processExecutionContext.getProcessInstance().getControlState(); Map parameters = processExecutionContext.getParameters(); if(parameters.containsKey("OLD_TASKINST")){ //获取转办前的执行人 TaskInstance oldtaskinst = (TaskInstance) parameters.get("OLD_TASKINST"); System.out.println("接收人:"+oldtaskinst.getTarget()); } String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--任务转办,结束!"); } public static void processBeforeRestart(String eventName, ProcessExecutionContext processExecutionContext) { System.out.println("--我监听到:流程撤销前[" + eventName + "]"); System.out.println("此时,任务实例是空的!"); String processInstID = processExecutionContext.getProcessInstance().getId(); System.out.println("流程实例ID为["+processInstID+"]"); processExecutionContext.getProcessInstance().getControlState(); String processState = processExecutionContext.getProcessInstance().getControlState(); List tasks = SDK.getTaskQueryAPI().processInstId(processInstID).list(); System.out.println("输出撤消前要删除的待办任务实例"); for(TaskInstance task:tasks){ System.out.println("删除taskInstID为::"+task.getId()); } List Historytasks = SDK.getHistoryTaskQueryAPI().processInstId(processInstID).list(); System.out.println("输出撤消前要删除的已办任务实例"); for(TaskInstance htask:Historytasks){ System.out.println("删除taskInstID为::"+htask.getId()); } String processTitle=processInstID+processExecutionContext.getProcessInstance().getTitle(); System.out.println("流程实例::"+processTitle+"["+processInstID+"]::状态:"+processState); System.out.println("--流程撤销前,结束!"); } }
全球看点:if else 代码优化实战
全球动态:网络协议-ssh基础
当前关注:重回中国!福建13岁女孩4.82秒打破鲁班锁世界纪录
今日讯!ROG新款幻14笔记本即将上市:锐龙9 7940HS 可选RTX 4060
免费用!中国信通院全球网测APP iOS版上线:支持5G/千兆接入测速
速读:71款任选 森马T恤33元清仓手慢无
动态:祝福!比尔盖茨有新女友了 身家超33亿女富婆:双方沉默 前妻也有新恋情
完美收官!《三体》电视剧最后5集被赞爆:老外满分刷屏
快看:80km续航 雅迪电动车DN2千元秒杀:2699元起还是新国标
Copula
今亮点!女子熬夜看《狂飙》:患高启强同款干眼症
世界热头条丨逆天 韩国学生用ChatGPT写论文“喜”提0分 校方:剽窃!
快资讯:再续一个月:《阿凡达:水之道》再次宣布延长上映
28款CPU性能实测:Intel实力屠榜 AMD游戏神U赢回面子
全球消息!全国首座高速公路重卡充换电站亮相:电池包350kWh 3分钟自动换电
基于图的下一代入侵检测系统
环球快资讯丨MySQL——性能优化的关注点
天天简讯:记录--Cesium+Vue实战教程——地图导航
世界关注:人工智能(Python)教程_编程入门自学教程_菜鸟教程-免费教程分享
天天要闻:安卓常用shell命令大全
环球视点!无损压缩鼻祖去世了 没有他就没有今天的Zip、PNG、PDF
当前观点:博主“科普”鲸鱼会假装搁浅吸引人来救 博物杂志辟谣:九死一生
天天快讯:行驶中会“熄火” 大众召回超2万辆ID.4电动车
世界报道:欧洲玩家吐槽《霍格沃茨之遗》捏脸系统:最浅的皮肤选项依然很深
当前速看:Stochastic Methods in Finance (1)
【独家】.Net6对AOP的多种支持之IAsyncResourceFilter
世界观天下!常见的python技术难点分享
当前速讯:Nodejs原型链污染
世界要闻:[threeJS]--- 外部导入的模型如何编程式实现帧动画以及调用模型自带的动画
情人节必备:德芙香浓黑巧12元/碗大促
逃离银河系!科学家在仙女星系中发现银河移民
世界快播:山东女子中淘宝彩票锦鲤:直播1小时刮594张彩票 中7170元
天天滚动:骁龙8+满血版、残血版差价非常大 一加揭秘:能差1个亿
防止技术垄断:昆仑万维宣布将在年内开源类ChatGPT代码
【全球播资讯】陕西旅游集团旗下景区春节期间累计接待超 200 万人次,这背后也有火山引擎 VeDI 的身影
当前热门:分享5个我不能没有的Vue.js库,不信你用不上
KingbaseES libstdc++.so.6 version 'CXXABI_1.3.8'问题处理
敏捷数据科学教程_编程入门自学教程_菜鸟教程-免费教程分享
MPI库并行Fortran程序:进程通讯
微头条丨女子带汉堡进星巴克被拦 称味道大会影响其他顾客 网友抵制
微信数据再多都够用 真我GT Neo5 1TB干到3499元:旗舰射门员
新资讯:14岁女孩连续玩手机81小时险猝死 专家提醒:家长一定要控制
【环球时快讯】1TB手机不到3500元!网友评价真我GT Neo5:这让友商很难做
世界新消息丨又多了一种摸鱼手段 小红书网页版上线:左图右文 沉浸大屏
快看:Android教程_编程入门自学教程_菜鸟教程-免费教程分享
天天日报丨vue2和vue3的区别有哪些?
docker学习
【全球热闻】剑指Offer 05. 替换空格(java解题)
信息:首个教育圈ChatGPT来了!网易有道将推生成式AI:可批改作文
每日快播:创下历史第二!《霍格沃茨之遗》steam在线人数达48万
快看点丨哭笑不得!西班牙火车尺寸太大无法过隧道:白花2亿多欧元
成都现飞鸟撞树现象 网友疑灾害前兆!专家回应:想多了
环球今日报丨用ChatGPT做表格真香!只需动嘴提要求和复制粘贴
Java基础三元运算符
世界快消息!Crystal Reports 教程_编程入门自学教程_菜鸟教程-免费教程分享
新资讯:再有人问你分布式事务,把这篇文章砸过去给他
有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据
天天播报:部分玩家批评《塞尔达传说:王国之泪》新宣传片:太中庸没新意
环球热讯:比亚迪百万新车或搭载:余承东李想力挺增程式到底落不落后?专家一句真相
C# 学习async/await(个人理解)
30 个 IDEA 常用小技巧,应有尽有,让你的撸码效率直接起飞...
【天天聚看点】世界有史以来最大百科全书!《永乐大典》首次线上公开 免费看
华擎推出4X4 BOX-7000系列迷你主机:锐龙7000U、支持双USB4
小米Civi 2宣布全版本支持MIUI 14!系统丝滑流畅、更省电
女子手机放枕边突然冒烟自燃:曾因进水维修
饭店反向抹零多收1毛被罚4500元 网友点赞:四舍五入抹零有误都可举报
天天日报丨必知必会的设计原则——里氏替换原则
焦点速递!联想发布“问天”服务器品牌 向3S领域发起总攻 5年内冲击第一
焦点!谷歌版ChatGPT灾难级发布 市值一夜狂跌7000亿 熬夜网友:退钱!
快播:刘强东要建员工福利房?京东31亿北京拿地 1.6万元/平
当前快报:手工扯面+秘制辣油 西安饭庄油泼biangbiang面6.6元/盒大促
全球看点:任天堂港服“任亏券”开卖:《塞尔达传说:王国之泪》预售你买没
孔雀石的主要成分是什么?孔雀石的作用与好处有哪些?
空气能热水器的优缺点是什么?空气能热水器十大名牌排名
高一选科怎么选最好?高一期中考试总结范文
暑假带孩子去哪里旅游最好?我的快乐暑假作文模板
旅游高峰期相反的叫什么?旅游高峰期是哪几个月?
植物大战僵尸2闪退是怎么回事?植物大战僵尸2闪退解决办法
精彩看点:【学习笔记】Http请求方法总结
当前通讯!FCoE简单介绍
头条焦点:git在工作中如何使用?
热议:近期做的有意思的两道题,不知道是谁抄谁hhhhh
Java利用ChromeDriver插件网页截图(Wondows版+Linux版)
煲音箱与不煲的差别大吗?煲音箱音量开多大合适?
验证码总是错误是怎么回事?验证码总是错误怎么解决?
电脑屏幕尺子怎么打开?电脑屏幕尺子怎么使用?
技嘉主板怎么设置U盘启动?技嘉主板超频怎么设置?
热门看点:价格率先步入“次世代”:《塞尔达传说:王国之泪》涨至70美元
环球最资讯丨《王者荣耀》项羽、虞姬情人节皮肤来了:280元值吗?
当前关注:荣耀Magic5系列充电规格曝光:全系仅66W快充
环球热文:威马汽车CDO:特斯拉单车净利润是大众十倍 随时都能大降价
热资讯!次日达 冷酸灵泵式牙膏11.9元 清新口气、抗敏感
区块链安全前传之从Web3.0到创造自己的数字货币
天天快资讯:“采访”ChatGPT看看它对我们GreatSQL社区有什么看法
关于小程序变现方式你还知道哪些?
焦点热文:开发过程中安装的依赖包
每日热议!Spring源码第一章:创建简单的 Bean 容器
买房不如买车、50万交利息税等:年轻人为什么越来越反感专家?
【新要闻】集成ChatGPT威力惊人:微软Bing下载量激增10倍
环球热门:QLC便宜即是王道 1728个SSD组成106PB超大硬盘阵列