Java基础
文章平均质量分 76
程序猿洞晓
不忘初心,方得始终。
展开
-
Linux环境JDK安装
Linux环境安装JDK很简单,但是环境变量的配置总是忘,如果直接敲太累,网上查,时间成本高(各种配置方式,有的可能还是错的)。还是自己做一个笔记吧!先卸载open-jdkCentos系统有时候会有自带的open-jdk,需要卸载掉。执行命令如下:rpm -qa | grep java # 检查是否安装了open-jdkrpm -e --nodeps xxxx # xxxx表示通过上个命令查询到的open-jdk名称,上一步没查到,此步不执行安装上传JDK安装包,然后解压。(用rz或者sc原创 2022-03-20 12:37:59 · 231 阅读 · 0 评论 -
Java8新特性Lambda表达式的基本使用(常用功能)
Java8新特性Lambda表达式的基本使用下面的都是基本的使用。列表的遍历列表的排序列表的筛选列表的分页查询列表内容提取匿名类主测试类import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.function.Predicate;i...原创 2018-02-23 18:04:09 · 822 阅读 · 0 评论 -
ConcurrentHashMap简单的实现思想理解
关于说ConcurrentHashMap的文章很多,本博客也有转载这样的文章,但是总体觉得都是过于偏重源码的说明。没有很明确的结构图来让我们从整体上理解源码的实现过程。毕竟人都是偏向于懒,博客中源码过于太多,理解起来困难,再加上这种源码分析的篇幅很长,因此能真正看完理解的确不多(个人理解)。所以这篇文章里面将不贴出源码,完全通过图来理解ConcurrentHashMap的理解(更直观)。ConcurrentHashMap存储结构ConcurrentHashMap的存储结构在JDK7和JDK8两个版本是有原创 2022-03-21 08:57:24 · 141 阅读 · 0 评论 -
轻松了解jdk8之lambda表达式常用API
这两年,基本所有的公司都由之前的JDK7转战JDK8,还记得上次去饿了么面试给的面试题,第一题就是用lambda实现一个功能,当时对lambda表达式基本是零了解,然后……。现在随着慢慢的使用,也慢慢了解lambda表达式真的是一个好东西,可以大大的简化以前的代码,下面在说常用lambda表达式的时候,会附上对应之前需要的代码量。相信你也会喜欢上它的。一组对象的分组场景:Collection下的用户对象集合,根据用户的年龄分组。代码:List<User> users = new Ar原创 2022-03-21 08:56:20 · 422 阅读 · 0 评论 -
ArrayList源码(二):扩容和移位、删除元素详解
关于ArrayList的文章有两篇,前一篇写了ArrayList的数据结构、扩容机制、源码分析等,这篇来看一下ArrayList的一些操作细节。删除元素操作通过foreach删除List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); for (String element : list) {原创 2022-04-07 20:17:44 · 1476 阅读 · 0 评论 -
java基础位运算基本原理分析
位运算是编程语言的基础,在看源码的时候会看到很多位运算代码,但是在项目代码中很少会看到位运算。因为应用代码中,有很多判断和计算都可以直接用数值的判断和计算完成,没有必要去用位运算,以至于这些基础的东西慢慢用的越来越少,慢慢也就忘了。导致的一个结果就是看源代码很费力,因为大量的位运算逻辑,看不懂。作为程序员感觉数据位运算是非常必要,有点如下:看源码时能够更好的理解位运算更接近计算机的习惯,执行的效率会更高装逼利器,在项目中使用位运算,体现逼格N种基本的位运算位运算 – 与运算符(&)原创 2022-03-21 08:58:14 · 186 阅读 · 0 评论 -
ArrayList源码(一):java1.8源码之ArrayList源码解读
一、ArrayList概述1.1 ArrayList简介ArrayList经常用,今天对它的源码探究一二。首先看一下ArrayList源码中对ArrayList的讲解:List是大小可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector类,除了此类是不同步的。)size、isEmpty、get、set、iterator和listIterator操作都以固定时间运行。add转载 2022-04-06 20:19:57 · 310 阅读 · 0 评论 -
windows环境下使用java -jar命令运行jar包出现假死问题
在一次部署的时候,遇到使用windows系统作为服务器的,按照正常的方式是打开doc窗口,定位到对应jar包所在的目录,直接使用java -jar运行jar包。java -jar xxx.jar后来就出现了灵异事件,刚启动的时候运行的还是好好的,但是过一段时间,通过远程请求这个服务就发现一直出现请求超时。检查网络、端口都是通的,证明这个服务是运行正常的。后来经过问题的排查和咨询其他有windows部署经验的同事才发现问题。问题所在当在windows系统运行jar包服务时,使用doc窗口直原创 2022-03-22 09:02:32 · 3439 阅读 · 0 评论 -
拼接字符串String、StringBuilder、StringBuffer比较
字符串拼接,很简单的一个操作,JDK给出了几种不同的拼接方法,还提供了对应封装类。早在JDK1.0的时候就提供了StringBuffer这个类用来做字符串的拼接,为了多线程下的线程安全问题,在StringBuffer类中的方法上都加了synchronized锁,这种考虑是没有问题的。后续为了提高单线程下(不存在线程安全问题)字符串的拼接效率,JDK1.5提供了StringBuilder类,这个类里面的方法是完全放开的,没有锁竞争对性能的消耗。在公司的实际开发中,很多人知道用StringBuffer和Str原创 2022-03-21 08:57:40 · 619 阅读 · 0 评论