![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 65
一位即将成功的野男人
这个作者很懒,什么都没留下…
展开
-
JAVA几种IO方法的性能体现/对比,信息来自SCI期刊文章
TIPS:此篇文章信息来源于:CONCURRENCY AND COMPUTATION: PRACTICE AND EXPERIENCE期刊杂志作者:Dan Bonachea, Phillip Dickens and Rajeev ThakurSci-Hub | High-performance file I/O in Java: Existing approaches and bulk I/O extensions. Concurrency and Computation: Practice a翻译 2022-03-20 19:34:13 · 472 阅读 · 0 评论 -
为什么反射会很慢(和正常的实例化对象相比)
当你去正常的实例化一个对象的时候,和你反射出一个对象的时候,你会发现,后者比前者要慢很多很多.这是为什么呢?有外国网友在反射的性能上做了一个简单的测试,C#版本反射的性能测试原代码链接:Tests performance of Reflection · GitHub用反射做的基本事情做了一些性能测试这些测试案例是:- 创建一个对象- 调用一个有两个参数的方法- 设置一个对象的4个属性他实现了有反射和无反射的每个测试案例,这样我就可以比较结果。在测试中,使用了Obje..原创 2022-02-17 22:36:59 · 1761 阅读 · 0 评论 -
如果一个父类定义了一个无参数的构造函数,是否有必要调用super()?
Is it necessary to call super() if a Parent class defines a no-argument constructor?在任何条件下,构造函数的第一行都必须是对父类构造函数的调用。也就是说,每次你创建一个子类的实例之前,都会在内存中创建一个父类的新实例。默认构造函数 - 是一个无参数的构造函数,如果类没有提供任何构造函数,编译器会自动生成。默认构造函数和你可以自己添加到类中的无参数构造函数之间没有任何区别。如果一个父类有一个无参数的构造函数(不管它是原创 2022-02-15 22:28:40 · 533 阅读 · 0 评论 -
为什么我们重写equals方法时也要重写hashcode?
Why do I need to override the equals and hashCode methods in Java?这个问题国内讨论出的答案各式各样,于是我去Stackoverflow中查看了一下这个问题的解国外对于override the equals and hashCode的解释更多的是contract(合同,契约的意思),也就是说,重写equals必须重写hashcode已经达成了一种契约(或者说是定理?)本篇文章来自于对该评论的解析Why do I原创 2022-02-13 17:26:47 · 593 阅读 · 0 评论 -
JVM调优之使用JProfiler工具分析java堆内存溢出OOM原因
JProfiler分析结果展示配置首先我们在IDEA安装JProfiler插件之后下载JProfiler的软件(有破解版,自行上网搜即可)然后在IDEA的设置里面找到Tools的JProfiler,设置文件目录对应到exe文件,与你刚安装的软件的目录一致配置好之后,开始调试我们先输入一下代码,设置一个ArrayList,无限制往里面添加大对象public class Hellow { Byte[] arr = new Byte[1 * 1024原创 2022-02-07 18:05:19 · 1607 阅读 · 0 评论 -
Java小白手撕LRU算法,竟讲的这么通透.
什么是LRULRU全称是Least Recently Used,即最近最久未使用的意思LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰图示映射关系增删改代码问题解释我们基本实现原理是通过Hashmap+双链表(Entry)实现的.为什么用hashmap+双链表,而不是单独的双链表? 原因:用hashmap找双链表比较快,..原创 2022-01-28 16:43:17 · 1330 阅读 · 0 评论 -
final的几个注意点讲解(作者亲测)
首先我们测试final对非静态变量和方法的影响有final的情况下:public class FinalTest { final int a = 1; final String s = "sss"; final void haha() { System.out.println("haha"); System.out.println(a); } public static void main(String[] args) {原创 2022-01-20 19:45:20 · 504 阅读 · 0 评论 -
基于JDK1.8源码讲解Integer128陷阱
什么是128陷阱?以下代码i==i1输出true,说明i和i1的对象地址相同f==f1输出false,说明f和f1对象地址不相同public class Test { public static void main(String[] args) { Integer i=127; Integer i1 = 127; System.out.println(i == i1);//输出true Integer f = 128;原创 2022-01-20 18:05:19 · 193 阅读 · 0 评论 -
阿里面试题之变量、代码块、构造器、静态变量,静态代码块的初始化执行顺序讲解
震惊!阿里面试的一道题,竟然挂了n多个面试生!原创 2022-01-20 17:12:51 · 464 阅读 · 0 评论 -
如何从零用Java构建一个简单HashMap
类里面有一个静态类<泛型>,静态类<泛型>的变量为hash值,key和value,还有下一个节点的地址.还有一个初始容量池为16的Entry[]数组,里面主要装Entry.还有构造函数,赋值hash,key,value用的.还有set()和get()方法,setHashCode(),toString()方法.这几个方法的作用:setHashCode(K key)方法里:通过key计算散列值set(K key, V value)方法里:我们需要使用s..原创 2022-01-17 01:15:52 · 1276 阅读 · 0 评论 -
String,StringBuffer,StringBuilder的区别以及源码分析
String,StringBuffer,StringBuilder大体区别String是final修饰的,不可变的,每次操作都会产生新的String对象StringBuffer和StringBuilder都是在原对象上操作StringBuffer是线程安全的,StringBuilder线程不安全的StringBuffer方法都是synchronized修饰的性能:StringBuilder>StringBuffer>String应用场景:经常需要改变字符串内容原创 2022-01-04 16:48:34 · 369 阅读 · 0 评论 -
基于JDK1.8源码讲解ArrayList扩容机制
现在有两组ArrayList,分别是list1和list2 List list1 = new ArrayList(); list1.add(1); list1.add(14); List list2 = new ArrayList(list1);先说list1的情况,我们点进ArrayList查看ArrayList构造器(无参),如下会构造一个默认容量为10的ArrayList[],即Object[],此时的size为0(如..原创 2022-01-01 15:23:23 · 484 阅读 · 0 评论 -
基于SpringBoot的SSO单点的登录配置
可以先参考:XXL-SSO官方使用手册实在不会的再参考本篇文章源码地址:第二个集中项目: 老王的项目首先我们在所需要的两个(及以上)的项目pom.xml文件中引入依赖 <!--SSO核心--> <!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-sso-core --> <dependency> <groupId原创 2021-12-26 17:22:05 · 1231 阅读 · 0 评论 -
权限AOP(AuthorityAop)实现RBAC方法各角色权限访问
源码地址:四组项目: 青城博雅四组视频讲解:基于SpringBoot的权限字符串和AOP注解拦截验证权限字符串以及布隆过滤器的使用问题_哔哩哔哩_bilibili首先写注解package com.fourthgroup.schoolmanagementsystem.annonation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.a原创 2021-12-15 16:55:57 · 1329 阅读 · 0 评论 -
关于debug调试在Controller中形参PageWeb<T>(即分页封装泛型)的pageNum,pageSize赋值问题
问题:控制台显示我们查出来值了,但是最终返回的是数据是null问题原因:PageWeb的pageNum和pageSize的值受前端值传递影响,pageNum,totalSize受mybatisPlus的page方法影响,从而造成数据显示不出来Controller类中代码@Slf4j@RestController@RequestMapping("notice")public class NoticeController { @Resource private.原创 2021-12-15 16:09:14 · 1421 阅读 · 0 评论 -
Java面试题:final修饰的成员变量、类变量和对象,有几种初始化方式
final修饰的对象初始化时分两种情况:第一种:修饰成员变量时有3种初始化方式:1,在定义变量时直接赋值 2,声明完变量后在构造方法中为其赋值 3,声明完变量后在构造代码块中为其赋值第二种:修饰类对象(静态对象)1,在定义类变量时直接赋值 2,在静态代码块中赋值下面我们建立一个例子看看详细情况:public class TestFinal {// 一、使用Final修饰符修饰的类的特点:该类不能有子类;//// 二、使用Final修饰符修饰的对象的特点:原创 2021-12-11 20:32:20 · 952 阅读 · 0 评论 -
多线程的悲观锁和乐观锁问题
进程:进行资源分配的最小单位线程之间谁也不会等谁.谁先抢到cpu谁就先进行计算时间片轮转算法:cpu分配给每一个线程他所能执行的时间.写入内存需要占总线64bit多线程代码package wangyi0820;//z主方法public class MultiDemo { public static void main(String[] args) { ThreadNew tn1 = new ThreadNew(1); Threa...原创 2021-12-11 16:41:46 · 348 阅读 · 0 评论 -
JVM结构和JVM的架构模型以及JAVA生命周期介绍
JVM结构多线程共享:堆heap和方法区每线程独有一份:java栈,本地方法栈,程序计数器JVM的架构模型java编译器输入的指令流基本上是一种基于栈的指令集架构栈架构特点: 在内存层面,不需要硬件支持,可移植性更好,更好的实现跨平台 避开了寄存器的分配难题,使用零地址方式分配(每次取栈的最上层,就不需要地址) 指令集小,指令多,执行不如寄存器 另一种是指令集架构则是基于寄存器的指令集架构寄存器架构特点:(传统PC以及Android的dalv..原创 2021-12-10 21:37:48 · 83 阅读 · 0 评论