java
文章平均质量分 56
.予安
在职Java开发工程师
展开
-
如何遍历Java对象类中的所有属性名和属性值?
因此我们可以选择使用反射来进行遍历对象中的所有属性名和属性值。在遍历中编写逻辑来对属性进行操作。有些时候我们需要获取到一个对象中的所有属性名和属性值,对其值进行修改或是其他操作。这种时候我们再使用get(),set()来进行操作就会有些麻烦了。原创 2023-11-09 10:30:26 · 2682 阅读 · 0 评论 -
minio + linux + docker + spring boot实现文件上传与下载
p: 指定端口映射,格式为:主机端口:容器端口 (这里注意要映射两个,否则API会访问不到)接下来我们可以通过以下命令来查看 minio console和minio api 访问端口。注意 minio.endpoint 是minio API地址,不是控制台地址。-e “MINIO_ROOT_USER=vinci” minio用户名;-e MINIO_SECRET_KEY=123456 minio 密码。minio.bucket-name 是 bucket的名称。minio.secret-key是密码。原创 2023-10-27 14:13:44 · 1513 阅读 · 7 评论 -
请求转发和响应重定向
请求转发和响应重定向是两种在HTTP协议中常见的操作,用于在服务器和客户端之间传递数据。请求转发(RequestDispatcher)是服务器收到请求后,从一个资源跳转到另一个资源的操作。这种操作在服务器端进行,浏览器地址栏不会发生改变,也不会有新的页面加载。它是在同一个请求过程中,服务器内部根据配置进行URL的跳转。响应重定向(Redirect)则是客户端给服务器发请求,然后服务器发送重定向的状态码给客户端,同时客户端向服务器重新请求指定的地址。原创 2023-10-23 17:43:46 · 225 阅读 · 0 评论 -
使用EasyExcel实现Excel表格的导入导出
Java解析、生成Excel比较有名的框架有Apachepoi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POIsax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;原创 2023-08-18 14:19:20 · 4411 阅读 · 4 评论 -
SpringMVC中Controller层获取前端请求参数的几种方式
可以使用@PathVariable注解获取url地址栏指定位置参数,url中的参数名需和controller形参一致,或是使用@PathVariable注解的value属性进行映射,在写@XXXMapping注解中的url时参数名需要使用 { } 括起来。只要参数类型和参数名与方法形参相同,则会自动绑定。在controller层方法中定义形参,若请求时参数名、参数类型相同,则SpringMVC会自动绑定。接下来使用PostMan进行测试发现,传值则接收到值,不传值则使用默认值。PostMan测试结果。原创 2023-08-24 12:32:00 · 1162 阅读 · 0 评论 -
阿里巴巴FastJson包的使用心得
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。原创 2023-08-28 11:54:51 · 1017 阅读 · 0 评论 -
SpringBoot 使用MyBatis分页插件实现分页功能
在业务层调用Mapper接口获取数据并分页;需要注意:PageHelper.startPage(pageNum,pageSize)必须写在查询前面,否则将不会生效。这里使用application.properties类型配置文件来做例子。继续编写Controller层代码,将数据返回给前端。编写在Mapper中编写SQL语句查询与之对应的表。创建一个持久化对象TestUserPO。原创 2023-09-02 13:04:09 · 568 阅读 · 1 评论 -
SpringBoot配置文件的加载顺序
Spring Boot 启动会扫描以下位置的application.properties或者application.yml 文件作为Spring Boot 的默认配置文件。也可以通过配置spring.config.location来改变默认配置。的顺序 ,所有位置的文件都会被加载(互补配置),原创 2023-09-13 17:43:19 · 3911 阅读 · 0 评论 -
在Java中为什么不建议使用Object的clone()来拷贝对象
最近阅读了《阿里巴巴Java开发手册》一书,书中提到了不推荐使用Object对象的clone()方法来对对象进行拷贝,因为Object的clone()方法默认是浅拷贝,原文如下:【推荐】慎用Object的clone方法来拷贝对象。说明:对象的clone方法默认是浅拷贝,若想实现深拷贝需要重写clone方法实现属性对象的拷贝。原创 2023-09-25 08:46:41 · 241 阅读 · 0 评论 -
Java中在循环体内拼接字符串时为什么使用StringBuilder而不是String
速度是 + String 的 两百多倍,极大的优化了执行效率。循环体内,字符串的连接方式,请使用 StringBuilder 的 append 方法进行扩展。说明:因为反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行。同样的逻辑,我们接下来使用StringBuilder 的append()进行拼接来跑一遍。我们使用for循环100000次来拼接一个字符串,并打印这段的运行时间,单位(ms)因此,在循环中拼接字符串的大部分场景下我们最好的选择一定是后者。原创 2023-10-12 17:24:07 · 349 阅读 · 0 评论 -
Java中的&(|)和&&(||)的区别和联系
综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。表示逻辑与(and),当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。&还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。&逻辑运算符称为逻辑与运算符,&&逻辑运算符称为短路与运算符,也可叫逻辑与运算符。原创 2023-02-02 21:27:46 · 579 阅读 · 0 评论 -
Java中i++和++i的异同之处
【代码】i++和++i的异同之处。原创 2023-01-23 21:10:40 · 171 阅读 · 0 评论 -
SSM框架整合(Spring + Spring MVC + MyBatis)IDEA版
SSM(Spring+SpringMVC+MyBatis)就是由Spring、SpringMVC、MyBatis三个开源框架整合而成的框架集,常作为数据源较简单的web项目的框架。其中:Spring是SpringMVC的父容器。这里的父子关系并不是继承关系的父子关系,而是在SpringMVC容器(子容器)中可以知道Spring容器(父容器)的存在。子容器可以访问父容器,而父容器不能访问子容器。在build中配置resources,设置Maven资源过滤第三步:建立基本结构MyBatis的核原创 2023-01-17 21:58:01 · 1157 阅读 · 0 评论 -
Java跨平台原理(字节码文件、虚拟机)
- Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有- 相应的Java虚拟机。但是性能比C/C++要低。原创 2023-01-09 18:01:29 · 246 阅读 · 0 评论 -
hashCode()与equals()之间的关系
在Java的一些集合类的实现中,在比较两个对象是否相等时,会根据上面的原则,会先调用对象的hashCode()方法得到hashCode进行比较,如果hashCode不相同,就可以直接认为这两个对象不相同,如果hashCode相同,那么就会进一步调用equals()方法进行比较。所以,我们就需要注意,如果我们重写了equals()方法,那么就要注意hashCode()方法,一定要保证遵守上述规则。如果两个对象的hashCode相同, 不代表这两个对象一定是同一个对象,也可能是两个对象。原创 2022-12-18 14:38:49 · 195 阅读 · 0 评论 -
接口和抽象类的区别
抽象类接口原创 2022-12-17 14:51:58 · 80 阅读 · 0 评论 -
GET和POST的区别
有些文章中提到,POST会将 header 和 body 分开发送,先发送 header,服务端返回 100 状态码再发送 body。GET请求可以直接进行回退和刷新,不会对用户和程序产生任何影响,而POST请求如果直接回滚和刷新将会把数据再次提交。所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 POST必然行为。而对于POST,浏览器先发送请求头,服务器响应100continue,浏览器再发送请求体;对于GET方式的请求,浏览器会把请求头和请求体一并发送出去;原创 2022-12-14 16:24:48 · 1068 阅读 · 0 评论 -
重载和重写的区别
返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。、方法返回值和访问修饰符可以不同,也可以相同。父类中有以下两个方法。原创 2022-12-13 15:54:54 · 100 阅读 · 0 评论 -
String、StringBuilder、StringBuffer三者之间的关系及使用场景
经常需要改变字符串内容时使用StringBuffer和StringBuilder优先使用StringBuilder,多线程使用共享变量时使用StringBuffer原创 2022-12-10 12:48:58 · 159 阅读 · 0 评论 -
final的作用
final意为最终的修饰类:表示类不可被继承修饰方法:表示方法不可被子类覆盖,但是可以被重载修饰变量:表示变量一旦被赋值就不可以更改它的值(1)修饰成员变量(2)修饰局部变量(3)修饰基本数据类型和引用数据类型原创 2022-12-09 15:11:48 · 1214 阅读 · 0 评论 -
Java实现短信发送
首先,我们要实现Java短信发送功能需要去申请第三方短信接口,以阿里云为例点击跳转在API市场中找到短信验证码接口:我们可以先选择免费试用来测试:点击立刻购买后可前往控制台查看:OK,一切就绪后我们开始测试使用。首先我们先回到商品详情页,在商品详情页下面,说明了这个接口的调用地址以及请求参数等:接下来我们通过实例来调用接口进行测试:1、加入相关依赖具体可参考:相关依赖2、创建HttpUtils.java类HttpUtils.java类官方也已经帮我们封装好了,我们可以直接前往原创 2022-12-07 16:38:54 · 11712 阅读 · 2 评论 -
JDK、JRE、JVM三者之间的关系
JDK是针对开发者的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。三者间的关系图:原创 2022-12-03 19:42:20 · 1313 阅读 · 0 评论 -
浅谈对面向对象的理解
对比面向过程,是两种不同的问题的角度面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、及各自需要做什么例如:用洗衣机洗衣服面向过程会将任务拆解成一些列的步骤(函数):打开洗衣机 —>>> 放衣服 —>>> 放洗衣粉 —>>> 清洗 —>>> 烘干面向对象会拆出人和洗衣机两个对象:人: 打开洗衣机 、 放衣服 、放洗衣服洗衣机: 清洗 、烘干从以上例子可以看出,面向过程比较直接高效。而面向对象更易于复用、扩展和维护。原创 2022-12-02 14:32:21 · 89 阅读 · 0 评论 -
使用AJAX实现SpringSecurity登录(不禁用csrf )
其中的ResultEntity为封装的统一返回类型。原创 2022-11-28 10:47:09 · 394 阅读 · 0 评论 -
MyBatis配置文件(mybatis-config.xml)
MyBatis 配置文件的结构如下:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置 --> <properties /><!--转载 2022-11-27 11:39:48 · 163 阅读 · 0 评论 -
Lombok的使用(简化Java实体类开发)
Lombok可以帮助我们简化实体类的开发,添加@Data注解后,会帮助我们生成setter/getter、equals、canEqual、hashCode、toString方法;但需要注意如为final属性,则不会为该属性生成setter方法。原创 2022-11-26 13:17:40 · 347 阅读 · 0 评论 -
浮点数相减问题
可以看到,3.14 减去 1.56 的结果应该是 1.58 ,而得出的结果与我们期望的结果存在一定误差,虽然这个误差很小,但是作为理工科出身,我们要本着是1就是1,是2就是2的原则严谨态度去看待。原创 2022-11-25 19:51:40 · 668 阅读 · 0 评论 -
java判断闰年
闰年首先,我们要清楚什么是闰年,闰年分为以下两种普通闰年:公历年份是4的倍数且不是100的倍数为普通闰年(如2004、2020年就是闰年)。世纪闰年:公历年份是整百数的,必须是400的倍数才是世界闰年(如2000是世纪闰年,1900不是世纪闰年)。最后总结:能被4整除却不能被100整除或能被400整除的年份就是闰年接下来我们使用java代码来进行实现代码部分public class aLeapYear { public static void main(String [] args)原创 2021-10-18 10:39:17 · 1525 阅读 · 0 评论 -
Java实现第11届蓝桥杯C/C++ B组第一题,小蓝制作门牌
小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?思路:1.1到2020循环2.每次循环保存i的值,进入内层循环,取模10余一个2说明最后一位存在2,存在即sum++3.原创 2021-10-23 09:14:02 · 532 阅读 · 0 评论