自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Json的博客

I am an ordinary person, but what about it?

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

原创 ✅深入理解InnoDB中的页分裂与页合并

正如,如上所说。InnoDB 的数据页是存储引擎中用于保存数据的基本单位,通常大小为 16KB。B+树的每个节点对应着一个数据页,包括根节点、非叶子节点和叶子节点。B+树通过节点之间的指针连接了不同层级的数据页,从而构建了有序的索引结构。我们知道,B+树是按照索引字段建立的,并且在 B+树中是有序的。然而,如果索引字段的值并不是连续的,那么在 B+树的结构中会如何呢?假设现在我们要插入一个索引值为 3 的新记录,它需要按顺序插入到页号为 20 的数据页中,放在索引值为 1 和 2 的记录之后。

2024-07-08 09:24:21 910

原创 MySQL数据库碎片化:隐患与解决策略

为什么我们经常说不建议使用简单的 UUID 做 ID,当唯一索引,其实很大原因就是因为不规则的 UUID 会导致存储碎片,接下来聊一聊 MySQL 为什么会有存储碎片,影响大不大。MySQL 中的数据库表常会出现物理存储碎片,特别是在频繁执行插入、删除和更新操作的情况下。这些操作会导致数据页中部分空间未被有效利用,或者导致数据在物理存储上排列不连续,进而形成碎片。碎片的主要来源包括频繁的 DML 操作,如插入(insert)、更新(update)、删除(delete)。

2024-07-05 09:11:25 882

原创 ✅MySQL用了函数到底会不会导致索引失效

上一篇我们主要讲了 MySQL 失效的场景到底有哪些原因导致的,并且提到了如果 SQL 中如果使用了函数,则可能会导致索引失效的问题。本次主要聊一聊关于函数到底会不会导致索引失效呢?很多人认为,在使用函数后就无法使用索引。这主要是因为索引是按照列值的原始顺序组织和存储的。当对列应用函数时(如数学运算、字符串操作或日期函数等),函数会改变原始数据的值或格式,使得数据库无法直接定位到这些经过函数转换后的值。因此,数据库不得不执行全表扫描,以确保能够评估所有行上的函数操作,这导致查询性能下降。

2024-07-03 09:06:27 992

原创 聊聊性能指标CPU利用率如何计算的

CPU 利用率,又称 CPU 使用率。顾名思义,CPU 利用率用于描述 CPU 的运行情况,反映了一段时间内 CPU 被程序占用的情况。使用率越高,表示计算机在该时间段内运行了更多的程序,反之则较少。CPU 的利用率与其性能直接相关。现代操作系统如 Windows、Linux 和 MacOS 都是多用户、多任务的分时操作系统。这意味着多个用户可以在同一时间“同时”进行多项操作,这已经成为我们日常生活的一部分,显得非常普遍。然而,在单个 CPU 计算机中,实际上同一时间只能处理一项任务。

2024-06-26 09:29:08 822

原创 ✅分析SQL执行计划,我们需要关注哪些重要信息

一个执行计划中,共有 12 个字段,每个字段都十分重要。首先,我们来分析几个重要字段的不同取值及其区别:对于此时使用了唯一性索引进行唯一查询。:唯一索引扫描,只会扫描索引树中的一个匹配行。当连接操作中使用了唯一索引或主键索引,并且连接条件是基于这些索引的等值条件时,MySQL 通常会选择 eq_ref 连接类型,以提高查询性能。:非唯一索引扫描,只会扫描索引树中的一部分来查找匹配的行。此时使用了非唯一索引进行查询。:范围扫描,只会扫描索引树中的一个范围来查找匹配的行。此时使用了索引进行性范围查询。

2024-06-12 11:16:50 823

原创 MySQL中insertOrUpdate的功能如何实现的

insertOrUpdate在我们日常使用中比较常见,那么它是如何实现的呢,不知道大家有没有考虑过呢?在MySQL中,可采用语句实现insertOrUpdate功能。值得留意的是,在出现重复键时,会在先前索引值和当前值之间添加临时键锁,这可能导致死锁。若要使用INSERT INTO …举个例子:设想有一张student表,包括id、name和age三列,其中id是主键。现在要插入一条数据,若该数据的主键已存在,则更新该数据的姓名和年龄,否则插入该数据。

