![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试相关
文章平均质量分 85
时间都哪去了
拥有10多年的经验,精通分布式存储、分布式事务、分布式缓存相关技术、dubbo、Spring Cloud分布式微服务架构
、深度学习框架Tensorflow、Scikit-learn
展开
-
Kubernetes K8S之Pod跨namespace名称空间访问Service服务
Kubernetes的两个Service(ServiceA、ServiceB)和对应的Pod(PodA、PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace名称空间并通过Service实现互访。应该如何实现?场景需求Kubernetes的两个Service(ServiceA、ServiceB)和对应的Pod(PodA、PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace名称空间并通过Service实现互..转载 2021-03-17 10:02:05 · 2545 阅读 · 0 评论 -
消息中间件—RocketMQ消息存储
消息存储是MQ消息队列中最为复杂和最为重要的一部分,所以小编也就放在RocketMQ系列篇幅中最后一部分来进行阐述和介绍。本文先从目前几种比较常用的MQ消息队列存储方式出发,为大家介绍RocketMQ选择磁盘文件存储的原因。然后,本文分别从RocketMQ的消息存储整体架构和RocketMQ文件存储模型层次结构两方面进行深入分析介绍。使得大家读完本文后对RocketMQ消息存储部分有一个大致的了解和认识。这里先回顾往期RocketMQ技术分享的篇幅(如果有童鞋没有读过之前的文章,建议先好好读下之前小编写的转载 2021-03-16 20:07:00 · 289 阅读 · 1 评论 -
谈谈DDD类型及案例分析
分层架构分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。DDD分层架构中比较经典的三种模式:四层架构、五层架构和六边形架构。四层架构Eric Evans在《领域驱动设计-软件核心复杂性应对之道》这本书中提出了传统的四层架构模式:User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这原创 2021-03-16 19:11:31 · 1472 阅读 · 0 评论 -
MongoDB 优缺点?
一、什么是MongoDB MongoDB是C++编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB旨在为Web应用提供可扩展的高性能数据存储解决方案。 MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。 MongoDB文档类似于Json对象。字段值可以包含其他文档,数组及文档数组。 二、 MongoDB 的优缺点优点:...原创 2021-03-07 09:08:09 · 2567 阅读 · 2 评论 -
Redis是单线程的,但Redis为什么这么快?
一.Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。Redis 内置了复制(Replication)..原创 2021-03-06 17:38:53 · 166 阅读 · 0 评论 -
5个常问的Redis面试题你答得出来吗?
redis 集群模式的工作原理能说一下么?在集群模式下, redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?1、面试官心理分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者 twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。这两年,redis 不断在发展,redis 也不断有新的转载 2021-03-06 15:52:42 · 347 阅读 · 0 评论 -
Kubernetes-Pod/ReplicaSet/Deployment/Service关系
资源之间的关系1)Pod是最小的调度单元,Pod启停容器镜像等; 2)Pod由ReplicaSet控制,ReplicaSet由Deployment控制,然后外部提供服务的是Service。RS—>Pod查看Pod:$ kubectl get pods查看RS:$ kubectl get rs查看Pod详情:$ kubectl describe pods pod_name我们可以通过kubectl describe pods...原创 2021-03-06 12:36:37 · 224 阅读 · 0 评论 -
Linux mmap内存映射原理分析
一、传统文件访问unix访问文件的传统方法使用open打开他们,如果有多个进程访问一个文件,则每一个进程在再记得地址空间都包含有该文件的副本,这不必要地浪费了存储空间。下面说明了两个进程同时读一个文件的同一页的情形,系统要将该页从磁盘读到高速缓冲区中,每个进程再执行一个内存期内的复制操作将数据从高速缓冲区读到自己的地址空间。在工作中偶尔会听到mmap这个词。首先从出处上来说,mmap()是在中定义的一个函数,此函数的作用是创建一个新的虚拟内存区域,并将指定的对象映射到此区域。因此,一直...原创 2020-12-08 20:34:01 · 620 阅读 · 1 评论 -
Netflix Hystrix断路器简介与工作原理
一、前言?1、Netflix Hystrix断路器是什么?Netflix Hystrix是SOA/微服务架构中提供服务隔离、熔断、降级机制的工具/框架。Netflix Hystrix是断路器的一种实现,用于高微服务架构的可用性,是防止服务出现雪崩的利器。2、为什么需要断路器?在分布式架构中,一个应用依赖多个服务是非常常见的,如果其中一个依赖由于延迟过高发生阻塞,调用该依赖服务的线程就会阻塞,如果相关业务的QPS较高,就可能产生大量阻塞,从而导致该应用/服务由于服务器资源被耗尽而拖垮。另.原创 2020-11-02 08:52:13 · 616 阅读 · 0 评论 -
java常用数据结构解析
常用的数据结构有八种: 数组(Array),栈(Stack),链表(Linked List),图(Graph),队列(Queue),树(Tree),堆(Heap),散列表(Hash)List 有序,可重复ArrayList内部是使用动态数组来实现的,对于数据的随机get和set或是少量数据的插入或删除,查询效率会比较高。ArrayList是线程不安全的,在不考虑线程安全的情况下速度也比较快的。ArrayList插入数据可以重复,也是有序的,按照插入的顺序来排序。底层数据结构数组,查..原创 2020-11-04 10:43:15 · 203 阅读 · 0 评论 -
操作系统的用户态和核心态切换条件以及为什么要切换
我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好CPU 寄存器和程序计数器什么是 CPU 上下文CPU 寄存器和程序计数器就是 CPU 上下文,因为它们都是 CPU 在运行任何任务前,必须的依赖环境。CPU 寄存器是 CPU 内原创 2020-09-06 17:34:30 · 4111 阅读 · 0 评论 -
网络IO模型?什么是多路复用IO?select和epoll的差别?
5、“I/O 模型”的基本认识介绍操作系统的 I/O 模型之前,先了解一下几个概念: 1)阻塞调用与非阻塞调用; 2)阻塞调用是指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回; 3)非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 两者的最大区别在于被调用方在收到请求到返回结果之前的这段时间内,调用方是否一直在等待。阻塞是指调用方一直在等待而且别的事情什么都不做;非阻塞是指调用方先去忙别的事情。同步处理与异步处理:同...原创 2020-09-05 12:01:45 · 750 阅读 · 0 评论 -
HashMap以及CocurrentHashMap详细说明
HashMap众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具体实现稍有不同。Base 1.71.7 中的数据结构图:先来看看 1.7 中的实现。这是 HashMap 中比较核心的几个成员变量;看看分别是什么意思? 初始化桶大小,因为底层是数组,所以这是数组默认的大小。 桶最大值。 默认的负载因子(0.75) table 真正存放数据的数组。 Map 存放数量的大小。 .原创 2020-09-05 11:57:20 · 624 阅读 · 0 评论 -
Java基础知识面试题(2020最新版)
Java基础知识面试题(2020最新版)文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 JVM、JRE和JDK的关系 什么是跨平台性?原理是什么 Java语言有哪些特点 什么是字节码?采用字节码的最大好处是什么 什么是Java程序的主类?应用程序和小程序的主类有何不同? Java应用程序与小程序之间有那些差别? Java和C++的区别 Oracle JDK 和 OpenJDK 的对比 基础语法转载 2020-09-01 11:31:43 · 564 阅读 · 0 评论 -
Java线程安全面试题
多个线程不管以何种方式访问某个类,并且在主调代码中不需要进行同步,都能表现正确的行为。线程安全有以下几种实现方式:不可变不可变(Immutable)的对象一定是线程安全的,不需要再采取任何的线程安全保障措施。只要一个不可变的对象被正确地构建出来,永远也不会看到它在多个线程之中处于不一致的状态。多线程环境下,应当尽量使对象成为不可变,来满足线程安全。不可变的类型:final 关键字修饰的基本数据类型String枚举类型Number 部分子类,如 Long 和 Double 等数值包装类原创 2020-06-22 11:37:41 · 397 阅读 · 0 评论 -
40个Java多线程问题总结
前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。转载 2020-06-22 09:37:10 · 199 阅读 · 0 评论 -
并发编程之Java线程池解析
经典面试题面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。 面试问题3:线程池都有哪几种工作队列? 面试问题4:使用无界队列的线程池会导致内存飙升吗? 面试问题5:说说几种常见的线程池及使用场景?线程池概念线程池: 简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都原创 2020-06-20 14:06:38 · 830 阅读 · 0 评论 -
Java 深拷贝与浅拷贝的分析
了解下深拷贝和前拷贝的概念:浅拷贝:会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的是基本类型的值;如果属性是内存地址,拷贝的就是内存地址,因此如果一个对象改变了这个地址就会影响到另一个对象;深拷贝:不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值;了解完概念之后,我们来测试下普通的对象赋值操作属于深拷贝还是浅拷贝:测试代码:public class DepthCopy { p...原创 2020-06-16 22:36:46 · 248 阅读 · 0 评论 -
SpringBoot应用之事务不生效的几种情况
I. 配置将使用声明式事务,首先我们创建一个 SpringBoot 项目,版本为2.3.1.RELEASE,使用 mysql 作为目标数据库,存储引擎选择Innodb,事务隔离级别为 RR,开启@EnableTransactionManagementII. 不生效在声明式事务的使用教程200119-SpringBoot 系列教程之声明式事务 Transactional中,也提到了一些事务不生效的方式,比如声明式事务注解@Transactional主要是结合代理实现,结合 AOP 的知识点..原创 2020-06-15 22:35:59 · 2222 阅读 · 1 评论 -
J2EE相关组件知识总结
面试官问你J2EE有哪些组件,是不是会一脸懵圈,组件是什么鬼?其实我们的JavaEE应用程序就是由组件构成的,JavaEE组件是具有独立功能的单元,它们通过相关的类和文件进行组装,成为应用程序,并且与其他组件交互。例如:控制器组件、EAO组件(DAO层也被称为EAO层),表现层组件等等。下面我们就根据JavaEE的分层模型来说说各层组件的详细情况。表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,但JSP并不是唯一的表现层技术。表现层还可以由Veloc原创 2020-06-15 22:27:37 · 504 阅读 · 0 评论 -
Java运⾏期的jar版本冲突控制解决思路
解决思路:⼀般来说,在⽐较⼤的项⽬⾥,依赖冲突这种事情⼏乎是⽆法避免的。⼀般来说,这种问题的解决⽅法⼤多是下⾯⼏种:对于业务⽅来说,写代码的时候⼩⼼⼀点,遇到不同依赖的时候,有意识的检查⼀下依赖树,尽量使⽤较新的包,并且代码上线之前需要在测试环境充分测试。 对于组件开发⽅来说,在写接⼊⽂档的时候要同时指明依赖的包的最低版本号,清楚地告诉接⼊⽅最低的依赖,然后再由接⼊⽅⼿动指定。 使⽤Shade技术,对于组件开发⽅来:说,将需要依赖的第三⽅包shade进⾃⼰的代码,使⽤“⾃⼰包名的前缀+实际包名原创 2020-06-15 22:17:45 · 291 阅读 · 0 评论 -
重写equals 为什么一定要重写hashcode?
我们新建一个类时,都是默认继承Object类,Object类的equals方法是比较是否指向同一个对象(对象内存地址是否相同)equals与hashCode是Object类是两个方法,非常重要查看Object源码 public native int hashCode(); public boolean equals(Object obj) { return (this == obj); }一个类只重写了equals方法,那么对象equals为.原创 2020-06-11 18:44:52 · 283 阅读 · 0 评论