rundreamsFly
持有PMI-PMP和Kubernetes-CKA认证,是阿里云专家博主,擅长需求分析、DevOps平台构建及分布式系统架构。曾任职于易极付、德澳教育等公司,担任大模型应用开发工程师、项目经理、技术主管等职,主导AI大模型在业务中的创新应用,推动智能化转型。具备项目管理与AI技术融合的实战经验,致力于高效、智能的解决方案。
展开
-
【面试大全-ZK】-Zookeeper横扫千军
数据发布与订阅:发布和订阅所谓的配置管理,顾名思义就是将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理。ZK采用的是推拉结合的方式推:服务端会推给注册了监控节点客户端Wathcer事件拉:客户端获取通知后,然后主动到服务端拉取最新的数据命名服务:是通过指定的名字来获取资源或者服务地址,利用ZK创建一个全局路径,这个路径可以作为一个名字。在分布式环境下,通常需要对应用、服务统一命名,便于识别不同服务可将服务名以及地址写入ZK,客户端通过ZK进行获取原创 2023-02-02 20:12:49 · 8445 阅读 · 49 评论 -
对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 分布式消息队列
MQ3大核心要素:解耦、异步、削峰。整体对比开发语言kafka:Scalarabbitmq:Erlangrocketmq:javaactivemq:java支持的协议kafka:自己定义的一套…(基于 TCP)rabbitmq:AMQProcketmq:自己定义的一套…activemq:OpenWire、STOMP、REST、XMPP、AMQP消息存储Kafka:内存、磁盘、数据库。支持大量堆积。kafka 的最小存储单元是分区,一个 topic 包含多个分区,ka原创 2021-02-18 15:46:39 · 8587 阅读 · 89 评论 -
【面试大全-Nginx】-Nginx Web服务器
Nginx是一个web服务器和方向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反向代理服务器 、负载均衡器和HTTP缓存Nginx 解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题。它的设计不像传统的服务器那样使用线程处理请求,而是一个更加高级的机制—事件驱动机制,是一种异步事件驱动结构。原创 2023-01-30 15:09:38 · 10885 阅读 · 53 评论 -
【面试大全】互联网面试软实力【必看】
虽说面试和工作是两回事,但是你要想要获得自己满意的 offer ,你自身的实力必须要强。这些问题在面试之前,尤其是相对有点规模的公司,HR说话的分量蛮重的,所以建议把这些问题都。简历就像是我们的一个门面一样,它在很大程度上决定了你能否进入到下一轮的面试中。写在简历上的东西一定要慎重,这是面试官大量提问的地方。原创 2022-12-12 18:11:56 · 10010 阅读 · 1 评论 -
【面试大全-SpringCloud】一马平川SpringCloud
微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API),每个服务都围绕着具体的业务进行构建,并且能够被独立的构建在生产环境、类生产环境等。原创 2022-04-11 16:05:33 · 10451 阅读 · 31 评论 -
【面试大全-Java】Spring核心问答
Spring 是Java企业级应用的开源开发框架,Spring主要用于开发Java应用,简化Java企业级应用开发。通知实在方法执行前或者执行后要做的动作,实际就是程序需要通过AOP触发的代码段。Spring切面有5中类型的通知before:前置通知,在方法前被执行after:在方法执行之后调用的通知,无论方法是否执行成功:方法执行成功执行通知:在方法抛出异常退出时执行的通知around:在方法执行前和执行后的通知。原创 2022-04-10 22:14:31 · 13486 阅读 · 42 评论 -
【面试大全】分布式常见问题
如下图,假设时间周期为1min,将1min再分为2个小周期,统计每个小周期的访问数量,则可以看到,第一个时间周期内,访问数量为75,第二个时间周期内,访问数量为100,超过100的访问则被限流掉了。使用计数器在周期内累加访问次数,当达到设定的限流值,触发限流策略,下一个周期开始时从新开始计数。是以固定的算法(r=时间周期/限流值)的速度向令牌桶中加入令牌,直到令牌桶满,请求到达时向令牌桶获取令牌,获取成功则继续执行,获取失败则触发限流策略。原创 2022-04-10 22:14:01 · 8316 阅读 · 148 评论 -
【面试大全-Java】SpringBoot必问
Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starterweb启动器就能拥有web的功能,无需其他配置原创 2022-04-10 22:13:22 · 11729 阅读 · 106 评论 -
【面试大全-Dubbo】Dubbo不负相遇
其次,适配云原生技术栈的发展。 微服务让业务开发演进更灵活、快捷的同时,也带来了一些它独有的特征和需求:如微服务之后组件数量越来越多,如何解决各个组件的稳定性,如何快速的水平扩容等,以 Docker、Kubernetes、Service Mesh 为代表的云原生基础设施为解决这些问题带来了一些新的选择原创 2022-04-10 22:12:39 · 9943 阅读 · 58 评论 -
【面试大全-MQ】-消息队列
解耦、异步、削峰解耦:一个系统或者说一个模块,调用了多个系统或者模块,互相之间很复杂,维护起来比较麻烦。但是这个接口不需要同步接口的,比如通知等,这个时候采用异步化进行解耦异步:某些操作,比如非事务操作,这个时候可以采用异步的方式削峰:减少高峰期对服务器的压力原创 2022-04-10 22:12:08 · 14781 阅读 · 20 评论 -
【面试大全-网络】网络的点点滴滴
端口不同:HTTP和 HTTPS 的连接方式不同没用的端口也不一样,HTTP是80, HTTPS 用的是443消耗资源:和HTTP相比,HTTPS通信会因为加解密的处理消耗更多的CPU和内存资源。开销: HTTPS 通信需要证书,这类证书通常需要向认证机构申请或者付费购买。原创 2022-04-10 22:11:36 · 10008 阅读 · 38 评论 -
【面试大全-Java】Mybatis核心问题
Mybatis是一个半ORM框架,它封装了JDBC,开发时只需要关注SQL本身,不需要再去做 驱动加载、创建连接等操作,这样使用起来更简洁,领活动够高。Mybatis可以使用XML或者注解来配置原生信息,提高效率。原创 2022-04-10 22:10:59 · 8774 阅读 · 51 评论 -
【面试大全-缓存】-Redis必修课
bigkey是指占用内存比较大的key,比如一个字符串可以占用300M网络阻塞:获取key时,传输数据量比较大,增加带宽压力超时阻塞:因为bigkey占用的空间比较大,所以操作起来效率会比较低,导致出现阻塞的可能性增加。原创 2022-04-10 22:10:02 · 11938 阅读 · 165 评论 -
【面试大全-JVM】必备JVM
Java虚拟机是可以执行Java字节码的虚拟机进程,Java源文件被编译成Java虚拟机执行的字节码文件,Java编译后可实现跨平台,因为JVM虚拟机让这个变得可能。原创 2022-04-10 22:08:27 · 15089 阅读 · 124 评论 -
【面试大全-多线程】多线程&高并发
线程安全就是说多线程访问同一段代码,不会产生不确定的结果如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。AQS全称为AbstractQueuedSychronizer ,抽象队列的同步器。AQS定义了一套多线程访问共享资源的同步器框架。ReentrantLock、CountDownLatch、Semaphore 都是基于AQS来实现的。AQS定义两种资源共享方式:Exclusive:独占,只有一个线程能够执行【ReentrantLock】原创 2022-04-10 22:07:29 · 12836 阅读 · 59 评论 -
【面试大全-Mysql】Mysql核心问答
是Mysql高效获取数据的数据算法,通俗的讲:数据库的索引就好比一本书的目录,能够加快数据库表的查询速度。索引往往是存在于磁盘中的,没有特别说明,默认是B+树结构【多路搜索树,并不一定是二叉的】。内连接(Inner Join):匹配两张表中相关联的记录左连接(Left Join):除了匹配两张表相关联的记录外,还会匹配左表中剩余的记录,右表中位匹配到的字段用null表示右连接(Right Join):除了匹配两张表相关联的记录外,还会匹配右表中剩余的记录。原创 2022-04-10 22:06:26 · 9775 阅读 · 41 评论 -
【面试大全-Java】必备基础
如果重写了equals方法,也必须重写hashCode方法类所有的实例都必须遵循equeals和hashCode的规则。原创 2022-04-10 22:03:55 · 8322 阅读 · 130 评论 -
【面试大全-缓存】-Redis事务及热点数据
怎么理解Redis事务?事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?Redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。Redis提供6种数据淘汰策略:volatile-lru:从已设置过期时间的数据集(server.db[i]原创 2022-01-18 23:05:00 · 9007 阅读 · 0 评论 -
【面试大全-缓存】-Redis有哪些适合的场景
如果你快速的在 Google 中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的 就是利用 Redis 创建非常好的后端工具,以满足各种队列需求。行: ZRANGE user_scores 0 10 WITHSCORES Agora Games 就是一个很好的例子,用 Ruby 实现的,它的排行榜就是使用 Redis 来存储数据的,你可 以在这里看到。幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用 Redis 来缓存会话的文档。原创 2022-01-13 10:47:25 · 5869 阅读 · 72 评论 -
【面试大全-Spring】-Aop的理解和使用
Aop面向切面编程,在Spring中,通过配置切面类和切点,切面类中主要有前置通知方法,后置通知方法,异常通知方法以及环绕通知方法,切面类中的方法的逻辑就是你要织入代码的逻辑,然后你需要判断哪些类需要进行前面切面,所以就要配置切入点,可以使用xml方式,也可以使用注解的方法。实现方式主要是通过动态代理给目标类生成代理对象,如果目标类实现了接口就使用jdk代理,如果没有实现接口使用cglib代理,如果配置了优先级,则默认使用cglib代理。在spring容器启动后,就会去扫描哪些需要进行aop的类,这些类.原创 2022-01-02 14:50:42 · 7524 阅读 · 0 评论 -
【面试大全-Spring】-Bean的生命周期
bean的生命周期就是一个创建bean的过程,主要分为4个步骤,实例化,属性注入,初始化,销毁spring的bean的生命周期主要是创建bean的过程,一个bean的生命周期主要是4个步骤,实例化,属性注入,初始化,销毁,但是对于一些复杂的bean的创建,spring会在bean的生命周期中开放很多的接口,可以让你加载bean的时候对bean做一些改变,因此spring的bean的生命周期总共有以下几步:首先在spring中有一些特殊的bean会介入到其他bean的声明周期当中去,所以一个普通的be原创 2021-12-31 11:37:40 · 6521 阅读 · 0 评论 -
【面试大全-Spring】- IOC的理解和使用
xml的加载方式,首先在Spring的xml中通过bean标签配置我们需要注入的bean,当扫描到所有的bean后,首先把bean包装成BeanDefinition,放入到list中,然后循环这个list去创建bean,创建bean的步骤为实例化->属性注入->初始化->aop,然后最终放入到spring的一级缓存中保存起来。这就是控制反转,原来的控制全在用户,现在的控制权完全交给了容器,在bean实例化后,通过反射对属性进行依赖注入。有两种使用方式,一种是xml的方式,一种是注解的方式。原创 2021-12-30 09:57:50 · 4214 阅读 · 92 评论 -
【面试大全-Spring】Spring Bean是如何创建的
所以首先第一步,spring要找到哪些bean需要实例化,第一种是xml的方式,如果需要实例化bean就在xml中配置bean标签,找到所有需要创建的bean,第二种注解方式,扫描所有添加了spring注解的bean,把所有的bean封装成一个BeanDefinition放入一个list.在Spring中,万物都是bean对象,每一个对象都可以封装成BeanDefinition,然后去生成bean对象。第三步,完成后就将bean放入到spring的一级容器中。原创 2021-12-30 09:54:33 · 4090 阅读 · 0 评论 -
【面试大全】MyBatis插件原理。使用Mybtais插件如何数据脱敏?
在mybtis中对外提供了4大对象供开发者拦截,分别是Excutor:查看mybatis的sql执行过程,ParameterHandler修改他的参数,ResultSetHandler拦截返回值,StatementHandler进行分页,开发者自己定义一个类,实现Interceptor接口,实现intercept方法,在类上通过@Intercepts注解和@Signature选择拦截哪个类中的哪个方法,比如:@Intercepts(@Signature(type = ResultSetHandl.原创 2021-12-28 09:04:54 · 4217 阅读 · 92 评论 -
【面试大全-高并发】-限流策略有哪些,滑动窗口算法和令牌桶区别,使用场景
比如每一分钟限制100个请求,可以在00:00:00-00:00:58秒里面都没有请求,在00:00:59瞬间发送100个请求,这个对于计数器算法来是允许的,然后在00:01:00再次发送100个请求,意味着在短短1s内发送了200个请求,如果量更大呢,系统可能会承受不住瞬间流量,导致系统崩溃。○ 思想:滑动窗口算法将一个大的时间窗口分成多个小窗口,每次大窗口向后滑动一个小窗口,并保证大的窗口内流量不会超出最大值,这种实现比固定窗口的流量曲线更加平滑。○ 问题:没有根本解决固定窗口算法的临界突发流量问题。原创 2021-12-17 09:18:11 · 6045 阅读 · 77 评论 -
【面试大全-高并发】-接口怎么做的幂等
第四种:加唯一索引,绝大数情况下,为了防止重复数据的产生,我们都会在表中加唯一索引,这是一个非常简单,并且有效的方案。为了解决这个问题,可以加悲观锁,通过id将用户 A 的那行数据锁住,在同一时刻只允许一个请求获得锁,更新数据,其他的请求则等待。第一种:插入之前先查询,在保存数据的接口中,我们防止产生重复的数据,一般会在 insert 前先根据 name 或 code 字段 select 一下数据,如果该数据已存在,则执行 update 操作,如果不存在,才执行 insert 操作。原创 2021-12-17 09:13:46 · 6424 阅读 · 77 评论