自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 面试经典问题之Java的不同引用类型

Java中4中引用类型 强引用Strong References 软引用Soft References 弱引用Week References 虚引用Phantom References 这些引用的区别仅在于垃圾回收时管理它们的方式不同。如果你从来没有听说过它们,意味着你只使用过强引用类型。了解它们的区别可以帮助你,尤其是你需要临时存储对象,但是不能使用Guava这种缓存库的时候。 因为这些类型和JVM垃圾回收器强相关,我简要的回顾下关于Java的垃圾回收的一些信息,然后我会演示这些不用的类型。 垃圾回收

2021-10-17 12:58:37 102

原创 GC相关面试题整理

StackOverFlowError和OutOfMemoryError,谈谈你的理解; StackOverFlowError是栈内存溢出 OutOfMemoryError是堆内存溢出 Java运行时数据区包含: 堆 方法区(也叫非堆) 本地栈 虚拟机栈 程序计数器 程序计数器是不会抛出StackOverFlowError或者OutOfMemoryError的。 本地栈和虚拟机栈会抛出StackOverFlowError。   本地栈和虚拟机栈非常类似,虚拟机栈是虚拟机执行Java方法时的内存区域,本地栈是

2021-10-29 01:03:44 1070

原创 总结-经典垃圾收集器各种维度的对比

垃圾收集器 针对分代 收集算法 单线程or多线程 侧重点 优点 缺点 搭配 适用场景 Serial Young-Generation 标记-复制 单线程 简单高效:额外内存消耗最小,单线程没有线程交互开销 Stop the world Serial Old 客户端模式下默认的新生代收集器 ParNew Young-Generation 标记-复制 多线程 CMS 是激活CMS后的默认新生代收集器,但现在也是不建议使用了,被G1替代 Parallel Scavenge Youn...

2021-10-27 01:03:44 138 1

原创 微服务之限流

参考:https://www.infoq.cn/article/ipxnuqwu3lgwxc8j7tzw

2021-10-18 23:31:39 65

原创 jvm启动参数

JVM启动参数格式 格式 说明 举个???? 备注 - 以-开头为标准参数,所有的JVM都要实现这些参数,并向后兼容 -server;-client -D 设置系统属性 -X 以-X开头为非标准参数,基本都是传给JVM的,默认JVM实现这些参数的功能,但是并不保证所有的JVM都实现这些参数的功能,并且不保证向后兼容,java -X 可以查看当前JVM支持的非标准参数 -Xmixed:混合模式执行(默认); -Xint:仅解释模式执行,-Xmx;4096m:指定堆内存的最大大小

2021-10-09 23:08:25 128

原创 php和java请求处理过程的对比

PHP处理请求的过程简述 用户通过url地址,到Nginx服务器,nginx通过反向代理和负载均衡等一系列处理后找到一台后端服务器,然后通过fastcgi协议将请求转移给php-fpm。 php-fpm其实是一个实现了fastcgi协议的进程管理器,由一个master进程和多个worker进程组成。 master进程只负责管理worker进程,真正负责请求的是worker进程。worker进程接收到请求后会去执行我们的php代码,因为php是解释型语言,所以每次执行其实都是边解释边执行,但其实跟请求次数相比

2021-09-26 10:55:06 169

原创 redis面试题汇总

redis使用过Redis分布式锁么,它是什么回事?Redlock 算法 当多个进程需要访问共享数据时,可以通过使用redis分布式锁来保证数据的正确性。 锁一般都有两大操作加锁和释放锁。 加锁一共3个步骤: 获取锁 检查锁 设置锁 并且需要保证这3个步骤的原子性,有两种做法:redis的setnx命令或lua脚本。我一般用的都是setnx命令,只有在锁不存在时,才能够设置锁,并且一般还需要设置锁的过期时间,防止获取到锁的进程,在操作共享数据时异常退出,释放锁的代码没有执行到,导致其他进程都无法获取锁而影

2021-09-10 10:22:03 55

原创 LoadingCache 参数说明

expireAfterAccess 在指定的过期时间内没有读写,缓存数据即失效 expireAfterWrite 在指定的过期时间内没有写入,缓存数据即失效 refreshAfterWrite 在指定的过期时间之后访问时,刷新缓存数据,在刷新任务未完成之前,其他线程返回旧值. expireAfterAccess,expireAfterWrite在数据过期时,都会删除缓存数据,然后委派当前线程去加载新的数据,其他的线程访问key的时候会阻塞,直到加载完新的数据,一起返回. refreshAfterWrit.

2021-03-30 18:37:46 728

原创 Redis zset 部分命令执行原理

zset 数据结构 zset有两种编码方式,一种是压缩数组(ziplist),另一种是跳表(skiplist).这里讨论的是skiplist. 如果zset里的元素比较多,或者存储的元素比较大,redis就会采用 字典(dict)+跳表(skiplist)的方式来存储数据.其中,dict用于存储member和score的映射关系,dict结构可以使得zscore(key,member)这样的命令的时间复杂度为O(1).skiplist有四个字段,源码如下: typedef struct zskiplist

2021-03-28 11:49:05 82

空空如也

空空如也

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

TA关注的人

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