自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java学习路线:Servlet(一)认识和创建Servlet

Servlet是JavaEE的一个标准,他就像JDBC一样,由官方定义了一系列接口,而具体的实现由我们自己编写,最后交给Web服务器如Tomcat来运行我们编写的ServletServlet的作用是实现动态网页相应,使用Servlet后,不再是直接由Tomcat服务器发送我们编写好的静态网页内容,而是由我们通过JAVA代码进行动态拼接,实现动态网页的返回。

2024-12-31 17:56:26 784

原创 JavaScript(五):JSON

JavaScript中提供了JSON对象,内置了方法开处理JSON数据,包括将对象转换为JSON字符串和将JSON字符串解析为JavaScript对象。在 JavaScript 对象中,键可以是字符串、数字或符号,但在 JSON 中,键必须是字符串,且必须用双引号。对象转换为 JSON 字符串,可以将它发送到服务器,或将其存储在本地存储(localStorage)中。方法将 JSON 字符串转换为 JavaScript 对象,我们可以访问和操作其中的键值对。1. JSON中的键必须是字符串。

2024-12-30 16:46:44 498

原创 JavaScript(四):对象

JavaScript 方法可以返回任何类型的值,如数字、字符串、数组、对象、甚至另一个函数。方法的参数可以在调用时传递,方法内部可以使用这些参数来执行特定的操作,并返回一个结果。方法内部可以访问外部的变量和参数,也可以访问其对象的属性。语法时,我们也可以定义方法。类中的方法就是类的实例方法,这些方法可以被类的实例调用。,静态方法是直接通过类调用的,而不是通过实例来调用。),我们可以连续调用多个方法,而不必重新引用对象。当方法的返回值为对象时,可以实现方法的链式调用。在类中,除了实例方法外,还可以定义。

2024-12-30 12:05:45 305

原创 JavaScript(三):数组

当传入一个数字时,创建一个指定长度的空数组,数组的元素为undefined。JavaScript中,数组的元素可以是不同的数据类型,也可以嵌套其他数组。:从数组中提取出一个新的子数组(不修改原数组),可以指定起始和结束索引。:在数组的末尾添加一个或多个元素,并返回新的数组长度。:在数组的开头添加一个或多个元素,并返回新的数组长度。:用于删除或替换数组中的元素,也可以向数组中添加元素。:删除数组的最后一个元素,并返回该元素。:合并两个或多个数组,返回一个新的数组。:删除数组的第一个元素,并返回该元素。

2024-12-27 20:14:15 310

原创 JavaScript(二):字符串

可以在模版字符串中插入任何有效的JavaScript表达式,包括函数调用、算数运算等。模版字符串允许在字符串中直接插入表达式,这些表达式会替换成对应的结果。在字符串中第一次出现的位置,如果没有找到,返回。:检查字符串中是否包含指定的子字符串,返回布尔值。:返回指定位置字符的 Unicode 编码。:返回一个新字符串,表示将原字符串重复。:从字符串中提取出一个子字符串,:去除字符串两端的空白字符。:去除字符串开头的空白字符。:去除字符串结尾的空白字符。:替换字符串中的指定部分。:返回指定位置的字符。

2024-12-27 17:54:58 530

原创 JavaScript(一):变量与常量

在JavaScript中,主要使用var、let和const关键字来声明变量或常量。

2024-12-27 16:29:27 330

原创 CSS(五):定位

在 CSS 中,position属性用于控制元素的定位方式,使我们可以精确地控制元素在页面上的位置。定位分为、和相对定位意味着元素的位置相对于它在正常文档流中的原始位置进行偏移。也就是说,元素在文档流中仍然占据原来的空间,但通过topleftright和bottom属性,使元素相对当前位置进行调整在上面的例子中,元素将比原始位置下移 20px,右移 30px,原来的位置依然保留,但它在页面上的实际显示位置已发生变化。

2024-12-25 17:39:45 287

原创 CSS(四)display和float

