自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 mysql日志( Redo Log 、Undo Log、Bin Log)

InnoDB是一个带有ACID事务支持的存储引擎,其中redo log和undo log是其实现原子性、一致性、隔离性和持久性(ACID)的重要机制。

2024-03-20 10:58:33 1039

原创 leetcode-873. 最长的斐波那契子序列的长度【动态规划】

目录题目解法一:暴力解法解法二:动态规划题目最长的斐波那契子序列的长度如果序列X_1, X_2, ..., X_n满足下列条件,就说它是斐波那契式的:n >= 3对于所有i + 2 <= n,都有X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列 arr,找到 arr中最长的斐波那契式的子序列的长度。如果一个不存在,返回0 。(回想一下,子序列是从原序列 arr中派生出来的,它从 arr中删掉任意数量...

2021-10-21 23:35:46 274

原创 leetcode-5. 最长回文子串【字符串】

目录题目解法一:暴力解法解法二:动态规划题目最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成

2021-10-19 23:43:21 128

原创 leetcode-3. 无重复字符的最长子串【字符串】

目录题目思路题目无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。...

2021-10-19 00:31:29 129

原创 leetcode-225. 用队列实现栈【队列/栈】

题目用队列实现栈用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead",".

2021-10-14 01:19:12 83

原创 leetcode-09. 用两个栈实现队【栈/队列】

目录题目思路题目剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入.

2021-10-14 00:48:58 68

原创 leetcode-189. 旋转数组【数组】

目录题目思路题目旋转数组给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-10...

2021-10-12 23:51:23 84

原创 leetcode-61. 旋转链表【链表】

目录题目思路力扣风采题目61. 旋转链表给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 *...

2021-10-11 01:07:37 98

原创 leetcode-206. 反转链表【链表】

目录题目思路力扣风采题目反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000来源:力扣(LeetCode)链接:https:.

2021-10-10 23:55:04 69

原创 leetcode-2. 两数相加【链表】

目录题目:两数相加思路力扣风采题目:两数相加给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers示例 1:输入:l1 = [2,4,3], l2 = [...

2021-10-10 00:54:10 90

原创 leetcode-1281. 整数的各位积和之差

目录题目思路:力扣风采题目1281. 整数的各位积和之差给你一个整数n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例 1:输入:n = 234输出:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释:各位数之积 = 4 * 4 * 2 * 1 = 32各位数之和 = 4 + 4 + 2 + 1 ...

2021-10-09 00:15:57 244

原创 leetcode-7.字符串反转【字符串】

目录题目:7. 整数反转图解:思路:完整代码:力扣风采(不是最优再接再励)题目:7. 整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120...

2021-10-08 23:24:16 135

原创 【冲刺大厂P6专题】JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代?(看完此文再也不怕面试官问我GC的过程了)

先描述一下Java堆内存划分,再解释Minor GC,Major GC,full GC,描述它们之间转化流程。目录1.内存结构2.堆GC触发条件垃圾收集器年轻代GC触发条件老年代GC (Major GC)触发机制FullGC 触发机制3.GC的过程描述1.内存结构GC通常是发生在堆上,堆上GC的内存结构如下:默认 -XX:NewRatio=2 , 标识新生代占1 , 老年代占2 ,新生代占整个堆的1/3.修改占比 -XX:NewPatio=4 , 标识新..

2021-08-07 19:14:14 4377

原创 【冲刺大厂P6专题】JVM内存为什么要分成新生代,老年代,持久代?新生代中为什么要分为Eden和Survivor?

需要先了解区域分配目录1)共享内存区划分2)为什么分年老代和新生代3)为什么要分为Eden和Survivor?为什么要设置两个Survivor区?1)共享内存区划分 1.共享内存区 = 持久代+ 堆(注;jdk1.8及以上jvm废弃了持久代) 2.持久带代= 方法区 + 其他 3.Java堆 = 老年代 + 新生代4.新生代 = Eden(伊甸区) + S1(幸存1) + S2(幸存2)2)为什么分年老代和新生代1)新生代(Young Gen):年...

2021-08-07 18:51:09 2087 1

原创 Nettty线程模型和Reactor模式

线程模型基本介绍不同的线程模式,对程序的性能有很大影响,在学习Netty线程模式之前,首先讲解下各个线程模式,最后看看Netty线程模型有什么优越性.目前存在的线程模型有:(1)传统阻塞I/O服务模型(2)Reactor模型根据Reactor的数量和处理资源池线程的数量不同,有3种典型的实现:单Reactor单线程单Reactor多线程主从Reactor多线程传统阻塞I/O服务模型采用阻塞IO模式获取输入的数据,每个连接都需要独...

