Java 困扰三周の问题:使用byte[]或skip()方法读取字节流Stream文件尾部多/少/缺字节解决方法

前言 最近在造一个最强兼容性的FTP服务端轮子,但在使用InputStream、OutputStream及它的子类时,我遇到了很奇怪也很严重的问题:数据尾部随机缺少/多出数据。这个问题简直太致命了。 问题复现 先出一段代码,我之前操作数据流的步骤如下(请注 ......

大白话之Java Stream流:将类数组流化,便捷批量修改,通俗讲解!

前言 Stream大意概括 将一个列表(List)中的所有类铺平转换成一条流水线,按要求将流水线上的所有类一个一个地处理。像极了SQL语句。 本篇文章将用通俗易懂的语言为你讲解流操作。如果你有一部分卡住看不懂,跳过去就好,再回去看就会了。 -📚-需要 ......

大白话之Java级联调用:一个类,一条语句,同时调用好几个方法,串成一串

前言 之前偶然学习了一下Dart编程语言(不是重点),在学习官方手册时发现一个新的概念:级联调用。这是啥东西? 于是我百度了以后,发现在Java中也有类似的级联调用,那它们的区别又在哪儿呢? -📚-需要先了解的知识-📚- 语言内容链接 Java ......

大白话之Java多线程join方法:开局一张图,试学一分钟,你就费和我一样,理解介个方法

前言 有次偶尔接触到了Thread.join()方法,便到网上去查阅相关资料,但也是看得我一头雾水(天下文章一般抄)。在我很久的理解之后,便想将我理解的join()方法以一张图的方式解释出来。 要学习本篇文章,你需要理解以下知识: 多线程 & T ......

大白话之AutoClosable接口 | try-with-resources:JDK1.7的新特性,提高重复回收效率

前言 无论是使用文件IO流,还是网络Socket流,都免不了调用close()将流关闭。如果需要操作的流过多,就会导致混乱。 一旦忘记将关闭方法放到finally中,很有可能出现流未被关闭,占用大量内存空间的问题。 流程简化 对比 try-catch-fi ......

随笔 | Tomcat:续-从Linux迁移到Windows编码问题彻底解决

前言 继上条博文 将Tomcat、MySQL从Linux迁移到Windows的心路历程(干货):令人恐惧的字符编码 后,我发现控制台随后仍出现了一些乱码,并不受到在conf/logging.properties文件修改GBK后的影响,它输出的仍是UTF-8 ......

随笔 | 奇淫技巧 | Java:记return和短路运算符的妙用

在阅读AtomicStampedReference的源码中,在compareAndSet()方法发现一段代码: return expectedReference == current.reference && expectedStamp ......

大白话之必会Java Atomic | 线程一点也不安全(二):Atomic的ABA问题会导致什么情况?如何解决?

前言 第一章还没看过?点我可以穿越 阅读本篇文章,你需要了解以下知识: Atomic是什么?(点此跳转) 单向链表的原理 从上一章的内容,我们可以了解到,Atomic可以基本解决线程同步安全的问题。而本章我们将讨论Atomic的缺点与它的原子性。 AB ......

大白话之必会Java Atomic | 线程一点也不安全(一):比自增和synchronized更快速、靠谱的原子操作(调用C语言)

前言 阅读本篇文章,你需要对下方知识有所了解: synchronized关键词的作用 线程池的作用(这里) 不靠谱和慢动作 在多线程环境下: 操作靠谱程度执行速度 i++ 自增运算没戏不赖 synchronized贼棒太废 不靠谱的自增 操 ......

刨根问底 | 大白话:在使用注解后,框架是怎么知道你哪个方法使用了注解的?用@RequestMapping注解举例详解!

前言 阅读本篇文章,你需要理解以下的知识: 重要:反射 (参考) Java enum 接口的使用 了解注解是什么、该什么时候使用 最好接触过Spring(因为用@RequestMapping举例) 先说说注解 如果你熟悉Spring框架,你一定使用过这 ......

大白话之fail-fast | fail-safe:为什么会有这个机制?它有什么作用?

前言 阅读本篇文章,你需要了解下列知识: 多线程的实现(看过来) Iterator的使用 ArrayList的使用和如何实现Iterator 为什么会有这个机制? 举个栗子 有一杯水、两个人(黄渤和红雷) 黄渤拿起了水杯,开始喝水 红雷到达案发现场, ......