自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 @RequiredArgsConstructor 省略 @AutoWired 注解

在学习的时候发现了@RequiredArgsConstructor 注解,是Lombok下的注解,对此做笔记。其注解的作用是省略我们项目 service层中 mapper 上的注解@AutoWired;或者是 controller 层中的 service 上的。以下为例:@RestController@RequiredArgsConstructorpublic class TestController { @NonNull AService aService; @Not

2021-03-31 22:42:50 818

原创 WSL 安装及其中 Java 环境配置

WSLWindows Subsystem for Linux(简称WSL)是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu 14.04 “Trusty Tahr” 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。—百度安装前提将电脑设置为开发者模式电脑设置 => 更新和安全 => 开发者模式开启 Linux

2021-01-08 15:15:29 8912 1

原创 thread “main“ java.lang.IllegalStateException: Cannot read while there is an open stream writer

Exception in thread “main” java.lang.IllegalStateException: Cannot read while there is an open stream writer解决问题:将打开的流关闭即可。初次在进行处理 PDF 文件编辑时,由于粗心总是忘记关闭打开的 PDPageContentStream 流,留下笔记。愿世上没Bug...

2021-01-07 10:58:47 1999

原创 GraalVM 安装及编译项目为可执行 exe 文件

GraalVM官网:www.graalvm.org什么是GraalVMGraalVM 入门 – 高性能的多语言运行时。 它旨在加速用Java和其他JVM语言编写的应用程序的执行,同时还提供JavaScript,Ruby,Python和许多其他流行语言的运行时。 GraalVM的多语言功能使您可以在一个应用程序中混合多种编程语言,同时消除任何外语调用成本。(机译)不使用以往的JIT,采用的是AOT编译。安装方式在官网中找到对应的需求(我选择的是Community)下载地址根据需求选择

2020-12-30 16:25:14 3220 2

原创 三次握手都经历了什么?

三次握手在建立连接过中,了解下有使用到的知识点,其中 SYN、ACK 和 FIN 为 TCP 的 FLAG 位,SYN(Synchronize Sequence Numbers)用于建立连接时的同步信息;ACK(Acknowledgement)用于对收到的数据进行确认,所确认的数据由确认序列号表示;FIN(Finish)表示后面没有数据需要发送,通常意味着所建立的连接需要关闭了。服务器需要客户端发起建立连接请求时先打开某个端口等待数据传输,否则将无法正常建立连接。我们将 A 机器表示客户端,B 机器表

2020-09-14 16:59:09 140

原创 基础:面试常问,你知道 Integer 吗?

包装类型——学习记录值得关注的是各个包装类的缓存大小:Boolean:使用静态 final 变量定义,valueOf()就是返回这两个静态值Byte:范围 -128~127,全部缓存Short:范围 -32768 ~ 32767,缓存范围是 -128~127Character:范围 0~65535,缓存范围是0~127Long:范围 [-263, 263-1],缓存范围是-128~127Integer:范围 [-231, 231-1],缓存范围是-128~127,但是由于是应用最广的数据类型

2020-09-13 22:18:45 181

原创 重写 hashCode 为什么还需要重写 equals方法

为什么重写hashCode 还需要重写 equals方法(或者两者反过来说)众所周知,根据生成的哈希码将数据离散开来,可以是存取元素更快。调用 Object.hashCode() 生成哈希值;由于比可避免地会存在哈希值冲突的情况,因此当 hashCode 相同时,还需要再调用 equals 进行一次值的比较;但是,若 hashCode 不同,将直接判定 Object 不同,跳过 equals,这加快了冲突处理效率。首先可以了解下,hashCode 是一个本地方法,其相关源码:VM_ENTRY(j

2020-09-12 16:37:46 1412 1

原创 常问到 equals 与 == 有什么区别?

介绍一下 equals 与 == 的区别:==:比较的是变量存放在堆内存的对象的地址,判断两个对象的地址是否相同,是否指向同一个对象。也就是判断引用是否相同。equals()不能用于基本类型的比较;是对字符串的内容进行比较对于基本类型,==比较的是值; 对于引用类型,==比较的是地址;String a = "abcd";String b = "abcd";if (a == b) { System.out.println("true"); // 当然是true啦} else

2020-09-11 23:44:28 286

原创 Java 为什么无法真正意义上开启一条线程?

线程可根据侧边目录选择阅读1、线程与进程线程与进程相似,但线程是一个比进程更小的执行单位,它与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。进程在其执行的过程中可以产生多个线程。区别:进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程和进程的不同在于基本上各个进程是相互独立的,而各线程则不

2020-09-10 17:17:27 254

原创 Java的四种引用,强弱软虚到底有所不同

强度依次降低强引用 Strong Reference:最为常见,比如new一个对象,这样的变量声明和定义就会产生对该对象的强引用。只要求强引用指向,并且 GC Roots 可达,那么 Java 内存回收时,即使濒临内存耗尽,也不会回收该对象。软引用 Soft Reference:用SoftReference类实现,一般不会轻易回收,只有内存不够OOM之前才会回收。主要是用来缓存服务器中间计算结果及不需要实时保存的用户行为。例:// wrf这个引用是强引用,它是指向SoftReference这个

2020-09-09 09:10:45 629

原创 集合线程安全 CopyOnWrite 是什么?

ArrayList什么是ArrayList就不赘述了,主要是在多线程的情况下,线程是不安全的,原因是一条线程在对集合进行遍历,然而另一条却对数组进行修改,那么这样就很容易触发ConcurrentModificationException异常。那么解决线程不安全的方法有:用过时的方法Vactor,同ArrayList一样底层是一个数组,其中大部分方法都被synchronized关键字所修饰,扩容方法与ArrayList不同,是2倍的扩容。用Collections工具类List<Stri

2020-09-08 23:46:51 346

原创 SpringBoot如何配置Druid数据源监控页面

简介什么是Druid?Druid是阿里巴巴开发的,其号称为监控而生的数据源。Druid是目前最好的数据库数据源,它在功能、性能、扩展性方面,都超过其他数据库连接池,比如dbcp、c3p0、BoneCP、Proxool、JBoss DataSource。SpringBoot上配置Druid在SpringBoot上配置相当简单,只需3步即可。添加druid依赖<dependency> <groupId>com.alibaba</groupId> &

2020-09-06 23:46:22 1414

原创 Synchronized详细知识点

Synchronized简介synchronized 关键字解决的是多个线程之间访问资源的同步性,它可以保证被它修饰的方法或者代码块在任意时刻都只会是一个线程执行。在 Java 早期1.2版本中,synchronized属于重量级锁,效率低,因为监视器锁(monitor)是依赖于底层的操作系统OS的 Mutex Lock 来实现的,Java 的线程是映射到操作系统的原生线程之上的,所以每次将挂起或者唤醒一个线程,都需要操作系统帮助完成。而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之

2020-09-05 23:51:36 213

原创 详讲Arrays.asList()方法,可别再踩坑

ArraysArrays 是数组对象进行操作的工具类,其中含有对数组的排序、查找、对比、拷贝等操作。通过工具类,我们还可以将数组转换成集合。​数组和集合都是 Java 中用来存储数据的,数组性质单一,方便使用;集合通过泛型达到类型安全,功能强大,而且两者之间还可以进行互相转换。毕竟两者之间有明显不同,在进行转换的时候,如果稍不注意就会出错。转换时分为两种情况:数组转换成集合集合转换成数组错误:java.lang.UnsupportedOperationException举个平时容易遇错的问

2020-09-04 21:44:06 1815

原创 SpringBoot整合Druid遇到org.springframework.jdbc.CannotGetJdbcConnectionException错误

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: url not set最近练习的时候,遇到了这个问题,在解决问题后,还是连续遇到了两次,就为粗心的我记上一笔。在确认自己的配置文件url全部都没错的时候还是报错,那就是在DruidConfig中没有绑定全局配置文件。@Confi

2020-09-03 12:53:31 986

原创 <? extends T>和<? super T>真的会用了吗?

泛型总所周知,泛型的作用是让一段代码可以被不同类型的对象重复使用,但是最大的问题就是,每次只能放置一种类型。如果其中随意的放置类型的话,就是 “破窗理论” ,泛型就失去了类型安全的意义。那么我们想放多种的约束类型该怎么办?其中有两种解决方案:<? extends T><? super T>因为只能给集合赋值,所以我个人的感觉就像是把原本的约束替换掉了,套上了层Buff。(大佬们,如果有什么更好的比喻可以在评论区留言,小弟马上改)接下来的测试以这为前

2020-09-02 15:49:19 441

原创 IDEA下ClassNotFoundException: org.springframwork.web.servlet.DispatcherServlet.class

ClassNotFoundException: org.springframwork.web.servlet.DispatcherServlet.class未找到DispatcherServlet,我遇到的问题可能与大家不同,大家可能是没有添加lib依赖以下方法还可以解决404问题1、大部分都是没有把依赖导入到项目中的问题然后注意:lib包要与classes同级导入后,在重启项目就可以正常运行了。当然前提是导入的配置没有写错。2、而我就遇到了Maven的问题上面的方法我试了很久都没

2020-09-01 12:26:36 454 1

原创 Maven下的Mybaits报错:java.lang.ExceptionInInitializerError

java.lang.ExceptionInInitializerError有很多种,这里讲的是资源过滤问题。Maven由于他的约定大于配置,可能我们写的配置文件,无法被导出或者生效的问题。细查一下也能发现target目录与自己建的目录或者里面的文件不匹配。那么就是资源过滤问题,这是Maven的一个坏毛病,我们只需要以下配置放进pom.xml中即可<!-- 在build中配置resources,来防止我们资源导出失败的问题--><build> <resour

2020-08-30 11:19:14 278 2

原创 IDEA Maven在多模块的时,其中一模块中启动main时报错。错误:找不到或者无法加载主类xxx.xxx.xxx

找不到或无法加载主类 xxx.xxx最近在整理之前的遇到的问题笔记时,发现了这个问题。在启动其中一个模块的是时候总是报错说主类找不到,便开始寻找解决方法。逛了很久找了很多,其中有:(我问题解决的方法在第4个)1.重启编译简单的重启并没有解决我的问题。2.检查版本是否不同Build,Execution,Deployment => Compiler => Java Compiler对应的JDK版本不同也会报错,但是我是对应的,也没有解决问题。3.还查到一个是处理maven的操作

2020-08-29 13:18:13 1043 1

原创 Mybatis绑定问题 ibatis.binding.BindingException: Type interface xxx is not known to the MapperRegistry

org.apache.ibatis.binding.BindingException: Type interface xxx is not known to the MapperRegistry绑定异常:MapperRegistry不知道接口类型xxx主要的原因,还是出在了没有对mapper进行绑定的问题上那么只需要添加上对应位置的Mapper.xml就可以了。例:<mappers> <mapper resource="com/baven/mapper/StudentMapp

2020-08-28 14:11:24 332

原创 超详细之IDEA上如何使用Maven

IDEA-Maven又到了每日欢乐学习时刻呢!还没安装过Maven的伙伴可以点这里学习:超简单的Maven安装学习之前呢,首先要记住:Maven 约定大于配置1、创建Maven项目打开IDEA创建一个Maven的项目(我们不使用模板,因为模板大部分都有局限性的,所以还不如自己配置想要的包)命好名,点击Finish。创建完成后,我们可以四处看看,简单了解一下每个目录文件都是什么作用2、修改IDEA默认Maven其中需要注意的是,IDEA中也有自带的Maven,但是会把包下载到C盘中且

2020-08-27 13:39:04 2424 1

原创 超简单的Maven安装

Maven安装–萌新篇啥是Maven呐?简单来说,就是帮助你管理你的jar包以及帮助你自动导入包的工具,用了就会爱上他(百度上的解释太长了,我就不粘帖了-无敌懒)那么话不多说直接开始安装吧!1、官网:https://maven.apache.org/下载好我们的压缩包之后,解压就可以了。(当然,要管理好自己电脑上的环境变量啊)——供萌新参考2、配置环境变量进入到我们的系统环境变量中配置如下配置:M2_HOME maven目录下的bin目录MAVEN_HOME mave

2020-08-26 16:03:55 336

原创 Bean named ‘XXX‘ is expected to be of type ‘com.test.XXX‘ but was actually of type ‘com.sun.proxy.$P

Bean named ‘XXX’ is expected to be of type ‘com.baven.service.XXX’ but was actually of type ‘com.sun.proxy.$Proxy7’关于这个问题呢,是在我复习Spring aop的时候遇到的。翻了下资料发现才想起来。Spring使用的动态代理有两种:JDK 的 Proxy : 要实现至少一个接口才能对方法拦截CGLIB:使用需要导包cglib.jar、asm.jar我的问题就出在了第一个,以下为

2020-08-25 13:00:49 1959 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除