java学习-day21(常用类)

文章目录

      • 回顾:
      • 今天的内容
      • 1.常用类
        • 1.1StringBuffer类
        • 1.2枚举类(enum)
        • 1.3包装类
        • 1.4Math
        • 1.5Random类
        • 1.6System类
        • 1.7Runtime【不重要】
        • 1.8Date类
        • 1.9Calendar

回顾:

1.为什么重写equals方法必须重写hashCode方法是因为判断两个对象是否相等的时候,先判断hash值是否相等,然后再比较内容hash一样的对象不一定相等,但是对象相等,要求hash值必须一样的
2.使用字符流复制一个文本文档到另外一个盘符下面BufferedReader br = new BufferedReader(new FileReader(new File("路径")));BuffererWriter bw = new BufferedWriter(new FileWriter(new File("被复制到哪的路径"));int length = -1;char[] cbuf = new char[4 * 1024];while ((length = br.read(cbuf))) {bw.write(cbuf, 0, length);}bw.close();br.close();
3.接口和抽象类的区别接口的定义: interface 接口 {抽象的方法}抽象类:abstract  抽象类 {非抽象方法抽象方法}用一个普通类去继承(extends)抽象类用一个普通类去实现(inplements)接口4.重写和重载的区别重写:有继承关系,在子类中去重写父类的方法方法完全一样的,方法的额名字 返回值  参数重载:只能在一个类中,方法名字一样,参数列表一定不同
5.final关键字的使用final修饰成员变量修饰局部变量修饰方法修饰类面试:为啥使用final修饰成员变量?这个final修饰的量不能再赋值,值不能再改变了效率就会高点!!!
6.static关键字的使用static修饰成员变量修饰成员方法修饰代码块类名.成员变量类名.方法
7.复制一个视频文件到另外一个盘符下面  使用字节流BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File ("文件路径")));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("被复制的路径")));byte[] buf = new byte[4 * 1024];int length = -1;while ((length = bis.read(buf))) {bos.write(buf, 0, length);}bos.close()bis.close();

关于流,你只要听懂昨天讲的流,那么其他流都在不再话下,思路都是一样的!!!

教你们方法 方式,而不是单纯的教技术!!! 这些东西都是可以举一反三的!!!

1.IO流
干嘛的?对磁盘上面的文件的内容进行 读和写的
2.输入流:对磁盘上面的文件进行读取的   磁盘-》内存的FileInputStream   字节输入流  想加缓冲效果 BufferedInputStream这个类一个方法 read()FileReader        字符输入流  想加缓冲效果 BufferedReader这个类一个方法 read()输出流:从内存中写入到磁盘  内存-》磁盘FileOutputStream  字节输出流 想加缓冲效果  BufferedOutputStream这个类一个方法  write()FileWriter        字符输出流 想加缓冲效果  BufferedWriter这个类一个方法  write()

之后再讲一个对象流 序列化!!!

我不用讲,你看着官方手册就会写了

今天的内容

常用类

1.常用类

1.1StringBuffer类

看API官方手册

线程安全的,可变的字符序列

关于StringBuffer的代码相当简单是个人都会的,但是底层和面试问的东西比较深的所以你们下去一定看看一些东西

String 不可变

package com.qfedu.a_stringbuffer;public class Demo1 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();//构造一个没有字符的字符串缓冲区(容器),初始容量为16个字符。//在整个缓冲去放数据,放啥数据?字符串!!!System.out.println(sb);sb.append("xi");//追加sb.append("he");sb.append("ha");//插入  这个2 就是下标索引sb.insert(2, "gou");System.out.println(sb);//xigouxihehehaha//字符串反转System.out.println(sb.reverse());//ahahehehixuogix//删除一个字符串delet(int start, int end)//不要怀疑  始终记得  要头不要尾 start包含  end 不包含System.out.println(sb.delete(1,3));//问题://咱们有String了为啥还要学习StringBuffer和StringBuilder//拼接字符串的效率不一样的//字符串String 拼接的是时候,效率底   +   concat()//StringBuffer 和StringBuilder拼接字符串效率高//为啥StringBuffer和StringBuilder高,为啥String效率低//如果使用String拼接100个字符串,会出来100个对象 因为String 不可变的String str = "123";str += "457";str += "457";str += "457";str += "457";//以上有几个对象?  6个}
}

