无题
共享锁可以由多个线程获取使用,而独享锁只能由一个线程获取。对ReentrantReadWriteLock其读锁是共享锁,其写锁是独占锁读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的。其中获得写锁的线程还能同时获得读锁,然后通过释放写锁来降级。读锁则不能升级
无题
Elasticsearch
详细描述一下Elasticsearch索引文档的过程。
详细描述一下Elasticsearch搜索的过程。
Elasticsearch 的倒排索引是什么。
Elasticsearch是如何实现master选举的。
lucence内部结构是什么。
Lucene全文搜索的原理
在并发情况下,Elasticsearch 如何保证读写一致呢?
详细阐述一下 Elasticsearch 搜索的过程。
Elasticsearch 索引数据多了怎么办呢,如何调优,部署
Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
了解过JVM调优没,基本思路是什么,如何确定它们的大小
如果CPU使用率较高,GC频繁且GC时间长,可能就需要JVM调优了。 基本思路就是让每一次GC都回收尽可能多的对象,对于CMS来说,要合理设置年轻代和年老代的大小。
这是一个迭代的过程,可以先采用JVM的默认值,然后通过压测分析GC日志。 如果看年轻代的内存使用率处在高位,导致频繁的Minor GC,而频繁GC的效率又不高,说明对象没那么快能被回收,这时年轻代可以适当调大一点。 如果看年老代的内存使用率处在高位,导致频繁的Full GC,这样分两种情况:如果每次Full GC后年老代的内存占用率没有下来,可以怀疑是内存泄漏;如果Full GC后年老代的内存占用率下来了,说明不是内存泄漏,要考虑调大年老代。 对于G1收集器来说,可以适当调大Java堆,因为G1收集器采用了局部区域收集策略,单次垃圾收集的时间可控,可以管理较大的Java堆。
淘宝热门商品信息在JVM哪个内存区域
https://www.nowcoder.com/discuss/81596?type=0&order=0&pos=8&page=1
Java中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。
触发主GC(Garbage Collector,垃圾回收)的条件:(1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用。(2)Java堆内存不足时,GC会被调用。
Java程序员需要看哪些书
前言不要因为迷茫,而停止了脚下的路。给大家推荐一份Java程序员必看的书单,豆瓣评分都挺不错的,每一本都值得去读,都值得去收藏,加油呀
本文已经收录到github httpsgithub.comwhx123JavaHome
专题一:Java 基础篇书单
专题二:代码优化篇书单
专题三:计算机网络篇书单
专题四:操作系统 && 计算机底层书单
专题五:数据结构与算法篇书单
专题六:缓存篇书单
专题七:数据库书单
专题八:微服务 && 分布式篇书单
专题九:消息中间件书单
专题十:容器书单
专题十一:面试相关书单
专题十二:软件开发&&程序人生书单
公众号:捡田螺的小男孩
专题一:Java 基础篇书单
《Java编程思想》
《深入理解Java虚拟机:JVM高级特性与最佳实践》
《Head First 设计模式》
《Effective java》
《Java核心技术》
《Java8 实战》
《Java并发编程实战》
《Spring揭秘》
《MyBatis技术内幕》
Java编程思想
本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,作 ...
泛型解析
前言整理了Java泛型的相关知识,算是比较基础的,希望大家一起学习进步。
一、什么是Java泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性,其本质是参数化类型,解决不确定具体对象类型的问题。其所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型类泛型类(generic class) 就是具有一个或多个类型变量的类。一个泛型类的简单例子如下:
1234567891011121314151617181920212223242526272829303132333435//常见的如T、E、K、V等形式的参数常用于表示泛型,编译时无法知道它们类型,实例化时需要指定。public class Pair <K,V>{ private K first; private V second; public Pair(K first, V second) { this.first = first; this ...
触发类加载的六大时机
前言什么情况下会触发类加载的进行呢?本文将结合代码demo谈谈几种情况,希望对大家有帮助。
类加载时机什么情况需要开始类加载过程的第一阶段:加载?Java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。但是对于初始化阶段,虚拟机规范则严格规定了以下几种情况必须立即对类进行初始化,如果类没有进行过初始化,则需要先触发其初始化。
创建类的实例为了验证类加载,我们先配置一个JVM参数
1-XX:+TraceClassLoading 监控类的加载
在IDE配置如下:
demo代码:
123456789101112131415161718public class ClassLoadInstance { static { System.out.println("ClassLoadInstance类初始化时就会被执行!"); } public ClassLoadInstance() { System.out.println("ClassLoadInstance ...
谈谈Java反射:从入门到实践,再到原理
前言反射是Java底层框架的灵魂技术,学习反射非常有必要,本文将从入门概念,到实践,再到原理讲解反射,希望对大家有帮助。
反射理解官方解析Oracle 官方对反射的解释是:
123456Reflection is commonly used by programs which require the ability to examine ormodify the runtime behavior of applications running in the Java virtual machine.This is a relatively advanced feature and should be used only by developers whohave a strong grasp of the fundamentals of the language. With that caveat inmind, reflection is a powerful technique and can enable applications to performoperations whi ...