Java基础
文章平均质量分 53
yiyuzz
这个作者很懒,什么都没留下…
展开
-
List中的toArray方法
toArray(T[] a):首先传输指定类型T的数组,如果传输的数组长度小于list长度,直接返回T类型的数组,传入的a数组会被弃用,返回数组是经过空间压缩的;以ArrayList为例,toArray方法有有参数和无参数两种形式,无参比较简单,直接list.toArray()可以得到一个新数组,但是类型是Object[],大部分时候我们不需要这种类型的数组,而是需要和List的范型对应,所以toArray(T[] a)会是更好的选择。ArrayList toArray方法源码。原创 2023-04-26 15:43:33 · 909 阅读 · 1 评论 -
配置文件中敏感信息的简单加密(Springboot)
加载好插件后可以看到有很多可用的命令,最简单的加密命令如下所示,意思是把字符串theValueYouWantToEncrypt加密,密钥是the password,执行这个命令结果会打印在输出流中;那解密就是decrypt-value,反着操作就行了。稍微复杂一点就是我想直接让它识别项目中我要加密的数据,那默认路径是src/main/resources/application.properties,我们要修改一下路径,然后还要用DEC(…)将需要加密的数据括起来,例如。我这里是用maven插件来调用。原创 2022-12-27 17:14:45 · 1023 阅读 · 0 评论 -
JDBC如何破坏双亲委派机制
JDBC的注册会涉及到java spi机制,即Service Provideer Interface,主要应用于厂商自定义组件或插件中;简单说就是java来定义接口规则和方法,厂商实现具体逻辑,每家厂商根据自己产品实现的逻辑肯定不相同,但上层直接使用接口时感觉不到取别。就比如java.sql.Dirver。java spi的具体约定:厂商在自己被引用的jar包下的META-INF/services目录下创建一个以服务接口命名的文件,然后指向具体实现类。在装载的时候,ServiceLoader这个类就会扫描对原创 2022-12-27 15:26:18 · 1940 阅读 · 0 评论 -
使用JavaMailSender进行邮件发送
以前发送邮件可能大家需要使用javax下的mail包,自己创建session,mimemessage这种;其实spring帮我们集成了一下,让发邮件变的更简单、可靠。原创 2022-08-18 09:46:29 · 6829 阅读 · 1 评论 -
MybatisPlus中Enum的使用(MybatisEnumTypeHandler)及遇到的问题
下面是TypeHandlerRegistry部分代码,其中javaTypeClass会根据是否配置javaType进行变化,如果javaType=true,那会按照实体类或者xml对应字段的java类型获取,如果javaType=false,那这里有可能是Object或者null,对于MybatisEnumTypeHandler来说应该是Object(我调试的时候是这样)上面的第三步不用了,然后又分两种情况,BaseMapper方式和Mapper.xml方式,其实主要是看你的sql语句在哪。...原创 2022-08-02 14:27:58 · 7795 阅读 · 0 评论 -
Docker Compose 编排Nginx+Vue+Springboot项目实例
Docker Compose首先分别部署前后端项目,确定没问题之后使用compose统一管理Vue项目部署到nginx使用docker镜像打包前端项目npm run build #我是用的vue2版本,使用此命令打包,生成到dist文件夹下上传并编写配置文件接下来要把这个包上传到服务器,我用的是FileZilla,目录结构如下图所示路径是/usr/local/nginx/vue,这里放创建nginx镜像所需要的文件,dist就是打...原创 2022-04-06 19:05:20 · 1928 阅读 · 0 评论 -
Java分页查询报错 Every derived table must have its own alias
今天在项目中增加了一个简单的分页查询数据的接口,出现了Every derived table must have its own alias这个报错,看起来是个别名问题,但是sql很规范,该有的别名也都有,而且不加分页是能直接查询成功的,所以基本可以确定是分页插件的问题。仔细观察了sql查询的日志发现,这个ROWNUM和ROW_ID很奇怪,这两个是Oracle分页的时候用到的,mysql应该是使用limit来进行分页。由于是微服务项目,所以mybatisplus的分页配置在公共模块,果然是配原创 2022-03-17 16:11:02 · 3335 阅读 · 2 评论 -
Java 项目中的全局异常处理
全局处理我们可以采用Spring的ExceptionHandler,通过字面简单理解就是异常事件捕获,那实际上用起来也比较简单方便。我们开发程序异常处理是不可避免地,实际上java 对于运行时异常的打印信息已经足够详细,但是对于前后端分离或者代码规范的严格要求的项目,进行统一的异常封装是非常有必要的,这样前端可以直接通过状态码和错误消息获取到不同类型的异常,也可以不做处理直接展示。其实还是通过AOP的思想来进行异常捕获,这个我没有深入研究源码,所以没法展开来说。简单看下这个注解@T..原创 2022-03-10 17:42:07 · 2101 阅读 · 0 评论 -
关于lombok的@AllArgsConstructor序列化时注意的问题
今天对实体类进行修改的时候发现的一个问题,我需要实体类作为返回参数,这个类上面有@AllArgsConstructor注解但是运行之后重新加载类,会报错com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.cicc.fx.vo.DealSummarySettleFeignRspVo` (no Creators, like default construct原创 2022-03-02 15:29:22 · 1218 阅读 · 0 评论 -
84452抽签Java版
import java.util.HashMap;import java.util.Map;import java.util.Random;public class Test { public static void main(String[] args) { Map<Integer, Map<Integer,String>> map = new HashMap(); Map<Integer,String> A = .原创 2022-02-04 20:23:54 · 650 阅读 · 0 评论 -
Tomcat,jetty,netty是什么?
平时工作中用Tomcat比较多,所以对这个比较熟悉,最近看了jetty和netty的一些资料,记录一下个人的看法。Tomcat:是一个重量级的Web服务器加Servlet容器,Web服务器是说它可以将网络IO通过NIO(不是之前的BIO了)的方式解析成HTTP请求(AJP好像也可以),然后交给实现了Servlet协议的Servlet容器去处理,最后到达应用的就是request和responsejetty:Tomcat能做到的事情,jetty一样能做到,它内部结构比Tomcat更简单,是一个轻量级的W原创 2021-05-22 18:53:37 · 2897 阅读 · 0 评论 -
Java 泛型机制详解(1)-简单泛型使用
一、为什么要使用泛型其实新技术的出现都是原有的技术不能够满足需求了,或者是原有技术有比较大的弊端,大家都用的不舒服,那泛型也是这样的。老生常谈的ArrayList 在没有泛型之前是这样的public class ArrayList { private Object[] elementData; public Object get(int i) { . . , } public void add(Object o) { . . . }}现在是这样的p...原创 2021-05-18 14:26:44 · 165 阅读 · 3 评论 -
java将byte数组转换为16进制字符串
import java.io.UnsupportedEncodingException;public class CoderTest { final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static void main(String[] args) { String name = "我是yiyuzz"; try { .原创 2021-04-28 18:06:31 · 592 阅读 · 0 评论 -
springboot+vue+nginx简单项目的开发和部署
工作不是很饱和的情况下,就有时间去研究一下技术上的东西,然后打算写一篇比较长的啰嗦的文章来记录一下一、准备工作首先要有一台云服务器(其他替代的能作为服务器的设备也行,最好是linux),然后我是提前配置好了java环境,OPENJDK或者ORACLEJDK都行,这两个的区别自行百度吧。二、后端编写新建一个springboot项目,然后可以用默认的起步依赖就行,我是多加了一个swagger的依赖 <dependency> <grou原创 2021-04-22 15:08:32 · 1158 阅读 · 0 评论 -
Java中InputStream转化为MultipartFile类型
由于工作需要,涉及到文件类型的转化,实际上MultipartFile有方法可以直接转化为InputStream,但是并没有办法可以从InputStream直接转化为MultipartFile。网上的资料大概看了下,有两种简单的方案CommonsMultipartFile和MockMultipartFile,不过对我来说都不适用,因为我不能添加依赖。我决定先看下MultipartFile怎么转化成InputStream。public class CommonsMultipartFile impl原创 2021-04-15 09:46:44 · 26901 阅读 · 5 评论 -
JAVA基础 equals()方法和HashCode()方法的关系
能看到这篇文章的帅哥美女们大概是疑惑一句话:为什么重写equals时必须重写hashCode方法?我研究这个问题也是研究了好久,虽然我是个新手,但是我觉得这句话本身就不对,下面我说说我自己的理解,如果有不对的地方还望指出。实现equals的五大原则就不谈了,相关资料有很多。直接上代码package entity;import java.util.Objects;public class Item { private String description; private原创 2021-01-14 15:50:46 · 106 阅读 · 0 评论 -
java学习笔记----异常处理机制
处理异常假设一个java程序在运行过程中出现了一个错误,这个错误可能是文件包含了错误信息,或者网络连接出现问题,也有可能是使用了无效的数组下标,或者是引用了一个没有被赋值的对象。如果由于出现错误导致某些操作没有完成,程序应该:返回到一种安全状态,并能够让用户执行其他的一些命令 允许用于保存所有操作的结果,并已妥善的方式处理程序异常处理的任务就是将控制权从从错误发生的地方转移到能够处理这种情况的错误处理器,针对不同的错误应该有不同的处理方式,所以要把错误和问题进行分类。异常分类在jav原创 2020-11-28 15:19:27 · 200 阅读 · 0 评论 -
java学习笔记-clone()方法相关知识
克隆的意义如果一个对象A是引用类型,那么A中保存的信息是这个对象的堆地址,在程序中,有可能会出现这样的情况:某时某刻,我需要两个状态相同的对象,但是在此后的执行过程中分别执行不同的程序逻辑,然后得到两个状态不相同的对象。如果这时使用 B = A来得到A,B两个对象,是不行的,因为这两个对象实际上在内存中是指向同一个地址,之后的逻辑也针对这一个地址中的对象进行操作。这时候就需要用到clone()方法。简单实现克隆clone()方法是Object类中的一个受保护的,native的方法,并且要抛出一个原创 2020-11-25 18:55:42 · 379 阅读 · 0 评论 -
Java反射机制-初步(学习笔记)
反射机制反射的定义能够分析类能力的程序称为反射(reflective),Java提供了一个反射库(reflection library)用来方便编写可以动态操作Java代码的程序反射能用来做什么(后面依次介绍)在运行时分析类的能力在运行时查看对象实现通用的数组操作代码利用Method对象一、CLASS对象反射中最基础也是的就是要了解Class对象,如何使用以及它的含义。Java运行时系统始终为所有的对象维护一个运行时的类型标识,这个标识跟踪着每个对象所属的类,虚拟机通原创 2020-11-03 16:28:16 · 548 阅读 · 0 评论