自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL二进制日志详解 | binlog存储、解析、日志恢复

将mysqlbinlog的输出作为mysql命令的输入,就能重放binlog中记录的修改,这对于MySQL的即时点数据恢复时很有价值的。定义了单个文件的大小限制,如果二进制日志写入的内容大小超出给定值,日志就会发生滚动(关闭当前文件,重新打开一个新的日志文件)。⑦清空现有的二进制日志文件:该方法可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个以.000001为后缀新的二进制日制文件,并删除过去生成的全部二进制日志。也就是说,这个文件是mysqld进程内部专用的。

2024-01-17 15:08:04 1731 1

原创 MySQL表空间碎片—产生原因、带来的问题以及如何解决

Innodb的最小物理存储分配单位是页(page),而UPDATE也可能导致页分裂,频繁的页分裂,页会变得稀疏,并且被不规则的填充,所以最终数据会有碎片。例如原始数据长度varchar(100),大规模更新数据长度为50,这样的话,有50的空间被空白了,新入库的数据不能完全利用剩余的50,这就会产生碎片。当执行插入操作时,MySQL会尝试使用空白空间,如果插入的数据刚好按照索引排序落在这个区间,可能会复用这个位置,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;

2024-01-17 15:07:11 2102

原创 MySQL锁相关——锁机制、表锁、行锁、死锁、锁优化等

MySQL不同的存储引擎支持不同的锁机制,所有存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的锁实现。默认情况下表锁和行锁都是自动获得的,不需要额外的命令,但某些情况下用户需要明确的进行行锁或进行事务的控制,以便确保整个事务的完整性,这样就需要使用事务控制和锁定语句来完成。默认情况下,写锁比读锁具有更高的优先级:当一个锁释放时,这个锁会优先给写锁队列中等候的获取锁请求,然后再给读锁队列中等候的获取锁请求。对于普通的select语句,InnoDB不会加任何锁。

2023-12-26 15:12:41 1106

原创 MySQL事务隔离级别 | 模拟并发事务中的问题

正执行的事务产生的数据变化不能被外部看到,因此别的事务中执行同条SELECT语句数次得到的结果都是相同的(解决了“不可重复读”问题)。该隔离级别的事务可以读到其他事务提交的数据(不存在脏读问题)。事务隔离的最高级别,会强制事务排序,使之不发生冲突,从而解决了脏读、不可重复读和幻读的问题,但因其执行效率低真正使用的场景并不多。该隔离级别的事务可以读到其他事务未提交的数据,而未提交的数据可能发生回滚,从而导致前一个事务读取了不存在的脏数据,称为脏读。③客户端B开启事务进行插入操作,并提交事务。

2023-12-26 13:56:42 434

原创 MySQL主从复制与切换

由于SQL Thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。为了完成主从复制,从库需要通过 I/O 线程获取主库中 dump 线程读取的 binlog 内容并写入到自己的中继日志 relay log 中,从库的 SQL 线程再读取中继日志,重做中继日志中的日志,相当于再执行一遍 SQL,更新自己的数据库,以达到数据的一致性。

2023-12-20 17:10:40 1509

原创 MySQL账号与权限

MySQL在初始化的时候会创建四个保留账号(mysql.infoschema@localhost、mysql.session@localhost、 mysql.sys @localhost、root@localhost)。MySQL8.0.14开始允许给账号设置两个密码,分别是主密码和辅助密码,方便应用程序的过度(如当主库有多个副本时,主库的账号密码已修改,而复制到副本还需要一定时间,这时可以用主密码在主库上登录,还可以用旧密码在副本上登录,等待密码被复制到所有副本,再抛弃旧密码)*表示所有数据库所有表。

2023-12-01 14:16:51 388

原创 Shell脚本编写

Shell脚本(Shell script)是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell script之后,依序运行其中的shell命令,之后输出结果。利用Shell script可以进行系统管理,文件操作等。Linux默认安装就带了shell解释器。

2023-12-01 11:33:07 75

原创 Guava入门

