- 博客(10)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Java运行时数据区和常用指令
从一道面试题谈起第一个截图代码运行结果是8第二个截图代码运行结果是9jvms 2.4 2.5指令集分类基于寄存器的指令集基于栈的指令集Hotspot中的Local Variable Table = JVM中的寄存器Runtime Data AreaPC 程序计数器存放指令位置虚拟机的运行,类似于这样的循环:while( not end ) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC ++;}JVM StackFrame - 每个方
2021-05-27 20:59:38
127
原创 对象在内存中的存储布局
可使用JavaAgent测试Object的大小对象的创建过程对象大小(64位机)观察虚拟机配置java -XX:+PrintCommandLineFlags -version普通对象对象头:markword 8字节ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节实例数据引用类型:-XX:+UseCompressedOops 为4字节 不开启为8字节Padding对齐,8的倍数数组对象.
2021-05-27 20:54:55
108
原创 JMM(Java内存模型)
Java并发内存模型hanppens-before原则计算机缓存模型缓存行及伪共享基于计算机的缓存模型,计算机认为相邻的数据大概率在计算时一起被用到,为了提高效率,CPU从L3读取数据到工作内存(L2)时,默认读取64bytes的数据,会将多个数据值读到工作内存,由此引发缓存一致性问题(两个CPU均读取相同的64kb数据,其中一个CPU修改x数据,另一个CPU修改y数据,两个CPU的工作内存数据需要同步)。解决缓存一致性问题的方案,现在CPU的数据一致性实现=缓存锁+总线锁总线锁
2021-05-16 16:16:10
132
原创 JVM入门(Class格式及类加载)
java执行流程从图中可以看出,java文件先会被编译成.class字节码文件,由jvm的类加载器加载到内存中,通过字节码解释器或即时编译器编译成汇编语言在操作系统上执行Class File Format整个class其实就是二进制的字节流,供jvm解析整个class文件的构成,基本可以分为几个部分:magic—魔数(不同类型后缀的文件,文件前缀都不一样,称为魔数,.class文件的魔数前缀是CAFE BABE,占4个字节)minor_version:jvm小版本号major_vers
2021-05-11 14:50:40
197
原创 分布式事务之使用MQ异步解耦的消息最终一致性方案
为什么要做成异步的并使用MQ上文已经说过,不管是2PC、3PC都没有根本解决性能问题,而如果通过MQ的事务消息来进行异步解耦,会提升系统性能。 服务进行模块化拆分,便于提高系统模块重用度,使开发和维护可以并行进行,提高效率。 系统扩展性更高。 团队协作流程也会得到改善。异步/分布式会出现消息一致性的问题消息生成者发送消息 MQ收到消息,将消息进行...
2019-09-03 17:07:53
1185
原创 SpringBoot集成Redis和配置Redis做缓存
Redis介绍Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求,直观的存储结构使得通过程序交互十分简单。Redis数据库中所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势,而且Redis提供了对持久化的支持,即可以将内存中的数据异步写入到硬盘中,且不影...
2019-06-21 16:06:43
16783
5
原创 Spring MVC 项目配置Kaptcha验证码
Spring MVC 项目配置Kaptcha验证码一般的网站注册和登录验证码都是用前端JS来实现的,只要前端验证成功就可以发送注册和登录的请求,这样如果受到来自网页和爬虫的攻击,验证码相当于形同虚设,后台服务器可能收到大量的http请求,严重影响服务器的性能。由此可见,如果由后台生成验证码之后展现给页面,页面每次的请求带上验证码信息到后台来比对会安全一些,成功再进行之后的操作,失败则返回提示信息。配
2017-05-06 20:10:20
2287
kaptcha-2.3.2.rar
2017-05-07
根据库存计算发货仓库的方案有哪些可用的算法?
2019-10-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人