自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

珍惜当下

总要留一点东西吧

  • 博客(161)
  • 收藏
  • 关注

原创 ♥JVM相关知识体系详解♥

本系列将给大家构建JVM核心知识点全局知识体系。

2025-04-10 15:57:14 668

原创 Java 14 新特性概述

在这一版中,主要带来了 ZGC 增强、instanceof 增强、Switch 表达式更新为标准版等方面的改动、增强和新功能。本文主要介绍 Java 14 中的主要新特性,带您快速了解 Java 14 带来了哪些不一样的体验和便利。

2025-04-10 15:56:17 278

原创 Java 13 新特性概述

Java 13 已如期于 9 月 17 日正式发布,此次更新是继半年前 Java 12 这大版本发布之后的一次常规版本更新,在这一版中,主要带来了 ZGC 增强、更新 Socket 实现、Switch 表达式更新等方面的改动、增强。本文主要针对 Java 13 中主要的新特性展开介绍,带你快速了解 Java 13 带来的不同体验。

2025-04-10 09:33:07 592

原创 Java 12 新特性概述

JDK12 在 2019 年 3 月 19 号正式发布,不同于JDK11,JDK12并不是一个LTS版本。作为一个中间版本,JDK12版本特性增加较少。2017年宣布的加速发布节奏要求每六个月发布一次功能,每季度更新一次,每三年发布一次长期支持(LTS)更新版本(或每六个版本一次)。

2025-04-09 10:33:32 494

原创 Java 11 新特性概述

Java 11 在 2018 年 9 月 25 日正式发布,之前在 Java 10 新特性介绍 中介绍过,为了加快的版本迭代、跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个大版本,每个季度发布一个中间特性版本,并且做出不会跳票的承诺。通过这样的方式,Java 开发团队能够将一些重要特性尽早的合并到 Java Release 版本中,以便快速得到开发者的反馈,避免出现类似 Java 9 发布时的两次延期的情况。

2025-04-08 09:29:24 972

原创 Java 10 新特性概述

作为当今使用最广泛的编程语言之一的 Java 在 2018 年 3 月 21 日发布了第十个大版本。为了更快地迭代、更好地跟进社区反馈,Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 是这一新规则之后,采用新发布周期的第一个大版本。Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。除此之外,还有其他包括垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。

2025-04-07 10:34:37 786

原创 Java 9 新特性概述

Java 9 正式发布于 2017 年 9 月 21 日。作为 Java8 之后 3 年半才发布的新版本,Java 9 带来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性。本文对 Java9 中包含的新特性做了概括性的介绍,可以帮助你快速了解 Java 9。

2025-04-06 09:56:35 728

原创 Java 11 升Java 17 重要特性必读

这里帮你梳理为何JDK 17将会是一个极为重要的版本以及如何去理解它。

2025-04-04 15:25:21 883

原创 Java 8 升Java 11 重要特性必读

这里帮你梳理为何JDK 11会是一个极为重要的版本以及如何去理解它。

2025-04-03 10:24:20 871

原创 Java8+特性知识体系详解

作为当今使用最广泛的编程语言之一的 Java 在 2018 年 3 月 21 日发布了第十个大版本。为了更快地迭代、更好地跟进社区反馈,Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 是这一新规则之后,采用新发布周期的第一个大版本。Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。除此之外,还有其他包括垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。

2025-04-03 10:23:59 935

原创 Java 8 - 其它更新: 字符串,base64,...

本文对Java 8 其它更新介绍和解读。

2025-04-03 10:22:46 829

原创 Java 8 - JavaFx 2.0

比起AWT和SWING,JavaFX的优势很明显,各大主流IDE已经支持JavaFX的开发了,最佳的工具莫过于NetBeans,且随着lambda带来的好处,JavaFX的事件处理简洁了不少,以前需要写匿名函数类。另外JavaFX开源以来,JavaFX的生态环境也越来越活跃了,包括各种教程,嵌入式尝试,还有一些开源项目,比如: ControlsFX,JRebirth,DataFX Flow,mvvmFX,TestFX 等等。还有JavaFX是可以运行在Android和ios上面,这个很赞!

2025-04-03 10:21:41 882

原创 Java 8 - LocalDate/LocalDateTime

