
Java
大龄coder
靡不有初鲜克有终,人无远虑必有近忧。
没有最好的语言,只有最好的程序员。
展开
-
Java 静态常量的坑
写了一段代码,却一直得不到想要的结果:private static final Integer test = 100;Tuple8<Integer, Integer, Long, Double, String, String, Long, Double> tuple8 = list.get(i);tuple8._1() == test; // false, even if _1...原创 2020-04-08 18:37:29 · 447 阅读 · 0 评论 -
面向面试学习之zookeeper
ZooKeeper在分布式系统中使用很广,比如常用的Dubbo,Kafka,Hadoop中都能看到它的身影。1. ZooKeeper是什么ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。简单...原创 2019-11-24 17:42:18 · 267 阅读 · 0 评论 -
Java多线程之线程池
1. 创建线程池建议使用ThreadPoolExecutor类来创建,而不是使用Executors中的静态方法来创建,创建出来的对象属于ExecutorService类型,可以执行各种多线程任务。public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...原创 2019-11-23 16:18:15 · 227 阅读 · 0 评论 -
面向面试学习六(JAVA IO篇)
1. 基本架构I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I/O 上也一直在做持续的优化,如从 1.4 开始引入了 NIO,提升了 I/O 的性能。Java 的 I/O 操作类在包 java.io 下,...原创 2019-11-21 01:48:45 · 258 阅读 · 0 评论 -
面向面试学习六(JAVA集合类篇)
1. 总体框架Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:**List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)**等。框架图如下说明:比较核心的两个接口是Collec...原创 2019-11-21 01:03:27 · 176 阅读 · 0 评论 -
Logstash瓶颈定位
先不用修改worker数量pipeline.workers(-w),而是先一次修改一个参数,从而确定问题参数检查列表:1. 检查输入源和输出点消费的速度受限于input源服务的速度;生产的速度受限于output端的速度;2. 检查系统性能CPU关注CPU是否占用很高;top -H如果CPU占用高,检查JVM堆进行调优内存Logstash运行在Java VM上,Logstas...原创 2019-11-18 18:19:52 · 2071 阅读 · 0 评论 -
JUC(一)之AQS
JUC出现的契机是,JDK1.6之前,synchronized重量级锁到性能低下,虽然这1.6进行优化后性能大幅提升,但是灵活性仍然不足,因此才有了JUC中自定义锁大展拳脚的机会。JUC中的锁,大部分都是基于AQS,也就是AbstractQueuedSynchronizer类实现,即队列同步器。它是其他同步组件的基础(ReentrantLock,ReentrantReadWriteLock,Se...转载 2019-11-11 02:29:59 · 173 阅读 · 0 评论 -
Java多线程
1. 进程与线程区别线程是进程中独立运行的子任务。协程,coroutine,又称微线程。协程看上去也是子程序,但是内部可以中断,转而执行别到子程序。不需要切换线程上下文。停止线程:Thread.stop()已被弃用,大多数停止一个线程使用到方法是Thread.interrupt()方法,这个方法不会中止一个正在运行的线程,还需要加入一个判断才可以完成线程的中止。this.interrupte...原创 2019-11-10 01:13:47 · 127 阅读 · 0 评论 -
JVM个人笔记
1.为什么Java具有可移植性而C++没有?可移植性:指的是代码一次编写,处处运行。即相同的代码可以在linux、windows或者mac上运行且结果一致;JVM实现:我们知道很多JVM的native方法由C++实现,但是对不同系统,甚至32,64位都有不同的jdk版本,是不是也正好证明了不同的系统需要编写不同的C++代码来实现,而Java框架则不需要选择系统或版本。根本原因:暂时没想到...原创 2019-11-09 21:32:19 · 276 阅读 · 1 评论