自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MyBatis-Plus】之queryWrapper.apply用法

官网地址:MyBatis-Plus https://baomidou.com/

2024-02-26 16:22:27 551

原创 服务端和客户端以及前后端相关概念区分

分布式系统是指由多个独立的计算机节点或服务通过网络连接起来,共同协作完成一个共同的任务或提供服务的系统😄在分布式系统中,任务会被分布到不同的节点上进行处理,这些节点可以通过协同工作来实现更高的性能、可靠性和可扩展性。可靠性:即使部分节点出现故障,系统仍能继续运行,因为任务可以在其他节点上继续执行。可扩展性:可以容易地添加或删除节点,以适应业务增长或处理更大的负载。性能提升:通过并行处理任务,可以提高系统的处理能力和响应速度。容错性分布式系统可以通过数据备份和冗余来确保数据的安全性和完整性。

2024-02-18 14:49:46 858

原创 【leetcode】258. 各位相加(简单)题解学习

计算一个整数的各位相加的做法是,每次计算当前整数除以 101010 的余数得到最低位数,将最低位数加到总和中,然后将当前整数除以 101010。重复上述操作直到当前整数变成 000,此时的总和即为原整数各位相加的结果。数字根是一个数学属性,它是将一个非负整数的各个位上的数字相加,然后重复这个过程,直到得到的结果是个位数为止。在上面的代码中,首先处理了特殊情况,即当输入参数为 0 时,直接返回 0。,反复将各个位上的数字相加,直到结果为一位数。最直观的方法是模拟各位相加的过程,直到剩下的数字是一位数。

2024-02-18 11:20:33 284

原创 【leetcode】1281. 整数的各位积和之差(简单)题解学习

通过一个while 循环来遍历整数 n 的各位数字,每次取出最低位的数字并更新乘积和总和。最后,返回各位数字之积与之和的差值。,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。各位数之积 = 4 * 4 * 2 * 1 = 32。各位数之和 = 4 + 4 + 2 + 1 = 11。各位数之积 = 2 * 3 * 4 = 24。各位数之和 = 2 + 3 + 4 = 9。结果 = 32 - 11 = 21。结果 = 24 - 9 = 15。

2024-02-18 11:05:32 312

原创 【leetcode】206. 反转链表(简单)题解学习

这种递归实现方式代码简短,但需要注意在链表较长时可能会导致递归深度过大而引发堆栈溢出的问题。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?两个指针来遍历链表并进行倒序操作。方法来将除去头节点的子链表进行倒序处理,得到新的头节点。,请你反转链表,并返回反转后的链表。在这个简化后的代码中,我们仍然使用。指针指向前一个节点,然后更新。这个递归算法的思路是先递归调用。,从而完成节点的倒序。,即为倒序后的链表。

2024-02-06 15:42:03 460

原创 【leetcode】LCR 123. 图书整理 I(简单)题解学习

对于使用递归的方法,在每一次递归调用中,都会向链表的尾部逐步递进,因此时间复杂度为 O(N),其中 N 是链表的长度。对于使用栈辅助的方法,在遍历链表时,需要将每个节点的值存储到栈中,因此空间复杂度为 O(N)。然后,创建一个新的数组,长度为栈的大小,依次将栈中的元素出栈并存储到数组中。将给定的单链表反转,并将反转后的结果存储在一个数组中返回。在这个优化的方法中,我们先处理空链表的情况,如果链表为空,则直接返回一个空数组。记录链表的长度,同时在进行链表反转的同时,将节点值存储到数组中,最后返回该数组。

2024-02-06 11:07:15 458

原创 函数调用栈是什么

函数调用栈是什么

2024-02-05 17:22:35 562

原创 【leetcode】1512. 好数对的数目(简单)题解学习

需要遍历两次数组,第一次遍历统计每个数字出现的次数,第二次遍历计算好数对的数量。相较于暴力枚举的方法,这种方法的效率更高。有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始。次,所以它可以和其他任意一个相同的数字组成一组好数对,因此它能够组成的好数对数量就是。最后,我们遍历哈希表中的每个数字,将它们的好数对数量相加得到总的好数对数量,即为变量。总之,这句代码的作用是将当前数字能够组成的好数对数量累加到计数器上。,那么它可以和其他数字组成的好数对数量就是。