为了解决父级边框塌陷问题,我们可以选择直接为父级元素设置足够的高度,使浮动的子元素能够包含在内。但是,这种方法无法动态适应子元素的高度,如果浮动的子元素内容发生变化,则需要手动调整父元素的高度。浮动是将元素从正常的文档流中脱离出来,其他元素(比如文本)将围绕其周围排布,通常用于实现网页的布局效果。来布局元素时,浮动的元素脱离了正常的文档流,其他元素会忽略浮动元素的存在,直接排布在它们的旁边。clear:清除浮动,可以让块既有浮动的效果,也排成标准文档流的样式。这样可以确保父容器的高度扩展到浮动元素的高度。

2024-12-25 14:58:16 1126

原创 CSS(三)盒子模型

所有的HTML元素都可以看作像下图这样一个矩形盒子:content(内容区域)、padding(内边距)、border(边框)和margin(外边距)

2024-12-25 13:50:58 950

原创 CSS(二):美化网页元素

字体相关的 CSS 属性:可以将多个字体属性写在一行:例如:常见的文本样式属性:例如:通过 属性可以自定义列表项的符号例如:常见的背景属性:合并写法: 例如:

2024-12-25 10:55:51 628

原创 CSS(一):选择器

这个选择器是根据元素在其父元素中的位置来进行选择的,而不考虑元素的类型。这个选择器在选择时仅会考虑与指定类型相同的元素,忽略其他类型的元素。标签选择器是通过标签名来选择元素,可以应用于页面上所有指定的标签。子元素才会应用这个样式,而嵌套在其他元素中的。只选择元素相邻的下方的,唯一一个标签,且不含本身。元素都会应用这个样式,无论它们之间的元素是什么。由于父元素的第二个子元素是。属性选择器通过选择元素的特定属性及其值来应用样式。用于选择鼠标悬停在元素上的时候应用的样式。选择器用于选中父元素的第一个子元素,

2024-12-24 22:01:46 1093

原创 一篇文章学会HTML

:定义表头:定义列表的每一项表头12

2024-12-23 21:09:22 815

原创 Java学习路线:Maven(四)Maven常用命令

一般来说,项目编写完成后,要么作为Jar依赖供其他项目使用,要么就作为一个和可执行程序在控制台运行。可以使用package命令对项目进行打包。这些生命周期实际上是Maven的一些插件,每个插件都有各自的功能,而双击这些插件就可以执行命令。执行package之前,系统会自动执行Test,确保项目测试没有问题。在IDEA的Maven模块中,可以看到每个项目都有一个生命周期。

2024-11-07 15:50:06 384

原创 Java学习路线:Maven(三)继承关系

当依赖被标签修饰后,表示这个依赖被集中管理了,不同的子项目导入同一个依赖都会使用父项目中的这个版本。在父项目中,可以使用依赖管理的标签来管理子项目中所有可能用到的依赖。不过,这个时候子项目无需再标明依赖的版本号,因为所有的子项目都将使用父项目中统一规定的版本号。在idea中,右键父项目文件夹,点击新建模组,就可以新建一个该父项目下的子项目。另外,子项目还默认继承了所有父项目的依赖(包括被设置为optional的依赖)

2024-11-06 14:35:40 475

原创 Java学习路线:Maven(二)scope、optional和exclusions

我们知道,一般来说一个依赖由三个基本的属性作为定位坐标,即groupId、artifactId和version除了这三个基本属性以外,依赖还可以添加其他的属性,例如scope、optional和exclusions等这篇文章将对这几种属性进行介绍。

2024-11-06 13:45:58 624

原创 Java学习路线:Maven(一)认识Maven

几乎所有的依赖都被放进了中央仓库中,少量依赖存储在其他远程仓库(私服),从远程仓库下载后,依赖会暂时存储在本地仓库。在学习Maven之前,我们导入依赖都需要先下载jar包,而且还有可能一个jar包依赖另一个jar包,就十分麻烦,因此需要一个更加方便的包管理机制。每个项目都有自己的Maven坐标,因此我们通过Maven导入其他依赖的时候只需要填写这三个基本元素就可以了,无需再下载Jar文件。注意,刚复制进去的时候代码可能会爆红,这是刷新一下maven仓库就好(idea右边菜单栏的m就是Maven仓库)

