- 博客(133)
- 收藏
- 关注
原创 Java多款线程池,总有一款适合你。
多线程无疑会提升我们程序的效率,但是其参数选择非常重要,必须要结合线程池清楚ThreadPoolExecutor的7个参数,合理选择参数才能够安全使用。希望本篇文章能增加你对多线程的理解。
2023-08-14 15:03:28 184
原创 Java源码解析-重点集合框架篇
本文讲解了重点的集合框架,从源码的层面和数据结构的层面进行了详细分析,通过本文的学习,希望大家对集合框架有一个细致的了解。接下来我会更新常用的并发容器,结合多线程的知识进行分析。
2023-08-07 08:45:48 825
原创 Mysql索引
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护看满足特足查我算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。已上面的聚集索引和二级索引为例:当我们执行这条sql的时候,会先去二级索引找到对应的主键索引值,然后通过这个索引值去聚集索引内查询对应的数据,这个过程就叫做回表查询。
2023-07-14 19:58:54 286 1
原创 Java中的池化思想
最近接触到了很多池,例如 对象池、数据库连接池、线程池、等等,今天来总结一下这多种不同的池,体现的池化思想,希望通过这篇博客,大家能了解到什么是池化思想,学会应用池化思想。在Java中,池化思想是一种通过创建和管理可重复使用的对象池来提高性能和资源利用率的编程思想。它的核心概念是在需要时从池中获取对象,而不是每次都创建新的对象,使用完毕后将对象返回到池中,以供其他代码复用。通过使用池化思想,可以避免不必要的资源创建和销毁操作,减少系统开销,提高程序的性能和可伸缩性。
2023-05-26 17:23:56 1210 2
原创 深入理解Spring事务机制
本文系统的总结了Spring中事务的不同种类、隔离级别、传播机制、声明式事务实现原理、还总结了4中可能导致事务失效的场景,希望读者读完之后能明确事务的原理,并且在使用中避开常见的可能导致事务失效的坑。
2023-08-21 17:16:28 283
原创 Mysql常用三大引擎
本文讲解了Mysql的体系结构,在清楚了存储结构的基础上,讲解了有引擎层的三种存储引擎,分析了三种引擎的优劣。希望大家通过此篇文章可以了解到什么是Mysql的存储引擎,其在整个Mysql体系中起到的重要作用。
2023-07-20 10:41:15 211
原创 Mysql事务
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。在Mysql总,事务是自动进行提交的,每一条sql都是一个事务。当然我们也可以根据业务进行事务控制。例如:用户A向用户B进行转账2000。首先查询A是否有2000元,然后A账户减少2000元,B账户增加2000元。这是3次数据库操作。将这三次作为一个工作单位,如果某次操作失败,则回滚事务。本文介绍了MySQL中的事务及相关内容。
2023-07-20 08:16:35 286
原创 Mysql表锁与行锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂本文介绍了MySQL中的锁机制,并讨论了全局锁、表级锁和行级锁的概念、使用方法和特点。全局锁是对整个数据库实例加锁,常用于全库的逻辑备份,以获取一致性视图,保证数据的完整性。
2023-07-18 20:02:10 2425
原创 JVM知识扫盲篇
类加载子系统主要分为三个步骤,分别是 加载、链接、初始化。其中链接最为重要。链接主要分为三个部分,分别是 验证、准备、解析。这里重点解释一下什么叫做:“将符号引用解析为直接引用”。在Java里,Java类和其成员都表示为 符号引用。不涉及到具体的内存地址或者方法指针。当Java程序在JVM上运行的时候,符号引用要被解析为直接引用,以便在运行的时候可以正确的找到对应的类、方法、字段。类名+对应的类加载器实例。
2023-06-30 09:36:56 700 1
原创 一文带你了解Java的I O机制
本文给出了I/O和N/IO的具体概念和示例。大家感兴趣可以将代码复制到本地,跑一跑,尝试运行。通过调试的方式,理解java的I/O的使用。
2023-06-24 10:51:32 264
原创 若依权限系统分析(前后端分离版)
通过自定义状态,定义应该交由vuex进行保存的状态import {//各种状态 state : {//获得权限token AUTH_TOKEN :(state , token) => {console . log("userData" , userData) //提交相关的状态 commit('AUTH_TOKEN' , userData . token);console . log("用户状态已提交");resolve();
2023-06-17 11:42:02 1505 1
原创 基于RBAC实现权限系统
RBAC 是 Role-Based Access Control(基于角色的访问控制)的缩写。它是一种访问控制模型,用于管理和控制系统中的用户访问权限。在 RBAC 模型中,访问权限是通过角色来授权的。每个角色被分配给一个或多个用户,而每个角色具有特定的权限和访问级别。通过将权限与角色相关联,可以简化权限管理,并在需要时轻松地对用户的权限进行更改。RBAC 的核心思想是将权限的授权从用户直接关联到角色,从而提高系统的安全性和管理灵活性。
2023-06-13 11:08:42 1517
原创 SpringData进阶篇-下
JPQL是一种基于对象模型的查询语言,用来在Java持久化框架执行数据库操作,这里我们直接给出对应的实例,展示如何使用JPQL进行数据操作上文给出了两种指定参数的方法,第一种是通过?加索引的方式,第二种是通过@Param指定参数名的方式。如果是增删改操作,需要在生命的查询方法上添加@Modifying,告诉jpa这个一个修改语句,并且还要在业务层添加 @Transactional注解,保证操作的事务性本文我们讲述了SpringData的多种查询方式,以及设计到多表之间如何进行关联,关联之后的数据操作。
2023-06-07 10:37:22 468
原创 SpringData 进阶篇-上
本篇为SpringData系列文章的第二篇文章,我们在第一篇文章里,讲述了什么是Jpa,Jpa与hibernate、MyBatis的关系,并且给出了相应的示例,让读者们宏观的了解到SpringData,与之前知识进行关联。本文将会从配置开始,介绍如何在我们的项目中使用SpringData,并且会给出其提供的Repositories的使用方法,编写一些简单的CRUD代码。希望通过本文,读者可以学会SpringData的基础使用~
2023-06-03 15:50:49 513 1
原创 SpringData 基础篇
Spring Data是Spring Framework的一个子项目,它提供了一种简化数据访问层的方式。它的目标是提供一种统一的、易于使用的编程模型,用于与不同类型的数据存储进行交互,包括关系型数据库、NoSQL数据库、图数据库等。本文主要讲解了SpringData的基本概念,以及什么是JPA,JPA与我们熟知的Hibernate、MyBatis之间的关系。
2023-06-02 17:44:52 710 1
原创 静态代理与动态代理
本文给出了静态代理和动态代理的分析,并且给出了对应示例。通过这样的方式,大家可以更好的理解,什么是静态代理,什么是动态代理。了解概念,有助于我们更好的选择对应的方式。
2023-05-23 10:48:13 704
原创 什么是容器
本文总结了Java中的容器概念和相关的API类图。容器是一种数据结构,用于存储和组织其他对象,并提供了各种操作方法。Java提供了多种容器类,包括Collection、Set、List和Map等。在容器API类图中,Collection代表一个容器集合,是Java集合框架的基础接口。Set是存储唯一元素的集合,不允许重复,并提供了高效的查找和删除操作。常见的Set实现类有HashSet、TreeSet和LinkedHashSet。
2023-05-19 08:50:21 1285 5
原创 springCloud使用maven
Maven是一个Java项目管理和自动构建工具。它使用基于XML的配置文件来定义项目的结构和依赖关系,并使用这些信息来自动生成项目的构建脚本。Maven可以自动下载所需的依赖项并将它们添加到项目的classpath中,还可以自动生成项目文档和报告,并且可以与许多其他工具集成。通过使用Maven,开发人员可以更加专注于编写代码,而不必担心配置文件和依赖项管理等问题。Nexus是一个开源的仓库管理器,它用于管理软件构件和依赖项。
2023-05-19 08:13:22 1472 2
原创 软考算法-算法篇
我们的代码实现了一个经典的二分查找算法,使用递归的方式进行查找。在 main 方法中定义了一个数组 nums 和一个目标数字 targetNumber,然后调用了 binarySearch 方法进行查找,并输出查找结果。binarySearch 方法是一个递归函数,用于在已排序数组 nums 中查找目标数字 targetNumber。函数参数中的 beginIndex 和 endIndex 表示查找区间的起始下标和结束下标,nums 表示给定的已排序数组。
2023-05-19 08:09:31 1539 2
原创 如何批量查询自己的CSDN博客质量分
不将就是发现的原动力。将自己的url地址一个一个的CV到CSDN给的查询博客质量分的界面上也可以查询自己的博客质量分。如果我选择了将就,那我就不会研究如何去通过代码实现批量查询自己的博客质量分的功能,也就少去了一个学习的机会,学习RestTemplate怎么使用,怎么导出Excel表的机会。大家可以通过这篇文章,批量查询自己的博质量,帮助我们修改我们原有博客的平均质量。
2023-05-13 09:19:31 2822 9
原创 MyBatis系列-映射器XML篇
这是我的MyBatis系列的第二篇文章,MyBatis的XML映射,这篇文章将会详细的讲述MyBatis中的XML的映射,这篇文章将会从简单到复杂,从常用到不常用,详细的介绍XML对应的映射。希望通过此篇文章,能让您了解到MyBatis的各种XML映射,学会如何在项目中更好的应用MyBatis,降低成本,提高效率。在 MyBatis 中,XML 映射器是一种将 SQL 语句与 Java 方法进行映射的方式。
2023-05-11 08:41:19 1582 7
原创 软考算法-排序篇-下
冒泡排序的时间复杂度为O(n²)在冒泡排序中,只需要使用一个临时变量来交换两个元素的值,所以空间复杂度是常量级别的,即O(1)。无论输入的数据规模大小如何,所需的额外空间都是固定的,与输入规模无关。冒泡排序是一种原地排序算法,可以对原始数组进行排序,不需要使用额外的空间。快速排序的核心是一直选出一个应该放到指令位置的数据,在我们这里体现的就是选择的基准数据。快排也属于一种交换排序,相对于冒泡排序而言,其效率更高。快排的时间复杂度为O(nlogn) ~ O(n^2)
2023-05-06 11:28:11 456 6
原创 计算机必读基础书籍
最近在搞计算机基础的学习。一共学习了5本书。分别是 计算机组成、操作系统、编译原理、计算机网络原理、数据库。这几本书在自考与软考的时候,都进行过相应的学习,这次算是一个回顾,系统的回顾了这些基本的计算机数据。一直从硬件的构成,学到了与硬件交互的操作系统。从操作系统学到了编译高级语言与底层交互的编译原理,从编译原理学到了上层的数据库软件。从上层的数据库软件又学到了多个计算机之间交互的网络原理。介绍计算机系统的基本概念、发展历程和结构层次,阐述计算机系统的组成和功能。介绍编译器的基本概念、功能和流程。
2023-05-02 14:39:21 1954 3
原创 软考算法-排序篇-上
上述给出了直接插入排序的算法分析与实例。直接插入排序算法在最好情况下(数据完全有序)时间复杂度为O(n),最坏的情况下(数据无序)为O(n²)。此算法属于比较简单的算法。希望大家通过我的博客能够理解此算法。希尔排序是一种不稳定的排序算法。其时间复杂度约为O(n¹·³),在排序过程中需要一个元素的辅助空间用于元素值交换,空间爱你复杂的为O(1)。相对于直接插入排序而言,希尔排序的时间复杂度更低,效率更高,对于大规模数据排序更加适用。直接选择排序的时间复杂度为 O(n^2),其中 n 是待排序数组的长度。
2023-04-29 20:37:36 845
原创 HTML5基础知识总结总结(详细,附带源代码)
HTML全称为超文本标记语言,是一种标记语言。由一系列标签构成,这些标签将分散的Internet资源链接成为了一个整体。HTML从1993年至今,已经发展了五代,我们这里主要分享的为HTML5。以上为我的html基础知识分享,希望对您有所帮助~。
2023-04-27 08:03:11 1481 1
原创 MyBatis系列-入门篇
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。上文给出了如何使用普通的maven项目或者使用Springboot项目来进行MyBatis的使用。大家可以先按照上文所述,准备好对应的例子。
2023-04-25 09:41:41 529
原创 Java泛型-语法与常用实例
在Java中,泛型是一种参数化类型的机制,它可以让类、接口、方法在定义时使用一个或多个类型参数,这些类型参数可以在实例化时被具体的类型所代替。总之,Java中的泛型是一种非常强大和有用的机制,它可以提高代码的可读性和可维护性,减少强制类型转换,支持代码重用,同时还可以创建灵活的数据结构,适应不同的需求。
2023-04-20 09:09:37 529 2
原创 Nacos系列-Nacos服务注册与发现
通过本篇文章相信您已经对Nacos服务注册与发现有了一定的了解。通过使用Nacos的服务注册与发现功能,可以方便地管理和调用微服务,提高了微服务架构的稳定性、可靠性和灵活性。快去按照我的代码去进行尝试吧!!
2023-04-13 22:17:04 1047 2
原创 Nacos系列-Nacos配置中心
接下来本系列博客将会整理Nacos的相关知识,主要将会涉及到 服务注册与发现、配置管理、分布式系统个、高可用和容错性、配置文件格式和解析几个方面。今天就先从配置管理讲起,看看如何使用nacos的配置管理,它能够给我们带来什么~Nacos(全名为阿里巴巴中间件 NACOS,前身为阿里巴巴注册中心和配置中心)是一款用于实现微服务架构中配置管理和服务发现的开源产品。
2023-04-13 09:04:51 751
原创 数据库查询基本语句
1:基本连接基本规则:每个目标前必须写明指定表名称FROM子句包含使用的基表where子句定义一个同等连接使用方法:SELECT A.列1,A.列2,B.列1,A.列3FROM 表1 A,表2 BWHERE A.列1=B.列12:内连接---等值连接,自动消除不匹配的行SELECT A.列1,B.列1,B.列2FROM 表1 A join 表2 BON A.列1=B.列1WHERE 条件 '可加可不加,3:外连接---返...
2023-04-11 22:11:17 483 20
原创 文件解压缩后是乱码怎么办
一:首先打开我们的控制面板,打开时钟和区域界面2:点击区域3: 根据图将系统区域时间更改为中文简体,然后重启就可以了
2023-04-11 22:09:13 11078 6
原创 什么是java回调函数
总的来说,回调函数是一种强大的编程模式,可以在 Java 中实现灵活的异步处理和解耦,但需要合理设计和使用,以确保代码的可维护性和性能。
2023-04-11 21:49:21 3222 1
原创 redis实战-缓存穿透、缓存击穿、缓存雪崩
缓存穿透指的是在缓存中无法找到需要的数据,导致每次请求都需要访问底层数据存储,从而引发数据库负载过大的情况。通常发生在恶意请求或者查询不存在的数据时。缓存击穿指的是一个原本存在于缓存中的数据过期或者被删除,而此时恰好有大量的请求同时访问这个数据,导致这些请求都无法从缓存中获取数据,而需要访问底层数据存储,从而引发数据库负载过大的情况。缓存雪崩指的是在缓存中大量的数据同时过期或失效,导致多个请求同时访问底层数据存储,从而引发数据库负载过大的情况。
2023-04-07 10:58:50 645 3
原创 redis实战---乐观锁与悲观锁
需要注意的是,悲观锁一般适用于并发量不大的场景,如果并发量较高,容易导致性能问题。因此,在实际应用中,需要根据具体情况选择合适的锁策略。
2023-04-06 06:00:00 1744 2
原创 redis实战---分布式锁--实战篇
通过本篇文章,我们了解到了如何实现redis的分布式锁。学习了如何使用Redisson进行分布式锁,并且解决了锁的续命问题。redis实战。
2023-04-04 11:46:21 773 1
原创 redis实战---分布式锁--单机篇
Redis分布式锁是一种基于Redis实现的分布式锁机制,它可以保证在分布式环境中,同一时刻只有一个客户端能够获取到锁,从而避免了多个客户端同时对同一资源进行修改的问题。接下来我将结合一个秒杀的例子讲述如果实现Redis的分布式锁。
2023-04-01 09:50:53 801 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人