我们把 ChatGPT 集成到我们的公众号里面了, 忍不住每天都想问个笑话。 现在的问题就是 ChatGPT 的返回时间经常性超过 4 秒。 我们的公众号又是个人认证公众号,无法发送异步消息。 只有企业认证的公众号才能通过客服接口发送异步消息。 https://www.ossez.com/t/chatgpt/14315
我们把 ChatGPT 集成到我们的公众号里面了, 忍不住每天都想问个笑话。 现在的问题就是 ChatGPT 的返回时间经常性超过 4 秒。 我们的公众号又是个人认证公众号,无法发送异步消息。 只有企业认证的公众号才能通过客服接口发送异步消息。 https://www.ossez.com/t/chatgpt/14315
IntelliJ IDEA 是可以帮我们进行 Code Coverage 测试的。 公司方面因为有新的要求,必须要达到多少的代码覆盖率,同时他们设置了 POM 中 JCoCo 的配置,如果达不到就不让编译通过有点头疼。 IntelliJ IDEA 是可以帮我们实现这个本地的快速代码覆盖率查看的。 找到任何一个测试代码,然后选择运行代码同时进行代码覆盖检查。 当测试完成后,就可以在右侧看到我们的代码覆盖率了。 根据情况来增加测试以增加代码的覆盖率。 没有测试到的代码,也会在左侧提示这部分代码没有测试。 通过上面的工具,能够帮我们快速添加测试。 https://www.ossez.com/t/intellij-idea-code-coverage/14314
因项目的需要,构建一个微信请求的 URL。 URL 的配置为: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 从这里我们可以看到是 Get 方法中添加参数的方式来进行的。 okHttp okHttp 可以使用下面的方法来进行构建: HttpUrl httpUrl = HttpUrl.parse("https://open.weixin.qq.com/connect/qrconnect").newBuilder() .addQueryParameter("appid", wechatParameterConfMap.get(WeChatUtils.WECHAT_OFFICIAL_ACCOUNT_APP_ID)) .addQueryParameter("redirect_uri", "https://www.usvisatrack.com/wechat/callback") .addQueryParameter("response_type", "code") .addQueryParameter("scope", "snsapi_login") .addQueryParameter("state", UUID.randomUUID().toString() + "#wechat_redirect") .build(); 首先初始化一个 HttpUrl 的对象,然后在对象中 Parse 主机地址。 然后使用方法 addQueryParameter 来添加参数。 如果你有多个参数需要添加的话,直接不停的使用 addQueryParameter 来在后面添加参数就可以了。 然后使用 build 方法来返回一个 HttpUrl 对象。 因为我们需要把构建的字符串返回到前端。 所以最后还使用了 String urlStr = httpUrl.url().toString(); 这个方法,把 HttpUrl 对象中的 URL 作为字符串来进行输出。 https://www.ossez.com/t/okhttp-get-url/14313
最近,我们在使用 @ConfigurationProperties 进行注解的时候,遇到了 Not registered via @EnableConfigurationProperties, marked as Spring component, or scanned via @ConfigurationPropertiesScan 异常。 问题和解决 上面的问题的原因是:因为被注解的类没有进行实例化操作,比如没有使用@Component进行实例化操作。 所以,非常简单的,我们只需要添加 @Component 来进行实例化就可以了。 进行实例化后就可以解决 Spring 提示的问题了。 https://www.ossez.com/t/springboot-configurationproperties-not-registered-via-enableconfigurationproperties/14312
API 文档中的说法就是: Feature that determines whether encountering of unknown properties (ones that do not map to a property, and there is no “any setter” or handler that can handle it) should result in a failure 反序列化时遇到未知属性(那些没有对应的属性来映射的属性,并且没有任何setter或handler来处理这样的属性)是否抛出处理失败的异常。 说明 简单来说,就是在进行序列化或者反序列化的时候。 JSON 字符串中有一个字段,但是我们的对象没有这个字段,那么处理器应该做什么的配置。 默认情况下是抛出异常,如果不想抛出异常只想处理继续进行的话,这个参数要设置为 False。 https://www.ossez.com/t/jackson-deserializationfeature-fail-on-unknown-properties/14311
下面的命令在命令行中执行没有问题: mvn clean install -Dgpg.skip 但,如果你默认启动是 PowerShell 的话,上面的命令将会提示错误为: 实际的原因是提供的参数没有被 PowerShell 识别。 解决办法 针对 PowerShell ,我们如果需要给 Maven 提供参数的话,我们需要使用单引号。 把上面的命令修改为: mvn clean install '-Dgpg.skip' 就可以了。 同时,我们也可以从 PowerShell 上面看到参数使用不同的颜色来进行表示。 这个问题在使用 PowerShell 上运行 maven 命令行的时候常遇到。 https://www.ossez.com/t/powershell-maven/14297/1
有这么一个小需求,有 2 个 List,但是我们希望返回 Map。 List 1 的数据到大于 List 2 中的数据。 返回 List1 的 map,如果 List 中的数据在 List 2 中存在的话,Map 的值是 True,如果不存在的话,是 False。 List1 和 List2 中的元素都是整数。 Stream 我们使用了 Java 提供的 Stream,当然你也可以用 For 循环。 下面的 map1 和 map 2 是等价的。 List<Integer> reqIds = Arrays.asList(1, 2); List<Integer> reqs = Arrays.asList(1); Map<Integer, Boolean> map1 = reqIds.stream().collect(Collectors.toMap(Function.identity(), item -> reqs.contains(item))); Map<Integer, Boolean> map2 = reqIds.stream().collect(Collectors.toMap(Function.identity(), reqs::contains)); log.debug("Map Size {}",map2); 然后验证下结果。 https://www.ossez.com/t/java-8-stream-list-map/14296
前面是西南航空,现在是 FAA。 真的他们应该要换换系统了,再被印度 IT 人才折腾下去,离彻底瘫痪也不远了。 https://www.visafn.com/t/faa/233
错误信息如下: [INFO] --- maven-gpg-plugin:3.0.1:sign (sign-artifacts) @ rets-io --- gpg: no default secret key: No secret key gpg: signing failed: No secret key 这个问题的原因应该是我们最近把我们的项目发布到中央 Maven 仓库中,但是发布项目到中央仓库中需要 GPG 的签名。 我们 Jenkins 环境上没有安装 GPG 的签名。 因此我们需要把这个签名先进行安装。 安装签名的方面,请参考:将 GPG 安装到 REHL 页面中的内容。 安装 GPG 后还是提示上面的错误 我们遇到了安装成功后还是提示上面的错误。 这个原因是我们的 Jenkins 是按照在 Jenkins 的用户名下面的。 但是为了运行 GPG,我们用了 Root 账号,所以生成的 .gnupg 文件是在 root 文件夹下面的。 在服务器上,用 Jenkins 用户运行: gpg --list-secret-keys 如果看不到任何输出的话,则说明 Key 是没有办法被 Jenkins 用户访问到的。 可以采用的办法是拷贝 root 下面生成的 .gnupg 文件夹到 Jenkins 目录下。 我们的拷贝路径是拷贝到 /var/lib/jenkins 这个文件夹下。 然后再次确定有输出,再次尝试重新构建,通常能够正常解决问题。 https://www.ossez.com/t/jenkins-gpg/14287
因为我们项目需要使用 Jenkins 对文件进行签名。 但是我们遇到了 gpg: signing failed: Bad passphrase 错误。 原因和解决 通常这个问题的原因是 Key 已经配置成功并且已经被命令行找到了。 主要原因是你的秘钥密码配置的问题。 这个配置有 2 个地方,第一个地方是项目的 Pom.xml 文件。 Pom.xml 在 Pom.xml 文件中,我们可以配置 passphraseServerId 这个参数。 这个参数将会告诉 maven 到 settings.xml 文件夹中找密码。 settings.xml 这个文件中,有 2 个地方需要配置。 第一个地方为在 servers tag 中添加一个: <server> <id>ossez</id> <passphrase>**********</passphrase> </server> 在这里输入你在创建秘钥的时候输入的密码。 另外一个地方就是 profile 部分。 在这里要需要在属性 tag 中添加: <gpg.executable>gpg</gpg.executable> <gpg.keyname>9546E435CF91D08895437D0C**************</gpg.keyname> gpg.keyname 为你创建的 key 的 UID 如果你不知道你的 Key UID 是多少的话。 在你创建 key 的机器上,运行 gpg --list-secret-keys 输出的 16 进制字符串就是你需要的 UID。 完成上面 2 个配置后就可以完成文件签名了。 https://www.ossez.com/t/jenkins-gpg-signing-failed-bad-passphrase/14289