2021-08-01 17:48:55 216

原创 BIO、NIO、AIO有什么区别

目录IO模型概要BIO(同步并阻塞)NIO(同步非阻塞)AIO(异步非阻塞)BIO、NIO、AIO适用场景分析IO模型概要IO模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能.Java共支持3种网络编程模型/IO模式:BIO(同步并阻塞)、NIO(同步非阻塞)、AIO(异步非阻塞)阻塞与非阻塞.BIO(同步并阻塞)JavaBIO就是传统的socket编程.BIO(blockingI/O):...

2021-08-01 17:38:34 182

原创 【冲刺大厂P6专题】集群分布式Session是如何实现的

目录分布式环境下session会存在的问题?分布式Session⼀致性的⽅案一.Nginx的IP_Hash策略(可以使⽤)二.Session复制(不推荐)三.Session共享,Session集中存储(推荐)分布式环境下session会存在的问题?图解:文字解:出现这个问题的原因从根本上来说是因为Http协议是⽆状态的协议。客户端和服务端在某次会话中产⽣的数据不会被保留下来,所以第⼆次请求服务端⽆法认识到你曾经来过,Http为什么要设计为⽆状态协议?早期...

2021-07-30 01:17:33 233

原创 【冲刺大厂P6专题】常用的分布式ID解决方案

目录分布式ID概念分布式ID实现方案?1.UUID(可以⽤)2.独立数据库的自增ID(基本不用,列出来以供了解)3.SnowFlake雪花算法(可以⽤,推荐)4.借助Redis的Incr命令获取全局唯⼀ID(推荐)分布式ID概念为什么需要分布式ID(分布式集群环境下的全局唯⼀ID唯一标识)分布式ID实现方案?1.UUID(可以⽤)UUID是指UniversallyUniqueIdentifier,翻译为中⽂是通⽤唯⼀识别码产...

2021-07-25 22:28:00 242 2

原创 Tomcat核心知识梳理(Tomcat体系结构、Tomcat类加载机制剖析、Jvm类加载机制剖析)

