自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (2)
  • 收藏
  • 关注

原创 MySQL是怎样运行的——如何正确的使用索引

上边只是我们在创建和使用 B+ 树索引的过程中需要注意的一些点,后边我们还会陆续介绍更多的优化方法和注意事项,敬请期待。B+ 树索引在空间和时间上都有代价,所以没事儿别瞎建索引。B+ 树索引适用于下边这些情况:全值匹配匹配左边的列匹配范围值精确匹配某一列并范围匹配另外一列用于排序用于分组在使用索引时需要注意下边这些事项:只为用于搜索、排序或分组的列创建索引为列的基数大的列创建索引索引列的类型尽量小可以只对字符串值的前缀建立索引只有索引列在比较表达式中单独出现才可以适用索引。

2023-03-07 17:37:25 480 1

原创 Mysql是怎样运行的——B+树索引

我们介绍的都是InnoDB存储引擎中的索引方案,为了内容的完整性,以及各位可能在面试的时候遇到这类的问题,我们有必要再简单介绍一下MyISAM存储引擎中的索引方案。将表中的记录按照记录的插入顺序单独存储在一个文件中,称之为 数据文件。这个文件并不划分为若干个数据页,有多少记录就往这个文件中塞多少记录就成了。我们可以通过行号而快速访问到一条记录。MyISAM 记录也需要记录头信息来存储一些额外数据,我们以上边唠叨过的 index_demo 表为例,看一下这个。

2023-03-03 11:21:30 439

原创 Mysql是怎么运行的——InnoDB数据页结构

InnoDB为了不同的目的而设计了不同类型的页,我们把用于存放记录的页叫做 数据页。一个数据页可以被大致划分为7个部分,分别是File Header ,表示页的一些通用信息,占固定的38字节。Page Header ,表示数据页专有的一些信息,占固定的56个字节。Infimum + Supremum ,两个虚拟的伪记录,分别表示页中的最小和最大记录,占固定的 26 个字节。User Records :真实存储我们插入的记录的部分,大小不固定。

2023-02-28 09:44:40 346

原创 Mysql是怎样运行的之InnoDB介绍

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢......

2023-02-24 17:35:08 682

原创 编写公共异常类统一解决参数校验失败的问题

编写一个统一收集校验参数失败的异常类,准确返回校验失败相关的字段

2022-12-29 08:57:46 201

原创 XSS攻击原理与解决方法

XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击。一旦攻击成功,它可以获取到用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库,Click劫持,相对链接劫持等实施钓鱼,他带来的危害是巨大的,是Web安全的头号大敌。

2022-08-23 10:18:13 9229

原创 重复下单问题

重复下单问题

2022-07-05 15:54:27 443

原创 面试宝典-Mysql篇

mysql面试必备宝典

2022-07-05 15:50:49 786

原创 前后端分离项目,解决跨域问题

前后端分离原因及解决方式

2022-07-05 15:32:37 713 1

原创 面试宝典--Kafka篇

kafka面试必备宝典

2022-07-05 15:24:35 589

原创 商城模块秒杀业务的设计与实战

正文首先设计一个系统之前,我们需要先确认我们的业务场景是怎么样子的,我们就设计一个便于理解的秒杀场景吧。场景我们现场要卖100件下面这个看着些不错的鱼竿,然后我们根据以往这样秒杀活动的数据经验来看,目测来抢这100件鱼竿的人足足有10万人。你一听,完了呀,这我们的服务器哪里顶得住啊!说真的如果直接对数据库操作肯定挂。但是别急嘛,我们在开始之前应该先思考下会出现哪些问题?秒杀可能会产生的问题问题一:高并发是的高并发这个是我们想都不用想的一个点,一瞬间这么多人进来这不是高并发什么时候是呢?秒

2022-03-17 11:13:21 1763

原创 面试宝典Java篇(基础+高级+集合+线程+IO+JVM)

逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否

2022-03-08 16:00:47 823

原创 SpingBoot整合AOP教程详解

说起spring,我们知道其最核心的两个功能就是AOP(面向切面)和IOC(控制反转),这边文章来总结一下SpringBoot如何整合使用AOP。

2022-02-25 11:17:21 492

转载 Spring自动装配机制详解

