
java
文章平均质量分 79
Wen先森
记录自己的编程生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RuoYi-Vue前后端分离版集成Cas单点登录
后端1.添加CAS依赖在common模块pom添加spring-security-cas依赖:<!-- spring security cas--><dependency><groupId>org.springframework.security</groupId> <artifactId>spring-security-cas</artifactId></dependency>2.修改配置文件原创 2024-08-12 10:40:17 · 2666 阅读 · 5 评论 -
Java代码忽略https证书:No subject alternative names present
因为第三方使用的是自签证书,所以会出现这种问题。我的解决方案是是强制信任。原创 2024-07-19 10:46:21 · 695 阅读 · 0 评论 -
windows安装Nacos并使用
Nacos(前身为阿里巴巴的Nacos Config和Nacos Discovery)是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发并维护。它提供了一种简单且易于使用的方式来管理微服务架构中的服务注册、发现和配置管理。原创 2024-06-25 15:23:14 · 792 阅读 · 0 评论 -
Java之3DES(Triple DES)加密计算(DESede/ECB/ZeroPadding)
Java环境本身并不直接支持DESede/ECB/ZeroPadding。原创 2024-06-14 09:23:35 · 828 阅读 · 0 评论 -
找不到openjdk-1.8-tools和openjdk-1.8-jconsole
D:/Program Files/Java/jdk1.8.0_221 要按照您实际路径修改该值。是我的Maven仓库地址,根据错误提示可知是在这个文件夹下找不到这两个jar包。因为这两个jar包是1.8的jdk下的包,所以这两个依赖的需要进行修改。原创 2024-06-11 11:40:01 · 827 阅读 · 0 评论 -
SpringBoot生成一维码和二维码
【代码】SpringBoot生成一维码和二维码。原创 2024-04-08 10:16:47 · 354 阅读 · 1 评论 -
SpringBoot +MyBatis批量插入数据
在最近的开发过程中,遇到了往数据库中表中插入大量的数据。有一个全国银行各分行的信息,共计148032条数据文件有8.45MB,因为考虑到数据量比较大,就想着导入到MySQL看一看需要多长时间。原创 2023-09-18 18:29:25 · 1634 阅读 · 1 评论 -
Spring Boot 中调用外部接口的 3 种方式
SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求。调用外部接口是指在应用程序中与其他系统、服务或服务端点进行通信,以获取数据或执行某些操作。这种通信可以通过 HTTP、HTTPS、SOAP、gRPC 等协议来实现。原创 2023-07-03 11:14:18 · 11238 阅读 · 0 评论 -
SpringBoot使用Swagger配置API接口文档
Swagger是一个用于设计、构建和文档化 RESTful API 的开源框架。它提供了一组工具,使得开发人员能够更轻松地定义、描述和测试API接口。具体来说,Swagger包含以下几个核心组件:Swagger规范(Swagger Specification): 定义了一种格式化的API规范,使用YAML或JSON格式,用于描述API的各种细节,包括路由、参数、返回值等。原创 2023-06-27 10:45:41 · 4537 阅读 · 5 评论 -
Spring Boot——@Autowired属性注入问题
例如,使用 Setter Injection 的类可能会存在不完整的状态,如果必需的依赖项没有被设置,可能会导致运行时错误。相比于 Field Injection,Setter Injection 的主要优势是可以避免直接访问类的属性,而是通过 setter 方法来设置依赖项,从而实现更好的封装性。但是,当依赖项过多时,类的属性列表可能会变得很长,降低代码的可读性和可维护性。但是,使用 Setter Injection 的类可能会存在不完整的状态,如果必需的依赖项没有被设置,可能会导致运行时错误。原创 2023-04-27 18:09:32 · 4574 阅读 · 1 评论 -
Spring Boot——优雅的参数校验
当我们想提供可靠的 API 接口,对参数的校验,以保证最终数据入库的正确性,是 必不可少 的活。写了一大堆的 if else 进行校验,或者基础校验,如非空校验、长度校验、大小校验、格式校验;也有一些校验是业务校验,如学号不能重重复、手机号不能重复注册等,非常的不优雅,比起枯燥的CRUD来说,参数校验更是枯燥。原创 2023-04-26 16:30:59 · 1596 阅读 · 1 评论 -
SpringBoot国际化配置
新增国际化文件 messages.properties、messages_en_US.properties、messages_zh_CN.properties。(比如现在国际化文件是xx_zh_CN.properties、xx_en_US.properties,那么basename配置应为是i18n/xx)修改配置application.yml中的basename国际化文件,默认是i18n路径下messages文件。两种方式,一种从参数中获取语言,另一种是从Header中获取语言。原创 2023-04-04 17:50:22 · 2906 阅读 · 0 评论 -
Spring Security初步理解
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。Spring Security是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。一般Web应用的需要进行认证和授权。原创 2023-03-30 11:40:14 · 336 阅读 · 0 评论 -
Java基础——反射
Class也是类,因此也继承Object类Class类对象不是new出来的,而是系统创建的对于某个类的class类对象,在内存中只有一份,因为类只加载一次每个类的实例都会记得自己是由哪个Class实例所生成。通过Class对象可以完整的得到一个类的完整结构,通过一系列的APIClass对象是存放在堆的类的字节码二进制数据,是放在方法区的,有的地方称为类的元数据(包括方法代码,变量名,方法名,访问权限等)原创 2022-12-30 15:32:47 · 531 阅读 · 1 评论 -
Java网络多线程——UDP编程
类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能安全送到目的地,也不确信什么时候可以抵达。DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。原创 2022-12-15 14:14:28 · 872 阅读 · 1 评论 -
Java网络多线程——TCP编程
TCP/IP(TransmissionControlProtocol/InternetProtocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际网络互连网络的基础,简单来说,就是有网络层的IP协议和传输层的TCP协议组成的。TCP编程中Socket虽然只有getOutputStream()和getInputStream(),但是可以利用转换流将字节流转为字符流.协议(tcp/ip)netstat指令。...原创 2022-07-18 10:32:30 · 814 阅读 · 0 评论 -
Java基础——IO流
文件,文件是保存数据的地方,如word文档,excel表格文件,txt文件等。他可以保存图片、声音、视频等数据。文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径 获取文件相关信息 方法名 方法说明 getName() 获取文件名 getAbsolutePath() 获取绝对路径 g原创 2022-07-06 11:59:22 · 324 阅读 · 0 评论 -
Java基础——线程基础
线程相关概念程序程序就是为完成特定任务、用某种语言编写的一组指令的集合。简单来说就是我们写的代码。进程进程是指运行中的程序,比如我们打开一个应用,就是启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用另一个应用,又启动了一个进程,操作系统就会为该应用分配新的内存空间。(简单来讲就是运行几个程序) 进程是程序的一次执行过程,或是正在运行的一个程序。是动态过程:有它自身的产生、存在和消亡的过程。什么是线程线程有进程创建的,是进程的一个实体。 一个进程可以有多个线程。其他原创 2022-04-28 15:46:54 · 180 阅读 · 0 评论 -
Java基础——泛型
泛型泛型介绍泛型又称参数化类型,是jdk5.0出现的新特性,解决数据类型的安全性问题。 在类声明或实例化时只要指定好需要的具体的类型即可。 Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生。 泛型的作用:可以在类声明时通过一个标识表示类中某个属性的类型,或者某个方法的返回值类型,或是参数类型。# 常见的泛型的类型表示上面的 T 仅仅类似一个形参的作用,名字实际上是可以任意起的,但是我们写代码总该是要讲究可读性的。常见的参数通常有 : E - Element (在原创 2022-04-24 16:35:23 · 341 阅读 · 0 评论 -
Java基础——集合
集合集合框架概述集合和数组都是对多个数据进行存储操作的结构,也就是容器。此时存储的主要是内存层次的存储,也就是临时容器,而不是向数据库或者文件那种持久化的容器。而Java中的集合就是一种很好的临时容器,可以动态的把多个对象放入到容器中。此前用到的数组也可以保存数据,但是数组的缺点也很多:长度在开始时必须指定,一旦指定不能更改。 保存的数据必须为同一类型的元素。 使用数组进行添加、删除、插入等操作比较麻烦。 数组存储数据是有序、可重复的,不能存储无序不可重复的需求。集合却没有这些问题:原创 2022-04-08 15:28:57 · 975 阅读 · 0 评论 -
Java基础——Math类、Arrays类、日期类
Math类基本介绍math类包含用于执行基本数学运算的静态方法,如初等指数、对数、平方根和三角函数。Math类常用方法方法名 说明 abs(a) 返回int、float、double、long值的绝对值 pow(a,b) 返回double类型的a的b次方的值(double类型) ceil(a) 向上取整,返回>=该参数的最小整数(double类型) floor(a) 向下取整,返回<=该参数的最小整数(double类型) roun原创 2022-03-16 17:39:08 · 924 阅读 · 0 评论 -
Java基础——String类、StringBuffer类、StringBuilder类
String类String对象用于保存字符串,也就是一组字符序列 字符串常量对象是用双引号括起的字符序列。例:"hello","3.1415926","年后"等。 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。 String类较常用的构造器: String s1=new String(); String s2=new String(String original); String s3=new String(char[ ] a); String .原创 2022-03-14 14:10:40 · 1498 阅读 · 0 评论 -
Java基础——包装类
包装类包装类分类针对八种基本数据类型相应的引用类型——包装类 有了类的特点,就可以调用类中的方法 如下表:基本数据类型 包装类 blooean Blooean char Character byte Byte short Short int Integer long Long float Float double Double 包装类和基本数据的转换演示包装类和基本数据类型的相互转换,这里以int和I原创 2022-03-09 17:47:18 · 413 阅读 · 0 评论 -
Java基础——异常
异常(Exception)基本概念Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)执行过程中所发生的异常事件可分为两大类:Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽、栈溢出等严重情况。Error是严重错误,程序会崩溃。 Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等,Exception分为两原创 2022-03-07 18:22:58 · 395 阅读 · 0 评论 -
java基础——注解
注解注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。 和注释一样,注解不影响程序逻辑,但注解可以被编辑或运行,相当于嵌入在代码中的补充信息。 在JavaSE中,注解的目的比较简单,比如标记过时的功能,忽略警告等。在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替javaEE旧版中所留下的繁冗代码和xml配置等。基本的注解使用Annotation时要在前面增加@符号,并把该Annotation当原创 2022-02-28 11:53:04 · 838 阅读 · 0 评论 -
java基础——枚举类
枚举枚举对应英文(enumeration,简写enum)。 枚举是一组常量的集合。 可以这样理解:枚举是一种特殊的类,里面只包含一组有限的特定的对象。枚举的两种实现方式自定义类实现枚举 使用enum关键字实现枚举自定义实现枚举不需要提供setXxx方法,因为枚举对象值通常为制度。 对枚举对象/属性使用final+static共同修饰,实现底层优化。 枚举对象名通常使用全部大写,常量的命名规范。 枚举对象根据需要,也可以有多个属性。小结:构造器私有化。 本类内部创建一组对象原创 2022-02-21 19:10:52 · 751 阅读 · 0 评论 -
Java基础——内部类
基本介绍一个类的内部又完整的嵌套了另一个类机构。被嵌套的类称为内部类(inner class),嵌套的其他类的类称为外部类(outer class)。是我们类的第五大成员【属性、方法、构造器、代码块、内部类】。内部类最大的特点就是可以直接访问私有属性,并且可以体现类和类之间的包含关系。如果定义在局部位置(方法/代码块中):(1)局部内部类(有类名)(2)匿名内部类(没有类名)定义在成员位置:(1)成员内部类(没用static修饰)(2)静态内部类(使用static修饰)基本语原创 2022-02-21 17:45:49 · 560 阅读 · 0 评论 -
Java基础——接口
基本介绍接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,根据具体情况把这些方法写出来。语法:interface 接口名{//属性//抽象方法}class 类名 implements 接口{自己的属性;自己的方法;必须实现的接口的抽象方法//在接口中,抽象方法可以省略abstract}小结:接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体(jdk7.0版本)。接口体现了程序设计的多态和高内聚低耦合的设计思想。.原创 2022-01-17 14:14:19 · 417 阅读 · 0 评论 -
Java基础——抽象类
基本定义抽象方法,只声明而未实现的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,抽象类和普通类相比,区别在于抽象类带有抽象方法,抽象方法可以只声明,而不需要方法体。public class Demo05 {}abstract class Animal{ private String name; public Animal(String name){ this.name=name;原创 2021-12-30 19:03:00 · 318 阅读 · 0 评论 -
Java基础——final关键字
基本介绍final 中文意思:最后的,最终的。final 可以修饰类、属性、方法和局部变量。在某些情况下,程序员可能有以下需求,就会使用到final:当不希望类被继承时,可以用final修饰。 当不希望父类的某个方法被子类继承/重写(override)时,可以用final关键字修饰。 当不希望类的某个属性的值被修改,可以用final修饰。 当不希望某个局部变量被修改,可以使用final修饰。public class Demo03 { public static void m原创 2021-12-30 17:59:25 · 217 阅读 · 0 评论 -
Java基础——单例设计模式
设计模式静态方法和属性的经典使用。 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。单例模式单例(单个的实例):所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 单例模式有两种方式:(1)饿汉式 (2)懒汉式饿汉式public class Demo01 { public static void main(String[] args) {原创 2021-12-28 19:27:42 · 143 阅读 · 0 评论 -
Java基础——代码块
基本介绍 代码块又被称为初始化块,属于类中的成员【即是类的一部分】,类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。 但是代码块和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时,或创建对象时隐式调用。基本语法[ 修饰符 ]{代码};说明注意:修饰符可选,如写的话,也只能写static。 代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的,叫普通代...原创 2021-12-28 17:21:55 · 468 阅读 · 0 评论 -
Java基础——main方法
深入理解main方法解释main方法的形式:public static void main(String [] args){}main方法是由java虚拟机调用的。 java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public。 Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static。 该方法接受String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数,案例演示,接收参数(如下图)。 java执行的程序 参数1 参数2原创 2021-12-24 15:07:55 · 5233 阅读 · 0 评论 -
Java基础——类变量和类方法
类变量类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一变量。定义语法:访问修饰符 static 数据类型 变量名;【推荐】static 访问修饰符 数据类型 变量名;访问类变量类名.类变量名或者 对象名.类变量名【静态变量的访问修饰符权限和范围和普通属性的是一样的】推荐使用:类名.类变量名;类变量使用细节什么时候使用类变量:当我们需要让某个类的所有对象都原创 2022-02-28 15:02:52 · 1034 阅读 · 0 评论 -
Java基础——==和equals的区别
==是一个比较运算符==:既可以判断基本类型,又可以判断引用类型。 ==:如果判断基本类型,判断的是值是否相等。 ==:如果判断的是引用类型,判断的是地址是否相等,即判断是不是同一对象。 equals:是object类中的方法,只能判断引用类型。 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。(具体可查看jdk源码)。//JDK源码Object类中的equals方法//Object类中的equals方法默认就是比较对象地址是否相同,也就是判断两个对象...原创 2021-12-17 10:47:01 · 767 阅读 · 0 评论 -
Java基础——面向对象三大特征
基本介绍面向对象编程有三大特征:封装、继承和多态。封装(Encapsulation)封装介绍封装是指属性私有化,就是把抽象出的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作【方法】,才能对数据进行操作。封装的理解和好处隐藏实现细节:方法(连接数据库)《--调用(传参),简化编程。 增强数据安全性,不能让其他用户随意访问和修改数据。封装的实现步骤将属性进行私有化private 。【不能直接修改属性】 提供一个...原创 2021-12-16 11:53:47 · 315 阅读 · 0 评论 -
Java基础——java的动态绑定机制
Java重要特性:动态绑定机制Java的动态绑定机制当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定。 当调用对象属性时,没有动态绑定机制,哪里声明,那里使用。 class B extends A A a=new B(); System.out.println(a.sum()); System.out.println(a.sum1());首先,编译器根据对象的声明类型和方法名,搜索.原创 2021-12-15 16:09:28 · 667 阅读 · 0 评论 -
Java基础——访问修饰符
基本介绍java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围):公开级别:用public修饰,对外公开。 受保护级别:用protected修饰,对子类和同一个包中的类公开。 默认级别:没有修饰符号,向同一个包中的类公开。 私有级别:用private修饰,只有类本身可以访问,不对外公开。4种访问修饰符的访问范围 访问级别 访问控制修饰符 同类 同包 子类原创 2021-12-15 13:43:11 · 613 阅读 · 0 评论 -
Java基础——面向对象
面向对象面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。对Java语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。类与对象时整个面向对象中最基础的组成单元。可以一句话..原创 2021-01-21 11:50:56 · 279 阅读 · 0 评论 -
Java基础——方法
方法方法是具有特定功能的代码块。简单的理解就是:把一段完整的代码,看成一个整体,并给这段代码起个名字,以后在用的时候,使用这个名字就相当于执行了这一段代码。方法必须先创建才可以使用,创建只需要进行一次,使用可以多次。方法的创建过程称为方法的定义。和变量类似,变量必须先定义再使用,方法也是先定义再使用。方法创建后并不是直接运行的,需要手动使用才执行,使用方法称为方法调用。方法定义...原创 2021-01-19 14:25:05 · 144 阅读 · 0 评论