Guava是Google提供的一个核心Java类库,其中包含:集合【】、缓存【caching】、原生类型支持【】、并发库【】、通用注解【】、字符串处理【】、I/O等等。Guava 是Java的工具集,提供了一些常用的便利的操作工具类,减少因为空指针、异步操作等引起的问题BUG,提高开发效率。使用Guava的好处:​ 标准化:Guava库是由谷歌托管。​ 高效可靠:快速和有效的扩展JAVA标准库​ 优化:Guava 库经过高度的优化。​ 函数式编程:增加JAVA功能和处理能力。

2023-09-20 21:16:21 806

原创 字符串查找算法

字符串的一种基本操作就是:给定一段长度为N的文本和一个长度为M的模式字符串,在文本中找到一个和该模式相符的子字符串。

2023-09-20 21:14:23 216

原创 DES算法

DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。从本质上来说,DES的安全性依赖于虚假表象,从密码学的术语来讲就是依赖于“混乱和扩散”的原则。

2023-09-20 21:12:08 94

原创 ECharts入门

官网:https://echarts.apache.org/zh/index.html在 https://www.jsdelivr.com/package/npm/echarts 选择,点击并保存为echarts.js文件。</</</cdn引入:https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js</

2023-09-20 21:06:04 1008

原创 proxy拦截操作场景

当我们读取 from 的时候返回的是 undefined,因为 o 这个对象中没有这个 key-value。想想看我们在读取数据的时候,这个数据经常是聚合的,当大家没有按照规范来的时候或者数据缺失的情况下,经常会出现这种“乌龙”现象。对于数据交互而言,校验是不可或缺的一个环境,传统的做法是将校验写在了业务逻辑里,导致代码耦合度较高。刚才对数据的“读操作”进行了拦截,接下来我们描述下“写操作”进行拦截。,当然这里是自定义,大家可以根据自己的需要来写适合自己业务的规则。

2023-09-20 20:52:31 24

原创 一文看懂 | MySQL目录结构

对于使用独立表空间的表不管怎么删除,表空间的碎片不会太严重的影响性能,而且有处理的机会)系统表空间数据文件大小和数量有innodb_data_file_path决定,如图所示表示系统表空间文件名为ibdata1,初始化大小为12M,定义了autoextend随着数据量的增加而进行扩容,每次扩容申请的空间有innodb_autoextend_increment配置。创建myisam表后,数据库目录下多出三个文件(.sdi、.MYD、.MYI),.sdi存储文件结构,.MYD存储数据,.MYI存储索引。

2023-08-28 14:45:46 609

原创 MySQL8.0常见问题:服务器SQL模式

服务器SQL模式定义了MySQL应该支持的SQL语法和它应该执行哪种数据验证检查。使在不同环境中使用MySQL或将MySQL与其他数据库服务器一起使用变得更加容易。DBA可设置全局的SQL模式以匹配站点服务器的操作要求,并且每个应用程序都可以根据自己的要求设置其会话 SQL 模式。要在服务器启动时设置 SQL 模式,请使用命令行上的。选项,或在my.cnfmy.ini文件中使用。若要显示地清楚SQL模式,请在命令行使用。或在my.cnfmy.ini文件中配置。

2022-12-29 10:43:55 700 1

原创 Kafka详解(下)——Kafka核心API、通过Spring Boot 集成Kafka、集群搭建

Kafka包括以下核心API:4-1 Producer API​ KafkaProducer API 的核心部分是类,使用类发送数据。KafkaProducer是线程安全的,可以在多个线程之间共享生产者实例。​ KafkaProducer类提供了方法将消息异步发送到主题。在消息发送过程中,涉及两个线程:线程和线程,以及一个线程共享变量。main线程将消息发送给RecordAccmulator,Sender线程不断地从RecordAccumulator中拉取消息发送给Kafka broker。​ Kafk

2022-07-07 19:54:45 1160

原创 深入解析ThreadLocal

叫做线程变量,意思是中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意: 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。ThreadLocal 变量通常被修饰。当一个线程结束时,它所使用的所有

2022-07-07 19:44:35 272

原创 Future模式详解

