自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 问答 (1)
  • 收藏
  • 关注

原创 (十一)Java集合进阶3——Set

TreeSet需要指定排序规则,compareTo方法,不需要重写hashcode和equals,因为TreeSet排序与哈希表无关,底层是红黑树。,从而提高查找效率,如果集合中存储的是自定义对象,必须要重写hashCode和equals方法,因为不重写的话默认都是用地址值比较的,意义不大。HashSet遍历的规则是按照数组的索引遍历每一个位置的链表,所以和加入HastSet的顺序肯定是不一样的。默认使用HashSet,如果要求去重且存取有序,才使用LinkedHashSet。顶层实现是哈希表的Set。

2024-09-30 17:26:54 544

原创 (十)Java集合进阶2

因为只是在往集合添加数据时加了一个限制,添加进去后集合仍然会把元素转换为Object类型,使用时再强转为泛型的类型,因为JDK5才有的泛型,只能这么改,不然在此之前的代码都会报错,这也是泛型中不能写基本数据类型的原因,比如int不能转变为Object类型,得是Integer才行。泛型的好处是统一数据类型,把运行时期的问题提前到了编译期间,避免强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查,“看门老大爷”

2024-09-29 21:56:15 253

原创 (九)Java集合进阶1-单列集合Collection

如果存的是自定义对象,没有重写equals方法,那么默认使用object类中的equals方法进行判断,而object类中equals方法,依赖地址值进行判断,比较String类型不用重写equals是因为Java已经重写好了。如果要使用Arrays.toString方法转换对象类型,需要重写toString方法,例如有一个girlFriend的Javabean类,像下面这样直接调用Arrays.toString()方法打印的是girlFriend[]数组中g1, g2, g3三个对象的地址值。

2024-09-26 21:52:50 876

原创 (八)Java常用API

所以说java中提供路径常用C:\\Users\\...的形式,意思是第一个\是转义字符,把第二个\的意思从转义字符变成了普通的\,代表路径,所以说简单来讲\\表示\的意思。在底层占用字节个数:byte1个字节、short2个字节、int4个字节、long8个字节。在java中,整数有四种类型:byte,short,int,long。对象克隆:把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制。属于正则表达式内容范畴,用于在一段文本中查找满足要求的内容。\ 转义字符:改变后面那个字符原本的含义。

2024-09-23 21:51:12 345

原创 (七)Java面向对象进阶知识3

在面向对象编程中我们会抽取不同Javabean类中的共性部分定义为父类,这就是继承的由来,子类往往需要去重写父类的方法,但是如果Javabean特别复杂就有可能忘记,这时候就可以把方法定义为抽象方法,父类也就成为了抽象类。抽象类不能实例化,用于继承抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类可以有构造方法(用于创建子类对象时,给属性赋值)抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类。

2024-09-19 16:27:25 762

原创 (六)Java面向对象进阶知识2

用static{}包裹的代码块,需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次,无论创建多少个对象都只会执行一次,可以用于数据初始化,比如对于某些信息管理系统,可以在main函数之前初始化信息。可以写在方法里,不常用,用于管理变量的生命周期,大括号结束即变量被回收,用于节约内存,但是现在内存都很大,不怎么需要了。抽取几个构造方法中共同的部分,优先于构造方法执行,也是为了节约内存,不够灵活(只要实例化对象一定会执行)不常用。final修饰的变量是基本类型:那么变量存储的。

2024-09-18 21:54:39 726

原创 (五)Java面向对象进阶知识1

我们先想象一个场景,有一个Student学生类,他们有name、id、age、gender和school等属性,其中只有school属性比较特别,因为如果是同一个学校的学生管理系统,那么所有Student类的实例化对象的school属性应该都是一样的,那么就没必要单独赋值了,所以在定义成员变量school时就可以把它定义为静态成员变量,所有Student的对象共享该属性。静态区的变量只有一份,是所有对象共享的,且静态变量是随着类的加载而加载的,优先于对象出现的。

2024-09-13 16:57:01 184

原创 (四)Java容器部分知识

如果拼接的时候有变量就会复杂一些,JVM会自动生成一个StringBuilder在堆内存中,然后执行相关操作:执行new String(“字符串1”) + new String(“字符串2”),会创建StringBuilder对象,并将字符串1和字符串2的内容追加其中,然后调用StringBuilder对象的toString()方法,将其转换为一个新的字符串对象,内容为”字符串1字符串2“,这个新的字符串存储在堆上。首先要分为两种情况,拼接等号右边没有变量/有变量,如下代码,

2024-09-13 16:10:48 623

原创 (三)Java封装部分知识

所以说this的作用可以概括为区分成员变量和局部变量重名的问题,this的本质是代表了方法调用者的地址值。,可以将this想象为一个可变化的指针,s1.method(),此时this就是s1的地址值。

2024-09-12 21:39:25 340

原创 (二)Java基础知识

如果把一个取值范围小的数值赋值给取值范围更大的变量,就会把前者自动转换为取值范围更大的类型;如下所示,把int类型的a赋值给b的时候就会把a自动转换为double类型。但是,如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换,如下所示。很简单的理解,把数据类型比作水盆,把更少的水倒进更大的水盆当然不会有错误,但是把更多的水倒入更小的水盆就需要人为介入了(强制转换)。

2024-09-11 16:48:23 387

原创 (一)Java入门知识

JDK(Java Development Kit):java开发工具包,包括JVM(虚拟机)、核心类库(java提前定义好的东西,比如sout)、开发工具(编译工具、运行工具、调试工具、内存分析工具...),但是开发工具里面有很多不是必须的,会占用硬盘空间,所以把开发工具中必要的抽离出来组成了运行工具,JRE(Java Runtime Environment)包括JVM、核心类库和运行工具。编译型相当于厨师直接做好一桌子菜,顾客来了直接开吃,而解释型就像吃火锅,厨师把菜洗好,顾客需要自己动手边煮边吃。

2024-09-11 11:04:12 557

原创 torch.cuda.OutOfMemoryError: CUDA out of memory.解决方案(训练yolov7时遇到的问题)

接着把train.py文件中的batch从16改为8,代码运行成功,问题果然解决,我是12GB的显存,如果你们的显存更小的话可以改为4、2都行。然后就一直看报错信息,发现这一行“batch_norm”,然后突发奇想,难道是batch太大了?然后命令行输入nvidia-smi查看发现显存明明还有很多,所以网上很多杀进程的方法不是很奏效;

2024-09-11 09:15:05 149

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除