自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试题:HashMap常见面试题

在put方法中,首先根据键的hashCode值确定元素在数组中的位置,然后通过比较键的equals方法判断是否为同一个键,如果是则更新值,如果不是则插入到链表或者红黑树中。当插入或者查找一个元素时,首先根据键的hashCode值确定元素在数组中的位置,如果位置上已经有元素存在,则通过比较键的equals方法判断是否为同一个键,如果是则更新值,如果不是则插入到链表或者红黑树中。HashMap中的键和值都可以为null,同时HashMap是无序的,即不能保证存入的顺序和取出的顺序一致。HashMap是什么?

2023-08-12 17:24:20 307

原创 面试题:Spring 与 Springboot 的区别以及优缺点

生态系统:Spring拥有庞大的生态系统,提供了很多功能强大的模块,如Spring MVC、Spring Data JPA等。Spring Boot是一个用于创建独立的、生产级别的基于Spring的应用程序的框架。它将各种Spring组件和第三方库整合到一个能够自动配置和启动的应用程序中,从而简化了Spring应用的开发和部署。综上所述,Spring和Spring Boot都是非常强大的Java开发框架,根据项目的需求和开发团队的经验,可以选择适合的框架来开发应用。

2023-08-11 19:02:57 905 1

原创 Java单例模式几种代码详解

在软件开发中,单例模式是一种常见的设计模式,它的目的是确保一个类在任何情况下都只有一个实例,同时提供一个全局访问点。在Java中,有几种常见的实现单例模式的方式,下面将逐一进行详细解释。以上是几种常见的实现单例模式的方式,每种方式都有各自的适用场景和优缺点。该方式通过加锁保证线程安全,但每次调用getInstance()方法时都会对方法加锁,可能会影响性能。该方式的优点是实现简单,但在多线程环境下可能会导致创建多个实例,因此不适用于多线程环境。该方式的优点是线程安全,但在单线程环境下可能会导致资源浪费。

2023-08-02 09:13:49 793

原创 SQL优化举例

当涉及到SQL优化时,有一些常见的策略和技巧可以用来提高查询性能。

2023-07-11 16:03:58 246 1

原创 Java 8新特性:Lambda表达式

通过调用stream方法将列表转换为一个流,然后使用map方法传入Lambda表达式(str -> str.length())作为参数,将列表中的每个字符串映射为其对应的长度。首先,创建一个包含字符串的列表strings,其中包含了"Java"、“Python”、"C"和"JavaScript"四个元素。通过调用stream方法将列表转换为一个流,然后使用reduce方法传入初始值0和Lambda表达式(a, b) -> a + b作为参数,将列表中的所有元素累加求和。三、Lambda表达式的使用场景。

2023-07-05 21:30:00 315

原创 MySQL中 行转列 以及GROUP_CONCAT函数的用法

GROUP_CONCAT函数接受一个或多个表达式作为参数,并将这些表达式的值连接成一个字符串。当使用GROUP_CONCAT函数时,我们可以将多个行中的某个字段的值连接成一个字符串。在我们的查询语句中,我们使用GROUP_CONCAT函数来连接与每个警情相关的所有当事人的。例如,如果有一个警情具有多个当事人,GROUP_CONCAT函数将把它们的。这样,我们可以在一条查询语句中获取每个警情的。,以及与每个警情相关的所有当事人的。,以及与每个警情相关的所有当事人的。最终的结果将包含每个警情的。

2023-07-05 10:15:35 458 1

原创 使用Java动态代理实现方法级别的日志记录

Java动态代理提供了一种便捷的方式来实现方法级别的日志记录,而无需修改现有的业务代码。在上述代码中,我们首先通过构造函数将原始类对象传入代理类,并创建了一个Logger对象用于日志记录。在invoke方法中,我们在调用原始类方法之前和之后,分别记录了方法的名称。动态代理提供了一种非侵入式的方式来增加日志记录,而无需修改原始类的代码。在调用代理对象的方法时,实际上是调用了代理类中重写的方法。通过运行上述代码,我们可以看到在调用原始类方法之前和之后,日志记录了相应的信息。方法创建了一个代理对象。

2023-07-02 20:00:00 448 1

原创 List集合和Map的基础使用

当涉及到Java编程时,List和Map是两个非常常见和重要的数据结构。在本博客中,我们将详细解释List和Map的概念、特性和用法,并提供一些示例代码。在Java中,Map也是一个接口,有许多实现类可供选择,例如HashMap、TreeMap和LinkedHashMap等。在Java中,List是一个接口,有许多实现类可供选择,例如ArrayList、LinkedList和Vector等。List用于有序存储和操作元素的场景,而Map用于通过键查找和访问值的场景。它提供了一种快速查找和访问数据的方式。

