自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 问答 (6)
  • 收藏
  • 关注

原创 MySQL必知必会(两万字MySQL教程,熟练掌握MySQL)

本文是作者在阅读《MySQL必知必会》[英]Ben Forta 著 刘晓霞 钟鸣 译 所整理的阅读笔记,包含了MySQL的从0到1的所有知识点。本文适用于:① 零基础② 刚学MySQL,想快速掌握③ 学过完整的MySQL,想复盘④ 准备面试因为本文大多内容是从书中截取,当然也有作者自己的部分见解,所以可以搭配书本和本文一起学习。另外,本文的sql脚本在下面这个链接中,请在阅读本文前,先运行sql脚本,以便实操。本文数据库脚本文件若有不对的地方,欢迎大家评论区或私信交流!

2023-10-23 20:45:09 739

原创 MongoDB简介

MongoDB是一个开源的NoSQL数据库,它使用了一个类似于JSON的格式,称为BSON,来存储数据。这种灵活性来自于它的无模式设计,这意味着你不需要预先定义数据结构,例如创建表,就可以存储数据。每个文档都有一个唯一的_id字段作为主键。:MongoDB支持分布式数据,这意味着你可以在多台机器上存储数据,以提供高可用性和可扩展性。:MongoDB是无模式的,这意味着你可以自由地存储任何类型的数据,不需要预先定义数据结构。:MongoDB支持复制集,这意味着你的数据可以在多台机器上复制,以防止数据丢失。

2024-08-09 15:05:50 396

原创 Sring的IOC和AOP

但在Spring框架中,创建和查找依赖对象的工作不是由对象本身来完成,而是由Spring容器来完成,然后注入到对象中,这就是所谓的控制反转。当一个java类在Spring中被AOP代理时,Spring会创建一个新的代理类,这个类包含了目标类的所有方法,并在特定的切点进行增强处理。总的来说,IOC和AOP是Spring框架的两个核心,它们都是为了提高代码的模块化程度,提高代码的可重用性,提高系统的可维护性。IOC可以增加模块间的解耦,提高模块的可复用性,提高系统的可测试性,提高代码的可读性等。

2024-08-09 14:56:43 271

原创 Java线程池

当任务队列和线程池都满了,说明线程池已经无法处理更多的任务,这时可以通过拒绝策略处理新来的任务。当任务队列满了,且核心线程都在工作时,线程池可以创建更多的线程,但是线程总数不能超过最大线程数。线程池的主要优点是,通过复用已存在的线程,降低线程创建和销毁造成的消耗,提高响应速度,提高线程可管理的数量等。可以通过线程工厂给每个创建出来的线程设置更详细的参数,比如命名线程以方便调试。:线程池中的线程被称为"工作线程"。以上是线程池的一些基本概念和参数,不同的线程池实现可能会有不同的参数和行为。

2024-08-09 14:54:20 259

原创 MYSQL常用函数

以上只是MySQL函数的一部分,MySQL还有许多其他的函数,可以满足各种复杂的查询需求。MySQL提供了许多内置的函数,可以用于各种数据操作。

2024-08-09 14:51:25 232

原创 CHAR和VARCHAR

你存储的字符串长度是1,那么它只会占用1个字节的空间(加上1或2个字节的长度信息)。更好,因为数据库可以更容易地确定数据的物理位置。然而,如果你的字符串长度经常变化,那么。,无论你存储的字符串长度是1还是10,它都会占用10个字节的空间。通常用于存储固定长度的字符串,如性别、国家代码等。时,你需要考虑你的数据的特性,以及你的应用的需求。是固定长度的,所以在某些情况下,它的性能可能会比。则适用于长度可变的字符串,如名字、地址等。可能会更有效,因为它使用的空间更少。会自动去除尾部的空格,而。

2024-08-09 14:33:15 396

原创 #{}和${}的区别

然后通过预编译的方式,将参数设置到SQL语句中。这种方式可以防止SQL注入攻击,因为参数值在设置到SQL语句中时,会被JDBC驱动做必要的转义处理。这种方式可以用于动态地改变SQL语句的结构,但是,因为参数值直接被拼接到SQL语句中,如果参数值是用户提供的,那么可能会存在SQL注入攻击的风险。都可以用于在SQL语句中插入参数,但是它们的工作方式有所不同,这也导致了它们在安全性和灵活性方面有所区别。如果你需要动态地改变SQL语句的结构,并且你能确保插入的值是安全的,那么可以使用。在MyBatis中,

