当前位置: 首页 > news >正文

一年前的Java作业,模拟游戏玩家战斗

说明:一年前写的作业,感觉挺有意思的,将源码分享给大家。 刚开始看题也觉得很难,不过写着写着思路更加清晰,发现也没有想象中的那么难。

一、作业题目描述:

题目:模拟游戏玩家战斗

1.1 基础功能描述:

假设有两个玩家控制的角色 A 和 B,存在一个怪物 M,A 和 B 的任务是要击败怪物 M,获得胜利。A、B 和 M 的信息如下角色 A:

      生命值:100 初始攻击力数值:10,一次只攻击一个目标初始防御力数值:2 当前经验值:1000

当前等级:10 攻击目标时触发暴击的概率为 20%,触发后,攻击力增加 50% 受击时触发护盾的概率为 20%,触发后,防御力增加 10% 角色 B:       生命值:110  初始攻击力数值:12,一次只攻击一次目标  初始防御力数值:3 当前经验值:2000 当前等级:15  攻击目标时触发暴击的概率为 25%,触发后,攻击力增加 30%       受击时触发护盾的概率为 30%,触发后,防御力增加 15% 怪物 M:

生命值:200

       初始攻击力数值:8,一次攻击可对多个目标造成同等伤害  初始防御力数值:5  攻击目标时触发暴击的概率为 20%,触发后,攻击力增加 50%         受击时触发护盾的概率为 10%,触发后,防御力增加 10%

 

1.2 奖励功能描述:

       只有角色战斗胜利时,才可发放奖励。

 奖励有两种方案:rwd-a 和 rwd-b,其中触发 rwd-a 的概率是 40%,触发 rwd-b 的概率是 60%

      奖励方案 rwd-a:

     在以下 5 种物品中根据概率抽取一个奖励给玩家,同时获得 200*当前等级 的经验值。物品列表和概率如下:

物品

概率

金刚石

20%

红宝石

20%

乾坤袋

10%

如意丹

20%

金柳露

30%

 

奖励方案 rwd-b:

      在以下 6 种奖励中根据概率抽取一个奖励给玩家,同时获得 100*当前等级 的经验值。物品列表和概率如下:

物品

概率

净瓶甘露

10%

人参果

10%

藏宝图

30%

黑宝石

20%

上古灵符

15%

避水珠

15%

1.3 战斗规则:

  1. 从 main 方法主入口开启模拟战斗
  2. 当怪物 M 的生命值为 0 时,战斗胜利,调用奖励系统给角色 A 和 B 发放奖励(发放逻辑见上述的奖励系统描述),程序结束
  3. 当角色 A 和 B 的生命值都为 0 时,战斗失败,程序结束
  4. 当某个对象生命值为 0,且战斗未结束时,该对象不能再进行攻击
  5. 每次被攻击对象受到的伤害值 = 攻击者当前的攻击力 – 被攻击者当前的防御力
  6. 同时攻击力和暴击概率有关,防御力和护盾概率有关,每次攻击时要重新计算伤害值
  7. A、B 和 M 每次的出手攻击顺序,可以指定顺序,也可以随机顺序

 

1.4 作业要求:

  1. 使用 Java 面向对象的程序设计方式(包含封装、继承和多态特性)模拟实现上述战斗逻辑
  2. 将每次攻击的过程(A、B 和 M 的攻击力,防御力,受到攻击的伤害值和剩余的生命值,以及攻击对象)打印出来,输出格式不限,但要清晰直观
  3. 战斗胜利时(可自行调整数值,一定要跑到一次战斗胜利),将奖励信息打印出来(包括调用了哪种奖励方案,最终获得了哪些奖励),输出格式不限,但要清晰直观

 二、写作业

说明:当时只想着快点写完所以写的比较冗余,各角色的操作直接写在了Main.java中了,最后也是用了一个多小时完成了。

2.1 文件格式:

|---- gameFight

        |---- src

                |---- role

                        |---- role.java

                        |---- roleMonster.java

                        |---- rolePlayer.java

                |---- Main.java

 2.2 代码:

2.2.1 role.java :