2023-06-30 18:30:00 784

原创 使用Tomcat在Linux服务器上搭建一个本地图片服务器,可以通过服务器ip访问图片

通过Tomcat,您可以轻松地将您的服务器配置为一个本地图片服务器,并使用服务器IP地址访问这些图片。在本博客中,我们将指导您完成以下步骤来搭建一个基于Tomcat的本地图片服务器。通过以上步骤,您已经成功地在Linux服务器上搭建了一个本地图片服务器,并通过服务器IP地址访问了图片。现在,您需要配置Tomcat服务器以将图片目录映射到URL路径。现在,您准备好启动Tomcat服务器并访问您的本地图片了。完成以上步骤后,您可以通过服务器IP地址访问您的本地图片。这将使Tomcat将URL路径。

2023-06-29 19:30:00 1439 2

原创 MySQL慢查询及其分析工具

慢查询是指在数据库中执行时间较长的查询操作。通常,执行时间超过一定阈值(如几秒钟)的查询被认为是慢查询。慢查询可能导致应用程序的性能下降,因为它会占用数据库资源并延迟响应时间。慢查询通常是由查询语句的复杂性、数据量过大、缺乏适当的索引或不正确的配置所导致。

2023-06-27 20:00:00 1352 1

原创 Java中字符串和日期类型的相互转换

通过以上示例代码,你可以实现字符串和日期类型之间的相互转换。将这些代码整理成博客的形式,可以提供更详细的解释和说明,并添加适当的示例和应用场景。下面是一个详细的代码示例,展示了如何将字符串转换为日期类型,以及如何将日期类型转换为字符串。当在Java中进行字符串和日期类型之间的相互转换时,可以使用。然后,我们定义了一个日期格式的模式。方法将日期对象转换为字符串。最后,我们打印出日期字符串。然后,我们定义了一个日期格式的模式。在上述代码中,我们首先定义了一个字符串。在上述代码中,我们首先创建了一个。

2023-06-26 20:08:50 7837 2

原创 @RequestParam 和@RequestBody注解的区别

当开发 Web 应用程序时,获取客户端请求中的参数是非常常见的需求。在 Spring MVC 中,我们可以使用和来获取请求参数,但它们在用法和作用上有一些区别。

2023-06-25 18:35:05 574

原创 了解MyBatis-Plus:简化持久层操作的神器

MyBatis-Plus是一个强大的持久层操作工具,可以极大地简化开发人员对数据库的操作。通过其提供的简化CRUD操作、自动分页功能、代码生成器等特点,开发人员可以更加高效地开发和维护数据库应用程序。希望本文对读者了解和使用MyBatis-Plus有所帮助,欢迎大家多多交流和分享。MyBatis-Plus是一个基于MyBatis的增强工具,提供了更强大、更便捷的持久层操作方式,极大地简化了开发人员对数据库的操作。本文将介绍MyBatis-Plus的特点和使用方法,帮助读者更好地了解和使用这个强大的工具。

2023-06-24 22:03:28 314

原创 MySQL中常用的函数及代码详解

例子:SELECT SUBSTRING(column_name, start_position, length) FROM table_name;解释:这将返回table_name表中column_name列值从start_position位置开始,长度为length的子串。可以根据具体需求使用不同的函数来处理和操作数据。例子:SELECT AVG(column_name) FROM table_name;例子:SELECT MAX(column_name) FROM table_name;

2023-06-23 20:06:34 1011

原创 RabbitMQ基础知识详解

RabbitMQ是一个功能强大的消息队列软件,它提供了可靠的消息传递机制,可以用于构建各种分布式系统。本文介绍了RabbitMQ的核心概念和使用方法,希望能够帮助读者更好地理解和使用RabbitMQ。

2023-06-12 20:47:54 643

原创 乐观锁,悲观锁,分布式锁详解

乐观锁是一种乐观的思想,认为在绝大多数情况下,数据的并发访问是不会发生冲突的,因此不需要加锁,而是在更新数据时通过比较版本号或者时间戳等来判断是否发生冲突。需要注意的是,在使用锁机制时,需要避免死锁和饥饿等问题的出现,同时也需要考虑锁的粒度和锁的效率等问题。分布式锁是一种用于分布式系统中的锁机制,保证在分布式环境下对共享资源的访问是原子性的。悲观锁是一种悲观的思想,认为在并发访问中,数据的冲突是很常见的,因此需要在访问数据时加锁,避免其他线程同时修改数据,保证数据的一致性。

