自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL的事务与锁

答:数据库事务()是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。MVCC(multiple version concurrent control)是一种控制并发的方法,主要用来提高数据库的并发性能。在了解MVCC时应该先了解当前读和快照读。当前读:读取的是数据库的最新版本,并且在读取时要保证其他事务不会修该当前记录,所以会对读取的记录加锁。快照读。

2023-03-14 19:59:34 86

原创 MySQL的索引

索引是对数据库表的一列或者多列的值进行排序的一种数据结构,使用索引可以快速访问数据表中的特定信息。答:聚簇索引和非聚簇索引最主要的区别是数据和索引是否分开存储。聚簇索引:将数据和索引放到一起存储,索引结构的叶子节点保留了数据行。非聚簇索引:将数据进和索引分开存储,索引叶子节点存储的是指向数据行的地址。在InnoDB存储引擎中,默认的索引为B+树索引,利用主键创建的索引为主索引,也是聚簇索引,在主索引之上创建的索引为辅助索引,也是非聚簇索引。

2023-03-13 13:15:50 78

原创 启动Spring Boot项目时报错: mapping values are not allowed here

当项目报错冒号后面必须要有空格,没有则报错;注意同级属性放在同一层,不能多tab;

2023-03-12 12:20:25 3578 1

原创 MySQL基础问题

子查询就是把一个查询的结果在另一个查询中使用。标量子查询:指子查询返回的是一个值;列子查询:指子查询的结果是n行一列;行子查询:指子查询返回的结果一行n列;表子查询:指子查询是n行n列的一个数据表;答:MySQL在执行SQL语句的时候会临时创建一些存储中间结果集的表,这种表被称为临时表,临时表只对当前连接可见,在连接关闭后,临时表会被删除并释放空间。内存临时表使用的是MEMORY存储引擎;磁盘临时表使用的是MyISAM存储引擎;FROM中的子查询DISTINCT查询并加上。

2023-03-10 18:40:59 368

原创 TCP的三次握手与四次挥手

TCP三次握手四次挥手面试题精选

2023-03-08 21:35:04 1775 5

原创 【项目实战】项目中统一异常处理怎么做?

如果你想要更细粒度地处理不同类型的异常,你可以自定义异常类,并在全局异常处理器中使用@ExceptionHandler方法来处理这些自定义异常。当实现自定义异常类。

2023-03-06 20:11:29 468

原创 Object类源码学习

基于JDK1.8阅读源码。

2023-03-05 20:37:04 410

原创 ConcurrentHashMap源码阅读

使用了一种分段锁的机制,内部维护了一个由Node节点组成的数组,每个节点包含一个键-值对。数组的每个元素称为一个"段",每个段都是一个独立的哈希表,有自己的锁。每个段中的节点使用链表或红黑树来解决哈希冲突。通过使用分段锁(Segment)来实现并发控制。每个段具有自己的锁,不同的段可以独立地进行读写操作,以提高并发性能。这种设计在多线程环境下减少了锁的竞争范围。使用sync数组来存储段的锁。在进行操作之前,首先根据键的哈希值获取对应的段,然后获取该段的锁。

2023-03-03 19:36:31 225

原创 【Sa-Token】Spring Boot项目中使用Sa-Token框架

本篇介绍的是Sa-Token的使用

2023-03-02 14:58:43 874

原创 HashMap源码学习

HashMap底层原理学习

2023-03-01 15:19:31 671

原创 【项目实战】Spring Boot项目抵御XSS攻击

作为Web网站来说,抵御XSS攻击是必须要做的事情,这是非常常见的黑客攻击手段之一。XSS意思是跨站脚本攻击,英文全称Cross Site Scripting,为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS攻击的手段很简单,就是通过各种手段向我们的Web网站植入JS代码。

2022-11-22 08:36:22 3135 13

原创 【项目实战】Spring Boot项目整合Jetty、MySQL、Redis和MongoDB

在高并发的WebSocket环境下,Jetty比Tomcat更加适合,所以我们需要把Tomcat替换成Jetty。