Future模式是多线程开发中常见的设计模式,它的核心思想是异步调用。对于Future模式来说,它无法立即返回你需要的数据,但是它会返回一个契约,将来你可以凭借这个契约去获取你需要的信息。这是传统的同步方法,调用一段耗时的程序。当客户端发出call请求,这个请求需要很长的一段时间才会返回,客户端一直在等待直到数据返回随后再进行其他任务的处理。而使用Future模式:从Data_Future对象可以看到虽然本身任然需要一段很长时间处理程序。但是服务程序并不等数据处理完成便立即返回客户端一个伪造的数据(如:

2022-07-07 18:25:46 1912

原创 Synchronized详解

1 Synchronized的作用synchronized是一个Java关键字,是jvm层级的,提供了一种排他机制,在同一时间点只能有一个线程执行某些操作,实现一个简单的策略来防止线程干扰和内存一致性错误。2 Synchronized的使用[default|public|private|protected] synchronized [static] type method()当synchronized作用在实例方法时,相当于对当前实例加锁 ,进入同步代码前要获取到该实例的锁;public

2022-05-09 21:21:39 538

原创 Java岗面试—Java基础(一)

一、基本数据类型八个基本类型:boolean(1位) byte(8位) char(16位) short(16位) int(32位) float(32位) long(64位) double(64位)基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。Integer x = 1; // 装箱int y = x; // 拆箱二、new Integer(123) 与 Integer.valueOf(123) 的区别new Interger

2022-04-29 17:23:13 97

原创 Java岗面试—泛型机制

一、为什么会引入泛型?泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。适用于多种数据类型执行相同的代码泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)二、如何理解Java中的泛型是伪泛型?泛型中类型擦除Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Ja

2022-04-28 20:59:54 141

原创 Kafka详解(中)——Kafka客户端操作

3-1 shell列举​ kafka安装目录下的bin目录包含了很多运维可操作的shell脚本,列举如下:脚本名称用途描述connect-distributed.sh连接kafka集群模式connect-standalone.sh连接kafka单机模式kafka-acls.sh设置Kafka权限kafka-broker-api-versions.sh检索代理版本信息kafka-configs.sh配置管理脚本kafka-console-cons

2022-04-27 21:26:44 12093 1

转载 Java岗面试—Java注解

一、注解的作用Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该 Annotation 对象来获取注解中的元数据信息。注解是jdk1.5开始引入的一个新特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。主要作用有一下几个方面:生成文档,通过代码里标识的元数据生成javadoc文档。编

2022-04-27 21:12:44 411

原创 Java岗面试之—Java反射

一、反射机制的概念在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为 Java 语言的反射机制。二、反射的主要功能①在运行时判断任意一个对象所属的类;②在运行时构造任意一个类的对象;③在运行时判断任意一个类所具有的成员变量和方法;④在运行时调用任意一个对象的方法;⑤生成动态代理。通过java反射机制,可以在程序中访问已经装载到JVM中的java对象的描述

2022-04-26 20:49:43 169

原创 Kafka详解(上)——消息系统分类、Kafka安装、两种启动、基本概念、两种架构、核心配置文件

Kafka3.0版本是卡夫卡的一个重大提升,也是开始摒弃zookeeper的过程

2022-04-25 20:04:22 4158

原创 Java岗面试之异常分类及处理

一、Java异常机制的概念如果某个方法不能正常完成,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。这个方法会立刻退出同时不返回任何值。另外调用这个方法的其他代码也无法继续执行,异常处理机制会将代码交给异常处理器。二、异常分类Throwable是Java语言中所有异常或错误的超类,下一层分为Error和ExceptionError:Error类是指Java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象,如果出现此类错误,除了告知用户,剩下的就是尽力使程序安

2022-04-25 19:39:39 656

原创 Java面试之多线程(二)

1.线程生命周期2.死锁、活锁、饥饿3.wait和sleep方法的区别4.一个线程两次调用 start() 方法会出现什么情况?5.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

2022-04-23 20:28:38 224

原创 JAVA岗面试之多线程(一)

1.线程安全三大特性2.线程创建方式3.ThreadLocal4.Synchronized5.Volatile

2022-04-22 20:10:06 338

原创 多线程并发可能遇到的问题及Runable和Thread之间的关系

