自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

luming的博客

致力于优质内容分享 Java | 数据结构 |计算机网络 | 网络安全 | 算法

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

原创 INNER JOIN、LEFT JOIN 和 RIGHT JOIN有什么区别?什么是自连接?

INNER JOINLEFT JOIN和RIGHT JOIN都是多表连接的不同方式,它们的主要区别在于它们如何处理。下面分别介绍它们的区别。INNER JOIN:左表和右表中都匹配的部分。LEFT JOIN:左表的所有部分,即使右表没有匹配,也显示 NULL。RIGHT JOIN:右表的所有部分,即使左表没有匹配,也显示 NULL。

2024-10-23 12:32:41 1313 21

原创 【零基础学懂算法】:动态规划算法

文章首先帮助读者理解动态规划中的关键概念,如“状态”和“状态转移方程”,并深入分析如何从这些概念出发解决复杂问题。接着,文章提供了清晰的做题步骤,包括如何进行状态的填表、初始化、计算以及如何从中提取最终结果,帮助读者循序渐进掌握动态规划的解题技巧。此外,文章通过一道LeetCode力扣的完整例题进行实战演示,帮助读者将理论应用于实际问题。最后,我们还对该题进行了算法优化,详细介绍了如何使用滚动数组来提升算法的空间效率,帮助读者进一步掌握优化技巧并提升编程能力。

2024-10-11 11:55:16 1821 36

原创 hutool-all依赖导入报错:Failure to transfer cn.hutool:hutool-all:pom:5.8.22 from http://maven.aliyun.com/ne

Failure to transfer cn.hutool:hutool-all:pom:5.8.22 from http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced.Ori

2024-10-11 11:54:15 1199 2

原创 Windows11安装Docker Desktop教程

首先确保虚拟化的开启,打开任务管理器后查看:确保图中的虚拟化是已启用,没有开启的需要通过BIOS进行开启,这去取决于每个人的电脑,不同的品牌操作起来不一样在设置中查找在最下方选择更多Windows功能在其中勾选下图俩个功能然后就是重启电脑确保配置生效。

2024-09-29 19:02:47 13530 13

原创 【图文详解】什么是微服务?什么是SpringCloud?

通过本篇文章你可以知道什么是微服务,什么是SpringCloud,如何选择SpringCloud,SpringCloud和SpringBoot的关系,SpringCloud都包含了些什么

2024-09-21 10:30:00 7521 44

原创 BUG解决方案:莫名报错数据库连接失败com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not all

本文是将笔者遇到数据库连接问题时的解决分析思路以及解决方案分享出来,希望对你有所帮助。com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed的解决方案。

2024-09-10 10:13:24 1900 35

原创 SpingBoot中使用Swagger快速生成接口文档

当项⽬的接⼝发⽣变更时,Swagger可以实时更新⽂档,确保⽂档的准确性和时效性。依赖引入后即可进行相应的配置,如下就是一个简单的配置示例,你可以在这个配置项中声明接口文档的名称以及相关的描述,这些描述并不是必须的,可以省略。如果你使用的是微服务的架构,为了使该配置项在其他服务中也生效,则需要声明该配置项的位置。为了使该接口文档更丰富,我们可以使用swagger为我们提供的一些基本注解来进行一些自定义的申明,以下是一些常用的注解。如下代码,就是使用了@Tag为整个Controller进行了统一的命名分组。

2024-09-06 10:00:00 1265 32

原创 Java项目怎么从零部署到Linux服务器上?

本文为Java开发者提供了一份详尽的Linux服务器部署指南。从JDK和MySQL的安装开始,逐步引导读者如何上传并运行Java项目Jar包。无论你是初学者还是希望优化部署流程的资深开发者,本文都会提供实用的步骤和技巧,确保你的Java应用在Linux环境下顺利运行。

2024-08-31 10:35:13 2187 32

原创 图文详解ThreadLocal:原理、结构与内存泄漏解析

本文深入探讨了Java中的ThreadLocal机制,揭示了其背后的核心原理和内部结构。通过图文并茂的方式,我们不仅解释了ThreadLocal的使用方法,还分析了它可能导致内存泄漏的原因,并提供了预防和解决方案。无论你是Java新手还是资深开发者,本文都将帮助你更全面地理解ThreadLocal,并在实际开发中更安全地使用它。

2024-08-21 10:00:00 8458 61

原创 【并发编程】什么是CAS?Java是如何实现CAS操作的?

