
面试
文章平均质量分 77
客 人
这个作者很懒,什么都没留下…
展开
-
基于RocketMQ分布式事务 - 完整示例
之前我们说到,分布式事务是一个复杂的技术问题。没有通用的解决方案,也缺乏简单高效的手段。不过,如果我们的系统不追求强一致性,那么最常用的还是最终一致性方案。今天,我们就基于RocketMQ来实现消息最终一致性方案的分布式事务。本文代码不只是简单的demo,考虑到一些异常情况、幂等性消费和死信队列等情况,尽量向可靠业务场景靠拢。另外,在最后还有《RocketMQ技术内幕》一书中,关于分布式事务示例代码的错误流程分析,所以篇幅较长,希望大家耐心观看。目前已经完成了订单服务的业务逻辑。转载 2023-08-24 21:52:55 · 1237 阅读 · 0 评论 -
分布式事务的四种解决方案
分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。转载 2023-08-24 21:13:23 · 241 阅读 · 0 评论 -
java 什么情况下触发gc java gc触发时机
在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果允许,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于则尝试Minor GC(如果尝试失败也会触发Full GC),如果小于则进行Full GC。concurrent mode failure是在执行CMS GC的过程中同时有对象要放入老年代,而此时老年代空间不足造成的(有时候“空间不足”是CMS GC时当前的浮动垃圾过多导致暂时性的空间不足触发Full GC)。转载 2023-08-24 00:20:03 · 292 阅读 · 0 评论 -
full gc的触发条件
首先看java堆的模型:新生代 80%的eden区和两个各10%的suvivor区。首先,在程序不断运行过程中新建的对象都在Eden区,当Eden满后,做monir GC,将存活的对象放到Survivor1。当Eden和Survivor1都满后做minor GC放到Survivor2。当Eden和Survivor2都满后再做minor GC,将存活对象放到Survivor1。如此反复。转载 2023-08-24 00:10:17 · 372 阅读 · 0 评论 -
Java内存分配和回收策略以及MinorGC、MajorGC、FullGC
从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,也叫Young GC。因为Java对象大多具备朝生夕死的特征,所以MinorGC非常频繁,一般回收速度也比较快。一般采用复制算法。Minor GC触发条件Eden区域满了新生对象需要分配到新生代的Eden,当Eden区的内存不够时需要进行MinorGC。转载 2023-08-23 23:12:02 · 263 阅读 · 0 评论 -
实战项目中Java heap space错误的解决
新生代的GC(Minor GC):新生代通常存活时间较短基于Copying算法进行回收,所谓Copying算法就是扫描出存活的对象,并复制到一块新的完全未使用的空间中,对应于新生代,就是在Eden和FromSpace或ToSpace之间copy。老年代的GC(Major GC/Full GC):老年代与新生代不同,老年代对象存活的时间比较长、比较稳定,因此采用标记(Mark)算法来进行回收,所谓标记就是扫描出存活的对象,然后再进行回收未被标记的对象,“蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。转载 2023-08-23 22:32:50 · 933 阅读 · 0 评论 -
主键索引和普通索引有什么区别
原文链接:https://blog.youkuaiyun.com/fly_zhaohy/article/details/104014391。而如果通过非主键索引查询, 需要先搜索k索引树, 找到对应的主键, 然后再到ID索引树搜索一次, 这个过程叫做回表.主键索引也被称为聚簇索引,叶子节点存放的是整行数据;而非主键索引被称为二级索引,叶子节点存放的是主键的值.从图中可以看出, 根据叶子节点内容不同,索引类型分为主键索引和非主键索引.总结, 非主键索引的查询需要多扫描一颗索引树, 效率相对更低.转载 2023-08-23 20:30:08 · 252 阅读 · 0 评论 -
mysql,oracle,sql server中的默认事务隔离级别查看,更改
转载自。转载 2023-08-18 17:21:25 · 143 阅读 · 0 评论 -
Hystrix服务熔断
2 人赞同了该文章目录收起一、Hystrix服务熔断二、断路器三个重要参数1、快照时间窗2、请求总数阈值3、错误百分比阈值三、Hystrix服务熔断配置1、引入Hystrix依赖2、启动类添加激活注解3、yml4、业务类处理四、Hystrix断路器开启或者关闭的条件Hystrix关键特性:服务降级、服务熔断、服务限流。转载 2023-08-17 17:26:12 · 327 阅读 · 0 评论 -
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问转载 2020-05-16 14:06:24 · 306 阅读 · 0 评论 -
Redis模式对比:主从模式 VS 哨兵sentinel模式 VS Redis cluster模式
推荐观看:十年架构师实战Redis—用Redis实现:秒杀/抢购/排行榜/推荐系统/抽奖系统!从Redis到分布式架构,通过Redis学AKF划分原则、CAP定理!www.bilibili.com/video/BV1Wt4y1Q7mA模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也转载 2021-08-05 20:25:58 · 1294 阅读 · 0 评论 -
SpringCloud面试题及答案
1. 什么是 spring cloud?spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。2. spring cloud 断路器的作用是什么?在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回转载 2020-07-01 00:57:56 · 834 阅读 · 0 评论 -
SpringBoot常见的经典面试题
SpringBoot常见的经典面试题最近很多人面试时,简历上都说自己熟悉 Spring Boot, 或者说正在学习Spring Boot,一被面试官问道,都只停留在简单的使用阶段,很多东西都不清楚,下面我整理了一些springboot比较常见的面试题。1、什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重xml的配置,提供了各种启动器,在运行过程中自定配置, 开发者能快转载 2020-06-30 13:00:53 · 655 阅读 · 0 评论 -
线程池的执行原则及配置参数详解
池是一种非常优秀的设计思想,通过建立池可以有效的利用系统资源,节约系统性能。Java 中的线程池就是一种非常好的实现,从 JDK 1.5 开始 Java 提供了一个线程工厂 Executors 用来生成线程池,通过 Executors 可以方便的生成不同类型的线程池。但是要更好的理解使用线程池,就需要了解线程池的配置参数意义以及线程池的具体工作机制。下面先介绍一下线程池的好处以及创建方式,接着会着重介绍关于线程池的执行原则以及构造方法的参数详解。线程池的好处引用自并发编程网 - ifeve.c.转载 2020-06-12 09:41:38 · 712 阅读 · 0 评论 -
发现kafka丢消息后的排查
背景: 最近在用kafka做消息中间件,producer从hive中读取消息发送到kafka,后端storm对消息分类发送到elasticsearch建立索引。问题: hive表中总共350万数据,当时整个全量索引结束后发现,最后索引条数总共310万左右。storm日志没有任何错误日志。排查: 首先排查storm consumer的问题,由于发现storm日志没有任何异常,所以第一步基本排除建索引程序的问题。storm 消费kafka用的官方storm-ka...转载 2020-06-09 21:58:31 · 499 阅读 · 0 评论 -
分布式事务
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行CAP的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事务来简单聊一下。数据库事务在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开..转载 2020-06-09 18:03:32 · 212 阅读 · 0 评论 -
Servlet、Struts2以及SpringMvc中的线程安全
Servlet是单例多线程struts2每次处理一个请求,struts2就会实例化一个对象,这样就不会有线程安全的问题了。Struts2 是线程安全的,当然前提情况是,Action 不交给 spring管理,并且不设置为单例。Spring mvc 线程不安全的原因请求时多线程请求的,但是每次请求过来调用的Controller对象都是一个,而不是一个请求过来就创建一个controller对象原因就在于如果这个controller对象是单例的,那么如果不小心在类中定义了类变量,那么这个类变量是被所转载 2020-06-09 18:03:57 · 375 阅读 · 0 评论 -
Eureka和ZooKeeper的区别
首先我们先说下:RDBMS==>(MySql,Oracle,SqlServer等关系型数据库)遵循的原则是:ACID原则(A:原子性。C:一致性。I:独立性。D:持久性。)。NoSql==>(redis,Mogodb等非关系型数据库)遵循的原则是:CAP原则(C:强一致性。A:可用性。P:分区容错性)。在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务可用性。P:分区容错性(服务对网络分区故障的容错性)。在这个特性中任何分布式系统只能保证两个。CAP...转载 2020-06-08 20:36:40 · 420 阅读 · 0 评论 -
java的四种修饰符访问权限
java的访问修饰符有四种:private、protected、public、default.这四种访问修饰符的访问权限不一样。java修饰符访问权限修饰符 所在类 同一个包内其他类 其他包内子类 其他包内非子类 缺省(default) √ √ × × public √ √ √ √ private √ × × × protected √ √ √ × 1.pr转载 2020-06-08 18:43:09 · 1950 阅读 · 0 评论 -
关于HashMap初始化容量问题
关于HashMap初始化容量问题使用阿里云代码规范插件扫描后出现以下提示:hashmap should set a size when initalizing,即hashmap应该在初始化时设置一个大小在网上搜到一篇讲解(https://www.cnblogs.com/coderxuyang/p/3718856.html),如下:在元素的装载数量明确的时候HashMap的大小应该如何选择。今天看到美团招聘给出了一道小题目,关于HashMap的性能问题。问题如下:java ...转载 2020-06-05 09:37:02 · 597 阅读 · 0 评论 -
淘宝技术架构演进之路
1.概述 本文以淘宝为例,介绍从一百到千万级并发情况下服务端架构的演进过程,同时列举出每个演进阶段遇到的相关技术,让大家对架构的演进有一个整体的认知,最后汇总一些架构的设计原则。2.基本概念 在介绍架构之前,为了避免读者对架构设计中的一些概念不了解,下面对接个最基础的概念进行介绍:分布式系统中的对个模块在不同服务器上部署,即可成为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或者两个相同的Tomcat分别部署在不同的服务器上。高可用系统中部分节点失效时,其他节点可以接替转载 2020-05-10 14:19:17 · 1169 阅读 · 0 评论 -
MySQL数据库优化总结
1. 优化你的MySQL查询缓存在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的。但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它。在有些处理任务中,我们实际上是可以阻止查询缓存工作的。复制代码代码如下: // query cac转载 2017-07-19 15:39:44 · 385 阅读 · 0 评论 -
分布式文件系统比较
一、概述普通存储方案:Rsync、DAS(IDE/SATA/SAS/SCSI等块)、NAS(NFS、CIFS、SAMBA等文件系统)、SAN(FibreChannel, iSCSI, FoE存储网络块),Openfiler、FreeNas(ZFS快照复制)由于生产环境中往往由于对存储数据量很大,而SAN存储价格又比较昂贵,因此大多会选择分布式存储来解决一下问题:海量数据存储问题数据高可用问题(冗余...转载 2018-07-09 22:42:01 · 12600 阅读 · 1 评论 -
RPC与RMI的区别
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542811.html 一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。 一次RPC调用的过程大概有10步: 1.执行客户端调用语句,传送参数 2.调用本地系统发送网络消息 ...转载 2018-07-09 19:53:05 · 432 阅读 · 0 评论 -
Apache与Nginx的优缺点比较
Apache与Nginx的优缺点比较 1、nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 apache 相对于nginx 的优点: rewrite ,...转载 2018-07-09 20:08:29 · 232 阅读 · 0 评论 -
hessian、rmi、dubbo与rpc关系
hessian、rmi、dubbo与rpc之间的关系单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC 在使用形式上像调用本地函数(或方法)一样去...转载 2018-07-09 18:29:30 · 2958 阅读 · 0 评论 -
spark面试
spark面试问题收集spark面试问题1、spark中的RDD是什么,有哪些特性RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。 Dataset:就是一个集合,用于存放数据的Distributed:分布式,可以并行在集群计算Resilient:表示弹性的 弹性表示 1、RD...转载 2018-07-02 20:20:20 · 638 阅读 · 0 评论 -
spark面试题
Spark Core面试篇01随着Spark技术在企业中应用越来越广泛,Spark成为大数据开发必须掌握的技能。前期分享了很多关于Spark的学习视频和文章,为了进一步巩固和掌握Spark,在原有spark专刊基础上,新增《Spark面试2000题》专刊,题集包含基础概念、原理、编码开发、性能调优、运维、源代码以及Spark周边生态系统等。部分题集来源于互联网,由梅峰谷志愿者收集和整理,部分题集由...转载 2018-07-02 20:18:52 · 4939 阅读 · 0 评论 -
redis面试
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操...转载 2018-07-23 20:17:05 · 645 阅读 · 0 评论 -
jvm面试题
一、面试题内存模型以及分区,需要详细到每个区放什么。JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class类信息常量池(static常量和static变量)等放在方法区new:方法区:主要是存储类信息,常量池(static常量和static变量),编译后的代码(字节码)等数据堆:初始化的对象,成员变量 (那种非static的变量),所有的对象实例和数组都要在堆上分配...转载 2018-07-12 20:35:24 · 1101 阅读 · 0 评论 -
zookeeper面试题
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zook...转载 2018-07-28 14:53:09 · 469 阅读 · 0 评论 -
spring面试
Spring 概述1. 什么是spring?spring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。 ...转载 2018-07-26 16:39:52 · 315 阅读 · 0 评论 -
mybatis面试
1、#{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。2、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?第1种: 通过在查...转载 2018-07-26 17:20:58 · 464 阅读 · 0 评论 -
Netty与mina的比较
Netty是什么?为什么这么火?Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。相比JDK原生NIO,Netty提供了相对十分简单易用的API,非常适合网络编程。Netty是完全基于NIO实现的,所以Netty是异步的。作为一个异步NIO框架,Nett...转载 2018-07-30 21:33:36 · 15278 阅读 · 0 评论 -
select、poll、epoll之间的区别
IO多路复用之select、poll、epoll详解 目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,pselect,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己...转载 2018-08-15 22:46:14 · 4458 阅读 · 0 评论 -
mysql面试
1. 主键 超键 候选键 外键1)超键(super key) :在关系中能唯一标识元组的属性集称为关系模式的超键2)候选键(candidate key):不含有多余属性的超键称为候选键3)主键(primary key):用户选作元组标识的一个候选键程序主键4)外键(foreign key):如果关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键则该属性集是关系模式R1...转载 2018-08-18 18:47:42 · 822 阅读 · 0 评论 -
云计算
一、云计算总纲二、下面是章节部分目录: 2.1 JAVA基础: 2.2 Linux基础 2.3SQL优化 2.4Hadoop 2.0大数据 2.5SPARK+STORM+FLUME 2.6PYTHON 2.7统计学基础 2.8矩阵基础...原创 2019-05-29 21:10:33 · 1020 阅读 · 0 评论 -
springboot+springcloud相关面试题
什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven配置 自动配置spri...转载 2018-06-26 22:06:38 · 458 阅读 · 0 评论 -
Dubbo和Spring Cloud微服务架构对比
Dubbo和Spring Cloud微服务架构对比微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如 Dubbo 和 Spring Cloud。各大互联网公司也有自研的微服务框架,...转载 2018-06-26 21:37:15 · 212 阅读 · 0 评论 -
面试题
1. Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java有没有goto?java中的保留字,现在没有在java中使用。3、说...转载 2018-04-03 22:11:10 · 585 阅读 · 0 评论