2024-08-09 14:17:15 183

原创 方法的重写(Overriding)和重载(Overloading)

这两个概念的主要区别在于:方法重写是子类改变父类已有方法的行为,而方法重载是在同一个类中定义多个名字相同但参数列表不同的方法。:在同一个类中,如果有两个或者两个以上的方法名相同,但参数列表不同(参数个数或类型不同),则称为方法的重载。:当子类需要改变父类的某个方法的行为时,子类可以定义一个与父类方法签名完全相同的方法,这就是方法的重写。方法都接受不同的参数。

2024-08-09 14:04:33 224

原创 static和final

关键字用于声明一个常量,你可以将其看作是一个不可改变的值。它可以用于声明常量变量、常量方法或者常量类。关键字用于声明独立于对象的静态成员。它可以用于声明静态方法、静态变量或者静态代码块。用于声明一个静态常量,也就是说这个值是不可变的,并且是类的所有实例共享的。这两个关键字可以一起用在一个变量或者方法上。

2024-08-09 13:58:47 218

原创 Java日期格式化注解【@DateTimeFormat和@JsonFormat】✔

如果你需要处理的日期字符串不包含时区信息,那么它将被解析为系统默认的时区。如果你的系统默认时区不是 GMT+8,你可能需要在代码中手动处理时区问题。当你的 Spring 应用程序接收到一个 HTTP 请求,并且请求参数包含日期和时间数据时,对象会被序列化为 “yyyy-MM-dd HH:mm:ss” 格式的字符串,并且使用 GMT+8 的时区。这两个注解通常一起使用,以确保在前后端之间传递日期和时间数据时,数据的格式始终保持一致。参数,如果你需要解析的日期字符串包含时区信息,那么你需要在。

2024-05-23 10:19:04 1026

原创 Java日期格式化(@JsonFormat @JSONField)

和@JSONField都是在 Java 对象序列化为 JSON 格式时,用于指定日期格式的注解,但它们通常与不同的 JSON 库相关联。

2023-11-22 10:00:53 2264

原创 Java知识体系

Java

2023-11-22 09:55:43 147

原创 MySQL实现日期格式化

在 MySQL 中,你可以使用函数来格式化日期。下面是一些使用。

2023-11-22 09:54:07 1033

原创 MySQL索引的添加修改以及删除

在 MySQL 中,可以通过CREATEALTER, 和DROP语句来添加、修改和删除索引。

2023-11-22 09:51:50 2719

原创 SQL查询(专篇)

关键字指定其包括所有行的表**(RIGHT指出的是OUTER JOIN右边的表,而LEFT指出的是OUTER JOIN左边的表)。在这个简单的例子中,使用UNION可能比where更为复杂,但对于更复杂的过滤条件,或者从多个表(而不是单个表)中检索数据,使用UNION可能会使得处理更加简单。外键(foreign key):外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。UNION从查询结果集中自动去除重复的行,这是UNION的默认行文,但如果需要改变,可以改变它。

2023-11-22 09:46:58 295

原创 join,inner join,left join,right join的区别

总的来说,INNER JOIN 返回匹配的行,而 LEFT JOIN 和 RIGHT JOIN 返回匹配的行以及左表或右表中没有匹配的行,分别使用 NULL 值填充。这四种关联(join)操作用于合并来自两个或更多表的数据。它们之间的区别主要在于它们对匹配条件和合并的方式的处理。

2023-11-22 09:41:14 132

原创 Cookie和Session的理解

总的来说,Cookie存储在客户端,而Session存储在服务器端。Cookie可以存储更多类型的数据,但由于存储在客户端,存在安全风险。Session相对安全,但在大规模应用中可能会增加服务器负担。选择使用Cookie还是Session通常取决于具体的需求和安全考虑。Cookie和Session都是用于在Web应用中跟踪用户状态的机制,但它们有一些关键的区别。考虑一个用户登录的情境,用Cookie和Session来存储用户信息。

