自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis——增删改查

运行结果出现异常,brandName和companyName查询为空值原因:数据库表的字段名称 和 实体类的属性名称 不一样,则不能自动封装数据起别名:对不一样的列名起别名,让别名和实体类的属性名一样*缺点:每次查询都要定义一次别名缺点:不灵活解决方案3:总结实体类属性名和数据库表列名不一致,不能自动封装数据1)起别名:在SQL语句中,对不一样的列名起别名,别名和实体类属性名一样*可以定义片段,提升复用性2)resultMap。

2024-06-18 12:29:29 760

原创 MyBatis——Mapper代理开发

细节: 如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载。1.通过 SqlSession 的 getMapper方法获取 Mapper接口的代理对。注意:mybatis-config.xml 中 UserMapper.xml 路径需要更改。2.调用对应方法完成sql的执行。

2024-06-12 15:25:52 16

原创 MyBatis框架——快速入门

MyBatis 本是Apache 的一个开源项目iBatis,2010年这个项目由apache softwarefoundation 迁移到了google code,并且改名为MyBatis。官网: https://mybatis.org/mybatis-3/zh/index.html。MyBatis 免除了几乎所有的JDBC 代码以及设置参数和获取结果集的工作。框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础之上构建软件编写更加高效、规范、通用、可扩展。

2024-06-05 16:00:02 316

原创 Redis——Java的客户端

1.引入spring-boot-starter-data-redis依赖2.在application.yml配置Redis信息3.注入RedisTemplate。

2024-06-04 15:49:43 1125

原创 Redis——基本命令

1. 数据间没有必然的关联关系2. 内部采用单线程机制进行工作3. 高性能4. 多数据类型支持字符串类型 string列表类型 list散列类型 hash集合类型 set有序集合类型 sorted_set5. 持久化支持1. 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等2. 任务队列,如秒杀、抢购、购票排队等。

2024-06-02 20:04:53 1153

原创 java基础-chapter18(网络编程)

协议定义了数据在网络上传输的规则和格式。常见的网络协议包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。TCP提供可靠的、面向连接的数据传输,而UDP则提供了无连接的、不可靠的数据传输。端口号范围从0到65535,其中0到1023是知名端口,用于常见的服务,比如HTTP服务使用端口号80。CS架构通常比BS架构性能更好,因为大部分业务逻辑和数据处理在客户端完成,减少了与服务器的交互次数。

2024-06-02 09:12:23 931

原创 java连接MySQL数据库

由此可见已经执行成功了。

2024-06-01 09:44:52 512

原创 java基础-chapter15(io流)

用于读写数据(本地文件,网络)输出流:程序->文件输入流:文件->程序字节流:可以操作所有类型的文件字符流:只能操作纯文本文件(能用电脑自带记事本打开并且能读懂的文件)File:表示系统中的文件或者文件夹的路径获取文件信息(大小,文件名,修改时间) 判断文件的类型创建文件/文件夹 删除文件/文件夹注意:File类只能对文件本身进行操作,

2024-05-31 20:11:43 746

原创 java基础-chapter17(反射)

这个方法用于获取指定参数类型的所有构造方法(包括公共、保护、默认(包)访问以及私有构造方法),但不包括父类的构造方法。总的来说,反射使得程序可以在运行时动态地获取和操作类的信息,从而实现更灵活、更动态的编程。这个方法用于获取类的所有构造方法(包括公共、保护、默认(包)访问以及私有构造方法),但不包括父类的构造方法。反射是一种强大的编程技术,它使得程序在运行时能够获取和操作类的信息,包括类的属性、方法、构造函数等。通过调用类的构造函数,可以在程序运行时根据不同的条件创建不同类型的对象。

2024-04-14 00:17:34 534

原创 java基础-chapter16(动态代理)

在Java中,动态代理是一种在运行时动态生成代理对象的机制,而不需要在编译时确定代理类。它允许在运行时创建一个实现了一组特定接口的代理类,这些代理类可以将方法调用转发到实际对象,并且可以在调用前后添加额外的逻辑。方法中,你可以根据需要处理代理对象的方法调用,比如记录日志、添加权限检查等,然后决定是否调用被代理对象的方法。总的来说,动态代理使得编程更加灵活,可以在运行时动态地创建代理对象,并且可以在方法调用前后添加额外的逻辑,从而实现一些高级功能。方法中,你可以通过这个参数来调用被代理对象的方法。