看完了这些例子后,我相信你已经对Java 8这套新的时间日期API有了一定的了解了。现在我们来回顾下关于这个新的API的一些关键的要素。它提供了javax.time.ZoneId用来处理时区。它提供了LocalDate与LocalTime类 Java 8中新的时间与日期API中的所有类都是不可变且线程安全的,这与之前的Date与Calendar API中的恰好相反,那里面像java.util.Date以及SimpleDateFormat这些关键的类都不是线程安全的。

2025-04-02 10:02:41 663

原创 Java 8 - StampedLock

synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定;ReentrantLock、ReentrantReadWriteLock,、StampedLock都是对象层面的锁定,要保证锁定一定会被释放,就必须将unLock()放到finally{}中;StampedLock 对吞吐量有巨大的改进,特别是在读线程越来越多的场景下;

2025-04-02 10:02:18 865

原创 Java 8 - 移除Permgen

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,说说为什么会内存益出: 这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

2025-04-02 10:01:56 762

原创 Java 8 - JRE精简

如今,物联网正风行一时。我们看到大量不同的设备在市场上出现,每一种的更新速度都越来越快。java需要一个占用资源少的JRE运行环境,紧凑的JRE特性的出现,希望能带来以后的物联网的发展,甚至还是会有大量的java应用程序出现在物联网上面。目前oracle也发布了针对raspberry pi的JRE了。另外该特性也是为java9的模块化项目做准备,模块化特性是javaer所期待的特性。他是解决业务系统复杂度的一个利器,当然OSGI也是相当的出色。但osgi对于新学者来说未免太复杂了。

2025-04-02 10:00:06 809

原创 Java 8 - 类型推断优化

以上是JEP101的特性内容了,Java作为静态语言的代表者,可以说类型系统相当丰富。导致类型间互相转换的问题困扰着每个java程序员,通过编译器自动推断类型的东西可以稍微缓解一下类型转换太复杂的问题。虽然说是小进步,但对于我们天天写代码的程序员,肯定能带来巨大的作用,至少心情更愉悦了。

2025-04-01 10:26:13 811

原创 Java 8 - 重复注解

允许在同一申明类型(类,属性,或方法)的多次使用同一个注解JEP120没有太多内容,是一个小特性,仅仅是为了提高代码可读性。这次java 8对注解做了2个方面的改进(JEP 104,JEP120),相信注解会比以前使用得更加频繁了。

2025-04-01 10:25:56 281

原创 Java 8 - 类型注解

注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷?在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;java 8里面,注解可以应用在任何地方,比如:创建类实例类型映射implements 语句中throw exception声明需要注意的是,

2025-04-01 10:25:36 938

原创 Java 8 - 默认方法

一个接口A,Clazz类实现了接口A。//调用A.foo()代码是可以编译的,即使Clazz类并没有实现foo()方法。在接口A中提供了foo()方法的默认实现。简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法。只需在方法名前面加个default关键字即可。默认方法给予我们修改接口而不破坏原来的实现类的结构提供了便利,目前java 8的集合框架已经大量使用了默认方法来改进了,当我们最终开始使用Java 8的lambdas表达式时,提供给我们一个平滑的过渡体验。

2025-04-01 10:25:19 795

原创 Java 8 - Optional类深度解析

对Java 8 Optional类进行深度解析。身为一名Java程序员,大家可能都有这样的经历: 调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。在我的前一篇文章中,介绍了Scala是如何解决了这个问题。

2025-03-31 09:15:38 664

原创 Java 8 - 函数编程(lambda表达式)

在Java世界里面,面向对象还是主流思想,对于习惯了面向对象编程的开发者来说,抽象的概念并不陌生。面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象。现实世界中,数据和行为并存,程序也是如此,因此这两种编程方式我们都得学。这种新的抽象方式还有其他好处。很多人不总是在编写性能优先的代码,对于这些人来说,函数式编程带来的好处尤为明显。程序员能编写出更容易阅读的代码——这种代码更多地表达了业务逻辑,而不是从机制上如何实现。易读的代码也易于维护、更可靠、更不容易出错。

2025-03-31 09:15:19 771

原创 Java8特性知识体系详解

Java 8 新特性详解汇总。

2025-03-31 09:14:56 1614

原创 Java IO知识体系详解

本文主要梳理Java IO/NIO/AIO的知识体系。