2023-06-10 21:00:00 478

原创 用Java实现图片转文字的功能具体流程

在Java中,我们可以使用Tesseract OCR或其他OCR库来实现图片转文字的功能。然后,我们创建了一个Tesseract实例,并设置了Tesseract OCR引擎的数据路径和要识别的语言。在使用Tesseract OCR时,需要先安装Tesseract OCR引擎并设置环境变量。代码中,我们使用Tesseract OCR将image.png文件中的文字识别为文本,并将文本输出到控制台。需要注意的是,使用Tesseract OCR需要安装Tesseract OCR引擎,并设置环境变量。

2023-06-10 20:30:00 1681

原创 Java中实现PDF转图片功能工具类代码详解

在 convert() 方法中,我们使用 PDFBox 库加载 PDF 文件,创建 PDF 渲染器,并将每一页 PDF 转换为 BufferedImage 对象。在 main() 方法中,我们定义了一个 PDF 文件路径和一个图片文件路径,并调用 convert() 方法将 PDF 转换为图片。总之,EOFException 通常是由于读取操作已经完成,但仍然尝试继续读取数据而引起的,需要在读取数据之前检查文件或流是否已经到达结尾,以避免该异常的发生。读取文件时到达了文件的结尾,但还继续尝试读取数据。

2023-06-09 19:30:00 3036

原创 MySQL中的TIMESTAMPDIFF函数

TIMESTAMPDIFF函数将返回datetime2减去datetime1之间的差异,以unit指定的单位为基础。例如,如果unit为MONTH,则函数将返回datetime2和datetime1之间的月数差异。datetime1和datetime2参数是表示日期/时间的表达式,可以是日期、时间或日期时间类型,也可以是这些类型的字面值或变量。TIMESTAMPDIFF函数是一个MySQL日期/时间函数,用于计算两个日期/时间之间的差异。其中,unit参数是一个字符串,表示计算结果的单位。

2023-06-06 23:30:00 1172

原创 OCR(Optical Character Recognition,光学字符识别)技术详解

在计算机视觉和人工智能领域,OCR 技术是一个非常重要的应用,它可以帮助我们自动化处理文本信息,提高工作效率。最后,我们使用 Tesseract OCR 库进行文本识别,并将识别结果打印出来。要处理图像,我们需要使用 Java 中的图像处理库,例如 OpenCV 和 Java Advanced Imaging(JAI)。总之,OCR 技术是一种非常有用的技术,可以帮助我们自动化处理文本信息。使用 Java 和 Tesseract OCR 库,我们可以轻松实现 OCR 技术,并将其应用于各种领域。

2023-06-06 23:30:00 1181

原创 Guava缓存详解

在这个例子中,我们创建了一个CacheLoader对象来加载缓存数据,然后使用CacheBuilder对象设置了缓存的参数和策略,并调用build方法创建了一个Cache对象。创建一个CacheBuilder对象来设置缓存的参数和策略。Guava缓存是Google Guava库中的一个组件,它提供了一个简单而强大的缓存实现,可以用于缓存频繁访问的数据,从而提高应用程序的效率和性能。总之,Guava缓存为我们提供了一个非常方便和高效的缓存实现,可以在提高应用程序的效率和性能方面发挥重要作用。

2023-06-05 22:00:00 738

原创 String类中常用的方法

replaceAll(String regex, String replacement):用指定的替换字符串替换与正则表达式匹配的字符串。lastIndexOf(String str):返回字符串中最后一次出现指定字符串的位置。indexOf(String str):返回字符串中第一次出现指定字符串的位置。concat(String str):将指定字符串连接到当前字符串的末尾。split(String regex):将字符串拆分成子字符串数组。length():返回字符串的长度。

2023-06-05 20:30:00 496

原创 Node.js技术简介及其在Web开发中的应用

在Web开发中,Node.js的应用越来越广泛,许多知名企业都使用Node.js构建了自己的应用程序。非阻塞I/O:Node.js采用非阻塞I/O模型,能够在等待I/O操作完成时处理其他请求,避免了浪费CPU等待I/O操作的时间,提高了应用程序的性能。事件驱动:Node.js采用事件驱动的方式来处理请求,能够在处理完一个请求后立即处理下一个请求,提高了应用程序的并发处理能力。单线程:Node.js采用单线程的方式来处理请求,不需要为线程间的切换、同步、锁等问题付出额外的开销,提高了应用程序的性能。

2023-05-30 19:30:00 1336

原创 SpringBoot项目开发中常用的依赖详解

