Java面试
文章平均质量分 53
、小H
这个作者很懒,什么都没留下…
展开
-
Spring声明式事务不生效场景
场景一Service方法抛出的异常不是RuntimeException或者Error类型,并且@Transactional注解上没有指定回滚异常类型。对应的代码例子为:@Servicepublic class UserServiceImpl implements UserService { private final UserMapper userMapper; public UserServiceImpl(UserMapper userMapper) {原创 2021-07-19 20:17:45 · 808 阅读 · 1 评论 -
ES集群同步原理
(1)、ES基本概念名词 Cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。 Shards 代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分..原创 2021-07-05 19:54:44 · 4196 阅读 · 0 评论 -
关于Elasticsearch的分片和副本
1,分片(Shard)Elasticsearch是一个分布式的搜索引擎,索引的数据也是分成若干部分,分布在不同的服务器节点中分布在不同服务器节点中的索引数据,就是分片(Shard)。Elasticsearch会自动管理分片,如果发现分片分布不均衡,就会自动迁移一个索引(index)由多个shard(分片)组成,而分片是分布在不同的服务器上的2,副本为了对Elasticsearch的分片进行容错,假设某个节点不可用,会导致整个索引库都将不可用。所以,需要对分片进行副本容错。每一个分片都会有对应的.原创 2021-07-05 19:44:58 · 1315 阅读 · 0 评论 -
KafKa和RabbitMQ
1.应用场景方面RabbitMQ:用于实时的,对可靠性要求较高的消息传递上。kafka:用于处于活跃的流式数据,大数据量的数据处理上。2.架构模型方面producer,broker,consumerRabbitMQ:以broker为中心,有消息的确认机制kafka:以consumer为中心,无消息的确认机制(也有消息的确认机制)3.吞吐量方面RabbitMQ:支持消息的可靠的传递,支持事务,不支持批量操作,基于存储的可靠性的要求存储可以采用内存或硬盘,吞吐量小。kafka:内部采用消息的批量处原创 2021-03-11 11:27:45 · 247 阅读 · 2 评论 -
SpringCloud之Zuul网关原理及其配置
Zuul简介 Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。 Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。 Zuul网关不是必要的。是推荐使用的。 使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用原创 2020-07-15 11:09:34 · 615 阅读 · 0 评论 -
SpringCloud之Hystrix容错保护原理及配置
1 什么是灾难性雪崩效应? 如下图的过程所示,灾难性雪崩形成原因就大致如此: 造成灾难性雪崩效应的原因,可以简单归结为下述三种:服务提供者不可用。如:硬件故障、程序BUG、缓存击穿、并发请求量过大等。 重试加大流量。如:用户重试、代码重试逻辑等。 服务调用者不可用。如:同步请求阻塞造成的资源耗尽等。 雪崩效应最终的结果就是:服务链条中的某一个服务不可用,导致一系列的服务不可用,最终造成服务逻辑崩溃。这种问题造成的后果,往往是无法预料的。2 如何解决灾难性雪崩效应? 解决原创 2020-07-14 13:51:31 · 342 阅读 · 0 评论 -
SpringCloud——Feign实例及原理
一、实例1、配置feign添加依赖在maven的pom中添加feign <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>配置启用在Application启动类中添加@En原创 2020-07-14 12:24:01 · 646 阅读 · 0 评论 -
eureka和zookeeper的区别
注册中心规则每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper或其他)同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同(订单服务部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER)(商品服务部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS)(订单服务和商品服务注册的服务名一定不能相同,不能同为ORDER,也不能同为GOODS)eureka是什么eureka作为分布式系统的注册中原创 2020-07-13 15:39:49 · 230 阅读 · 0 评论 -
Cloud Eureka概念、原理、心跳机制
Eureka是什么? Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务注册服务,各个节点启动后,会在Eu...原创 2020-07-13 14:48:31 · 2351 阅读 · 0 评论 -
StringBuilder和StringBuffer的区别(检查多线程环境下会触发的问题和异常)
StringBuilder和StringBuffer的区别在哪里? 当接触这个问题的时候,我们可能第一反应就是,StringBuilder是线程不安全的,StringBuffer是线程安全的为什么StringBuilder是线程不安全,StringBuffer是线程安全? 针对这个问题,大部分的人可能就无言以对了,我们只知道StringBuilder是线程不安全的,StringBuffer是线程安全的,却不知道为什么,所谓知其然,而不知其所...原创 2020-07-13 11:23:44 · 923 阅读 · 0 评论 -
浅谈设计模式-状态模式
Intent允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。Class DiagramImplementation糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。public interface State { /** * 投入 25 分钱 */ void insertQuarter(); /** * 退回 25 分钱 */ .原创 2020-07-07 19:17:52 · 196 阅读 · 0 评论 -
浅谈设计模式-策略模式
Intent定义一系列算法,封装每个算法,并使它们可以互换。策略模式可以让算法独立于使用它的客户端。Class DiagramStrategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。与状态模式的比较 ..原创 2020-07-07 17:03:06 · 133 阅读 · 0 评论 -
浅谈设计模式-单例模式
Intent 确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。ImplementationⅠ 懒汉式-线程不安全 以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就...原创 2020-07-07 14:35:43 · 162 阅读 · 0 评论 -
浅谈设计模式-工厂模式
简单工厂Intent 在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。Class Diagram 简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那...原创 2020-07-07 14:22:00 · 174 阅读 · 0 评论 -
Redis常识
前言Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。普遍用于目前主流的分布式架构系统中,关于redis的详细介绍,见另一篇文章:Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。如果你说还玩过Redis Module,像Bloo.原创 2020-06-11 15:19:36 · 227 阅读 · 0 评论 -
ReentrantReadWriteLock (读写锁)的使用
ReentrantReadWriteLock 是一个锁对象,他支持读数据锁和写数据锁;适合的使用场景1. 多线程环境2. 并且共同访问同一个资源数据3. 要求可以共享读数据,同时读4. 不能同时写数据注意事项读操作可以多线程同时一起读数据 但在写的时候,多个线程只能有一个线程在写,并且写的同时不允许去读数据使用方式 public static void main(String[] args) { //创建并发访问的账户 MyCount .原创 2020-05-28 11:22:10 · 428 阅读 · 0 评论 -
ReentrantLock的使用
一、初识ReentrantLock(ReentrantLock 实现了Lock interface)import java.util.concurrent.locks.ReentrantLock;/** * Created by haicheng.lhc on 17/05/2017. * * @author haicheng.lhc * @date 2017/05/17 */public class ReentrantLockTest extends Thread { pu.原创 2020-05-28 11:09:26 · 640 阅读 · 0 评论 -
@Cacheable的实现原理
如果你用过Spring Cache,你一定对这种配置和代码不陌生:<cache:annotation-driven cache-manager="cacheManager"proxy-target-class="true"order="1"/>@Cacheable(value = "3600", key = "i'm a cache key")public List<Object> getData(){} ...原创 2020-05-26 17:48:59 · 4568 阅读 · 0 评论 -
Java的synchronized以及锁的相关概念
synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:1)获取锁的线程执行完了该代码块,然后线程释放对锁的占有;2)线程执行发生异常,此时JVM会让线程自动释放锁。 那么如果这个获取锁的线程由于要等待IO或者...原创 2020-05-25 15:28:17 · 203 阅读 · 0 评论 -
JDK下Concurrent包部分介绍
Executor Executor接口是所有线程执行类的父接口,这个接口可以建立线程池,然后执行线程。 Executor框架的最核心的类是ThreadPoolExecutor,它是线程池的实现类,创建ThreadPoolExecutor一般使用Executors工厂模式创建,Executors类提供了一系列工厂方法用于创先线程池: public static ExecutorService newFixedThreadPo...原创 2020-05-25 14:42:21 · 287 阅读 · 0 评论 -
App消息推送 实现原理
1.消息推送的实质 实际上,是当服务器有新消息需推送给用户时,先发送给应用App,应用App再发送给用户 2. 作用 产品角度:功能需要,如:资讯类产品的新闻推送、工具类产品的公告推送等等 运营角度:活动运营需要,如:电商类产品的促销活动;召回用户 / 提高活跃度等等 作为开发者,不要有需求就接,应该多思考、多理解用户 / 功能的使用场景,有助于我们更好地去选择合适的开发方式3.原理4.七种主流的消息推送方式1...原创 2020-05-19 17:34:23 · 8810 阅读 · 0 评论 -
Spring事务不生效的场景
1、数据库引擎不支持事务 这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。 根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html...原创 2020-04-28 10:39:56 · 1046 阅读 · 0 评论 -
RabbitMQ经常询问面试问题
问:什么是RabbitMQ?答:RabbitMQ是一个开源消息代理软件(有时称为面向消息的中间件),它实现了高级消息队列协议(AMQP)。RabbitMQ服务器使用Erlang编程语言编写,构建在Open Telecom Platform框架上,用于集群和故障转移。问:RabbitMQ的交互怎么处理?答:交换机接受来自生产者应用程序的消息,并借助标头属性,绑定和路由键将它们路由到...原创 2019-08-02 17:53:54 · 939 阅读 · 0 评论 -
JVM,JDK,JRE:有什么区别?
Java新手的开发人员经常想知道Java虚拟机,Java开发工具包和Java运行时环境的区别。他们也很好奇这三个Java平台组件如何在Java应用程序中协同工作。最后,开发人员需要知道他们将如何与每个组件进行交互。简述:JVM是执行程序的Java平台组件。 JRE创建JVM并确保程序可以使用依赖项。 JDK允许您创建可由JVM和JRE执行和运行的Java程序。作为开发人员,您将使用J...原创 2019-08-02 17:42:10 · 177 阅读 · 0 评论 -
JDK 13:Java 13的新功能
Java 13的官方开发目标包括对垃圾收集,应用程序类数据共享和文本块的改进JDK 13将于2019年9月17日到期。初始候选版本将于8月8日到期。以下是正式为JDK 13提供的功能:在预览阶段添加文本块。文本块是一个多行字符串文字,可以避免大多数转义序列的需要。文本块以可预测的方式自动格式化字符串,并使开发人员可以控制格式。该项目列举了为Java添加文本块背后的一些目标。一个目标是...原创 2019-08-02 17:31:05 · 2605 阅读 · 0 评论 -
Java的JVM
1,Java由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。2,JVM在它的生存周期中有...原创 2019-07-30 10:40:24 · 212 阅读 · 0 评论 -
Nginx相关面试题
1,Nginx是如何处理一个请求的呢? 首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面,先初始化好这个监控的socket,再进行listen,然后再fork出多个子进程出来, 子进程会竞争accept新的连接。此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后。...原创 2019-07-30 10:34:39 · 415 阅读 · 0 评论 -
简述List、Set、Map类型的集合的各自特点。
JAVA集合主要分为三种类型:Set(集) List(列表) Map(映射) Collection 接口Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。 Set 和List 都继承了Conllection,Map没有Set(集合): Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。Set接口主要...原创 2019-07-24 15:15:51 · 4413 阅读 · 0 评论 -
Java基础--高级面试题
数组去重:List的indexOf(),以key-value,不能有重复的key的map进行数组的去重。 java中创建线程的三种方法 1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和Future创建线程3.Io,Bio(性能最差),Nio(字符缓冲区)4.jdk1.6过多的substring会导致内存泄漏(subs...原创 2019-07-24 15:08:42 · 369 阅读 · 0 评论 -
关于Final
Final修饰的基本数据类型. 1、所有的byte,short,char型的值将被提升为int型; 2、如果有一个操作数是long型,计算结果是long型; 3、如果有一个操作数是float型,计算结果是float型; 4、如果有一个操作数是double型,计算结果是double型; 5、被fianl修饰的变量不会自动改变类型,当2个fi...原创 2019-07-29 10:54:55 · 170 阅读 · 0 评论 -
什么是JavaConfig
什么是JavaConfig?答:Spring JavaConfig是Spring社区的产品,它提供了一种纯Java方法来配置Spring IoC容器。因此,它有助于避免使用XML配置。使用JavaConfig的优点是:面向对象的配置。由于配置在JavaConfig中定义为类,因此用户可以充分利用Java中面向对象的功能。一个配置类可以子类化另一个,覆盖其@Bean方法等。 减少或消...原创 2019-08-02 18:00:05 · 2871 阅读 · 0 评论 -
Spring Boot 相关面试题
问:什么是Swagger?你用Spring Boot实现了吗? A:Swagger广泛用于可视化API,而Swagger UI则为前端开发人员提供了在线沙箱。对于本教程,我们将使用Swagger 2规范的Springfox实现。Swagger是一个工具,规范和完整的框架实现,用于生成RESTful Web服务的可视化表示。它使文档能够以与服务器相同的速度更新。通过Swagger正确定义...原创 2019-08-02 18:08:11 · 833 阅读 · 2 评论 -
原 MySQL数据库优化
&n...转载 2019-08-10 09:25:58 · 245 阅读 · 0 评论 -
Mysql使用java代码快速插入100W数据
由于压力测试,您需要在数据库中检索大量数据,但数据库中没有太多数据。因此,对于测试,您必须快速将大量临时数据插入数据库。 有两种方法可以快速插入大量数据:一种是使用java代码实现;另一种是使用数据库存储过程。 首先,你必须有一个数据表,注意数据表的引擎,在构建表时使用MyISAM引擎,MyISAM插入比InnoDB快得多,因为Inn...原创 2019-08-07 14:47:42 · 4189 阅读 · 2 评论 -
深入聊聊微服务架构的身份认证
从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度的鉴权方案?本文将会为大家阐述微服务架构下的安全认证与鉴权方案。 单体应用 VS 微服务 随着微服务架构的兴起,传统...原创 2019-08-06 14:31:42 · 393 阅读 · 0 评论 -
Java泛型的使用场景
一、泛型概括 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数的方式传递,类似于方法中的变量参数。可以用在类、接口、方法的创建中,分别简称为泛型类、泛型接口、泛型方法。 在没有使用泛型的情况下,如果要实现参数“任意化”,通常会定义成Object类型来接受,然后强制类型转换使用;而强制类型转换有明显的缺点,就是必须要知道实际参数的具体类型的情...原创 2019-08-06 11:00:37 · 5130 阅读 · 0 评论 -
newInstance()和new关键字
从jvm的角度看,我们使用new的时候,这个要new的类可以没有加载;但是使用newInstance(路劲加载,无参加载,匹配资源)时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是class的静态方法forName()方法,这个静态方法调用了启动类加载器(就是加载javaAPI的那个加载器)。有了上面jvm上的理解,那么我们可以这样说newInstance实...原创 2019-07-26 09:58:34 · 310 阅读 · 0 评论 -
Spring Cloud面试问题
问:什么是Spring Cloud? 答:Spring Cloud Stream App Starters是基于Spring Boot的Spring Integration应用程序,提供与外部系统的集成。Spring Cloud Task。一种短命的微服务框架,用于快速构建执行有限数据处理的应用程序。 Spring Cloud问:使用Spring Cloud有哪些优势?...原创 2019-08-03 09:44:00 · 8025 阅读 · 0 评论 -
字符对应的编码集
字符 - URL编码值空格 - %20" - %22# - %23% - %25& - %26( - %28) - %29+ - %2B, - %2C/ - %2F: - %3A; - %3B< - %3C= - %3D> - %3E? - %3F@ - %40\ - %5C| - %7C...原创 2019-07-28 21:56:59 · 6001 阅读 · 0 评论