在Java并发编程中,CAS 代表 "Compare-And-Swap"(交换并比较),这是一种用于实现无锁编程的原子操作。CAS操作通常用于多线程环境中,以确保在没有使用传统锁的情况下,能够安全地更新共享数据。CAS是通过CPU级别的原子指令来实现的,这意味着一个CAS操作就是一个原子操作,该操作一旦开始就不能被打断,必须等待它完成。内存值(V):这是要更新的变量的当前值。旧的预期值(A):这是执行CAS操作前,线程预期的内存值。

2024-08-21 09:30:00 1428 3

原创 Spring事务管理和事务传播机制详解

本文深入探讨了Spring框架中的事务管理机制,首先解释了事务的基本概念及其重要性。接着,详细阐述了编程式事务和声明式事务两种管理方式的区别与应用场景。特别对声明式事务中的核心——@Transactional注解进行了全面解析,包括其属性和事务传播行为,帮助开发者更好地理解和运用Spring事务管理,确保数据的一致性和完整性。

2024-08-15 09:30:00 1329 30

原创 Spring AOP应用指南:概念、通知与表达式分析

本文深入探讨了Spring AOP的核心概念,包括切点、切面和连接点,阐释了不同通知类型的优先级设置及其影响。同时,对切点表达式的编写和应用进行了详尽的解析,为读者提供了一个全面的Spring AOP实践框架。

2024-08-15 09:15:00 1136 27

原创 Spring统一功能处理:拦截器、响应与异常的统一管理

本文为Spring框架用户提供了高级应用指南,重点介绍了如何实现拦截器以增强请求处理流程,构建统一的数据响应格式以提升API的一致性,以及设计统一的异常处理机制以优化错误管理。通过实际代码示例和最佳实践,文章旨在帮助开发者提升Spring应用的健壮性与可维护性。

2024-08-05 16:54:00 2768 57

原创 牛客算法题解:牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离

本次分享牛客网的三道算法题的题解思路和源码:牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离。通过贪心的思想,我们可以优化传统的暴力解法,还是用俩个指针来记录我们要找的俩个字符串,但是不一样的是,我们只用一次循环。首先将 pre1 和 pre2 置为 -1 代表俩个指针刚开始没有指向有效元素,pre1 指向所找的第一个字符串,pre2 指向所找的第二个字符串;使用一个非常大的数来初始化 ret,当我们找到更短距离后就更新 ret。一旦开始循环遍历,我们就依次判断当前元素是否为我们想要找的元素:

2024-08-05 16:53:06 1024 1

原创 MyBatis全方位指南:从注解到XML文件的数据库操作

本文深入探讨了MyBatis这一流行的Java持久层框架,详细介绍了通过注解和XML配置两种方式实现数据的增删改查操作。首先,我们从MyBatis的基本使用讲起,包括环境搭建和配置文件的编写。随后,文章重点介绍了使用注解简化数据操作的方法,展示了如何通过注解直接在Mapper接口上定义SQL语句,以及如何通过XML文件进行更复杂的SQL操作和配置。无论是对于MyBatis的新手还是希望优化现有代码的开发者,本文都提供了宝贵的指导和建议。

2024-08-03 13:31:53 1375 14

原创 Spring中是如何实现IoC和DI的?

本文深入探讨了Spring框架中的核心概念——控制反转(IoC)和依赖注入(DI),揭示了它们如何通过一系列注解实现,例如@Controller、@Service、@Repository和@Configuration。文章详细分析了这些注解之间的内在联系与区别,并解释了它们在Spring应用中扮演的角色。此外,还对使用@Autowired进行依赖注入时可能遇到的风险进行了深入分析,旨在帮助开发者更好地理解Spring框架的工作原理,并在实际开发中避免潜在问题。通过阅读本文,读者将获得对Spring IoC和

2024-08-03 13:31:08 1451 32

原创 【Redis系列】RedisTemplate的使用与注意事项

RedisTemplate 是一个工具类,由 Spring 官方提供的方便操作 Redis 数据库的一个工具类,来源于包下。其本质属于模块下的部分,它提供了从 Spring 应用程序轻松配置和访问 Redis的功能。是通过整合Lettuce和Jedis这俩种Redis客户端产生的,对外则提供了RedisTemplate这样统一的API来供调用者访问。它既支持Luttuce的响应式编程也支持JDK中集合的实现。

2024-07-28 12:18:58 9081 45

原创 牛客算法题解:数字统计、两个数组的交集、点击消除