package role;public class role {private String name;private float health; //生命值private float primaryAttack;  //初始攻击力private float pirmaryDefense; //初始防御private float criticalAttack; //暴击时的攻击力private float criticalDefense; //触发防御加强public String getName() {return name;}public void setName(String name) {this.name = name;}public float getHealth() {return health;}public void setHealth(float health) {this.health = health;}public float getPrimaryAttack() {return primaryAttack;}public void setPrimaryAttack(float primaryAttack) {this.primaryAttack = primaryAttack;}public float getPirmaryDefense() {return pirmaryDefense;}public void setPirmaryDefense(float pirmaryDefense) {this.pirmaryDefense = pirmaryDefense;}public float getCriticalAttack() {return criticalAttack;}public void setCriticalAttack(float criticalAttack) {this.criticalAttack = criticalAttack;}public float getCriticalDefense() {return criticalDefense;}public void setCriticalDefense(float criticalDefense) {this.criticalDefense = criticalDefense;}}

2.2.2 roleMonster.java :

package role;public class roleMonster extends role{public roleMonster(String name,float health,float primaryAttack,float primaryDefense,float criticalAttack,float criticalDenfense) {this.setName(name);this.setHealth(health);this.setPrimaryAttack(primaryAttack);this.setPirmaryDefense(primaryDefense);this.setCriticalAttack(criticalAttack);this.setCriticalDefense(criticalDenfense);}}

2.2.3 rolePlayer.java :

package role;public class rolePlayer extends role{private int experience; //当前经验值private int grade;  //当前等级public rolePlayer(String name,float health,float primaryAttack,float primartDefense,int experience, int grade ,float criticalAttack,float criticalDenfense) {this.setName(name);this.setHealth(health);this.setPrimaryAttack(primaryAttack);this.setPirmaryDefense(primartDefense);this.experience = experience;this.grade = grade;this.setCriticalAttack(criticalAttack);this.setCriticalDefense(criticalDenfense);}public int getExperience() {return experience;}public void setExperience(int experience) {this.experience = experience;}public int getGrade() {return grade;}public void setGrade(int grade) {this.grade = grade;}}

2.2.4 Main.java

import role.roleMonster;
import role.rolePlayer;import java.util.Random;public class Main {public static void main(String[] args) {//创建玩家roleA,roleB 怪兽roleMroleMonster roleM = new roleMonster("roleM",200,8,5, (float) (8*1.5), (float) (5*1.1));rolePlayer roleA = new rolePlayer("roleA",100,10,2,1000,10,(float)(10*1.5),(float)(2*1.1));rolePlayer roleB = new rolePlayer("roleB",110,12,3,2000,15,(float) (12*1.3),(float) (3*1.15));//战斗过程fightProcess(roleA,roleB,roleM);//结束战斗过程后,如果怪兽roleM的生命值还大于0则存活,说明玩家被怪兽打败,玩家拿不到奖励if (roleM.getHealth()>0){System.out.println("战斗失败!");}else{System.out.println("战斗成功!");//结束战斗后如果玩家roleA还存活则获得奖品getReward(roleA);//结束战斗后如果玩家roleB还存活则获得奖品getReward(roleB);}}//p1代表攻击目标时触发暴击的概率,因为p的取值为为0-1,如果p1大于p的取值范围则不触发,小于等于则触发static boolean raiseAttack(double p1){Random rand = new Random();float p = rand.nextFloat();if(p>p1){return false;}else{return true;}}//p2代表受击时触发护盾的概率,因为p的取值为为0-1,如果p2大于p的取值范围则不触发,小于等于则触发static boolean raiseDefense(double p2){Random rand = new Random();float p = rand.nextFloat();if(p>p2){return false;}else{return true;}}static void fightProcess(rolePlayer roleA,rolePlayer roleB,roleMonster roleM){boolean raiseAttack;boolean raiseDefense;//结束条件是玩家roleA和玩家roleB的都为死亡状态或者怪兽roleM为死亡状态 (血量同时小于等于0为死亡状态)while((roleA.getHealth()>0||roleB.getHealth()>0)&&roleM.getHealth()>0){//因为可以指定攻击顺序,这里我就让指定攻击顺序为roleA,roleB,roleM//如果玩家roleA存在和怪兽roleM都存在,roleA才能对怪兽roleM进行攻击if(roleA.getHealth()>0&&roleM.getHealth()>0){raiseAttack=raiseAttack(0.2);   //roleA攻击目标时触发暴击的概率为 20%raiseDefense=raiseDefense(0.1); //roleM受击时触发护盾的概率为 10%//如果roleA不触发暴击攻击和roleM不触发提高防御if(!raiseAttack &&!raiseDefense){roleM.setHealth(roleM.getHealth()-(roleA.getPrimaryAttack()-roleM.getPirmaryDefense()));printProcess(roleA,roleM,"000");}//如果roleA不触发暴击攻击和roleM触发提高防御if(!raiseAttack && raiseDefense) {roleM.setHealth(roleM.getHealth()-(roleA.getPrimaryAttack()-roleM.getCriticalDefense()));printProcess(roleA,roleM,"001");}//如果roleA触发暴击攻击和roleM不触发提高防御if(raiseAttack &&!raiseDefense){roleM.setHealth(roleM.getHealth()-(roleA.getCriticalAttack()-roleM.getPirmaryDefense()));printProcess(roleA,roleM,"010");}//如果roleA触发暴击攻击和roleM触发提高防御if(raiseAttack && raiseDefense){roleM.setHealth(roleM.getHealth()-(roleA.getCriticalAttack()-roleM.getCriticalDefense()));printProcess(roleA,roleM,"011");}}//如果玩家roleB存在和怪兽roleM都存在,roleB才能对怪兽roleM进行攻击if(roleB.getHealth()>0&&roleM.getHealth()>0){raiseAttack=raiseAttack(0.25);  //roleB攻击目标时触发暴击的概率为 25%raiseDefense=raiseDefense(0.1); //roleM受击时触发护盾的概率为 10%//如果roleB不触发暴击攻击和roleM不触发提高防御if(!raiseAttack &&!raiseDefense){roleM.setHealth(roleM.getHealth()-(roleB.getPrimaryAttack()-roleM.getPirmaryDefense()));printProcess(roleB,roleM,"000");}//如果roleB不触发暴击攻击和roleM触发提高防御if(!raiseAttack && raiseDefense){roleM.setHealth(roleM.getHealth()-(roleB.getPrimaryAttack()-roleM.getCriticalDefense()));printProcess(roleB,roleM,"001");}//如果roleB触发暴击攻击和roleM不触发提高防御if(raiseAttack &&!raiseDefense){roleM.setHealth(roleM.getHealth()-(roleB.getCriticalAttack()-roleM.getPirmaryDefense()));printProcess(roleB,roleM,"010");}//如果roleB触发暴击攻击和roleM触发提高防御if(raiseAttack && raiseDefense){roleM.setHealth(roleM.getHealth()-(roleB.getCriticalAttack()-roleM.getCriticalDefense()));printProcess(roleB,roleM,"011");}}//若怪兽还存活,则进行攻击玩家,玩家roleA还存活则受到怪兽roleM的攻击if(roleM.getHealth()>0&&roleA.getHealth()>0){raiseAttack=raiseAttack(0.2);   roleM攻击目标时触发暴击的概率为 20%raiseDefense=raiseDefense(0.2); //roleA受击时触发护盾的概率为 20%,//如果roleM不触发暴击攻击和roleA不触发提高防御if(!raiseAttack &&!raiseDefense){roleA.setHealth(roleA.getHealth()-(roleM.getPrimaryAttack()-roleA.getPirmaryDefense()));printProcess(roleA,roleM,"100");}//如果roleM不触发暴击攻击和roleA触发提高防御if(!raiseAttack && raiseDefense){roleA.setHealth(roleA.getHealth()-(roleM.getPrimaryAttack()-roleA.getCriticalDefense()));printProcess(roleA,roleM,"101");}//如果roleM触发暴击攻击和roleA不触发提高防御if(raiseAttack &&!raiseDefense){roleA.setHealth(roleA.getHealth()-(roleM.getCriticalAttack()-roleA.getPirmaryDefense()));printProcess(roleA,roleM,"110");}//如果roleM触发暴击攻击和roleA触发提高防御if(raiseAttack && raiseDefense){roleA.setHealth(roleA.getHealth()-(roleM.getCriticalAttack()-roleA.getCriticalDefense()));printProcess(roleA,roleM,"111");}}//若怪兽还存活,则进行攻击玩家,玩家roleB还存活则受到怪兽roleM的攻击if(roleM.getHealth()>0&&roleB.getHealth()>0){raiseAttack=raiseAttack(0.2);   //roleM攻击目标时触发暴击的概率为 20%raiseDefense=raiseDefense(0.3); //roleB受击时触发护盾的概率为 30%,//如果roleM不触发暴击攻击和roleB不触发提高防御if(!raiseAttack && !raiseDefense){roleB.setHealth(roleB.getHealth()-(roleM.getPrimaryAttack()-roleB.getPirmaryDefense()));printProcess(roleB,roleM,"100");}//如果roleM不触发暴击攻击和roleB触发提高防御if(!raiseAttack && raiseDefense){roleB.setHealth(roleB.getHealth()-(roleM.getPrimaryAttack()-roleB.getCriticalDefense()));printProcess(roleB,roleM,"101");}//如果roleM触发暴击攻击和roleB不触发提高防御if(raiseAttack && !raiseDefense){roleB.setHealth(roleB.getHealth()-(roleM.getCriticalAttack()-roleB.getPirmaryDefense()));printProcess(roleB,roleM,"110");}//如果roleM触发暴击攻击和roleB触发提高防御if(raiseAttack && raiseDefense){roleB.setHealth(roleB.getHealth()-(roleM.getCriticalAttack()-roleB.getCriticalDefense()));printProcess(roleB,roleM,"111");}}}}static void getReward(rolePlayer role){if(role.getHealth()>0){Random rand = new Random();int p = rand.nextInt(10);//获得p<4时获得pwd-a的奖励,否则获得pwd-b的奖励if(p<4){role.setExperience(role.getExperience()+role.getGrade()*200); //获取相应经验值System.out.print("玩家"+role.getName()+"获得奖励方案pwd-a的经验值:"+role.getGrade()*200);int p1 = rand.nextInt(100);System.out.print(" 获得物品奖励: ");if(p1<20){System.out.println("金刚石");}else if(p1<40){System.out.println("红宝石");}else if(p1<50){System.out.println("乾坤袋");}else if(p1<70){System.out.println("如意丹");}else{System.out.println("金柳露");}}else{role.setExperience(role.getExperience()+role.getGrade()*100);System.out.print("玩家"+role.getName()+"获得奖励方案pwd-b的经验值:"+role.getGrade()*100);int p1 = rand.nextInt(100);System.out.print(" 获得物品奖励: ");if(p1<10){System.out.println("净瓶甘露");}else if(p1<20){System.out.println("人参果");}else if(p1<50){System.out.println("藏宝图");}else if(p1<70){System.out.println("黑宝石");}else if(p1<85){System.out.println("上古灵符");}else{System.out.println("避水珠");}}}}/*输出每个战斗过程结果,signal的百位:0表示玩家攻击怪兽,1表示怪兽攻击玩家;signal的十位是代表攻击方:0表示是普通攻击,1表示暴击攻击;signal的个位是代表防守方:0表示普通防御,1表示触发护盾提高防御;例如:signal=011 是玩家攻击怪兽,玩家暴击攻击怪兽,同时怪兽触发护盾提高防御*/static void printProcess(rolePlayer player,roleMonster monster,String signal){switch (signal){case "000":System.out.println("攻击方:\n玩家:"+player.getName()+ "\n玩家的血量:"+player.getHealth()+ "\n玩家的攻击力:"+player.getPrimaryAttack());System.out.println("防御方:\n怪兽:"+monster.getName()+"\n怪兽受到的伤害:"+(player.getPrimaryAttack()- monster.getPirmaryDefense())+"\n怪兽剩余的血量:"+monster.getHealth()+"\n怪兽的防御力:"+monster.getPirmaryDefense());break;case "001":System.out.println("攻击方:\n玩家:"+player.getName()+ "\n玩家的血量:"+player.getHealth()+ "\n玩家的攻击力:"+player.getPrimaryAttack());System.out.println("防御方:\n怪兽:"+monster.getName()+"\n怪兽受到的伤害:"+(player.getPrimaryAttack()- monster.getCriticalDefense())+"\n怪兽剩余的血量:"+monster.getHealth()+"\n怪兽的防御力:"+monster.getCriticalDefense());break;case "010":System.out.println("攻击方:\n玩家:"+player.getName()+ "\n玩家的血量:"+player.getHealth()+ "\n玩家的攻击力:"+player.getCriticalAttack());System.out.println("防御方:\n怪兽:"+monster.getName()+"\n怪兽受到的伤害:"+(player.getCriticalAttack()- monster.getPirmaryDefense())+"\n怪兽剩余的血量:"+monster.getHealth()+"\n怪兽的防御力:"+monster.getPirmaryDefense());break;case "011":System.out.println("攻击方:\n玩家:"+player.getName()+ "\n玩家的血量:"+player.getHealth()+ "\n玩家的攻击力:"+player.getCriticalAttack());System.out.println("防御方:\n怪兽:"+monster.getName()+"\n怪兽受到的伤害:"+(player.getCriticalAttack()- monster.getCriticalDefense())+"\n怪兽剩余的血量:"+monster.getHealth()+"\n怪兽的防御力:"+monster.getCriticalDefense());break;case "100":System.out.println("攻击方:\n怪兽:"+monster.getName()+ "\n怪兽的血量:"+monster.getHealth()+ "\n怪兽的攻击力:"+monster.getPrimaryAttack());System.out.println("防守方:\n玩家:"+player.getName()+"\n玩家受到的伤害:"+(monster.getPrimaryAttack() - player.getPirmaryDefense())+ "\n玩家剩余的血量:"+player.getHealth()+"\n玩家的防御力:"+player.getPirmaryDefense());break;case "101":System.out.println("攻击方:\n怪兽:"+monster.getName()+ "\n怪兽的血量:"+monster.getHealth()+ "\n怪兽的攻击力:"+monster.getPrimaryAttack());System.out.println("防守方:\n玩家:"+player.getName()+"\n玩家受到的伤害:"+(monster.getPrimaryAttack() - player.getCriticalDefense())+ "\n玩家剩余的血量:"+player.getHealth()+"\n玩家的防御力:"+player.getCriticalDefense());break;case "110":System.out.println("攻击方:\n怪兽:"+monster.getName()+ "\n怪兽的血量:"+monster.getHealth()+ "\n怪兽的攻击力:"+monster.getCriticalAttack());System.out.println("防守方:\n玩家:"+player.getName()+"\n玩家受到的伤害:"+(monster.getCriticalAttack() - player.getPirmaryDefense())+ "\n玩家剩余的血量:"+player.getHealth()+"\n玩家的防御力:"+player.getPirmaryDefense());break;case "111":System.out.println("攻击方:\n怪兽:"+monster.getName()+ "\n怪兽的血量:"+monster.getHealth()+ "\n怪兽的攻击力:"+monster.getCriticalAttack());System.out.println("防守方:\n玩家:"+player.getName()+"\n玩家受到的伤害:"+(monster.getCriticalAttack() - player.getCriticalDefense())+ "\n玩家剩余的血量:"+player.getHealth()+"\n玩家的防御力:"+player.getCriticalDefense());break;}System.out.println();}}

 

 

 

相关文章:

一年前的Java作业,模拟游戏玩家战斗

说明&#xff1a;一年前写的作业&#xff0c;感觉挺有意思的&#xff0c;将源码分享给大家。 刚开始看题也觉得很难&#xff0c;不过写着写着思路更加清晰&#xff0c;发现也没有想象中的那么难。 一、作业题目描述&#xff1a; 题目&#xff1a;模拟游戏玩家战斗 1.1 基础功…...

C++ 学习 关于引用

&#x1f64b;本文主要讲讲C的引用 是基础入门篇~ 本文是阅读C Primer 第五版的笔记 &#x1f308; 关于引用 几个比较重要的点 &#x1f33f;引用相当于为一个已经存在的对象所起的另外一个名字 &#x1f31e; 定义引用时&#xff0c;程序把引用和它的初始值绑定&#xff08;b…...

BERT ner 微调参数的选择

针对批大小和学习率的组合进行收敛速度测试&#xff0c;结论&#xff1a; 相同轮数的条件下&#xff0c;batchsize-32 相比 batchsize-256 的迭代步数越多&#xff0c;收敛更快批越大的话&#xff0c;学习率可以相对设得大一点 画图代码&#xff08;deepseek生成&#xff09;…...

【MySQL精通之路】系统变量-持久化系统变量

MySQL服务器维护用于配置其操作的系统变量。 系统变量可以具有影响整个服务器操作的全局值&#xff0c;也可以具有影响当前会话的会话值&#xff0c;或者两者兼而有之。 许多系统变量是动态的&#xff0c;可以在运行时使用SET语句进行更改&#xff0c;以影响当前服务器实例的…...

fdk-aac将aac格式转为pcm数据

int sampleRate 44100; // 采样率int sampleSizeInBits 16; // 采样位数&#xff0c;通常是16int channels 2; // 通道数&#xff0c;单声道为1&#xff0c;立体声为2FILE *m_fd NULL;FILE *m_fd2 NULL;HANDLE_AACDECODER decoder aacDecoder_Open(TT_MP4_ADTS, 1);if (!…...

【C语言深度解剖】(15):动态内存管理和柔性数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多C语言深度解剖点击专栏链接查看&…...

力扣每日一题 5/25

题目&#xff1a; 给你一个下标从 0 开始、长度为 n 的整数数组 nums &#xff0c;以及整数 indexDifference 和整数 valueDifference 。 你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j &#xff1a; abs(i - j) > indexDifference 且abs(nums…...

(1)无线电失控保护(一)

文章目录 前言 1 何时触发失控保护 2 将会发生什么 3 接收机配置...

基于51单片机的多功能万年历温度计—可显示农历

基于51单片机的万年历温度计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 本设计基于STC89C52&#xff08;与AT89S52、AT89C52通用&#xff0c;可任选&#xff09;单片机以及DS1302时钟芯片、DS18B…...

【软件设计师】下午题总结-数据流图、数据库、统一建模语言

下午题总结 1 试题一1.1 结构化语言 2 试题二弱实体增加权限增加实体间联系和联系的类型 3 试题三3.1 UML关系例子 3.2 例子&#xff08;2016上半年&#xff09;3.3 设计类分类3.3.1 接口类3.3.2 控制类3.3.3 实体类 3.4 简答题3.4.1 简要说明选择候选类的原则3.4.2 某个类必须…...

CSDN 自动评论互动脚本

声明 该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。 数据库设计 尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article -- csdn_article-- article-- 需要进行自动评论的表格信息...CREATE TABLE `article`…...

Tomcat端口配置

Tomcat是开源免费的服务器&#xff0c;其默认的端口为8080&#xff0c;本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面...

SpringBoot中使用AOP实现日志记录功能

目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架&#xff0c;旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具&#xf…...

kubernetes(k8s) v1.30.1 helm 集群安装 Dashboard v7.4.0 可视化管理工具 图形化管理工具

本文 紧接上一篇&#xff1a;详细教程 Centos8.5 基于 k8s v1.30.1 部署高可用集群 kubeadm 安装 kubernetes v1.30.1 docker集群搭建 延长证书有效期-CSDN博客 1 Dashboard 从版本 7.0.0 开始&#xff0c;不再支持基于清单的安装。仅支持基于 Helm 的安装. #Helm 下载安装 …...

CS144(所有lab解析)

CS144 lab0-CSDN博客 (CS144 2024)Lab Checkpoint 1: stitching substrings into a byte stream &#xff08;详细解析&#xff09;-CSDN博客 CS144 Lab2 &#xff08;2024&#xff09;超详细解析-CSDN博客 Lab Checkpoint 3: the TCP sender-CSDN博客 CS144 Checkpoint 4: in…...

LeetCode 热题 100 介绍

"LeetCode热题100"通常是指LeetCode上被用户频繁练习和讨论的100道热门题目。这些题目往往对于面试准备和算法学习非常有帮助。 哈希 两数之和 难度&#xff1a;简单链接&#x1f517;&#xff1a; 这 字母异位词分组 难度&#xff1a;中等链接&#x1f517;&#x…...

Flutter 中的 AnimatedPhysicalModel 小部件:全面指南

Flutter 中的 AnimatedPhysicalModel 小部件&#xff1a;全面指南 Flutter 的 AnimatedPhysicalModel 是一个功能强大的小部件&#xff0c;它允许开发者创建具有物理效果的动画形状变换。这个小部件非常适合需要展示平滑过渡和动态交互的场景&#xff0c;如按钮按下效果、卡片…...

第二十届文博会沙井艺立方分会场启幕!大咖齐打卡!

2024年5月24日-27日&#xff0c;第二十届中国&#xff08;深圳&#xff09;国际文化产业博览交易会沙井艺立方分会场活动将在艺立方非遗&#xff08;文旅&#xff09;产业园盛大举办。 本届文博会艺立方分会场活动办展特色鲜明&#xff0c;亮彩纷呈&#xff0c;将以“种下梧桐树…...

【Vue】computed 和 methods 的区别

概述 在使用时&#xff0c;computed 当做属性使用&#xff0c;而 methods 则当做方法调用computed 可以具有 getter 和 setter&#xff0c;因此可以赋值&#xff0c;而 methods 不行computed 无法接收多个参数&#xff0c;而 methods 可以computed 具有缓存&#xff0c;而 met…...

HarmonyOS 鸿蒙应用开发 - 创建自定义组件

开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&#xff0c;后续版本演进等因素。因此&#xff0c;将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。 1、创…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...