草庐IT

17张图带你深度剖析 ArrayDeque(JDK双端队列)源码

ArrayDeque(JDK双端队列)源码深度剖析前言在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列,不过与ArrayDeque不同的是,LinkedList的双端队列使用双向链表实现的。双端队列整体分析我们通常所谈论到的队列都是一端进一端出,而双端队列的两端则都是可进可出。下面是双端队列的几个操作:数据从双端队列左侧进入。数据从双端队列右侧进入。数据从双端队列左侧弹出。数据从双端队列右侧弹出。而在ArrayDeque当中也给我们提供了对应的方法去实现,比如下面这个例子就是上图对应的代码操作:pub

17张图带你深度剖析 ArrayDeque(JDK双端队列)源码

ArrayDeque(JDK双端队列)源码深度剖析前言在本篇文章当中主要跟大家介绍JDK给我们提供的一种用数组实现的双端队列,在之前的文章LinkedList源码剖析当中我们已经介绍了一种双端队列,不过与ArrayDeque不同的是,LinkedList的双端队列使用双向链表实现的。双端队列整体分析我们通常所谈论到的队列都是一端进一端出,而双端队列的两端则都是可进可出。下面是双端队列的几个操作:数据从双端队列左侧进入。数据从双端队列右侧进入。数据从双端队列左侧弹出。数据从双端队列右侧弹出。而在ArrayDeque当中也给我们提供了对应的方法去实现,比如下面这个例子就是上图对应的代码操作:pub

从 Linux 内核角度探秘 JDK NIO 文件读写本质

1.前言笔者在《从Linux内核角度看IO模型的演变》一文中曾对Socket文件在内核中的相关数据结构为大家做了详尽的阐述。又在此基础之上介绍了针对socket文件的相关操作及其对应在内核中的处理流程:并与epoll的工作机制进行了串联:通过这些内容的串联介绍,我想大家现在一定对socket文件非常熟悉了,在我们利用socket文件接口在与内核进行网络数据读取,发送的相关交互的时候,不可避免的涉及到一个新的问题,就是我们如何在用户空间设计一个字节缓冲区来高效便捷的存储管理这些需要和socket文件进行交互的网络数据。于是笔者又在《一步一图带你深入剖析JDKNIOByteBuffer在不同字节序

从 Linux 内核角度探秘 JDK NIO 文件读写本质

1.前言笔者在《从Linux内核角度看IO模型的演变》一文中曾对Socket文件在内核中的相关数据结构为大家做了详尽的阐述。又在此基础之上介绍了针对socket文件的相关操作及其对应在内核中的处理流程:并与epoll的工作机制进行了串联:通过这些内容的串联介绍,我想大家现在一定对socket文件非常熟悉了,在我们利用socket文件接口在与内核进行网络数据读取,发送的相关交互的时候,不可避免的涉及到一个新的问题,就是我们如何在用户空间设计一个字节缓冲区来高效便捷的存储管理这些需要和socket文件进行交互的网络数据。于是笔者又在《一步一图带你深入剖析JDKNIOByteBuffer在不同字节序

【JVM】JDK7后intern方法总结

JDK6及之前字符串常量池是放在永久代的,这里不讨论,JDK7之后将字符串常量池迁移到了JVM的堆中,注意删除永久代更换为元空间是JDK8哈。测试代码1如下:@Testpublicvoidtest01(){Stringstr2=newStringBuilder("12").append("34").toString();Stringintern=str2.intern();Stringstr1="1234";System.out.println(str2==intern);System.out.println(str1==intern);}输出结果:truetrue测试代码2如下:@Testp

【JVM】JDK7后intern方法总结

JDK6及之前字符串常量池是放在永久代的,这里不讨论,JDK7之后将字符串常量池迁移到了JVM的堆中,注意删除永久代更换为元空间是JDK8哈。测试代码1如下:@Testpublicvoidtest01(){Stringstr2=newStringBuilder("12").append("34").toString();Stringintern=str2.intern();Stringstr1="1234";System.out.println(str2==intern);System.out.println(str1==intern);}输出结果:truetrue测试代码2如下:@Testp

最新版JDK、Eclipse安装教程

摘要:本文详细介绍了在Windows下如何下载当前最新版的JDK及Eclipse以及具体安装步骤,并附软件安装包,最后介绍简单改变窗口风格、字体调整使其编辑界面更加美观整洁。其要点如下:软件下载安装步骤界面优化前言    Java是能够跨越多平台的、可移植性最高的一种面向对象的编程语言,其简单易学、功能强大,越来越多的程序员加入Java的阵营之中。Java学习的第一步还需正确搭建Java环境,当前可以下载安装JDK8版本,Eclipse作为当前最流行的Java集成开发工具之一,其最新版本为EclipseSimRel2018‑09(截至2018年10月)。有时安装需要注意一些细节也可能会遇到问题

最新版JDK、Eclipse安装教程

摘要:本文详细介绍了在Windows下如何下载当前最新版的JDK及Eclipse以及具体安装步骤,并附软件安装包,最后介绍简单改变窗口风格、字体调整使其编辑界面更加美观整洁。其要点如下:软件下载安装步骤界面优化前言    Java是能够跨越多平台的、可移植性最高的一种面向对象的编程语言,其简单易学、功能强大,越来越多的程序员加入Java的阵营之中。Java学习的第一步还需正确搭建Java环境,当前可以下载安装JDK8版本,Eclipse作为当前最流行的Java集成开发工具之一,其最新版本为EclipseSimRel2018‑09(截至2018年10月)。有时安装需要注意一些细节也可能会遇到问题

CentOS安装jdk

镜像下载、域名解析、时间同步请点击阿里云开源镜像站如果先要更换之前的jdk从第一步开始,之前没下载过从第二步开始,建议先检查一下系统有没有自带jdk的一,安装准备1.检查系统jdk版本java-version2.检查jdk自带安装包rpm-qa|grepjava3.卸载jdkyum-yremovetzdata-java.noarch4.如果有就卸载,卸载的包名通过(rpm-qa|grepjava)获取,包名要全部输入rpm-e--nodeps#这里输入要卸载的包#二,开始安装CentOS(虚拟机)使用yum安装jdk通过yum命令安装jdk,不需要配置环境变量就能进行使用,前提需要网络通常1.

CentOS安装jdk

镜像下载、域名解析、时间同步请点击阿里云开源镜像站如果先要更换之前的jdk从第一步开始,之前没下载过从第二步开始,建议先检查一下系统有没有自带jdk的一,安装准备1.检查系统jdk版本java-version2.检查jdk自带安装包rpm-qa|grepjava3.卸载jdkyum-yremovetzdata-java.noarch4.如果有就卸载,卸载的包名通过(rpm-qa|grepjava)获取,包名要全部输入rpm-e--nodeps#这里输入要卸载的包#二,开始安装CentOS(虚拟机)使用yum安装jdk通过yum命令安装jdk,不需要配置环境变量就能进行使用,前提需要网络通常1.