2023-11-22 09:27:11 60

原创 lock和synchronized的区别以及优缺点

lock和都是在多线程编程中用于同步的机制,但它们有一些区别。

2023-11-20 20:43:53 172

原创 MySQL和Redis的区别

总的来说,MySQL和Redis在设计目标、数据模型、存储方式以及适用场景上有很大的差异,开发人员在选择使用时需要根据具体的业务需求和性能要求来进行合理的选择。在一些场景中,二者也可以结合使用,比如将Redis用作缓存,提高读写速度。MySQL(关系型数据库管理系统)和Redis(非关系型内存数据库)是两种不同类型的数据库系统,它们在设计目标、数据存储方式、使用场景等方面存在一些显著的区别。

2023-11-20 20:40:19 150

原创 线程的三种创建方式

【代码】线程的三种创建方式。

2023-11-19 20:06:59 221

原创 Java枚举

enum Day {在这个例子中,Day是一个枚举类型,包含了一周中的每一天作为枚举常量。

2023-11-19 14:18:19 90

原创 Java强制类型转换

在Java中,强制类型转换(也称为类型转换或类型转换)是指将一个数据类型的值转换为另一个数据类型。强制类型转换可能会导致精度损失或溢出,因此在进行强制类型转换时需要注意数据范围和精度。

2023-11-19 14:13:31 139

原创 Java初始化顺序

父类(静态变量、静态语句块)子类(静态变量、静态语句块)父类(实例变量、普通语句块)父类(构造函数)子类(实例变量、普通语句块)子类(构造函数)

2023-11-19 13:53:37 88

原创 Mybatis中#{}与${}的区别

Mybatis中#{}与${}的区别

2023-11-19 13:41:35 76

原创 Object常用方法——clone()

在实际开发中,也可以考虑使用其他方式实现对象的复制,如序列化、构造方法复制等,具体选择取决于需求。方法是Object类中定义的一个方法,用于创建并返回一个对象的拷贝。但是,需要注意的是,方法是浅拷贝,即它只会复制对象的字段值,而不会复制对象引用的其他对象。以下是一个简单的示例,演示了如何使用。类型,因此需要进行类型转换。方法中,我们创建了一个。

2023-11-19 13:38:15 219

原创 Object常用方法——toString()

这个方法返回一个包含对象信息的字符串,可以用于调试、日志记录,或者是将对象的内容以字符串的形式展示给用户。方法是Java中的一个方法,它是Object类的一个公共方法,因此几乎所有的Java类都可以调用这个方法。方法有助于提供更有意义和易读的输出,方便调试和理解对象的状态。这在实际的开发和调试过程中是一个常见的做法。方法返回一个由类名和对象的散列码组成的字符串。在Java中,当我们需要将一个对象转换成字符串时,通常会调用其。方法,以便提供更有意义的字符串表示形式。的主要作用是返回对象的字符串表示形式。

2023-11-19 13:33:04 724

原创 this和super关键字的意义和作用

在Java中,this和super是两个关键字,用于引用对象和父类,分别表示当前对象和父类对象。this。

2023-11-19 11:37:20 269

原创 Java中对象引用是什么意思

在Java中,对象的引用指的是一个变量,该变量存储了对象在内存中的地址。变量本身并不直接存储对象的实际内容,而是存储了对象的引用,通过引用可以访问和操作对象的属性和方法。变量可以存储基本数据类型的值,也可以存储对象的引用,即对象在内存中的地址。引用的概念使得在Java中可以方便地操作和传递对象,同时也引入了一些概念,如对象的生命周期、引用的传递、垃圾回收等。特别需要注意的是,对于基本数据类型(如整数、浮点数等),变量存储的是实际的数值,而对于对象类型,变量存储的是对象在堆内存中的地址。

2023-11-19 11:36:42 339

原创 抽象类和接口的使用场景

抽象类(Abstract Class)和接口(Interface)是Java中两种实现抽象类型的方式,它们各自有不同的使用场景和适用情况。

2023-11-19 11:27:59 250

原创 MySQL索引类型

选择合适的索引类型取决于具体的查询需求和数据特性。不当使用索引可能导致性能问题,因此在设计数据库时需谨慎选择和创建索引。MySQL支持多种类型的索引,这些索引可以加快查询操作的速度并优化数据库性能。

2023-11-19 10:29:31 89

原创 线程和进程的区别

总的来说,线程和进程各有优势和劣势,选择使用哪种取决于具体的应用场景和需求。

2023-11-19 10:27:36 94

原创 工厂模式介绍

抽象工厂模式提供了一组相关或相互依赖的对象的创建接口,而不指定它们的具体类。客户端通过调用工厂接口或抽象类的方法来创建一组相关的产品。// 抽象工厂接口// 具体工厂1// 具体工厂2// 产品A接口// 具体产品A1// 具体产品A2// 产品B接口// 具体产品B1// 具体产品B2// 客户端代码工厂模式提供了一种创建对象的灵活方式,使得客户端代码不需要直接依赖具体类,而是依赖于抽象接口或类。

2023-11-16 18:53:01 62

原创 关于Spring Bean的一些总结

Spring中的Bean生命周期是指一个Bean从被创建、初始化,到被使用,再到被销毁的整个过程。在Spring容器管理的Bean中,生命周期的管理主要通过回调方法和事件监听来实现。destroySpring容器负责管理Bean的生命周期,通过在Bean的配置中指定回调方法、使用注解或接口等方式,可以对Bean的生命周期进行定制。

2023-11-16 18:52:17 188

原创 组合索引实例

组合索引(Composite Index)是包含多个列的索引,允许在多个列上进行排序和搜索。与单列索引不同,组合索引考虑了多个列的联合效果,可以提高某些查询的性能。(a, b, c)

2023-11-16 18:47:10 77

原创 数据库事务的隔离级别介绍

这三种问题与事务隔离级别密切相关,不同的隔离级别对这些问题的解决方式不同。例如,串行化隔离级别通常可以避免脏读、不可重复读和幻读,因为它在读取和写入数据时引入了锁,确保同一时刻只有一个事务能够访问特定的数据。在实际开发中,隔离级别的选择需要根据应用程序的需求和性能考虑。默认情况下,大多数数据库使用的是读已提交的隔离级别。在选择隔离级别时,需要权衡并发性能和数据一致性之间的关系,并根据具体的业务需求来做出合适的选择。

2023-11-16 18:43:33 71

原创 对象比较【边界】

对于较小的整数(通常在-128到127之间,包括边界),JVM使用缓存对象以提高性能。这意味着在此范围内的。在你的例子中,值都是128,这超出了通常发生整数缓存的范围。这段代码的打印结果是false。然而,对于超出此范围的值,将创建新的。对象将引用内存中的相同对象,因此。,因为将为每个变量创建不同的。当你在Java中使用。,因为对象是不同的。对象的值,你应该使用。

2023-11-16 18:31:32 61

原创 ArrayList的默认长度

ArrayList的容量不足以容纳新添加的元素时,它会创建一个新的更大的数组,并将旧数组中的元素复制到新数组中。适应不同大小的数据集,但是在特定情况下可能会引起性能开销。因此,如果你能预测到。默认情况下,每次扩容会将当前容量增加一半。可能会存储大量元素,可以通过指定初始容量来避免多次扩容,从而提高性能。在创建时就会分配一个具有更大初始容量的数组,从而减少后续的扩容操作。对象时,它会在内部分配一个初始容量为10的数组来存储元素。的默认初始容量是10。中添加的元素数量超过了初始容量,这种自动扩容的机制帮助了。

2023-11-16 18:27:39 1477

原创 Java并发编程基础和核心概念

Java 并发编程是指在多个线程之间有效地协调和控制任务执行的一种编程方式。在并发编程中,多个线程同时执行,共享资源,需要考虑线程安全、同步、互斥等问题。

2023-11-14 10:53:26 54

原创 JDK核心API

Java Development Kit (JDK) 提供了丰富的核心 API,用于开发各种类型的 Java 应用程序。

2023-11-14 10:51:31 145

原创 Java输入输出流IO

Java I/O(输入/输出)是处理输入和输出的机制,用于读取和写入数据。Java 提供了丰富的 I/O 类库,支持文件操作、网络通信、对象序列化等。

2023-11-14 10:50:01 59

空空如也

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

TA关注的人

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