该题目是非常符合栈这样的数据结构的思想的,相邻的元素就进行消除,我们可以将该字符串转化成一个字符数组,将这个字符数组放进栈里面,每一次进栈一个字符,进栈的时候判断当前元素和栈顶元素是否相同,如果相同就要执行消除操作,即弹出栈顶元素并且当前元素也不入栈;对于求俩个数组的公共元素,可以通过哈希的思想,首先对其中一个数组进行哈希标记,再遍历另外一个数组的每一个元素,将其拿出来与先前标记的元素做对比,如果该数字在另外一个数组中存在哈希标记就说明他们是公共元素。其实是没必要的,我们是对字符串进行操作,使用。

2024-07-28 12:17:21 808 17

原创 什么是IoC控制反转思想?

IoC(Inversion of Control)即控制反转,这里的控制是代表控制权的意思,IoC是一种编程思想,旨在降低代码之间的耦合度、降低代码的维护成本。这种思想的具体内容就是将对象的创建和管理交给外部的容器和框架,不再是由对象的调用者去new一个对象。在这个过程中,对象的创建和管理的权力由传统的对象调用者转移到了外部的容器和框架,即对象的控制权发生了反转。

2024-07-18 15:34:18 2137 53

原创 做ACM算法题老超时?不妨试试更改输入输出方式

在许多ACM模式的在线算法平台上都有部分题会存在对输入输出的时长的限制。对于C++,使用cin和cout则会有超时的风险。如果是Java,对于这些题目如果使用Scanner和System.out的则也会有超时的风险。因为在这些ACM在线题目中,对于数据的读入都是放在一个文件里面的,当我们用Scanner去读数据的时候就会访问这个文件对应的IO设备,尤其是对于数据量很大的情况,则需要频繁的访问IO设备。我们知道频繁的访问IO设备效率是很低的,所以往往就会出现超时的问题。

2024-07-17 21:46:48 745 4

原创 一篇文章教你如何快速上手Spring MVC框架【万字详解|包含常用注解分析讲解】

首先引入官方的一段文字:Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring框架中。其正式名称“Spring Web MVC”来自其源模块(Spring -webmvc)的名称,但更常见的名称是“Spring MVC”。我们知道是⼀套开发的规范,是⼀种实现动态⻚⾯的技术。也就是说,是为了简化原有中的原生操作而产生的一套框架,并且他还有一个更常见的名称,也就是Spring MVC。要理解什么是之前,我们需要先理解什么是MVC。

2024-07-14 18:47:25 1613 44

原创 关于Cannot invoke “javax.script.ScriptEngine.eval(String)“ because “engine“ is null的俩种解决方案

在使用ArithmeticCaptcha作为图片验证码来完成用户登录的开发中,出现了报错,报错提示空指针异常:java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.eval(String)" because "engine" is null,经过排查发现问题出在在JDK更新的过程中删除了原有的nashorn 引擎,因此只需要通过pom.xml引入该引擎即可

2024-07-14 18:39:36 1831 5

原创 JVM是如何管理内存的?图文详解GC垃圾回收算法

GC是垃圾回收(Garbage Collection)的缩写,是计算机科学中一种自动化的内存管理机制。在传统的内存管理方式中,程序员需要手动分配和释放内存。而GC则可以自动跟踪和回收不再被程序使用的内存,从而减轻了程序员的负担。要注意的是,GC并不是Java独有的一种机制,现如今GC广泛应用于许多的高级语言,诸如PHP、Python、Lua、Ruby、Go... ...GC的主要原理是通过检测程序中不再被引用的对象,将其标记为垃圾,然后自动回收这些垃圾对象所占用的内存资源。

2024-07-12 13:47:40 1668 32

原创 CentOS安装Docker教程(包含踩坑的经验)

本文旨在分享如何安装配置Docker和启动Docker服务

2024-06-28 09:34:36 1142 30

原创 浙江保融科技2025实习生校招校招笔试分享

浙江保融科技2025实习生校招校招笔试分享:笔试算法题一共是有4道,第一道是手搓模拟实现一个ArrayList,第二道是判断字符串是否回文,第三道是用代码实现1到2种设计模式。

2024-06-21 09:55:57 1848 28

原创 ASN.1语言详解(编码规则、关键字、符号、数据类型)

ASN.1(Abstract Syntax Notation One)是一种国际标准(由ITU-T X.680系列建议定义),用于描述数据的结构。它主要用于定义和编码传输协议中的数据,以确保不同系统间的数据交换。ASN.1语法可用来描述各种类型的数据,包括文本、图形、视频与音频等。通常用于定义应用数据的抽象语法和PDU的结构。比如SNMP中使用ASN.1进行管理信息结构SMI的定义和管理数据库MIB的定义。ASN.1编码可用来规范数据传输过程,解决异构网络对数据理解的二义性。