2024-06-07 13:33:11 652

原创 对线面试官 - 硬件级别之再谈Volatile关键字的指令重排序

指令乱序执行机制:指令不一定拿到了就可以立马执行,比如有的执行需要网络通信、磁盘读写、获取锁等等,有的指令不是立马就执行的,为了提升效率,在现代的很多处理器里面走的都是乱序执行的机制。以上就是new对象的一个过程,但是JIT动态编译为了加快程序的执行速度,步骤2是在初始化一个对象实例(比如里面执行一些磁盘读写,网络通信等等),JIT动态编译则可能重排为。但是有个问题:就是在其它处理器可能会看到的一个视觉假象,就是有可能出现看到的load和store的执行顺序并非真实的执行顺序而是重排序的。

2024-06-05 09:47:31 240

原创 ✅count(1)、count(*) 与 count(列名) 的区别

简单来说:COUNT(1) 和 COUNT(*) 表示的是直接查询符合条件的数据库表的行数。而 COUNT(列名) 表示的是查询符合条件的列的值不为 NULL 的行数。除了查询得到结果集有区别之外,在性能方面 COUNT() 约等于 COUNT(1),但是 **COUNT() 是 SQL92 定义的标准统计行数的语法**。因为它是标准语法,所以 MySQL 数据库对其进行了很多优化。

2024-06-03 09:05:42 856

原创 被追着问UUID和自增ID做主键哪个好,为什么?

UUID(Universally Unique Identifier)是一种全局唯一标识符,用于在同一时空中的各台机器上保证唯一性。UUID 的生成基于特定算法,通常使用随机数生成器或基于时间戳的方式。生成的 UUID 以 32 位 16 进制数表示,总共 128 位(标准 UUID 格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,共 32 个字符)。由于 UUID 是由 MAC 地址、时间戳、随机数等信息生成的,因此具有极高的唯一性,几乎不可能重复。

2024-05-29 09:01:17 980

原创 ✅乐观锁与悲观锁如何实现

在对数据库中的数据进行修改时,为了避免同时被其他人修改,最好的方法是直接对该数据进行加锁以防止并发。以上,在更新之前,先查询库存表中当前的库存数(stock),然后在执行更新时,将库存数作为修改条件。行级锁都是基于索引的,如果一条SQL语句未使用索引,优化器在选择时,若发现锁表可能性能更好,有可能会直接锁表。CAS是一种乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能成功更新变量的值,而其他线程都失败。与悲观锁相比,乐观锁在处理数据库时并不会使用数据库提供的锁机制。

2024-05-17 09:33:45 601

原创 ✅为什么MySQL默认使用RR隔离级别?

对于数据库的默认隔离级别,Oracle默认的隔离级别是 RC,而MySQL默认的隔离级别是 RR。那么,你知道为什么Oracle选择RC作为默认级别,而MySQL要选择RR作为默认的隔离级别吗?

2024-04-25 09:20:35 811

原创 面试官追问的STW,到底什么是STW?有什么影响?

STW,即的缩写,指的是系统在执行特定操作时需暂停(停止)所有应用程序线程。这个概念在早起文章中有提到过(如图)。也有在文章提到过(如图):所以感兴趣的小伙伴可以去看下往期文章。

2024-04-16 09:38:02 418

原创 ✅MySQL执行大事务会存在什么问题?

之前在如何实现百万级数据从Excel导入中有提到一句不建议利用大事务进行一个错误处理。为什么不建议呢。本次来简单说一下。实现百万级数据从Excel导入到数据库的方式所谓大事务,通常指包含大量要执行的SQL语句和较长执行时间的事务。这样的大事务往往会带来诸多问题。如下:占用数据库连接:这一点很好理解。随着SQL语句的增多,执行时间也会相应延长。大型事务会持续占用数据库连接,由于数据库连接资源有限,长时间占用可能导致其他事务无法获取连接,从而降低系统的吞吐量,影响系统的可用性。

2024-04-15 10:26:52 395

原创 ✅实现百万级数据从Excel导入到数据库的方式