2022-11-09 14:47:57 2122 7

原创 我的创作纪念日

一转眼我已经在CSDN创作一年了,简单总结一下这一年

2022-10-09 17:45:46 469 17

原创 巧用异或运算

大多数人认为异或运算只是数学上的概念,在程序编写方面只不过是两个符号而已。在关于算法上面就会懒得去练习异或,看见相关题目课程也会选择性的跳过,其实这只是因为你并不了解异或真正的作用,当然你也就不会知道它真正的用法。接下面由本篇文章,带你了解异或以及它的用法!这些题目都是在面试中经常出现的相关题目,大家务必进行仔细揣摩,力求掌握!

2022-10-04 10:33:30 583 2

原创 【SpringDoc】项目中使用SpringDoc管理与测试接口

SpringDoc是一个用于生成和展示API文档的开源库,它基于Spring Boot和OpenAPI规范。它提供了一种简单而强大的方式来自动生成API文档,并且与Spring框架无缝集成。自动生成API文档:SpringDoc可以根据Spring Boot程序中的代码、注解和配置自动生成API文档。它会解析控制器、路径映射、请求和响应对象,并将它们转换为清晰的API文档。我们只需要添加一些注解和配置,SpringDoc就能够自动扫描和解析代码,并生成相应的API文档。支持OpenAPI规范。

2022-09-26 20:54:10 374

原创 【项目实战】如何给项目设置允许跨域请求

在前后端分离的架构中,设置跨域请求是为了解决浏览器的同源策略(Same-Origin Policy)所带来的限制。同源策略是一种安全机制,它要求浏览器只能在相同的协议、主机和端口下进行通信。换句话说,如果前端代码运行在一个域名下,那么它只能与同一域名下的后端进行通信。然而,在实际开发中,前端和后端往往运行在不同的域名下,例如前端代码运行在,而后端API运行在。这就导致了浏览器无法直接发起跨域请求,即使两个域名属于同一个应用程序。为了解决这个问题,我们需要设置跨域请求。

2022-09-20 21:44:38 594 1

原创 【单元测试与JUnit 4】传统main方法测试代码太麻烦?来试试JUnit4

前言众所周知我们再写程序的时候,是离不开测试调式这一步骤的。没有哪个程序员能保证自己从来不犯错。我们一般是在写一段代码之后就立即进行测试,以防止出错之后由于涉及到代码太多而找不到是哪一段代码出错了。那么我们就需要进行单元测试。目录前言单元测试JUnit 4结语单元测试单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个

2022-09-15 09:57:11 592

原创 【项目实战】使用异步线程

需要注意的是,在使用异步线程时,需要合理地管理线程的数量和资源消耗,避免过度创建线程导致系统资源耗尽或线程竞争的问题。通过使用异步线程,可以将阻塞的任务隔离开来,避免对整个系统的影响。总结来说,使用异步线程可以提高系统的性能、响应性和用户体验,充分利用系统资源,并处理大量请求。改善用户体验:当涉及到需要等待的操作时,例如网络请求或复杂的计算,使用异步线程可以避免界面的冻结或卡顿,提供更流畅的用户体验。处理大量请求:在高并发的场景下,使用异步线程可以处理大量的请求,提高系统的吞吐量和并发处理能力。

2022-09-12 21:49:33 786 3

原创 LinkedList源码阅读

基于JDK8。

2022-09-06 19:53:28 869 3

原创 常用工具——对数器

在写出一个算法程序的时候,我们往往无法通过手动输入各种各样的测试数据来验证,在OJ平台上也无法找到对应的题目来进行验证。在一些样本量很大的情况下,我们往往无法考虑到所有的边界情况。一些贪心算法是很难通过数学的方式来进行验证的,这时我们应该如何判断算法程序是否正确。在这种情况的时候,我们就需要用到对数器了!有一个你想要测的方法a;实现一个绝对正确但是复杂度不好的方法b;实现一个随机样本产生器;实现对比算法a和b的方法;把方法a和方法b比对多次来验证方法a是否正确;.........