2024-06-18 09:29:53 5251 31

原创 Web期末复习指南(2w字总结)

本文旨在梳理Web技术常包含的内容,阅读完整篇文章后会对整体有个系统的认知,从前端的HTML到后端的MySql,对于大概试题中可能会涉及的地方都有所分析,通篇提供了许多代码案例,供读者更好的理解。对于一些很细节的东西如DOM对象、MySql的案例等等,笔者很想继续分享下去,但是受限于篇幅的原因只能点到为止,后面会考虑继续补充,争取覆盖到全部的知识点。

2024-06-15 17:09:10 8531 56

原创 图文解析ASN.1中BER编码:结构类型、编码方法、编码实例

BER编码的基本结构由以下三个部分组成:类型域(Type)长度域(Length)内容域(Value)。类型域的前两位表示类(Class),第三位表示构造类型(Primitive/Constructed),第四至第八位表示标签号(Tag Number)。对于标签号小于 31 的情况,直接使用第4-8位。对于标签号大于等于 31 的情况,使用多个字节表示,第一字节的第4-8位全为 1,后续字节以 7 位块形式表示标签号。通过这种编码方式,BER 能够灵活地表示各种数据类型,并确保编码的准确性和可扩展性。

2024-06-13 09:00:00 3586 42

原创 计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

在TCP/IP模型中,应用层是网络协议栈中最高层的一层,负责处理网络应用之间的通信。应用层协议是应用程序直接使用的协议,因此应用层协议的设计需要考虑到应用程序的需求和特点。同时,应用层还负责将数据传输到传输层,将接收到的数据传递给相应的应用程序。

2024-06-04 16:41:48 2377 34

原创 计网期末复习指南(五):运输层(可靠传输原理、TCP协议、UDP协议、端口)

在计算机网络中,运输层(Transport Layer)是OSI(开放系统互联)模型中的第四层,它位于网络层之上,会话层之下。运输层的主要功能是为应用层提供可靠的端到端通信服务,确保数据在网络中传输的完整性和顺序性。在TCP/IP模型中向上为应用层提供通信服务,从通信和信息处理的角度上来说,运输层属于面向通信部分的最高层,同时也是用户功能中的最底层。运输层主要提供应用进程之间的逻辑通信,它与网络层的区别在于,网络层主要为主机之间通信提供服务,而运输层则在网络层的基础上,为应用进程之间的通信提供服务。

2024-06-04 16:24:41 1921 4

原创 计网期末复习指南(四):网络层(IP协议、IPv4、IPv6、CIDR、ARP、ICMP)

在计算机网络中,网络层是OSI模型中的第三层,负责数据包在网络中的传输和路由。这些概念共同构成了网络层的基础。IP地址:用于标识网络中的每个设备。IPv4地址是32位,表示为四个八位的十进制数(例如,192.168.1.1),IPv6地址是128位,用于应对IPv4地址耗尽的问题。子网掩码:与IP地址配合使用,用于确定一个IP地址的网络部分和主机部分。例如,子网掩码255.255.255.0表示前24位是网络地址,后8位是主机地址。路由:数据包从源设备传输到目标设备的路径选择过程。路由由路由

2024-06-04 14:16:40 1575 20

原创 计网期末复习指南(三):数据链路层(CRC冗余校验码计算、PPP协议、CSMA/CD协议、交换机的自学习能力、VLAN)

数据链路层(Data Link Layer)是OSI模型中的第二层,其主要职责是通过物理介质确保相邻网络节点之间的可靠数据传输。为实现这一目标,数据链路层需要解决以下三个基本问题:封装成帧、透明传输和差错检测。... ...

2024-06-03 11:52:04 1575 15

原创 Java邮件客户端设计实现:使用JavaMail向QQ邮箱发邮件

JavaMail 是一个用于发送和接收电子邮件的 Java API。它提供了一个平台无关和协议无关的框架,允许开发人员通过标准电子邮件协议(如 SMTP、POP3 和 IMAP)来创建、发送和读取电子邮件。基本概念SessionStoreTransportMessageFolderFolder。

2024-06-03 11:47:43 1213 18

原创 Java网络编程:UDP通信篇

