深入研究使用DozerMapper复制List<Ojbect>前后元素类型不一致的问题
背景
某项目某个功能点是接受前端传参,将其存入MongoDB。这个传参的核心数据是一个二维数组List<List<Object>>,可以放字符串、整型,也可以放null。
在测试时发现,前端明明传的是整数,查出来却变成了字符串,比如1234变成了"1234"。经过排查发现,问题出在公司内部使用的一个Bean复制工具类,这个工具类简单封装了Dozer ...
国产化PDF处理控件Spire.PDF教程:在Java中读取PDF,提取文本、图片和表格
在数据驱动的现代开发中,高效处理 PDF 文档已成为 Java 开发者不可或缺的核心能力。无论是处理各类发票扫描件、业务分析报告,还是包含丰富图表的技术文档,掌握 Java 版的 PDF 解析技术都将大幅提升数据处理效率,充分释放文档中的商业价值。
E-iceblue旗下Spire系列产品,是文档处理组件领域的佼佼者,支持国产化信创。 ...
好用的文档工具👉smart-doc
好用的文档工具👉smart-doc
转载请注明出处https://www.cnblogs.com/funnyzpc/p/18932813
smart-doc不得不说是一款非常好用的文档工具,尤其是它几乎不与项目耦合的特性十分值得所有java开发人员日常使用它~
之前及现在用的
我从事开发以来,用过形形色色各式各样的文档工具,比如一开始的用
01. word或excel
这种文档十 ...
Viggle Ai优质视频创作指南
Viggle Ai视频创作工具(目前全球最好),操作简单、玩法多样、速度快且效果极佳,堪称“爆款视频打造神器”。
【带视频的原文链接】:
Viggle Ai优质视频创作指南
【前戏】
如果你不知道Viggle Ai是什么?请阅读:
Viggle Ai一篇吃透!
如果你不知道Viggle Ai能做什么?请阅读:
Viggle Ai视频创作最佳应用场景?
【正题】
如 ...
11-2 MySQL 数据库对象编写建议(参考)
11-2 MySQL 数据库对象编写建议(参考)
@目录11-2 MySQL 数据库对象编写建议(参考)1. 数据库对象编写建议/推荐1.1 关于库1.2 关于表、列1.3 索引1.4 SQL 编写2. 最后:
这篇文章是我蹲在《尚硅谷》-康师傅博主家的 WiFi 上(不是),连夜 Ctrl+C / V 俩的镇站神文。
这篇转载只是为了,跟大家分享好内容,没有任何商业用途 ...
替代 Postman!一款开源自托管的在线 API 接口管理平台!
大家好,我是 Java陈序员。
在企业开发中,经常涉及到 API 接口管理,常常会借助一些工具来进行接口请求调试,如 Postman 就是一款十分受欢迎的 API 接口调试工具。
今天,给大家介绍一款开源自托管的在线 API 接口管理平台,可替代 Postman!
关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典 ...
一个static关键字引发的线上故障:深度剖析静态变量与配置热更新的陷阱
引言:一个看似无害的修改
"这不可能有问题!" 我盯着屏幕上的代码变更,反复确认那个仅仅增加了static关键字的修改。
事情的起因是我们需要上线一个新的HTTP接口调用功能,为了便于测试和生产环境切换,我们使用了配置中心来管理目标URL。原本的设计是通过Config.getOrDefault("url","http://www.seven97.com")实现动态获 ...
SpringMVC流式传输媒体数据
借助Spring的ResourceHttpRequestHandler可以实现媒体数据的传输,比如在线播放视频、预览图片等。
目前已知Spring Boot传输视频流的方法
读取整个视频文件,然后把文件流写入HttpServletResponse的OutputStream。
(此方法可行,但是需要消耗较多的服务器资源,且客户端需要下载整个视频才能播放)
使用HTTP的Range实现 ...
使用IDEA创建Spring Boot 3项目(gradle篇)
tips:按照以下步骤创建项目可少走弯路
本教程测试时使用IDEA 2022.2.3,使用其他版本的操作应该也类似
父项目名:parent-project
后端子模块名:server
前端子模块名:web
请根据实际需要进行调整,如使用其他的项目名或创建多个子模块
新建父项目
选择Spring Initializr,填写项目名(parent-project)等信息,注意:S ...
天才用户取用户名为 null,害我熬夜查到两点…….
大家好,我是R哥。
前几天刷到一篇帖子:
标题直接让我笑出声。。
这年头,像字符串 "null"、"undefined"、空格、特殊符号这些聪明的用户名,绝对能让你当场沉默三秒,然后通宵 debug 八小时。
比如用户注册时输入以下内容:
{
"username": "null",
"password": "123456"
}
如果你的后 ...
oauth2在web系统中的应用
前言
在日常开发中,系统常需作为对接方或被对接方与其他系统集成。此类集成的首要环节通常是身份认证,其中 OAuth 2.0 认证尤为常见。本文旨在略过繁杂的定义与规范解读,聚焦两个典型应用场景,阐述 OAuth 2.0 的落地设计思路。
单点登录 (Single Sign-On, SSO)
单点登录场景通常采用 授权码模式 (Authorization Code Gra ...
10-2 MySQL 索引优化与查询优化
10-2 MySQL 索引优化与查询优化
@[toc]
这篇文章是我蹲在《尚硅谷》-康师傅博主家的 WiFi 上(不是),连夜 Ctrl+C / V 俩的镇站神文。
这篇转载只是为了,跟大家分享好内容,没有任何商业用途。如果你喜欢这篇文章,请一定要去原作者 B站《尚硅谷-MySQL从菜鸟到大牛》看看,说不定还能发现更多宝藏内容呢!
7. filesort算法 ...
PDF处理控件Aspose.PDF教程:在 Java 中删除 PDF 页面
您是否需要使用 Java 从PDF文档中删除特定页面?无论您是要清理空白页、删除机密部分,还是仅仅在分发前调整内容,以编程方式操作 PDF 页面的能力都将大有裨益。本指南将向您展示如何借助Aspose.PDF仅用几行代码删除不需要的页面。让我们深入了解如何使用 Java 从 PDF 文档中删除页面。
Aspose.PDF最新版下载,请联系Aspos ...
Elasticsearch 入门教程!
1. Elasticsearch 概述
1.1 Elasticsearch 是什么
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elast ...
剑指offer-8、跳台阶
题⽬
⼀只⻘蛙⼀次可以跳上1级台阶,也可以跳上2级。求该⻘蛙跳上⼀个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
示例1
输⼊:2
输出:2
解释:⻘蛙要跳上两级台阶有两种跳法,分别是:先跳⼀级,再跳⼀级或者直接跳两级。因此答案为2
示例2
输⼊:7
输出:21
示例3:
输⼊:0
输出:0
思路及解答
动态规 ...
年度爆款!全球最火的 AI 编程工具合集
大家好,我是R哥
最近 AI 编程工具大乱杀啊,自从 Cursor 火了之后,国内外各大厂都推出了各自的 AI 编程工具,我给大家分享一些,以下顺序不分先后。
国外主流的 AI 编程工具汇总:
Cursor:
出品:Anysphere
网站:https://www.cursor.com/
收费(最低 20 美元/月),个人免费使用 2 周,额度限制
WindSurf:
出品:C ...
开源精美!一款拖拽式的可视化数据大屏设计低代码平台!
大家好,我是 Java陈序员。
之前给大家介绍了几款可视化数据大屏设计工具。
大屏设计器,就它了!
酷炫大屏展示!一个完全开源的BI平台!
零门槛!人人可用的开源 BI 工具!
今天,再给大家介绍一款开源精美、纯拖拽式的可视化数据大屏设计低代码平台!
关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超 ...
你了解 Java 的类加载器吗?类加载机制是什么?什么是双亲委派机制?
什么是类加载器,类加载器有哪些?
实现通过类的全限定名获取该类的二进制字节流的代码块叫做类加载器。
主要有一下四种类加载器:
启动类加载器:用来加载 Java 核心类库,无法被 Java 程序直接引用。
扩展类加载器:它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 J ...
以接口肢解bean factory,源码没那么神秘
本来昨天在看 spring frame的八股, 看到了IOC部分,但是实在看不懂是什么东西,讲是讲源码部分,但又不完全讲,我想着那我要不自己看一下源码
这是我画的Bean Factory的大致关系图
删去了bean别名管理接口(AliasRegistry)和bean定义接口(BeanDefinitionRegistry)避免复杂理解
BeanFactory有三个子类ListableBeanFac ...
4.Java SDK源码分析系列笔记-ArrayList
目录1. 是什么2. 如何使用3. 原理分析3.1. uml3.2. 构造方法3.3. add方法3.3.1. 确保容量足够容纳新的元素3.3.2. 把元素放入数组最后一个位置3.4. remove方法【按下标删除元素】3.4.1. 把数组index位置之后的数据往前挪3.4.2. 更新size【数组不缩容】3.5. remove方法【按元素内容删除】3.5.1. 首先找到要删除的元素的下标3. ...