
Java
文章平均质量分 64
分享Java相干的~
花伤情犹在
我的花会开的 我的生活也会慢慢拥抱我的.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 使用函数式接口定义枚举类,自动根据类型设置对应字段值
本文介绍了如何在Java中利用枚举类和函数式接口实现智能家居系统的传感器数据管理。首先,定义了一个名为 SensorDataSetter 的函数式接口,它用于根据传感器类型设置相应的数据字段。接着,创建了 SensorType 枚举类,包含温度、湿度、光照强度和气压四种传感器类型,每个类型都有唯一的代码、原创 2025-03-04 11:32:51 · 463 阅读 · 0 评论 -
MyBatis Plus与JSON字段查询:动态构建JSON条件
通过本篇文章,我们展示了如何动态构建 MySQL 中 JSON 字段的查询条件,并将其与 MyBatis Plus 的 `QueryWrapper` 结合使用,简化 SQL 的编写。通过 `JSON_EXTRACT` 和 `JSON_UNQUOTE` 函数,我们能够灵活地查询 JSON 数据类型字段中的特定属性,为开发者提供了一种灵活、动态的查询方式。原创 2025-02-12 13:38:21 · 1407 阅读 · 0 评论 -
使用 MapStruct 实现字段脱敏:结合 Hutool 和自定义注解的完整指南
在Java开发中,处理敏感数据时,我们常常需要对一些字段进行脱敏,比如手机号、身份证号、地址等。MapStruct是一个非常强大的工具,可以帮助我们高效地进行对象映射,特别是当我们需要在映射过程中对字段进行脱敏时,MapStruct提供了丰富的注解和机制来满足这一需求。本文将通过具体示例,详细介绍如何在MapStruct中实现字段脱敏,结合Hutool脱敏工具以及MapStruct的各种注解(expression和),以及如何根据条件灵活地控制字段的脱敏操作。原创 2025-01-18 14:40:18 · 779 阅读 · 0 评论 -
Java中的字符串转数组工具方法汇总 | String To Array
在日常开发中,我们经常会遇到需要将字符串拆分为数组的场景。为此,多个常用的Java工具库提供了便捷的方法来处理这些需求。本文将整理出几种可以直接将字符串转换为数组的方法,帮助开发者提升代码的可读性和效率。工具库方法名称入参返回类型适用场景String[]自定义分隔符,默认去除空白符StringString[]逗号分隔HutoolStringString[]逗号分隔HutoolString[]自定义分隔符灵活处理定制分隔符拆分。原创 2025-01-14 18:16:10 · 1413 阅读 · 0 评论 -
Java 实现工厂策略
在 Java 开发中,工厂策略模式是一种常见的设计模式组合,通过它可以灵活地根据不同的条件选择不同的策略执行逻辑。本文将从多种实现方式探讨工厂策略模式的不同实现,配合详细的代码片段和 JavaDoc 说明,帮助读者全面掌握其应用技巧。原创 2025-01-07 16:24:19 · 739 阅读 · 0 评论 -
Java如何通过类覆盖重写框架功能
在 Java 开发中,我们经常使用第三方框架来提高开发效率。然而,当框架的默认行为无法满足我们的需求时,定制框架功能成为一种必要。这篇文章将详细探讨如何通过类覆盖的方式,优雅地重写框架功能,并分析其背后的原理与潜在风险。原创 2024-12-24 11:08:33 · 1118 阅读 · 0 评论 -
Hutool 秒速实现 2FA 两步验证
本文展示如何使用 Hutool 工具包实现 TOTP 功能,并结合 Google 的二维码生成工具 来简化密钥分发和用户配置过程。Hutool 是一个功能丰富的 Java 工具类库,提供了大量实用的功能,使得开发者能够更高效地开发应用程序。特别是其内置的支持 TOTP 和 QR Code 生成的功能,为实现多因素认证提供了极大的便利。原创 2024-11-30 22:03:11 · 1277 阅读 · 0 评论 -
序列化问题记录:Jackson 与 Fastjson 的注解
Java后端开发中,我们经常需要处理JSON序列化和反序列化的问题。Spring框架默认使用Jackson作为JSON处理库,但在某些情况下,我们也可能会使用Fastjson来处理特定的序列化需求。由于这两种库的注解不完全兼容,因此在同一个项目中同时使用它们时,可能会遇到一些问题。为了在同一个项目中同时支持 Jackson 和 Fastjson,并且避免重复编写相同的注解,我们可以创建自定义注解来实现通用性。原创 2024-10-22 13:46:42 · 981 阅读 · 0 评论 -
ApplicationContext获取对象时注解丢失问题及 Arthas 验证方法
本文探讨了通过Spring ApplicationContext获取对象时无法获取注解的问题,分析了原因并展示了如何使用Arthas验证代理类上没有注解的解决方案。原创 2024-10-14 15:53:29 · 653 阅读 · 0 评论 -
byte[]/InputStream/MultipartFile之间进行转换
最近开发项目的时候,遇到了文件上传对象转换的问题 -> 我在对接抖音开放平台的时候,有一个图片上传的接口,需要将byte[]转为对象,但是发现根本没有这样的工具类,后面翻阅了不少帖子得到了解决方案。阿里云的OSS对象存储照片URL需要通过Java获取到图片流,不过我这里下载的是byte数组,byte数组与流对象之间的转换还是比较简单的,这里我就是希望byte数组转为// 图片的链接// 下载图片为字节数组上传对象是,而我的图片资源又是 byte 数组,这之间就需要做一个转换了。原创 2024-10-10 17:57:28 · 3161 阅读 · 0 评论 -
Mac 以SH脚本安装Arthas
在Mac上,利用SH脚本安装Arthas便捷快速。用户下载并执行自定义脚本以完成自动化安装,包括依赖处理、组件下载和环境配置。安装后通过as.sh启动,输入dashboard命令打开Web Console页面进行Java应用的实时监控与诊断。原创 2024-03-01 15:03:41 · 1020 阅读 · 1 评论 -
运用JProfiler分析Java程序中的OOM问题
本文旨在详细介绍如何运用强大的性能分析工具JProfiler,针对Java应用程序中常见的内存溢出(OutOfMemoryError,简称OOM)问题进行精准定位与深入剖析。通过实例演示,我们将逐步揭示Java堆空间的分配、使用情况以及潜在的内存泄漏源头,并借助JProfiler的强大功能进行实时内存监控、堆转储分析和对象引用跟踪等操作。从而帮助开发者高效地识别并解决内存溢出问题,优化程序性能,确保系统稳定运行。原创 2024-02-29 17:35:03 · 1704 阅读 · 0 评论 -
浙政钉SDK安装
一键安装Maven第三方SDK依赖“专有钉钉SDK”!原创 2023-12-08 17:50:41 · 2661 阅读 · 4 评论 -
SpringBoot轻松实现项目集成Knife4j接口文档
Knife4j 官网Knife4j是一款基于Swagger生成API文档的增强工具,它简化了开发者构建和管理RESTful API文档的过程。通过自动扫描项目中的接口信息,Knife4j能够生成详细、易读的API文档,无需手动编写和维护。它提供交互式的接口调试页面,方便验证接口正确性,同时支持接口聚合和分组,便于管理大型项目中的接口。此外,Knife4j还支持Markdown文档,以及定制化配置选项,使得API文档更加美观、灵活和易于展示。原创 2023-09-19 17:01:15 · 1184 阅读 · 0 评论 -
OTP动态口令之Java实现双重认证
双重认证(英语:Two-factor authentication,缩写为2FA),又译为双重验证、双因素认证、二元认证,又称两步骤验证(2-Step Verification,又译两步验证),是一种认证方法。原创 2022-02-11 22:50:10 · 16660 阅读 · 0 评论 -
Java工具类及配置文件模板大全
Mybatis 工具类的封装工具类的封装首先要考虑的问题是,要实现所有的功能。为了以后的扩展需要工具具有容易维护的特点。同时要提高效率。mybatis 工具类的封装要考虑三大块内容Resources、SqlSessionFactory、SqlSession。Resources:Resources 的作用是读取 Mybatis 核心配置文件,读取的方式是使用IO 流,这样的方式只执行一次就可以了。SqlSessionFactory : SqlSessionFactory 是 SqlSession的工厂原创 2021-10-28 23:16:27 · 841 阅读 · 0 评论 -
SpringMVC数据校验Bug-@Valid不起效BindingResult读取不到Error信息
Bug记录在写SpringMVC项目时,由于要对表单数据进行校验,使用Spring MVC框架时,有两种常用的方式校验输入的数据。利用Spring框架自带的验证框架利用JSR 303实现我使用的是JSR 303实现数据校验的,JSR 303 通过在Bean属性上标注类似于@NotNull、@Max等标准的注解指定校验规则,并且通过标准的校验接口对Bean进行验证。但是在进行数据校验时,BindingResult对象无法拦截非法表单数据,result.hasErrors()无论怎么输入都会返回原创 2021-09-16 19:49:28 · 1633 阅读 · 4 评论 -
Spring依赖注入基于XML的 DI
DI:给属性赋值spring调用类的无参数构造方法,创建对象。 对象创建后给属性赋值。给属性赋值可以使用 :xml配置文件中的标签和属性使用注解DI分类:set注入,也叫做设值注入构造注入set注入public class Student { //姓名 private String name; //年龄 private int age; //无参构造器 public Student() { System.out.println(原创 2021-09-08 21:39:59 · 260 阅读 · 0 评论 -
创建第一个Spring程序
开发工具准备开发工具:idea2017 以上依赖管理:maven3 以上jdk:1.8 以上使用Maven创建Spring项目选择Maven勾选Create from archetype选择maven-archetype-quickstart创建成功使用Java Enterprise创建Spring项目默认即可Version一般选择Java EE 8设置项目信息创建成功引入 maven 依赖 pom.xml打开pom文件添加依赖<!-- 日志输出原创 2021-09-08 19:52:49 · 581 阅读 · 1 评论 -
JSP购物车案例精简版-适合小白学习
前言购物车是电商网站必不可少的功能,没有它我们的购物将变得繁琐,如同你去超市买东西,没有购物车的话你你买东西的数量将受到限制,因为当你要买的东西越来越多的时候,你根本拿不下所有的对象。想象一下如果你去京东、淘宝上买东西,没有购物车的话你就一次性只能买一件商品,没有结算功能。本文讲解一下简单的购物车原理,适合小白学习。效果构建环境导包搭建项目目录设计实体书籍实体package entity;/** * 书籍实体类 */public class Book { //书籍i原创 2021-07-03 23:23:31 · 5384 阅读 · 4 评论 -
Java之判断ResultSet结果集是否为空
前言记录一次憨憨行为:在判断结果集里面有没有值的时候,我傻傻的用“==null”来判断结果集是否为空,导致结果(一直是假象-----结果集里面有值),很小很小的错误,但就是在编码的时候一致追求速度导致马虎,导致了这次憨憨行为。以下憨憨行为:错误示例:if(rs==null){System.out.println("结果集为空!");}else{System.out.println("结果集不为空!");} ResultSet表示select语句的查询结果集。Resul原创 2021-07-01 21:56:50 · 4244 阅读 · 0 评论 -
Ajax实现搜索文本框自动联想功能
前言由于没有使用数据库,联想数据是通过List集合模拟的。原理:前端通过Ajax将文本框数据发送给后端后端用List集合模拟数据库进行数据遍历遍历的数据结果要加上分隔符(例如本人使用的是逗号“ , ”)后端将遍历出来的数据拼接在一起发送给前端Ajax前端Ajax接收到数据对数据进行遍历利用split() 方法用于把一个字符串分割成字符串数组然后再对其数组遍历,将遍历结果和html进行拼接效果代码注意前端用到了JQuery框架前端代码:<!DOCTYPE html&g原创 2021-06-29 11:26:23 · 938 阅读 · 0 评论 -
javax.naming.NoInitialContextException错误的解决方案
在用dbcp配置数据源时,写了一个测试类,在测试类中调用了dbcp获得数据库连接报错:javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or in an application resource file: java.naming.factory.initialTest代码:package test;import org.junit.Test;i原创 2021-06-28 16:17:28 · 2414 阅读 · 1 评论 -
Cookie实现免用户名和密码自动登录
前言我们在访问网站的时候,有的网站一天之内访问好几次,如果用户每次访问都需要这些登录操作就会感到相当厌烦。所以通过Cookie的技术手段让网站“记住”那些在曾经登录过的用户。当该用户下次再来访问的时候,网站可以识别该用户,并为其自动完成登录过程。实现免用户名和密码自动登录效果:登录界面效果图代码:<%@ page contentType="text/html;charset=UTF-8" language="java" %><% String username原创 2021-06-24 17:09:34 · 5146 阅读 · 1 评论 -
Web中的路径问题
前言在开发web中路径问题算是很蛋疼的一种问题,特别是在使用绝对路径的时候,在不同的目录下进行访问一会儿可以访问一会儿访问不到,令人着实厌烦。出现这种原因还是对Web中路径的概念理解的懵懵懂懂,像路径这种小问题必须要了解web’路径的概念就不容易出现错误影响开发效率。提醒webapp代表的是web工程名字服务器端的相对地址是在服务器端解析的,是相对于web应用的地址servlet中的相对地址应该是相对于web应用,即相对于`http://localhost:8080/webapp/`重原创 2021-06-23 23:11:34 · 733 阅读 · 0 评论 -
Redis小白入门教程
前言Redis概念: redis是一款高性能的NOSQL系列的非关系型数据库redis主要内容:下载安装命令操作数据结构持久化操作使用Java客户端操作redis什么是NOSQL?NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非原创 2021-06-17 22:59:08 · 232 阅读 · 0 评论 -
Spring框架JDBC Template使用教程
前言Spring提供了一个JDBCTemplate对象简化JDBC的开发,本文将简单讲解一下Spring框架JDBC Template使用教程以及Spring框架对JDBC的简单封装。步骤1.导入jar包2.创建JdbcTemplate对象。依赖于数据源DataSourceJdbcTemplate template = new JdbcTemplate(ds);3.调用JdbcTemplate的方法来完成CRUD的操作update():执行DML语句。增、删、改语句queryForMa原创 2021-06-14 20:56:00 · 350 阅读 · 0 评论 -
数据库连接池c3p0和Druid使用教程
前言本文将介绍数据库连接池:c3p0和Druid使用教程数据库连接池:概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。好处:节约资源用户访问高效实现:标准接口:DataSource javax.sql包下的方法:获取连接:getConnection()归还连接:Connection.close()。如果连接对象Connec原创 2021-06-14 20:06:17 · 441 阅读 · 1 评论 -
Java定义参数个数可变的方法:Object...objects
前言在Java1.5之后,java允许定义形参个数可变的方法。只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“…”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。例如:public static void test1(int...ints){ }注意,只有最后一个形参才能被定义成“能和不确定个实参相匹配”的。因此,一个方法里只能有一个这样的形参。另外,如果这个方法还有其它的形参,要把它们放到前面的位置上。编译器原创 2021-06-07 19:44:22 · 1651 阅读 · 4 评论 -
PreparedStatement的setObject作用
前言在了解setObject作用前讲解一下PreparedStatement这个接口,然后循序渐进从setXxx()方法讲解到setObject。PreparedStatementjava.sql包中的PreparedStatement接口继承了Statement接口,PreparedStatement对象可以防止sql注入,而Statement不能防止sql注入,所以实际开发的时候千万不要使用Statement。SQL注入:比如我的SQL语句为:select * from user wher原创 2021-06-07 19:08:23 · 5469 阅读 · 4 评论 -
解决IDEA不识别Java文件:文件变橙色&显示后缀名.java
打开idea项目后部分目录下出现橙色的时钟标志(如下):可以看到所有的java文件都显示了后缀名.java,文件的图标都变成了橙色的原因:项目根目录出现问题。解决方案:打开项目结构,选择Modules,删除项目根目录:点击是即可:重新导入项目根目录:选择当前项目根目录:最后应用确定即可:问题解决:...原创 2021-06-06 16:22:54 · 24529 阅读 · 5 评论 -
JDBC超详细入门教程
今日内容1. JDBC基本概念2. 快速入门3. 对JDBC中各个接口和类详解JDBC:1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。2. 快速入门: * 步骤: 1. 导入驱动jar包 mysql原创 2021-05-29 10:32:04 · 926 阅读 · 0 评论 -
Java基于TCP的网络编程
前言本文主将Java基于TCP的网络编程主要分解成5个功能:功能分解1:单向通信功能分解2:双向通信功能分解3:对象流传送功能分解4:加入完整的处理异常方式功能分解5:多线程接收用户请求单向通信:功能:客户端发送一句话到服务器:客户端:public class TestClient {//客户端 //这是一个main方法,是程序的入口: public static void main(String[] args) throws IOException {原创 2021-05-22 01:33:14 · 447 阅读 · 2 评论 -
解决IDEA创建Java Web项目不能及时刷新HTML或JSP页面
前言当我们使用IDEA创建一个Java Web项目,在项目部署完毕后启动服务器,却发现有不满的地方,又对项目进行更改,改完后然而页面却没有任何变动,每次需要手动重启服务器非常麻烦 ,本文介绍如何实现直接刷新Browser就可以达到刷新的目的。教程首先打开Edit Configurations,从运行-编辑配置中进入或者从菜单栏下面的Tomcat选项中的编辑配置可以直接进去选中你添加的Tomcat,修改On 'Update' action和On frame deactivation:必须都为原创 2021-05-20 18:25:30 · 4836 阅读 · 5 评论 -
解决Tomcat在cmd乱码问题
前言出现中文乱码的原因:bin\catalina.bat文件的编码与系统的编码不一致造成的。如图:解决方案:查看电脑系统的编码Windows平台下,点击运行–输入cmd,Enter回车键进入命令窗口,输入:chcp如图所示:我系统的活动代码页为:936。修改Tomcat配置需要修改Tomcat根目录下面的"logging.properties"文件,把所有的encoding=UTF-8的改成encodng=936,保存之后,重启Tomcat服务器,就能解决乱码问题配置文件原创 2021-05-20 11:27:03 · 2595 阅读 · 5 评论 -
阿里巴巴面试题之List集合去重
第一种方案:将List集合转换成Set集合:public class Test { public static void main(String[] args) { //将List集合去重 List<String> list= Arrays.asList("a","b","c","c","b","a"); list.forEach(System.out::print);//遍历List集合 //第一种方案将List集合转换原创 2021-05-19 09:58:56 · 424 阅读 · 0 评论 -
JDK1.8接口非抽象方法
在 JDK1.8,允许我们给接口添加两种非抽象的方法实现:默认方法,添加 default 修饰即可;静态方法,使用 static 修饰;示例如下:interface Test{ //这个是默认方法 default String get(String aa){ System.out.println("我是jdk1.8默认实现方法..."); return ""; } //这个是静态方法 static voi原创 2021-05-19 08:42:11 · 565 阅读 · 0 评论 -
遍历Hashtable中的key和value的几种方法
关于Hashtable散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表(Hashtable)的设计初衷就是通过键key来查找值value的,可以说对哈希表的操作内部机制实质上都是对键的操作。键不能为空且唯一,value值可以。键、值可以为任意数据类型。因此想要取出value需要先获取key处理原则:先取出key原创 2021-05-15 17:32:08 · 2077 阅读 · 0 评论 -
Java下File 类的 file.isHidden()判断文件是否隐藏
isHidden()方法:在Microsoft Windows系统中,如果文件在文件系统中被标记为隐藏文件,则认为该文件是隐藏的。返回值:当且仅当此抽象路径名的文件是一个隐藏的文件该方法返回true,否则该方法返回false。示例代码:import java.io.File; public class Test { public static void main(String[] args) { File file = new File("C:/Demo.txt原创 2021-05-15 17:07:51 · 1695 阅读 · 0 评论 -
判断目录是否为空
判断目录是否为空使用了File 类的 file.isDirectory() 和 file.list() 方法来判断目录是否为空:isDirectory():检查一个对象是否是文件夹,返回值是boolean类型的,如果是则返回true,否则返回false。list():返回一个数组 这个数组是你文件夹中的所有文件 相当于遍历目录,只会返回目录中的文件名字, 如果不存会出空指针异常。listFiles:功能:返回file类型数组这个数组是你文件夹中的所有文件 相当于遍历目录这个方法返回的是目录下的全路原创 2021-05-15 17:00:46 · 2082 阅读 · 0 评论