Java
文章平均质量分 73
记录java
追寻上飞
进可攻前端,退可守后端,偶尔玩硬件。热爱新技术探索和研究。
全栈软件工程师,2021上半年获得软件设计师职业资格证书。阿里云博客专家。
展开
-
【黄金手指】windows操作系统环境下使用jar命令行解压和打包Springboot项目jar包
项目中利用maven将项目打包成生产环境jar包。名为。需求是 修改配置文件中的某些参数值,并重新发布。原创 2024-03-20 15:50:53 · 1141 阅读 · 2 评论 -
【棘手问题】Spring JPA一级缓存导致获取不到数据库表中的最新数据,对象地址不发生改变
这是因为 JPA 确保了基于主键的查询总是返回唯一的实体实例,而且主键是实体的唯一标识符。即使两个查询的条件不同,如果它们都返回同一个实体 ID,那么 JPA 会认为它们是相同的实体,并且返回同一个对象实例。这是 JPA 规范的行为,也是 Hibernate(JPA 的一个实现)的行为。这是因为 JPA 规范要求实体 ID 是唯一的,并且基于 ID 的查询总是返回唯一的实体。是一个标准的方法,它根据实体的主键(ID)来检索实体。这个方法的名字是任意的,但它后面的参数定义了查询的条件。原创 2024-03-08 19:43:42 · 1131 阅读 · 2 评论 -
【小巧玲珑】文件太大,怎么办?分卷压缩技术了解下,这才是压缩技术
JAR 压缩算法是一种用于压缩 Java 档案文件(.jar)的算法,它是由 Sun Microsystems 开发的。通过浏览器客户端访问云服务,文件大小在上传时会有限制,一般地,100M左右。包少了16M左右,但是还是满足不了上传要求,因此就需要通过分卷压缩方法完成。而现在的工程软件压缩后动辄200多M,这种情形就需要对文件进行压缩处理。以实际工程为例,jar包大小为146M,解压jar包后为413M。如下图所示,将jar包添加到将要压缩的文件路径中。使用ZIP压缩算法后,包大小为130M,比。原创 2023-10-13 17:04:34 · 786 阅读 · 0 评论 -
IDEA点击RUN后后台到底执行了什么操作
是用于指定 Java 虚拟机在运行 Java 程序时查找类文件的路径的命令。它可以用于指定一个或多个包含类文件的目录或 JAR 文件。属性,Java 虚拟机将会使用该属性中指定的类路径。这将使得 Java 虚拟机在两个目录下都查找类文件。,控制台输出以下信息,是java的执行命令操作。如果你的类文件分布在多个目录下,你可以使用冒号。如果你希望在当前目录下查找类文件,你可以使用。编译 Java 源代码时,你也可以使用。如果你的 JAR 文件包含了。这将使得 Java 虚拟机在。文件,并且该文件指定了。原创 2023-09-11 09:53:34 · 651 阅读 · 0 评论 -
【穿针引线】基于ElAdmin项目论Spring Security的工作原理,实现前后端OAuth2单点登录,源码分析
在做单点登录功能时,在这篇文博客中分析过[CAS方式登录源码],关注的是认证和授权函数,其实思想都是大同小异。在这篇博客中,基于Spring Security框架的核心类和思想进行认证和授权的源码分析,做到说透讲透。原创 2023-05-18 19:37:02 · 1300 阅读 · 5 评论 -
【千里传音】Web Service四层协议栈认识之旅,SOAP、WSDL、AXIS分别是个啥 ? IDEA2020搭建SOAPWeb Service服务端和客户端实战,并完成SpringBoot整合
Web Service(Web服务)是一种基于Web技术构建的分布式应用程序的通信方式,它使用标准的互联网协议和格式,通过网络对不同的应用程序进行交互和集成。Web服务是一种跨平台、跨语言的方式,允许不同的应用程序在不同的操作系统、编程语言和硬件平台上进行通信和交互。原创 2023-04-22 17:10:53 · 894 阅读 · 0 评论 -
【最佳实践】OAuth标准和基于OAuth2.0实现Github 授权单点登录的保姆级教程
OAuth)是一种授权标准,允许第三方应用程序通过授权访问用户的受保护资源,而无需获取用户的用户名和密码。OAuth标准旨在解决用户在使用第三方应用程序时需要提供自己的用户名和密码的安全性和隐私问题。OAuth2.0是一种用于授权的开放标准,旨在为客户端应用程序提供访问受保护资源的安全机制。它是OAuth 1.0的升级版,OAuth2.0的起源可以追溯到2006年,当时Twitter发布了一个名为Twitter OAuth的开放API,该API使用OAuth1.0作为其授权机制。原创 2023-04-20 16:59:16 · 1069 阅读 · 0 评论 -
【失之毫厘】解决引入Mybatis-plus的批量插入功能报Invalid bound statement (not found)错误
项目中使用两套ORM框架,其一是JPA;另一个是。思考一个问题,都是客户端访问数据库服务器,两者共存是符合逻辑的。并且两者各有其优缺点,可以互相弥补。原来的批量操作是通过JPA的接口,今天想尝试使用。原创 2023-03-18 17:06:56 · 894 阅读 · 1 评论 -
【强强联合】使用MySQL UNION ALL功能解决同时显示两张表的数据问题,显示物联网设备地理位置和其它监控指标
应业主方需求,设备监控指标不要显示经纬度值,而是显示其对应的地理位置信息。但是设计的时候,多维度的设备监控指标是在一张表中存储,另一张表存储设备的经纬度值及其对应的地理位置。接到需求时,想着直接更改库表来完成需求,但是改动的地方太多,改完了还要进行测试,因此就多方寻找解决方案,后来灵机一动,想着MySQL应该有拼接的功能,就找到了UNION ALL指令。原创 2023-03-16 17:31:05 · 844 阅读 · 0 评论 -
【点睛之笔】Maven多模块下,Spring JPA (Hibernate)扫描不同包的配置,解决@EntityScan @EnableJpaRepositories配置后仍不起作用
因为是另起的模块,一开始怀疑是Maven多模块的问题,没有把该模块引进来。层都扫描了,也就差控制器类没扫描了,因此问题迎刃而解。在项目根目录下的启动类上配置如下,扫描。包下的控制器的方法时,报未发现的异常。更改完POM配置后,仍旧不行。原创 2023-03-15 14:56:50 · 379 阅读 · 0 评论 -
【锱铢必较】前端Js 函数同名覆盖问题+后端Java HashMap同key覆盖问题
在开发前后端分离的项目时,出现了相同的覆盖问题,虽然问题不是出现同一个关注模块,但是能够警示我们开发时,一定要注意细节问题。当然,这样的问题能够通过单元测试暴露出来,同时也暴露技术基础的薄弱。原创 2023-02-10 15:17:27 · 506 阅读 · 0 评论 -
【刨根问底】数据库插入数据时报 incorrect string value for column 异常,如何破?
在记录异常日志时,系统报 `incorrect string value for column`异常,一般情况下这个就是数据库字符集的问题。原创 2022-12-26 15:45:41 · 6031 阅读 · 0 评论 -
【巧立名目】利用IDEA工具修改Maven多模块项目标识包名全过程
ComponentScan、EnableJpaRepositories、EntityScan注解都和扫描的包有关,默认扫描的包为启动类所在的包,因此如果maven模块包命名改变会影响注解的包值。系统的配置会影响到程序的运行,比如原来的组件扫描的包名、序列化的问题会导致程序运行不成功。迁移完毕后,我们会发现,项目根目录及test测试目录下会留下原来的包,迁移完毕后,遗留包成为空的文件夹,删除即可。因此,项目中使用到的原来的代码需要赋予其新的标识。IDEA的版本为2020.2。,一般地写对方公司的域名,如。原创 2022-09-21 15:10:35 · 3403 阅读 · 2 评论 -
【实践案例】Mybatis plus mapper文件中in查询配置
item是遍历的元素对象,因为对象是字符串集合,因此直接取元素的值即可。这是一个写作模板,用于解决有关计算机软件安装和使用中出现的问题。其中collection是集合对象,此处为。查询条件DTO类的列表集合对象。Mapper.xml配置文件。原创 2022-09-20 15:45:38 · 1603 阅读 · 0 评论 -
【移花接木】Maven项目结构调整解决方案
调整起来,方便又快捷,源于Spring框架的强大配置特征,在子模块包名的命名上也要尽量保持一致,这样配置类的参数更改不需要太多就可以完成软件结构的优化和调整。原创 2022-09-13 18:11:31 · 788 阅读 · 6 评论 -
Mybatis-plus分页查询不生效之问题排查
多用编译器的debug细节问题还是要注意,哪怕一个变量。原创 2022-09-08 19:38:40 · 9634 阅读 · 1 评论 -
【集锦】Mybatis踩过的坑,这些坑帮你踩了,看看你跳过去吗
在IDEA中运行偶尔出现程序上下文启动不成功的情况,经过排查,发现maven打包时,压根没有加载到程序主配置文件,联想到本博客。如果不配置分页插件拦截器,在Mapper方法内写Page参数不能被正确分页。问题应该是项目构建时资源配置不当。对项目进行打包,运行程序后找不到。因此需要下述增加配置。元素在中添加以下配置。属性中增加下述配置。...原创 2022-07-26 08:37:51 · 419 阅读 · 0 评论 -
【spring 官方ORM框架】spring-data-jpa详细教程
框架支持两种查询方法,其一是根据方法名派生,又叫做命名查询,无需写SQL语言;其二是使用注解,又称为注解查询。下表是命名查询支持的方法名及其对应的持久化查询语句。, ,,, , (参数后追加) (参数前追加 ) (参数封装在 内)参数支持数组和可变参数类型参数支持数组和可变参数类型?是占位符,解释后面的数字代表的参数,称为基于位置的参数。2.2.2 like用法%表示like表达式的占位符。2.2.3 命名参数默认使用基于位置的参数,也可以使用下述命名参数。这种方式写的太复杂,没有基于位置的好用。原创 2022-07-11 17:31:48 · 1464 阅读 · 1 评论 -
【Spring + Vue前后端分离】可商用的开源后台管理框架软件eladmin剖析
前面做过一个类似的项目,使用组件进行前端页面的开发,整个项目前后端没有解耦。这次想换个开发方式,将前后端进行分离开发。期间学习了,扩充了技术栈,形成了后端 + 前端的一个技术能力。有了技术能力后,就需要进行历练,毕竟学而不思则罔,方法就是通过开发一个后台管理系统来丰富自己做项目的经验,提升技术能力。开发的后台管理系统是基于某个行业进行数字化、信息化。管理系统分为通用模块和特色模块,通用模块指的是系统的一些管理功能,如菜单管理、用户管理、角色管理等,这些通用的模块属于重复造轮子的工作。特色模块就是系统本身要满原创 2022-07-07 09:49:18 · 2505 阅读 · 4 评论 -
【前后端】低代码平台Jeecg-Boot 3.2云服务器部署流程
2 前端 部署流程 和 的区别二者都会引用环境文件的配置参数 会引用环境文件 中的配置构建项目会引用环境文件中的配置打包项目,生成修改环境参数文件打包使用下述命令进行打包。nginx部署修改nginx的配置文件,如下所示。3 结果运行起来看效果。.........原创 2022-06-08 14:43:24 · 1576 阅读 · 1 评论 -
告别shiro-cas单点登录集成库,这款简单且强壮的Java Web安全引擎pac4j你值得拥有
官网地址传送门。pac4j引擎全称为powerful authentication client for java,这是笔者根据其官网介绍推测的全称,不一定正确,姑且这样叫着。一、缘何遇到该引擎笔者在集成CAS服务时使用springboot+shiro搭配shiro-cas库,但是总是遇到非法令牌的问题即invalid_ticket,找了各种解释。CAS服务器令牌失效时间短的问题1笔者更改配置文件,尝试多次,貌似不起作用,官方说的这是默认且唯一的配置;缺少其它依赖库2引入后也不得行;客原创 2022-03-09 15:44:34 · 6908 阅读 · 4 评论 -
利用Tomcat9.0.x搭建CAS中央认证服务器【协议采用HTTPS】
CAS中央认证服务器搭建软件版本软件配置1、生成key2、Tomcat配置3、CAS打包运行端口问题软件版本操作系统 Windows10jre8Tomcat 9.0.59CAS 5.3Tomcat下载地址,这里采用windows exe安装版本,链接在此,CAS 版本的下载地址在此。软件配置1、生成key进入D:\jdk8\bin\目录,使用Java命令行工具keytool 生成key,按照提示填写字段,如密码、用户姓名等。keytool -genkeypair -alias "t原创 2022-03-02 17:07:39 · 1301 阅读 · 1 评论 -
Apache Shiro身份认证过程详解
花了两天时间认真、重点走读==Apache Shiro安全框架==`身份认证`的源码,`访问控制`和前者是结构对应的,架构之美体现在对称和简易上。这个框架也让我想起业界优秀的网络框架`Netty`,优雅地描述了网络模型,它的优雅不仅体现在`ServerSocket`和`Socket`的对称之美,还体现在简化了一系列配置极简之美。原创 2022-02-28 15:04:52 · 1433 阅读 · 0 评论 -
“一品四境”学JAVA——书籍推荐/路径规划
学习JAVA的技术书籍统筹一、入门书籍二、场景书籍2.1 网络相关2.2 UI相关三、运维书籍本博客收录笔者在学习JAVA语言的开发路上亲身阅读过的书,这些书对笔者的成长有着巨大的促进作用。一、入门书籍《Java编程思想》—— Bruce Eckel对于入门Java语言,此书足够,全面覆盖Java基础知识;《深入理解Java虚拟机》—— 周志明Java虚拟机一直在舞台幕后默默,能够从底层的Java虚拟机角度理解程序执行的逻辑,加深对程序的理解,提高上层程序的设计、调优的能力;《Head Fi原创 2022-02-15 09:27:52 · 760 阅读 · 2 评论 -
Java通过jar包方式加载指定对象类教程以及源码分析
Java通过jar包形式加载指定对象类源码分析一,类加载器基础巩固二,使用场景三,打包一个jar3.1 功能3.2 解码接口3.3 解码接口实现类3.4 目的3.5 生成`jar`包四,编写一个接口五,源码分析一,类加载器基础巩固类加载器是JVM的重要核心组件之一,也是字节码执行的发源地,只有准确加载了类,JVM才能够创建对象。一般地有三种类加载器,其名称、对应的对象类以及作用分别是(以JDK8为例):启动类加载器()——加载JRE库文件用于加载rt.jar等11份文件,如下图所示,扩原创 2021-11-02 16:47:07 · 1514 阅读 · 0 评论 -
插件式编程SBP框架极简教程(基于SpringBoot)
@TOC一、前言笔者在工作中遇到经常更改服务层的代码,就只是更改一小部分,但是就需要重启整个程序才能完成编译,既费时又费力。想寻求一种方法,能够在不重新编译整个应用程序的情况下更新服务层代码。想到的第一个方法是通过动态加载jar文件来更新,但是SpringBoot应用上下文还没搞太清楚,后续可以按照这个思路走下去;第二个方法是把需要更新的服务层以插件的方式运行,就是今天所要介绍的SBP框架,它能够将使得主程序模块加载其它模块的控制器、服务层、数据访问层的代码,完成插件式的编程,实现插件的动态的启动、停原创 2021-10-21 21:06:25 · 1566 阅读 · 2 评论 -
基于SpringBoot 2.3.7.RELEASE的Maven多模块项目构建极简教程
基于SpringBoot 2.3.7.RELEASE的Maven多模块示例极简教程一、在初始化器上创建SpringBoot全局工程1.1 阿里初始化器1.2 填写配置清单1.3 选择版本1.4 填写工程名1.5 裁剪项目文件二、创建两个Maven子模块2.1 创建demo-web模块2.2 导入Spring Web依赖2.3 整个pom文件内容2.4 创建demo-common模块在搞懂Maven多模块应用开发前,建议阅读以下该博客,夯实一下基础,其实也就是规范的问题,每个Maven项目标签的使用方式及含原创 2021-10-20 19:00:00 · 1869 阅读 · 1 评论 -
国外开源IoT平台Thingsboard社区版本(V3.3.2)在Win10环境下进行源码编译及运行指南
国外开源IoT平台Thingsboard社区版本源码编译及运行指南1 下载2 软件环境及版本2.1 系统环境2.2 数据库环境2.3 前端环境2.4 编译环境2.5 应用环境3 编译4 运行51 下载使用git进行下载Thingsboard最新源码git clone git@github.com:thingsboard/thingsboard.git2 软件环境及版本2.1 系统环境OS:Windows10JDK:OpenJDK11(必须使用该版本,其它容易出错误)从其镜像的Docker原创 2021-09-30 17:12:09 · 5912 阅读 · 3 评论 -
初探RMI设计模式实现大家——JMX(Java Management Extension)
初探RMI设计模式实现大家——JMX(Java Management Extension)1 JMX组成三要素2 JMX MBean对象种类3 JMX核心要义4 JMX 官方例子5 使用Jconsole修改程序内部参数1 JMX组成三要素代理服务器MBean对象客户端2 JMX MBean对象种类Standard MBeansDynamic MBeansOpen MBeansModel MBeansMXBeans3 JMX核心要义客户端通过访问代理服务器达到掌控MBean原创 2021-09-18 09:47:25 · 290 阅读 · 0 评论 -
Eclipse Paho MQTT客户端Java源码分析
Eclipse Paho MQTT客户端Java源码分析一、如何创建MQTT客户端二、到底谁在干活2.1 从connect说起2.2 接着run2.3 执行一、如何创建MQTT客户端就像搭积木一样创建客户端定义连接配置负责类:MqttConnectOptions职责:设置连接的用户名、密码、心跳、超时、重连等参数源代码:public static MqttConnectOptions getMqttConnectOptions(String userName,String password原创 2021-08-02 17:33:56 · 1057 阅读 · 0 评论 -
IDEA跑MQTT 代理服务器moquette项目工程源代码
IDEA跑MQTT 代理服务器moquette项目工程源代码一、下载源代码二、配置环境三、运行一、下载源代码使用Git命令行下载moquette,版本是0.16。git clone git@github.com:moquette-io/moquette.git目录预览,整个项目分为三个模块,如下图所示。brokerdistributionembedding_moquette主程序在broker里。二、配置环境直接点击运行io.moquette.broker.Server类,报如下原创 2021-07-23 16:26:50 · 753 阅读 · 0 评论 -
列表遍历删除元素时报java.util.ConcurrentModificationException的原因及解决方案
列表遍历删除元素时报java.util.ConcurrentModificationException的原因及解决方案一、问题出现测试代码测试结果二、问题原因二、问题解决1、迭代器删除测试代码测试结果2、索引方式删除测试代码测试结果一、问题出现测试代码@Testpublic void listTest(){ List<String> list =new ArrayList<>(); list.add("a"); list.add("b");原创 2021-07-06 16:36:15 · 323 阅读 · 0 评论 -
STS3与IDEA文件路径解析问题复盘
问题出现搭建spring mvc boot程序,并整合mybatis。已经成功运行于Spring开发套件STS3中,移植到IDEA中出现没有sqlSesionFactory,因此也就创建不了服务层数据Bean。解决思路对比源程序文件和引用的jar包,确认无误修改application.yml文件中的端口,查看调试代码中端口号是否被修改,查看该文件是否被正确加载如果正确加载后,仍旧不能读取数据库数据,接着继续查找mybatis配置属性块,查看检索的bean包对不对,以及mapper.xml文件路径原创 2020-09-04 20:28:02 · 492 阅读 · 0 评论 -
JNI学习(0)——关于JNI
JNI是什么JNI(Java Native Language)提供了一种Java语言与C/C++通信的规范,使得Java程序能够调用C/C++语言实现的方法,从而使得方法得到复用,多用于图像、视频处理处理,在 C/C++ 中写的程序可以避开 JVM 的内存开销过大的限制、处理高性能的计算、调用系统服务等功能。提高了Java处理丰富业务的能力。当然,本地的 C/C++ 的代码也可以调用 Java 代码。JNI用在哪里JNI使用的场景多见于Android,NDK是谷歌专门为JNI开发者提供的SDK,通过N原创 2021-05-06 15:35:50 · 259 阅读 · 0 评论 -
JNI学习(3)——运行基于JNI的java程序
运行java命令java -classpath . cn.hangtian.com.modular.web.utils.JniHelloWorld执行后得到调用C函数后的方法输出,如下图所示。原创 2021-04-30 17:29:39 · 181 阅读 · 2 评论 -
JNI学习(2)——生成动态链接.dll文件
上接JNI学习(1)——生成对应的头文件。一、 软件版本JDK8IDE: Code::Blocks 20.03二、新建动态链接项目三、复制JNI相关的头文件JNI相关的头文件有2个,分别是jni.h、jni_md.h,分别位于JDK\include文件夹、JDK\include\win32文件夹中。将上一篇博客生成的.h文件及上述两个JNI头文件添加到项目中四、编写头文件对应的源文件#include "JniHelloWorld.h"#include "jni.h"JNI原创 2021-04-27 15:04:35 · 258 阅读 · 0 评论 -
JNI学习(1)——生成对应的头文件
一、确保安装了JDK环境输入以下命令检查javajavac二、编写java文件编写JniHelloWorld.java文件package cn.hangtian.com.modular.web.utils;public class JniHelloWorld { /** * native关键字,表明这个方法使用java以外的语言实现 */ public native void printHelloWorld(String something);原创 2021-04-27 14:08:10 · 920 阅读 · 0 评论 -
SpringBoot要一步一步学
SpringBoot要一步一步学序言SpringBoot启动加载SpringBoot加载自定义配置文件序言在这篇博客中记录学习SpringBoot原理收集到的一些文章。SpringBoot启动加载1,application配置文件加载过程SpringBoot加载自定义配置文件1,...原创 2020-12-09 11:14:39 · 175 阅读 · 0 评论 -
STS3|Eclipse离线(利用Jar包)安装SparkBuilderGenerator插件
STS3|Eclipse离线安装插件序言下载`SparkBuilderGenerator`插件`Jar`包将`Jar`包放`plugin`文件夹下重启`STS3|Eclipse`序言在开发中,一些Vo对象拥有很多属性,一味地利用set()方法使得代码很臃肿,利用Builder模式构建对象解放了程序员的双手,链条式复制的效率几倍快于传统的set()方法。因此在STS3|Eclipse安装插件直接生成相应的Builder模式代码成为了解决方案。笔者在直接安装SparkBuilderGenerator插件过程原创 2020-12-03 17:17:14 · 600 阅读 · 0 评论 -
IDEA多线程调试(第二篇)
这篇博客重点讲解如何利用IDEA调试多线程程序。对调试来说,多线程程序是最大的挑战。程序很难决定和控制。在排查并发错误的问题时,我们需要用少步骤多调整策略设置断点,因为很多并发错误都依赖于不同线程之间的特定交互,而侵入式调试(如计算表达式)会话会干扰它。如何使用==各种断点的属性==将干扰降低到最小?如何在程序中控制和切换不同的线程。下面通过调试不同并发错误的示例来演示`IntelliJ IDEA`如何帮助解决这些问题。翻译 2019-06-25 21:42:16 · 1754 阅读 · 0 评论