在处理过程中,并非每条数据都直接操作数据库,以免对数据库造成过大压力。此外,在这一过程中,需考虑数据重复问题,可在Excel中设定若干字段为数据库唯一约束。此外,在处理过程中,需要考虑并发问题,因此我们将使用线程安全的队列来存储内存中的临时数据,如ConcurrentLinkedQueue。为了提升并发处理能力,我们将百万级数据存储在同一个Excel文件的不同工作表中,然后通过EasyExcel并发地读取这些工作表数据。一般不推荐直接回滚操作,而是自动重试,若尝试多次仍无效,则记录日志,随后重新插入数据。

2024-04-12 09:43:15 562 1

原创 ✅基于TTL 解决线程池中 ThreadLocal 线程无法共享的问题

在Java的并发编程领域中,ThreadLocal被广泛运用来解决线程安全困境,它巧妙地为每个线程提供独立的变量副本,有效规避了线程间数据共享的问题。不过,在使用线程池时,传递线程局部变量在父子线程之间并非易事。这是因为ThreadLocal的设计初衷仅在于线程内的数据隔离,无法支持跨线程间的数据传递。

2024-04-09 09:57:11 445

原创 @Transactional事务是真的好用吗

最后,本文观点或许不会得到所有人的认同,很多人可能会称:Spring官方推崇无侵入的声明式事务,你又有何资格质疑。老实说,初入职场的那几年,我也钟情于声明式事务,认为其简洁、“优雅”。觉得那些热衷于编程式事务的前辈多此一举,缺乏工匠精神。然而,随着线上遇到几次问题后的反思,我们发现,有时候你的代码确实优雅无瑕。然而,这种优雅也常伴随一些副作用,并且前辈们也无法指责我,因为我的做法确实无可指摘…因此,有些事情,只能在切身体会后才能领悟。

2024-04-07 11:19:10 285

原创 什么是单元测试,和集成测试有什么区别?

是指对软件系统中最微小的可测试单位进行验证的过程。一般由开发人员编写,目的在于验证代码的准确性与可靠性。其旨在尽可能覆盖代码中的每个功能单元,如函数、方法、类等,并透过测试框架与断言来检验这些功能单元的正确性。通常自动化完成的单元测试可以快速执行。,则是审视整个系统或特定模块的测试流程。其目标在于确认系统内不同模块之间的互动与协作是否规范。由测试人员编写,旨在验证整个系统是否符合需求与规范。集成测试一般需要将各个模块整合,并利用手动或自动化测试工具来执行验证。

2024-04-03 09:24:20 461 3

原创 你们单测覆盖率是如何统计的?原理是什么?

Java字节码插桩技术是指在编译期或运行期,通过修改Java字节码的方式,在代码中插入额外的代码。这种技术。

2024-04-02 09:18:45 745 1

原创 大型企业通常如何进行单元测试?

有效的单元测试》是一本非常值得推荐的读物。有需要这本书的,可到文末领取。

2024-04-01 10:46:55 289

原创 Redis不再 “开源”

根据新许可证的条款,托管 Redis 产品的云服务提供商将不再允许免费使用 Redis 的源代码。例如,云服务提供商只有在与 Redis(Redis 代码的维护者)达成许可条款后,才能向用户交付 Redis 7.4。Redis 将继续支持其庞大的合作伙伴生态系统(包括托管服务提供商和系统集成商),并独家访问 Redis 通过其合作伙伴计划开发和提供的所有未来版本、更新和功能。总的来说,对于使用 Redis 开源版本和新版本的 Redis 的最终用户(使用双重许可证进行内部或个人使用),没有任何变化。

2024-03-28 09:33:10 366

原创 实战篇-Docker 安装ELK(单节点)

文中的apps目录是在/home/ubuntu目录下。

2024-03-27 13:41:21 905

原创 Java对象的存活是如何判断的呢?以及JVM如何回收已经消亡的对象

在过往的文章中主要讲述了JVM-Java虚拟机内存模型,接下来我们讲解一下Java对象在虚拟机中是如何判断存亡的,如何回收已经消亡的对象的呢。也就是Java及在Java虚拟机中主要关注的也就是Java堆中的对象,因为这里面存放了Java世界中几乎所有的对象实例,要想对已经失去意义的对象也就是已经消亡的对象进行回收之前首先就要判断, 哪些对象还“存活”着,哪些对象已经“死去”(“死去”即不可 能再被任何途径使用的对象)了。 说到这里就不得不引出两个比较重要的算法:在很多教科书素材中都是这样提到的:会在对象中