2024-02-04 10:21:34 374

原创 【maven相关问题】Could not transfer artifact ...与Transfer failed for ...报错及解决办法

提示信息是传输失败,无法传输的原因应该是出现错误的包文件夹已经缓存在本地存储库中,然后maven在经过发布的更新间隔或强制进行更新之前,不会重新尝试解析(实际上是没有从远程拉下来到本地)。根据方法一找到出错的包的路径删除对应的文件,或者直接将本地库里面这个报错的依赖对应的文件夹删掉,然后重新在右侧maven菜单中reload一下,应该就没问题了。1. 但是实际上本地仓库的包文件夹中并没有所需文件,由于本地仓库存在该文件夹,maven在下载时也不会去远程仓库下载,造成本地文件不可用。

2024-02-02 17:25:47 1276

原创 Java中的四种引用类型

Java中的四种引用类型

2024-02-01 11:14:45 456

原创 MySQL的索引下推机制

其中,UNIQUE关键字表示创建唯一索引,index_name表示索引名称,table_name表示表名,column_name表示要创建索引的列名,ASC和DESC表示升序和降序排序,默认为ASC。维护索引的统计信息:MySQL会根据索引的统计信息来选择最优的查询计划,需要定期更新和维护索引的统计信息,以保证查询性能的稳定和可靠。此外,还有Memory存储引擎,它将数据存储在内存中,具有很高的读写速度,但数据仅在服务重启前有效,适用于临时性的数据存储需求。

2024-02-01 10:15:32 711

原创 Spring相关框架中的bean及其实例化

在 Spring 框架中,实例化通常是指创建一个对象的过程。具体来说,当你在 Spring 中配置一个 Bean(即 Spring 管理的对象)时,Spring 会负责实例化该 Bean 并将其存储在容器中。定义 Bean:首先,需要在 Spring 的配置文件(如 XML 文件或 Java 配置类)中定义一个 Bean。可以通过<bean>或@Component@Service等注解来定义 Bean。配置属性。

2024-01-31 16:48:36 814

原创 URL 和 URI

URI 是一个更广泛的概念,而 URL 是 URI 的一种特殊形式,它提供了更多的细节信息来定位和访问资源。简言之,URL 是特定资源的实际位置,而 URI 是资源的标识符,可以是位置、名称或其他方式。URL 是 URI 的一种具体形式,它不仅指定了资源的位置,还包括了用于访问该资源的协议(如 http、ftp 等)和路径。相比之下,URI 是一个更通用的概念,它可以表示各种类型的资源,包括 URL。总的来说,URL 是 URI 的一种常见形式,并且在实际开发中更常用于指定资源的位置和访问方式。

2024-01-31 09:47:20 388

原创 Java中判断两个class对象是否相同

如果自定义类没有重写equals方法,不会直接对 Java 的类库产生影响。但是,在使用自定义类的某些场景下,可能会导致意外的行为或错误。以下是一些可能的影响:集合操作:如果将自定义类的对象用于HashSet或HashMap等集合中,并且没有重写equals方法,那么集合将无法正确地处理对象的相等性。这可能导致重复的对象被添加到集合中,或者在查找时无法找到预期的对象。比较操作:如果在代码中使用equals方法来比较自定义类的对象,并且没有重写该方法,那么默认情况下将比较对象的引用是否相等。

2024-01-29 11:16:48 727

原创 Java中的类加载器

在Java中,类加载器(Class Loader)是Java虚拟机(JVM)的一部分,负责将类的字节码文件加载到内存中,并转换成可执行的Java类。类加载器在Java程序运行时动态地加载类,使得Java具备了动态扩展的能力。类加载器采用了双亲委派机制(模型)(Parent Delegation Model)来实现。通过类加载器,Java程序可以动态地加载、卸载和替换类,实现了Java的灵活性和可扩展性。这种机制可以确保类的一致性和安全性,避免类的重复加载和防止核心API被随意篡改。