2025-03-28 10:15:57 755

原创 Java NIO - 零拷贝实现

这里转一篇Java NIO 零拷贝的实现文章,在此之前建议先理解什么是Linux中零拷贝,可以先看这篇文章。本文从源码着手分析了 Java NIO 对零拷贝的实现,主要包括基于内存映射(mmap)方式的 MappedByteBuffer 以及基于 sendfile 方式的 FileChannel。最后在篇末简单的阐述了一下 Netty 中的零拷贝机制,以及 RocketMQ 和 Kafka 两种消息队列在零拷贝实现方式上的区别。

2025-03-28 10:15:32 589

原创 Java N(A)IO - 框架: Netty

[TOC](Java N(A)IO - 框架: Netty)Netty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty构建,比如RPC框架、zookeeper等。

2025-03-28 10:15:11 310

原创 Java AIO - 异步IO详解

本文主要对异步IO和Java中对AIO的支持详解。

2025-03-28 10:14:40 598

原创 Java NIO - IO多路复用详解

本文主要对IO多路复用,Ractor模型以及Java NIO对其的支持。

2025-03-28 10:13:48 825

原创 Java NIO - 基础详解

新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的,弥补了原来的 I/O 的不足,提供了高速的、面向块的 I/O。Standard IO是对字节流的读写,在进行IO之前,首先创建一个流对象,流对象进行读写操作都是按字节 ,一个字节一个字节的来读或写。而NIO把IO抽象成块,类似磁盘的读写,每次IO操作的单位都是一个块,块被读入内存之后就是一个byte[],NIO一次可以读或写多个字节。

2025-03-28 10:13:17 682

原创 Java IO - BIO 详解

客户端向服务器端发出请求后,客户端会一直等待(不会再做其他事情),直到服务器端返回结果或者网络出现问题。服务器端同样的,当在处理某个客户端A发来的请求时,另一个客户端B发来的请求会等待,直到服务器端的这个处理线程完成上一个处理。

2025-03-28 10:12:51 764

原创 IO 模型 - Unix IO 模型

等待数据准备好从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。阻塞式 I/O非阻塞式 I/OI/O 复用(select 和 poll)信号驱动式 I/O(SIGIO)异步 I/O(AIO)

2025-03-28 10:11:19 693

原创 Java IO - 常见类使用

本文主要介绍Java IO常见类的使用,包括:磁盘操作,字节操作,字符操作,对象操作和网络操作。

2025-03-28 09:36:39 536

原创 Java并发知识体系详解

Java 并发相关知识体系详解,包含理论基础,线程基础,synchronized,volatile,final关键字, JUC框架等内容。

2025-03-27 16:24:53 656

原创 Java IO - 源码: OutputStream

本文主要从JDK 11源码角度分析 OutputStream。

2025-03-27 09:26:16 397

原创 Java IO - 源码: InputStream

本文主要从JDK 11 源码角度分析InputStream。

2025-03-27 09:26:00 982

原创 Java IO - 设计模式(装饰者模式)

[TOC](Java IO - 设计模式(装饰者模式))Java I/O 使用了装饰者模式来实现。

2025-03-26 14:44:20 377

原创 Java IO - 分类(传输,操作)

[TOC](Java IO - 分类(传输,操作))本文主要从和两个方面分析Java IO的分类。

2025-03-26 14:43:55 533

原创 Java 并发 - ThreadLocal详解

互斥同步: synchronized 和 ReentrantLock非阻塞同步: CAS, AtomicXXXX无同步方案: 栈封闭,本地存储(Thread Local),可重入代码这个章节将详细的讲讲 本地存储(Thread Local)。

2025-03-25 09:21:39 1384

原创 JUC工具类: Exchanger详解

Exchanger用于进行两个线程之间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange()方法交换数据,当一个线程先执行exchange()方法后,它会一直等待第二个线程也执行exchange()方法,当这两个线程到达同步点时,这两个线程就可以交换数据了。

2025-03-25 09:21:12 699

原创 JUC工具类: Phaser详解

Phaser是JDK 7新增的一个同步辅助类,它可以实现CyclicBarrier和CountDownLatch类似的功能,而且它支持对任务的动态调整,并支持分层结构来达到更高的吞吐量。

2025-03-24 09:53:51 870

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除