通过引入Bitwalker依赖,可以在Spring Boot项目中方便地使用Bitwalker提供的BT下载客户端功能,例如下载种子文件、解析种子文件、下载文件等。通过引入Jsoup依赖,可以在Spring Boot项目中方便地使用Jsoup提供的HTML解析和操作功能,例如从HTML文档中提取数据、修改HTML文档等。通过引入Guava依赖,可以在Spring Boot项目中方便地使用Guava提供的各种工具类和函数,例如集合操作、字符串处理、缓存等。

2023-05-30 19:00:00 1916

原创 JavaScript 编程中DOM和BOM操作的详解及区别

DOM(文档对象模型)和 BOM(浏览器对象模型)是 JavaScript 编程中常用的两种操作对象模型。总之,DOM 和 BOM 对于开发者来说都是非常重要的对象模型,开发者需要理解它们的用法和区别。location 对象代表了包含当前文档的浏览器窗口的位置。DOM 可以很容易地查询和修改 HTML 文档的元素和属性,而 BOM 对浏览器的访问大部分是只读的,BOM 中的属性和方法仅允许浏览器本身使用。DOM 主要处理 HTML 文档的结构和内容,而 BOM 处理浏览器窗口的属性和行为。

2023-05-26 21:00:00 942

原创 Java中自定义注解

注解是一种元数据,可以被添加到Java代码中的任何元素上,包括类、字段、方法、参数等。在Java中,注解以 @ 符号开头,后跟注解名称和可选的注解参数。这里我们定义了一个名为 MyAnnotation 的注解,它唯一的属性为 value,类型为字符串类型,并且设置了默认值为空字符串。参数校验:可以自定义一些参数校验的注解,例如 @NotNull、@NotBlank等,来提高代码的健壮性。总之,自定义注解可以使我们的代码更加简洁、明了、易于维护,提高了代码的可读性和可维护性。四、自定义注解的应用场景。

2023-05-24 23:15:00 5643 2

原创 @Autowired和@Resource的区别详解

需要注意的是,在 Spring 5.1 及以上版本,@Autowired 和 @Qualifier 存在一个新的特性——默认注解值(Default Annotation Values)。即当按照类型进行注入时,可以通过 @Qualifier 注解的默认值来指定具体的 Bean 名称。对于 @Autowired,它按照类型进行依赖注入,如果有多个同类型的 Bean 则需要使用 @Qualifier 来区分。需要注意的是,在默认情况下,@Autowired 会按照类型进行依赖注入。

2023-05-10 22:30:00 583

原创 java小游戏之扫雷

