自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL之Innodb索引与算法

Innodb 索引与算法概述数据结构与算法二分查找二叉查找树和平衡二叉树二叉查找树平衡二叉树B+树B+树完整定义关于 M 和 L的选定案例B+树索引聚集索引辅助索引Cardinality 值Cardinality定义Cardinality的更新B+树索引的使用联合索引覆盖索引优化器选择不使用索引的情况索引提示Multi-Range Read 优化 (MRR)Index Condition Pushdown 优化 (ICP)哈希算法全文检索概述索引太少,查询效率低;索引太多程序性能受到影响,索引的使用应该

2021-10-07 00:49:35 242

原创 Spring源码之spring事务

spring事务Spring事务事务自定义标签自定义标签解析标签bean 的初始化InfrastructureAdvisorAutoProxyCreator获取增强方法获取所有增强中内适用于当前方法的增强TransactionInterceptor 事务增强的实现创建事务:回滚事务提交Spring事务spring声明式事务让我们从复杂的事务处理中得以脱身,我们可以不再去关注获得、关闭连接、事务提交、和回滚操作;简单来说事务可以做到在发生异常时进行回滚。事务自定义标签自定义标签spring事务的开关

2021-06-17 23:11:05 363 4

原创 《深入理解Java虚拟机》(七) volatile 变量

@[TOC](《深入理解Java虚拟机》(七) volatile 变量)学习JVM有一段时间了,现在开始进入并发阶段的学习;之前集中写博客是内存自动管理阶段,这部分有一个相当重要的问题JVM调优,这不仅增长见闻,与工作也有很大关系。之后的部分:虚拟机执行子系统、程序编译与代码调优就只是默默学习了一下概念。现在到了并发了,我知道是时候写博客记录下我的“李姐”了。没写博客的部分不是不重要,而是我还没实际触碰到,必然有一天那些忽视的东西还会重新捡起来。概述今天的主角是volatile变量,在讲它之前我会稍微

2020-10-29 22:18:14 231

原创 《深入理解Java虚拟机》(二) GC 垃圾回收机制

JVM之GC--垃圾回收机制一、概述二、判断对象是否需要被回收方式1、引用计数法:2、可达性分析法:一、概述JVM的结构中包含:线程独有的程序计数器、JVM栈、本地方法栈,他们的生命周期与线程一致,实现了内存自动清理,不需要GC进行内存管理;线程共享的方法区和堆区,其中方法区内存回收的条件非常苛刻,所以GC内存回收主要发生在堆上,程序运行期间这部分共享区域的内存分配和使用都是动态的;二、判断对象是否需要被回收方式1、引用计数法:每个对象使用一个引用计数属性,每当对象被引用/释放 自动改变引用计数,

2020-09-05 18:06:05 295 1

原创 千呼万唤始出来 JDK 21 LTS, 久等了

以前大家都说:他发任他发,我用JAVA 8抱歉,这次JDK 21 我不得不使用了已知使用较为广泛的几个 LTS版本是 (Long Term Support) :JDK 8 、JDK 11、JDK 17。

2023-09-26 07:52:36 1591

原创 流言粉碎机:JAVA使用 try catch会影响性能

流言粉碎机:JAVA使用 try catch会影响性能一、JVM 异常处理逻辑二、关于JVM的编译优化1. 分层编译2. 即时编译器1. 解释模式2. 编译模式3. 提前编译器:jaotc三、关于测试的约束执行用时统计编译器优化的因素关于指令重排序四、测试代码五、解释模式下执行测试六、编译模式测试七、结论前言:不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能。然而,事实真的如此么?我们对try catch 应该畏之如猛虎么?一、JVM 异常处理逻辑Java

2022-01-23 19:37:30 4618 5

原创 Jvm之直接内存与非直接内存

直接内存直接内存:概指系统内存,而非堆内存,不指定大小时它的大小默认与堆的最大值-Xmx参数值一致。非直接内存: 也可以称之为堆内存,运行JVM都会预先分配一定内存,我们把JVM管理的这些内存称为堆内存(非操作系统直接内存),JVM会对这些内存空间的分配和回收进行管理。所谓 直接的关系指的是与底层操作系统的关系。直接 非直接内存的概念与NIO有非常大的关联;在NIO之前,java.io 的方式是: 磁盘IO --> 直接内存[系统内核态] --> 非直接(堆)内

2021-12-17 00:17:34 1155

原创 letcode-Z字变形

题目将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems

2021-10-28 00:52:42 172

原创 letcode-动态规划解最长回文子串(消去二维数组)

