Java开源博客Halo Blog

算是最近看到的小清新的一款博客了,功能简洁,支持安装多种主题,可以作为个人博客不错的选择。详情见官网:Halo文档:Halo Documents另外之前也介绍过其他开源Java博客,感兴趣可以试试:B3log - 平等•自由•奔放的开源社区。目前 B3log 已经开源了多款产品:Sym、Solo、Pipe、Vditor、Lute、思源笔记等,欢迎大家加入,贡献开源。otale/tale: 🦄 Best beautiful java blog, worth a try

无数据库启动SpringBoot

无数据库启动SpringBoot平常写些小的springboot在线工具,但是并不需要数据库,此时启动会发现项目启动不了咯,提示If you want an embedded database...等报错,要求你配置数据库,解决方法很简单,启动类上加注解即可: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

Java读取PDF信息文本,获取电子签章信息

Java读取PDF信息文本,获取电子签章信息使用Spire组件,参考如下中文官网,分为免费版和付费版,根据自己需求而定。依赖配置收费版在 pom.xml 文件中配置 Maven 仓库路径。<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository></repositories>然后,在 pom.xml 文件中指定 Spire 产品的 Maven 依赖。如下列举了几种产品的配置方式,可参考使用。配置 Spire.PDF for Java<dependencies> <dependency> <groupId> e-iceblue </groupId> <artifactId>spire.pdf</artifactId> <version>5.4.0</version> </dependency></dependencies>免费版如需配置 Spire 产品的免费版本 jar 包,只需更改 artifactId 和 version 信息即可,如下配置方法:配置 Free Spire.PDF for Java<dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>5.1.0</version> </dependency></dependencies>完整配置参考:通过 Maven 仓库安装 Spire 系列 Java 产品 (e-iceblue.cn)Jar包导入当然你也可以直接导入jar包使用,仓库:Search - Nexus Repository Manager (e-iceblue.cn)读取电子签名信息示例import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.security.PdfCertificate;import com.spire.pdf.security.PdfSignature;import com.spire.pdf.security.X509NameType;import com.spire.pdf.widget.PdfFieldWidget;import com.spire.pdf.widget.PdfFormFieldWidgetCollection;import com.spire.pdf.widget.PdfFormWidget;import com.spire.pdf.widget.PdfSignatureFieldWidget;import java.awt.*;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;public class pdfTest { public static void main(String[] args) { PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("示例.pdf");//路径加载PDF文件 //获取域集合 PdfFormWidget widgets = (PdfFormWidget) pdf.getForm(); PdfFormFieldWidgetCollection fieldWidgetCollection = widgets.getFieldsWidget(); for (int i = 0; i < fieldWidgetCollection.getCount(); i++) { PdfFieldWidget widget = (PdfFieldWidget) fieldWidgetCollection.get(i); if (widget instanceof PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) widget; //获取签名信息 PdfSignature signature = signatureFieldWidget.getSignature(); PdfCertificate certificate = signatureFieldWidget.getSignature().getCertificate(); String certificateInfo = certificate.toString();// System.out.println(certificateInfo);// 获取证书颁发者字段(subject)// System.out.println("subject:" + certificate.getSubject());// 第二个参数为true颁发者 false为颁发给的单位// System.out.println(certificate.getNameInfo(X509NameType.SimpleName, true));// System.out.println(certificate.getNameInfo(X509NameType.SimpleName, false)); String location = signature.getLocationInfo(); String reason = signature.getReason(); String data = signature.getDate().toString(); String name = signature.getSignatureName(); PdfPageBase page = signatureFieldWidget.getPage(); System.out.println("签名位置信息:" + location + "\n" + "签名原因:" + reason + "\n" + "签名日期:" + data + "\n" + "签名人:" + name + "\n" + "颁发给:" + certificate.getNameInfo(X509NameType.SimpleName, false) + "\n" + "文档中的签名坐标:X = " + signatureFieldWidget.getLocation().getX() + " Y = " + signatureFieldWidget.getLocation().getY() ); //获取页面索引 int pageIndex = pdf.getPages().indexOf(page) + 1; int count = pdf.getPages().getCount(); System.out.println("签名所在页:" + pageIndex + "/" + count); } } }}详细文档:Spire.PDF for Java 中文教程 (e-iceblue.cn)其它参考:X509NameType 枚举 (System.Security.Cryptography.X509Certificates) | Microsoft Docs

替代postman 几款不错的国产接口测试软件

PostwomanPostwoman是一个用于替代Postman,免费开源、轻量级、快速且美观的API调试工具。其实说白了就是一款网页版的请求工具,可以免安装体积巨大的程序,简单完成测试。旧版:https://postwoman.com.cn/新版本:Hoppscotch - Open source API development ecosystemApiPostApiPost = 接口调试+接口文档快速生成+接口文档规范化管理+Mock API+接口流程测试。ApiPost产生的初衷是为了提高研发团队各个角色的效率!产品的使用受众为由前端开发、后端开发和测试人员以及技术经理组成的整个研发技术团队。APIPOST通过协作功能将研发团队的每个角色整合打通。官网:https://www.apipost.cn/ApiFoxApifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!目前我觉得唯一不好地方是居然要登陆后才能使用,若没网络或想数据更安全可能并不会选择它,期待出离线版吧!官网:Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具

idea刷新Gradle项目Failed to apply plugin 'spring-boot'报错

* What went wrong:A problem occurred evaluating script.> Failed to apply plugin 'spring-boot'. > Configuration with name 'runtime' not found.* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.* Get more help at https://help.gradle.org以上报错,原因可能是缺失.\gradle\wrapper\gradle-wrapper.jar、.\gradle\wrapper\gradle-wrapper.properties文件。补全相关文件即可。Gradlew是包装器,自动下载包装里定义好的gradle 版本,保证编译环境统一,gradle 是用本地的gradle。

IDEA 2021.3激活教程

idea 2021.2以下版本激活使用无限激活工具,下载地址(方式2):http://www.idejihuo.com/网盘下载:https://hik.lanzoup.com/i4Ygxz1whejide-eval-resetter.zip和reset_script.zip,第一个是破解工具,第二个是重置试用期的脚本。直接将压缩包ide-eval-resetter.zip拖拽到IDE的界面,如果拖拽时,IDE卡主,可以通过本地导入,菜单栏选择 File -> Setting -> Plugins ,Install plugin,然后选择插件位置,确定即可或者手动添加zhile仓库,通过配置IDE插件仓库,远程下载通过配置仓库,远程下载,不过只能下载破解工具,没有重置试用期的脚本,但是相对更新比较方便,可以及时的更新工具:点击IDE菜单栏,File -> Settings -> Plugins,点击齿轮按钮,选择Manage plugin Repositories,添加 仓库地址:https://plugins.zhile.io ,完成后,点击确定,保存。再次,返回到插件页面。搜索 “reset”,找到“IDE Eval Reset”,直接安装(我这里已经安装过了),插件安装完成,都会提示你是否重启IDE,点击“Restart IDE”,重启IDE。配置破解工具点击菜单栏 Help,选择工具的选项,打开工具界面。工具刚安装,此时看到工具界面显示 Last Reset Time:Not Yet,提示还没有生效。说明工具还没有生效。这个很重要(一些小伙伴也安装了工具,但是隔天就失效了,这个就是原因所在,根本就没有生效)。把右下角的“Auto reset…” 勾选,这样每次重启IDE的时候,试用期都会被重新初始化,恢复30天的试用期。然后,点击右下角的Reload,并点击Reset,重启IDE重启之后,我们再次打开IntelliJ IDEA,选择Help -> Eval Reset 进入到工具的界面。看下时间是否被重置,如果Last Reset Time 时间被重置,说明插件已经生效。我们这里的时间已经变成了2021-08-18idea 2021.3激活试用激活码(到2022.2.12可能失效)4SKTQTYORL-eyJsaWNlbnNlSWQiOiI0U0tUUVRZT1JMIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTQyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTRiIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJEUyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNWIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRQIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNJIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBQUyIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQR08iLCJwYWlkVXBUbyI6IjIwMjItMDItMDIiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBDIiwicGFpZFVwVG8iOiIyMDIyLTAyLTAyIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBSQiIsInBhaWRVcFRvIjoiMjAyMi0wMi0wMiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU1ciLCJwYWlkVXBUbyI6IjIw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激活码无效处理修改VM配置文件,注意不是程序路径下的vm文件,一般存储在C盘,例如:C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.3\idea64.exe.vmoptions其中Administrator替换成自己电脑的用户名Mac用户可以去这几个路径下面查找/Users/用户名/Library/Application Support/IntelliJIdeaXXXXXX,用于保存安装的插件/Users/用户名/Library/Caches/IntelliJIdeaXXXXXX,用于保存缓存、日志、以及本地的版本控制信息(local history 这个功能)/Users/用户名/Library/Preferences/IntelliJIdeaXXXXXX,用于保存自己IDEA的个人配置,相当于 Windows版本的config目录/Users/用户名/Library/ApplicationSupport/JetBrains/IntelliJIdeaXXXXXX,这个目录下也有其配置文件如果你激活码有效能进去就直接通过Help -> Edit Custom VM Options…即可修改。找到idea64.exe.vmoptions后直接记事本打开添加插件路径即可。处理完之后,再次使用上述激活码即可,不出意外重启后就能在About里看到激活到2099了。具体编辑的内容如下:-Xmx2024m-javaagent:C:\Users\Administrator\Downloads\filter-agent\filter-agent.jar插件下载:https://hik.lanzoup.com/iIbxfyzi5mj来源:http://blog.idejihuo.com/jetbrains/how-do-i-add-agent-configuration-if-the-activation-code-is-invalid.htmlhttp://blog.idejihuo.com/jetbrains/intellij-idea2021-3-latest-version-cracked-patch-permanent-cracked-free-tutorial-filter-agent.html激活程序原版仓库:https://github.com/ja-netfilter/ja-netfilter/releases

IDEA开启GitHub AI 编程工具 Copilot

GitHub 在 2021年6月份联合 OpenAI,推出了一款“GitHub Copilot”工具,可以根据上下文自动写代码,包括文档字符串、注释、函数名称、代码,只要用户给出提示,就可以写出完整的函数。 Copilot支持Neovim 和 JetBrains IDE,包含开发者常用的 IntelliJ IDEA、PyCharm 等。同时增加了对 Java 中多行补全的支持,并计划在未来几个月内支持Python、Java、Type、Ruby 和 Go之外更多的语言,似乎真的是要大干一场。如果想用Copilot的话,需要将 IntelliJ IDEA 和 PyCharm 升级到 2021.2 或以上版本、Neovim 的版本则需要升级成 0.6 或以上版本,并且需要安装 Node.js v12 或以上版本。该版本idea直接在插件市场搜索Copilot安装即可,安装重启之后就可以在工具栏看到安装好的Copilot。在插件市场搜索结果里会看到Alibaba Cloud AI Coding Assistant(Cosy),这是阿里的编码智能补全功能,相关介绍可移步:https://help.aliyun.com/document_detail/368369.htmlCosy官网:https://developer.aliyun.com/tool/cosy感兴趣的可自行研究。

IDEA开启GitHub AI 编程工具 Copilot

IDEA "Cannot resolve symbol" 解决办法

IDEA 无法识别同一个 package 或是同一个模块里的其他类,将其显示为红色,但是 compile 没有问题。鼠标放上去后显示 “Cannot resolve symbol XXX”,重启 IDEA ,重新 sync gradle,Clean build,重新导入项目 都没有用。多半是因为 IDEA 之前发生了错误,某些 setting 出了问题。解决方法如下:点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框中的 “Invalidate and Restart”,清空 cache 并且重启。语法就会正确的高亮了。

Windows上使用gitblit搭建本地git服务器

https://blog.csdn.net/longintchar/article/details/80787907

使用命令行将本地项目上传到git

使用命令行将本地项目上传到git1、(先进入项目文件夹)通过命令把这个目录变成git可以管理的仓库git init2、把文件添加到暂存区里面,不要忘记后面的小数点“.”,意为添加当前文件夹下所有文件git add .3、把文件提交到仓库,引号内为提交说明git commit -m "my first commit"4、关联到远程库git remote add origin 你的远程库地址# 例如:$ git remote add origin git@github.com:cutedandan/test.git5、获取远程库与本地同步合并(如果远程库不为空,必须做这一步,否则后面的提交会失败),如果远程库是空的可以忽略git pull --rebase origin master6、把本地库的内容推送到远程,实际上是把当前分支master推送到远程,然后输入密码,验证通过即开始上传git push -u origin master如果项目很大,想用idea推送项目到仓库会很慢,可以试试命令行方式。