随笔分类 -  常见面试题

摘要:装饰器模式 我们在做一个产品的时候,需求会以多期的方式执行,随着产品的不断迭代,新需求也会不断出现,我们开始设计一个类的时候,可能并没有考虑到新需求的场景,此时就需要为某些组件添加新的功能来满足这些需求。 如果要符合开放-封闭的原则,我们最好不要直接修改已有的具体实现类,因为会破坏其已有的稳定性,在 阅读全文
posted @ 2021-02-22 17:56 天宇轩-王 阅读(176) 评论(2) 推荐(0) 编辑
摘要:zookeeper实现分布式锁 Zookeeper是一种提供配置管理、分布式协同以及命名的中心化服务。 zk的模型是这样的:zk包含一系列的节点,叫做znode,就好像文件系统一样每个znode表示一个目录,然后znode有一些特性: 有序节点:假如当前有一个父节点为 /lock ,我们可以在这个父 阅读全文
posted @ 2021-02-21 13:41 天宇轩-王 阅读(326) 评论(0) 推荐(0) 编辑
摘要:数据源是持久层框架中最核心的组件之一,在实际工作中比较常见的数据源有 C3P0、Apache Common DBCP、Proxool 等。作为一款成熟的持久化框架,MyBatis 不仅自己提供了一套数据源实现,而且还能够方便地集成第三方数据源。 javax.sql.DataSource 是 Java 阅读全文
posted @ 2021-02-19 23:50 天宇轩-王 阅读(174) 评论(0) 推荐(0) 编辑
摘要:Apache Commons Logging、Log4j、Log4j2、java.util.logging 等是 Java 开发中常用的几款日志框架,这些日志框架来源于不同的开源组织,给用户暴露的接口也有很多不同之处,所以很多开源框架会自己定义一套统一的日志接口,兼容上述第三方日志框架,供上层使用。 阅读全文
posted @ 2021-02-19 22:47 天宇轩-王 阅读(244) 评论(0) 推荐(0) 编辑
摘要:Mapper 文件与 Java 接口的绑定 MyBatis 的前身是 iBatis,我们在使用 iBatis 的时候,如果想查询一个 Customer 对象的话,可以调用 SqlSession.queryForObject ("find", customerId) 方法,queryForObject 阅读全文
posted @ 2021-02-19 00:13 天宇轩-王 阅读(595) 评论(0) 推荐(0) 编辑
摘要:Reflector **Reflector 是 MyBatis 反射模块的基础。**要使用反射模块操作一个 Class,都会先将该 Class 封装成一个 Reflector 对象,在 Reflector 中缓存 Class 的元数据信息,这可以提高反射执行的效率。 核心初始化流程 既然是涉及反射操 阅读全文
posted @ 2021-02-09 22:40 天宇轩-王 阅读(481) 评论(0) 推荐(0) 编辑
摘要:感觉《Mybatis技术内幕》讲的很好,值得大家深入学习一下。 深入 TypeHandler 其实,MyBatis 中的类型转换器就是 TypeHandler 这个接口,其定义如下: public interface TypeHandler<T> { // 在通过PreparedStatement为 阅读全文
posted @ 2021-02-09 21:58 天宇轩-王 阅读(579) 评论(0) 推荐(0) 编辑
摘要:微服务限流 流量控制简介 流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。在网络传输时,任意时间到来的请求往往是随机不可控的,而系统的处理能力是有的。我们需要根据系统的处理能力对流量进行控制。 熔断降级简介 在调用系统的时候,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生 阅读全文
posted @ 2021-02-08 16:36 天宇轩-王 阅读(1860) 评论(0) 推荐(0) 编辑
摘要:微服务网关 在微服务架构中,随着微服务的拆分,这些微服务不可能同时提供对外服务,这样就需要一个网关系统,承接外网的流量。有了API 网关,各个 API 服务提供团队可以专注自己的业务逻辑处理,而 API 网关则更专注于安全、流量、路由等问题。 我们先来看一下微服务网关主要提供哪些功能。 **统一流量 阅读全文
posted @ 2021-02-08 14:38 天宇轩-王 阅读(1629) 评论(1) 推荐(1) 编辑
摘要:事务四大特性(ACID)原子性、一致性、隔离性、持久性? 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性:在事务开始之前和 阅读全文
posted @ 2021-02-04 16:33 天宇轩-王 阅读(215) 评论(0) 推荐(1) 编辑
摘要:MySQL为什么使用B+树 索引是帮助MySQL高效获取数据的数据结构。索引:排好序的快速查找数据结构!索引会影响where后面的查找,和order by 后面的排序。 B+Tree索引(平衡多路查找树) 是B-Tree的改进版本,同时也是数据库索引索引所采用的存储结构。数据都在叶子节点上,并且增加 阅读全文
posted @ 2021-02-04 15:22 天宇轩-王 阅读(507) 评论(0) 推荐(2) 编辑
摘要:1. 应用优化 前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。 1.1 使用连接池 对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据 阅读全文
posted @ 2021-02-04 15:00 天宇轩-王 阅读(403) 评论(1) 推荐(1) 编辑
摘要:MySQL的binlog有有几种录入格式?分别有什么区别? 有三种格式,statement, row和mixed。 statement模式下,每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了I0,提高性能。由于sq|的执行是有上下文的,因此在 阅读全文
posted @ 2021-02-04 10:38 天宇轩-王 阅读(367) 评论(0) 推荐(1) 编辑
摘要:Java 中 3 种常见 IO 模型 BIO (Blocking I/O) BIO 属于同步阻塞 IO 模型 。 同步阻塞 IO 模型中,应用程序发起 read 调用后,会一直阻塞,直到在内核把数据拷贝到用户空间。 在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统 阅读全文
posted @ 2021-02-03 17:52 天宇轩-王 阅读(293) 评论(8) 推荐(0) 编辑
摘要:隐藏的问题 FixedThreadPool 首先我们来看第一种线程池 FixedThreadPool, 它是线程数量固定的线程池,如源码所示,newFixedThreadPool 内部实际还是调用了 ThreadPoolExecutor 构造函数。 public static ExecutorSer 阅读全文
posted @ 2021-02-03 15:55 天宇轩-王 阅读(502) 评论(0) 推荐(0) 编辑
摘要:合适的线程数量是多少?CPU 核心数和线程数的关系? CPU 密集型任务 首先,我们来看 CPU 密集型任务,比如加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任务。对于这样的任务最佳的线程数为 CPU 核心数的 1~2 倍,如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们 阅读全文
posted @ 2021-02-03 15:32 天宇轩-王 阅读(632) 评论(0) 推荐(1) 编辑
摘要:线程池实现“线程复用”的原理? 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务,但无论是固定数量或可变数量的线程,其线程数量都远远小于任务数量,面对这种情况线程池可以通过线程复用让同一个线程去执行不同的任务,那么线程复用背后的原理是什么呢? 线程池可以把线程和任务进行解耦,线程 阅读全文
posted @ 2021-02-03 15:14 天宇轩-王 阅读(683) 评论(0) 推荐(0) 编辑
摘要:MyBatis 介绍 Apache 基金会中的 iBatis 项目是 MyBatis 的前身。iBatis 项目由于各种原因,在 Apache 基金会并没有得到很好的发展,最终于 2010 年脱离 Apache,并更名为 MyBatis。三年后,也就是 2013 年,MyBatis 将源代码迁移到了 阅读全文
posted @ 2021-02-01 17:09 天宇轩-王 阅读(549) 评论(0) 推荐(0) 编辑
摘要:一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。 大量 pipeline 应用场景可通过 Redis 脚本(Redis 版本 >= 2.6)得到更高效的处理,后者在服务器端执行大量工作。脚本的一大优势是可通过 阅读全文
posted @ 2021-01-29 15:40 天宇轩-王 阅读(381) 评论(0) 推荐(0) 编辑
摘要:Redis事务功能是通过MULTI、EXEC、DISCARD和WATCH 四个原语实现的 Redis会将一个事务中的所有命令序列化,然后按顺序执行。 1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”, 所以 Redis 的内部可以保持简单且快速。 2.如果在一 阅读全文
posted @ 2021-01-29 15:25 天宇轩-王 阅读(179) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示