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

java后端开发day13--面向对象综合练习

在这里插入图片描述
(以下内容全部来自上述课程)
注意:先有javabean,才能创建对象。

1.文字版格斗游戏

格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。
在这里插入图片描述
简单版:

JavaBean类(无main):

import java.util.Random;public class Role {private String name;private int blood;public Role() {}public Role(String name, int blood) {this.name = name;this.blood = blood;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return blood*/public int getBlood() {return blood;}/*** 设置* @param blood*/public void setBlood(int blood) {this.blood = blood;}public String toString() {return "Role{name = " + name + ", blood = " + blood + "}";}//定义一个方法,用于攻击别人//思考:谁攻击谁?//Role r1 = new Role();//Role r2 = new Role();//r1.attack(r2);//方法的调用者去攻击参数public void attack(Role role){//计算造成的伤害1~20Random r = new Random();int hurt = r.nextInt(20)+1;//修改挨打的人的血量//挨揍的人的剩余血量 = 老的血量-新的伤害int remainBlood = role.getBlood() - hurt;//对剩余血量做一个判断,如果为负数,那么就修改为0remainBlood = remainBlood<0?0:remainBlood;//修改挨打的人的血量role.setBlood(remainBlood);//this表示方法的调用者System.out.println(this.getName()+"举起拳头,打了"+role.getName()+"一下,"+ "造成了"+hurt+"点伤害,"+ role.getName()+"还剩下了"+remainBlood+"点血");}
}

开始使用

public class GameTest {public static void main(String[] args) {//1.创建第一个角色Role r1 = new Role("乔峰",100);//2.创建第二个角色Role r2 = new Role("鸠摩智",100);//3.让两个角色进行格斗,回合制游戏while (true){//r1 用拳头打 r2r1.attack(r2);//判断r2的血量是否小于等于0if(r2.getBlood()<=0){System.out.println(r2.getName()+"已经挂了,"+r1.getName()+"赢了");break;}//r2 用拳头打 r1r2.attack(r1);//判断r1的血量是否小于等于0if(r1.getBlood()<=0){System.out.println(r1.getName()+"已经挂了,"+r2.getName()+"赢了");break;}}}
}

复杂版:

在这里插入图片描述

import java.util.Random;public class Role {private String name;private int blood;private char gender;private String face;String[] boyfaces = {"风流俊雅","气宇轩昂","相貌英俊","五官端正","相貌平平","一塌糊涂","面目狰狞"};String[] girlfaces = {"美奂绝伦","沉鱼落雁","婷婷玉立","身材娇好","相貌平平","相貌简陋","惨不忍睹"};String[] attacks_desc = {"%s使出了一招【背心钉】,转到对方身后,一掌向%s背心的灵台穴拍去。","%s使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向%s。","%s大喝一声,身形下伏,一招【劈雷坠地】,捶向%s双腿。","%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。","%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。","%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"};String[] injureds_desc = {"结果%s退了半步,毫发无损","结果给%s造成一处瘀伤","结果一击命中,%s痛得弯下腰","结果%s痛苦地闷哼了一声,显然受了点内伤","结果%s摇摇晃晃,一跤摔倒在地","结果%s脸色一下变得惨白,连退了好几步","结果%s一声惨叫,像滩软泥般塌了下去"};public Role() {}public Role(String name, int blood,char gender) {this.name = name;this.blood = blood;this.gender = gender;//随机长相setFace(gender);}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public String getFace() {return face;}public void setFace(char gender) {//长相是随机的if(gender=='男'){//随机一个长相int index = new Random().nextInt(boyfaces.length);this.face = boyfaces[index];} else if(gender=='女'){//随机一个长相int index = new Random().nextInt(girlfaces.length);this.face = girlfaces[index];} else {face = "面目狰狞";}}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return blood*/public int getBlood() {return blood;}/*** 设置* @param blood*/public void setBlood(int blood) {this.blood = blood;}public String toString() {return "Role{name = " + name + ", blood = " + blood + "}";}//定义一个方法,用于攻击别人//思考:谁攻击谁?//Role r1 = new Role();//Role r2 = new Role();//r1.attack(r2);//方法的调用者去攻击参数public void attack(Role role){Random r = new Random();int index = r.nextInt(attacks_desc.length);String KungFu = attacks_desc[index];System.out.println("===============================");//输出攻击效果System.out.printf(KungFu,this.getName(),role.getName());//计算造成的伤害1~20int hurt = r.nextInt(20)+1;//修改挨打的人的血量//挨揍的人的剩余血量 = 老的血量-新的伤害int remainBlood = role.getBlood() - hurt;//对剩余血量做一个判断,如果为负数,那么就修改为0remainBlood = remainBlood<0?0:remainBlood;//修改挨打的人的血量role.setBlood(remainBlood);//受伤的描述:按照程度不同来判断if(remainBlood>90){System.out.printf(injureds_desc[0],role.getName());} else if(remainBlood>80 && remainBlood<=90){System.out.printf(injureds_desc[1],role.getName());} else if(remainBlood>70 && remainBlood<=80){System.out.printf(injureds_desc[2],role.getName());} else if(remainBlood>60 && remainBlood<=70){System.out.printf(injureds_desc[3],role.getName());} else if(remainBlood>40 && remainBlood<=60){System.out.printf(injureds_desc[4],role.getName());} else if(remainBlood>10 && remainBlood<=40){System.out.printf(injureds_desc[5],role.getName());} else if(remainBlood<=10){System.out.printf(injureds_desc[6],role.getName());}System.out.println();}public void showRoleInfo(){System.out.println("姓名:"+getName());System.out.println("血量:"+getBlood());System.out.println("性别:"+getGender());System.out.println("长相:"+getFace());}
}
public class GameTest {public static void main(String[] args) {//1.创建第一个角色Role r1 = new Role("乔峰",100,'男');//2.创建第二个角色Role r2 = new Role("鸠摩智",100,'男');//显示角色信息r1.showRoleInfo();r2.showRoleInfo();//3.让两个角色进行格斗,回合制游戏while (true){//r1 用拳头打 r2r1.attack(r2);//判断r2的血量是否小于等于0if(r2.getBlood()<=0){System.out.println(r2.getName()+"已经挂了,"+r1.getName()+"赢了");break;}//r2 用拳头打 r1r2.attack(r1);//判断r1的血量是否小于等于0if(r1.getBlood()<=0){System.out.println(r1.getName()+"已经挂了,"+r2.getName()+"赢了");break;}}}
}

2.两个对象数组练习

1.定义数组存储3个商品对象

商品的属性:商品的id,名字,价格,库存。
创建三个商品对象,并把商品对象存入到数组当中。

javabean:

package test2;public class Goods {private String id;private String name;private double price;private int count;public Goods() {}public Goods(String id, String name, double price, int count) {this.id = id;this.name = name;this.price = price;this.count = count;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}}

使用:

package test2;public class GoodsTest {public static void main(String[] args) {//1.创建一个数组Goods[] goods = new Goods[3];//2.创建三个商品对象Goods g1 = new Goods("001","倚天剑",1000,100);Goods g2 = new Goods("002","屠龙刀",10000,50);Goods g3 = new Goods("003","九阳神功",9999,10000);//3.把商品对象添加到数组中goods[0] = g1;goods[1] = g2;goods[2] = g3;//4.遍历数组for (int i = 0; i < goods.length; i++) {Goods g = goods[i];System.out.println(g.getId()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getCount());}}}

2.键盘录入的两种不同体系:

package cars;import java.util.Scanner;public class test {public static void main(String[] args) {//键盘录入//第一套体系//nextInt; 接收整数//nextDouble(); 接收小数//next(); 接收字符串//遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接收了。//第二套体系//nextLine(); 接收字符串//可以接受空格,制表符,遇到回车才会停止。Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:"); //123 123int num1 = sc.nextInt();System.out.println(num1); //123System.out.println("请输入第二个整数");//不会显示,无需再次输入int num2 = sc.nextInt();System.out.println(num2); //123Scanner sc1 = new Scanner(System.in);System.out.println("请输入一个字符串"); //abc bcdString str1 = sc1.nextLine();System.out.println(str1); //abcSystem.out.println("请输入第二个字符串"); //不会显示,无需再次输入String str2 = sc1.nextLine();System.out.println(str2); //bcdScanner sc2 = new Scanner(System.in);System.out.println("请输入一个字符串"); //abc bcdString line1 = sc2.nextLine();System.out.println(line1); //abc bcdSystem.out.println("请输入第二个字符串"); //123 789String line2 = sc2.nextLine();System.out.println(line2); //123 789}
}

注意:

  1. 两套体系不能混用。
  2. 先用第一套体系。
  3. 等学习类型转换之后,再用第二套体系。

3.定义数组存储3部汽车对象。

汽车的属性:品牌,价格,颜色。
创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数组当中。

javabean:

package cars;public class Cars {private String brand;private int prise;private String color;public Cars() {}public Cars(String brand, int prise, String color) {this.brand = brand;this.prise = prise;this.color = color;}/*** 获取* @return brand*/public String getBrand() {return brand;}/*** 设置* @param brand*/public void setBrand(String brand) {this.brand = brand;}/*** 获取* @return prise*/public int getPrise() {return prise;}/*** 设置* @param prise*/public void setPrise(int prise) {this.prise = prise;}/*** 获取* @return color*/public String getColor() {return color;}/*** 设置* @param color*/public void setColor(String color) {this.color = color;}public String toString() {return "Cars{brand = " + brand + ", prise = " + prise + ", color = " + color + "}";}
}

使用:

package cars;import cars.Cars;import java.util.Scanner;public class CarsTest {public static void main(String[] args) {//1.创建一个数组用来存3个汽车对象Cars[] cars = new Cars[3];//2.创建3个汽车对象,数据来自于键盘录入Scanner sc = new Scanner(System.in);for (int i = 0; i < cars.length; i++) {//创建汽车的对象//放在循环外就只有一个对象,后续录入都是在修改这个对象,// 所以需要放在循环里面Cars c = new Cars();//录入品牌System.out.println("请输入第" + (i + 1) + "辆车的品牌");String brand = sc.next();c.setBrand(brand);//录入价格System.out.println("请输入第" + (i + 1) + "辆车的价格");int prise = sc.nextInt();c.setPrise(prise);//录入颜色System.out.println("请输入第" + (i + 1) + "辆车的颜色");String color = sc.next();c.setColor(color);//把汽车对象存入数组中cars[i] = c;}//3.遍历数组,获取每一个汽车对象的品牌,价格,颜色for (int i = 0; i < cars.length; i++) {System.out.println("第" + (i + 1) + "辆车的品牌是:" + cars[i].getBrand());System.out.println("第" + (i + 1) + "辆车的价格是:" + cars[i].getPrise());System.out.println("第" + (i + 1) + "辆车的颜色是:" + cars[i].getColor());}}
}

4.定义数组存储3部手机对象

手机的属性:品牌,价格,颜色
要求:计算出三部手机的平均价格

JavaBean:

package Phone;public class Phone {private String brand;private int prise;private String color;public Phone() {}public Phone(String brand, int prise, String color) {this.brand = brand;this.prise = prise;this.color = color;}/*** 获取* @return brand*/public String getBrand() {return brand;}/*** 设置* @param brand*/public void setBrand(String brand) {this.brand = brand;}/*** 获取* @return prise*/public int getPrise() {return prise;}/*** 设置* @param prise*/public void setPrise(int prise) {this.prise = prise;}/*** 获取* @return color*/public String getColor() {return color;}/*** 设置* @param color*/public void setColor(String color) {this.color = color;}public String toString() {return "Phone{brand = " + brand + ", prise = " + prise + ", color = " + color + "}";}
}

使用:

package Phone;public class PhoneTest {public static void main(String[] args) {//1.创建一个数组用来存3个手机对象Phone[] phones = new Phone[3];//2.创建3个手机对象Phone p1 = new Phone("小米", 2999, "黑色");Phone p2 = new Phone("苹果", 8999, "玫瑰金");Phone p3 = new Phone("锤子", 3999, "棕色");//3.把手机对象添加到数组当中phones[0] = p1;phones[1] = p2;phones[2] = p3;//4.计算三部手机的平均价格int sum = 0;for (int i = 0; i < phones.length; i++) {sum += phones[i].getPrise();}//求平均值int avg = sum / phones.length;System.out.println(avg);}
}

5.定义数组存储4个女朋友的对象

女朋友的属性:姓名,年龄,性别,爱好
要求1:计算出四个女朋友的平均年龄
要求2:统计年龄比平均值小的女朋友有几个,并把她们的所有信息打印出来

javabean:

public class GrilFriend {private String name;private int age;private String gender;private String hobby;public GrilFriend() {}public GrilFriend(String name, int age, String gender, String hobby) {this.name = name;this.age = age;this.gender = gender;this.hobby = hobby;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return gender*/public String getGender() {return gender;}/*** 设置* @param gender*/public void setGender(String gender) {this.gender = gender;}/*** 获取* @return hobby*/public String getHobby() {return hobby;}/*** 设置* @param hobby*/public void setHobby(String hobby) {this.hobby = hobby;}public String toString() {return "GrilFriend{name = " + name + ", age = " + age + ", gender = " + gender + ", hobby = " + hobby + "}";}
}

使用:

package girlfriend;public class GrilFriendTest {public static void main(String[] args) {//1.创建一个数组用来存4个女朋友对象GrilFriend[] gf = new GrilFriend[4];//2.创建4个女朋友对象GrilFriend gf1 = new GrilFriend("迪丽热巴", 18, "女", "旅游");GrilFriend gf2 = new GrilFriend("古力娜扎", 19, "女", "化妆");GrilFriend gf3 = new GrilFriend("马尔扎哈", 20, "男", "购物");GrilFriend gf4 = new GrilFriend("赵丽颖", 21, "女", "跳舞");//3.把女朋友对象添加到数组中gf[0] = gf1;gf[1] = gf2;gf[2] = gf3;gf[3] = gf4;//4.计算平均年龄int sum = 0;for (int i = 0; i < gf.length; i++) {GrilFriend g = gf[i];sum += g.getAge();}int avg = sum / gf.length;System.out.println("平均年龄是:" + avg);//5.找出低于平均年龄的女朋友,并统计个数int count = 0;for (int i = 0; i < gf.length; i++) {if (gf[i].getAge() < avg) {//6.输出低于平均年龄的女朋友的信息System.out.println(gf[i].getName() + " " + gf[i].getAge() +" " + gf[i].getGender() + " " + gf[i].getHobby());count++;System.out.println("低于平均年龄的女朋友有" + count + "个");}}}}

3.复杂对象数组练习

定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不同。
学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2:添加完毕后,遍历所有学生信息。
要求3:通过id删除学生信息。
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息。
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁

javabean:

package Student;public class Student {private int id;private String name;private int age;public Student() {}public Student(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}/*** 获取* @return id*/public int getId() {return id;}/*** 设置* @param id*/public void setId(int id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "add{id = " + id + ", name = " + name + ", age = " + age + "}";}
}

1.添加和遍历

使用:

package Student;public class StudentTest {public static void main(String[] args) {/*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不同。学生的属性:学号,姓名,年龄。要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。要求2:添加完毕后,遍历所有学生信息。要求3:通过id删除学生信息。如果存在,则删除,如果不存在,则提示删除失败。要求4:删除完毕之后,遍历所有学生信息。要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁*///1.创建一个数组用来存储学生对象Student[] arr = new Student[3];//2.创建学生对象Student s1 = new Student(1, "张三", 20);Student s2 = new Student(2, "李四", 21);Student s3 = new Student(3, "王五", 22);//3.把学生对象添加到数组中arr[0] = s1;arr[1] = s2;arr[2] = s3;//要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。//读题拆题法//创建一个学生对象Student s4 = new Student(4, "赵六", 23);//学号的唯一性判断//已存在---不添加//不存在---添加boolean flag = contains(arr, s4.getId());if (flag) {System.out.println("学号已存在,添加失败");} else {//把s4添加到数组当中//1.数组已经存满---只能创建一个新的数组,新数组的长度 = 老数组的长度 + 1//2.数组没有存满---直接把s4添加到数组当中int count = getCount(arr);if (count == arr.length) {//已经存满//创建一个新的数组,长度 = 老数组 + 1//然后把老数组的元素,拷贝到新数组当中Student[] newArr = creatNewArr(arr);//[stu1,stu2,stu3]//[stu1,stu2,stu3,null]//把s4添加进去newArr[count] = s4;//要求2:添加完毕后,遍历所有学生信息。printArr(newArr);} else {//没有存满//[stu1,stu2,null]//getCount获取到的是2,表示数组中已经有了2个元素//还有一层意思:如果下一次要添加数据,就是添加到2的位置arr[count] = s4;//要求2:添加完毕后,遍历所有学生信息。printArr(arr);}}}//遍历数组(新老都遍历)public static void printArr(Student[] arr) {for (int i = 0; i < arr.length; i++) {Student stu = arr[i];if (stu != null) {System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());}}}//创建新数组,拷贝老数组public static Student[] creatNewArr(Student[] arr) {Student[] newArr = new Student[arr.length + 1];for (int i = 0; i < arr.length; i++) {newArr[i] = arr[i];}//把新数组返回return newArr;}//定义一个方法判断数组中已经存了几个元素public static int getCount(Student[] arr) {//定义一个计数器int count = 0;for (int i = 0; i < arr.length; i++) {if (arr[i] != null) {count++;}}return count;}//1.我要干嘛?---唯一性判断//2.我干这件事,需要什么才能完成?---数组,id//3.方法的调用处是否需要继续使用方法的结果?---需要public static boolean contains(Student[] arr, int id) {for (int i = 0; i < arr.length; i++) {Student stu = arr[i];if (stu != null) {if (arr[i].getId() == id) {return true;}}}//遍历完了数组,还没有找到,说明不存在return false;}
}

2.删除和修改

使用:

package Student;public class Test {public static void main(String[] args) {/*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不同。学生的属性:学号,姓名,年龄。要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。要求2:添加完毕后,遍历所有学生信息。要求3:通过id删除学生信息。如果存在,则删除,如果不存在,则提示删除失败。要求4:删除完毕之后,遍历所有学生信息。要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁*///1.创建一个数组用来存储学生对象Student[] arr = new Student[3];//2.创建学生对象Student s1 = new Student(1, "张三", 20);Student s2 = new Student(2, "李四", 21);Student s3 = new Student(3, "王五", 22);//3.把学生对象添加到数组中arr[0] = s1;arr[1] = s2;arr[2] = s3;//要求3:通过id删除学生信息。//		如果存在,则删除,如果不存在,则提示删除失败。//找到id在数组中对应的索引int index = getIndex(arr, 2);//判断index是否为-1if (index == -1) {System.out.println("id不存在,删除失败");} else {//删除//把index位置的元素赋值为nullarr[index] = null;//要求4:删除完毕之后,遍历所有学生信息。printArr(arr);}// 要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁//找到id为2的学生对象int index2 = getIndex(arr, 2);//判断index2是否为-1if (index2 == -1) {System.out.println("id不存在,年龄+1失败");} else {//把id为2的学生对象的年龄+1Student stu = arr[index2];int newAge = stu.getAge() + 1;//把+1的年龄设置回去stu.setAge(newAge);//要求2:添加完毕后,遍历所有学生信息。printArr(arr);}}//找到id在数组中对应的索引//1.我要干嘛? 我要找到id在数组中对应的索引//2.我干这件事,需要什么才能完成? 数组  id//3.方法的调用处是否需要继续使用方法的结果?  需要public static int getIndex(Student[] arr, int id) {int index = -1; //假设id在数组中不存在,值为-1for (int i = 0; i < arr.length; i++) {//获取数组中的每一个学生对象Student stu = arr[i];//对stu进行一个非空判断if (stu != null) {int sid = stu.getId();if (sid == id) {index = i;break;}}}//当循环结束之后如果还没找到就表示不存在return index;}//遍历数组(新老都遍历)public static void printArr(Student[] arr) {for (int i = 0; i < arr.length; i++) {Student stu = arr[i];if (stu != null) {System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());}}}
}

相关文章:

java后端开发day13--面向对象综合练习

&#xff08;以下内容全部来自上述课程&#xff09; 注意&#xff1a;先有javabean&#xff0c;才能创建对象。 1.文字版格斗游戏 格斗游戏&#xff0c;每个游戏角色的姓名&#xff0c;血量&#xff0c;都不相同&#xff0c;在选定人物的时候&#xff08;new对象的时候&#…...

Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题

vue开发过程中&#xff0c;父组件通过props传值给子组件&#xff0c;子组件在页面展示父组件的值&#xff0c;在操作子组件值以后&#xff0c;即使不点击确定按钮&#xff0c;父组件中的值也发生了变化&#xff0c;但是需求是操作子组件数据以后&#xff0c;必须点击"确定…...

【通俗解释,入门级】DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘

DeepSeek - R1 - Zero&#xff1a;强化学习提升LLM推理能力的奥秘 第一节&#xff1a;强化学习在DeepSeek - R1 - Zero中的基本概念与公式解释【通俗解释】 强化学习在DeepSeek - R1 - Zero里就像是一位“聪明的探险家”&#xff0c;在各种可能的推理路径中探索&#xff0c;通…...

《图解设计模式》笔记(六)访问数据结构

十三、Visitor 模式&#xff1a;访问数据结构并处理数据 Visitor&#xff1a;访问者 我们会“处理”在数据结构中保存着的元素&#xff0c;通常把“处理”代码放在表示数据结构的类中。 但每增加一种处理&#xff0c;就不得不去修改表示数据结构的类。 在 Visitor模式中&am…...

windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?

当使用 pipx 安装 Poetry 时&#xff0c;pipx 会将 Poetry 安装到一个独立的虚拟环境中&#xff0c;并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息&#xff1a; 1. Poetry 的安装路径 pipx 会为每个工具&#xff08;如 Poetry&#xff09;创…...

使用 vcpkg 简化 C++ 项目依赖管理

使用 vcpkg 简化 C 项目依赖管理 什么是 vcpkg&#xff1f; vcpkg 是微软推出的跨平台 C/C 包管理工具&#xff0c;支持 Windows/Linux/macOS。它可以帮助开发者&#xff1a; ✅ 一键安装 2000 开源库 ✅ 自动解决依赖关系 ✅ 生成 Visual Studio 集成配置 ✅ 支持自定义编译…...

怎样确定网站访问速度出现问题是后台还是服务器造成的?

网站的访问速度会影响到用户的体验感&#xff0c;当网络过于卡顿或访问速度较慢时&#xff0c;会给用户带来不好的体验感&#xff0c;但是网站访问速度不仅会是后台造成影响的&#xff0c;也可能是服务器的原因&#xff0c;那么我们该如何分辨呢&#xff1f; 当网站使用了数据库…...

【Elasticsearch】管道聚合

管道聚合就是在已有聚合结果之上在进行聚合&#xff0c;管道聚合是针对于聚合的聚合 在 Elasticsearch 中&#xff0c;管道聚合&#xff08;Pipeline Aggregations&#xff09;是一种特殊的聚合类型&#xff0c;用于对其他聚合的结果进行进一步的计算和处理&#xff0c;而不是直…...

CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;CNN-GRU卷积神经网络门控循环单元多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...

后端java工程师经验之谈,工作7年,mysql使用心得

mysql 工作7年&#xff0c;mysql使用心得 mysql1.创建变量2.创建存储过程2.1&#xff1a;WHILE循环2.2&#xff1a;repeat循环2.3&#xff1a;loop循环2.4&#xff1a;存储过程&#xff0c;游标2.5&#xff1a;存储过程&#xff0c;有输入参数和输出参数 3.三种注释写法4.case …...

综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab)

基于随机变异系数-TOPSIS组合法的综合评价模型 代码获取私信回复&#xff1a;综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型&#xff08;Matlab&#xff09; 一、引言 1.1、研究背景与意义 在现代社会&#xff0c;随着信息量的不断增加和数据复杂性的提升&#…...

Visual Studio Code中文出现黄色框子的解决办法

Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”&#xff0c;往下滑动&#xff0c;找到“Un…...

手写一个C++ Android Binder服务及源码分析

手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...

【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)

在 Visual Studio Code (VSCode) 中集成 AI 编程能力&#xff0c;可以通过安装和配置特定插件来实现。以下是如何通过 Continue 和 Cline 插件集成 DeepSeek&#xff1a; 一、集成 DeepSeek 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 官方网站&#xff0c;注册并获取 …...

使用 Three.js 实现热力渐变效果

大家好&#xff01;我是 [数擎 AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | A…...

Vue事件处理 - 绑定事件

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 绑定事件及事件处理 目录 事件处理 绑定方式 函数表达式 绑定函数名 输入框绑定事件 拿到输入框的值 传值加事件源 事件第三种写法 总结 事件处理 绑定方式 函数表达式 在按钮上使用函数表达式绑定事…...

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select****注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1 这是正常回显的结果&#xff0c;再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ver…...

DeepSeek 助力 Vue 开发:打造丝滑的步骤条

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

今日学习总结

1.完成了P2242公路维修问题 2.完成了P10605下头论文 1.P2242 思考&#xff1a;建立单向链表&#xff0c;使用qsort降序排序。 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h> int n,m; int a[15005],b[15005],ans;…...

Transformer 的辉煌与大模型方向确立,点燃AGI之火把

GPT3&#xff0c;指明大模型发展方向&#xff0c;点燃大模型软件行业繁荣之火&#xff0c;目前大模型有100万个。 DeepSeek-V3&#xff0c;指明下一个阶段大模型发张方向&#xff0c;破壁&#xff1a; 资金壁垒&#xff1a;训练成本降低&#xff0c;适配丰富硬件&#xff0c;总…...

DeepSeek-Coder系列模型:智能编程助手的未来

文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…...

微信小程序longpress以及touchend的bug,touchend不触发,touchend不执行

核心原因&#xff1a;bind&#xff1a;touchend里面不能放wx:if 举例&#xff1a; <view bind:longpress"longpressBtn" bind:touchend"touchendBtn"><view wx:if"{{isRecording}}" >松开发送</view><view wx:else"…...

多租户架构设计与实现:基于 PostgreSQL 和 Node.js

多租户架构设计与实现:基于 PostgreSQL 和 Node.js 引言 多租户架构(Multi-tenancy)是现代 SaaS(Software as a Service)应用的核心设计模式之一。它允许多个租户共享同一套应用实例,同时确保数据隔离和安全性。本文将详细介绍多租户架构的设计方案,并基于 PostgreSQL…...

四、OSG学习笔记-基础图元

前一章节&#xff1a; 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码&#xff1a;CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…...

windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)

环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...

功能架构元模型

功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...

云计算——AWS Solutions Architect – Associate(saa)4.安全组和NACL

安全组一充当虚拟防火墙对于关联实例&#xff0c;在实例级别控制入站和出站流量。 网络访问控制列表(NACL)一充当防火墙关联子网&#xff0c;在子网级别控制入站和出站流量。 在专有网络中&#xff0c;安全组和网络ACL(NACL)一起帮助构建分层网络防御。 安全组在实例级别操作…...

Fiddler Classic(HTTP流量代理+半汉化)

目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可&#xff0c;安装路径自…...

【hive】记一次hiveserver内存溢出排查,线程池未正确关闭导致

一、使用 MemoryAnalyzer软件打开hprof文件 很大有30G&#xff0c;win内存24GB&#xff0c;不用担心可以打开&#xff0c;ma软件能够生成索引文件&#xff0c;逐块分析内存&#xff0c;如下图。 大约需要4小时。 overview中开不到具体信息。 二、使用Leak Suspects功能继续…...

MySQL的字段类型

MySQL 字段类型可以简单分为三大类 数值类型&#xff1a;整型&#xff08;TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT&#xff09;、浮点型&#xff08;FLOAT 和 DOUBLE&#xff09;、定点型&#xff08;DECIMAL&#xff09;字符串类型&#xff1a;CHAR、VARCHAR、TINYTEXT…...

HTML之JavaScript运算符

HTML之JavaScript运算符 1.算术运算符 - * / %除以0&#xff0c;结果为Infinity取余数&#xff0c;如果除数为0&#xff0c;结果为NaN NAN:Not A Number2.复合赋值运算符 - * / %/ 除以0&#xff0c;结果为Infinity% 如果除数为0&#xff0c;结果为NaN NaN:No…...

UE5--浅析委托原理(Delegate)

委托概述 委托是一种用于事件处理的机制。通过使用委托,可以将一个或多个函数绑定到一个事件上,在事件触发时自动调用这些函数。代理也叫做委托,比如:跳,跑,开枪,伤害等响应,就是注册一个委托回调,其作用就是提供一种消息机制,都知道消息的传递需要发送方和接收方,…...

Android13-系统服务大管家-ServiceManager进程-启动篇

文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…...

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念&#xff0c;已经满足了互连两台主机之间可以进行通讯的目的&#xff0c;虽然看似简简单单几句话&#xff0c;就描述了网络概念与网络出现的目的&#xff0c;但是为了真正实现两台主机…...

Mac(m1)本地部署deepseek-R1模型

1. 下载安装ollama 直接下载软件&#xff0c;下载完成之后&#xff0c;安装即可&#xff0c;安装完成之后&#xff0c;命令行中可出现ollama命令 2. 在ollama官网查看需要下载的模型下载命令 1. 在官网查看deepseek对应的模型 2. 选择使用电脑配置的模型 3. copy 对应模型的安…...

从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现

前言 虽然我司从23年起&#xff0c;便逐步从教育为主转型到了科技为主&#xff0c;但不代表教育业务便没有了 随着DeepSeek特别是R1、其次V3模型的大火&#xff0c;我司七月在线的大模型线上营群里一学员朋友DIFY问道&#xff1a;校长好&#xff0c;deepseek 的课程目前有多少…...

[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究

Paper Card 论文标题&#xff1a;SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者&#xff1a;Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…...

示例代码:C# MQTTS双向认证(客户端)(服务器EMQX)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

自制游戏——斗罗大陆

很简陋&#xff0c;没有图&#xff0c;请见谅 // mine[0] 级数 // mine[1] 战力 //mine[2] 1 白虎 //mine[2] 2 昊天锤 //mine[2] 3 蓝银草 #include <bits/stdc.h> using namespace std; int mine[100],live3, dou 1, luo 1, da 1, bag[1000], huan 0, lia…...

数据治理双证通关经验分享 | CDGA/CDGP备考全指南

历经1个月多的系统准备&#xff0c;本人于2024年顺利通过DAMA China的CDGA&#xff08;数据治理工程师&#xff09;和CDGP&#xff08;数据治理专家&#xff09;双认证。现将备考经验与资源体系化整理&#xff0c;助力从业者高效通关。 &#x1f31f; 认证价值与政策背景 根据…...

Vue全流程--Vue3.0与Vue2.0响应式原理对比

Vue2中数据的响应式 需要使用Vue.set这么一个api&#xff0c;修改数据 需要使用Vue.delete这么一个api&#xff0c;删除数据 数据代理这个当面的理解可以看看我前面文章Vue全流程--数据代理的理解以及在Vue中的应用-CSDN博客 Vue3中数据的响应式 Vue3使用proxy这个api实现…...

Spring中都应用了哪些设计模式?

好的&#xff01;以下是您提到的八种设计模式在 Spring 中的简单示例&#xff1a; 1. 简单工厂模式 简单工厂模式通过传入参数来决定实例化哪个类。Spring 中的 BeanFactory 就是简单工厂模式的应用。 示例代码&#xff1a; // 1. 创建接口和具体实现类 public interface A…...

fastjson2学习大纲

一、基础篇 - JSON与fastjson2核心概念 JSON基础 JSON语法规范&#xff08;RFC 8259&#xff09;JSON数据类型与Java类型对应关系序列化/反序列化核心概念 fastjson2入门 与fastjson1的主要区别核心优势&#xff1a; 性能提升&#xff08;JSONB二进制协议&#xff09;更完善的…...

k8s部署elasticsearch

前置环境:已部署k8s集群,ip地址为 192.168.10.1~192.168.10.5,总共5台机器。 1. 创建provisioner制备器(如果已存在,则不需要) 制备器的具体部署方式,参考我之前的文章:k8s部署rabbitmq-CSDN博客 2. 编写wms-elk-data-sc.yaml配置文件 apiVersion: storage.k8s.io/…...

BS架构(笔记整理)

楔子.基本概念 1.在网络架构中&#xff1a; 服务器通常是集中式计算资源&#xff0c;负责处理和存储数据&#xff1b;客户机是请求这些服务的终端设备&#xff0c;可能是个人电脑或移动设备&#xff1b;浏览器则是客户机上用来与服务器交互的工具&#xff0c;负责展示网页内容…...

从基础到人脸识别与目标检测

前言 从本文开始&#xff0c;我们将开始学习ROS机器视觉处理&#xff0c;刚开始先学习一部分外围的知识&#xff0c;为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本&#xff0c;系统采用Ubuntu20.04&#xff0c;ROS采用noetic。 颜…...

ArcGIS Pro SDK (二十七)自定义许可

ArcGIS Pro SDK (二十七)自定义许可 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 文章目录 ArcGIS Pro SDK (二十七)自定义许可1 在Config.xaml中添加扩展配置2 在Module1.cs中实现接口IExtensionConfig1 在Config.xaml中添加扩展配置 <modules><inse…...

一、kubernetes k8s

k8s概述: k8s的全称:kubernetes k8s k8s的版本:1.30 1.20------------用的最多的版本&#xff0c;1.18-1.21 1.24------------>k8s的镜像不再使用docker&#xff0c;containerd k8s的作用&#xff1a; 用于自动部署&#xff0c;自动扩展和管理“容器化应…...

C#、.Net 中级高级架构管理面试题杂烩

1、简述值类型和引用类型的区别 存储位置&#xff1a;值类型变量直接存储数据的值&#xff0c;通常存储在栈上&#xff1b;引用类型变量存储的是对象在堆上的引用地址。 内存管理&#xff1a;值类型的内存由系统自动管理&#xff0c;当超出作用域时自动释放&#xff1b;引用类…...

ArrayList和LinkedList有什么区别?在什么情况下使用ArrayList更高效?

ArrayList和LinkedList在Java中是两种常用的数据结构&#xff0c;分别基于数组和链表实现。它们在性能、内存使用和适用场景上各有特点。 ArrayList与LinkedList的主要区别 数据结构&#xff1a; ArrayList&#xff1a;基于动态数组实现&#xff0c;元素存储在连续的内存空间…...