2022-07-04 08:48:21 353 1

原创 一篇文章带你对Java对象创建过程解密

Java对于我们来说,它就是一门编程语言。Java程序在运行过程中无时无刻不在创建对象,在代码层面其实就是一个简单的`new`的一个过程。但是底层实现逻辑并非如此。那么它究竟是如何进行创建对象的呢?接下来我们一起来一探究竟。...

2022-06-22 21:36:21 88

转载 springboot 集成 spring security 自定义登录

springboot 集成 spring security 自定义登录转载于:https://www.cnblogs.com/wuzhenzhao/p/13095714.html

2021-05-11 11:11:38 138

原创 前端vue项目部署到tomcat,一刷新报错404解决方法

公司前端写的后台部署到tomcatwebapps目录下后,无法进行刷新,一刷新就会报错404,自动跳的404页面。在网上查了下,官方说是HTML5 History模式引发的问题,但是解决方案中,并没有tomcat的解决方案。如链接:https://router.vuejs.org/zh-cn/essentials/history-mode.html废话不多说直接进入主题我使用的是Vue4.X当运行命令npm run build 后 会产生一下如图所示的文件然后直接将图片一中的dist .

2020-09-14 16:11:55 3951 4

原创 关于element-ui popover组件通过数据渲染出多个popover时点击取消时 popover的显示与隐藏问题

关于element-ui popover组件通过数据渲染出多个popover时点击取消时 popover的显示与隐藏问题废话不多说直接上代码 <template slot-scope="scope"> <el-button @click="editRowData(scope.row)" type="primary" size="mini" class="el-icon-edit" >&l

2020-09-07 14:26:04 1244 1

原创 可以在后台自动获取电脑信息的代码

废话不多说直接上代码 很有用。。。。。。。。。。。public String login(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException { String remoteHost = null; String auth = request.getHeader("Authorization"); String usern

2020-07-16 13:38:22 483

转载 Java 通过telnet协议 操作远程交换机

/***@date 2015年2月4日 下午3:15:13*@author XUQIANG*@filename TelnetConnection.java*@package com.merit.monitor.device.parameter.sdk*/package com.merit.monitor.device.parameter.sdk;import java.io.BufferedReader;import java.io.IOException;import java.io.I

2020-06-24 11:00:50 897

转载 高效的找出两个List中的不同元素

package com.czp.util;import java.util.Collection;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.Map;/**该类提供对集合类的高效操作@author*/public class CollectionUtil { /** * 不允许实例化 */ priva

2020-05-27 08:31:24 319

原创 超简洁的jquery操作页面中iframe内的dom元素

超简洁的jquery操作页面中iframe内的dom元素超简洁的jquery操作页面中iframe内的dom元素超简洁的jquery操作页面中iframe内的dom元素jquery$("#iframe1").contents().find("#news_text").html("");iframe1:页面中的iframe的ID;news_text:iframe内需要被操作的元素的ID...

2020-04-27 09:12:31 237

转载 IDEA部署tomcat的web项目配置tomcat遇到的问题

IDEA下使用tomcat部署web项目很不错的文章:转载自https://www.iteye.com/blog/yangjianzhouctgu-2218382

2020-03-23 08:39:27 100

原创 Spring框架值spring容器的相关内容(一)

Spring容器创建对象的三种方式构造器方式实例化默认调用这个类型的无参构造 <bean id="标识" class="包名.类名"></bean>静态工厂方法实例化本质上调用一个静态方法,获取一个对象 <bean id="标识" class="包名.工厂类名" factory-method="静态方法名"></bean>...

2019-09-24 10:07:38 88

原创 JAVA代码根据IP/掩码位数格式地址段得到起始地址和结束地址,可用IP数量,掩码

JAVA代码根据IP/掩码位数格式地址段得到起始地址和结束地址,可用IP数量,掩码IP地址:将IP和掩码位数拆分计算子网掩码根据子网掩码获取开始IPIP可用数量(包含广播地址)根据ip地址和掩码获取结束IPIP地址:String network ="10.102.90.128/26";将IP和掩码位数拆分 String arr[] = network.split("/"); Strin...

2019-07-10 17:03:04 1913

空空如也

空空如也

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

TA关注的人

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