2022-09-01 07:31:55 1412 4

原创 ArrayList源码学习

基于JDK8

2022-08-29 19:59:12 854

原创 【项目实战】使用Activiti工作流引擎进行开发

在软件开发领域中,工作流自动化在简化业务流程和提高效率方面起着至关重要的作用。而在Java应用程序中实现工作流自动化的一个受欢迎选择就是Activiti,这是一个老牌的工作流引擎,能够与Spring Boot框架无缝集成。在本文中,我们将深入探讨Activiti的特点、优势以及如何在Java项目中使用它来实现工作流自动化。在深入了解Activiti之前,让我们先来了解一下什么是工作流。简单来说,工作流是通过计算机协助实现流程自动化控制的一种方式。

2022-08-24 18:17:04 1408 2

原创 可重入锁ReentrantLock的原理及使用

在公平模式下,锁会按照线程的请求顺序分配,遵循先进先出的原则。构造方法接受一个可选的公平参数(默认非公平锁),当设置为true时,表示公平锁,否则为非公平锁。公平锁的效率往往没有非公平锁的效率高,在许多线程访问的情况下,公平锁表现出较低的吞吐量。ReentrantLock是一个强大而灵活的同步工具,它提供了更多的控制选项和功能,适用于各种复杂的同步需求。方法,它可以尝试获取锁,如果锁当前不可用,则立即返回结果。,因此在使用时需要谨慎,并确保正确处理锁的获取和释放,以避免死锁和其他并发问题。

2022-08-09 09:38:16 1362

原创 小程序开发时:getLocation:fail require permission desc

小程序开发异常:getLocation:fail require permission desc

2022-08-05 16:06:47 1112

原创 AQS的工作机制

AQS(AbstractQueuedSynchronizer)是Java并发编程中的一个重要组件,它提供了一种基于队列的同步机制,用于实现各种同步器,如锁、信号量等。在去修改state状态的时候,使用的CAS自旋锁来保证原子性,确保只能有一个线程修改成功,修改失败的线程将会进入FIFO队列中等待。然后,我们将独占锁的拥有者线程设置为null,将锁的状态设置为0,并返回。新的线程到队列中等待,只让队列中的head线程获取锁,是公平锁。,它默认就是非公平锁,新的线程与队列中的线程共同来抢资源。

2022-08-01 11:17:56 1467 1

原创 CAS底层原理

乐观锁通过乐观的方式进行操作,允许多个线程同时访问共享资源,提高了并发性能,但可能会导致一些额外的开销。但是,如果多个用户同时尝试更新账户余额,只有一个用户能够成功,其他用户需要重新尝试,可能会导致一些额外的开销。但是,当多个用户同时想要进行取款操作时,只有一个用户能够成功获取锁,其他用户需要等待,导致并发性能较低。:由于CAS操作是在一个循环中不断尝试的,如果并发冲突较多,CAS操作会导致CPU资源的浪费。使用悲观锁的方式是,当一个用户要进行取款操作时,先获取账户的锁,确保其他用户无法同时访问账户。

2022-07-25 09:02:09 1628

原创 No mapping for GET /swagger-ui.html

springboot项目整合swagger2项目,发生错误No mapping for GET /emos-wx-api/swagger-ui.html

2022-07-23 10:42:18 5404 4

原创 《Java小子怒闯数据结构九重天》第六重天——树

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-07-16 13:29:24 2303 2

原创 synchronized锁的底层原理

需要注意的是,锁的升级是逐级升级的过程,而不是直接跳跃到最高级别的锁。锁的升级过程是由JVM自动管理的,根据线程的竞争情况和访问模式来判断是否需要升级锁的状态。在上锁的过程中,如果有其他线程也来抢锁,则进入EntryList 进行阻塞,当获得锁的线程执行完了,释放了锁,就会唤醒EntryList 中等待的线程竞争锁,竞争的时候是非公平的。来决定当前线程是否获得了锁,如果某一个线程获得了锁,在没有释放锁之前,其他线程是不能或得到锁的。类的Class对象的监视器锁,并执行方法体中的代码。其他线程如果尝试调用。

