自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Photomaker使用教程

PhotoMaker 是一个由 Tencent ARC Lab 和 Nankai University MCG-NKU 共同主办的开源项目,专注于生成定制化的真实人类照片。本文只提供本地部署教程,不讨论原理部分。

2024-05-13 21:45:54 828 1

原创 Pytorch-Yolov5训练自己的数据集(快速上手使用) 教程

去yolov5官方github下载源码和pt权重文件点开requirement.txt查看所需安装环境在cmd中运行图中圈出的代码一键安装。

2024-04-25 16:30:19 417

原创 Java学习笔记 day24

当多个线程同时访问同一份共享资源时,由于互斥锁的存在,其他线程需要等待当前线程释放锁定才能够访问共享资源,这样可以避免多个线程同时访问共享资源造成的性能问题。可能会引起性能问题。当多个线程同时访问同一份共享资源时,由于互斥锁的存在,其他线程需要等待当前线程释放锁定才能够访问共享资源,这样可能会造成性能问题。当多个线程同时访问同一份共享资源时,互斥锁可以保证同一时刻只有一个线程能够访问,从而避免了线程间的竞争条件。线程同步 当有一个线程在对内存进行操作时 其他线程都不可以对这个内存地址进行操作。

2023-05-26 15:45:02 51

原创 Java学习笔记 day23

2 实现Ruunable接口方式更加适合多个线程共享一个资源的情况 并且避免了单线程的限制 建议使用Runnable。进程是程序的一次执行过程 或者是正在运行的一个程序 是动态过程 有它自身的产生 存在和消亡的过程。同一时刻 多个任务交替执行 造成一种"同时"的错觉 简单地说 单核cpu实现的多任务就是并发。某些情况下,一个类已经继承了一个类,那么它通过继承Thread类来创建线程显然不可能了。是为完成特定任务 用某种语言编写的一组指令的集合。线程由进程创建 是进程的一个实体。同一时刻 可以执行多个线程。

2023-05-26 15:44:31 49

原创 Java学习笔记 day21

方法声明中定义的形参只能在该方法里使用,而接口、类声明中定义的类型形参则可以在整个接口、类中使用。当调用fun()方法时,根据传入的实际对象,编译器就会判断出类型形参T所代表的实际类型。,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。泛型的好处就是编译的时候检查类型安全,并且类型的转换都是自动和隐式的,代码的复用率高。保证了类型的安全性 增强了代码的健壮性。泛型类 泛型接口 泛型方法。

2023-05-26 15:43:31 46

原创 Java学习笔记 day20

可以使用迭代器,可以使用维新派,但是不能使用索引遍历。可以存放Null值,但只能有一个Null。不一定有序 取决于hash后 再确定索引。常用方法和collection方法一样。HashSet实际上是HashMap。无序 没有索引 不可重复。不能重复 并且线程不安全。

2023-05-26 15:43:00 60

原创 Java学习笔记 day22

当事件发生时,产生事件的对象,会把此"信息"传递给"事件的监听者"处理,这里所说的"信息"实际上就是java.awt.event 事件类库里某个类所创建的对象,把它称为"事件的对象"②事件 就是承载事件源改变时的对象,比如当键盘事件 鼠标事件 窗口事件等等,会生成一个事件对象,该对象保存着当前时间很多信息,比如KeyEvent 对象有被按下键Code值。③事件监听器有很多种 不同的事件监听器可以监听不同的事件 一个类可以实现多个事件监听器。事件源 ---事件---> 事件监听者(事件处理方法)

2023-05-26 15:42:46 40

原创 Java学习笔记 day19

所有实现了collection集合的类都有一个iterator方法 用于返回iterator对象 即可以返回一个迭代器。,线程不安全,多线程情况不建议用咱。LinkedList: 底层数据结构是链表,查询慢,增删快。list集合中的元素 有序可重复 每个元素都有对应的索引。ArrayList: 底层数据结构是数组,查询快,增删慢。可以替代iterator迭代器 用于遍历集合或数组。iterator仅用于遍历集合本身并不存放对象。快捷键 itit 快速生成while循环迭代器。Iterator 接口。

2023-05-06 10:36:13 54

原创 Java学习笔记 day17

②调用构造器 String s2 = new String("xxx");//char原生类型自动装箱成Character。//double原生类型自动装箱成Double。//boolean原生类型自动装箱成Boolean。//short原生类型自动装箱成Short。//int原生类型自动装箱成Integer。//float原生类型自动装箱成Float。//byte原生类型自动装箱成Byte。//long原生类型自动装箱成Long。有了类的特点,就可以调用类中的方法。包装类 和 String互相转换。