自动装配就是会通过Spring的上下文为你找出相应依赖项的类,通俗的说就是Spring会在上下文中自动查找,并自动给Bean装配与其相关的属性!

2022-02-24 11:54:28 8421 3

原创 二、SpringBoot核心教程之自动配置原理解析

前言本节更详细地介绍了如何使用 Spring Boot。它涵盖了诸如构建系统、自动配置以及如何运行应用程序等主题。我们还介绍了一些 Spring Boot 最佳实践。尽管 Spring Boot 没有什么特别之处(它只是您可以使用的另一个库),但有一些建议可以让您的开发过程更轻松一些。如果您刚开始使用 Spring Boot,您可能应该在深入了解本节之前阅读SpringBoot入门指南。一、构建系统1.1 依赖管理Spring Boot 的每个版本都提供了它支持的依赖项的精选列表。实际上,您不需要

2022-01-26 13:07:45 178

原创 一、SpringBoot核心教程之入门篇-认识SpringBoot

如果您开始使用 Spring Boot 或一般的“Spring”,请从阅读本节开始。它回答了基本的“什么?”,“如何?” “为什么?” 问题。它包括对 Spring Boot 的介绍以及安装说明。然后,我们将引导您构建您的第一个 Spring Boot 应用程序,同时讨论一些核心原则。

2022-01-25 15:42:47 257

原创 十一、JVM从入门到精通之各垃圾回收器性能分析

前言垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎称为现代语言的标配,即使经过如此长的时间发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。在上个章节中,我们学习了垃圾回收机制的相关概念,接下来我们将介绍JVM中所采用的一些重要的垃圾收集器。

2022-01-19 18:10:27 601

原创 十、JVM从入门到精通之垃圾回收机制(概念篇)

前言垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎称为现代语言的标配,即使经过如此长的时间发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。在上个章节中,我们学习了垃圾回收的相关算法,接下来我们将介绍垃圾回收的相关概念,帮助我们更深层次的去理解JVM的垃圾回收机制一、通过代码调用执行垃圾回收行为1.1 System.gc()的理解在默认情况下,通过System.gc()或者Runtime

2022-01-13 15:59:58 116

原创 九、JVM从入门到精通之垃圾回收机制(算法篇)

前言垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收、如何回收?垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎称为现代语言的标配,即使经过如此长的时间发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。 垃圾回收热点面试题蚂蚁金服:你知道哪几种垃圾回收器,

2022-01-12 14:38:42 304

原创 八、JVM从入门到精通之String Table(字符串常量池)分析

前言:我们学习String Table之前,就无法避免的要先去学习下String,只有对String知己知彼了,才能更好的掌握和理解String Table。

2022-01-05 18:03:55 251

原创 七、JVM从入门到精通之对象实例化过程

hello ,大家好,我是猿小许呀????????????!上一篇中我们将运行时数据区的方法区做了详细的讲解说明,接下来我们会分析对象的实例化过程 做出详解,Are you ready????????????? go!一、对象的实例化1.1 创建对象的步骤1.1.1 判断对象对应的类是否加载、链接、初始化虚拟机遇到一条new 指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符合引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否存在

2021-12-18 12:54:29 1845

原创 六、JVM从入门到精通之运行时数据区分析(篇三)

前言hello ,大家好,我是猿小许呀????????????!上一篇中我们将运行时数据区的本地方法栈及堆空间做了详细的讲解说明,接下来我们会对运行时数据区的其他部分进行剖析说明以及代码优化的几种情况 ,Are you ready????????????? go!一、JVM之代码优化1.1 代码优化:逃逸分析上一篇我们对逃逸分析做了详细说明,如果对其有不太明白的地方,就点击这个传送门可以回顾一下传送门链接,定位到3.5.2和3.5.3的小节,是专门对逃逸分析做的说明和示例,这里我们就不重复过多

2021-11-22 18:38:22 791

原创 五、JVM从入门到精通之运行时数据区分析(篇二)

前言上一篇中我们将运行时数据区的P一、本地方法栈1.1 什么是本地方法?简单的讲

2021-11-19 16:08:52 200

原创 四、JVM从入门到精通之运行时数据区分析(篇一)