2022-07-04 11:40:08 4031 1

原创 【图书管理系统】Servlet+JSP+MySql 实现的一个前后端 javaweb项目(内附源码)

学习完Javaweb的知识后做了个项目练练手,我选择了经典而且比较简单的图书管理系统。整理了一下,分享给大家!

2022-05-30 09:17:29 9730 7

原创 【计算机网络】网络层(上万字+超多图详析)

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。...

2022-05-23 08:47:19 3724 10

原创 《Java小子怒闯数据结构九重天》第五重天——链表

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-05-21 09:36:23 2424 6

原创 【Freemarker】自己懒得写HTML?那就来试试模板引擎

对于JavaWeb的最后一部分内容我们介绍一款模板引擎,至于模板引擎的概念我们也会在正文中进行叙述的。

2022-05-17 08:43:52 2741 2

原创 《Java小子怒闯数据结构九重天》第四重天——队列

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-05-15 10:45:26 2421 6

原创 《Java小子怒闯数据结构九重天》第三重天——栈

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-05-08 08:28:37 3207 6

原创 《Java小子怒闯数据结构九重天》第二重天——字符串

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-05-04 03:30:00 3640 6

原创 redis设置开机自启动时错误:Job for redis.service failed because a timeout was exceeded

在Linux系统将redis设置开机自启动时遇到的错误:Job for redis.service failed because a timeout was exceeded. See "systemctl status redis.service" and "journalctl -xe" for details.

2022-05-01 03:00:00 7433 4

原创 《Java小子怒闯数据结构九重天》第一重天——数组

本专栏文章主要用于帮助Java使用者快速上手数据结构,刷算法题!

2022-04-29 08:38:56 4714 6

原创 【数据结构课设】家谱管理系统(内附源码)

这个是我数据结构期末的一个课程设计,也算是一个比较庞大的程序了吧,写出来还是蛮不容易的!分享出来希望能对大家有帮助!目录前言课设题目界面展示代码实现自定义头文件主函数菜单界面课设题目家谱管理系统【问题描述】实现具有下列功能的家谱管理系统【功能要求】(1)输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),......

2022-04-26 08:48:30 17409 16

原创 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

2022-4-3在写数据库动态查询的时候出现错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and price < 50.0' at line 5仔细看日志

2022-04-25 18:38:50 17495

【家谱管理系统】C/C++课设报告

这个是我数据结构期末的一个课程设计,也算是一个比较庞大的程序了吧,写出来还是蛮不容易的。设计报告! 家谱管理系统 【问题描述】 实现具有下列功能的家谱管理系统 【功能要求】 (1)输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 (2)实现数据的存盘和读盘。 (3)以图形方式显示家谱。 (4)显示第n代所有人的信息。 (5)按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 (6)按照出生日期查询成员名单。 (7)输入两人姓名,确定其关系。 (8)某成员添加孩子。 (9)删除某成员(若其还有后代,则一并删除)。 (10)修改某成员信息。 (11)按出生日期对家谱中所有人排序。 (12)打开一家谱时,提示当天生日的健在成员。 【基本要求】 建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。 【界面要求】 有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 【存储结构】 学生自己根据系统功能要求自己设计,但是要求

2022-07-04

【图书管理系统】Javaweb应用程序。

基于B/S架构完成! 无任何Java框架,数据库部分也无框架,均为Java web部分的知识内容,纯手写。 是我学习完Java Web之后写来练手的。 =================================================================== 基于B/S结构 前端: HTML+CSS+JS +JQuery 后端: Servlet+JSP+MySql =================================================================== JDK: 8.0 开发工具: Intellij IDEA2020.1 旗舰版 服务器: Tomcat8.0 数据库工具:mysql5.5 ================================================ 模仿实现MVC MVC:Model View Controller ,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。

2022-05-14

空空如也

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

TA关注的人

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