摘要:
面试官:想了解 ES 集群的底层原理,不再只关注业务层面了。 前置前提: 1、只有候选主节点(master:true)的节点才能成为主节点。 2、最小主节点数(min_master_nodes)的目的是防止脑裂。 这个我看了各种网上分析的版本和源码分析的书籍,云里雾里。 核对了一下代码,核心入口为
阅读全文
posted @ 2020-10-21 14:08
咔啡
阅读(426)
推荐(0)
摘要:
SQL 注入产生的原因:程序开发过程中不注意规范书写 sql 语句和对特殊字符进 行过滤,导致客户端可以通过全局变量 POST 和 GET 提交一些 sql 语句正常执行。 防止 SQL 注入的方式: 开启配置文件中的 magic_quotes_gpc 和 magic_quotes_runtime
阅读全文
posted @ 2020-10-21 13:52
咔啡
阅读(208)
推荐(0)
摘要:
最好是按照以下顺序优化: 1、SQL 语句及索引的优化 2、数据库表结构的优化 3、系统配置的优化 4、硬件的优化 详细可以查看 阿里 P8 架构师谈:MySQL 慢查询优化、索引优化、以及表等优化
阅读全文
posted @ 2020-10-14 12:56
咔啡
阅读(111)
推荐(0)
摘要:
构造器依赖注入: 构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。 Setter方法注入: Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖
阅读全文
posted @ 2020-10-14 12:52
咔啡
阅读(329)
推荐(0)
摘要:
1、调用 getData()/getChildren()/exist()三个 API,传入 Watcher 对象 2、标记请求 request,封装 Watcher 到 WatchRegistration 3、封装成 Packet 对象,发服务端发送 request 4、收到服务端响应后,将 Wat
阅读全文
posted @ 2020-10-13 20:05
咔啡
阅读(127)
推荐(0)
posted @ 2020-10-13 18:51
咔啡
阅读(105)
推荐(0)
摘要:
在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机 器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行 leader 选举。
阅读全文
posted @ 2020-10-13 17:49
咔啡
阅读(170)
推荐(0)
摘要:
采用时间片轮转的方式。可以设置线程的优先级,会映射到下层的系统上面的优 先级上,如非特别需要,尽量不要用,防止线程饥饿。
阅读全文
posted @ 2020-10-13 17:29
咔啡
阅读(126)
推荐(0)
摘要:
Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务 的需求。 Executor 接口对象能执行我们的线程任务。 ExecutorService 接口继承了 Executor 接口并进行了扩展,提供了更多的方法我 们能获得任务执行的状态并且可以获取任务的返回值。 使用 T
阅读全文
posted @ 2020-10-13 17:28
咔啡
阅读(234)
推荐(0)
摘要:
每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、 耗资源的。 调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建, 线程之间的相互竞争会导致过多占用系统资源而导致系统瘫痪,还有线程之间的 频繁交替也会消耗很多系统资源。 接使用 n
阅读全文
posted @ 2020-10-13 17:26
咔啡
阅读(214)
推荐(0)
摘要:
线程组和线程池是两个不同的概念,他们的作用完全不同,前者是为了方便线程 的管理,后者是为了管理线程的生命周期,复用线程,减少创建销毁线程的开销。
阅读全文
posted @ 2020-10-13 17:24
咔啡
阅读(268)
推荐(0)
摘要:
在使用微服务时,由于有多个微服务协同工作,测试变得非常复杂。因此,测试 分为不同的级别。 在底层,我们有面向技术的测试,如单元测试和性能测试。这些是完全自 动化的。 在中间层面,我们进行了诸如压力测试和可用性测试之类的探索性测试。 在顶层, 我们的 验收测试数量很少。这些验收测试有助于利益相关者理
阅读全文
posted @ 2020-10-13 17:07
咔啡
阅读(205)
推荐(0)
摘要:
1、Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同; 2、Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同; 3、Mapper 接口方法的输出参数类型和 mapper.xml 中定义
阅读全文
posted @ 2020-10-13 10:44
咔啡
阅读(510)
推荐(1)
摘要:
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联 集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自 动 ORM 映射工具。
阅读全文
posted @ 2020-10-13 10:34
咔啡
阅读(216)
推荐(0)
摘要:
分桶策略:将类似的会话放在同一区块中进行管理,以便于 Zookeeper 对会话进 行不同区块的隔离处理以及同一区块的统一处理。 分配原则:每个会话的“下次超时时间点”(ExpirationTime) 计算公式: ExpirationTime_ = currentTime + sessionTime
阅读全文
posted @ 2020-10-13 10:25
咔啡
阅读(87)
推荐(0)
摘要:
CopyOnWriteArrayList(免锁容器)的好处之一是当多个迭代器同时遍历和修改这 个列表时,不会抛出 ConcurrentModificationException。在 CopyOnWriteArrayList 中,写入将导致创建整个底层数组的副本,而源数组将保 留在原地,使得复制的数组
阅读全文
posted @ 2020-10-13 10:06
咔啡
阅读(393)
推荐(0)
摘要:
所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线 程,并且这个线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程 结束时,程序也就终止了,同时会杀死进程中的所有后台线程。反过来说, 只要有任何非后台线程还在运行,程序就不会终止。必须在线程启动之前调用 setDae
阅读全文
posted @ 2020-10-11 20:54
咔啡
阅读(419)
推荐(0)
摘要:
zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写 插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。
阅读全文
posted @ 2020-10-11 14:11
咔啡
阅读(545)
推荐(0)
摘要:
举例来说明锁的可重入性 public class UnReentrant{ Lock lock = new Lock(); public void outer(){ lock.lock(); inner(); lock.unlock(); } public void inner(){ lock.lo
阅读全文
posted @ 2020-10-11 13:44
咔啡
阅读(808)
推荐(0)
摘要:
相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。 开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。
阅读全文
posted @ 2020-10-11 12:49
咔啡
阅读(122)
推荐(0)
摘要:
如果异常没有被捕获该线程将会停止执行。Thread.UncaughtExceptionHandler 是用于处理未捕获异常造成线程突然中断情况的一个内嵌接口。当一个未捕获异 常将造成线程中断的时候 JVM 会使用 Thread.getUncaughtExceptionHandler() 来查询线程的
阅读全文
posted @ 2020-10-11 12:44
咔啡
阅读(245)
推荐(0)
摘要:
在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对
阅读全文
posted @ 2020-10-11 12:34
咔啡
阅读(334)
推荐(0)
摘要:
一个很明显的原因是 JAVA 提供的锁是对象级的而不是线程级的,每个对象都有 锁,通过线程获得。由于 wait,notify 和 notifyAll 都是锁级别的操作,所以把他 们定义在 Object 类中因为锁属于对象。
阅读全文
posted @ 2020-10-11 12:14
咔啡
阅读(276)
推荐(0)
摘要:
notify() 方法不能唤醒某个具体的线程,所以只有一个线程在等待的时候它才有 用武之地。而 notifyAll()唤醒所有线程并允许他们争夺锁确保了至少有一个线程 能继续运行。
阅读全文
posted @ 2020-10-11 12:09
咔啡
阅读(127)
推荐(0)
摘要:
在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试 Spring MVC 应用程序。在上面显示的快照中,我们只想启动 ToTestController。 执行此单元测试时,不会启动所有其他控制器和映射。
阅读全文
posted @ 2020-10-11 11:58
咔啡
阅读(545)
推荐(0)
摘要:
继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法
阅读全文
posted @ 2020-10-11 11:57
咔啡
阅读(122)
推荐(0)
摘要:
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 AOP是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的
阅读全文
posted @ 2020-10-10 20:51
咔啡
阅读(344)
推荐(0)
摘要:
当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的 顺序时,则我们认为这发生了竞争条件(race condition)。
阅读全文
posted @ 2020-10-10 20:36
咔啡
阅读(349)
推荐(0)
摘要:
Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内 存分页,而非物理分页。可以在 sql 内直接书写带有物理分页的参数来完成物理分 页功能,也可以使用分页插件来完成物理分页。 分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,
阅读全文
posted @ 2020-10-10 18:24
咔啡
阅读(1396)
推荐(0)
摘要:
当一个线程进入 wait 之后,就必须等其他线程 notify/notifyall,使用 notifyall,可 以唤醒所有处于 wait 状态的线程,使其重新进入锁的争夺队列中,而 notify 只能 唤醒一个。 如果没把握,建议 notifyAll,防止 notigy 因为信号丢失而造成程序异常
阅读全文
posted @ 2020-10-10 18:18
咔啡
阅读(192)
推荐(0)
摘要:
客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher。 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。
阅读全文
posted @ 2020-10-10 17:27
咔啡
阅读(90)
推荐(0)
摘要:
在上下文切换过程中,CPU 会停止处理当前运行的程序,并保存当前程序运行的 具体位置以便之后继续运行。从这个角度来看,上下文切换有点像我们同时阅读 几本书,在来回切换书本的同时我们需要记住每本书当前读到的页码。在程序中, 上下文切换过程中的“页码”信息是保存在进程控制块(PCB)中的。PCB 还经
阅读全文
posted @ 2020-10-09 12:48
咔啡
阅读(502)
推荐(0)
摘要:
Lock 接口比同步方法和同步块提供了更具扩展性的锁操作。 他们允许更灵活的结构,可以具有完全不同的性质,并且可以支持多个相关类的 条件对象。 它的优势有: 可以使锁更公平 可以使线程在等待锁的时候响应中断 可以让线程尝试获取锁,并在无法获取锁的时候立即返回或者等待一段时间 可以在不同的范围,以不同
阅读全文
posted @ 2020-10-09 12:32
咔啡
阅读(193)
推荐(0)
摘要:
有DOM、SAX等。 DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方式。 DOM中的核心概念就是节点。DOM在分析XML文档时,将组成XML文档的各个部分(元素、属性、文本、注释和处理指令等)映射成一个对象,这个对象就叫做节
阅读全文
posted @ 2020-10-09 12:10
咔啡
阅读(504)
推荐(0)
摘要:
瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。 瞬时态:没有持久化标示符,数据库中无对应记录。当执行save和persist方法
阅读全文
posted @ 2020-10-09 12:06
咔啡
阅读(170)
推荐(0)
摘要:
以下是Spring 框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM module OXM module Java Messaging Service(JMS) mod
阅读全文
posted @ 2020-09-28 17:43
咔啡
阅读(391)
推荐(0)
摘要:
NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。 CURRENT_DATE()仅显示当前年份,月份和日期。
阅读全文
posted @ 2020-09-23 18:35
咔啡
阅读(294)
推荐(0)
摘要:
有 A,B,C 三个节点的集群,在没有复制模型的情况下,如果节点 B 失败了, 那么整个集群就会以为缺少 5501-11000 这个范围的槽而不可用。
阅读全文
posted @ 2020-09-23 17:45
咔啡
阅读(893)
推荐(0)
摘要:
以下是 MySQL_fetch_array 和 MySQL_fetch_object 的区别: MySQL_fetch_array() – 将结果行作为关联数组或来自数据库的常规数组返回。 MySQL_fetch_object – 从数据库返回结果行作为对象。
阅读全文
posted @ 2020-09-23 15:30
咔啡
阅读(291)
推荐(0)
摘要:
字符串类型是: 1、SET 2、BLOB 3、ENUM 4、CHAR 5、TEXT
阅读全文
posted @ 2020-09-23 15:27
咔啡
阅读(177)
推荐(0)