2024-04-13 13:31:06 1058 1

原创 java基础-chapter14(多线程)

线程是操作系统能够进行运算调度的最小单位。他被包含在进程之中,是进程中的实际运作单位进程是程序的基本执行实体多线程的作用:提高效率并发和并行并发:在同一时刻,有多个指令在单个CPU上执行并行:在同一时刻,有多个指令在单个CPU上执行1.继承Thread类的方式进行实现2.实现Runnable接口的方式进行实现3.利用Callable接口和Future接口方式实现1.自己定义一个类继承Thread2.重写run方法3.创建子类的对象,并启动线程。

2024-04-05 23:42:01 914

原创 Collection中的Set

LinkedHashSet内部使用LinkedHashMap来实现,HashMap的键对应着LinkedHashSet中的元素,而HashMap中的值则被设为一个固定的常量(如。HashSet中的元素存储在HashMap的键上,而HashMap中的键是唯一的,因此HashSet中的元素也是唯一的。在HashSet中,所有元素都被映射到HashMap的键上,而对应的值都是一个固定的常量(比如。TreeSet中的元素是按照键的自然顺序或者通过比较器对象来进行排序的。可排序:按照元素的默认规则(由小到大)

2024-03-31 15:44:51 727

原创 集合框架——Map

1. 创建一个HashMap集合,键是学生对象(Student),值是籍贯(String)2. 某个班级80名学生,现在需要组成秋游活动,班长提供了四个景点依次是 (A、B、C、D),底层:底层数据结构依然是哈希表,只是每个键值对元素又额外的多了一个双向链表的机制记录存储的顺序。存储三个键值对元素,并遍历要求:同姓名,同年龄认为是同一个学生。每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。实现Comparable接口,指定比较规则。,也可以自己规定键的排序规则。3.lambda表达式。

2024-03-30 17:03:21 407

原创 TreeSet是如何实现排序的?

创建TreeSet对象时候,传递比较器Comparator指定规则。javabean类实现Comparable接口指定比较规则。如果返回是 0 :要添加的元素已经存在,不存入。如果返回是负数:要添加的元素是小的 存左边。如果返回是正数:要添加的元素是大的 存右边。实现排序的,增删改查的性能都较好。表示已经在红黑树中存在的元素。可排序 不重复 无索引。TreeSet集合底层是。表示当前要添加的元素。

2024-03-30 01:33:28 350

原创 了解java中的泛型

extends E:表示可以传递E或者E所有的子类类型

2024-03-29 00:53:45 281 1

原创 ArrayList和LinkedList有什么区别?

例如,在列表的中间插入一个元素,需要将插入位置后面的元素都向后移动一个位置。要访问链表中的特定位置的元素,必须从列表的开头或结尾开始遍历,直到找到目标位置。然而,需要注意的是,对于大量插入和删除操作的情况,可能会有更适合的数据结构选择,比如 LinkedList。当数组容量不足以容纳新元素时,ArrayList 会自动进行扩容操作,通常会创建一个新的数组,并将原数组中的元素复制到新数组中。因此,相比于数组实现的 ArrayList,LinkedList 可能会占用更多的内存空间。

2024-03-28 00:03:02 2143

原创 关于HashSet的五个问题

当元素插入到哈希表中时,通过哈希函数计算得到元素的哈希码,并据此确定元素应该存储在数组的哪个槽位上。哈希函数将元素的键(或值)映射到数组的索引位置上,理想情况下,不同的元素应该被映射到不同的数组位置上,从而实现均匀的分布。当你遍历 HashSet 中的元素时,元素的顺序看起来是随机的,这是因为它们在哈希表中的存储位置是根据哈希码计算得到的,并不代表它们被插入集合的顺序。HashSet 添加元素的过程涉及哈希码的计算、数组的索引定位、哈希冲突的解决以及重复元素的检查,这些步骤保证了元素的唯一性和高效的存储。

2024-03-27 23:04:27 956 1

原创 java基础-Test03:图书管理系统 超详细注释

该项目的目的是模拟一个简单的图书管理系统,让用户可以对图书进行基本的管理操作,包括添加、查看、借阅和归还。通过这个项目,用户可以学习和练习使用Java编程语言构建简单的控制台应用程序,并了解基本的面向对象编程概念,例如类、对象、方法和属性。本项目是一个简单的图书管理系统,使用Java编程语言实现。

2024-03-19 23:31:06 1860 1

原创 数据结构极速版(更快了解java集合框架)

二叉查找树是一种二叉树,其中每个节点的值大于其左子树中的任何节点的值,小于其右子树中的任何节点的值。也是一种特殊的二叉查找树,它通过在普通的二叉查找树上增加一些额外的规则和操作来确保树的平衡。平衡二叉树是一种特殊的二叉查找树,它的左右子树的高度差不超过1。平衡二叉树的目的是确保在最坏情况下的搜索、插入和删除操作的时间复杂度仍然是O(log n)。查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同(元素在内存中是连续存储的)链表中的节点是独立的对象,在内存中是不连续的,每个节点包含。

2024-03-18 16:14:42 585

原创 java基础-Test02:学生管理系统 每行都有注释喔

这个项目通过交互式的方式与用户进行通信,用户可以根据菜单选择相应的功能,完成对学生信息的管理操作。总的来说,这个项目是一个简单但完整的实践项目,具有一定的难度和挑战性,适合Java初学者通过实际动手操作来提高编程能力,并加深对Java语言特性和编程思想的理解。项目包含了学生信息的增、删、改、查等常见功能,涵盖了基本的数据操作和管理操作,有助于学习者全面掌握Java编程的基础知识。项目采用了类和对象的模块化设计,学习者可以清晰地理解每个功能模块的作用和实现方式,有助于提高代码的可读性和可维护性。

2024-03-17 20:17:57 786

原创 java基础-Test01(练习题)

阶乘是一个数学运算符,表示从1到该数的所有正整数相乘的结果。阶乘通常用符号 "!" 表示。例如,n的阶乘表示为n!,其计算公式为:n!杨辉三角是一个三角形的数表,它的每一行都是由组合数构成的。这个数表以数学家杨辉(公元前约 330-约 270 年)的名字命名,尽管它在更早的时间就已经被发现了。杨辉三角的每个数字等于它上方两个数字的和。例如,第一行只有一个数字 1,第二行有两个数字 1 1,第三行有三个数字 1 2 1,以此类推。每一行的两端都是数字 1,而其余数字都是其上方两个数字之和。

2024-03-16 13:46:36 547 1

原创 java基础-chapter13(集合)

List接口是Collection接口的子接口1.List集合类中元素有序(即添加顺序和取出顺序一致)且可重复2.List集合中的每个元素都有其对应的顺序索引,即支持索引。

2024-03-15 09:00:10 980 1

原创 java基础-chapter12(常用类)

与String类不同,StringBuilder是可变的,因此在需要频繁修改字符串内容的场景下,使用StringBuilder可以提高性能。2.StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高 // char[] value;1.String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低 // private final char value[];

2024-03-14 00:00:46 2163

原创 java基础-chapter11(异常)

在Java中,创建自定义异常类可以满足特定程序或应用的需求。自定义异常类通常扩展自Exception类或其子类。//1.自定义一个异常类//要求年龄范围在18-60岁之间,否则抛出一个自定义异常if (!//2.在代码中使用自定义类throw new TestException("年龄输入不正确,要求在18-60之间");System.out.println("你的年龄输入正确");自定义异常类的主要优势在于它允许你定义特定于你的应用程序逻辑的异常,并提供更具意义的异常信息。

2024-03-13 00:04:34 1043

原创 java基础-chapter10(枚举)

枚举类自定义类实现枚举不需要提供setXxx方法,因为枚举对象值通常为只读对枚举对象/属性使用final + static 共同修饰,实现底层优化枚举对象名通常使用全部大写,常量的命名规范枚举对象根据需要,也可以有多个属性使用枚举来实现枚举类1.使用关键字 enum 替代 class2.SPRING("春天","万物复苏");—— 常量名(实参列表)3.如果有多个常量(对象),使用 , 间隔4.如果使用enum来实现枚举,要求将定义常量对象 写在最前面enum。

2024-03-12 13:54:06 407 1

原创 java基础-chapter09(内部类)

一个类的内部又完整的嵌套了另一个类的结构。被嵌套的类称为内部类,嵌套其他类的类称为外部类。内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系类的五大成员:属性、方法、构造器、代码块、内部类。

2024-03-11 16:55:32 1030

原创 java基础-chapter08(抽象类与接口)

1. 用abstract关键字来修饰一个类时,这个类就抽象类格式:访问修饰符 abstract 类名{}2. 用abstract关键字来修饰一个方法时,这个方法就是抽象方法格式:访问修饰符 abstract 返回类型 方法名(参数列表);//没有方法体//抽象方法3.抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()接口就是给出一些没有实现的方法,封装在一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。格式:interface 接口名{//属性。

2024-03-10 20:08:48 1046 2

原创 java基础-chapter07(面向对象三大特征)

super代表父类的引用,用于访问父类的属性、方法、构造器1.方法覆盖/重写就是子类有一个方法,和父类的某个方法的名称、返回类型,参数一样,那么我们说子类的这个方法覆盖了父类的方法2.子类 方法的返回类型和父类方法的返回类型一样,或者父类返回类型的子类比如: 父类返回类型是Object 子类方法返回类型是String2.子类方法不能缩小父类方法的访问权限默认 > private方法重载和方法重写的比较方法或对象具有多种形态。是面向对象的第三大特征,多态建立在封装和继承的基础之上。

2024-03-08 16:56:15 794 1

原创 java基础-chapter06(方法)

11.方法定义时的参数称为形式参数(形参),方法调用时传入的参数称为实际参数(实参),实参和形参的类型要一致或兼容、个数、顺序必须一致。4.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。5.一个方法最多有一个返回值(返回多个结果可以返回数组),返回类型可以为任意类型,包括基本数据类型和引用数据类型(数组,对象...)8.一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显式地定义一下。

2024-03-07 15:56:11 1268

原创 java基础-chapter05(对象与类)

访问修饰符 属性类型 属性名;有四种访问修饰符。

2024-03-06 10:54:59 446

原创 java基础-chapter04(数组)

数组是数据的集合,一个容器,用来存储任何类型的数据,包括基本数据类型和引用数据类型,但是一旦指定了数据的类型后,就只能存储指定类型的数据,数组声明长度后不可改变。数据类型[] 数组名 = new 数据类型[] {数据、数据...数据};数据类型[] 数组名 ={数据,数据,......,数据};System.out.println(数组名[i][j]);数据类型[] 数组名 = new 数据类型[长度];:数据名[外下标][内下标],获取指定下标数据。数据名[外下标][内下标] = 数据;

2024-03-05 18:28:40 1204

原创 java基础-chapter03(流程控制语句)

java控制语句分为:顺序结构、循环结构、选择结构选择结构格式:if(条件表达式){一条或多条语句};if-else语句格式:if(条件表达式) {语句块1} else {语句块2};

2024-03-04 12:37:08 396

原创 java基础-chapter02(变量、标识符、类型转换、运算符)

变量变量是在程序运行过程中,其值可以发生改变的量。变量的定义格式:数据类型 变量名 = 变量值;注意事项:1.在同一对花括号中,变量名不能重复2.变量在使用之前,必须要初始化(赋值)3.定义long类型的变量时,需要在整数的后面加L/l,因为整数默认是int类型,整数太大可能超出int范围。4.定义float类型的变量时,需要在小数的后面加F/f,因为浮点数的默认类型是double,double>float,类型不兼容。标识符标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。

2024-03-04 11:29:24 365 1

原创 java基础-chapter01

面向对象、简单好用、健壮性、安全性、平台无关性(可移植性)、支持多线程、分布式(支持网络编程)、编译与解释共存(Java是编译与解释共存的语言)开发Java程序,需要三个步骤:编写程序(使用工具编写)、编译程序(javac 文件名.java)、运行程序(执行:java 类名)在不同的操作系统下,只需要安装不同的Java虚拟机即可实现Java程序的跨平台。Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由。注释:注释是对代码的解释和说明文字,可以提高程序的可读性。

2024-03-03 12:29:17 326

空空如也

空空如也

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

TA关注的人

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