一、运行时数据区内部结构1.1 JVM内存布局图解内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高校稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨经典的JVM内存布局。Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁,另外一些则是与线程一一对应的,这些与线

2021-11-17 20:43:13 631

原创 三、JVM虚拟机之类加载系统详解

一、类的加载器及类的加载过程1.1 类加载器子系统的作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine(执行引擎) 决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件常量池部分的内存映射)1.2 类加载器ClassLoa

2021-11-17 12:51:49 267

原创 二、JVM从入门到精通之虚拟机详解

一、虚拟机1.1 什么是虚拟机?所谓虚拟机(Virtual Machine),就是一台虚拟计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的Visual Box,VMware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令无论是系统虚拟机还是程序虚拟机,在上面运行的软件

2021-11-12 17:35:50 2457 2

原创 一、JVM从入门到精通之你曾被JVM伤害过吗?

前言在毕业之后,就一直想学习下JVM,来补足自己知识面的欠缺,但是没有一个系统的教程去作为学习资料,自己读书的话,又比较苦涩难懂、耗时巨长,哈哈,这可能是给自己懒能找到的最好的理由吧????????????!但是前几天在B站无意间刷到了宋红康老师的视频,感觉特别有喜感,听了几节,还不错,就果断拿下作为JVM学习的一个辅学素材,再搭配一本《JVM从入门到精通》的书,一个自己的JVM系列教程由此横空出世,希望各位C粉能够喜欢,从中学习到知识,共同进步????????????!!!上张宋老师的帅照(图片来

2021-11-12 13:44:50 1465

原创 十五、使用Netty自己实现dubbo RPC框架

一、什么是RPC?1.1 RPC基本介绍RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样(如图)3) 常见的 RPC 框架有: 比较知名的如阿里的Dubbo、google的gRPC、Go语言的rpcx、Apache的thrift,Spring旗下的 Spring Cloud。1

2021-11-11 18:04:02 142

原创 十四、Netty核心源码之连接请求源码分析

一、Netty核心源码之连接请求源码分析在上篇的服务器启动源码分析中,原文链接我们得知:服务器端的 NioServerSocketChannel 实例将自己注册到了 bossGroup 上(讲得更细一些,是 bossGroup 中 EventLoop 的 Selector 上),监听客户端连接,如下图所示。接下来,我们需要去研究的是服务器和客户端的连接请求源码1.1、监听 accept 事件,接受连接 & 创建一个新的 NioSocketChannel之前说过,NioEventLoop

2021-11-11 11:46:57 950

原创 十三、Netty核心源码分析之启动过程剖析

画外音本文使用的是 4.1.20 版本的 netty 源码。netty 源码包的总体结构如下,在 io.netty.example 中,官方给我们提供了很多的实例供我们参考。有项目实战需求的读者在了解了 Netty 的工作原理和常用 API 之后,可以参考这个包中的案例构建自己的网络 IO 程序。因为这篇文章是对netty的源码进行分析,所以篇幅可能会较长,博主尽量 用通俗易懂的语言以及较易理解的分析图为大家呈现,如果能坚持到阅读到最后,就足以说明你已经很棒了 ✌️ ✌️ ✌️ !!!一、1.

2021-11-10 19:10:48 654

原创 十二、Netty编码解码机制与Google Protobuf的使用

一、编码和解码1.1 基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据1.2 Netty本身的编码解码的机制和问题分析1、Netty自身提供了一些codec(编解码器)2、 Netty 提供的编码器 StringEncoder,对字符串数

2021-11-09 19:20:04 203

原创 十一、Netty 通过 WebSocket 编程实现服务器和客户端长连接

一、 什么是Websocket?1、websocket技术应用场景使用java技术快速学习一个简单的在线聊天室系统,该系统具备很强的扩展性,可以根据业务需要,制作在线客服系统、web版的微信、QQ即时通信系统等,使用较为流行的技术,采用积木式的编程思路。web领域的实时推送技术,也被称为Realtime技术,这种技术要达到的目的是绕过用户不需要刷新浏览器就可以获得实时更新。他有着广泛的应用前景,比如在线聊天室,在线客服系统、评论系统、WebIM等。2、websocket协议概述webSocket

2021-11-09 11:47:01 613

原创 十、Netty核心技术之Netty心跳机制