2023-05-06 10:34:40 33

原创 Java学习笔记 day18

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。集合可以动态保存任意多个对象,还就那个方便。

2023-05-06 10:34:31 50

原创 Java学习笔记 day16

如果一个方法中可能生成某种异常 但并不确定如何处理这种异常,可以使用throws 表示将不对这些异常进行处理 而由该方法的调用者进行处理。在方法声明中用throws语句可以声明抛出异常的列表 throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。子类重写父类方法时 对抛出异常的规定 :子类重写的方法,抛出的异常类型必须和父类一致,要么为父类抛出的异常的子类型。将发生的异常抛出 交给调用者(方法)处理 最顶级的处理者就是JVM。throws关键字后也可以是异常列表 即 可以抛出多个异常。

2023-04-30 17:51:04 37

原创 Java学习笔记 day15

③在外部类中 编写一个方法, 返回内部类对象 out.in xx = xx.getfunction();//在主方法创建实例。枚举对象必须放在枚举类队首 直接 spring("春天","温暖") 即 常量名(参数列表)枚举是一组常量的集合 枚举是一种特殊的类 里面只包含一组有限的特定对象。tostring 返回当前对象名,子类可以重写该方法,用于返回对象信息。@Override 限定某个方法 是重写父类方法 该注解只能用于方法。@Deprecated 用于表示某个程序元素(方法 类)已经过时。

2023-04-30 09:37:24 29

原创 Java学习笔记 day14

外部类和局部内部类的成员变量重名时,遵循就近原则 如果想访问外部类的成员 可以使用 - > 外部类.this.成员。jdk在底层创建了匿名内部类xxxx$1 立马就创建了一个xxxx$1实例 并把地址返回给当前实例。内部类最大的特性就是可以直接访问私有属性,并且可以体现类与类之间的包含关系。没有类名(系统自动分配) 本质是类 内部类 同时还是一个对象。一个类的内部又完整的嵌套了另一个类结构,被嵌套的称为内部类。外部类访问局部内部类 -> 创建对象再访问。可以直接访问外部类的所有成员 包括私有的。

2023-04-29 08:32:48 28

原创 Java学习笔记 day13

必须实现接口的抽象方法(在接口中抽象方法可以省略abstract 都tm是抽象方法) 可以用传统艺能快捷键。接口中可以有方法(静态方法、默认方法)的具体实现 需要使用default关键字修饰。接口中的属性都是final 不可修改 访问形式为 接口名.属性名。//接口类型的变量可以指向,实现了该接口的类的对象实例。一个类可以同时实现多个接口 接口也可以继承多个接口。接口类型的变量可以指向实现了该接口的类的实例。接口就是给出一些没有实现的方法,封装到一起。关键字 Implements。

2023-04-28 17:19:55 35

原创 Java学习笔记 day12

必须实现接口的抽象方法(在接口中抽象方法可以省略abstract 都tm是抽象方法)接口中可以有方法(静态方法、默认方法)的具体实现 需要使用default关键字修饰。抽象方法不能用 private final static 自己想想为什么……如果一个类继承了一个抽象类,他必须实现所有的抽象方法。抽象方法就是没有实现的方法(没有方法体的方法)考虑将方法设置为抽象(abstract)方法。当一个类中存在抽象方法,该类必须声明为抽象类。接口就是给出一些没有实现的方法,封装到一起。抽象类可以没有抽象方法。

2023-04-28 17:19:03 36

原创 Java学习笔记 day11

①调用静态代码块和静态属性初始化 (静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)静态代码块随着类的加载而执行,只执行一次,而普通的代码块每创建一个对象就执行一次。设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免得自己再去思考和摸索。如果多个构造器中有重复的语句,可以抽取到初始化块中,提高代码的重用性。静态相关的代码块,类加载时就执行完毕,因此优先于构造器和普通代码块。如果使用的是类的静态成员,普通代码块不会被执行。

2023-04-25 17:47:50 39

原创 Java学习笔记 day10

但是不能使用该类中的非静态成员 必须在创建该类的一个实例对象后,才能通过这个对象访问类中的静态成员。该方法接受String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数。java虚拟机需要调用类的main方法 因此main方法的访问权限必须是public。main方法中 可以执行调用main方法所在的类的静态方法或静态属性。访问修饰符 static 数据返回类型 方法名(){} (推荐)静态变量访问修饰符的权限和范围 和 普通属性一样。shift+F8 跳出。一般用 类名.变量名。