Stringbuffer与StringBuilder区别

package com.qfedu.a_stringbuffer;public class Test {public static void main(String[] args) {//String 连接10000次消耗1127ms//StringBuffer 连接10000次消耗5ms//StringBuilder 连接10000次消耗3msStringTest(10000);StringBufferTest(10000);StringBuilderTest(10000);}public static void StringTest(int n){String str = "";//获取当前系统的时间  还没有执行下面for循环的时候的时间Long startTime = System.currentTimeMillis();//使用for循环来拼接!!!for(int i=0;i<n;i++){str += i;}//获取当前系统的时间  执行下面for循环的时候的时间Long endTime = System.currentTimeMillis();System.out.println("String 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}public static void StringBufferTest(int n){StringBuffer str = new StringBuffer();Long startTime = System.currentTimeMillis();for(int i=0;i<n;i++){str.append(i);}Long endTime = System.currentTimeMillis();System.out.println("StringBuffer 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}public static void StringBuilderTest(int n){StringBuilder str = new StringBuilder();Long startTime = System.currentTimeMillis();for(int i=0;i<n;i++){str.append(i);}Long endTime = System.currentTimeMillis();System.out.println("StringBuilder 连接"+ n +"次消耗"+(endTime-startTime)+"ms");}
}

我们可以清楚的看到String的字符串的连接效率是最低的,这一点对于大量字符串的拼接可以很明显的表示出来,所以说大量字符串的拼接最好不要选择String。[StringBuffer]和StringBuilder对于字符串的拼接效率是大致相同的

为啥StringBUilder效率高?
因为StringBuilder是线程不安全的,StringBuffer线程安全

四、总结
1.String为固定长度的字符串,StringBuilder和StringBuffer为变长字符串;
2.stringBuffer是线程安全的,StringBuilder是非线程安全的;
3.StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销

1.2枚举类(enum)
Java 中的枚举是一个特殊的类,一般是表示一组常量  final  static int a = 30;
比如一年有四季  一天24小时  pi  e枚举就是用来表示常量的,只不过是常量的换一种写法而已!!!

Java中定义枚举类的时候的语法格式:

public enum 枚举类名 {//下面写常量,常量之间使用逗号隔开}
package com.qfedu.b_enum;public enum Color {//常量,一般都是大写的  没有任何数据类型的!!!RED, GREEN, BLUE
}

枚举类的实例用法

package com.qfedu.b_enum;//声明一个枚举类  是一个特殊的类enum Color2 {RED, GREEN, BLUE
}
public class Demo2 {public static void main(String[] args) {//RED这个数据  属于Color2这个类的实例的//Color2.RED  为啥可以用类名.常量  常量是static修饰的!!!Color2 red = Color2.RED;System.out.println(red);//REDColor2 green = Color2.GREEN;System.out.println(green);}
}

swicth (表达式) {}

表达式数据类型有哪些:byte  short  int char  String 枚举

枚举在swicth-case中如何使用【这个重要】

package com.qfedu.b_enum;enum Color3 {RED, GREEN, BLUE
}
//可以通过switch-case将咱们的常量变成咱们所数据类型
//RED===》红色
//只是一个用判断的一个东西
public class Demo3 {public static void main(String[] args) {Color3 red = Color3.RED;switch (red) {case RED:System.out.println("红色");break;case GREEN:System.out.println("绿色");break;case BLUE:System.out.println("蓝色");break;}}
}

枚举类中的几个方法

values();枚举类中所有的值
ordinal();可以找到每个枚举类中常量的索引
valueOf();返回值的是指定字符串的枚举常量
package com.qfedu.b_enum;enum Color4 {RED, GREEN, BLUE
}
public class Demo4 {public static void main(String[] args) {//values();枚举类中所有的值//ordinal();可以找到每个枚举类中常量的索引//valueOf();返回值的是指定字符串的枚举常量Color4[] values = Color4.values();//返回是数组//遍历for (Color4 value : values) {System.out.println(value + "对应的索引:" + value.ordinal());}//valueOf返回的是字符串的枚举常量对象//只是换了一种写法而已。//通过常量所对应的字符串获取常量的对象Color4 red = Color4.valueOf("RED");//一般开发使用Color4.RED;Color4 red1 = Color4.RED;System.out.println(red);System.out.println(red.hashCode());System.out.println(red1);System.out.println(red1.hashCode());}
}

枚举在真实的开发中使用:

在很多时候我们定义一些状态量都是使用0或者1,-1这样在数据库中定义,这样的数据存放在数据库的相应字段中方便数据读取,但是只存储数字,如果定义的表很多,对应的字段也很多,设计的状态就非常多,编码很容易分辨不清楚,一方面去数据库中查看相应字段的注释非常费时间,而且容易产生差错,如果我们使用枚举类,这个问题就很好的解决了。比如当我们定义了许多状态量,比如订餐支付,未支付,订单的完结,派送,制作等有许多状态,如果不使用枚举,我们在代码层进行判断的时候总是要去思考这个状态是定义的什么呢,0还是-1呢,当项目比较大的时候,光靠我们记是不行的,干脆我们就使用枚举来简化我们的编程,而且还较少了逻辑上出错的可能。
package com.qfedu.b_enum;enum ProductEnum {UP(0, "在架"),DOWN(1, "下架");private Integer code;private String message;ProductEnum(Integer code, String message) {this.code = code;this.message = message;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
public class Demo5 {public static void main(String[] args) {System.out.println(ProductEnum.UP.getCode());System.out.println(ProductEnum.UP.getMessage());System.out.println(ProductEnum.DOWN.getCode());//1System.out.println(ProductEnum.DOWN.getMessage());//"下架"}
}
1.3包装类

Java有八大基本数据类型,都有与之对应的包装类

为啥会有八大基本数据类型的包装类?

包装类能被实例化,封装了很多方法,可以使用,这样操作八大基本数据类型就比较方便了

所以开发中的实体类都是写的包装类

int age====>Integer age;

int->Integer

byte->Byte

short->Short

long->Long

float->Float

double->Double

boolean->Boolean

char->Character

【重点】:

​ 1.自从JDK1.5之后,有拆箱和装箱

​ 自动装箱:将基本数据类型转为包装类

​ 自动拆箱:将包装类转为基本数据类型

​ 2.***Value();将包装类转为基本数据类型

​ 3.toString();将基本数据类型转为字符串

​ 4.parse***();将字符串类型的数据转为基本数据类型【以后开发用】

​ 5.valueOf();将基本数据类型转为包装类类似手动装箱

package com.qfedu.c_baozhuang;public class Demo1 {public static void main(String[] args) {//自1.5以后 有自动装箱和自动拆箱//自动装箱:  将int转为Integer//自动拆箱:  将Integer转为int//毫无违和感  都是自动的!!!特别方便System.out.println(Integer.MAX_VALUE);//2147483647System.out.println(Integer.MIN_VALUE);//-2147483648//自动装箱 45本身是int类型的数据,现在是Integer//int  变成了Integer  报错没?没有就证明可以自动的装箱Integer i1 = 45;//自动拆箱  没有报错  就证明自动的在拆箱int i2 = i1;System.out.println(i1);System.out.println(i2);//除了自动装箱和拆箱外,Java还给咱们提供了方法。让咱们装箱和拆箱Boolean b1 = true;//b1 是包装类//***Value();将包装类转为基本数据类型//intValue()  booleanValue()  floatValue() doubleValue()//b是基本数据类型//有自动拆箱,还有必要使用***Value吗?没有!!!boolean b = b1.booleanValue();System.out.println(b);//toString();将基本数据类型转为字符串【重要】int i3 = 45;String s = Integer.toString(i3);System.out.println(s);//"45"String s1 = Double.toString(67.8);System.out.println(s1);//"67.8"//以后做银行项目的时候,double 和float 有可能数据丢失//可以转为字符串操作!!!绝对不会//parse***();将字符串类型的数据转为基本数据类型【以后开发用】//parsetInt(); parseDouble(); parseFloat();parseByte()int i = Integer.parseInt("250");System.out.println(i);//250//开发中  分页  前段URL传一个字符串值过来 pageNo=2 这个2传//到Java代码中,是字符串类型的数据,将字符串转为int类型的数据//然后操作数据库//valueOf();将基本数据类型转为包装类类似手动装箱byte b2 = 34;//b2 基本数据类型Byte aByte = Byte.valueOf(b2);System.out.println(aByte);//aByte 就是包装类//有没有必要写这个方法?没有  因为会自动装箱}
}

面试题:

Integer i1 = 10;
Integer i2 = 10;
sout(i1 == i2);
Integer i3 = 1000;
Integer i4 = 1000;
sout(i3 == i4);
package com.qfedu.a_baozhuang;public class Demo2 {public static void main(String[] args) {Integer i1 = 10;  // i1 储存在常量池中Integer i2 = new Integer(10);// i1 和i2 内存地址不一样System.out.println(i1 == i2); // falseint b = 10;  // b储存在栈区中  栈区的引用会直接指向常量池中i1这个地址System.out.println(i1 == b); // trueSystem.out.println(i2 == b); // true}
}
1.4Math

Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

专门处理数学运算的一个类

绝对值 abs()

最大值 max()

最小值 min()

向上取整 ceil()

向下取整floor()

四舍五入round()

随机数random()

package com.qfedu.d_math;public class Demo1 {public static void main(String[] args) {System.out.println(Math.PI);System.out.println(Math.E);//以上是两个常量System.out.println(Math.abs(-89));//绝对值 89System.out.println(Math.max(34, 56));//最大值 56//求三个数的最大值?咋办?System.out.println(Math.max(23, Math.max(45,12)));//45//最小值System.out.println(Math.min(34, 12));//12//向上取整System.out.println(Math.ceil(45.2));//46.0//向下取整System.out.println(Math.floor(89.8));//89.0//四舍五入System.out.println(Math.round(45.5));//46//随机数大于等于 0.0 ,小于 1.0   doubleSystem.out.println(Math.random());//随机1-100之间的整数int 0.45 * 100=45 intint i1 = (int)(Math.random() * 100);System.out.println(i1);}
}
1.5Random类

专门处理随机数的类

package com.qfedu.e_random;import java.util.Random;public class Demo1 {public static void main(String[] args) {Random random = new Random();System.out.println(random.nextInt());System.out.println(random.nextInt(100));//[0,100);System.out.println(random.nextFloat());System.out.println(random.nextDouble());System.out.println(random.nextBoolean());}
}

作业:

1.题目要求:根据int变量n的值,来获取随机数字,范围是[1 , n],可以取到1也可以取到n。
2.题目:用代码模拟猜数字的小游戏。思路:1.首先需要产生一个随机数字,并且一旦产生不再变化。用Random的nextInt方法2.需要键盘输八,所以用到了Scanner3.获取键盘输入的数字,用scanner当中的nextInt方法4.已经得到了两个数字,判断(if)一下:如果太大了,提示太大,并且重试;如果太小了,提示太小,并且重试;如果猜中了,游戏结束。5.重试就是再来一次,循环次数不确定,用while(true)。
1.6System类
package com.qfedu.f_system;import java.io.PrintStream;
import java.util.Properties;
import java.util.Scanner;public class Demo1 {public static void main(String[] args) {PrintStream out = System.out;//是一个流 PrintStream 打印流out.println("goudan");System.out.println("goudan");//标准输出流打印的东西System.err.println("xixi");//错误输出流打印的东西new Scanner(System.in);//输入流//你把控制台想象成一个磁盘。就是输入流和输出流//用的很多// 在1970年1月1日UTC之间的当前时间和午夜之间的差异,以毫秒为单位long l = System.currentTimeMillis();//2022年到1970年 是不是52System.out.println(l/1000/60/60/24/365);//获取系统的东西  System 英文单词就是系统的意思Properties properties = System.getProperties();//os.name 系统的名字System.out.println(properties.get("os.name"));System.out.println(properties.get("os.version"));System.out.println(properties.get("user.name"));System.out.println(properties.get("user.dir"));System.out.println(properties.get("java.version"));
//Windows 10
//10.0
//bowang
//C:\Users\bowang\IdeaProjects\day21_wb
//1.8.0_241}
}
1.7Runtime【不重要】
package com.qfedu.g_runtime;import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {//1.获取runtime对象Runtime runtime = Runtime.getRuntime();//runtime对象可以启动咱们电脑上面任意的一个软件//使用代码启动软件runtime.exec("C:\\Program Files (x86)\\Notepad++\\notepad++.exe");//返回Java虚拟机将尝试使用的最大内存量。字节数System.out.println(runtime.maxMemory() / 1024 / 1024);//MB//返回Java虚拟机中的可用内存量 字节数System.out.println(runtime.freeMemory()/1024/1024);//返回Java虚拟机中的内存总量 字节数System.out.println(runtime.totalMemory()/1024/1024);}
}
1.8Date类

专门处理日期的一个类,不过好多方法已经过期了

在类的所有方法Date接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:

  • y年代表整数y - 1900
  • 一个月由0到11的整数表示; 0是1月,1是2月,等等; 11月12日。
  • 日期(月的一天)以通常的方式从1到31的整数表示。
  • 一小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下午1点的小时是12小时。
  • 一般以0〜59的整数表示。
  • 第二个由0到61的整数表示; 值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪闰秒的Java实现中发生。 由于目前引入闰秒的方式,在同一分钟内不会发生两个闰秒,但是本规范遵循ISO C的日期和时间约定。
package com.qfedu.h_date;import java.util.Date;public class Demo1 {public static void main(String[] args) {Date date = new Date();//Tue Aug 09 16:11:11 IRKT 2022System.out.println(date);//获取年份 这个年份是减去1900以后的值,所以得加上1900System.out.println(date.getYear() + 1900);//7//2//16//15//42//获取月份System.out.println(date.getMonth() + 1);//7//这个日期的星期几。System.out.println(date.getDay());//2System.out.println(date.getHours());//16System.out.println(date.getMinutes());//15System.out.println(date.getSeconds());//42}
}
1.9Calendar

现在国际通用的是Calendar类

package com.qfedu.h_date;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class Demo2 {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();//获取当前的年份int i = calendar.get(Calendar.YEAR);System.out.println(i);//2022//获取月份  需要加1的System.out.println(calendar.get(Calendar.MONTH) + 1);//8//获取当月的第几天System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//9//获取这周的第几天  漂亮国的周日是第1天System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//3//获取这一年的第几天System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//221//获取时System.out.println(calendar.get(Calendar.HOUR));//4System.out.println(calendar.get(Calendar.MINUTE));//39System.out.println(calendar.get(Calendar.SECOND));//3//重要的方法  获取当前的时间的 返回值是Date类型的数据//可以转为Date类型的数据Date time = calendar.getTime();System.out.println(time);//Tue Aug 09 16:40:21 IRKT 2022//这上面时间 对程序员相当不友好!!!//通过一个类将日期格式转换一下SimpleDateFormat sdf = new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");//yyyy-MM-dd HH:mm:ss//年-月-天 时:分:秒//2022-08-09  16:43:32//将这个格式Tue Aug 09 16:40:21 IRKT 2022//转换为2022-08-09  16:43:32String format = sdf.format(time);System.out.println(format);//yyyy-MM-dd HH:mm:ss//以上能不能胡乱写?不能//以后开发中要用的!!}
}

输入两个日期计算出两个日期相差多少天

package com.qfedu.h_date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo3 {public static void main(String[] args) throws ParseException {//输入两个日期计算出两个日期相差多少天SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//将一个字符串类型的数据变成一个Date类型的数据Date strat = sdf.parse("2012-08-01");Date end = sdf.parse("2022-08-09");//一定要将字符串转为Date类型 才能按照日期来算//将Date类型的数据转为时间戳了,//为啥转为时间戳?因为时间戳是一个long类型数据可以想减!!!//算两个时间的间隔,相减。转为int或者long才能转long startTime = strat.getTime();long endTime = end.getTime();//毫秒数long num = endTime - startTime;System.out.println(num/1000/60/60/24);}
}

作业:

1.输入两个日期计算出两个日期相差多少天
2.一个你的生日,计算出来你几岁了
3.新闻类:标题 内容  时间有10条新闻  ,按照时间降序进行排列  打印!!!4.学生类:学号  姓名  出生日期把学生类放到集合中,找出来比张三年龄大的学生
5.题目要求:根据int变量n的值,来获取随机数字,范围是[1 , n],可以取到1也可以取到n。
6.题目:用代码模拟猜数字的小游戏。思路:1.首先需要产生一个随机数字,并且一旦产生不再变化。用Random的nextInt方法2.需要键盘输八,所以用到了Scanner3.获取键盘输入的数字,用scanner当中的nextInt方法4.已经得到了两个数字,判断(if)一下:如果太大了,提示太大,并且重试;如果太小了,提示太小,并且重试;如果猜中了,游戏结束。5.重试就是再来一次,循环次数不确定,用while(true)。
7.自己去百度一下Calendar这个类详解。
因为以后开发中日期在项目中是必用的!!!啥时候下的单子,超过15分钟没有支付。都要考虑的!!!日期很重要的!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊分布式架构04——RPC通信原理

目录 RPC通信的基本原理 RPC结构 手撸简陋版RPC 知识点梳理 1.Socket套接字通信机制 2.通信过程的序列化与反序列化 3.动态代理 4.反射 思维流程梳理 码起来 服务端时序图 服务端—Api与Provider模块 客户端时序图 RPC通信的基本原理 RPC&#xff08;Remote Proc…

2023-10-07 LeetCode每日一题(股票价格跨度)

2023-10-07每日一题 一、题目编号 901. 股票价格跨度二、题目链接 点击跳转到题目位置 三、题目描述 设计一个算法收集某些股票的每日报价&#xff0c;并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数&#xff08…

全栈开发笔记2:项目部署上线的三种方式

文章目录 最原始的方式宝塔Docker 部署其他 本文为编程导航实战项目学习笔记。 项目部署的三种方式&#xff1a; 最原始方式✅ yum 手动安装 jdk mysql tomcat nginx打包前端项目&#xff0c;放到某个目录&#xff0c;修改 nginx 配置修改线上的 mysql 配置&#xff0c;打包 j…

RK3568 适配LVDS屏XW101CM02

代码如下添加参数,只要是使用的是同款屏幕,那就可以直接使用里面所有参数,在相关的DTS文件进行修改 lvds_panel: lvds-panel {status = "okay";compatible = "simple-panel";backlight = <&backlight1>;reset-delay-ms = <20>;enable-d…

Mysql bin-log日志恢复数据与物理备份-xtrabackup

主打一个数据备份与恢复 binlog与xtarbackup bin-log日志恢复开启bin-log配置bin-log日志恢复 物理备份-xtrabackup三种备份方式安装xtrabackup备份全量备份增量备份差异备份 bin-log日志恢复 bin-log 日志&#xff0c;就记录对数据库进行的操作&#xff0c;什么增删改的操作全…

深度学习笔记之优化算法(三)动量法的简单认识

机器学习笔记之优化算法——动量法的简单认识 引言回顾&#xff1a;条件数与随机梯度下降的相应缺陷动量法简单认识动量法的算法过程描述附&#xff1a;动量法示例代码 引言 上一节介绍了随机梯度下降 ( Stochastic Gradient Descent,SGD ) (\text{Stochastic Gradient Descen…

基础算法之——【动态规划之路径问题】1

今天更新动态规划路径问题1&#xff0c;后续会继续更新其他有关动态规划的问题&#xff01;动态规划的路径问题&#xff0c;顾名思义&#xff0c;就是和路径相关的问题。当然&#xff0c;我们是从最简单的找路径开始&#xff01; 动态规划的使用方法&#xff1a; 1.确定状态并…

MySQL SQL性能优化方案(SQL优化 二)

插入数据优化 1. 多个值同时插入&#xff1a;多个值的插入语句可以减少与数据库的通信次数&#xff0c;从而提高插入性能 insert into 表名 (列1, 列2, 列3) values (值1, 值2, 值3), (值4, 值5, 值6), ... 2. 命令批量插入&#xff1a;高效地将数据从文件导入到数据库中&…

vue3+vite+uniapp 封装一个省市区组件

一、预览图 二、使用前的一些注意事项 只支持在 uniapp vue3 项目中使用支持微信小程序和h5 (app端没有测试过)ui库用的 uview-plus省市区数据用的是 vant-ui 提供的一个赖库 vant/area-data 三、组件代码 <template><u-popup :show"show" type"botto…

软件工程与计算总结(二)软件工程的发展

本章开始介绍第二节内容&#xff0c;主要是一些历史性的东西~ 一.软件工程的发展脉络 1.基础环境因素的变化及其对软件工程的推动 抽象软件实体和虚拟计算机都是软件工程的基础环境因素&#xff0c;它们能从根本上影响软件工程的生产能力&#xff0c;而且是软件工程无法反向…

Zabbix 监控系统安装和部署

Zabbix 监控系统安装和部署 一、zabbix 是什么&#xff1f;1.1、zabbix 监控原理&#xff08;重点&#xff09;1.2、Zabbix 6.0 新特性1.3、Zabbix 6.0 功能组件1.4、数据库1.5、Web 界面1.6、Zabbix Agent1.7、Zabbix Proxy1.8、Java Gateway 二、部署Zabbix 6.02.1、 解决 za…

Configuration of phpstudy and sqli-labs

Go download the app&#xff1a; 小皮面板(phpstudy) - 让天下没有难配的服务器环境&#xff01; (xp.cn) Have done. Then enter the program. Enable both functions&#xff1a; Apache and MySQL. Open the website&#xff1a; Next, Lets make the sqli-liab. GitHub…

[论文笔记]GLM

引言 今天带来论文GLM: General Language Model Pretraining with Autoregressive Blank Infilling的笔记。论文中文标题为 通用语言模型预训练与自回归填空。 有很多不同类型的预训练架构,包括自编码模型(BERT、RoBERTa、ALBERT)、自回归模型(GPT系列)以及编码器-解码器模型…

系统架构设计:论文论点目录

目录 系统架构设计&#xff1a;1 论软件系统建模方法及其应用 系统架构设计&#xff1a;2 论软件设计方法及其应用 系统架构设计&#xff1a;3 软件架构建模技术与应用 系统架构设计&#xff1a;4 论微服务架构及其应用 系统架构设计&#xff1a;5 论软件的可靠性设计 系统…

基于MDK-Keil环境如何把STM32程序直接下载到SRAM运行

1. 前言 对于 Cortex-M 内核的微控制器&#xff0c;它们都可以支持在 RAM 中执行程序&#xff0c;有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序&#xff0c;有基于以下几方面的原因&#xff1a; 1、所使用的设备可能具有OTP&#xff08;One-time Programmable&a…

笔记一:odoo透视表和图表

透视表 1、首先在xml文件添加pivot 说明&#xff1a;&#xff08;1&#xff09;根元素pivot中属性&#xff1a; disable_linking&#xff1a;设置为True&#xff0c;删除表格单元格到列表视图的链接 display_quantity&#xff1a;设置为True&#xff0c;默认显示“数量”列 d…

关于IDEA中gradle项目bootrun无法进入断点以及gradle配置页面不全的解决方案

问题背景 在使用gradle编写的bootrun&#xff0c;采用debug方式启动项目时&#xff0c;无法进入断点&#xff0c;程序正常运行 并发现象1 此处无法识别为大象图标 点击右键后&#xff0c;没有圈中的这个选项 并发现象2 图片圈中的位置缺失 问题原因 正常的 run 命令是通过…

SoapUI实践:自动化测试、压力测试、持续集成

因为项目的原因&#xff0c;前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家&#xff0c;希望对需要的人有所帮助。 SoapUI 是什么&#xff1f; SoapUI 是一个开源测试工具&#xff0c;通过 soap/http 来检查、调用、实现 Web Service …

[Android] Inent启动参数分析

Android中有哪四种启动模式&#xff1f; **android:launchMode"standard"启动模式 标准模式&#xff0c;**每次启动Activity都会创建一个新的实例&#xff0c;不管此前是否已存在该Activity的实例&#xff0c;Activity默认采用标准模式启动。**android:launchMode&q…

图片加载错误,显示默认图片

方法一&#xff1a;在img标签里&#xff0c;添加onerror事件 <img class"imgcls-err" style"min-height:250px" src"../images/facerule.jpg" onerror"javascript:this.src ../images/facerule.jpg;this.οnerrοrnull" id"…