2024-01-29 10:37:08 250

原创 【maven相关问题】SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:

SLF4J 是一个简单日志门面(Simple Logging Facade for Java),它提供了统一的日志接口,并允许开发人员在应用程序中使用不同的日志实现(如 Logback、Log4j 等)。2. 排除冲突的库:如果你使用的构建工具是 Maven 或 Gradle,可以在相关的依赖声明中排除冲突的库。3. 解决冲突的绑定:如果你确实需要同时使用两个绑定库,可以尝试解决冲突。具体的排除操作根据你的项目和依赖配置而异,请根据实际情况进行调整。你可以尝试在配置文件中指定具体的绑定类型,以解决冲突。

2024-01-23 10:19:20 385

原创 【MyBatis相关问题】org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com...

映射文件未加载或配置错误:请检查 MyBatis 配置文件中是否正确加载了映射文件,并且映射文件的路径配置正确。绑定语句名称错误:请确保在 MyBatis 的映射文件(通常是 XML 文件)中存在名为。是 MyBatis 框架的异常,它表示无效的绑定语句。绑定语句定义了参数类型,确保传入的参数类型与绑定语句中定义的参数类型匹配。映射文件中未定义对应的绑定语句:请确保映射文件中存在名为。的绑定语句,并且该语句的命名空间为 (绑定语句的参数类型错误:如果。3. 其他未说明事项...的绑定语句,并且它位于。

2024-01-22 14:06:21 325

原创 Cookie和Session的区别

Session:Session数据存储在服务器上,客户端只会收到一个用于标识会话的Session ID(通常是一个Cookie)。Cookie:每个域名和路径下的cookie数量和大小有限制,一般每个域名下的Cookie总数不能超过20个,每个Cookie的大小不能超过4KB。保存在浏览器的cookie文件中。Session:Session可以存储任意类型的数据,以键值对的形式存储,并在服务器端进行管理。Cookie:Cookie以键值对的形式存储基本数据,可以在客户端的请求和响应中传递。

2024-01-19 10:05:52 343

原创 @RequestParam、@RequestBody和@PathVariable注解浅学

区别:@PathVariable注解用于提取URI路径中的变量值,可以在请求URL中定义占位符,通过将占位符映射到方法参数上获取对应的值。@PathVariable用于获取URL路径中的参数值,常用于RESTful风格的API。这些注解可以根据不同的需求和场景来灵活使用,以便准确地处理HTTP请求中的参数。区别:@RequestParam注解可以指定参数名,通过传递参数名获取对应的查询参数值。@RequestParam用于获取查询参数,从URL中提取;的注解,它们在不同的场景下有着不同的应用。

2024-01-19 09:50:33 445

原创 【Git相关问题】修改代码提交push时的用户名字

这个配置文件的路径一般是 C:\Users\本机用户名\.gitconfig。用记事本或编辑器打开,在[user]下即可修改用户名name或邮箱email。直接修改Git的用户配置文件。

2024-01-17 21:15:14 567

原创 【IDEA相关问题】全局搜索快捷键ctrl+shift+f与win10输入法简繁体切换冲突

1. 打开Windows设置,选择【时间和语言】,接着选择【语言】5. 在按键设置里即可找到出现冲突的热键设置。2. 选择中文(简体,中国)——【选项】4. 选择【按键】进入下一步设置界面。关闭即可使用idea全局搜索快捷键。3. 找到【微软拼音】——【选项】

2024-01-17 21:05:14 496

原创 #{}和${}有什么区别

在 MyBatis 中,和是两种不同的参数占位符语法,它们在使用方式和处理方式上有一些区别。 的使用方式: 的使用方式:总结:图片来源:#{}和${}的区别是什么?_Java_收获啦在实际使用中,根据具体的场景和需求选择合适的语法。通常情况下,应优先使用 ,除非需要动态生成 SQL 或者明确知道参数值的来源是安全可靠的情况下才考虑使用 。SQL 注入攻击是一种常见的网络安全漏洞,它利用了应用程序对用户输入数据的不恰当处理,通过在用户输入中注入恶意的 SQL 代码来实现攻击目的。SQL 注入攻击的原理是,攻击

2024-01-10 10:50:34 1130

原创 MyBatis中ResultType和ResultMap的区别

ResultMap:自定义映射规则,当查询的字段名和映射类型的属性不匹配时可以通过ResultMap自定义映射规则,也可以实现一对多、—对一映射。会根据查询结果的列名和 Java 对象的属性名进行自动映射,前提是它们的命名要相匹配。这种方式适用于简单的查询,不需要复杂的映射关系。在实际使用中,根据查询的需求和复杂度选择合适的方式来定义结果映射。指定映射类型,只要查询的字段名和类型的属性名匹配可以自动映射。,可以实现灵活的结果映射,适用于复杂的查询场景,如多表关联查询、嵌套查询等。:用于简单的结果映射,

2024-01-10 10:22:14 429

原创 MyBatis分页插件的实现原理

总结起来,MyBatis 分页插件通过拦截器拦截 SQL 执行过程,在 SQL 执行前后进行操作,实现对 SQL 的修改和结果集的截取,从而实现分页功能。在 MyBatis 的配置文件中,需要注册自定义的拦截器,并指定拦截器要拦截的目标对象(如。通过拦截这些目标对象,分页插件就可以对 SQL 进行拦截和处理,实现分页功能。拦截器可以在 SQL 执行前后对 SQL 进行拦截和处理。MyBatis 分页插件的实现原理是通过。

2024-01-10 10:17:33 364

原创 如何查询MySQL中的树型表

根据实际情况,选择适合你的数据结构和查询需求的方法进行查询树型表。递归查询适用于层级较深或者动态变化的树型结构,而嵌套集模型适用于树型结构层级较浅且不经常变化的情况。在 MySQL 中查询树型表(即具有层级结构的表)可以使用递归查询或者使用嵌套集模型。上述示例中,初始查询的是根节点的ID为1的记录,并使用递归查询将其子节点逐层查询出来。运算符来查询指定节点的子节点。

2024-01-10 10:09:45 495

原创 【maven相关问题】Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.8.1

【maven相关问题】Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.8.1

2023-12-29 16:56:32 589 1

原创 Java开发中保证接口的幂等性问题

Java开发中保证接口的幂等性问题

2023-12-24 20:12:45 751

原创 Java中集合的底层结构

例如,ArrayList底层基于动态数组实现,容量能自动增长,随机访问效率高,随机插入、随机删除效率低,线程不安全,多线程环境下可以使用Collections.synchronizedList()函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。选择合适的集合类可以根据具体的需求来决定,例如需要快速随机访问的场景可以选择ArrayList,需要去重并且无序的场景可以选择HashSet。根据实际的内存限制和需求,选择适合的集合类。

2023-12-20 19:05:07 806

原创 ping地址127.0.0.1相关学习

IP 地址由网络位和主机位组成,网络位一旦确定,可以将主机位中的一位或多位借过来当网络位,从而扩大网络。例如,192.168.1.0/24 这个网段中,192.168.1 是网络位,后面这 8 位数是主机位,如果将主机位中的一位借过来当网络位,就可以扩张成 192.168.1.x,后面几个 x 是主机位,二进制当中除了 0 就是 1。例如,对于 IP 地址 192.168.1.100,子网掩码为 255.255.255.0,则网络位为 192.168.1,主机位为 100。

2023-12-20 13:59:52 872

原创 isEmpty和isBlank的用法和区别

因此,在实际应用中,应根据具体需求选择合适的方法来判断字符串是否为空。如果需要更精确的判断条件,可以使用isblank方法。在实际开发中,需要根据具体的业务场景来选择使用isEmpty方法还是isblank方法。isEmpty和isblank都是用于判断字符串是否为空的方法,但它们的判断标准不同。方法只判断字符串是否为空字符串,只要有一个任意字符(包括空白字符)就不为空。方法来判断字符串是否为空或只包含空白字符。方法判断字符串是否为空字符串,全部空白字符也为空。方法只判断字符串是否为空或长度为0,而。

2023-12-19 22:04:09 764

原创 了解Java中的内存模型

这些机制在不同的操作系统上可能有不同的实现方式,但 Java 内存模型确保了在不同的操作系统上,Java 程序的线程间通信具有一致的行为。工作内存是每个线程独有的内存区域,用于存储该线程使用到的主内存中的变量和对象的副本。不同的操作系统可能具有不同的内存模型,例如 x86 架构上的 Intel 内存模型和 AMD 内存模型。总之,Java 内存模型是基于操作系统内存模型的,但它在更高的层次上进行了抽象和规范,以确保 Java 程序在不同的操作系统上具有一致的线程间通信行为。

2023-12-18 16:28:08 1155

原创 浅学设计模式

浅学设计模式

2023-12-18 15:46:35 912

原创 ConcurrentHashMap是如何实现线程安全的

ConcurrentHashMap是如何实现线程安全的

2023-12-18 13:36:58 397

原创 HashSet集合

HashSet集合

2023-12-18 13:21:27 839

原创 Node.js初学习

根据官网的介绍:Node.js是一个开源的跨平台JavaScript运行时环境。Node.js在浏览器之外运行V8 JavaScript引擎,这是谷歌Chrome的核心。这使得Node.js具有很高的性能。Node.js应用程序在单个进程中运行,无需为每个请求创建一个新线程。Node.js在其标准库中提供了一组异步I/O原语,可以防止JavaScript代码阻塞,并且通常Node.js中的库是使用非阻塞范例编写的,这使得阻塞行为成为例外而不是常态。

2023-12-17 23:36:52 1132

原创 冒泡排序学习

冒泡排序的时间复杂度为O(n^2),其中n是待排序数组的长度。虽然冒泡排序简单易懂,但对于大规模的数据排序效率较低,因此在实际应用中一般不推荐使用。冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复地交换相邻的元素来排序。4. 重复以上步骤,每次都将待排序的元素中最大的元素排在已排序部分的末尾。1. 从待排序的数组中的第一个元素开始,依次比较相邻的两个元素。2. 如果前一个元素大于后一个元素,则交换它们的位置。方法对数组进行排序。最后,我们输出排序后的数组。方法中,我们创建了一个整数数组。

2023-12-16 16:19:48 473

原创 大O记法了解

其中,T(n)表示算法的时间复杂度,f(n)是问题规模n的某个函数,表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称为算法的渐近时间复杂度,简称时间复杂度。例如,一个包含单个循环的算法,每次循环都会执行固定数量的操作,那么复杂度可以表示为 O(n),其中 n 是循环的迭代次数。总之,计算算法的复杂度需要分析算法的执行过程,确定关键操作的执行次数,并根据这些信息来推导复杂度表达式。在大O记法中,使用 O(f(n)) 表示算法的复杂度,其中 f(n) 是问题规模 n 的函数。

2023-12-16 15:52:14 405

原创 Java中的三元运算符

在上面的示例中,我们使用三元运算符获取了两个变量 a 和 b 中的最大值,并将结果赋值给变量 max。如果 a 大于 b,则返回 a 的值;否则返回 b 的值。最终,我们输出了变量 max 的值,即 20。三元运算符的作用是,如果 booleanExpression 为 true,则返回 expression1 的值;否则返回 expression2 的值。符,也称为三目运算符,使用问号?它可以代替一部分 if-else 语句,使代码更加简洁。Java 中的三元运算符是。

2023-12-16 14:39:38 367

原创 @RestController

在控制器类中定义处理 HTTP 请求的方法。这些方法可以使用。

2023-12-15 17:01:39 394

原创 JSON初学习

JSON(JavaScriptObject Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简言之,JSON是一种文本规范,或是一种字符串规范。

2023-12-15 12:15:37 957

空空如也

空空如也

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

TA关注的人

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