2023-04-21 18:31:00 43

原创 Java学习笔记 day9

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。当调用对象方法时,该方法会和该对象的内存/运行类型绑定。当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。直接输出一个对象时,toString对象会被自动调用。用于判断对象的运行类型是否为xx类型或xx的子类型。哈希值主要根据地址号来,不能完全将哈希值等价于地址。两个引用,如果指向的是同一个对象,哈希值一样。== 既可以判断基本类型(判断值是否相等)instanceOf 比较操作符。子类往往重写,用于返回对象的属性。

2023-04-18 20:27:44 29

原创 Java学习笔记 day8

父类的引用指向了子类的对象 -> 父类类型 引用名 = new 子类类型();子类的引用指向父类对象 -> 子类类型 引用名 = (子类类型) 父类引用;编译类型看定义时= 号的左边 运行类型看 = 号的右边。要求父类的引用必须指向的是当前目标类型的对象。一个对象的编译类型和运行类型可以不一致。大量子类的情况下代码的复用性会大大提高。只能强转父类的引用,不能强转父类的对象。子类失去了使用父类所没有的方法的权力。可以调用子类类型中所有的成员。运行类型是可以变化的。向下转型需先向上转型。

2023-04-18 19:06:02 33

原创 Java学习笔记 day7

super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员,super的访问遵循就近原则。子类不能继承父类的private成员,但是可以通过在父类中提供public或protected方法来访问。访问某个属性,首先看子类是否有该属性,如果子类有这个属性,并且可以访问,则返回信息。子类继承父类,创建子类对象时,当子类对象创建好后,建立查找关系。super代表父类引用,用于访问父类的属性,方法,构造器。子类的方法覆盖了父类的方法(名称,返回类型,参数都一样)

2023-04-17 18:14:35 29

原创 Java学习笔记 day6

当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来声明继承父类即可。子类继承了所有的属性和方法,但私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问。

2023-04-16 09:36:23 36

原创 Java学习笔记 day5

封装就是把抽象出来的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作【方法】,才能对数据进行操作。Package 的作用是声明当前类所在的包,需要放在类的最上面,一个类中最多,只有一句package。只有默认的和public才能修饰类,且遵循上述访问权限的特点。this不能在类定义的外部使用,只能在类定义的方法中使用。This关键字可以用来访问本类的属性,方法,构造器。Java.lang.* 基本包 默认引入。提供一个公共的get方法,用于获取属性的值。

2023-04-15 10:12:38 39

原创 Java学习笔记 day4

表示接受的是可变参数,类型为int,可以当作数组来使用,即nums[]局部变量生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而死亡。如果没有定义构造器,系统会自动给类生成一个默认无参构造器,也叫默认构造器。可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后。一旦定义了自己的构造器,默认的无参构造器就被覆盖了,除非显式定义一个。属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。构造器是一种特殊的方法,主要作用是完成对新对象的初始化。

2023-04-15 10:11:30 68

原创 Java学习笔记 day3

是类的一个组成部分 也叫成员变量(field) 一般是基本数据类型,也可以是引用类型(对象,数组)break语句出现在多层嵌套的语句块中,可以通过标签指明要终止的是哪一层语句块。进行指定初始化,比如p.name = ''jakc'' p.age = 10。数组中的元素可以是任意数据类型,包括基本类型和引用类型,但不能混用。数组默认情况下是引用传递,赋的是地址,赋值方式为引用传递。先加载Person类信息(属性和方法信息,只会加载一次)类是对象的模板,对象是类的个体,对应的一个实例。

2023-04-15 10:09:19 69 1

原创 Java学习笔记 day2

运算结果为小数进行相等判断时,应该以两数的差值的绝对值,在某个精度范围内判断。从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。default子句是可选的,当没有匹配的case,执行default。char的本质是一个整数,在输出时,是unicode码对应的字符。固定大小的编码,使用两个字节表示字符,字母和汉字统一占用两个字节。

2023-04-15 10:08:13 76

原创 Java学习笔记 day1

.java 编译 -> .class ->JVM(java虚拟机) 运行JDK (java 开发工具包)JRE (java 运行环境)Java转义字符\t 制表位 对齐\n 换行\\ 一个\\" 一个"\' 一个'\r 一个回车\\ 注释\* *\ 多行注释

2023-04-15 10:05:18 97

空空如也

空空如也

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

TA关注的人

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