2024-11-05 17:46:08 1766

原创 Java学习路线:JUL日志系统(三)开启MyBatis日志系统

如果我们想在项目中全面应用日志系统,而不再用传统的打印的方法,那么就需要在每个类中都去编写获取Logger的代码,这样就非常冗余,能否简化一下这个流程呢?之前学习的LomBok就替我们解决了这个问题!LomBok不仅可以用来快速生成构造方法,Getter和Setter等,同样也可以用于快速生成Logger。

2024-11-05 15:26:10 704

原创 Java学习路线:JUL日志系统(二)使用Properties配置文件

在这里,Properties类继承了Hashtable,和HashMap不同的是,Hashtable不允许插入的值的value为空。之前的学习中,我们学习了使用XML配置文件,但是XML的读取实在有些麻烦。那有没有更简单的方式来配置文件呢?在这里了解properties的主要目的是为了在后面更好地配置日志打印器JUL。properties文件就是直接以.properties结尾的文件。这个结构非常像map,等号左边为key,右边为value。同样,我们也可以将properties文件读到map里面。

2024-11-05 14:07:04 226

原创 Java学习路线:JUL日志系统(一)日志框架介绍

首先,为什么要使用日志系统?如果单纯地用System.out.println打印信息,如果项目比较大,存在大量的信息就会显得非常凌乱。而且,当我们希望在debug的时候打印某些信息,而运行的时候不打印,使用直接输出的方法就行不通了。因此,我们需要使用日志框架来规范日志的输出。

2024-11-01 23:13:43 1127

原创 Java学习路线:JUnit单元测试

当项目十分庞大时,如果想测试一个很小的功能,都要启动整个项目来测试,会很浪费时间。那能否将某个小功能单独拆出来进行测试呢?这就是单元测试的作用。而JUnit就是一个常用的单元测试工具。

2024-11-01 15:54:40 737

原创 Java学习路线:MyBatis(八)Mapper动态代理机制(选学)

那么,什么是代理类呢?可以这样理解,假如我们是种菜的农民,我们每天会丰收很多蔬菜,需要将这些蔬菜给超市,染让超市帮我们售卖,而我们不需要管超市具体是以怎样的方式将菜卖出的,我们只需要收钱即可在这个例子中,超市就是代理类来实现一下这个结构:@OverrideSystem.out.println("售出给" + customer);//代理的对象this.s = s;@OverrideSystem.out.println("讨价还价");

2024-10-31 22:08:51 969

原创 Java学习路线:JavaSE——反射

在Java程序启动时,JVM(Java虚拟机)会将一部分类(class文件)先加载(并不是所有的都加载,只加载需要用到的class文件),加载类后, 会将类的信息提取出来,生成一个。对于静态static方法,同样也可以这样获取,只不过需要将invoke的内容改为类,因为静态方法是属于整个类的。()方法也只能调用访问权限为public的构造器,并且必须要满足参数和类中的构造器的参数对应,否则就会报错。,与加载的类唯一对应,无论通过什么方式访问,访问的始终都是那一个对象。

2024-10-31 21:15:57 936

原创 Java学习路线:MyBatis(七)使用注解开发

使用@Results注解可以实现自定义映射</select>@Results({})在注解中,Results是一个注解数组,每一个@Result注解都对应一个单独的字段配置设置id=true表示当前字段是主键。

2024-10-30 23:11:01 1891 2

原创 Java学习路线:MyBatis(六)缓存机制

MyBatis 提供了缓存机制,可以和,从而提升应用程序的性能。通过缓存,MyBatis 可以将查询结果保存到内存中,当相同的查询再次被执行时,可以直接从缓存中获取结果,而不需要再次访问数据库MyBatis提供了两种缓存机制。

2024-10-30 15:34:14 894

原创 Java学习路线:MyBatis(五)动态SQL