动态规划解最长回文子串题目解题思路最终代码题目示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成来源:力扣(LeetCode)链接:https://leetcode-cn.com/

2021-10-26 23:56:46 124

原创 MySQL之Innodb存储引擎事务的实现

Innodb之事务一、基本概念事务的特性:ACID二、事务的实现三、事务控制语句四、隐式事务提交的SQL语句五、事务操作的统计六、事务隔离级别七、分布式事务八、不好的事务习惯九、长事务一、基本概念与 锁 一样,事务也是数据库区别于文件系统的重要特性之一。事务会把数据库从一种状态转换为另一种一致的状态。<假如整个世界是一个数据库系统,我们的任意行为都是在把世界从一个状态转换为另一个状态,区别是我们只管做,却没有回滚按钮。>也可以说:事务是访问并更新数据库中各种数据的一个程序的基

2021-10-17 22:49:20 280

原创 MySQL之Innodb存储引擎锁

Innodb存储引擎之锁一、概述二、lock 与 latch三、Innodb存储引擎中的锁锁一致性非锁定读一致性锁定读自增长与锁外键与锁四、锁的算法锁的算法Phantom Problem 幻读问题五、锁的问题脏读不可重复读丢失更新六、阻塞七、死锁八、锁升级一、概述数据库需要尽可能的提高并发访问效率,还要能确保每个用户能以一致的方式读取和修改数据,根据此问题诞生了锁机制。锁是数据库系统区别于文件系统的一个非常重要的特性,它用于管理对共享资源的并发访问,保证各个用户访问数据一致和完整。Innodb 提供

2021-10-10 15:49:44 375

原创 MySQL之Innodb存储引擎的表

Innodb 存储引擎表索引组织表Innodb逻辑存储结构表空间段区页行Innodb 行记录格式CompactRedundant行溢出数据Compressed 和 Dynamic 行记录格式char 的行结构存储Innodb 数据页结构视图 View分区表索引组织表Innodb 存储引擎表中,数据都是根据主键顺序存放,这种结构成为索引组织表,所以数据即索引,索引即数据。如果没有显式定义主键,MySQL将按如下方式选举主键:判断表中是否有唯一非空索引,如果有 以第一个建立索引 的唯一非空索引列为主键

2021-10-06 15:26:50 314

原创 记录一次被骗经历

我根据自己被骗经历总结了下:望谨记,骗子做的第一步都是为了取得你的信任。不要盲目相信权威,可能所谓的权威没有你想象得那么靠谱。不要盲目自信,太相信自己的判断也会是件可怕的事;人外有人,天外有天,永远正确。遏制冲动,不论什么时候,都要用脑子思考,而不是跟随你的情绪和欲望,但是这点恰恰是最难的。醒悟后尽快走出那种情绪,糟心不会让生活变得更好。我的被骗经历,来自于某个过于相信的人或事物,当自己进行粗略求证之后,就觉得可信了。现实生活中我也不是那么容易相信别人的那种人,这一切或许源于自负吧。我的被骗

2021-10-06 12:36:38 145

原创 MySQL数据库系统中的文件

Innodb存储引擎的文件概述参数文件日志文件错误日志慢查询日志查询日志二进制日志 binary log二进制日志的配置二进制日志的作用二进制日志的保存socket 套接字文件pid文件MySQL表结构定义文件存储引擎文件概述本文主要讲述MySQL数据库和Innodb存储引擎表的各种类型文件,主要包括如下内容:参数文件日志文件socket 文件pid文件MySQL表结构定义文件存储引擎文件参数文件启动时它告诉MySQL实例,在哪里可以找到数据库相关文件,除此之

2021-10-06 01:12:18 725

原创 MySQL之Innodb存储引擎介绍

Innodb存储引擎一、概述二、Innodb体系架构后台线程内存池1. 缓冲池2. LRU List、Free List 、Flush List3. 重做日志缓冲 redo log buffer4. 额外的内存池三、CheckPoint技术四、Innodb关键特性Insert buffer (插入缓冲)insert buffer 定义Insert buffer 的实现Merge Insert Buffer两次写 doublewrite自适应哈希索引异步IO刷新邻接页一、概述从MySQL5.5版本开始,I

2021-10-05 13:02:58 377

原创 Innodb学习之MySQL体系结构

MySQL之体系结构数据库和数据库实例MySQL体系结构MySQL各存储引擎特性Innodb存储引擎MyISAMBDB:MemoryArchiveFederated数据库和数据库实例数据库是所有文件的集合,是依照某种数据模型组织起来的数据集合。而数据库实例,指的是程序,是位于用户与操作系统之间的一层数据管理软件,用户通过数据库实例对数据库进行操作。数据库不是文件系统,它区别于文件系统的不同之处在于,数据库需要支持锁、支持事务等。MySQL体系结构在MySQL 5.1中,MySQL A

