- 博客(116)
- 资源 (2)
- 收藏
- 关注
原创 getMergedLocalBeanDefinition 方法的作用
例如我们要配置两个不同的数据库,分别是使用了不同的密码和账号,但是某些属性上是相同的通常我们会有如下配置:
2025-03-02 02:21:36
901
原创 扩展-通过idea 中的Frames 来查看当前栈帧
假如有如下一个类,我们在idea 中可以通过后续的操作查看出栈入栈的情况。** 执行到了A方法,A方法入栈,之后的方法执行依次类推**
2024-07-28 17:23:56
387
原创 8. 运行时数据区-堆
一般Java程序中堆内存是空间最大的一块内存区域。创建出来的对象都存在于堆上。栈上的局部变量表中,可以存放堆上对象的引用。静态变量也可以存放堆对象的引用,通过静态变量就可以实现对象在线程之间共享。堆内存的调优堆空间有三个需要关注的值,used total max。used指的是当前已使用的堆内存,total是java虚拟机已经分配的可用堆内存,max是java虚拟机可以分配的最大堆内存。·如果不设置任何的虚拟机参数,max默认是系统内存的1/4,total默认是系统内存的1/64。在实际
2024-07-28 17:17:34
414
原创 7. 运行时数据区-栈
当一个方法被调用时,JVM会保存当前线程的程序计数器的值作为返回地址,这个值指示了在调用当前方法之前,线程正在执行的指令的下一条位置。,0代表注释掉的方法A,1代表变量i,2代表变量j,由此我们可以看出以变量"i"为例,i在第二行开始执行,也就是下方为1的位置,在第六行结束也就是下方为5的位置,所以这里的起始pc为2,长度为5。**序号:**对应局部变量表中变量的起始位置,也就是“槽”的位置,假如有一个变量为 ** i **则在局部变量表中的序号为0,则变量 i 在局部变量表中槽的位置为0。
2024-07-28 17:04:35
967
原创 6. 运行时数据区-程序计数器和栈帧
程序计数器也叫做PC寄存器,PC寄存器是用来存储指向下一条指令的内存地址,也即将将要执行的指令代码,由执行引擎读取下一条指令,在执行完毕当前指令之后,JVM的执行引擎会通过程序计数器获取下一条指令的地址来执行后续指令。当前类的字节码指令引用了其他类的属性或者方法时,需要将符号引用(编号)转换成对应的运行时常量池中的内存地址。动态链接就保存了编号到运行时常量池的内存地址的映射关系。Java虚拟机在运行Java程序过程中管理的内存区域,称之为。运行时数据区分为两大类,线程共享和线程不共享,
2024-07-28 16:53:39
472
原创 5. 双亲委派机制
ClassLoader中的loadClass方法分析// name字段:class名称// resolve: 是否执行链接阶段的代码,如果为true则执行链接阶段的相关代码// 加锁防止多线程情况下重复加载// 首先检查当前类是否已经被加载Class
2024-07-28 16:39:29
797
原创 4. 类加载器
将当前jar包放入jre/lib下之后启动类加载器会加载对应的jar包,不推荐这种方式,尽可能不要去更改JDK安装目录中的内容,因为Java虚拟机在加载的时候会对jar包的名称进行校验,名称必须符合一些规范,当不满足某些名称的规范的时候可能出现各种问题。然后输入,-Xbootclasspath/a:jar包目录/jar包名称,-Xbootclasspath后面的那个a 字符代表添加的意思。去掉了扩展类加载器,新增平台类加载器根据jdk9中的模块化的概念进行加载,剩余部分等待后续补充。
2024-07-28 16:35:04
949
原创 3. 类的生命周期
初始化阶段会执行字节码文件中clinit部分的字节码指令,这里的clinit 中cl 代表类(class),而init 代表初始化,所以这里代表的就是类的初始化,所以初始化阶段执行的就是字节码文件中的clinit部分的指令。这个有个问题,下面的代码时成员变量,如果非成员变量的情况下准备阶段是否也能在编译器就确定某些变量的值(应该是可以的,回头用Java命令确定一下)这段代码在准备阶段的值是0因为int 类型没有赋值之前的值默认都为0,而在初始化阶段才会把当前的真正将1的值赋值给value字段。
2024-07-27 23:56:41
1031
原创 2. Class 文件的组成
class文件魔数就是指class文件开头的ca fe ba be 联合起来是咖啡馆的意思,魔数(Magic Number)用于辨别当前文件是否是JavaClass 文件,例如:将class 文件的后缀".classJPEG 图像文件:FF D8 FFPNG 图像文件:89 50 4E 47 0D 0A 1A 0AGIF 图像文件:47 49 46 38 39 61 或 47 49 46 38 37 61BMP 图像文件:42 4D。
2024-07-27 23:09:49
883
原创 jvm 发展历程
*本地接口(JIT):**本地调用已经被编译的方法,例如:常见的C++ 方法,执行引擎负责调用本地接口。**运行时数据区:**用于存放加载到内存中的字节码的区域。**执行引擎:**即时编译,解释器,垃圾回收器等。将字节码文件加载到jvm 当中。
2024-07-27 22:59:17
217
原创 Redis缓存双删(使用Redis如何保证数据库和缓存之间的同步)
该策略的问题是,如果Redis 修改成功了,数据库没有修改成功,导致数据不一致。:该策略的问题是如果数据库更新成功了Redis 修改失败了,也会导致不同步的问题。
2024-05-13 16:42:50
520
翻译 解决mysql 报错only_full_group_by
参考:mysql - What are the benefits of only_full_group_by mode? - Stack Overflowhttps://stackoverflow.com/questions/45484068/what-are-the-benefits-of-only-full-group-by-mode在网上找了一大堆答案,都说直接禁用掉only_full_group_by没有从根本上理解为什么mysql 要默认开启only_full_group_by,所以这里先来分析一
2022-12-05 20:43:43
485
原创 spring 6.0 构建报错 找不到符号 InstrumentationSavingAgent
将spring-context.为什么改成api 而不是。
2022-11-04 09:25:22
326
原创 查看spring boot每个版本更新的内容
Home · spring-projects/spring-boot Wiki · GitHubSpring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.https://github.com/spring-projects/spring-boot/wiki
2022-11-01 16:56:50
562
原创 未更改定时任务默认线程池大小导致的定时任务阻塞问题
最近线上出现了一个奇怪的问题,由于业务需要,我们通过定时任务进行定时excel 导入操作,但是常常会出现一些定时任务在某些时间段不执行的问题,由于业务需要,这里的定时任务都设置五分钟执行一次,但是事实并非如此,定时任务并没有五分钟执行一次,甚至间隔几个小时,都不执行一次,刚开始我以为是因为定时任务没有执行完成,不会进行下一次执行。spring boot 的@Scheduled定时任务,同一时间段的定时任务只会执行一个,其余的会被阻塞等待_轻尘×的博客-优快云博客。
2022-08-22 15:40:04
431
原创 Postgres SQL 的json 数据优势和劣势
同样以上方的订单为例,因为一个订单可能绑定了多个商品,由于不是关系型的表结构,我们如果想要订单详情中的某个商品信息,我们必须经历如下步骤:这是我们不得不面对的一个问题,因为如果我们忽略处理某个字段,可能导致前端找不到某个字段,所以我们保存到数据库时必须保证对象中的某个字段即使为空,在生成Json后字段的值至少是null或者空字符串仍然是以上面的订单和订单详情为例,如果我们只想查询某个订单的订单详情,甚至对订单详情做分页查询,就必须新建表了,如果存在一些特殊的需求,修改了订单详情,那同样要考虑到是否需要改变订
2022-07-01 17:53:32
2071
原创 mysql 的 in 不一定不走索引
很早之前就听别人说in 不走索引,但是一直没证实过,昨天在工作中用到了in所以在上班的时候突发奇想,使用mysql 的explain 关键字看下一条sql走不走索引,sql 如下所示: 如上图所示,这里用到了in,但是这条sql 还是走了索引,如下图:为什么会这样?参考这篇文章:MySQL中in到底走不走索引?_一个技术渣渣的博客-优快云博客_in走不走索引explain介绍mysql中explain关键字可以模拟MySQL优化器执行SQL语句,是一个可以很好的分析SQL语句或表结构的性能瓶颈。ex
2022-06-29 10:01:27
3967
原创 Redis 锁设计
最近同事做一个微信支付的功能,其中微信回调,用到了MQ 防止重复消费的问题,我们做了多重判断,第一重使用redis 锁防止数据被微信的回调多次修改数据库,保证一条数据只修改一次,并配合支付状态来保证消息不会被重复消费,我们的支付状态存在以下几个状态:当微信进行回调的时候,我们先通过redis 进行锁住,来保证数据在同一时间只有一个请求在修改,如果当前支付状态为未消费(默认为未消费),修改为已入列并放入消息队列,消费成功后状态改为已支付,来保证MQ 不会被重复消费,其中在Redis 锁的部分我们遇到了一些问题
2022-06-09 14:54:22
559
原创 马士兵JVM 精讲笔记(一)
计算机语言(机器语言)可以通过0和1生成机器指令,将指令输入到cpu 来执行,通过机器指令计算机可以实现各种各样的功能,而机器语言又分为操作码和操作数,假如:int a = 1;生成的机器码为(下面是随便输的):101010(操作码) 10101010101011011111(操作数)其中就包含了操作码和操作数,在内存当中每一个基础执行单元为8位,1byte(字节)等于8bit(位),而int a 是四字节,所以在内存当中开辟空间的时候会在内存中开辟4byte的空间,而在开辟内存的过程中
2022-02-17 17:37:01
713
原创 Jenkins 重启出现Error 403 No valid crumb was included in the request
我在使用jenkins 时禁用了jenkins 本身的Redis 导致了报错,之后发现是redis 没有启动导致的,启动Redis 后恢复正常
2022-01-11 18:02:09
1082
原创 Spring boot 启动报:Do not use @ for indentation
这个问题的产生是因为在使用idea 的maven 进行编译的时候,没有将其视为变量,而是作为字符串进行的编译,导致target 中的application.yml 文件中的active 的值为:@activatedProperties@,如下所示:正常情况下,当maven 进行编译时,会将yml 文件中的多环境配置变量更换为指定的配置值,例如:我的默认配置值是dev 则上图中的yml 文件中的@activatedProperties@将在编译后变为dev,如下所示:而产生这个问题的原因就是打
2022-01-10 16:17:24
5472
1
原创 frp + nginx 内网穿透https nginx 配置
亲测可用#user nobody;worker_processes 1;error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid /usr/local/webserver/nginx/nginx.pid;events { worker_connections 1024;}http { include .
2021-12-28 16:50:19
2929
转载 jenkins pipeline 无法后台启动
在普通的shell环境中,nohup,并且& 某个程序后,会抛到后台执行,在退出当前shell环境后,程序依然可以执行。但是在Jenkins的pipeline中,通过nohup,且使用&之后,step结束后,执行的程序还是会退出,导致程序起不来。1)export JENKINS_NODE_COOKIE=dontKillMe很重要,pipeline在退出node{}的时候,会默认清理自己发出的每个shell命令,即使使用了nohup。2)后台执行java程序,一定要加上{-Dhudson
2021-12-17 21:26:38
854
原创 token 为什么可以防止CSRF 攻击
token 是被开发者发送给后端的,攻击者如果无法获取到token 是无法通过后端服务器的校验的但是cookie 不同,只要在同一个浏览器,浏览器就会自动将cookie 放入请求头中,如果用cookie 做登录验证,例如:小明登录了csdn, 此时小明突然想到了一件事情,登录了另一个网站,而这个网站被不知名的人埋入了一些请求,这些请求是当其他人进入该网站,则请求csdn 友好的帮助访问者发布一篇文章,假如csdn 使用的是cookie做登录判断,小明访问该网站时触发了该请求,浏览器会自动将coo
2021-12-03 18:32:06
2447
1
原创 机票系统相关知识
黑屏释义详细解释各航空公司的机票价格可以显示在统一的票价监控系统上。由于显示界面是黑底绿色,因此被称为黑屏。在黑屏里的任何操作都是通过输入命令代码来完成的。机票黑屏系统刷新速度比较快,但操作人员要经过专业培训,不然很难完成出票。简单解释各航空公司的机票价格可以在统一的票价监控黑屏系统上(由于屏显背景为黑色,行业习惯称之为“黑屏”)一览无余黑屏系统(eTerm系统)介绍eTerm系统是专门用于国内民航行业领域内的订位操作的系统。几乎国内所有的航空公司都用的是这个系统...
2021-11-06 18:13:28
5522
原创 linux 下安装mysql 问题
2021年10月31日mysql 第一次安装后输入密码报错 在安装mysql 的过程中总会报一些奇奇怪怪的问题,一种是密码的问题,这种情况直接删除data 文件夹重新初始化data 文件,但是已上线的mysql 不能这样做 初始化data 后不显示初始化后的密码 那么这个时候一定是my.conf 配置出错,先使用下面的配置,后重新初始化data目录(重新初始化的时候一定要重新删除data 文件夹,否则会导致初始化失败),如果还报错,在考虑其他问题,下方的配置是试过多次的没问题 [mysq.
2021-10-31 22:06:30
281
原创 微信官方Util Map 转xml
/** * 将Map转换为XML格式的字符串 * * @param data Map类型数据 * @return XML格式的字符串 * @throws Exception */ public static String mapToXml(Map<String, String> data) throws Exception { org.w3c.dom.Document document = WXPayXmlUt.
2021-10-12 15:00:37
380
原创 vue 枚举类
class Enum { constructor(key,val) { this.#key = key; this.#val = val; } /** * 枚举类型的key */ #key; /** * 枚举类型的值 */ #val; get val() { return this.#val; }}export class SystemMessageEnum { #map = new Map(); constructor() .
2021-09-27 21:59:40
3592
转载 jenkins 安装(Linux)
1.安装Jenkins-Stable源curl http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo --output /etc/yum.repos.d/jenkins.reporpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keyyum clean all2.安装Jenkins-Stableyum install jenkins3.设置防火墙# 按端口:打.
2021-08-19 10:59:25
335
转载 将bat文件或exe程序注册成windows服务
将bat 加入服务:格式:sc create ServiceName binPath= 路径 start= auto示例:将Tomcat加入到系统服务中(bat 文件格式):sc create Tomcat binPath= F:/apache-tomcat/bin/startup.bat start= auto将exe 文件加入到服务中:sc create MyService binPath= "cmd.exe /c start c:\a.exe" start= auto.
2021-08-17 09:27:28
1008
原创 mysql 查看binlog 增量备份文件(win10 系统和Linux通用)
一种是在命令行中输入以下命令:命令格式:mysqlbinlog 这里填写binlog文件名称 | more例如文件名为:binlog.000001 则如下所示:mysqlbinlog binlog.000001 | more或者将binlog文件输出保存在文件中并在文本编辑器中查看文件,可以使用以下命令:命令格式:mysqlbinlog 这里填写binlog文件名称 > tmpfile示例:同样以binlog.000001 为例mysqlbinlog binlog.00
2021-08-08 18:28:15
436
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人