是MyBatis提供的一种功能,允许你在XML配置中根据条件动态地生成 SQL 语句MyBatis 的动态 SQL 是通过ifchoosewhenotherwisetrimwhereset等标签来实现的。

2024-10-29 17:30:48 433

原创 Java学习路线:MyBatis(四)复杂查询

假如每个学生都有一个对应的老师,现在student新增了一个teacher对象,来记录当前学生的老师,又该如何处理呢?映射teacher对象时,将其教授的学生一并映射为List列表。id用于指定该映射中的主键(即可以通过id区分数据库的每一行)这样就可以实现查询某个tid对应的老师以及其教授的所有学生。实际上,多对一和一对多是同理的,这是查询结果的处理方式不同。这样就通过多对一的方式查询了某一个老师教授的所有学生了。在MyBatis中,有和JDBC相同的事务管理功能。,其中每个元素的类型为。

2024-10-29 14:16:01 469

原创 Java学习路线:MyBatis(三)增删改查

传入的对象为Student,当传入一个对象时,MyBatis会自动将对象的属性解析,填入#{xxx}中。插入操作需要使用insert标签。number=4的学生将会被删除。这里返回的int是添加的行数。删除需要使用标签delete。运行后,数据库中会新增一行。

2024-10-28 14:06:37 570

原创 Java学习路线:MyBatis(二)配置MyBatis

这样就成功实现了接口和Mapper的绑定,通过接口实现有一个好处就是明确了调用的函数(这里是selectStudent)返回的类型(这里是List)在mybatis-config.xml文件中,标签之前,使用为类型起一个别名。在Mapper文件中,resultType每次都需要输入完整的类的路径名,是不是有点麻烦呢?可以通过别名配置,为这个类起一个别名,这样可读性就会强很多。这样的话,在resultType中,直接输入类的别名就好了。

2024-10-27 16:51:33 503

原创 Java学习路线:MyBatis(一)认识MyBatis

前置知识:(学一下更好,不学也行)

2024-10-27 13:23:41 1993

原创 Java学习路线:Lombok(四)Lombok实用注解3

