- 博客(119)
- 资源 (2)
- 收藏
- 关注
原创 扩展-通过idea 中的Frames 来查看当前栈帧
假如有如下一个类,我们在idea 中可以通过后续的操作查看出栈入栈的情况。** 执行到了A方法,A方法入栈,之后的方法执行依次类推**
2024-07-28 17:23:56
204
原创 8. 运行时数据区-堆
一般Java程序中堆内存是空间最大的一块内存区域。创建出来的对象都存在于堆上。栈上的局部变量表中,可以存放堆上对象的引用。静态变量也可以存放堆对象的引用,通过静态变量就可以实现对象在线程之间共享。堆内存的调优堆空间有三个需要关注的值,used total max。used指的是当前已使用的堆内存,total是java虚拟机已经分配的可用堆内存,max是java虚拟机可以分配的最大堆内存。·如果不设置任何的虚拟机参数,max默认是系统内存的1/4,total默认是系统内存的1/64。在实际
2024-07-28 17:17:34
353
原创 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
904
原创 6. 运行时数据区-程序计数器和栈帧
程序计数器也叫做PC寄存器,PC寄存器是用来存储指向下一条指令的内存地址,也即将将要执行的指令代码,由执行引擎读取下一条指令,在执行完毕当前指令之后,JVM的执行引擎会通过程序计数器获取下一条指令的地址来执行后续指令。当前类的字节码指令引用了其他类的属性或者方法时,需要将符号引用(编号)转换成对应的运行时常量池中的内存地址。动态链接就保存了编号到运行时常量池的内存地址的映射关系。Java虚拟机在运行Java程序过程中管理的内存区域,称之为。运行时数据区分为两大类,线程共享和线程不共享,
2024-07-28 16:53:39
414
原创 5. 双亲委派机制
ClassLoader中的loadClass方法分析// name字段:class名称// resolve: 是否执行链接阶段的代码,如果为true则执行链接阶段的相关代码// 加锁防止多线程情况下重复加载// 首先检查当前类是否已经被加载Class
2024-07-28 16:39:29
765
原创 4. 类加载器
将当前jar包放入jre/lib下之后启动类加载器会加载对应的jar包,不推荐这种方式,尽可能不要去更改JDK安装目录中的内容,因为Java虚拟机在加载的时候会对jar包的名称进行校验,名称必须符合一些规范,当不满足某些名称的规范的时候可能出现各种问题。然后输入,-Xbootclasspath/a:jar包目录/jar包名称,-Xbootclasspath后面的那个a 字符代表添加的意思。去掉了扩展类加载器,新增平台类加载器根据jdk9中的模块化的概念进行加载,剩余部分等待后续补充。
2024-07-28 16:35:04
877
原创 3. 类的生命周期
初始化阶段会执行字节码文件中clinit部分的字节码指令,这里的clinit 中cl 代表类(class),而init 代表初始化,所以这里代表的就是类的初始化,所以初始化阶段执行的就是字节码文件中的clinit部分的指令。这个有个问题,下面的代码时成员变量,如果非成员变量的情况下准备阶段是否也能在编译器就确定某些变量的值(应该是可以的,回头用Java命令确定一下)这段代码在准备阶段的值是0因为int 类型没有赋值之前的值默认都为0,而在初始化阶段才会把当前的真正将1的值赋值给value字段。
2024-07-27 23:56:41
1005
原创 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
841
原创 jvm 发展历程
*本地接口(JIT):**本地调用已经被编译的方法,例如:常见的C++ 方法,执行引擎负责调用本地接口。**运行时数据区:**用于存放加载到内存中的字节码的区域。**执行引擎:**即时编译,解释器,垃圾回收器等。将字节码文件加载到jvm 当中。
2024-07-27 22:59:17
169
原创 Redis缓存双删(使用Redis如何保证数据库和缓存之间的同步)
该策略的问题是,如果Redis 修改成功了,数据库没有修改成功,导致数据不一致。:该策略的问题是如果数据库更新成功了Redis 修改失败了,也会导致不同步的问题。
2024-05-13 16:42:50
447
翻译 解决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
423
原创 spring 6.0 构建报错 找不到符号 InstrumentationSavingAgent
将spring-context.为什么改成api 而不是。
2022-11-04 09:25:22
282
原创 个人写代码的几个要点
保证业务清晰度,比如:一段逻辑要完成判空和过滤两种情况的写法,分开写当别人看的时候会很清晰,合在一起用lambda写看起来逻辑不太清晰那直接选择第一种方式,当然相反也是一样,如果使用lambda 清晰,分开写不清晰,则使用lambda降低代码风险,比如:某段代码这样写可能会产生空指针异常的风险,但是另一种写法完全不存在这种风险,则选择另一种
2022-11-03 10:03:53
235
原创 查看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
408
原创 未更改定时任务默认线程池大小导致的定时任务阻塞问题
最近线上出现了一个奇怪的问题,由于业务需要,我们通过定时任务进行定时excel 导入操作,但是常常会出现一些定时任务在某些时间段不执行的问题,由于业务需要,这里的定时任务都设置五分钟执行一次,但是事实并非如此,定时任务并没有五分钟执行一次,甚至间隔几个小时,都不执行一次,刚开始我以为是因为定时任务没有执行完成,不会进行下一次执行。spring boot 的@Scheduled定时任务,同一时间段的定时任务只会执行一个,其余的会被阻塞等待_轻尘×的博客-CSDN博客。
2022-08-22 15:40:04
385
原创 Postgres SQL 的json 数据优势和劣势
同样以上方的订单为例,因为一个订单可能绑定了多个商品,由于不是关系型的表结构,我们如果想要订单详情中的某个商品信息,我们必须经历如下步骤:这是我们不得不面对的一个问题,因为如果我们忽略处理某个字段,可能导致前端找不到某个字段,所以我们保存到数据库时必须保证对象中的某个字段即使为空,在生成Json后字段的值至少是null或者空字符串仍然是以上面的订单和订单详情为例,如果我们只想查询某个订单的订单详情,甚至对订单详情做分页查询,就必须新建表了,如果存在一些特殊的需求,修改了订单详情,那同样要考虑到是否需要改变订
2022-07-01 17:53:32
1926
原创 mysql 的 in 不一定不走索引
很早之前就听别人说in 不走索引,但是一直没证实过,昨天在工作中用到了in所以在上班的时候突发奇想,使用mysql 的explain 关键字看下一条sql走不走索引,sql 如下所示: 如上图所示,这里用到了in,但是这条sql 还是走了索引,如下图:为什么会这样?参考这篇文章:MySQL中in到底走不走索引?_一个技术渣渣的博客-CSDN博客_in走不走索引explain介绍mysql中explain关键字可以模拟MySQL优化器执行SQL语句,是一个可以很好的分析SQL语句或表结构的性能瓶颈。ex
2022-06-29 10:01:27
3857
原创 Redis 锁设计
最近同事做一个微信支付的功能,其中微信回调,用到了MQ 防止重复消费的问题,我们做了多重判断,第一重使用redis 锁防止数据被微信的回调多次修改数据库,保证一条数据只修改一次,并配合支付状态来保证消息不会被重复消费,我们的支付状态存在以下几个状态:当微信进行回调的时候,我们先通过redis 进行锁住,来保证数据在同一时间只有一个请求在修改,如果当前支付状态为未消费(默认为未消费),修改为已入列并放入消息队列,消费成功后状态改为已支付,来保证MQ 不会被重复消费,其中在Redis 锁的部分我们遇到了一些问题
2022-06-09 14:54:22
478
原创 面试技巧之你还有什么问题要问我的
和面试官谈论面试要了解的内容:1. 技术组组织架构,可以通过组织架构知道该公司有没有厉害的人,只有存在比较厉害的人自己才有可能快速进步2. 用到的技术栈,有哪些,主要是了解通过这些技术栈我可以学到那些内容如何将这些问题形成文字向面试官提问:您好,我这边有些疑问想问下您:1. 目前我们技术部门的整体结构是怎样的2. 除了您上次说的脱离了Spring 体系,形成了自我的体系之外,目前项目当中还用到了那些技术3. 预计未来会引入那些技术除此之外有一些技巧:1. 我入职后是跟着您么2.
2022-03-08 08:17:22
382
原创 马士兵JVM 精讲笔记(一)
计算机语言(机器语言)可以通过0和1生成机器指令,将指令输入到cpu 来执行,通过机器指令计算机可以实现各种各样的功能,而机器语言又分为操作码和操作数,假如:int a = 1;生成的机器码为(下面是随便输的):101010(操作码) 10101010101011011111(操作数)其中就包含了操作码和操作数,在内存当中每一个基础执行单元为8位,1byte(字节)等于8bit(位),而int a 是四字节,所以在内存当中开辟空间的时候会在内存中开辟4byte的空间,而在开辟内存的过程中
2022-02-17 17:37:01
681
原创 Jenkins 重启出现Error 403 No valid crumb was included in the request
我在使用jenkins 时禁用了jenkins 本身的Redis 导致了报错,之后发现是redis 没有启动导致的,启动Redis 后恢复正常
2022-01-11 18:02:09
1035
原创 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
4735
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
2861
转载 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
775
原创 token 为什么可以防止CSRF 攻击
token 是被开发者发送给后端的,攻击者如果无法获取到token 是无法通过后端服务器的校验的但是cookie 不同,只要在同一个浏览器,浏览器就会自动将cookie 放入请求头中,如果用cookie 做登录验证,例如:小明登录了csdn, 此时小明突然想到了一件事情,登录了另一个网站,而这个网站被不知名的人埋入了一些请求,这些请求是当其他人进入该网站,则请求csdn 友好的帮助访问者发布一篇文章,假如csdn 使用的是cookie做登录判断,小明访问该网站时触发了该请求,浏览器会自动将coo
2021-12-03 18:32:06
2328
1
原创 机票系统相关知识
黑屏释义详细解释各航空公司的机票价格可以显示在统一的票价监控系统上。由于显示界面是黑底绿色,因此被称为黑屏。在黑屏里的任何操作都是通过输入命令代码来完成的。机票黑屏系统刷新速度比较快,但操作人员要经过专业培训,不然很难完成出票。简单解释各航空公司的机票价格可以在统一的票价监控黑屏系统上(由于屏显背景为黑色,行业习惯称之为“黑屏”)一览无余黑屏系统(eTerm系统)介绍eTerm系统是专门用于国内民航行业领域内的订位操作的系统。几乎国内所有的航空公司都用的是这个系统...
2021-11-06 18:13:28
4777
原创 linux 下安装mysql 问题
2021年10月31日mysql 第一次安装后输入密码报错 在安装mysql 的过程中总会报一些奇奇怪怪的问题,一种是密码的问题,这种情况直接删除data 文件夹重新初始化data 文件,但是已上线的mysql 不能这样做 初始化data 后不显示初始化后的密码 那么这个时候一定是my.conf 配置出错,先使用下面的配置,后重新初始化data目录(重新初始化的时候一定要重新删除data 文件夹,否则会导致初始化失败),如果还报错,在考虑其他问题,下方的配置是试过多次的没问题 [mysq.
2021-10-31 22:06:30
252
原创 微信官方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
343
原创 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
3548
原创 常用正则表达式
实体类替换/** 注释 */ 为@ApiModelProperty("注释")正则搜索表达式:(/\*\*)(.*)(\*/)正则替换表达式:@ApiModelProperty\("($2)"\)
2021-09-17 15:38:26
144
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人