码上代码
我是码哥,为大家分享技术,面试经验和技巧,主页或私信可以联系我,希望我们成为朋友,一起逆袭
展开
-
微服务注册中⼼如何承载⼤型系统的千万级访问?
源码中你可以学到的编程思维原创 2022-02-23 16:30:57 · 8306 阅读 · 0 评论 -
阿里三面,P9面试官是如何考察候选人的
这篇文章,给大家分享一个同学面试阿里某个部门时的经历原创 2022-02-08 10:29:41 · 24163 阅读 · 0 评论 -
面试必杀技之InnoDB存储引擎执⾏原理深度剖析
mysql底层原理1.数据⻚和缓存⻚是什么?如何知道哪些缓存⻚是空闲的,哪些缓存⻚是可被清除的?2.mysql预读机制了解过吗,什么情况下会触发它?mysql是为了应对什么样的场景才设计预读机制?3.类⽐redis在内存中也存在冷热数据共存的场景,如何考虑利⽤lru链表解决预读机制的思想、来对redis缓存的设计进⾏优化?4.内存极度不够⽤情况下,可能每当要加载⼀个数据⻚时就要先把⼀个缓存⻚刷到磁盘中,出现双倍IO的性能问题,对于这种现象如何考虑优化Mysql内核参数来尽量避免该情况的性能损耗。原创 2021-04-09 13:52:08 · 9678 阅读 · 0 评论 -
解密JVM虚拟机即时编译器:偷偷给你的代码做了什么手脚
即时编译是由方法调用计数器和循环回边计数器触发的。在使用分层编译的情况下,触发编译的阈值是根据当前待编译的方法数目动态调整的。即时编译究竟暗地里搞了哪些事情上面介绍了即时编译器关于字段访问的优化方式,以及死代码消除。即时编译器将沿着控制流缓存字段存储、读取的值,并在接下来的字段读取操作时直接使用该缓存值。这要求生成缓存值的访问以及使用缓存值的读取之间没有方法调用、内存屏障,或者其他可能存储该字段的节点。即时编译器还会优化冗余的字段存储操作。原创 2024-07-01 09:37:29 · 134 阅读 · 0 评论 -
理解消息队列:队列与主题的区别
如果你研究过多种消息队列产品,可能会发现每种消息队列都有自己的一套消息模型,像队列(Queue)、主题(Topic)或分区(Partition)这些名词概念在不同的消息队列模型中含义各异。这是因为没有统一的标准。尽管曾有国际组织尝试制定过消息相关的标准,如早期的 JMS 和 AMQP,但这些标准的进化跟不上消息队列的演进速度,最终被淘汰了。那么,什么是队列?什么是主题?它们之间有什么区别?为了彻底理解这些概念,我们需要从消息队列的演进说起。原创 2024-05-29 16:35:09 · 154 阅读 · 0 评论 -
可以谈一谈动态扩容缩容的分库分表方案?
对于分库分表来说,主要是面对以下问题:选择一个数据库中间件,调研、学习、测试,如何选择呢原创 2023-03-21 08:30:00 · 224 阅读 · 1 评论 -
你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?
其实很简单,搞懂主从复制原理就行,往下看。。。原创 2023-03-20 08:30:00 · 192 阅读 · 0 评论 -
java面试必问,让你彻底搞懂spring如何解决循环依赖
这样的流程也适用于普通的IOC以及有并发的场景,但如果A上加个切面(AOP)的话,这种情况也无法满足需求原创 2022-04-15 14:44:52 · 730 阅读 · 0 评论 -
对象看了这篇并发面试知识,面试再无败绩
java面试最全并发知识点,还不点进来看看原创 2022-03-24 09:45:17 · 272 阅读 · 0 评论 -
redis有哪些数据类型,分别适合哪些场景
初级程序员面试必问原创 2022-02-09 15:18:57 · 7525 阅读 · 0 评论 -
如果你们网关需要每秒抗10万并发访问,网关需要怎么优化
每秒10万并发网关架构原创 2022-02-07 10:57:15 · 8306 阅读 · 0 评论 -
你们对网关选型时是怎么考虑的,能对比一下各种网关的优劣或区别吗
网关的核心功能(1)动态路由:新开发某个服务,动态把请求路径和服务的映射关系热加载到网关里去;服务增减机器,网关自动热感知(2)灰度发布(3)授权认证(4)性能监控:每个API接口的耗时、成功率、QPS(5)系统日志(6)数据缓存(7)限流熔断几种技术选型Kong、Zuul、Nginx+Lua(OpenResty)、自研网关Kong:Nginx里面的一个基于lua写的模块,实现了网关的功能 Zuul:Spring Cloud来玩儿微服务技术架构,ZuulNginx+Lua(Ope原创 2022-01-23 12:37:12 · 27357 阅读 · 0 评论 -
你们公司用的Dubbo,能额外说说SpringCloud的架构原理吗
如果聊分布式这块的技术,围绕Dubbo来拷问的,但是呢,现在其实非常流行的是Spring Cloud,Dubbo和SpringCloud以及阿里系的一些技术,现在正在融合,Spring Cloud Alibaba,只不过现在用的公司暂时还没那么多而已作为合格的工程师,行业里主流的分布式服务技术栈,Dubbo和Spring Cloud两种,有的公司他是用Dubbo的,不用Spring Cloud的,有的公司是用Spring Cloud的,不用Dubbo的,他们是代表了两种主流技术栈Java工程师,D.原创 2022-01-23 12:33:35 · 4624 阅读 · 0 评论 -
从底层实现角度比较Dubbo,SpringCloud的优劣
底层架构原理是类似的Dubbo,RPC的性能比HTTP的性能更好,并发能力更强,经过深度优化的RPC服务框架,性能和并发能力是更好一些很多中小型公司而言,其实稍微好一点的性能,Dubbo一次请求10ms,Spring Cloud耗费20ms,对很多中小型公司而言,性能、并发,并不是最主要的因素Spring Cloud这套架构原理,走HTTP接口和HTTP请求,就足够满足性能和并发的需要了,没必要使用高度优化的RPC服务框架Dubbo之前的一个定位,就是一个单纯的服务框架而已,不提供任何其他的功能,配原创 2022-01-23 12:30:37 · 9497 阅读 · 0 评论 -
如果让你设计一个RPC框架,网络通信,代理机制,负载均衡如何设计
这个面试题还是挺常见的人家并不是要你手撸一个RPC框架,资料,现场手撸一个RPC框架,撸的特别的简单,人家也不是要你手撸,也不是说让你进来了以后就是让你来研发RPC框架的系统设计的问题就是让你站在系统设计的角度,来考虑一下,到底如果要设计一个RPC框架,你会如何来考虑动态代理比如消费者和提供者,其实都是需要一个实现某个接口的动态代理的,RPC框架的一切的逻辑细节,都是在这个动态代理中实现的,动态代理里面的代码逻辑就是你的RPC框架核心的逻辑JDK提供了API,去创建针对某个接口的动态原创 2022-01-23 12:22:42 · 2445 阅读 · 0 评论 -
大厂面试官都不敢问的java线程的底层实现
1.线程的实现方式内核线程实现用户线程实现用户线程加轻量级进程实现java是用哪种实现呢,往下看。。。。。内核线程实现简介内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行调度,并负责将线程的任务映射到各个处理器上。每个内核线程可以视为内核的一个分身,这样操作系统就有能力同时处理多件事情,支持多线程的内核就叫做多线程内核(MultiThre原创 2021-09-17 15:43:43 · 425 阅读 · 0 评论 -
记一次腾讯java面试经历,看看你还差多少
一面(1h)1.string.intern()的作用2.讲一下java内存模型3.netty的reactor线程模型4.java内存工具原理5.分布式事务mq的解决方案6.限流算法了解哪些7.项目上一些8.缓存击穿和缓存穿透区别9.java内存划分10.分布式锁的作用…二面(1h)1.kafka调优策略知道哪些2.分布式事务两阶段和三阶段提交分别是什么3.redis缓存雪崩缓存击穿,缓存穿透如何解决4.秒杀是如何实现的5.分布式事务mq具体实现细节6.springaop实原创 2021-05-17 13:28:11 · 5310 阅读 · 0 评论 -
拜托,面试官不要在问我Redis分布式锁原理了
Redisson 实现 Redis 分布式锁的底层原理(1)加锁机制(2)锁互斥机制(3)watch dog ⾃动延期机制(4)可重⼊加锁机制(5)锁释放机制(6)此种⽅案 Redis 分布式锁的缺陷原创 2021-04-16 14:07:47 · 9428 阅读 · 6 评论 -
Java 并发⾯试问题之 volatile 到底是什么?
场景引入,问题初现很多同学出去⾯试,都会被问到⼀个常⻅的问题:说说你对 volatile 的理解?不少初出茅庐的同学可能会有点措⼿不及,因为可能就是之前没关注过这个。但是⽹上百度⼀下呢,不少⽂章写的很好,但是理论扎的太深,⽂字太多,图太少,让⼈有点难以理解。基于上述痛点,这篇⽂章尝试站在年轻同学的⻆度,⽤最简单的⼤⽩话,加上多张图给⼤家说⼀下,volatile 到底是什么?当然本⽂不会把理论扎的太深,因为⼀下⼦扎深了⽂字太多,很多同学还是会不好理解。本⽂仅仅是定位在⽤⼤⽩话的语⾔将 volatil原创 2021-04-12 16:36:50 · 11223 阅读 · 4 评论 -
为什么 StringBuilder 不是线程安全的?
面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。...原创 2020-01-17 10:08:32 · 367 阅读 · 2 评论 -
一篇搞懂阻塞与非阻塞,同步和异步的区别
一、I/O 模型阻塞式 I/O非阻塞式 I/OI/O 复用信号驱动 I/O异步 I/O五大 I/O 模型比较二、I/O 复用selectpoll比较epoll工作模式应用场景参考资料一、I/O 模型一个输入操作通常包括两个阶段:等待数据准备好从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据...原创 2019-12-27 09:25:58 · 15773 阅读 · 1 评论 -
一条sql在mysql中是怎么执行的,一文给你整的明明白白
一 MySQL 基础架构分析1.1 MySQL 基本架构概览1.2 Server 层基本组件介绍连接器查询缓存(MySQL 8.0 版本后移除)分析器优化器执行器二 语句分析2.1 查询语句2.2 更新语句三 总结四 参考本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么原创 2020-12-09 20:59:46 · 14278 阅读 · 1 评论 -
面试官再问你,mysql索引什么时候失效,你偷偷的笑了
索引失效原因总结复合索引使用左前缀建立了一个索引分别字段为 a b cwhere a … and b … order by c,这种使用顺序就符合最佳做前缀,从左向右依次使用了索引where b … and a … order by c,这样很明显顺序不对,并不满足最佳左前缀,从而导致了索引失效复合索引尽量使用全索引匹配建立了一个复合索引 a b c,在查询的时候,尽量把这些索引字段都用上不要在索引上进行任何操作(计算(+,-,*,/)、函数、(自动或手动)类型转换)如果你在索引上进行任原创 2020-12-09 11:10:17 · 30585 阅读 · 11 评论 -
面试官问:为什么Redis单线程架构还那么快
1 单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。2 单线程模型每秒万级别处理能力的原因(1)纯内存访问。数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别原创 2020-12-09 09:31:15 · 10138 阅读 · 2 评论 -
BAT面试必备知识点之容器源码之谜
一、概览CollectionMap二、容器中的设计模式迭代器模式适配器模式三、源码分析ArrayListVectorCopyOnWriteArrayListLinkedListHashMapConcurrentHashMapLinkedHashMapWeakHashMap参考资料一、概览容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection..原创 2021-01-07 11:09:38 · 2841 阅读 · 1 评论 -
消息队列那点事,面试必问
一、消息模型点对点发布/订阅二、使用场景异步处理流量削锋应用解耦三、可靠性发送端的可靠性接收端的可靠性参考资料一、消息模型点对点消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。发布/订阅消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。发布与订阅模式和观察者模式有以下不同:观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。观..原创 2021-01-07 10:52:34 · 4940 阅读 · 0 评论 -
集群是如何实现高可用?
一、负载均衡负载均衡算法转发实现二、集群下的 Session 管理Sticky SessionSession ReplicationSession Server一、负载均衡集群中的应用服务器(节点)通常被设计成无状态,用户可以请求任何一个节点。负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上。负载均衡器可以用来实现高可用以及伸缩性:高可用:当某个节点故障时,负载均衡器会将用户请求转发到另外的节点上,从而保证所有服务持续可用;伸缩性:根据系统整.原创 2021-01-06 09:49:15 · 5655 阅读 · 1 评论 -
hystrix与sentinel的区别以及选型对比
hystrix具有的功能线程池隔离/信号量隔离 Sentinel 不支持线程池隔离;信号量隔离对应 Sentinel 中的线程数限流。熔断器 Sentinel 支持按平均响应时间、异常比率、异常数来进行熔断降级。Command 创建 直接使用 Sentinel SphU API 定义资源即可,资源定义与规则配置分离。规则配置 在 Sentinel 中可通过 API 硬编码配置规则,也支持多种动态规则源注解支持 Sentinel 也提供注解支持开源框架支持 Sentinel 提供 Servlet.原创 2020-12-29 16:51:42 · 1545 阅读 · 1 评论 -
互联网大厂高并发下商品详情页面Redis+Lua实战
之前我们商品详情页为了应对高并发采用redis进行分布式锁的做法防止缓存穿透,缓存击穿,缓存雪崩并发问题:Redis缓存穿透,缓存击穿,缓存雪崩实战代码总结本篇对之前进行优化在应用高并发时,先进行一个限流,防止大量请求打入redis或者Mysql限流的算法有哪些?简单介绍 4 种非常好理解并且容易实现的限流算法!固定窗口计数器算法规定我们单位时间处理的请求数量。比如我们规定我们的一个接口一分钟只能访问10次的话。使用固定窗口计数器算法的话可以这样实现:给定一个变量counter来记录处理的请原创 2021-03-14 15:14:32 · 4742 阅读 · 0 评论 -
MQ几百万数据没有消费怎么办---实战教你解决
领导说马上给解决方案其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如 RabbitMQ 设置了消息过期时间后就没了怎么办?所以就这事儿,其实线上挺常见的,一般不出,一出就是大 case。一般常见于,举个例子,消费端每次消费之后要写 mysql,结果 mysql 挂了,消费端 hang 那儿了,不动了;或者是消原创 2021-01-27 15:42:57 · 28539 阅读 · 14 评论 -
rabbitmq导致丢失数据---线上问题
rabbitmq导致丢失数据—线上问题数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ来分析一下吧。生产者弄丢了数据生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启 RabbitMQ 事务 channel.txSelect ,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.原创 2021-01-26 10:44:42 · 29122 阅读 · 5 评论 -
Spring事务失效的几种原因分析
Spring事务失效的几种原因分析1、spring的事务注解@Transactional只能放在public修饰的方法上才起作用,如果放在其他非public(private,protected)方法上,虽然不报错,但是事务不起作用2、如果采用spring+spring mvc,则context:component-scan重复扫描问题可能会引起事务失败。如果spring和mvc的配置文件中都扫描了service层,那么事务就会失效。原因:因为按照spring配置文件的加载顺序来讲,先加载spring原创 2021-01-18 09:56:47 · 8307 阅读 · 0 评论 -
synchronized与lock的区别,volatile关键字总结
1.synchronized与lock的区别synchronized是关键字属于JVM层面,lock是类synchronized并不需要手动释放,不可中断,是一个非公平锁,只能全部唤醒或者随机唤醒lock需要lock()和unlock()方法配合try/finally使用,同时它是一个可中断的可重入锁,默认是非公平锁,但是可以设为公平锁,同时可以条件唤醒jdk1.6之前,synchroi...原创 2020-01-14 09:29:47 · 762 阅读 · 0 评论 -
springboot如何实现自动装配bean源码赏析
大家好,我是码弟原创 2020-12-04 10:55:11 · 18161 阅读 · 22 评论 -
面试官就是这么欺负人:new Object()到底占用几个字节?
关注公众号免费领取技术书籍和面试资料前言我们来分析一下堆内布局以及Java对象在内存中的布局吧。对象的指向先来看一段代码:package com.zwx.jvm;public class HeapMemory { private Object obj1 = new Object(); public static void main(String[] args) { Object obj2 = new Object(); }}123456789原创 2020-11-28 10:50:12 · 21330 阅读 · 3 评论 -
SpringBoot源码@ConditionalOnBean与@ConditionalOnClass你清楚吗
@ConditionalOnBean // 当给定的在bean存在时,则实例化当前Bean@ConditionalOnMissingBean // 当给定的在bean不存在时,则实例化当前Bean@ConditionalOnClass // 当给定的类名在类路径上存在,则实例化当前Bean@ConditionalOnMissingClass // 当给定的类名在类路径上不存在,则实例化当前Bean下面我通过案例深入讲下@ConditionalOnBean 注解,这个原创 2020-11-27 13:48:24 · 11250 阅读 · 5 评论 -
springIoc和aop实现原理
获取技术书籍关注原创 2020-05-19 09:28:13 · 1942 阅读 · 0 评论