目录Tomcat体系结构概要Tomcat体系结构结构概念如下:ServerEngineHostConnectorContextWrapper找到Tomcat安装路径下的Server.xml看到tomcat中的内部结构(去掉杂余注释更清晰,如下代码)Tomcat类加载机制剖析JVM的类加载机制双亲委派机制什么是双亲委派机制双亲委派机制的作⽤Tomcat的类加载机制Tomcat体系结构概要Tomcat是⼀个Http服务器(能够...

2021-07-18 23:01:43 191

原创 SpringBoot核心知识梳理

目录基础篇一.SpringBoot的自动配置原理是什么?二.SpringBoot中如何解决跨域问题?源码篇四.源码剖析-自动配置SpringBoot到底是如何进行自动配置的,都把哪些组件进行了自动配置?@SpringBootApplication@SpringBootConfiguration@EnableAutoConfiguration@AutoConfigurationPackage六.在SpringBoot中Mybatis自动配置源码分析基...

2021-07-07 01:04:39 1081

原创 SpringMVC核心知识的梳理(现在都用SpringBoot了,但是SpringMVC还的学的扎实点,饮水思源)

目录前言:一.SpringMVC的工作流程二.SpringMVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?三.常用注解1.注解原理是什么2.SpringMVC常用的注解有哪些?3.SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?4.@Controller注解的作用5.@RequestMapping注解的作用6.@ResponseBody注解的作用7.@PathVariable和@RequestParam的区别五.Sprin...

2021-06-27 17:39:20 347

原创 Spring核心知识梳理(面试问的都在这里)

一.基本概念1.JavaBean与SpringBean区别用处不同:  传统javabean更多地作为值传递参数,而spring中的bean用处几乎无处不在,任何组件都可以被称为bean。写法不同:  传统javabean作为值对象,要求每个属性都提供getter和setter方法;但spring中的bean只需为接受设值注入的属性提供setter方法。生命周期不同:  传统javabean作为值对象传递,不接受任何容器管理其生命周期;spring中的be...

2021-06-13 23:48:45 487 6

原创 Mybatis中应用到的设计模式

Mybatis源码用到的设计模式概览 模式 mybatis体现 Builder模式 例如SqlSessionFactoryBuilder、Environment; 工厂方法模式 例如SqlSessionFactory、TransactionFactory、LogFactory 单例模式 例如ErrorContext和LogFactory; ...

2021-06-02 18:13:10 101 3

原创 Mybatis核心知识梳理

一.Mybatis架构原理1.Mybatis入门该网站总结的非常详细http://c.biancheng.net/view/4309.html2.Mybatis架构原理2.1架构设计(1)我们把Mybatis的功能架构分为三层:(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis和数据库的交互有两种方式:a.使用传统的MyBatis提供的API;b.使用...

2021-06-02 17:21:09 359 2

原创 并发编程之AQS

目录什么是AQS?AQS应用在哪里?为什么需要AQS?AQS作用(总述)AQS原理state状态state修改的问题FIFO队列获取/释放方法什么是AQS?AQS(AbstractQueuedSynchronizer)抽象队列同步器,具体是什么下面说。我们大多数的程序员都是业务开发者,而不是JDK开发者,所以平时并不需要自己来开AQS应用在哪里?找到AbstractQueuedSynchronizer类Ctr...

2021-05-04 20:51:49 125 1

原创 并发编程之CAS

概念:CAS的全称是Compare-And-Swap,它是CPU并发原语,它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作,再次强调,由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的...

2021-05-04 18:05:45 124 3

原创 并发编程之线程池(阻塞队列,拒绝策略,线程池种类)

目录1.使用线程池比手动创建线程好在哪里?2.线程池各个参数的含义3.学习线程池参数从创建线程线程池创建(从一个小例子说起)4.线程池拒绝策略5.线程池常用阻塞队列ArrayBlockingQueue(基于数组的先进先出队列,有界)LinkedBlockingQueue(基于链表的先进先出队列,无界)SynchronousQueue(无缓冲的等待队列,无界)DelayedWorkQueue6.有哪6种常见的线程池?什么是java8的ForkJoinPoolFix.

2021-05-04 12:27:33 831

原创 并发编程之volatile (JMM内存可见性,不保证原子性,禁止指令重排)

目录1.可见性一.了解JMM可见性需先知道主内存与工作内存的关系二.Volatitle可见性2.不保证原子性3.禁止指令重排指令重排理解volatile禁止指令重排4.使用场景分析(单例模式双端检锁机制怎么也存在线程安全问题)可见性,原子性,顺序性是并发编程三要素。Volatitle能够实现可见性,不能保证原子性,禁止指令重排保证了顺序性,在并发编程种非常常见,面试中也是常客。面试官往往会说聊下对Volatitle理解,当你回答完第一个问题,接下来将是接连的炮轰。..

2021-04-28 10:39:28 197

原创 并发编程之线程的状态(线程的生命周期)

人从出生最终会死亡,线程也有自己的生命周期,在 Java 中线程的生命周期中一共有 6 种状态,换种说法也可说是4种状态,把(计数等待,等待,阻塞)可统称为阻塞状态。如下图和文字描述。目录1.New(新创建)2.Runnable(可运行)3.Blocked(阻塞)一. Bolocked被阻塞二.Waiting(等待)三.Timed Waiting(计时等待)4.Terminated(终止)如图:1.New(新创建) New 表示线程被创...

2021-04-27 20:26:02 128

原创 多路查找树(B树,B+树)

目录多路树理解B树(B-Tree树)B+树B+树应用场景B和B+的区别多路树理解多路查找树(muitl-way search tree),其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。(注意:二叉树是两个叉 ,多路树一个节点不止两个叉,不清楚的查看我【重温数据结构和算法】那篇博客)B树(B-Tree树)是对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。一棵m阶的B 树 (m叉树)的特性如下:

2021-04-27 19:28:43 573

原创 并发编程之线程安全的集合(Collections工具类,Concurrent并发包有很多线程安全的,来来都在这里,告别死记硬背)

先抛个砖头,那就问下ArrayList是线程安全的吗?大家肯定都知道不是线程安全的。我们平时在做有关多线程操作集合时使用ArrayList集合,会发现控制台提示:java.util.ConcurrentModificationException,分析它的内部源码, public void add(int index, E element) { rangeCheckForAdd(index); modCount++;//不是一个原子操作,高并发情况,会出现数据

2021-04-27 15:06:37 1037

转载 并发编程之锁(锁的种类,锁的升级,死锁)

并发编程知识体系中很有多知识都与锁有关,本文主要对锁种类概念阐释。后续博客中也会深入去研究锁的相关知识。1.锁的分类偏向锁/轻量锁/重量锁(锁的升级)第一种分类是偏向锁/轻量级锁/重量级锁,这三种锁特指 synchronized 锁的状态,通过在对象头中的 mark word 来表明锁的状态。偏向锁 如果自始至终,对于这把锁都不存在竞争,那么其实就没必要上锁,只需要打个标记就行了,这就是偏向锁的思想。一个对象被初始化后,还没有任何线程来获取它的锁时,那么它就是可偏向的,当有第一个线...

2021-04-26 14:16:30 150

原创 重温数据结构和算法

算法和数据结构(重温数据结构和算法)一.简介 当今中型,大型互联网公司算法和数据结构是必考题,工作中如果遇到底层组件开发良好的数据结构和算法设计必不可少,因此学好数据结构和算法作为程序员是必修的内功,练好内功基础的理论搞清楚非常必要,所谓工欲善其事必先利其器。下面这边文章会介绍一些理论知识附加一些经典案例。常见数据结构:常见算法:二.算法复杂度1.时间复杂度大O复杂度表示法看看什么是时间复杂度: int sum(int n){ in...

2021-04-13 14:12:29 249

原创 微服务项目部署之从idea直接部署微服务项目到docker中(堪称保姆一样细节)

一.idea连接虚拟的docker 1.Docker默认是不允许远程访问的,需要在配置文件配置以下使用命令进入配置:vim/lib/systemd/system/docker.service设置配置:ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375-Hunix://var/run/docker.sock\如下图:2.重启和验证是否成功相关命令 #重新加载配置文件 syste...

2021-04-03 22:33:58 1346 1

原创 Mysql基础概念巩固(分库分表,存储引擎,索引,备份,锁,EXPLAIN性能分析)

一.分库分表概念介绍1.什么是分库分表 简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散 存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。2.什么场景下需要分库分表 (1)单机存储容量遇到瓶颈. (2)连接数,处理能力达到上限.分库分表解决的问题: 分库分表的目的是为了解决由于数据量过大而导致数据库性能降低的问题,将原 来单体服务的数据库进行拆分.将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量...

2021-03-25 14:10:49 346 1

原创 Kafka环境搭建和理论基础

一.消息对列1.什么是消息对列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。队列 Queue 是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。比如生产者发送消息1,2,3...对于消费者就会按照1,2,3...的顺序来消费。2.消息对列的应用场景 消息队列在实际应用中包括如下四个场景: (1) 应用耦合:...

2021-03-16 14:15:17 270

原创 ElasticSearch, Kibana环境搭建和理论基础

1.简介 Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticsearch、Logstash、Kibana等,前面说的三个就是大家常说的ELK技术栈。 Elasticsearch官网:https://www.elastic.co/cn/products/elasticsearch Elasticsearch是一个基于Lucene搜索引擎为核心构建的开源,分布式,Restful 搜索服务器。 功...

2021-03-15 19:13:14 130

原创 Docker中安装Mysql

1.安装步骤(1)拉取镜像命令: docker pull mysql:5.7 (2)进入容器并进行与宿主机的端口映射(注意:安装时提示容器已存在,此时可以先停止之前的容器,然后使用命令删除以前的,再执行新的命令) 启动容器并进行端口映射:docker run -di --name=mysql_5.7 -p 3307:3306 -v /root/mysql/logs:/logs...

2021-03-15 15:58:02 100

原创 Lucene基础概念

1.什么是全文检索 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方法。这个过程类似于通过字典的目录查字的过程。 将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。 例如:字典。字典的拼音表和部首...

2021-03-15 15:51:26 120

原创 Docker基础(从一脸懵到入门)

1.Docker简介一.什么是虚拟化技术 虚拟化技术是一种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的,不可切割的障碍。使用户可以比原本的组态更好的方式,来应用这些资源。 虚拟化技术主要作用: 高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件 软件跨环境迁移问题(代码的水土不服)二.什么是Docker 官网地址:https:/...

2021-03-15 15:46:11 109

门户网站前后台(对牡丹的宣传)

本项目可以让小白门户网站的做法,以及对三层架构的熟悉。

2018-04-26

三层架构crud和分页及无刷新分页

三层架构crud和分页,此外源码中还包涵前端应用Ajax进行crud和分页

2018-04-10

空空如也

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

TA关注的人

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