挑战Java15-40k面试进行中
内卷成仙
十年饮冰,难凉热血!
展开
-
Java中多线程并发处理方式详解
synchronized关键字主要解决多线程共享数据同步问题。 ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。 ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别: synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据..原创 2020-07-21 08:28:39 · 855 阅读 · 0 评论 -
冒泡排序和选择排序代码最简
冒泡排序 int[] arr = {3,1,6,8,0}; // 定义一个flag,用来记录上一轮是否有元素进行交换, // 如果上一轮没有元素进行交换,说明已经排序完成,停止排序(优化) boolean flag; for (int i = 0; i < arr.length - 1; i++) {//外层控制的是比较的轮数 //每轮初始flag为true flag = true;...原创 2020-07-21 08:14:48 · 238 阅读 · 0 评论 -
描述软件生命周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段,即迭代作为生命周期的阶段。 ...原创 2020-07-21 08:09:20 · 430 阅读 · 0 评论 -
Eureka和Zookeeper区别简化
遵循原则不同 尤里卡遵循AP原则,动物园管理员遵循CP原则,C:强一致性,A:可用性,P:分区容错性 著名的CAP理论中提出,一个分布式系统不可能同时满足C(一致性)A(可用性)P(分区容错性),由于分区容错性p是分布式系统中必须保证,因此只能在a和ç之间权衡 ...原创 2020-07-21 08:06:16 · 199 阅读 · 0 评论 -
面向对象编程和面向接口编程
面向对象思想的核心之一,就是模拟真实世界,把真实世界中的事物抽象成类,整个程序靠各个类的实例互相通信、互相协作完成系统功能,这非常符合真实世界的运行状况,也是面向对象思想的精髓。 那么什么是面向接口编程呢?我个人的定义是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。 ...原创 2020-07-21 07:47:40 · 366 阅读 · 0 评论 -
HashMap的实现原理在JDK1.7和1.8的区别
相对于JDK1.7,HashMap处理hash冲突时,会首先存放在链表中去,但是一旦链表中的数据较多(即>8个)之后,就会转用红黑树来进行存储,优化存储速度。 其默认的大小是16,一旦>0.75*16之后,就会调用resize()进行扩容,扩容非常耗时,所以如果需要保存较多的话,最好在创建一开始就制定好HashMap的初始容量。 当链表元素个数大于8的时候,就会转换为红黑树;当红黑树元素个数小于6的时候,就会转换回链表。 链表元素小于等于8时,无论是查询速度还是增删速度都是最合适的,大..原创 2020-07-21 06:46:06 · 237 阅读 · 0 评论 -
分布式的Cap原则
什么叫做cap Cap分别指分区容错性,一致性,可用性 G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。一般来说,分区容错无法避免。 一致性 一致性的意思是,写操作之后的读操作,必须返回该修改后的值。 可用性 可用性意思是只要收到用户的请求,服务器就必须给出回应。 ...原创 2020-07-21 06:23:55 · 171 阅读 · 0 评论 -
SpringCloud的分布式锁和分布式事务
基于 Redis 的分布式锁 利用 SETNX 和 SETEX 基本命令主要有: SETNX(SET If Not Exists):当且仅当 Key 不存在时,则可以设置,否则不做任何动作。 SETEX:可以设置超时时间 其原理为:通过 SETNX 设置 Key-Value 来获得锁,随即进入死循环,每次循环判断,如果存在 Key 则继续循环,如果不存在 Key,则跳出循环,当前任务执行完成后,删除 Key 以释放锁。 这种方式可能会导致死锁,为了避免这种情况,需要设置超时时间。 通过数据库实现分布原创 2020-07-20 13:26:55 · 735 阅读 · 0 评论 -
MySQL的四种事务隔离级别
一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3、隔离性(Isolation):同一时间,只允许一个事务...原创 2020-07-20 13:10:24 · 129 阅读 · 0 评论 -
SpringCloud服务器雪崩效应
spring-cloud服务器雪崩效应 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性原创 2020-07-20 12:29:08 · 427 阅读 · 0 评论 -
SpringBoot启动原理 详解
一、SpringBootApplication背后的秘密 @SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解: 1 @Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Inherited 5 @SpringBootConfiguration 6 @EnableAutoConfiguration 7 @ComponentScan原创 2020-07-20 10:43:14 · 223 阅读 · 0 评论 -
乐观锁与悲观锁详解与使用场景
乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synch.原创 2020-07-20 10:08:15 · 190 阅读 · 0 评论 -
mybatis缓存机制详解缓存方式
缓存是一般的ORM(mybatis属于半自动化ORM框架) 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。 缓存体系结构: 所有的缓存实现类总体上可分为三类:基本缓存、淘汰算法缓存、装饰器缓存。 一级缓存(本地缓存): 一级缓存也叫本地缓存,MyBatis 的一级缓存是在会话(SqlSession)层面进行缓存的。 二级缓存: 二级缓存是用来解决一级缓存不能跨会话共享的问题的,原创 2020-07-20 09:50:57 · 212 阅读 · 0 评论 -
mysql缓存机制详解
mysql缓存机制就是缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要在再去解析、优化、执行sql。 如果这个表修改了,那么使用这个表中的所有缓存将不再有效,查询缓存值得相关条目将被清空。表中得任何改变是值表中任何数据或者是结构的改变,包括insert,update,delete,truncate,alter table,drop table或者是drop database 包括那些映射到改变了的表的使用merge表的查询,显然,者对于频繁原创 2020-07-20 09:10:41 · 203 阅读 · 0 评论 -
JVM内存模型图解详解
原创 2020-07-20 08:15:49 · 155 阅读 · 0 评论 -
Dubbo底层的网络通信机制原理!
原创 2020-07-16 08:54:15 · 459 阅读 · 0 评论 -
对比SpringCloud和Dubbo的技术选型
spring Cloud与dubbo都为微服务框架,那么我们在进行技术选型时应该怎么考虑呢?可以从以下几个方面考虑 1.架构完整度:与spring cloud相比,dubbo的架构完整度不够,其本身只提供了服务注册中心与服务治理两个模块,而spring cloud到现在为止,已经提供了服务注册中心,服务治理等24个模块,并且还在增加中。虽然dubbo也可以整合第三方框架,但是搭建出来的dubbo架构可能出现兼容性问题,而spring cloud不会,因为其每一个模块都是经过严格测试的,几乎不存在兼容性问题原创 2020-07-14 10:15:53 · 827 阅读 · 0 评论 -
对比SpringCloud和Dubbo的优缺点
dubbo由于是二进制的传输,占用带宽会更少 springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大 dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决 springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级 dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心只能用eureka或者自研 但如果我选,我会用springcloud。 从公司整体原创 2020-07-14 09:54:20 · 465 阅读 · 0 评论 -
挑战Java15-40k面试进行中
1、TCP、UDP、HTTP区别? TCP三次握手机制 第一次:客户端发送一个SYN包到服务端,并进入SYN_SEND状态,等待服务端的响应。 第二次:服务端收到SYN包,并确认,同时自己也发送一个SYN包,即SYN+ACK包,此时服务端进入SYN_RECV状态。 第三次:客户端收到服务端的SYN+ACK包,向服务端发送一个确认ACK包,进入ESTABLISHED状态,完成连接 UDP UDP也是传输层的一个协议。但是与TCP不同的是,UDP不是面向连接的,并不保证传输的可靠性,没有TCP的建立连接的原创 2020-07-03 15:17:28 · 318 阅读 · 0 评论