求仁得仁
Java面试-集合-基础 Java面试-集合-基础
ArrayList 扩容:默认长度为 10,每次至少扩容 1.5 倍 LinkedList 根据 index 查找元素时,会自动判断从左还是从右查找比较快:if (index < (size >> 1)) 即 index
2024-06-13
Java面试-锁-基础 Java面试-锁-基础
synchronized(非公平锁) :CPU悲观锁(独占锁),在CPU转换线程阻塞时会引起线程上下文切换,当有很多线程竞争锁的时候会导致效率很低 对象监视器:锁非null对象,写在方法上锁this,写在静态方法上锁Class 线程的状
2024-06-13
Java面试-多线程-基础 Java面试-多线程-基础
创建线程的三种方式:继承 Thread; Runnable 接口;Callable 和 Future 线程的五种基本状态:新建;就绪;运行;阻塞;死亡 阻塞队列:ArrayBlockingQueue(有界阻塞队列);LinkedBlock
2024-06-13
Java面试-分布式-基础 Java面试-分布式-基础
CAP:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼 zookeeper 更看重C和P,即一致性和分区容错性,当进入选举模式时,就无法正常对外
2024-06-13
Java面试-集合-基础2 Java面试-集合-基础2
ArrayList 扩容:默认长度为 10,每次至少扩容 1.5 倍 LinkedList 根据 index 查找元素时,会自动判断从左还是从右查找比较快:if (index < (size >> 1)) 即 index
2024-03-07
17.架构师提升 17.架构师提升
作为一个架构师仅仅掌握这些“硬”知识、“硬”技能还不够,“业务驱动技术”,但是业务领域更多是很多“软”性的、抽象的技能。一旦一个东西呈“软”性的,大家虽然知道这类东西存在,但又难于表述。 业务架构 业务意识 互联网时代有个岗位——产品经理。
2023-07-12
16.ES数据迁移 16.ES数据迁移
不同方法的迁移步骤: elasticsearch-dump:适合数据量不大,迁移索引个数不多的场景 snapshot:适用数据量大的场景,原理就是从源ES集群创建数据快照,然后在目标ES集群中进行恢复 创建快照前必须先创建reposit
2023-07-11
15.海量数据 15.海量数据
存储系统的技术选型 技术选型时应该考虑哪些因素 首先需要确定的是系统的类型,是一个在线业务系统,还是一个分析系统?在线业务系统对应的术语是OLTP ( On-line Transaction Processing,在线事务处理),分析系统对
2023-07-11
RockDB RockDB
RocksDB 是Facebook 开源的一个高性能、持久化的KV存储引擎,最初是Facebook 的数据库工程师团队基于Google LevelDB 开发。一般来说我们很少见到过哪个项目直接使用RocksDB 来保存数据,即使未来大概也不
2023-07-11
14.高并发读写 14.高并发读写
侧重于“高并发读”的系统 搜索引擎 电商的商品搜索 电商系统的商品描述、图片和价格 侧重于“高并发写”的系统 广告扣费系统 同时有“高并发读”和“高并发写”的系统 电商的库存系统和秒杀系统 支付系统和微信红包 IM、微博和朋
2023-07-11
13.Sentinel限流 13.Sentinel限流
针对电商系统,在遇到大流量时,更多考虑的是运行阶段如何保障系统的稳定运行,常用的手段:限流,降级,拒绝服务。 限流 客户端限流 好处:可以限制请求的发出,通过减少发出无用请求从而减少对系统的消耗。 缺点:当客户端比较分散时,没法设置合理的
2023-07-11
12.秒杀系统 12.秒杀系统
秒杀系统的挑战:巨大的瞬时流量、热点数据问题、刷子流量 CDN 将Nginx 的职责放大,前置用来做Web 网关,承担部分业务逻辑校验,并且可能增加黑白名单、限流和流控的功能 刷子:无效:正常请求 = 6:1:3 秒杀业务流程梳理
2023-07-10
11.数据高可用 11.数据高可用
缓存不命中:把全量数据都放在Redis 集群中,处理读请求的时候,只需要读取Redis,而不用访问数据库。很多大型互联网公司都在使用这种方法 更新缓存: 启动一个更新缓存的服务接收数据变更的消息队列中的消息,然后注意解决消息的可靠性问题即
2023-07-10
10.高并发缓存 10.高并发缓存
缓存大体可以分为三类: 客户端缓存;服务端缓存;网络中的缓存。 根据规模和部署方式缓存也可以分为:单体缓存;缓存集群;分布式缓存。 缓存一定是离用户越近越好 缓存的分类: 客户端缓存 页面缓存 浏览器缓存 APP缓存 网络缓存 Web代理
2023-07-10
09.分布式事务 09.分布式事务
Seata架构 TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM (Transaction Ma
2023-07-10
08.支付超时 08.支付超时
延迟任务(不推荐) 下单时增加一个定时任务,在五分钟后对订单进行超时判断。 超时判断时,可以先去支付宝上查询订单支付状态。 如果已支付,则判断订单是否正常结束,这是因为在用户完成扫码支付后,支付宝正常会往图灵电商发送支付成功的通知。但是
2023-07-10
07.订单系统设计 07.订单系统设计
重复下单问题(幂等) 用户在点击“提交订单”的按钮时,不小心点了两下 网络错误也有可能会导致重传,很多RPC框架和网关都拥有自动重试机制 主键唯一约束 为订单系统增加一个“生成订单号”的服务,这个服务没有参数,返回值就是一个新的、全局唯
2023-07-09
06.微服务网关整合OAuth2.0授权中心 06.微服务网关整合OAuth2.0授权中心
配置授权服务器(AuthorizationServerConfigurerAdapte - 授权码/密码) DB模式 内存模式 SpringSecurity(WebSecurityConfigurerAdapter) JWT:头部(
2023-07-09
7 / 12