
jdk
文章平均质量分 66
锐湃
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JDK8新特性——第二节 Stream流式思想
流式思想类似于生产车间的流水线这里filter map skip 都是对函数模型进行操作,集合元素并没有真正被处理,只有当终结方法count执行的时候,整个模型才会按照指定策略执行操作,而这得益于Lambda的延迟执行特性Stream其实是一个集合元素的函数模型,他并不是集合,也不是数据结构, 其本身并不存储任何元素或其他地址作者:杜艳_66c4链接:https://www.jianshu.com/p/6ead7ced4403来源:简书著作权归作者所有。转载 2023-06-27 19:29:33 · 81 阅读 · 0 评论 -
Java中的回车换行符\n \r \t
Windows系统里面,每行结尾是“”,即“\r\n”;但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。于是,就出现了分歧。/t相当于键盘的Tab键,/n换行New Line,/r回车Carriage Return,基本的概念应该是回车表示回到最前面,换行表示换一行。'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。转载 2023-04-06 17:14:50 · 7858 阅读 · 0 评论 -
java中 \r、\n 与\r\n 的区别(附图+解释证明)
n:显而易见了:换行!有的说不一定会回到最开头,但是个人感觉:按照代码的执行流程:从上往下,从左往右!\r\n:移到最前,然后换行!这个个人感觉是因为编译器会把\r\n联合起来一起识别,就是行首且换行,而不是先\r:移到最前,删了全部之后再进行\n。版权声明:本文为CSDN博主「sen°」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。环境jdk8中 \n 与 \r\n 其实是等同效用的!这里也可看出:Windows10。\r\n: 也是哪都执行!\n:换行:哪都执行!转载 2023-04-06 17:04:37 · 2010 阅读 · 0 评论 -
BigDecimal 解决Non-terminating decimal expansion; no exact representable decimal result.异常
使用进行精确计算时常常会出现Non-terminating decimal expansion;no exact representable decimal result.异常。出现这个异常的原因在于 BigDecimal 是不可变的、任意精度的有符号十进制数,所以可以做精确计算。但在除法中,准确的商可能是一个无限长的十进制扩展;例如,1 除以 3 所得的商。我们在做除法时,没有指定舍入模式,并且无法表示为准确的结果,因此抛出了这个异常(java.lang.ArithmeticException)。转载 2022-11-03 19:12:03 · 983 阅读 · 0 评论 -
ThreadLocal 你真的用不上吗?
中出现了Key为null的Entry,就没有办法访问这些key为null的Entry的value,如果线程迟迟不结束(也就是说这条引用链无意义的一直存在)就会造成value永远无法回收造成内存泄露;在java中,栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私有变量,而堆内存中的变量对所有线程可见,可以被所有线程访问!是给每个线程分配一个变量(对象),各个线程都存有变量的副本,这样每个线程都是使用自己(变量)对象实例,使线程与线程之间进行隔离;转载 2022-09-29 09:53:41 · 105 阅读 · 0 评论 -
Kotlin 的锁和多线程同步
作为结论,在 Kotlin 上最好用的线程同步方案首推协程。作者:JeffreyWorld链接:https://www.jianshu.com/p/7dbd035d152d来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转载 2022-09-22 19:51:11 · 3607 阅读 · 0 评论 -
从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化
G1 GC于JDK 6 update 14作为实验特性引入,从JDK 7 update 4开始正式支持。从JDK 9开始,G1由于其多用性,成了HotSpot JVM的默认垃圾回收器:它非常稳定、成熟,维护也非常活跃,而且一直在改进。那么,G1是如何在吞吐量和延迟之间进行平衡的呢?一项关键技术就是分代垃圾回收。该技术利用了一个特点:最近分配的对象很可能可以立即回收(即它们“死亡”得更快)。所以G1(以及其他分代式GC)将Java的堆分为两个区域:一个叫做“青年代”,用于存放刚刚分配的对象;转载 2022-09-20 14:03:47 · 523 阅读 · 0 评论 -
Java判断float类型是不是整数
【代码】Java判断float类型是不是整数。原创 2022-09-01 17:36:15 · 1459 阅读 · 0 评论 -
float 精度_float相加产生精度损失的原因是什么
而尾数右移虽引起最低有效位的丢失,但造成的误差较小,因此,对阶操作规定使 尾数右移,尾数右移后使阶码作相应增加,其数值保持不变。(6)如果n是左移得到的,则将n减去1后化为二进制,并在左边加“0”补足七位,放入第29到第23位。,即小阶的尾数向右移位 ( 相当于小数点左移 ) ,每右移一位,其阶码加 1 ,直到两数的阶码相等为止,右移的位数等于阶差 △ E。(3)将小数点左移n位(当30位是“0”时)或右移n位(当30位是“1”时),得到一个二进制表示的实数。当30位是“1”时将n增1。...转载 2022-08-17 15:56:04 · 1562 阅读 · 0 评论 -
为什么不能将实数作为 HashMap 的 key
在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。java中浮点数的表示比较复杂,特别是牵涉到-0.0,NaN,正负无穷这种,所以不适宜用来作为Map的key,因为可能跟我们预想的不一致。这段代码在天真的我看来是没啥问题的,可就是没办法过,经过长久的排查错误,我写了以下代码加在上面的代码里运行。大意就是给我一些点的X,Y坐标,找到过这些点最多的直线,输出这条线上的点数量。...转载 2022-07-27 10:33:28 · 116 阅读 · 0 评论 -
JAVA如何保留小数点后两位
代码】JAVA如何保留小数点后两位。转载 2022-07-20 17:02:54 · 221 阅读 · 0 评论 -
JVM 内存布局详解,图文并茂
来源:www.cnblogs.com/hyxiao97/p/15395886.html内存布局Heap 堆区Metaspace 元空间JVM Stacks 虚拟机栈Native Method Stacks(本地方法栈)Program Counter Register (程序计数寄存器)小结JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。如下图所示:堆区是Ja转载 2022-07-08 10:10:05 · 191 阅读 · 0 评论 -
还在用 SimpleDateFormat 做时间格式化?小心项目崩掉
方法的线程安全问题错误示例非线程安全原因分析解决方法 方法的线程安全问题错误示例非线程安全原因分析解决方法在多线程环境下存在线程安全问题。1.1 错误示例错误使用的代码如下:报错:1.2 非线程安全原因分析查看源码中可以看到:继承类,转换日期是通过继承自类的对象来操作的,对象会被用来进行日期-时间计算,既被用于方法也被用于方法。 的 方法 会调用继承自父类的 的 方法 的 方法会调用中重写的 方法,该方法中有个地方需要关注 中重写的 方法中调用了 这个方法: 该方法中调用了 的转载 2022-06-24 09:59:05 · 125 阅读 · 0 评论 -
JDK8都10岁了,你还在用for循环遍历list
简介熟悉Linux的同学对这种风格一定不陌生,因为它跟Linux的|管道符的思想如出一辙。上面这段话引用自runoob.com,但是其教学代码都是基于String列表进行演示,考虑到实际情况百分之80的时候都是对PO、VO进行处理,因此以下通过一个PO进行讲解。对比起for循环操作list,最大的弊端就是代码太长太乱了,如果涉及3-4张表的操作,也就是涉及多个PO操作,那个括号简直就是俄罗斯套娃,写到最后真的自己都不知道在写什么PO代码以下操作均以UserPo进行讲解filter:过滤,就是转载 2022-06-15 09:31:42 · 258 阅读 · 0 评论 -
BigDecimal使用不当,造成P0事故
我们在使用金额计算或者展示金额的时候经常会使用BigDecimal,也是涉及金额时非常推荐的一个类型,BigDecimal自身也提供了很多构造器方法,这些构造器方法使用不当可能会造成不必要的麻烦甚至是金额损失,从而引起事故资损。接下来我们看下收银台出的一起事故。首先我们先用一段代码复现问题根源,如下所示:执行结果如下:通过测试发现,当使用double或者float这些浮点数据类型时,会丢失精度,String、int则不会;这是为什么呢?我们点开构造器方法看下源码:问题就处在 doubleToRa转载 2022-06-13 09:38:31 · 119 阅读 · 0 评论 -
Java8 Lambda 表达式中的 forEach 如何提前终止
如上图所示,我们想要终止for循环,使用return。执行结果如下: 我们可以看到,只有赵六没被打印出来,后续的数组元素依旧被执行了。也就是说,关键字"return",在这里执行的效果相当于普通for循环里的关键词continue"。我们知道,在普通for循环里面,想要提前结束(终止)循环体使用"break";结束本轮循环,进行下一轮循环使用"continue";另外,在普通for里,如果使用"return",不仅强制结束for循环体,还会提前结束包含这个循环体的整个方法。而在Java8中的中,"break转载 2022-06-10 09:56:31 · 651 阅读 · 0 评论 -
不用 if (obj != null) 判空
相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过“防止 NPE,是程序员的基本修养。”但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用Java8的新特性 Optional来尽量简化代码同时高效处理NPE(Null Pointer Exception 空指针异常)...转载 2022-06-09 11:12:05 · 557 阅读 · 0 评论 -
自学Android开发 Java和Android SDK的Base64
一、问题在Android开发使用AES加密时,会发现Android SDK自带了Base64,但是它加密的结果和Java JDK的Base64 不一致,所以造成了Java 服务后端的加密数据,用SDK的Base64无法解密,造成了异常。后来Android 开发也引入了Java JDK的Base64, 但是有API限制 ,必须是SDK API 26(Android 8.0)以上才能使用。使用在Android 开发项目时不方便兼容处理。最终我的解决方案是直接引用 JDK的Base64。二、JDK Base64转载 2022-06-06 20:20:29 · 1184 阅读 · 0 评论 -
用Java8中的“Function”消灭if...else
在开发过程中经常会使用if...else...进行判断抛出异常、分支处理等操作。这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用Java 8的Function接口来消灭if...else...。if(...){thrownewRuntimeException("出现异常了");}if(...){doSomething();}else{doOther();}Function函数式接口使用注解@Functi...转载 2022-04-15 16:01:30 · 318 阅读 · 0 评论 -
注解@IntDef 替换 Emum
我们定义的类有一个 int 型的状态参数要设置,但我们设置的状态又只能限定在[OPEN=1, CLOSE=2]这两种状态,如果我们要提供一个接口来设置的话,那么一种做法是定义一个Enum枚举来作为参数,这样就能限定参数的取值范围了,但是使用枚举会比常量占用更多的内存。这里可以用注解来处理这种问题,也就是下面要讲的自定义源码注解,这里需要用到一个注解@IntDef,来看下代码: /** * 测试源码注解 */ public class TestSourceAnno转载 2022-04-13 21:05:59 · 613 阅读 · 0 评论 -
JAVA字符串格式化-String.format()的使用
常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格转载 2022-03-28 14:03:47 · 1280 阅读 · 0 评论 -
Google guava工具类的介绍和使用
概述工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。guava的优点:1)高效设计良好的API,被Google的开发者设计,实现和使用2)遵循高效的java语法实践3)使代码更刻度,简洁,简单4)节约时间,资源,提高生产力Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:1)集合 [collections]2)缓存 [caching]转载 2022-03-10 09:53:22 · 817 阅读 · 0 评论 -
吐血整理的Google Guava
一、概述 Guava 是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等提供实用程序方法。<!-- https://mvn转载 2022-03-10 09:48:29 · 2760 阅读 · 0 评论 -
JAVA日期加减运算
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//今天的日期 calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+1);//让日期...转载 2022-03-01 10:17:45 · 17190 阅读 · 1 评论 -
JAVA 日期Date加减整理
一、充分利用SimpleDateFormatimport java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateForma转载 2022-03-01 10:15:37 · 716 阅读 · 0 评论 -
ImmutableMap的使用
ImmutableMap:一个不可变集合java中的Immutable对象:简单地说,如果一个对象实例不能被更改就是一个Immutable的对象,Java SDK提供的大量值对象,比如String等都是Immutable的对象。创建ImmutableMap:Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().build();在创建时放值:Map<St.转载 2021-07-22 19:58:34 · 901 阅读 · 0 评论 -
Java中如何实现不可变Map详解
前言有时最好不允许修改java.util.Map, 例如跨线程共享只读数据。为此,我们可以使用Unmodifiable Map或Immutable Map。在这个快速教程中,我们将看到它们之间的区别。然后,我们将介绍可以创建不可变Map的各种方法。下面话不多说了,来一起看看详细的介绍吧不可修改与不可变Unmodifiable Map其实是一个可以修改的map的包装器,不允许直接修改它。 1 2 3 4 5 6 M..转载 2021-07-22 19:55:33 · 1559 阅读 · 0 评论 -
maven报错Missing artifact jdk.tools:jdk.tools:jar:1.8解决方案
在eclipse中,遇到了Missing artifact jdk.tools:jdk.tools:jar:1.8。其他也没有报错,感到很奇怪。因:tools.jar包是JDK自带的,pom.xml中以来的包隐式依赖tools.jar包,而tools.jar并未在库中,只需要将tools.jar包添加到jdk库中即可。解决方案:在pom文件中添加如下代码即可。 <dep...转载 2018-08-10 00:26:07 · 1226 阅读 · 0 评论 -
Missing artifact jdk.tools:jdk.tools:jar:1.8的解决方法
使用Scala IDE build of Eclipse SDK 创建了一个Hadoop的MVEN开发工程之后,引入了相关的依赖包 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> <groupId>org.ap...转载 2018-08-10 00:19:07 · 1400 阅读 · 0 评论 -
JDK8下载|JDK1.8下载可选择window版和linux版
摘要:Oracle甲骨文公司Oracle公司如期发布了Java 8正式版!现在你就可以下载Java 8正式版了,同期发布的还有JDK 8。全新版本带来诸多新特性,可选linux和window版的可选32位和64位下载说明文档:判断系统是64位还是32位 Linux下选tar.gz好还是rpm1.windows版JDK1.8 64位下载点击下载:jdk-8u11-windows-x642.win...转载 2018-07-03 15:03:52 · 17165 阅读 · 9 评论