![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 86
pan_mlpan
没有伞的孩子要努力奔跑
展开
-
Java - 反射及其使用
Java - 反射及其使用Java 开发人员必须要知道的一个知识,就是反射,在看很多底层源码的时候或多或少都会涉及一些,下面来介绍一下前言Java 一种经典的面向对象开发语言,对象先声明后使用,而一个变量又分为 编译型类型 与 运行时类型编译时类型 是由声明该变量时使用的类型决定运行时类型 由实际赋给该变量的对象决定若编译时类型和运行时类型不一致,也就是我们所谓的 多态。因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转原创 2022-05-25 20:55:51 · 4877 阅读 · 0 评论 -
幂等性及常见的解决方案
幂等性1、幂等性是什么?幂等性的含义是指的是多次操作,但是结果是一致的,换句话说,就是一个操作,你无论重复点击多少次,发送请求的数量有多少,最终要保证操作指执行了一次,不会因为多点产生了副作用。例如:在支付接口,重复支付导致了多扣钱。在正常的请求方法中,获取数据的请求是满足幂等性的,因为仅仅涉及到了数据的获取,而涉及到数据新增/删除的请求,我们需要做到接口的幂等性2、为什么会产生幂等性问题?网络的波动。请求可能被重复发送用户重复操作。用户无意多次触发同一请求,或者相应速度慢的时候有意多次触发原创 2022-01-02 10:18:44 · 1691 阅读 · 0 评论 -
一篇搞懂分布式事务与分布式事务常见的解决方案
1、前言现在我们找工作大家的标配就是微服务、分布式系统,而系统中肯定少不了用事务,那其统带来的分布式事务 问题也成了标配了,如果你不会,面试官心中os:你也真敢在简历中写! 下面来聊聊这个分布式事务是个什么东西?在系统中我们如何来解决这个问题?2、分布式事务2.1 是什么?分布式系统是什么?多个服务/多个系统,它们部署在不同结点上,通过网络交互的方式来协同完成工作例如下面的这个主业务逻辑,有两个微服务(系统),每个微服务维护了自己的数据库事务是什么?事务可以看作是一组操作,这组操作要原创 2021-12-30 13:16:53 · 767 阅读 · 0 评论 -
数据库锁与加锁情况介绍(记录锁、间隙锁、next-key锁)
数据库的锁关于mysql有哪些锁?锁的分类有哪些?可查看另外一篇博客:mysql 的锁下面主要是记录在实际情景中的加锁情况进行分析测试环境介绍innodb 引擎下,隔离级别在 REPEATABLE READ 进行测试表结构介绍(1)简单的测试表一:study表,id为主键create table study(id int primary key,name varchar(255),age int) engine=innodb;insert study values(7 ,原创 2021-12-20 09:54:39 · 1945 阅读 · 0 评论 -
JAVA-锁
JAVA锁介绍Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。概念对于同一个数据的并发操作:转载 2021-05-08 14:14:39 · 82 阅读 · 0 评论 -
Mysql - 锁
Mysql 锁Mysql 中 的锁有很多种,例如行锁、意向锁、表锁等,行锁又可以进行细分,下面会介绍。表锁表锁由 MySQL 服务器实现,所以无论你的存储引擎是什么,都可以使用。一般在执行 DDL 语句时,譬如 ALTER TABLE 就会对整个表进行加锁。在执行 SQL 语句时,也可以明确对某个表加锁,例如:mysql> lock table products read;Query OK, 0 rows affected (0.00 sec) mysql> select * f原创 2021-05-05 09:38:07 · 304 阅读 · 0 评论 -
Mysql 之 事务
Mysql事务在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么操作全部执行,要么操作全部不执行。事务特性事务需要满足4个特性,也就是我们平时经常说的ACID,现在介绍一下:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)事务的原子性(由DBMS的事务管理子系统来实现)一个事务(transaction)中的所有操作,要么这些操原创 2021-05-04 11:28:16 · 676 阅读 · 4 评论 -
多线程并发面试题
1、什么是进程、线程、协程? 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。(程序的一次运行,跟操作系统有关) 线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对原创 2021-04-21 09:28:19 · 571 阅读 · 0 评论 -
JAVA面试-并发
1、在 java 中守护线程和本地线程区别?java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在 Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯一的区别是判断虚拟机(JVM)何时离开,Daemon 是为其他线程提供服务,如果全部的 User Thread原创 2020-12-24 22:49:42 · 145 阅读 · 1 评论 -
单例模式
单例模式1.单例介绍保证一个类只有一个实例,并且该类提供一个访问的全局访问点2.单例模式使用场景计数器,一般也是采用单例模式实现,否则难以同步。应用程序的日志应用,一般都是单例模式实现,只有一个实例去操作才好,否则内容不好追加显示。线程池的设计一般也是采用单例模式,因为线程池要方便对池中的线程进行控制任务管理器就是很典型的单例模式,他不能打开俩个回收站也是典型的单例应用。在整个系统运行过程中,回收站只维护一个实例。3.优缺点优点:在单例模式中,活动的单例只有一个实例,对单例类原创 2021-04-11 10:13:19 · 130 阅读 · 0 评论 -
ReentrantLock的原理
ReentrantLock的底层ReentrantLock的源码:(1)ReentrantLock是Lock的子类,支持序列化(2)ReentrantLock里面有一抽象的静态内部类Sync(继承了AQS),并且有一类型为该类Sync的成员变量 有两个Sync的子类,表示公平锁和非公平锁(3)ReentrantLock里面的方法都是通过sync调用其里面的方法进行实现的(4)ReentrantLock里面是默认使用非公平锁的,如果要使用公平锁,则在lock定义的时候需要传入参数truest原创 2021-04-11 10:00:56 · 160 阅读 · 0 评论 -
Synchronized关键字
Synchronized底层如何实现synchronized俗称对象锁,它采用互斥的方式让同一时刻至多只有一个线程能够持有对象锁,其他线程再想获取这个对象锁就会阻塞住,这样就能保证拥有锁的线程可以安全的执行临界区内的代码,不用担心线程上下文切换synchronized 实际是用对象锁保证了临界区内代码的原子性,临界区内的代码对外是不可分割的,不会被线程切换所打断Synchronized有三种使用方法:修饰实例方法,作用相当于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁。修饰静态方法,原创 2021-04-11 09:58:55 · 112 阅读 · 0 评论 -
ThreadLocal使用
ThreadLocal及底层数据结构ThreadLocal ,也叫线程本地变量,ThreadLocal为变量在每个线程中都创建了所使用的的变量副本。使用起来都是在线程的本地工作内存中操作,并且提供了set和get方法来访问拷贝过来的变量副本。底层也是封装了ThreadLocalMap集合类来绑定当前线程和变量副本的关系,各个线程独立并且访问安全!底层:其实ThreadLocal里面封装了ThreadLocalMap集合类来绑定当前线程和变量副本的关系。ThreadLocalMap其实就说利用数组进行实原创 2021-03-29 10:50:23 · 166 阅读 · 0 评论 -
Volatile关键字
Volatile关键字1、可见性:**Java内存模型规定:所有变量都需要存储在主内存中,线程工作内存保存了变量在主内存中的副本,线程对变量的所有操作都在工作内存中进行,执行结束后在同步到主内存中去。**这里必然会存在时间差,在这个时间差内,该线程对副本的操作,对于其他线程是不见的,从而造成了可见性问题。2、指令重排序JVM对代码进行编译优化,导致代码可能并不是按照代码编写顺序执行,而是按照JVM进行编译优化后的顺序执行。指令重排序对并发编程安全性有很大影响,所以提供了一些happens-befor原创 2021-03-29 10:48:48 · 66 阅读 · 0 评论 -
面试-代理模式与Java中的代理
代理模式代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。代理模板一般有两种:静态代理:由程序员创建或工具生成代理类的源码,再编译代理类,即代理类和委托类的关系再程序运行前就已经存在。动态代理:在运行期间使用动态生成字节码形式,动态创建代理类。使原创 2021-03-22 21:32:56 · 106 阅读 · 0 评论 -
面试-JAVA垃圾回收
关于Java中JVM的介绍请查看另一篇博客:JVM介绍垃圾回收框图:1、垃圾的确定如何确定哪些是垃圾需要回收1.1 引用计数法在Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。(不能解决循环引用问题)1.2 可达性分析算法为了解决引用计数法的循环引用问题,Java使用了可达性分析原创 2021-03-14 17:32:09 · 102 阅读 · 0 评论 -
面试-JAVA的JVM介绍
JVM1、概念JVM:java 虚拟机。可运行JAVA代码的假想计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收、堆、存储方法栈。JVM是运行在操作系统之上的,它与硬件没有直接的交互。JAVA可以跨平台也是因为JVM。学习框架图:2、运行过程JAVA源文件(文件后缀名称为.java),能够生产相应的class文件,也就是字节码文件,而字节码文件又通过JAVA虚拟机中的解释器,编辑成特定机器上的机器码。也就是:(1)JAVA源文件------>编译器------->字原创 2021-03-14 16:54:11 · 146 阅读 · 0 评论 -
面试之网络基础知识
一. 网络基础知识讲解1.1 网络协议当前世面上主要存在的几种协议: 四层, 五层 , 七层OSI开放式协议是主流协议[七层]1.2 七层协议:第一层 物理层:机械、电子、定时接口通信道上的原始比特流传输功能:以二进制数据形式在物理媒体上传输数据第二层 数据链路层:物理寻址,同时将原始比特流变为逻辑传输线路功能: 传输有地址的帧以及错误检测功能第三层 网络层:控制子网的运行,如逻辑编址,分组传输、路由选择;功能:为数据包选择路由第四层 传输层:接收上一层的数据,在必要的时候把数原创 2021-03-02 22:36:58 · 338 阅读 · 0 评论 -
面试-内部类
成员内部类成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw { //内部类 public void drawSahpe() { System.out.println原创 2021-01-09 15:17:50 · 84 阅读 · 0 评论 -
Spring面试题(2020)
Spring1、Spring是什么?Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。主要包括以下七个模块:Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;Spring AOP:AOP服务;Spring Web:提供了基本的面向Web的综合特性,提供对常原创 2021-01-08 22:27:17 · 460 阅读 · 0 评论 -
操作系统面试
操作系统面试1、什么是进程?进程就是正在执行的程序,是操作系统资源分配的基本单位。一般来说,进程包含指令、数据和PCB。延伸问题:孤儿进程和僵尸进程有什么区别?孤儿进程就是说一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程ID为1的进程)所收养,并由 init 进程对它们完成状态收集工作。因为孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。僵尸进程就是一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过原创 2021-04-21 09:21:22 · 137 阅读 · 0 评论 -
操作系统面试
操作系统面试1、什么是进程?进程就是正在执行的程序,是操作系统资源分配的基本单位。一般来说,进程包含指令、数据和PCB。延伸问题:孤儿进程和僵尸进程有什么区别?孤儿进程就是说一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程ID为1的进程)所收养,并由 init 进程对它们完成状态收集工作。因为孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。僵尸进程就是一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过原创 2020-12-31 13:22:18 · 134 阅读 · 0 评论 -
计算机网络面试
一. 网络基础知识讲解1.1 网络协议当前世面上主要存在的几种协议: 四层, 五层 , 七层OSI开放式协议是主流协议[七层]1.2 七层协议:第一层 物理层:机械、电子、定时接口通信道上的原始比特流传输功能:以二进制数据形式在物理媒体上传输数据第二层 数据链路层:物理寻址,同时将原始比特流变为逻辑传输线路功能: 传输有地址的帧以及错误检测功能第三层 网络层:控制子网的运行,如逻辑编址,分组传输、路由选择;功能:为数据包选择路由第四层 传输层:接收上一原创 2020-12-30 09:54:00 · 7682 阅读 · 0 评论