实例要求:编写一个 Netty 心跳检测机制案例, 当服务器超过 3 秒没有读时,就提示读空闲当服务器超过 5 秒没有写操作时,就提示写空闲实现当服务器超过 7 秒没有读或者写操作时,就提示读写空闲服务端代码实现Myserver类代码package com.netty.heartBeat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.Nio

2021-11-08 18:31:40 3053

原创 九、Netty核心技术之模块分析

BootStrap、ServerBootstrap介绍BootStrap意思是引导,一个Netty应用通常由一个BootStrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中BootStrap类是客户端程序的启动引导类,ServerBootStrap是服务端启动引导类常见的方法有public ServerBootStap group(EventLoopGroup parentGroup,EventLoopGroup childGroup),该方法用于服务器端,用来设置两个E

2021-11-08 17:15:20 440

原创 八、Netty核心技术之HTTP服务实例

一、实例要求:步骤:Netty服务器在8081端口监听,浏览器发出请求“http://localhost:8081/"服务器可以回复消息给浏览器客户端”hello 我是服务器“,并对特定请求资源进行过滤目的:Netty可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系1.1 代码实现1.1.1 NettyServer代码package com.netty.NettyHttp;import io.netty.bootstrap.ServerBootstrap;im

2021-11-04 16:25:57 1275

原创 七、Netty核心技术之异步模型分析

一、异步模型1.1、基本介绍异步的概念和同步相对,当一个异步过程调用发出后,调用者不能立刻得到。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。Netty中的IO操作是异步的,包括Bind,Write、Connect等操作会简单的返回一个ChannelFuture。调用者并不能立刻获得结果,而是通过Future-Listener机制,用户可以方便的主动获得或者通过通知机制获得IO操作结果Netty的异步模型是建立在future和callback的之上的。callback就是回调

2021-11-04 14:09:30 252

原创 六、Netty核心技术之TaskQueue自定义任务

一、Netty模型Netty主要基于主从Reactor多线程模型(如图)做了一定的改进,其中主从Reactor多线程模型有多个Reactor上图解析????1、Netty抽象出两组线程池BossGroup专门负责接收客户端的连接,WorkGroup专门负责网络的读写2、BossGroup和WorkGroup类型都是NioEventLoopGroup3、NioEventLoopGroup相当于一个事件循环组,这个组合含有多个事件循环,每一个事件循环是NioEventLoop4、NioEvent

2021-11-04 10:11:57 538

原创 五、Netty核心技术之线程模型讲解

一、线程模型基本介绍     不同的线程模式,对程序的性能有很大的影响,为了搞清Netty线程模式,我们来系统的讲解下各个线程模式,最后看看Netty线程模型有什么优越性。     目前存在的线程模型有:传统阻塞IO服务模型Reactor模式     根据Reator的数量和处理资源线程池线程的数量不同,有三种典型的实现单Reactor 单线

2021-11-02 20:30:50 713

转载 四、Netty核心技术之NIO与零拷贝

一、零拷贝1.1 零拷贝基本介绍零拷贝是网络编程的关键,很多性能优化都离不开在Java程序中,常用的零拷贝有mmap(内存映射)和sendFile。那么,他们在OS里,到底是怎么样的一个设计?我们分析mmap和sendFile这两个零拷贝另外我们看下NIO中如何使用零拷贝1.2 传统IO数据读写与零拷贝对比1.2.1 Java传统IO File file = new File("test.txt"); try { RandomAccessFile r

2021-11-02 11:23:30 299

原创 三、NIO网络编程应用实例—实现群聊系统

一、实例准备1.1 实例要求编写一个NIO群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端;可以监测用户上线,离线,并实现消息转发功能客户端:通过channel可以无阻塞发送消息给其他所有用户,同时可以接收其他用户发送的消息(有服务器转发得到)目的:进一步理解NIO非阻塞网络编程机制1.2 结构图二、 实现服务端代码package com.GroupChat;import java.io.IOException;import java.net.I

2021-11-01 17:19:17 242

JAVA核心面试知识整理.pdf

Java面试 看这一片就够了 ,硬怼面试管再也不怂

2021-10-08

一、Kafka简介.docx

一、Kafka简介.docx

2021-06-02

空空如也

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

TA关注的人

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