![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
颜颜颜颜颜越
这个作者很懒,什么都没留下…
展开
-
Redis五种基本数据类型
什么是Redisredis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。Redis常识Redis默认有16个数据库默认使用的是第0个数据库端口号 默认6379可以使用select 数字来切换数据库DBSIZE 查看DB大小keys * 查看数据库所有的keyflushdb 清空原创 2020-10-07 19:53:05 · 340 阅读 · 0 评论 -
CAP简述
CAP基本概念C 数据一致性弱一致性(不保证总能得到最新的值)最终一致性( 放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致 )强一致性(每个节点的数据都是最新版本)A 可用性 数据具备高可用性P 分区容错性 容忍网络出现分区 分区之间网络不可达C和A都很容易 P到底是什么意思呢?分区分布式的系统,节点之间的通信是通过网络来进行的。如果出现了一些故障,节点之间不连通了,整个网络就被划分成了几块区域。这样数据就被分成了几块不连通的区域。这就叫做分区。例原创 2020-10-07 19:45:12 · 413 阅读 · 0 评论 -
集群 分布式概念简述
集群计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多集群技术特点:通过多台计算机完成同一个工作,达到更高的效率。两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。原创 2020-10-07 19:44:17 · 291 阅读 · 2 评论 -
单例模式
懒汉式在使用的时候才去检查有没有实例,有就返回,没有就初始化一个。存在线程安全问题,使用双端检索机制解决。class Single{private Single(){}private static Single single = null;public static Single getInstance(){if(single == null){single = new Single();}reutrn single;}}饿汉式一开始就初始化好实例对象,好处是线程安全,坏处是浪原创 2020-10-07 19:42:58 · 287 阅读 · 0 评论 -
Lock(ReentrantLock)
为什么会出现Locksynchronized是性能低效的。因为这是一个重量级操作,它对性能最大的影响是阻塞的是实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性带来了很大的压力。相比之下使用Java提供的Lock对象,性能更高一些。到了JDK1.6,发生了变化,对synchronize加入了很多优化措施,有自适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在JDK1.6上synchronize的性能并不比Lock差。官方也表示,他们也更支持synchronize,在未来的原创 2020-10-07 11:15:42 · 191 阅读 · 0 评论 -
Synchronized详解
Synchronized基本理解synchronized关键字是为了解决并发编程中的线程安全问题而实现的关键字。synchronized的思想就是给对象加上一个锁,这锁可以叫做对象锁,也可以叫排他锁。synchronized关键字有三种使用方式:普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。synch原创 2020-10-06 21:52:20 · 511 阅读 · 0 评论 -
MySQl三范式 视图触发器存储过程简述
三范式第一范式 原子性表示每一项的信息都是不可再分的比如 你一个字段中存放了 姓名和年龄 这就违反了原子性第二范式 唯一性消除数据之前的部分依赖 使一个表中的非主键部分完全依赖于主键消除非主键部分依赖联合主键中的部分字段需要实现每一 行数据具有唯一 可区分的特性,并不能有部分依赖关系。通常,给一个表加主键(也是推荐做法),就可以做到“唯一可区分”。第三范式 独立性消除传递依赖属性不依赖于其它非主属性数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。视图从一个或原创 2020-10-06 14:29:30 · 146 阅读 · 1 评论 -
Redis跳跃表
Redis 跳跃表基本概念跳跃表是有序集合的底层表现之一Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时, Redis就会使用跳跃表来作为有序集合健的底层实现。跳跃表(skiplist)是一种****有序数据结构****,它通过在****每个节点中维持多个指向其他节点的指针(注:可以理解为维护了多条路径),从而达到快速访问节点的目的。****Redis的跳跃表由****redis.h/zskiplistNode和r原创 2020-10-06 14:27:23 · 284 阅读 · 0 评论 -
Redis缓存穿透 缓存雪崩
先查缓存 如果缓存中没有 就会去数据库中查询缓存穿透(查不到)基本概念用户想要查询一个数据,发现redis内存数据库中没有,于是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这就会给持久层数据库带来很大的压力,也就相当于出现了缓存穿透。解决方案布隆过滤器布隆过滤器时一种数据结构 对所有可能查询到的参数用hash的形式存储,在控制层先进行校验,不符合就丢弃,从而避免了对底层存储系统的查询压力。缓存对象当存储层原创 2020-10-06 14:25:30 · 202 阅读 · 0 评论 -
Redis主从复制
主从复制基本概念最少要一个主节点 二个从节点默认情况下,每台Redis服务器都是主节点 且每一个主机节点可以有多个从几点(或者没有) 而每个从节点只能有一个主节点指将一个Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点,后者称为从节点;数据的赋值时单向的,只能从主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点,但是一个从节点只能有一个主节点。作用数据冗余主从复制实现了数据的热备份,是持久化原创 2020-10-06 14:23:16 · 128 阅读 · 0 评论 -
简述Jvm运行时数据区域
线程公有堆new对象 存放对象实例的地方此内存地区的唯一目的就是存放对象的实例,Java中几乎所有的对象实例都是在这个地方分配的GC垃圾回收发生的区域方法区存储已经被虚拟机加载的类型信息 常量 静态变量 即时编译器编译器后的代码缓冲等数据线程私有java虚拟机栈生命周期与线程相同。虚拟机栈描述的Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步穿件一个栈帧用于存储局部变量表 操作数栈 动态链接 方法出口等信息。每一个方法被调用直至执行完成的过程,就对应这一个.原创 2020-10-06 14:16:30 · 164 阅读 · 0 评论 -
java的四大引用类型
Java中的引用类型有四个级别分别为强引用 软引用 弱引用和虚引用强引用:比如一个对象被强引用了,那么垃圾回收机制绝对不会回收它,宁愿抛出 OutOfMemoryError 错误,使程序异常终止。软引用:如果一个对象只具有软引用,那么如果内存空间足够的时候,垃圾回收器就不会回收它,如果内存空间不够了,就会回收这些对象的内存,只要垃圾回收器没有回收,改对象就可以被程序使用。主要用于内存敏感的高速缓存。在 jvm 报告内存不足之前会清除所有的软引用,这样以来 gc 就 有可能收集软引用的对象,可能原创 2020-10-06 14:15:42 · 136 阅读 · 0 评论 -
类加载机制
什么时候会发生类加载?new对象 创建实例反射访问某个类或接口的静态变量 或是对静态变量赋值调用类的静态方法初始化一个类的子类JVM启动时标明的启动类,即文件名和类名相同的那个类类加载过程当程序主动要使用某个类时,如果该类还没有被加载到内存中,则JVM则会通过加载、连接和初始化来对类进行初始化。加载指把类的class文件读入内存,并且创建一个java.lang.Class对象。类的加载由类记载器来完成。链接当类被加载之后,系统为之生成一个对应的Class对象,接着将会进入连接阶原创 2020-10-06 14:15:03 · 134 阅读 · 0 评论 -
jvm垃圾回收机制
对象已死?给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就+1,;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能在被使用。可达性路径分析法 GC Roots通过一系列的GC Roots的对象作为起始点,从这些根节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。可以作为GC Roots的对象包括以下几点虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中的类静态属原创 2020-10-06 14:14:02 · 194 阅读 · 0 评论 -
Spring MVC常用注解及作用
@Controller负责处理前端控制器DispatcherServlet分发过来的请求。然后把用户请求的数据经过业务处理只会封装,然后在返回给对应的View进行展示。@RequestMapping用来处理请求地址映射的注解,可用于类和方法上面,用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。一般有value(指定请求的地址) method(指定请求的类型 get post等)consumes(指定处理请求的提交内容类型) produces(指定返回的内容类型)params(指定r原创 2020-09-22 18:50:54 · 759 阅读 · 0 评论 -
Oracle和MySQL数据库的区别
MySQL是轻量型数据库,并且免费,没有服务恢复数据。Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。事务:MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮。对事务的支持MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务保存数据的持久性MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到原创 2020-09-21 14:45:23 · 269 阅读 · 0 评论 -
JSON
什么是JSON?JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。JSON语法(1)数据在名称/值对中(2)数据由逗号分隔(3)大括号保存对象(4)中括号保存数组Java解析JSONjackSon解析JSON SpringMVC内置解析器public class JackJsonUtils { static Objec原创 2020-09-21 14:18:41 · 165 阅读 · 0 评论 -
Ajax请求 Servlet接受Ajax请求 SSM框架接受Ajax请求
Ajax请求是什么?ajax是一种创建交互式网页应用的网页开发技术,全称Asynchronous JavaScript and XML,特点是异步请求,局部刷新ajax的优势:异步模式,提升了用户的体验。优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽占用。ajax在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量的服务器负载。Servlet怎么接受Ajax请求?@WebServlet("/*******") 在编写的Servlet上面加这个注解 里面写路径原创 2020-09-21 14:09:51 · 298 阅读 · 0 评论 -
session和cooike的区别
首先我们要知道Session是什么?Session指的是客户端和服务器的一次会话,从客户端连接服务器的一个WevApplication开始,直到客户端与服务器断开连接为止。是HTTPSession的实例。Session是存储在web服务器上的一块信息,Session对象存放特定用户会话所需的属性和配置信息。当用户在应用程序的web页跳转时,存储在Session对象中的变量将不会丢失,而是会一直存在下去。Cookie又是什么?中文翻译过来叫做小饼干 小点心Cooike实际上是一块段的文本信息。客户端原创 2020-09-21 13:54:24 · 407 阅读 · 0 评论 -
Java的引用类型
Java的引用类型有四种 强引用 软引用 弱引用和虚引用强引用:如果一个对象被强引用了,那么垃圾回收机制宁愿抛出OutOfMemoryError错误,也不会回收它。软引用如果一个对象时软引用类型的,在内存充足的情况下,垃圾回收不会回收它,一旦内存不足时,垃圾回收就会回收这个对象的内存。只要这个对象还没有被回收,该对象就可以被程序调用。软引用主要是用于内存敏感的高速缓存。在jvm报告内存不足的时候,会清理所有的软引用,这样GC就可以回收软引用的对象,解决内存吃紧的问题,避免内存溢出。弱引用如果一原创 2020-09-21 12:01:18 · 140 阅读 · 0 评论 -
抽象类和接口的区别
抽象类1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰关键字使用注意:抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。原创 2020-09-21 11:47:22 · 122 阅读 · 0 评论 -
重载和重写的区别
重载和重写都是多态的体现,不过重载是体现的编译时的多态性,重写体现的运行时的多态性。重载在一个类中,重写发生在子类和父类。重载可以抛出新的异常。重写能抛出任何非强制性异常,无论被重写的方法是否抛出异常。但是不能抛出新的强制性异常,或者比重写方法声明的更广泛的强制性异常。重载可以有不同的访问修饰符,但是重写的方法不能比父类的访问权限低。重载要求参数列表不同,重写要求参数列表必须相同。构造方法不能被重写,能被重载,声明为final的方法不能被重写可以被重载,声明为static的方法不能被重写可以被重载原创 2020-09-21 11:35:58 · 422 阅读 · 0 评论 -
静态变量和实例变量的区别
静态变量是被static关键字修饰的变量,存放在方法区中,可以在静态范围内调用,它属于类不属于对象,不管创建多少个对象,静态变量在内存中有且只有一个拷贝。实例变量,必须依附于某一实例,需要先创建好对象,然后通过对象才能访问到实例变量,实例变量存放在堆中。...原创 2020-09-21 11:21:47 · 104 阅读 · 1 评论 -
==和equals的区别
根本上的区别是==是运算符,而equals()是一个方法。==如果比较的是基本数据类型,比较的就是他们的值,如果是比较的引用数据类型,比较的就是他们的值。在Object类中 equals() 方法是使用的 == 比较的是地址,但是在引用数据类型中都重写了equals()方法比较的是他们的值...原创 2020-09-21 11:18:59 · 137 阅读 · 0 评论 -
MySQL事务详解
事务事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位。其执行的结果必须是式数据库从一种一致性到另外一种一致性。ACID事务的特性原子性 :最小的工作单元,要么一起提交成功,要么全部回滚失败。一致性: 事务中操作的数据及状态改变是一致的,即写入资料的结果必须符合预设的规则,不会因为系统出现意外而导致不一致。隔离性: 解决并发访问下数据的可见性带来的问题持久性: 事务只要做出的修改就会永久保存,不会因为系统的意外导致数据的丢失。原子性最小的工作单元,要么一起提交成功,要么失败全部原创 2020-09-18 14:42:04 · 179 阅读 · 0 评论 -
什么是线程?线程和进程的区别是什么?
首先我们要知道线程是什么?线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。线程也可以说是一条独立的执行路径那么进程是什么?进程是系统中正在运行的一个程序,程序一旦运行就是一个进程。进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。进程和线程有什么区别?根本区别:进程操作系统分配资源的基本单位,而线程是任务调原创 2020-09-16 10:50:04 · 2129 阅读 · 0 评论 -
TCP连接管理与释放(三次握手 四次挥手 SYN洪泛攻击)
TCP连接的三个阶段TCP连接采取服务器客户端的方式,主动发起连接的叫做客户端,被动等待接受连接的叫做服务器。连接建立(三次握手)首先请求方 也就是客户想要和一台主机(服务器) 建立连接,客户方进程首先通知客户TCP,他想要建立一个和服务器上某个进程的连接,客户中的TCP会用以下的步骤与服务器中的TCP建立一个链接:ROUND 1:客户端发送请求报文段 无应用层数据。SYN = 1(同步位 表示是一个连接发送报文)seq = x (发送的本报文段的第一个字节的序号 4个字节 主机随机产生)原创 2020-09-14 19:51:31 · 15486 阅读 · 0 评论 -
TCP/IP五层参考模型
OSI参考模型TCP IP参考模型OSI模型和 TCP/IP的不同点OSI7层结构仅仅是提出了一个概念没有用于实际,而TCP/IP参考模型是直接应用于实际,被人们所认知。五层参考模型TCP/IP分层物理层 比特传输数据链路层 把网络层传下来的数据报组装成帧网络层 源主机到目的主机的数据分组路由与转发 IP ICMP OSPF传输层 进程和进程之间的数据传输 TCP UDP应用层 支持各种网络应用 FTP SMTP HTTP五层参考模型数据的封装和解封装原创 2020-09-14 16:33:44 · 5021 阅读 · 0 评论 -
TCP协议 UDP协议
TCP是面向连接的传输层的协议,它在进程交互时,会创建一个链接,然后在传输数据之后会取消连接,TCP的链接是虚连接。TCP协议的特点每一条TCP连接只能有两个端点,只能是点对点的数据链接,不能进行广播。TCP提供可靠的按时交付的 无差错的 不重复的 按序到达的服务 可靠有序 不丢不重TCP提供全双工通信发送缓存(准备发送的数据和已经发送但是没有收到确认的数据)接受缓存(按序到达但是还没有被接受应用程序读取的数据)TCP是面向字节流的TCP把应用程序交付下来的数据看成仅仅是连串的无结构的字节流原创 2020-09-14 16:09:00 · 194 阅读 · 0 评论 -
联合索引 覆盖索引 三星索引
联合索引指定了多少个列的关键字 作为B+树的关键字联合索引是一个索引联合索引比较时从左开始 所以遵循最左前置规则。单列索引是一种特殊的联合索引当一个A = 1 B > 2 C 3列的联合索引这样就用不到C这个字段覆盖索引通过辅助索引里面包含的信息就可以查询到 从而不需要回表回表其实很浪费性能 尽量不要使用回表典型的覆盖索引 不需要回表 只需要在辅助索引就可以查询到不是覆盖索引 会进行回表 所以在公司中一般要求不使用*号覆盖索引 不需要回表不是覆盖索引查询的原创 2020-09-12 11:15:56 · 195 阅读 · 0 评论 -
MySQL B + Tree索引机制的落地
插达式的存储引擎 MySQL最大的优势索引Indexes是有存储引擎实现的MySQL5.5版本之前 默认的存储引擎是MyISAM引擎5.5版本之后 InnoDB成了默认的存储引擎InnoDBInnoDB会创建两个文件 一个骨架文件(定义一个表的骨架 存放字段的长度的什么的)有且只有一个主键也就只有一个聚集索引查询除了主键别的字段 需要建立一个辅助索引 查询到主键 然后进行一次回表回表也就是根据查询到的主键 到主键索引里面再进行一次查询索引MySQL推荐使用递增的主键作为索引因为使用.原创 2020-09-12 11:11:00 · 927 阅读 · 1 评论 -
MySQL数据库索引精讲
数据库索引(本质是一个数据结构)正确合适的索引是数据库性能优化得基石数据库索引是一种为了加速数据表中记录检索的数据结构数据库的索引存储在磁盘中 不是存储在内存之中索引查询过程当数据变得很多 查询性能会非常的差 因为索引是存放在磁盘中 操作系统和磁盘的交互是非常浪费性能的使用 索引就非常的快捷把索引 和要查询的id列单独拿出来放在一个数据结构中 关键字即是id对应索引(也就是磁盘地址)然后在数据结构中进行查询 返回查询到的磁盘指针然后数据库根据传回来的磁盘指针 快速检索到这个磁盘指针对原创 2020-09-12 11:07:05 · 204 阅读 · 0 评论 -
两个链表的第一个公共节点
题解两个链表有第一个公共节点我们都从头遍历这两个链表 当遍历完之后 让第一个指针指向第二个链表的头部 第二个指针指向第一个链表的头部然后继续遍历即两个链表 一个长 L1 一个长L2L1 = Y + ZL2 = X + Z第一次遍历 L1 走了 Y + Z L2 走了X + Z然后他们交换头节点第二次遍历如果他们存在这个公共的节点长度Z即第二次 L1 走 X L2 走了 YL1 走了 Y + Z + XL2 走了 X + Z + Y如果他们存在公共节点如果他们存在公共节.原创 2020-09-11 10:52:39 · 142 阅读 · 1 评论 -
Java异常
error和exception的区别两者都继承与Throwable类不同的是error是和虚拟机有关 比如系统崩溃 栈溢出 虚拟机错误 内存空间不足等问题,这种错误程序无法自动恢复,需要关闭程序exception是表示程序可以处理的异常 程序可以捕获和处理异常来保证程序的正常运行Java的异常异常的根类是Throwable下面有两个子类 error 和 exception error是程序无法自己处理的问题 exception是程序可以处理恢复的问题简单来说Error是程序自身的问题程原创 2020-09-10 09:56:55 · 7397 阅读 · 1 评论 -
【Java面试知识点】2020秋招总结
Java基础Java访问修饰符详解原创 2020-09-07 14:26:49 · 25865 阅读 · 3 评论 -
Java 四种访问修饰符详解
访问修饰符权限PS 红色是不可访问private在当前类中 main方法之外可以借助名称使用 在main方法中需要实例化对象使用我们想要在别的类中调用私有成员 就需要建立一个公有的方法 在公有方法中使用这个私有成员 也就是面向对象中的封装。在继承中,私有成员无法被继承,子类无法使用父类的私有成员。public:在当前类中 main方法之外可以借助名称使用 在main方法中需要实例化对象使用在其他任何地方 都可以实例化对象进行访问在继承中,被public所修饰的成员能被所有的子类继承下来原创 2020-09-07 14:18:07 · 28924 阅读 · 1 评论 -
【2021链表面试题】环形链表(验证是否有环)
题目描述分析我们可以定义两个指针 一个快 一个慢然后遍历这个链表 如果存在环 因为一个慢一个快 必定会相遇即两个指针指向同一个节点public class Solution { public boolean hasCycle(ListNode head) { if(head == null){ return false; } ListNode p1 = head; ListNode p2 = head;原创 2020-09-01 16:39:10 · 176 阅读 · 1 评论 -
集合List Map和Set详解
ListList是一个有序,可以存放相同数据集合。其中的子类:ArrayList:底层结构是数组,所以查询速度比较快,增删比较慢,线程是不安全的。LinkedList:底层结构是双向链表,所以增删快,查询慢,线程安全。Vector:底层与ArrayList一样,线程是安全的,但是因为效率较慢,已经很少使用了。SetSet是一个无序集合,其中存放的数据是不可重复的。其中的子类:HashSet:线程不安全,无序标识唯一,HashSet底层其实基于HashMap实现的,通过HashMap原创 2020-08-22 09:51:57 · 202 阅读 · 1 评论 -
抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被 synchronized?
都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由 本地代码(如 C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。...原创 2020-08-21 08:35:42 · 226 阅读 · 0 评论 -
(JAVA面试)抽象类和接口的区别
抽象类特点:1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰关键字使用注意:抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰原创 2020-08-17 10:52:32 · 206 阅读 · 0 评论