![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 85
准备起飞55
这个作者很懒,什么都没留下…
展开
-
生成图片二维码
二维码生成代码原创 2022-09-09 15:29:54 · 212 阅读 · 1 评论 -
Log4j.properties配置详解
参考博客https://www.jianshu.com/p/ccafda45bcea一、log4j简介#log4j主要有三个重要的组件:Loggers(记录器):日志类别和级别; Appenders(输出源):日志要输出的地方; Layout(布局):日志以何种形式输出。1、Loggers#Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR &转载 2021-07-28 18:10:45 · 101 阅读 · 0 评论 -
JAVA并发十二连招,你能接住吗?
话不多说,干货走起。1、HashMap面试第一题必问的 HashMap,挺考验Javaer的基础功底的,别问为啥放在这,因为重要!HashMap具有如下特性: HashMap 的存取是没有顺序的。 KV 均允许为 NULL。 多线程情况下该类不安全,可以考虑用 HashTable。 JDk8底层是数组 + 链表 + 红黑树,JDK7底层是数组 + 链表。 初始容量和装载因子是决定整个类性能的关键点,轻易不要动。 HashMap是懒汉式创建原创 2021-06-12 21:38:33 · 89 阅读 · 0 评论 -
fullgc过于频繁该怎么解决?
fullgc过于频繁有可能会造成oom,有可能不会。首先明确一下,这篇文章的重点是分析后面一种情况,即应用在频繁的fullgc,但并没有出现oom。我们来想一下为什么会出现fullgc,触发原因有很多种,但归根到底都是因为内存空间不足了(system.gc的情况不考虑)。系统在频繁的fullgc,但并没有出现oom,说明每次回收的时候,肯定清理了部分内存空间。那这里就有2种情况,gc之后清理的内存空间大不大?1、如果每次gc之后剩余的空间不大,说明有一部分顽固对象一直没法被回收,导致可用内存原创 2021-03-25 14:54:25 · 2845 阅读 · 0 评论 -
Java线程状态切换以及核心方法
1.Java线程状态1.1 线程主要状态①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得cpu 时间片后变为运行中状态(running)。③阻塞(BLOC转载 2021-03-08 20:19:23 · 122 阅读 · 0 评论 -
彻底理解volatile关键字
1. volatile简介在上一篇文章中我们深入理解了java关键字,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下。通过上一篇的文章我们了解到synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。而volatile就可以说是java虚拟机提供的最轻量级的同步机制。但它同时不容易被正确理解,也至于在并发编程中很多程序员遇到线程安全的问题就会使用synchronized。java内存模型告诉我们,转载 2021-03-08 17:00:14 · 106 阅读 · 0 评论 -
Reactor详解
reactor 是什么 为何要用,能解决什么问题 如何用,更好的方式 其他事件处理模式 一、Reactor 是什么关于reactor 是什么,我们先从wiki上看下:The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more i...转载 2021-02-24 16:25:17 · 585 阅读 · 0 评论 -
彻底搞懂Reactor模型和Proactor模型
在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。想要了解两种模型,需要了解一些IO、同步异步的基础知识,点击查看服务端的线程模型无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图:2种fdlistenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。 connfd:每个连接都有一个co..转载 2021-07-28 18:09:55 · 234 阅读 · 0 评论 -
Java NIO系列教程(六) Selector
原文链接作者:Jakob Jenkov译者:浪迹v校对:丁一Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector? Selector的创建 向Selector注册通道 SelectionKey 通过Selector选择通道 wakeUp() close() 完整的示例为什么使...转载 2021-02-23 16:26:59 · 109 阅读 · 0 评论 -
Java NIO系列教程(三) Buffer
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。下面是NIO Buffer相关的话题列表:Buffer的基本用法 Buffer的capacity,position和limit Buffer...转载 2021-02-23 15:03:47 · 63 阅读 · 0 评论 -
Java IO多路复用技术详解
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。(3)IO多路复用(IOMultiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这...转载 2021-02-23 09:11:31 · 479 阅读 · 0 评论 -
深入理解BIO、NIO、AIO
导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。BIO、NIO、AIO 的区别是什么?同/异步、阻/非阻塞的区别是什么?文件读写最优雅的实现方式是什么?NIO 如何实现多路复用功能?带着以上这几个问题,让我们一起进入IO的世界吧。在开始之前,我们先来思考一个问题:我们经常所说的“IO”的全称到底是什么?可能很多人看到这个问题和我一样一脸懵逼,转载 2021-02-23 09:10:12 · 142 阅读 · 0 评论 -
简单总结:以设计模式的角度总结Java基本IO流
在总结 Java Basic IO 时,发现 java.io 包的相关类真心不少~~。看到一堆“排山倒海”般的类,我想,唯有英雄联盟中小炮的台词才能表现此刻我的心情:跌倒了没?崩溃了没?学 Java 的,学过装饰者模式一般都知道一个典型的应用:Java 的基本 IO 使用了装饰者模式(更多的 JDK 中使用的设计模式,请点我)。也因此知道了为什么 io 包里为什么会有这么多的类~~,引用《HeadFirst 设计模式》的话:Java I/O 也引出装饰者模式的一个“缺点”:利用装饰者模式,转载 2021-02-22 11:38:42 · 97 阅读 · 0 评论 -
分布式架构基础:Java RMI详解
分布式架构基础:Java RMI详解GitHub: https://github.com/jayknoxqu/rmi-exampleRMI简介 Java RMI,即 远程方法调用(Remote Method Invocation),一种用于实现远程过程调用(RPC)(Remote procedure call)的Java API, 能直接传输序列化后的Java对象和分布式垃圾收集。它的实现依赖于Java虚拟机(JVM),因此它仅支持从一个JVM到另一个JVM的调用。rmi架构图rmi的实现(1转载 2020-10-24 00:32:19 · 268 阅读 · 1 评论 -
volatile关键词的含义
出处:http://www.importnew.com/24082.html一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在...转载 2020-05-06 16:36:46 · 100 阅读 · 0 评论 -
java并发包
https://blog.csdn.net/shengqianfeng/category_9275515.html转载 2020-04-13 10:40:04 · 67 阅读 · 0 评论