System.out.println("当前雷数:" + remainingMines);System.out.println("输入不合法,请重新输入!System.out.println("请输入行列坐标(用空格分隔):");// 已经翻开的方块。System.out.println("很遗憾,你输了!System.out.println("恭喜你,你赢了!// 翻开指定位置的方块,并判断游戏是否结束。// 设置数字(表示周围的雷数)

2023-05-06 22:45:00 817

原创 HashMap基本知识详解

HashMap 是非线程安全的,如果多个线程同时对其进行操作,可能会导致数据不一致或者抛出异常。HashMap 是基于数组和链表(或红黑树)实现的。具体来说,HashMap 内部维护了一个数组,每个数组元素就是一个链表或红黑树。当哈希码相同时,会将新的键值对添加到链表或红黑树中。当 HashMap 的元素数量达到容量乘以负载因子时,就会进行扩容(默认负载因子为 0.75)。HashMap 的遍历方式通常有三种:使用迭代器、使用 keySet() 方法、使用 entrySet() 方法。

2023-05-03 21:45:00 700

原创 Linux环境下使用docker中拉取Mysql并配置过程

上述命令将会启动MySQL容器内部的一个命令行界面,并以root用户身份登录MySQL服务。此时,系统会提示你输入密码,输入之前设置的密码即可。上述命令中,"-v"参数用来将本地路径"/path/to/local/data"映射到MySQL容器内部的"/var/lib/mysql"目录。上述命令会在Docker中启动一个名为"some-mysql"的MySQL容器,并将root用户的密码设置为"my-secret-pw"。等待MySQL容器启动完成后,你可以使用以下命令来进入MySQL容器的命令行界面。

2023-04-27 22:28:34 525

原创 Java中集合的基本使用及代码详解

Java中的集合(Collection)是一组对象的容器,它们可以让开发者更方便地对一组对象进行管理和操作。集合框架提供了丰富的数据结构和算法,包括List、Set、Map等常用集合类型,以及其它一些实用的工具类,如Arrays、Collections等。Java集合主要分为两大类:Collection和Map。而Map是一组键-值对(Entry)的容器,用于存放和操作一组具有映射关系的键值对。输出:[apple, banana, orange]输出:[banana, orange, apple]

2023-04-25 20:30:00 747

原创 TCP的三次握手、四次分手详解

TCP的三次握手和四次分手是TCP连接建立和关闭的过程。

2023-04-24 22:30:00 1207

原创 SpringBoot常用注解说明

Spring Boot 是一个基于 Spring 框架的轻量级应用程序开发框架,使用注解可以简化配置,并提高代码可读性和可维护性。是一个基于 URL 映射的注解,用于将 HTTP 请求映射到控制器方法上。它可以定义 URL、请求方法、请求参数等信息,并支持通配符和正则表达式。在方法执行期间,如果发生异常,则 Spring Boot 会自动回滚事务。它可以将配置文件中的属性值注入到 Java 类的成员变量上,例如数据源连接信息等。这个注解用于声明 REST 风格的控制器。的 Bean 注入到需要的地方。

2023-04-23 14:00:09 1109

原创 Mybatis自动填充时间的配置类

其中,insertFill() 方法用于处理插入操作时自动填充创建时间,updateFill() 方法则用于处理更新操作时自动填充更新时间。这些方法中,第一个参数 metaObject 表示要处理的对象,第二个参数 propertyName 表示要填充的属性名称,第三个参数 propertyType 表示要填充的属性类型,第四个参数 fieldVal 则表示要填充的属性值。下面是一个简单的 MyBatis 自动填充时间的配置类,示例中默认使用 UTC 时区,可以根据实际需要进行修改。

2023-04-22 23:41:45 1516

原创 Java小游戏之石头剪刀布

这是一个基于Java语言编写的控制台应用程序,用于实现石头、剪子、布游戏。玩家可以与计算机进行比赛,在输入自己的选择后,程序会随机生成一个选项来进行比较,根据规则判断胜负,并输出结果。

2023-04-19 23:00:00 2197 1

原创 Java小游戏之猜数字

这是一个基于Java语言编写的控制台应用程序,它实现了一个猜数字游戏。程序会随机生成一个0~100之间的整数,玩家需要通过不断猜测数字来找出答案。程序会提示每次猜测的结果,例如“你猜的数字太大了”、“你猜的数字太小了”、“恭喜你,猜对了!

2023-04-19 21:00:00 2777

转载 【Git】 在IDEA中配置Git

【Git】 目前主要更新Git,一起学习一起进步。本期主要介绍常用命令大全。

2023-04-19 18:30:00 2218

原创 Eureka和Nacos的区别代码详解

Nacos与Eureka最大的不同在于其支持更多的语言和功能特性,例如动态配置管理、服务路由、流量控制等。此外,Nacos采用Raft协议来保证数据的一致性,而Eureka则采用异步拉取方式进行数据同步。Nacos是阿里巴巴开源的服务发现、配置管理和服务治理平台,支持多语言,并提供了动态配置管理、服务路由、流量控制等功能。Eureka是Netflix开源项目,主要面向Java服务进行服务注册和发现,实现了简单的负载均衡和故障转移等功能。

2023-04-18 15:42:56 287

原创 VUE基本使用详解

Vue.js 是一个流行的前端 JavaScript 框架,它被设计用于构建单页面应用程序(Single Page Application,SPA)及开发大型复杂 Web 应用。响应式数据:Vue.js 中的数据对象可以双向绑定,当数据发生变化时,视图也会跟着更新。这种响应式的数据绑定,使开发者可以轻松构建动态交互效果。组件化开发:Vue.js 将应用程序拆分成多个小组件,每个组件都可以包含自己的 HTML、CSS 和 JavaScript 代码,并且组件之间可以嵌套和通信。

2023-04-18 14:28:15 2552

原创 Java 中常见的排序算法

堆排序是一种基于完全二叉树的排序算法,它的基本思想是:将数组构建成一个最大堆(或最小堆),每次将堆顶元素和堆底元素交换位置,然后将除了已经排好序的元素外的部分重新构建成最大堆(或最小堆),重复以上步骤。插入排序是一种简单直观的排序算法,它的基本思想是:将指针左边部分视为已排序部分,右边部分视为未排序部分,每次取未排序部分的第一个元素,找到它在已排序部分中应该插入的位置,将其插入。选择排序是一种简单直观的排序算法,它的基本思想是:每次选择当前未排序部分中的最小值,放到已排序部分的末尾。

2023-04-17 15:36:37 812

空空如也

空空如也

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

TA关注的人

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