赞
踩
最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,会持续更新。
如果对老铁有帮助,帮忙免费点个赞,谢谢你的发财手!
提供一组真实生产环境数据供参考:
379万数据;每条数据字符数大概是400个英文字母;1个副本、5个分片;占用空间1.53G(也就是es-head看到的索引大小);每个节点的esdata目录大小:2.1G;
传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置。
倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表即为倒排索引。有了倒排索引,检索文章的时间复杂度是 o(1),极大的提高了检索效率。
ES的选主是ZenDiscovery模块负责,对所有可以成为Master的节点(node.master: true)根据 nodeId 排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是 Master 节点。
如果对某个节点的投票数超过一半,并且该节点自己也选举自己,那这个节点就是master,否则重新选举。
当集群maste候选数量不小于3个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;
当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data节点,避免脑裂问题。
字段的长度问题、创建的表的字段是否规范、风格是否和项目组统一、后续扩展问题、以及当前表的数据量级问题、后续的优化等。
设计模式是针对软件开发中经常遇到的一些设计问题,而总结出来的一套实用的解决方案或者设计思想,提高了代码的复用性和可扩展性。
设计模式的六大原则:
原因:可能是业务代码死循环、GC频繁、线程阻塞等;
java -Xms2048m -Xmx2048m -Xmn700m -Xss512K
-XX:MaxMetaspaceSize=200m -XX:MetaspaceSize=200m -XX:ParallelGCThreads=8
-XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/OutOfMemory.hprof
-jar lugu-portal-1.1.jar
可以看到堆内存为2G,新生代为700M,老年代为1348M,元数据区是200M;
UseParNewGC:新生代使用ParNew回收器,UseConcMarkSweepGC:老年代使用CMS算法;
线程栈为512k(默认1024k调小可以增加创建线程数,增加并发量);
同时打印 GC 详细信息和打印 GC 发生时间,当发生OOM时,Dump文件到指定路径。
CMS是一款基于并发、使用标记清除算法的垃圾回收算法,只针对老年代进行垃圾回收,会尽可能让GC线程和用户线程并发执行,以达到降低STW时间的目的。
原理是通过可达性分析算法(GC Root对象)。
spi全称为 (Service Provider Interface),是JDK内置的一种服务提供机制,用于提升接口的可扩展性,可以降低模块之间的解耦和相互依赖。
spi的工作原理:
都已经看到这里啦,赶紧收藏起来,祝您工作顺心,生活愉快!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。