面试题总结
文章平均质量分 83
Mr.姚先森
软件初学者
展开
-
jvm之java类加载机制和类加载器(ClassLoader)的详解
当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。一、类加载过程1.加载加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java...转载 2021-03-04 13:50:08 · 201 阅读 · 1 评论 -
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
如果想了解Java内存模型参考:jvm内存模型-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东)相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋。一、 技术背景你要了解吧 二、 哪些内存需要回收? 2.1 引用计数算法 2.1.1 算法分析 2.1.2 优缺点 2.1.3 是不是很无趣,来段代码压压惊 2.2 可达性分转载 2021-03-04 13:00:27 · 120 阅读 · 1 评论 -
MySQL数据库中随机获取一条或多条记录
在开发过程中遇到了一个问题,使用MySQL数据库,用SQL语句在表中随机获取一条或多条数据,看似简单,但是往深层研究的话还是很有深度的,查了好多资料,接下来给大家分享一下:1. 随机获取单条数据SELECT * FROM table_name ORDER BY RAND() LIMIT 1;MySQL中的RAND()函数调用可以在0和1之间产生一个随机数。这条SQL语句可以随机取出一条数据,而且将limit 1改为获取多条数据,得到的数据也是随机的。但是,在MYSQL的官方手册,里面针对.转载 2021-03-04 12:57:45 · 4650 阅读 · 2 评论 -
数据库的几种去重方法总结
数据库的几种去重方法总结一、数据库中的去重操作(删除数据库中重复记录的SQL语句)主要有三种方法(1)、rowid方法(2)、group by方法(3)、distinct方法1、用rowid方法根据Oracle带的rowid属性,可以进行判断是否存在重复语句;(1)、查出表1和表2中name相同的数据Select * from table1 aWhere rowid !=(select max(rowid) from table2 bWhere ...转载 2021-03-04 12:54:34 · 11588 阅读 · 1 评论 -
高并发的核心技术-幂等的实现方案
高并发的核心技术-幂等的实现方案一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。等等很多重要的情况,这些逻辑都需要幂等的特性来...转载 2021-03-04 12:52:17 · 112 阅读 · 1 评论 -
消息中间件——如何保证消息幂等性
1、什么是消息的幂等性幂等:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。这是百度百科给出的幂等的概念。消息的幂等性:就是即使多次收到了消息,也不会重复消费。所以保证消息的幂等性就是保证消息不会重复消费,这在开发中是很重要的。比如客户点击付款,如果点击了多次,那也只能扣一次费。2、MQ的幂等性如何保证我们所熟悉的RabbitMQ、RocketMQ、kafka,都有可能出现消息的重复发送,这个是MQ无法保障的。但是我们又不能在系统中去重复消费消息,那么就需要我们开发转载 2021-03-04 12:45:54 · 1324 阅读 · 1 评论 -
面试总结二
JVM内存有哪些,哪些是线程共享的线程独占:虚拟机栈,本地方法栈,程序计数器 线程共享:方法区。堆哪些区会抛OOM异常OOM(Out of memory):就是内存溢出 堆内存不足是最常见的 OOM 原因之一,抛出错误信息java.lang.OutOfMemoryError:Java heap space,原因也不尽相同,可能是内存泄漏,也有可能是堆的大小设置不合理。 对于虚拟机栈和本地方法栈,导致 OOM 一般为对方法自身不断的递归调用,且没有结束点,导致不...原创 2021-01-30 17:03:34 · 147 阅读 · 1 评论 -
面试题总结一
hashmap的线程不安全体现在哪里HashMap不是线程安全的,HashMap在并发场景下可能存在哪些问题?JDK1.7 中,由于多线程对HashMap进行扩容,调用了HashMap#transfer(),具体原因:某个线程执行过程中,被挂起,其他线程已经完成数据迁移,等CPU资源释放后被挂起的线程重新执行之前的逻辑,数据已经被改变,造成死循环、数据丢失。 JDK1.8 中,由于多线程对HashMap进行put操作,调用了HashMap#putVal(),具体原因:假设两个线程A、B都在进行p.原创 2021-01-29 15:30:36 · 132 阅读 · 0 评论