一、多线程并发可能遇到的问题多线程并发执行可能会导致一些问题:安全性问题:在单线程系统上正常运行的代码,在多线程环境中可能会出现意料之外的结果。活跃性问题:不正确的加锁、解锁方式可能会导致死锁或者活锁问题。性能问题:多线程并发即多个线程切换运行,线程切换会有一定的消耗并且不正确的加锁。1. 安全性问题多线程的三大特性:原子性、可见性、有序性。如果不满足这三大特性,就可能产生线程安全问题。案例:需求现有100张火车票,两个窗口同时售卖火车票,请用多线程模拟抢票效果。class Thread

2022-04-22 15:08:46 2902

原创 Apache Kafka 3.0 发布——移除zookeeper如何启动Kafka

在Kafka2.8之前,Kafka强依赖zookeeper,2.8版本之后Kafka可以采用KRaft(Kafka Raft)模式,逐步去除对zookeeper的依赖。最新的3.0版本中,Kafka依然兼容zookeeper Controller,但Kafka Raft元数据模式,已经可以在不依赖zookeeper的情况下启动Kafka了。但是它目前还是预览版,不建议用于生产环境。1.Kraft模式启动Kafka1.首先使用kafka-storage.sh为新集群生成ID:./bin/kafka-

2021-10-15 15:02:29 5930

原创 Java面向对象之类与对象

1. Java中的类基本概念在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。类:描述了一组有相同 属性(特点) 和 方法(行为) 的集合。可以看成一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。属性:就是该事物的状态信息。方法:就是该事物能够做什么。例如,**类:**人类;属性:名字、性别、体重、身高、年龄;行为:吃饭、说话、学习;人类叫张三?人类吃了一碗米饭?“人类”只是一个抽象的概念,它仅仅是一个概念,是不存在的实

2021-09-24 19:00:43 307

原创 Java的IO流

Java的IO流一、File类1.创建创建一个普通文件//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File f1 = new File("D:\\Hello.java");//创建普通文件try { boolean isSuccess = f1.createNewFile(); System.out.println("是否创建成功:"+isSuccess);} catch (IOException e) { e.printStackT

2021-09-24 18:45:20 58

原创 ECMAScript 6 (二)

1. String扩展模板字符串在 ES6 之前对字符串的处理是相当的麻烦,看如下场景:1. 字符串很长要换行字符串很长包括几种情形一个是开发时输入的文本内容,一个是接口数据返回的文本内容。如果对换行符处理不当,就会带来异常。2. 字符串中有变量或者表达式如果字符串不是静态内容,往往是需要加载变量或者表达式,这个也是很常见的需求。之前的做法是字符串拼接: var a = 20 var b = 10 var c = 'JavaScript' var str = 'My age is

2021-09-24 18:33:20 146

原创 ECMAScript 6(一)

ECMAScript 6 (一)一、ECMAScript 6 简介ECMAScript和JavaScript1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。该标准从一开始就是针对JavaScript语言制定的。​ 因此,ECMAScript和Ja

2021-09-24 18:25:44 1006

原创 流式操作、lambda表达式与方法引用的相关问题

流式操作、lambda表达式与方法引用的相关问题1.java.util.Objects类​ Object 是 Java 中所有类的基类,位于java.lang包。Objects 是 Object 的工具类,位于java.util包。 java.util.Objects由 Java 7 引入的 ,它由一些静态的实用方法组成,用于操作对象或在操作前检查某些条件。方法作用static boolean equals(Object a, Object b)验证两个参数是否相等,是空安全的

2021-09-16 16:17:48 217

原创 如何实现Handsontable的增删改

上一篇讲的handsontable获取后台的数据并显示在excel表中,那么接下来就要实现基本的增删改操纵1.新增数据这里新增我没有在表里面直接添加,而是用一个模态框以form表单的形式添加(主要是因为学的垃圾)。HTML部分:<div class="col-md-10 col-sm-10 col-xs-3" style="display: block" id="grade_div"> <input type="button" id="gradeadd"

2020-06-28 14:20:53 996

Kafka3.0详解,客户端命令,核心配置文件详解。spring集成、webflux集成、集群搭建

Kafka3.0详解,客户端命令,核心配置文件详解。spring集成、webflux集成、集群搭建

2022-04-27

空空如也

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

TA关注的人

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