在这个地方,如果没有抛出IOException应该是会报错的,但是这里没有报错,因为使用了@SneakyThrows注解。除此以外,还存在一个build方法,用来返回真正的Student对象。:只能放在局部变量前,在最后自动调用变量的close()方法。而在编译后的代码里,定义这个builder内部类。只有一个参数Value,这里表示抛出异常的类型。(有参构造返回的内容是对象本身,说明这个地方支持。作用:和@Data相似,但不会生成。:自动生成try-catch代码块。方法,并且所有的成员属性都是。

2024-10-21 18:37:37 335

原创 Java学习路线:Lombok(三)Lombok实用注解2

这是因为,之前讲解EqualsAndHashCode的时候说过,重写的equals方法会忽略父类之间的比较,但是,EqualsAndHashCode可以通过设置callSuper来解决这个问题,@Data却无法解决。当存在final类型的变量时,如果时无参构造且没有初始化,代码会报错。但是,当存在final类型的变量时,RequiredArgsConstructor会自动创建一个包含该变量的有参构造。一般来说,重写了equals方法后,会只比较当前类的属性,而不去比较父类的属性,因此推荐将。

2024-10-21 16:28:15 714

原创 Java学习路线:Lombok(二)Lombok实用注解1

前置知识:注解以下是我整理的注解学习线路,按顺序学习完下列知识就可以无痛理解本篇了!

2024-10-21 14:52:20 1023

原创 Java学习路线:JavaSE——自定义注解

定义自定义注解需要使用@interface创建了自定义注解后,可以将其应用到类、方法、字段、参数等代码元素上。

2024-10-21 00:14:24 320

原创 Java学习路线:JavaSE——元注解

前置知识:在学习自定义注解之前,首先要了解Java注解的基本定义和使用方法:Java学习路线:JavaSE注解-CSDN博客目录元注解1. @Target2. @Retention3. @Documented4. @Inherited5. @Repeatable元注解(Meta-Annotation)是用于注解其他注解的特殊注解。元注解用于定义注解的行为、作用范围和生命周期等特性。在Java中有5种常见的元注解:作用:指定注解的适用范围 的可选值:例如,创建一个只能用于方法的注解:作用:指定注解的保留

2024-10-20 21:42:24 510

原创 Java学习路线:JavaSE——注解

在上述代码中,由于List和ArraryList都没有指定存入参数的类型,因此编译器无法对集合中的元素进行类型检查,会产生unchecked的警告。通常在开发过程中,编译器会生成一些警告,这些警告并不一定是错误,但可能提示潜在的问题。表示某个类、方法、字段已经过时了,不建议使用,可能在未来的版本中被移除。用于告诉编译器该方法的可变参数操作是类型安全的,通常用于泛型和可变参数组合的情况。是一个编译时注解,用于标记一个方法是重写父类或接口中的方法。注解的元素时,编译器会发出警告。用于告诉编译器忽略特定的警告。

2024-10-20 17:07:12 360

原创 Java学习路线:Lombok(一)认识和配置Lombok

在IDEA中,点击上方files->Settings->Plugins,在搜索框中搜索Lombok。将下载好的jar包放到项目文件夹中,在IDEA中右键jar文件,点击Add to Library(添加到库),点击确定,将Lombok添加到库中。Lombok是一种插件化注解API,通过添加注解来实现,在javac进行编译的时候进行处理。这只是Lombok最简单的使用实例,关于Lombok更详细的使用将在后面的文章中介绍。当新建一个类时,常常需要get和set方法完成类的封装。至此,Lombok就配置好了。

2024-10-20 15:38:39 506

原创 Java学习路线:JDBC(三)管理事务

JDBC默认的事务处理是自动提交,因此使用JDBC进行事务管理时,首先要通过Connection对象调用setAutoCommit(false)方法,关闭自动提交。关闭自动提交后,需要手动提交。因为事务管理能够确保数据库操作的一致性、完整性和可靠性。事务管理将一组相关的数据库操作当作一个整体来执行,它们要么全部成功,要么全部失败。比如我们想进行转账的功能,先从A账户中提取金额,再转入B账户中,如果在扣除金额之后遇到问题导致转入金额失败,如果使用事务管理,所有的操作都不执行,就能够取消扣除的金额;

2024-10-19 19:48:19 228

原创 Java学习路线:JDBC(二)实现和防止SQL注入攻击

Connection除了可以通过调用statement()方法来创建Statement对象以外,还可以调用preparedStatement()方法,创建一个PreparedStatement对象,来实现预编译。通过这种方式,将用户输入的内容作为一个整体放入占位符中,当用户输入单引号时,程序会自动将单引号进行转义,从而使其无法影响SQL的语义。方法,将用户输入的第一个值(用户名)设置为 SQL 查询中的第一个参数(方法,将用户输入的第二个值(是密码)设置为 SQL 查询中的第二个参数(

2024-10-19 16:52:47 412

原创 Java学习路线:JDBC(一)认识JDBC

是一种规范,提供一套完整的接口,允许便携式访问底层数据库,JDBC实现用Java代码对数据库进行增删改查操作。

2024-10-17 23:09:32 662

原创 Java学习路线:数据库(一)数据库的设计规范

其中,主键为BorrowID,BookID依赖于BorrowID,而BookName依赖于BookID,存在传递依赖的情况,因此不符合第三范式。因此这个依赖不符合BCNF范式,这个表的设计也不符合BCNF范式。定义:满足第二范式的情况下,所有的属性都不传递依赖于主键。定义:数据库的每一列都是不可分割的基本数据项(即具有。定义:在满足第一范式的基础上,表中的所有。只依赖于主键的一部分,因此违反了第二范式。,而不能仅依赖于主键的一部分。例如,如果一个表的主键是。,表示该表的每一行是由。在BCNF中,例如,

2024-10-11 12:22:57 1065 1

空空如也

空空如也

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

TA关注的人

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