近两年,Java 版本升级频繁,感觉刚刚掌握 Java8,写本文时,已听到 java14 的消息,无论是尝鲜新特性(Java12 中超级香的一个功能),还是由于项目升级/兼容需要,我们可能都要面临管理多个 Java 版本的情 另外 Oracle 自 Java11 开始,更改了用户协议,任何商用都会收费。在写本文时,得到消息「微软宣布加入 OpenJDK」,打不过就选择 OpenJDK。随便 G 一下,当个故事了解就可以 配置单个 Java 环境变量本身没什么技术含量可言,但当需要管理多个 Java 版本,重复配置环境变量显然是非常枯燥的,按照传统的配置方式我们又不能灵活的切换 Java 版
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图: 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstream2 的流入合并,然后从 merger 流出 有了这个形象的说明我们就进入正题吧 Collectors.teeing 上面提到的小功能就是 Collectors.teeing API, 先来看一下 JDK 关于该 API 的说明,看着觉得难受的直接忽
写在前面 Java 后端程序员应该会遇到读取 Excel 信息到 DB 等相关需求,脑海中可能突然间想起 Apache POI 这个技术解决方案,但是当 Excel 的数据量非常大的时候,你也许发现,POI 是将整个 Excel 的内容全部读出来放入到内存中,所以内存消耗非常严重,如果同时进行包含大数据量的 Excel 读操作,很容易造成内存溢出问题 但 EasyExcel 的出现很好的解决了 POI 相关问题,原本一个 3M 的 Excel 用 POI 需要100M左右内存, 而 EasyExcel 可以将其降低到几 M,同时再大的 Excel 都不会出现内存溢出的情况,因为是逐行读取 E
关于 Java String,这是面试的基础,但是还有很多童鞋不能说清楚,所以本文将简单而又透彻的说明一下那个让你迷惑的 String 在 Java 中,我们有两种方式创建一个字符串 1 2 String x = "abc"; String y = new String("abc"); 你常见也常写第一种,很少见第二种,但面试还总问这类问题,双引号和构造器两种形式创建字符串到底有什么差别呢? 先来看例子 例子 1 1 2 3 4 String a = "abcd"; String b = "abcd"; System.out.println(a == b); // T
写在前面 红黑树,对很多童鞋来说,是既熟悉又陌生。学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。没错,本文内容就是要解决这个问题,用简单的语言,搭配静图和动图(利用大脑图形记忆方式),让你对红黑树有更深入的了解和更清晰的记忆,希望小伙伴们再次遇到红黑树的问题不至于头大,建议读该文章姿势: 打开两个页面,一个页面看图片和内容,一个页面看公式,像玩魔方一样,多玩几次就明白了 通过工具 (公众号回复「工具」—>那些可以提高效率的工具—>红黑树) 动态感受红黑树的转换过程 俺家司令买完东西后,我俩经常会发生这样的一段对话
双亲委派模型 在介绍这个Java技术点之前,先试着思考以下几个问题: 1. 为什么我们不能定义同名的 String 的 java 文件? 2. 多线程的情况下,类的加载为什么不会出现重复加载的情况? 3. 下面代码,虚拟机是怎样初始化注册 Mysql 连接驱动(Driver)的? 1 2 Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=GBK", "
IO流,网络编程的基础背景 最近在做Springboot分布式微服务项目,用到了文件上传和下载,文件上传是既有的功能,将文件或图片上传到S3服务器上,将生成的文件URL地址和截取的文件名存储到DB中,正常我们只需要给前端URL,通过浏览器就可以实现文件的下载了,但是我们在将文件上传到S3服务器之前是将文件名称进行转码的,如:文件test.docx上传到S3服务器之后的URL地址是: http://www.S3.xxx.com/files/abRsdf.docx, 这样我们下载下来的文件文件名就是 abRsdf.docx, 显然这是不符合我们要求的,下载的文件名应该是test.docx, 并且需
1. List接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。 2. ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大小。 3. 每个ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。 4. ArrayList是经常会被用到的,一般情况下,使用的时候会



Copyright 2018-2019 Tanθ's Blog   |   辽ICP备19017651号-1   |     站点总字数: 277.7k 字   |   载入天数...载入时分秒...   |  站点地图   |  站长统计
  总访问量:  次  总访问人数:  人

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议