AI正则表达式在线生成教程,一秒出正则

使用起来很简单,使用 Regex.ai 书写正则表达式,只需要三步:输入你的文本找出你需要的数据(选中即可)点击生成,完毕官网:Regex.ai - Artificial Intelligence Regular Expression Generator来源:Regex.ai - 让 AI 帮你写正则表达式|再也不用学习正则了 - 小众软件

IDEA2022最新版激活码

直接复制粘贴到activation code即可激活:F5TRIB85C7-eyJsaWNlbnNlSWQiOiJGNVRSSUI4NUM3IiwibGljZW5zZWVOYW1lIjoiU2hhbmRvbmcgVW5pdmVyc2l0eSIsImFzc2lnbmVlTmFtZSI6ImFvIGxpIiwiYXNzaWduZWVFbWFpbCI6IjI4Njc4MTYyNjhAcXEuY29tIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiRm9yIGVkdWNhdGlvbmFsIHVzZSBvbmx5IiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTQyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTRiIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJEUyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNWIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRQIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNJIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBQUyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQR08iLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBDIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBSQiIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU1ciLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUlMiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAxMjAyMjA3MTVMUEFBMDA2MDA4IiwiaGFzaCI6IjMzMjc1MzQ1LzE2OTgzMDkyOjE3NTA1Njk2NTMiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-EOufLPiykodPlQXl6v9pAd7geesvSLDca88HhDihCP5LSabX33BwTVfkSQaLUah0qyH84Shzp2NZv+LZK2dTXwwF1XCYq/9Lmt3iwlFovsrifhrfTGQCEXrlyzigZdwl+cpKysVKS9DdVKQIl64L0xQkX1ZrjOhofWUMFrgNwqie1xNn9iSSnbh/NiZ0/b7kdfMukFX995RFNkPMCvqwrGpNLFHnPoiEGqIKCh+2o8YQaO7AxPHckOLZLAF+l5dIkiM7tFdICOBT/GCEEPXG2CsVoufNvGmkdSUPr6j6+EuMAv+0iBscxQrkjfqH3wED6jXR9Pjl/+6OGaT6T4YhJg==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/wi9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD2018.1以下旧版本:F5TRIB85C7-eyJsaWNlbnNlSWQiOiJGNVRSSUI4NUM3IiwibGljZW5zZWVOYW1lIjoiU2hhbmRvbmcgVW5pdmVyc2l0eSIsImFzc2lnbmVlTmFtZSI6ImFvIGxpIiwiYXNzaWduZWVFbWFpbCI6IjI4Njc4MTYyNjhAcXEuY29tIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiRm9yIGVkdWNhdGlvbmFsIHVzZSBvbmx5IiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJSU0MiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IkRNIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiUlNGIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiRFMiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiQ0wiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlJTViIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In0seyJjb2RlIjoiRFAiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQREIiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQV1MiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQU0kiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQUFMiLCJwYWlkVXBUbyI6IjIwMjMtMDQtMTgifSx7ImNvZGUiOiJQQ1dNUCIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlBHTyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlBQQyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlBSQiIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlBTVyIsInBhaWRVcFRvIjoiMjAyMy0wNC0xOCJ9LHsiY29kZSI6IlJTIiwicGFpZFVwVG8iOiIyMDIzLTA0LTE4In1dLCJoYXNoIjoiMzMyNzUzNDUvMTY5ODMwOTI6MTc1MDU2OTY1MyIsImdyYWNlUGVyaW9kRGF5cyI6NywiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-lY3tKc+4E4dJpJFSL5ToHqXgZz/E0Q6cALc9DVk+z7E7wJbeFD+TkvcDnzdVpOG8oiCGPlpeqqJHpC8nuLd9yUY2XV0JHHwuhBmtl4iQcqeEo4tHc+SJwkhkChgYfNqzvVb2Vxm868Pd72ZRnabPmzzyheihWNbpqQTHOXc2LLJP5BGhJ3wZRl9m60iG6daqMvA0nvAc/hrdD22657O1kwwct125rfCBgvU1HnE8Abv/gDDZXxNQdhT9pUaNUAiWBmTRC3+kYAUR8jMBl6tJNZrPeLbCXmUpmku2pMjgjUb5VDBnd7SIJEBQB2CILoO1ASWzWJ/hzEnHYnZ8YzXTdQ==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/wi9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD

JDK国内高速下载镜像

官网下载:Java Downloads | OracleJdk几个高速下载镜像编程宝库:JDK下载 - 编程宝库华为:Index of java-local/jdkINJDK:Java I tell you-爪哇我话你知liferay(国外):Index of /mirrors/download.oracle.com/otn-pub/java/jdk

Github文件下载加速教程

下载加速网址:https://ghproxy.com/https://mirror.ghproxy.com/https://gh.api.99988866.xyz/项目主页:https://github.com/hunshcn/gh-proxy镜像:尝试将网址中“github.com”替换为以下镜像站:hub.fastgit.org,github.com.cnpmjs.org,hub.fastgit.xyz

IDEA激活服务器,JB产品通用

打开:https://search.censys.io/输入如下搜索:services.http.response.headers.location: account.jetbrains.com/fls-auth在返回的结果随便找一个点进去,查找到 HTTP/302,复制URL到 JB,选择许可证服务器License server,粘贴刚刚复制的网址,激活即可。ps:绝大部分都无法使用,需一个个测试,建议购买正版软件。

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。