2021-10-04 18:04:01 107

原创 letcode-不含连续1的非负整数

不含连续1的非负整数刚开始写了个暴力循环,发现计算到:1000000000 时超时了,然后自己单独计算发现需要4秒才能算完,那么O(n) 时间遍历肯定是不行了。根据题目提示:二进制不包含连续1,那么应该使用动态规划。动态规划的定义之一:将递归算法重新写为非递归算法,该非递归算法需要把递归算法过程中的子问题答案记录到一个表中。根据该定义,我们对不同的位数的二进制数进行统计,有多少个合规数:一、 1 位时:2个01二、 2位时:3个000110三、 3位时:5个00000101

2021-09-12 03:52:47 119

原创 Spring源码之springMVC

web.xml它的作用是配置初始化信息,如web页面、servlet、servlet-mapping、filter、listener、启动加载级别等。SpringMVC 通过servlet拦截所有的URL来达到控制的目的,所以它必须要有web.xml比较关键的配置是:contextConfigLocation 配置spring配置文件地址DispatcherServlet 前端控制器程序入口ContextLoaderListener.initWebApplicationContex

2021-06-09 22:16:31 176 2

原创 纪念伟人逝世

一位伟人在2021年5月22日13点07分,与世长辞。

2021-05-22 14:55:18 351

原创 Spring源码之-AOP

Spring源码 - AOP2.必要的准备工作什么是代理模式?3.大话AOP那么AOP 具体是什么呢?实现AOP的方式二、动态AOP自定义标签1、JDK动态代理2、CGLIB 代理三、创建AOP代理1.获取所有增强器2.寻找匹配的增强器3.创建代理四、创建AOP静态代理1.自定义标签2.织入结语PS * 文中代码均为伪代码,本文基于spring 5.0 ,如有谬误,感谢指正!!!# 一、大话AOP## 1.AOP的概念AOP(Aspect Oriented Programming),即面向切

2021-05-19 00:07:20 376

原创 Spring源码之容器的功能拓展-ApplicationContext

容器的功能拓展一、解析预备 刷新上下文环境 例如对系统属性或者环境变量进行校验和准备二、初始化 BeanFactory 并进行 Xml 配置文件的读取三、对BeanFactory 各种功能填充四、激活以及注册各种 BeanFactoryPostProcessor 后处理器五、注册后处理器 BeanPostProcessor后续环节PS * 本文代码基本为伪代码,注释为个人理解,水平有限,如有谬误,感谢指正。关于spring的容器,除了BeanFactory以及它的默认实现类XmlBeanFactory

2021-05-03 23:55:30 162 2

原创 Spring源码之bean的加载

spring 源码阅读 -- bean 的加载1. FactoryBean 的使用2. 缓存中获取单例 bean;3. 从 bean 实例获取对象,4. 获取单例 bean (从缓存加载失败);5. 创建 bean (createBean)6. 循环依赖7. 创建 bean本文,入口:<> spring-framework-5.0.x\spring-beans\src\main\java\org\springframework\beans\factory\support\Abstract

2021-04-24 23:20:28 124

原创 Spring源码中用到的设计模式

Spring源码中用到的设计模式一、策略模式二、观察者模式三、装饰器模式一、策略模式首先讲两个面向对象设计原则:找出应用中可能需要变化的部分,把他们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程而不是针对实现编程多用组合少用继承让我们描述一个例子,假如我们要设计一系列的哺乳动物类,他们都能跑run()、会say()、外观display();我们可以设计一个抽象类,Animal。当需要一个Tiger老虎类时,继承Animal,并实现自己的say()(嗷嗷叫);display()

2021-03-26 01:25:20 842

原创 《深入理解Java虚拟机》(八) 记录一次OOM问题分析实战

记录一次JVM调优实战一、主要问题概述以及分析(一).相关操作(二).现象(三).分析二、相关工具介绍三、实际问题快照分析(一).通过Memory查看老年代内存占用情况(二).选择Live Memory 视图,(三).生成堆快照,分析对象信息四、代码逻辑问题五、性能问题(一).现象(二).处理一、主要问题概述以及分析上班高峰期间,系统使用一段时间后崩溃,报错内存溢出;(一).相关操作打印系统运行GC日志,初步分析堆内存分代情况;jvisualvm实时观察系统运行过程中堆内存占用、活动线程数量曲线。

