java基础
文章平均质量分 70
java基础夯实
chihaihai
你懂的越多,也就懂得的越少
展开
-
java基础---粗心导致int数值溢出导致Math.log10()运算NaN
这里很愚蠢的没有思考直接传入了运算值导致(1000 * 60 * 60 * 24 * 31)的结果只能是一个int,但是运算结果又超过了int所能接受最大值。int型数据在二进制里面是有固定位数的,当数字超过int数据时,二进制的最前面的位数也就是符号位会发生变化,所以就变成负数了。再次提醒自己不要犯这种低能的错误TT,只需要把其中一个参数改为double或者强转下让计算结果用double接收即可。因为log运算不能传入负数就会导致运行结果为NaN。今天犯了一个幼儿园水平的错误,真实不该TT。原创 2022-10-26 18:38:15 · 341 阅读 · 0 评论 -
JMH---JAVA基准测试工具(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言JMH是Java Micro Benchmark Harness的简写,是专门用于代码微基准测试的工具集(toolkit)。JMH是由实现Java虚拟机的团队开发的,因此他们非常清楚开发者所编写的代码在虚拟机中将会如何执行。由于现代JVM已经变得越来越智能,在Java文件的编译阶段、类的加载阶段,以及运行阶段都可能进行了不同程度的优化,因此开发者编写的代码在原创 2020-10-23 17:34:20 · 1234 阅读 · 1 评论 -
Gradle: 修改默认的Build配置文件名
Gradle默认使用build.gradle作为默认的配置文件文件名。如果我们在build.gradle文件中编写代码,那么我们在运行任务的时候,不需要指定build文件名。我们也可以不使用build.gradle,而用另外的文件名来创建build配置文件。但是更改过后需要在 settings.gradle文件中,给rootProject修改属性值buildFileName:。这样gradle才识...原创 2020-03-10 16:13:05 · 3208 阅读 · 0 评论 -
JS---java中Long类型转js Number精度丢失问题导致的坑
文章目录场景解决场景在做订单业务时mysql中选择了bigint,java中使用long类型映射。订单长度19位,如1395005294286733314。但是在swagger中测试时每次返回的数据都是1395005294286733300,而我数据库中恰巧存在1395005294286733300这个值让我第一时间误判没有考虑到是精度损失的问题。使用postman请求接口却得到了正确结果。解决通过观察network中相应数据才终于恍然大悟并不是请求被过滤导致响应结果被更改,而是精度丢失导致后原创 2021-05-22 22:44:24 · 1269 阅读 · 0 评论 -
Swagger3 注解使用(Open API 3.0)
文章目录前言一、swagger 3 的使用SwaggerSpringFox3.0 相关特性SpringDoc二、从 spring-fox 迁移到 springdoc三、使用 swagger3 注解代替 swagger2 的(可选)前言Swagger2(基于openApi3)已经在17年停止维护了,取而代之的是 sagger3(基于openApi3),而国内几乎没有 sagger3使用的文档,百度搜出来的都是swagger2的使用,这篇文章将介绍如何在 java 中使用 openApi3(swagge转载 2021-04-03 14:56:42 · 16033 阅读 · 7 评论 -
java基础---String长度限制透彻解析
文章目录前言一、String源码分析二、编译期常量池限制1.引入库2.读入数据总结前言在我们工作和学习中基本离不开Sring的数据类型,虽然我们经常接触到它但是一般很少会有人关心String是否会像int,long一样有范围限制。如果有的话又会是多少呢?首先我们直接揭晓答案,String类型是有长度限制的并且它在变异环境和运行时环境限制是不同的。下面我们会详细展开分析。一、String源码分析首先我们进入到String源码中看看是否能找到一些有用的线索,是否有直接对长度的限制或定义。String类原创 2020-09-18 16:28:12 · 2455 阅读 · 2 评论 -
java基础---正则表达式Pattern和Matcher类用法
java.util.regex是一个从JDK1.4开始提供的正则表达式工具包,包括两个类Pattern和Matcher Pattern,Pattern是一个正则表达式经编译后的表现模式。Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。PatternPattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。该方法接受一原创 2020-07-16 22:35:13 · 886 阅读 · 0 评论 -
JAVA基础---NIO---Buffer
概念:在NIO中所有的数据都是用缓冲区处理的,任何时候访问NIO中的数据都是通过缓冲区操作。它本质上是一个数组,比如我们最常使用的Byte Buffer其实就是一个Byte数组。它还可以使除了boolean外很多其它数组类型,但是它不完全仅仅是一个数组,缓冲区还对数据提供了结构化访问以及维护读写位置等信息。关键属性:// Invariants: mark <= position <...原创 2020-04-17 18:21:06 · 167 阅读 · 0 评论 -
jsva基础---String.format()与MessageFormat.format()
基本使用: System.out.println(String.format("字符串:%s","这是一串字符")); System.out.println(String.format("字符:%c",'c')); System.out.println(String.format("布尔:%b",true)); System.out.println...原创 2020-03-29 01:06:10 · 936 阅读 · 0 评论 -
java---isAssignableFrom方法解释
isAssignableFrom方法是native方法,它的作用是用来判断两个类的之间的关联关系,也可以说是一个类是否可以被强制转换为另外一个实例对象:/** * Determines if the class or interface represented by this * {@code Class} object is either the same as, or i...原创 2020-03-09 17:17:52 · 3734 阅读 · 0 评论 -
java---泛型深入理解总结
最近在遇到下面这段代码时,触及到了知识盲区。因此产生了一些困惑,经过一番查找和研究发现以前对泛型的理解还是太浅显了。之停留在怎么用的阶段,并没有真正理解泛型存在的意义和原理。 Class<T> clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeAr...原创 2020-03-07 22:34:23 · 2618 阅读 · 4 评论 -
entity、model、domain三个包之间的区别
(1)、entity(实体)entity的意思就是实体的意思,所以也是最常用到的,entity包中的类是必须和数据库相对应的,比如说:数据库有个user表,字段有long类型的id,string类型的姓名,那么entity中的user类也必须是含有这两个字段的,且类型必须一致。不能数据库存的是long类型,user类里的属性是string类型。这样做的好处是保持实体类和数据库保持一致,另外,当用...转载 2020-02-20 22:54:18 · 1986 阅读 · 0 评论 -
JAVA基础---ThreadLocal底层原理剖析
111原创 2019-10-17 01:10:18 · 290 阅读 · 0 评论 -
Java基础---JVM垃圾回收机制
一些基础概念问题就不写了此处略去一万字,一个小萌新的自我救赎之路哈哈哈1、GC算法(垃圾回收器是算法的落地实现)文章目录1、GC算法(垃圾回收器是算法的落地实现)1.引用计数2. 标记清楚...原创 2019-09-04 22:41:38 · 452 阅读 · 3 评论 -
JAVA基础---JVM基础命令参数
JVM基础命令巩固————————————————版权声明:本文为CSDN博主「chihaihai」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://me.csdn.net/chihaihai.第一次写博客好像不太会用的样子 ,随便写点东西熟悉一下。常用jvm状态查看命令jinfo: 可以输出并修改运行时的java 进程的...原创 2019-09-04 15:25:35 · 635 阅读 · 0 评论 -
JAVA基础---synchronize底层证明
网上synchronize分析太多了,但是真正去证明的很少。今天本小白将亲自去验证下网上各种大神的说法是否正确。百度前面的几篇文章我都看了下,感觉写的都差不多偏向于概念性的分析。没看到有人真的去验证种种说法是否真的正确。对象组成在分析synchronize时肯定避不开对象头这个最关键的点,这里我们使用openjdk提供jol-core包就能帮助我们打印出对象信息方便我们下面的判断。我这里随便创...原创 2019-09-22 00:51:28 · 547 阅读 · 0 评论 -
JAVA基础---ArrayList源码分析
构造方法 transient Object[] elementData; // non-private to simplify nested class access private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayList() { th...原创 2019-09-23 18:34:09 · 102 阅读 · 0 评论 -
JAVA基础---CAS
什么是CAS?public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; // setup to use Unsafe.compareAndSwapInt...原创 2019-09-10 01:24:36 · 155 阅读 · 0 评论 -
JAVA基础---类加载机制
下面我们把这几步拆分开来,进行下详细的研究一、加载1.要加载我们首先要获取到一个二进制字节流(本地系统、数据库、网络、jar等等渠道)2.静态存储结构转化为方法区的运行时数据结构(个人理解就是把生成的字节码,即类信息载入到方法区)3.在heap里生成一个类对象,作为方法区的访问入口。(根据方法区的信息产生一个实例对象)二、验证1.验证class文件的标识:魔数(clas...原创 2019-09-07 00:16:58 · 606 阅读 · 1 评论 -
JAVA基础---Class文件结构
本来想回顾下类加载机制,但是感觉学习类加载机制之前应该先了解下类文件结构,所以就有了这篇文章。来次够先学习起来祈祷明天获得一个面试机会呀!!!首先思考一个问题: 是不是只有java编译器才能完成 java到 .class字节码文件的过程?(突然想来个原谅色) ...原创 2019-09-06 01:46:16 · 335 阅读 · 0 评论 -
JAVA基础---HashMap全解析
为了能更透彻的理解hashMap的设计原理及优化过程这里我们将从Java7hashMap->Java7 ConcurrentHashMap->> Java8 HashMap ->Java8 ConcurrentHashMap来一步步的深入。Java1.7 HashMap这里1.7分析可能不会那么面面俱到,因为我们学习1.7的目的也是为了更加深刻的理解1.8的很多设计概念...原创 2019-09-24 01:08:41 · 255 阅读 · 0 评论 -
JAVA基础---BIO/NIO/AIO详解
BIO:blocking即阻塞的IO,何为阻塞IO先不解释,我们传统的socket通信就是基于BIO,下面是我学习时的小Demo一起看一下。/** * @author chihai * @ClassName TraditionalSocketDemo * @Description TODO * @CreateTime 2019/4/29 11:56 * @Version V1.0 ...原创 2019-09-11 01:35:46 · 314 阅读 · 0 评论