news 2026/7/22 15:56:28

JAVA的简单练习项目(龟兔赛跑)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA的简单练习项目(龟兔赛跑)

题目要求:

龟兔赛跑:

--普通格,共100格 _ _

龟:每次随机移动1至3格
兔子:每次随机移动1至6格

每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)

功能格:(**和^^可以连续执行,@@和==不能连续执行)
**幸运星格:选手可再行动一次
@@地雷格:兔子回到上数两个地雷格,龟回到上一地雷格(若后方无地雷格则回到起点)
==传送格:兔子到达下一传送格,龟到达下数两个传送格(若前方无传送格则到达终点)
||树格:兔子停止三次行动
^^下坡格:龟前进10格

以下有题目分析出的类:

让我们开始吧!!!!!!!!!!!!!!!!!!!!!!!!!

分析思路:

由于Animal为大的父类,可以将成员继承给子类Rabbit和Tortoise类。所以须先考虑Rabbit和Tortoise中共同成员。经过我们仔细的开动脑筋,我们能发现Robbit和Tortoise都能奔跑,奔跑我们定义为Run,这一点我们很容易想到。在开动我们的脑筋,我们能发现Robbit和Tortoise在地图上都有位置,我们定义为position,(这点比较难想到,如果没想到可能会在外面定义一个变量来记录在地图上的位置)。既然脑筋已经开动,不如趁热打铁,想想还有吗?

想比肯定难不倒你们。

Run和position已写,我们继续看题目发现在功能格中兔子和乌龟也有相同的功能,想想能不能把这些也放进Animal这个大父类中。

这当然是可以的啊。能想到的话,说明对面向对象编程已经有了一定的了解,继续加油。

那兔子和乌龟的不同功能格行为怎么半?当然是放入各自的类中。

功能格的书写位置已经找到了,那我们就开始用代码来实现他。

!!在写代码前,想想类的书写的顺序,能大大的增强书写逻辑,和理清方向。

1.在想想之后,我们知道应该先写地图Map类,因为Map类是单独的,不像Animal与Rabbit 和Tortoise会与其他的类发生继承等关系。

Map的实现:

import java.util.Arrays; public class Map { int gn1[][]=new int [5][5]; public String[] getMap(){ String[] map = new String[100]; Arrays.fill(map, "__ "); int[][] gn = new int[5][5]; int []index = new int [100]; //以下是好方法的开始,注意注意注意,重要的东西说3变 //将100格分成5份,每份20格 for (int i = 0; i <5 ; i++) { for (int j = 0+i*20; j <20+i*20 ; j++) {//作用:让索引和数组中存的值相同 index[j]=j; } //获取随机数的 for (int k = 0; k <5 ; k++) { //[0,1) [20) int a = (int)(Math.random()*(20-k)+i*20); int temp = index[a]; index[a]= index[19-k+i*20]; index[19-k+i*20]=temp; gn[k][i]=temp; } } for (int i = 0; i < 5; i++) { map[gn[0][i]]="** "; map[gn[1][i]]="@@ "; map[gn[2][i]]="== "; map[gn[3][i]]="|| "; map[gn[4][i]]="^^ " ; } return map; } } public void showMap(String map[],Tortoise T,Rabbit R){ String []maps= Arrays.copyOf(map,map.length);//数组复制,以方便将被兔子和乌龟替换的数据还回到开始样貌,再进行重新替换。 if(R.position==T.position){ maps[T.position]="遇"; }else{ maps[R.position]="兔"; maps[T.position]="龟"; }for(String s:maps) { System.out.print(s); } System.out.println(); } }

其中有一个好方法(求固定范围的随机不重复数),以下是方法图解:

1.第一步:假设要0到19的5不重复的随机数,先定义一个数组让每个索引值和数组对应的索引值像同。

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

2.随机生成一个0到19的数:

假设为第一个随机数为13,就将a[13]与a[19]交换。

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 1 2 3 4 5 6 7 8 9 10 11 12 19 14 15 16 17 18 13

3.假设为第一个随机数为6,就将a[6]与a[18]交换

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 1 2 3 4 5 18 7 8 9 10 11 12 19 14 15 16 17 6 13

4.假设为第一个随机数为13,就将a[13]与a[17]交换(虽然13已经出现过,但由于值已经交换,a[13]的值已经改变,不会产生影响)

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 1 2 3 4 5 18 7 8 9 10 11 12 17 14 15 16 19 6 13

5.假设为第一个随机数为6,就将a[6]与a[16]交换(虽然6已经出现过,但由于值已经交换,a[6]的值已经改变,不会产生影响)

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 1 2 3 4 5 16 7 8 9 10 11 12 17 14 15 18 19 6 13

6.假设为第一个随机数为1,就将a[1]与a[15]交换.

a[i]索引: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

a[i]对应索引值: 0 15 2 3 4 5 16 7 8 9 10 11 12 17 14 1 18 19 6 13

7.欧克,我们已经得到了5格重复的数a[19],a[18],a[17],a[16],a[15].

代码实现:

//获取5个随机数的 for (int k = 0; k <5 ; k++) { //[0,1) [20) int a = (int)(Math.random()*20; int temp = index[a]; index[a]= index[19-k];//倒着换数 index[19-k]=temp; }

//5个temp就是不重复的5个随机数

改:

假设要43到51的5不重复的随机数,先定义一个数组让每个索引值和数组对应的索引值像同。

a[i]索引: 43 44 45 46 47 48 49 50 51

a[i]对应索引值: 43 44 45 46 47 48 49 50 51

后面就是与先前对应的了。哈哈哈,学会吗?

Animal的实现:

由于Animal的方法在子类中全要重写,就可以写成抽象方法。

public abstract class Animal { //龟兔在地图上的位置 int position = 0; //run(重写) public abstract int run(); //验证当前是否为功能格(重写) public abstract void function(String [] map,Tortoise T); //跑的计算,和功能验证 public void run(String[] map,Tortoise T){ position = position+run(); function(map,T); } //这些子类中都有则写在父类中 //幸运星(写一遍,兔子可以调用两遍) public void x(String[] map,Tortoise T){ System.out.println("再执行一次"); run(); } //地雷(这是一次的地雷,兔子只用调两次,乌龟就要调用一次) public void dl(String map[]){ while (true){ if(position>0){ position--; if(map[position].equals("@@ ")){ break; }else{ position=0; break; } } } } //传送(这是一次的传送,兔子只用调一次,乌龟就要调用两次) public void cs(String[]map){ while(true){ if(position<99) { position++; if (map[position].equals("== ")) { break; } } else{ position=99; break; } } } } 欧克,父类已经完成,开始写子类。

Rabbit类的实现:

继承父类Animal,并对父类方法进行重写,以实现Rabbit的行为。

Rabbit:

public class Rabbit extends Animal { @Override public int run() { int setp = (int )(Math.random()*6)+1; System.out.println("兔子走了"+setp+"步"); return setp; } @Override public void function(String[] map,Tortoise T) { if(position<=99){ if(map[ position].equals("**")){ System.out.println("兔子遇到了幸运星"); x(map,T); }else if(map[position].equals("@@")){ System.out.println("兔子遇到了地雷格"); dl(map); dl(map); }else if(map[position].equals("==")){ System.out.println("兔子遇到了传送格"); cs(map); }else if(map[position].equals("||")){ System.out.println("兔子遇到了有没有树枝"); //乌龟执行3次 T.run(map,T); T.function(map,T); T.run(map,T); T.function(map,T); T.run(map,T); T.function(map,T); } }else{ position=99; } } } Tortoise类的实现:
public class Tortoise extends Animal { @Override public int run() { int setp = (int )(Math.random()*3)+1; System.out.println("乌龟走了"+setp+"步"); return setp; } @Override public void function(String[] map, Tortoise T) { if(position<=99){ if(map[position].equals("** ")){ System.out.println("乌龟遇到了幸运星"); x(map,T); }else if(map[position].equals("== ")){ System.out.println("乌龟遇到了传送格"); cs(map); cs(map); }else if(map[position].equals("@@ ")){ System.out.println("乌龟遇到了地雷格"); dl(map); }else if(map[position].equals("^^ ")){ System.out.println("乌龟遇到了下坡"); position = position+10; function(map,T); } } else{ position=99; } } }
注意:

父类:

public void run(String[] map,Tortoise T){ position = position+run(); function(map,T); }

子类:

@Override public int run() { int setp = (int )(Math.random()*6)+1; System.out.println("兔子走了"+setp+"步"); return setp; }
@Override public int run() { int setp = (int )(Math.random()*3)+1; System.out.println("乌龟走了"+setp+"步"); return setp; }

还记得怎么区分同名方法的调用对象吗?

在Java中,区分同名方法的调用对象主要依赖于方法的参数类型和参数值。当我们使用相同的方法名但不同的参数时,编译器会认为这是不同的方法,因此可以区分不同的对象调用相同的方法。

先讲一下这个,以防后面的方法调用出现疑惑。

好的,我们的准备工资已经完成,开始将这些类运用在Game中,开始组合测试代码。

Game的实现:

//主函数只用来调用方法, public class Game { public static void main(String[] args) { Map map = new Map(); //用Map中getmap方法显示地图 String [] m = map.getMap(); //创建对象 Tortoise T = new Tortoise(); Rabbit R = new Rabbit(); String maps[]=m;//将map的信息用maps记录下来,后面的地图就在maps的基础上改变 //输出地图的总览 for (int i = 0; i <m.length ; i++) { if(i%20==0){ System.out.println(); } System.out.print(m[i]); } System.out.println(); //开始整合,运行。 while(T.position<99&&R.position<99){//通过while循环来一直执行。 //通过参数的差异,调用父类中的run方法,而父类中的run方法也调用了子类重写run方法和function方法。即完成了输出随机步数,也通过调用function方法进入判断当前位置是否为功能格的部分。 T.run(maps,T); R.run(maps,T); //判断是谁先到达终点,将越界的数据拉回终点 if(T.position>99&&R.position>99){ T.position=99; R.position=99; }else if(R.position>99){ R.position=99; }else if(T.position>99){ T.position=99; } //输出兔子和乌龟在地图上的位置。 map.showMap(maps,T,R); } //最后判断兔子和乌龟谁是笑到最后的赢家 if(T.position>=99&&R.position>=99){ System.out.println("平局"); }else if(T.position>=99){ System.out.println("乌龟赢了"); }else if(R.position>=99){ System.out.println("兔子赢了"); } } } 结果展示:

** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __
__ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __
__ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __
__ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __
== __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了2步
兔子走了1步
** 兔龟__ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了4步
** || __ __ __ 遇__ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了1步
** || __ __ __ __ 遇__ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ 龟^^ __ __ __ 兔__ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了5步
** || __ __ __ __ __ __ ^^ __ 龟__ @@ __ __ __ __ 兔== __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了3步
** || __ __ __ __ __ __ ^^ __ __ 龟@@ __ __ __ __ __ == __ 兔@@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了4步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ 龟__ __ __ == __ __ @@ __ __ 兔__ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了2步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ 龟__ == __ __ @@ __ __ __ __ __ __ || __ 兔^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ 龟== __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ 兔__ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了2步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ 龟@@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ 兔__ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了2步
兔子走了4步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ 龟__ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ 兔== __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了5步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ 龟__ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ 兔__ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ 龟__ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ 兔__ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了3步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || 龟__ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ 兔__ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ 龟^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ 兔|| __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了3步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ 龟__ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ 兔@@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了2步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ 龟__ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ 兔__ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了2步
乌龟遇到了幸运星
再执行一次
乌龟走了1步
兔子走了1步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ 龟__ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ 兔== __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** 龟== __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ 兔^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了1步
乌龟遇到了传送格
兔子走了4步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ 龟__ ** __ __ __ ^^ __ __ 兔__ == __ ^^ __ __ __ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了2步
乌龟遇到了幸运星
再执行一次
乌龟走了2步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ 龟__ __ __ ^^ __ __ __ __ == __ ^^ __ 兔__ __ __ __ __ @@ __ __ || __ __ __ ** __ __
乌龟走了3步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ 龟^^ __ __ __ __ == __ ^^ __ __ __ __ __ __ __ 兔__ __ || __ __ __ ** __ __
乌龟走了1步
乌龟遇到了下坡
兔子走了4步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ 龟__ __ __ __ @@ __ __ || 兔__ __ ** __ __
乌龟走了1步
兔子走了6步
** || __ __ __ __ __ __ ^^ __ __ __ @@ __ __ __ __ __ == __ __ @@ __ __ __ __ __ __ || __ __ ^^ __ __ __ __ ** __ == __ __ __ __ == __ __ __ ** __ __ __ || __ @@ __ ^^ __ __ __ __ __ __ __ || __ __ @@ __ __ == __ ** __ __ __ ^^ __ __ __ __ == __ ^^ __ __ __ 龟__ __ __ @@ __ __ || __ __ __ ** __ 兔
兔子赢了

哈哈,还是兔子赢了,你们的呢?是有先天优势的兔子还是持之以恒的乌龟赢了呢?

哈哈,学会了吗?

加油自己,加油陌生人。

最后送你们一句话,当然也包括我自己。

"在生活的道路上,我们都会遇到挑战和困难。这些磨难并不意味着失败,而是我们成长的催化剂。记住,每一次跌倒都是通往成功的必经之路。你有无穷的潜力等待挖掘,只要你有勇气去追求,去梦想,去努力,你就能创造奇迹。你是最棒的,无论路有多么艰难,只要你坚持下去,胜利终将属于你。加油,你是最棒的!"

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 15:54:44

计算机毕业设计之基于SpringBoot的摄影图片共享社区

信息技术是当今社会发展的重要方向之一&#xff0c;它已经深入到各个行业中。随着计算机技术的发展&#xff0c;信息技术已经从传统的数据处理转变为网络信息的处理和交互。在管理方面&#xff0c;通过信息管理技术&#xff0c;系统可以快速的处理大量的数据&#xff0c;并且能…

作者头像 李华
网站建设 2026/7/22 15:54:24

Kafka单集群部署与生产环境优化指南

1. Kafka单集群部署概述Kafka作为分布式消息队列系统的代表&#xff0c;其单集群部署是大多数中小型企业的首选方案。我在金融行业数据中台项目中累计部署过20套Kafka集群&#xff0c;单集群部署相比多集群方案具有配置简单、运维成本低的优势&#xff0c;特别适合日均消息量在…

作者头像 李华
网站建设 2026/7/22 15:53:09

从源码看 CopyOnWriteArrayList 的线程安全机制

目录 一.CpoyOnWriteArrayList 原理简单概述 二. CopyOnWriteArrayList 源码分析 2.1 属性构造器解读 2.2 get 方法分析 2.3 add 方法分析 2.4 set 方法分析 2.5 remove 方法分析 三. 总结概括 使用过 ArrayList 集合的同学应该大致都知道&#xff0c;ArrayList 是一个…

作者头像 李华
网站建设 2026/7/22 15:53:01

浅谈 MySQL 主从复制,优点?原理?

目录 一. 主从复制概述 二. 主从复制有什么优点&#xff1f; 三. 主从复制的原理 四. 数据一致性问题 4.1 同步复制 4.2 异步复制 4.3 半同步复制 一. 主从复制概述 既然是主从复制&#xff0c;那么至少就应该有两台服务器&#xff0c;一台作为主库(Master)&#xff0c…

作者头像 李华
网站建设 2026/7/22 15:51:48

虚拟线程如何用“同步代码”血洗百万并发?

虚拟线程如何用“同步代码”血洗百万并发&#xff1f; 文章目录虚拟线程如何用“同步代码”血洗百万并发&#xff1f;一、传统并发模型的痛点与瓶颈二、直击灵魂&#xff1a;虚拟线程到底是个啥&#xff1f;三、硬核对决&#xff1a;传统线程池 vs 虚拟线程传统线程池方式&…

作者头像 李华
网站建设 2026/7/22 15:50:34

TM4C129X以太网PHY寄存器深度解析:从基础配置到高级调试实践

1. 以太网PHY配置寄存器&#xff1a;从基础到TM4C129X的深度实践搞嵌入式网络开发&#xff0c;尤其是用到以太网接口&#xff0c;PHY芯片的配置绝对是个绕不开的坎。很多工程师习惯直接用厂商的驱动库&#xff0c;初始化函数一调&#xff0c;能ping通就万事大吉。但一旦遇到网络…

作者头像 李华