举个点外卖的例子来说明,假如今天是疯狂星期四,小李想要点个肯德基的芝士汉堡,DatagramSocket就相对于是肯德基的大门以及小李家的大门,DatagramPacket就相对于是外卖小哥,小李点的汉堡等食品就相对于是要传输的数据,当肯德基做好汉堡后,外卖小哥通过肯德基的大门的地址信息(DatagramSocket)拿到汉堡(DatagramPacket),然后由外卖小哥将食品包装好,到小李家楼下后通过小李家的门牌号的信息(DatagramSocket)找到小李,并且将汉堡交付给小李。

2024-05-29 10:47:17 3193 52

原创 Web上机:JSP+Servlet+JDBC的交互流程

要求用户从前台界面输入基本信息,并且做基础的校验,验证无误后将数据插入数据库,再从数据库中查询所有的数据,最后再呈现到前台页面。Web开发技术迭代速度日新月异,对于技术的更新往往是基于底层一步步封装简化,因此掌握一些基础的传统的开发技术还是有必要的。传统的JavaWeb开发通常使用Java Servlet、JavaServer Pages(JSP)、JavaBeans等技术来开发Web应用程序。

2024-05-27 09:30:00 911 50

原创 万字总结Linux常用命令(包含命令的用法、参数、使用示例)

本文按照命令的使用类型和场景进行了分类,包含了 常见的命令的用法、对应参数的详解、具体的使用案例。1. 文件和目录管理命令:ls:列出目录内容。cd:更改当前目录。pwd:显示当前工作目录。mkdir:创建新目录。rmdir:删除空目录。rm:删除文件或目录。cp:复制文件或目录。mv:移动或重命名文件或目录。touch:创建空文件或更新文件的时间戳。find:查找文件或目录。2. 文件内容查看和编辑命令:cat:连接并显示文件内容。less:逐页查看文件内容。more:逐页查看文件内容(功能较少)。

2024-05-22 12:38:58 4242 46

原创 计网期末复习指南(二):物理层(物理层的任务、香农公式、常用信道复用技术)

在计算机网络中,物理层是网络体系结构中的第一层,负责传输原始比特流(即 0 和 1)以及物理连接的细节。物理层的主要任务是定义传输数据的方式,包括电压、光强、频率等,并规定了连接器和线缆的规范。物理层确保从一个设备到另一个设备的比特流能够在传输媒介上正确地传输,而不关心这些比特的含义或者是什么样的数据... ...

2024-05-22 12:36:50 1001 2

原创 计网期末复习指南(一):计算机网络体系结构 (计算机网络的组成、TCP/IP体系结构)

计算机网络按照作用范围可以分为以下几种主要分类:局域网(LAN,Local Area Network):局域网是指覆盖在较小范围内的网络,通常局限于单个建筑物、办公室或校园等小范围内。局域网通常采用高速以太网技术,并且由单个组织或个人管理和控制。城域网(MAN,Metropolitan Area Network):城域网是介于局域网和广域网之间的网络,覆盖范围在几十公里到几百公里之间。城域网通常连接多个局域网,用于连接城市内的不同地点。广域网(WAN,Wide Area Network):广域网...

2024-05-17 09:30:00 2158 39

原创 一图流解释Java中线程状态的转换

当线程对象被创建时,它处于新建状态。此时线程还没有开始执行。当线程对象被创建后,其他线程调用了该线程的start()方法,该线程进入就绪状态。处于就绪状态的线程可能正在等待CPU时间片,一旦获取到CPU时间片,就可以执行。线程获取到CPU时间片后,开始执行任务,处于运行状态。线程在某些情况下会进入阻塞状态,如调用sleep()方法、等待I/O操作完成、试图获取锁时被其他线程获取等。在这些情况下,线程暂时停止执行。线程进入等待状态是因为调用了wait()方法或类似的方法,该状态下线程会等待其他线程显式地唤醒。

2024-05-15 09:30:00 1698 23

原创 图文详解JUC:Wait与Sleep的区别与细节

wait() 和sleep() 是Java中用于线程控制的两个不同方法:wait()方法属于Object类,因此只能在同步代码块或同步方法中调用,并且必须通过持有对象的锁来调用。sleep()方法是Thread类的静态方法,可以在任何地方直接调用。在调用wait()方法时,线程会释放对象的锁,并进入等待状态,直到被其他线程调用notify()或notifyAll()唤醒。调用sleep()方法时,线程不会释放锁,它只是暂时放弃CPU的执行权,但其他线程依然无法访问该线程持有的锁... ...

2024-05-15 09:00:00 1138 6

空空如也

空空如也

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

TA关注的人

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