2021-03-13 16:25:06 201

转载 JProfile分析JVM内存溢出、线程阻塞

原文章地址:https://www.cnblogs.com/jpfss/p/8488111.htmlPS* JProfile是付费软件。对JVM有一定理解食用更佳一.JProfiler是什么JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。其特点:使用方便界面操作友好对被分析的应用影响小CPU,Thread,Memory分析功能尤其强大支持对jdbc,noSql, jsp, servlet, socket等进行分析支

2021-03-06 17:08:09 1604

原创 letcode-《两数相加》

问题ListNode是自定义链表,通过两个ListNode对象给定两个整数,计算他们的和,并以同样方式返回:123 + 348 = 471#mermaid-svg-Vh6jjJ2ZbzNzbQJB .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Vh6jjJ2ZbzNzbQJB .label text{f

2021-03-03 00:40:13 98

原创 letcode-《二维区域和检索 - 矩阵不可变》

问题问题:给定一个二维数组,给定一个矩形框的左上角坐标(a1,a2),右下角坐标(b1,b2),计算该区域内数字之和。解题思路O(1) * (row2 - row1 + 1) * (col2 - col1 + 1);数组已经是常数访问时间了,还有什么花哨的玩法么代码class NumMatrix { private int[][] matrix; public NumMatrix(int[][] matrix) { this.matrix = matrix;

2021-03-03 00:31:15 70

原创 letcode-《 无重复字符的最长子串》O(N)解法

解题思路无重复字串,如果某个字串包含重复字符,那么直接不必考虑;测试案例:abcabcbbb1 初始化一个stringBuilder作为工作空间,一个String对象result保存中间步骤结果。2 从字符串第一个字符开始,判断是否已经存在StringBuilder中;3 如果不存在,将该判断位字符添加到StringBuilder;4 如果已存在,判断是否需要导出StringBuilder到result,从重复字符开始裁剪StringBuilder;例如:result="" StringB

2021-03-03 00:25:28 137

原创 《数据结构与算法》(二)JAVA链表实现O(N) 时间复杂度的两个有序序列求交集和并集

逻辑较为简单,就不赘述了。import java.util.LinkedList;import java.util.ListIterator;public class Union { public static void main(String[] args){ int[] a = {1,4,6,8,9,13,15,25,35,46,47}; int[] b = {-2,-1,1,3,4,6,8,9,11,13,15,21,23,25,30,33,35,36,

2020-12-24 22:03:54 417

原创 《数据结构与算法》(一) 基于JAVA栈 实现中缀表达式后缀表达式互相转换

利用栈实现中缀表达式转后缀表达式一、原理:需要注意的是:二、案例如下:3、代码:一、原理:a.定义一个栈用于存放运算符,以及 括号 “[()]” 操作符b.定义一个字符串result用于接收计算结果c.从表达式第一个字符开始作为判断位;(判断位,用于与栈顶元素对比优先级,从而确定:将判断位入栈 或者 将栈顶元素弹出 )d.遇到操作数作为判断位,直接将其作为结果添加到result的末尾;e.如果碰到判断位是操作符,当栈为空时直接将其入栈,表达式下一位作为判断位;栈不为空时,比较

2020-12-24 18:08:42 231 1

原创 IDEA启动web程序异常: Could not create the Java Virtual Machine.

原因,之前进行JVM调优时,把程序打成了WAR包,然后在tomcat/bin/catalina.bat中配置了如下的JVM参数参数本身没问题,当我停掉tomcat启动的war包,去通过IDEA启动项目时就报错了:起初没意识到这个问题,就百度搜了一下:大概回答有:描述一:环境变量带中文字符;(我不存在这个问题);按照这个方法,检查步骤是在命令行输入:java 或者javac等,类似命令,如果提示:Could not create the Java Virtual Machin.

2020-10-19 11:08:50 6091 1

原创 《深入理解Java虚拟机》(四) 调优工具、指令

调优工具、指令

2020-10-10 10:49:41 208

原创 《深入理解Java虚拟机》(六) 调优策略 -- 笔记

回收策略

2020-10-07 21:21:24 109

原创 《深入理解Java虚拟机》(五) JVM调优案例

JVM调优案例问题问题我们公司的程序是的B/S架构,工作中碰到客户提出一个问题,他们的系统最近突然会用着用着就卡死掉–浏览器访问服务器一开始会卡顿,直至最终会完全卡死没有响应。并且客户反馈的是最近才变卡的,之前一直没有问题,现在一旦系统卡住就需要重启,对正常使用造成了严重影响。客户的服务器配置如下(应用程序服务器以及数据库服务器都是如下配置)内存:32G磁盘:机械 2 TCPT: 两颗4核 CPU由于我司产品是客户内部部门间使用,所以并发量并不大,上述配置已经完全足够开销。排查问题经过

2020-09-13 23:59:00 302 1

原创 《深入理解Java虚拟机》(三)类加载机制

《深入理解Java虚拟机》之--类加载机制1、什么是类的加载Java虚拟机把描述类的二进制流冲.Class文件中读到内存中,并在这个过程对加载的数据进行校验、转换解析、初始化,最终形成可以被Java虚拟机直接使用的java类型,这个过程叫做虚拟机的类加载机制。类的加载会把类的数据结构信息存放于方法区,并在堆区创建一个java.lang.Class对象,用来封装该类在方法区的数据结构,该类对应的java.lang.Class对象就是类加载的最终产品;Java程序员可以通过该类对应的java.lang.Cl

2020-09-13 19:25:02 1072

原创 《深入理解JAVA虚拟机》(一) JVM 结构 + 栈帧 详解

1、程序计数器: 线程独有,每个线程都有自己的计数器;由于CPU的任意时刻只能执行所有线程中的一条,所以需要使用程序计数器来支持JVM的并发;另外字节码解释器读取下一行指令、分支、循环、跳转、异常处理等等逻辑都依赖于程序计数器。程序计数器是JVM唯一不存在OutOfMemoryError的区域;2、Java虚拟机栈: 线程独有,用于保存线程相关的栈帧(@注1);生命周期与线程相同,线程中,方法执行的过程等同该方法对应栈帧从入栈到出栈的过程,如果方法执行过程中调用了其它...

2020-08-19 23:10:39 581

原创 vue + vant + cordova打包app(H5版,非原生)

设置安装项目依赖的指令最好选择在pwoershell下执行,普通cmd窗口下可能没有一些权限导致指令执行报错;普通cmd窗口中输入: powershell即可####vue一、.安装node.js //注意 node.js字带 npm 但是版本不一定最新二、.npm更换淘宝镜像,虽然可以使用npm,但是windows下cnpm指令可能会出现莫名奇妙的问题,所以建议直接把npm镜像更换成淘宝镜像直接使用npm指令://替换淘宝镜像npm config set registry http.

2020-06-13 21:33:08 2842

原创 Think In JAVA读书笔记--5

复用类介绍了继承的知识,个人认为继承的核心是:导出类对象包含一个基类对象,就像是他的一个成员一样,可以发送给基类对象的消息一样可以发送给导出类对象,可以认为导出类是基类的一个子集,一个类只能继承一个基类。多态再来谈谈两个很重要的概念:向上转型:如同上述所言,导出类是基类的子集,所以可以明确的说,导出类一定是一个基类,基类的声明可以指向一个导出类的对象。向下转型:要理解这个盖帘就...

2019-11-05 19:20:38 306

原创 encodeURIComponent二次编码解决转义字符URI编码

工作中碰到一个问题,客户在某个字段输入的时候输入了一个回车(总之带有转义字符\ ) ,最初写代码的时候只是考虑了汉字、百分号%等等符号,也没注意到转义字符,就只是进行了一次编码如下:?attr=encodeURIComponent(Str_With_Enter)&key1=value1&key2=value2&key3=value3然而由于转义字符的特殊性,只...

2019-10-23 10:31:52 1719

原创 ThinkInJava学习笔记--4 组合、继承与代理

《复用类》组合:实现方法为通过在类中添加其他类对象为域达到目的,可以调用该类对外暴露的方法和域。 通过添加类对象,即使类未申明为public(继承或包访问权限),也可以通过类对象调用其public成员方法和域。继承:通过extends关键字得到基类向下暴露的方法和域(通常设计技巧将域设置为private,而将方法全部设置为public) 当基类没有默认的无参数构造器时,在导...

2019-10-08 11:16:44 255

mod_jk.so文件

刚出来实习让搞apache集成tomcat当服务器,由于自己在学校只学过理论基础,所以对这些东西的了解完全从空白开始,一路跌跌撞撞走了很多弯路,我要说的第一句话是,不要把apache集成tomcat和Apache + Tomcat集群混为一谈,我刚开始由于不懂一直按后者来配置,由于哪些博客都是很久以前写的了(很多大佬那时用的apache都是2.2的),出了很多问题,但由于概念被我搞混了一直不能解决问题,可谓心力交瘁了。

2018-08-20

空空如也

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

TA关注的人

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