在 Intellij IDEA 的配置中,找到插件选项。 在插件选项中,选择需要删除的插件,然后在右侧的对话框中选择 uninstall 就可以了。 卸载以后,可能不会要求重启,为了安全起见,还是重启下你的 IDE 吧。 https://www.ossez.com/t/intellij-idea/14436
在 Intellij IDEA 的配置中,找到插件选项。 在插件选项中,选择需要删除的插件,然后在右侧的对话框中选择 uninstall 就可以了。 卸载以后,可能不会要求重启,为了安全起见,还是重启下你的 IDE 吧。 https://www.ossez.com/t/intellij-idea/14436
最近升级 Intellij IDEA 后老提示 Thrift Support 不兼容。 后来看了下这个插件已经不少时间没有更新了,也一直不知道这个插件是干什么 用的, 后来看了下,这个插件是: Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。 它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统)Cappuccino、Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk编程语言开发。 2007由Facebook开源,2008年5月进入Apache孵化器, 2010年10月成为Apache的顶级项目。 看来可能是原来调试 GRPC 时候装上的。 因为已经和现在的 IDE 不兼容了,看来还是删掉就好了。 https://www.ossez.com/t/intellij-idea-thrift-support/14435
因为使用了 CloudFlare 的反向地址。 所有 Discourse 获得的用户的 IP 地址其实是 CloudFlare 的服务器地址。 修改 好在 Discourse 已经提供了相关的解决方案。 需要在 Discourse 的配置文件中,添加下面的内容: “templates/cloudflare.template.yml” 然后重新 Build 你的 Discourse 的安装实例。 ./launcher rebuild app 使用上面的命令就可以对 Discourse 直接进行重构了,需要注意的是重构需要 10 分钟左右,这 10 分钟系统是无法访问的。 https://www.ossez.com/t/discourse-ip-cloudflare-ip/14432
最近公司的项目突然出现了下面的提示。 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 2] 问题和解决 出现上面的提示的问题是因为 SSL 签名的问题。 但是我们访问的网站的 SSL 签名是没有问题的,唯独使用公司的电脑有这个问题。 后来发现是因为公司电脑装的一个 zscaler 的安全软件导致的签名问题。 解决办法就是让 Maven 不对 SSL 进行校验,这个 zscaler 比较奇葩,对你访问的网站还先自签名一次,然后再让你访问。 解决的办法就是在需要运行 Maven 的地方,添加下面的参数: -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true 下面的参数能够让 Maven 不对访问的仓库进行签名校验。 有关参数的配置,请参考网站:Apache Maven Wagon :: Providers :: HTTP Provider – Maven Wagon HTTP 上的内容。 Maven 命令行运行 如果你使用的是 Maven 命令行来进行编译的话,你需要使用下面的命令: mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -U 这样通常能够让你在命令行中跳过 SSL 证书的检查。 IntelliJ 如果你还想让你的 IntelliJ 也跳过 SSL 证书的检查,那么你需要把下面的参数 -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true 添加到 IntelliJ 的 VM options 下。 然后再次运行 mvn 的命令,这个应该能够让你跳过 SSL 的证书检查,并完成下载。 https://www.ossez.com/t/maven-pkix-path-building-failed/14429
在本快速指南中,我们将会解释如何在 Java 把一个 List 转换为 String 字符串。 这个在某些特定的场合可能比较有用,比如说在控制台中输出 List 中的内容,转换为可以人为阅读的内容来进行调试。 使用 List 中标准的 toString() 方法 一个最简单的方法就是调用 List 中的 toString() 方法: @Test public void whenListToString_thenPrintDefault() { List<Integer> intLIst = Arrays.asList(1, 2, 3); System.out.println(intLIst); } 上面的代码将会输出: [1, 2, 3] 从技术上来说,上面的方法将会针对 List 中的每一个对象调用 toString() 方法来进行输出。 在上面的代码中,我们将会使用 Integer 类型的 toString() 方法来把元素中的内容来进行输出。 但是,这里会有一个问,如果你的 List 中使用的是自定义的对象的话,例如我们自定义一个 Person 对象,那么在输出的时候,你需要在 Person 对象中重写(override) toString() 这个方法,而不能使用默认的 toString() 方法。 如果你不这样做的话,你在控制台上大概率会看到下面输出内容: [org.baeldung.java.lists.ListToSTring$Person@1edf1c96, org.baeldung.java.lists.ListToSTring$Person@368102c8, org.baeldung.java.lists.ListToSTring$Person@6996db8] java.lang.Object - 类名 @ - 符号 d716361 - 哈希值的十六进制值 上面的数字不是你对象的实际内容,而是对象的十六进制哈希值。 使用 Collectors 的自定义实现 有时候,我们希望我们的输出使用特定的格式。 对比上面的例子,我们希望在输出的值之间使用 comma (,) hyphen (-), 或者方括号 ([, ]) 或者 braces ({, }) 来进行输出: @Test public void whenCollectorsJoining_thenPrintCustom() { List<Integer> intList = Arrays.asList(1, 2, 3); String result = intList.stream() .map(n -> String.valueOf(n)) .collect(Collectors.joining("-", "{", "}")); System.out.println(result); } 上面代码输出的内容为: {1-2-3} Collectors.joining() 方法需要一个 CharSequence,所以我们可以把数组对象中的整数转换为 String。 同时我们可以看到上面的方法使用了 Java 8 开始提供的 Stream,我们可以使用上面 Stream 的方法来对对象中内容进行输出。 其实主要理解就是使用了 Stream 方法,然后对 List 中的对象进行遍历。 使用其他外部类 我们还可以使用 Apache Commons’ StringUtils 类来得到同样的结果。 Maven 依赖 首先需要确保你的项目中有下面的依赖: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.11</version> </dependency> 实现 实现的方法也非常简单,就是使用 StringUtils.join 就可以了。 @Test public void whenStringUtilsJoin_thenPrintCustom() { List<Integer> intList = Arrays.asList(1, 2, 3); System.out.println(StringUtils.join(intList, "|")); } 输出 1|2|3 需要注意的是,就算你使用了 StringUtils.join 方法,这个方法也还是使用的是对象内部的 toString() 方法。 如果不对自有对象的 toString() 重写(override)进行重写的话,你还是可能得到的是对象的哈希值而不是对象中具体的内容。 结论 本文对如何在 Java 中对 List 中的内容进行 String 转换并且输出进行了简单的说明。 需要注意的是对 toString() 方法,在某些时候需要进行重写(override)以便于得到正确的值。 https://www.ossez.com/t/java-list/14427
概述 Discourse Math 使用 MathJax (默认) 或者 KaTeX 来让你在你的 Discourse 中使用数学公式。 仓库链接 https://github.com/discourse/discourse-math Install Guide 如何在 Discourse 中安装插件 这个插件是 Discourse 官方提供的插件,同时这个插件被官方支持和维护的。 如果你还需要其他的特性需求的话,你可以直接找 Discourse 的官方。 启用数学(Math) Math 插件可以在设置中进行设置,可以通过 admin/plugins 页面来进行配置: 特性 当你把这个插件启用成功后,你可以使用符号来对要表示的数学方法进行标记 $ 例如下面的代码: $E=mc^2$. 当然你也可以使用 $$ 来进行包装,如下面的格式: $$ \sqrt{(-1)} \; 2^3 \; \sum \; \pi $$ Discourse 数学使用的是 heuristic 模式,这样的话可以保证下面的内容不会被转换: “I spent 20$ and another 100$”。 当你使用 MathJax 的时候,你还可以启用 asciimath 来显示函数,这个时候你可以使用 % 来作为分隔符: %E=mc^2% 站点设置 查看所有基于站点管理员的 “math” 设置 名字 描述 启用 discourse math 启用 Discourse Math 插件(将会对 $ 和 $ 的代码块进行识别) discourse math 处理插件 默认的处理插件为: [mathjax/katex] discourse math 鼠标放大 当把鼠标放到数学函数上的时候放大 200% (仅对 MathJax 有效) 启用辅助设置 启用辅助设置 (仅对 MathJax 有效) discourse math 启用 asciimath 启用asciimath (将会使用 % 作为分隔符)(仅对 MathJax 有效) 如果你使用的是 Discourse 官方提供的主机服务的话,有关 Discourse Match 的插件对所有的用户都有效。官方链接为:Math | Discourse - Civilized Discussion https://www.ossez.com/t/discourse-math/14422
A B C 仓库链接 https://github.com/discourse/discourse-table-builder 概述 Table Builder 这个插件能够让用户能够在 Discourse 的编辑对话框中快速的对表格进行编辑,同时也能够快速的插入表格。 对 Discourse 主题不够了解 请参考官方有关 Discourse 主题的文章:Beginner’s guide to using Discourse Themes 确定.js 文件在 Discourse 中的: theme_authorized_extensions 添加上去。 随后可以通过手动的方式对这个主题组件进行安装。 这个组件的安装不需要对 Discourse 进行重构 特性 一个构建表格的图形化界面 在你需要构建表格的时候,可以选择插入,然后这个组件将会打开,你可以在这个组件上进行编辑内容。 同时也可以编辑表格内容,当你保存后,这个组件将会自动帮你把表格保存为 Markdown 格式。 一个强大的表格编辑器 对已经存在的表格进行编辑也非常简单。 选择需要编辑的表格,然后单击表格上 Edit Table 按钮,这个时候将会出现一个表格编辑器。 可以在这个编辑器中对表格的内容直接进行编辑。 如下图,直接单击编辑器的按钮就可以了。 打开的编辑器界面 https://www.ossez.com/t/discourse-table-builder/14423
创立于1973年,总部位于美国德克萨斯州Irving,全职雇员12,000人,是美国最大的艺术和手工艺品零售连锁店,在北美拥有和经营艺术和手工艺专业零售店,为艺术家和自己动手家居装饰客户提供产品和服务。 Michaels 路过很多次,从来没有怎么进去过,可能是因为和自己的方向不一样吧。 考古了下,主要是做手工艺品的商店。 面向艺术品和家庭设计的方向更多一些,本地的这家店还有不少好评。 https://www.isharkfly.com/t/michaels/439
最近公司电脑升级后又抽风了。 在访问 Git 的时候提示了证书签名错误。 主要提示的错误为: git.exe fetch -v --progress "origin" fatal: unable to access 'https://src.ossez.com/yhu-docs.git/': SSL certificate problem: unable to get local issuer certificate git did not exit cleanly (exit code 128) (812 ms @ 5/12/2023 9:01:11 AM) 问题和原因 上面的原因文字上说是因为证书签名的问题。 我们实际访问的时候,就是公司的电脑上面有问题。 原因是公司电脑使用了一个安全工具,这个安全工具进行自签名,把访问外部网络的证书都自签名了,但是有些 CA 又不被这个自签名工具来信任。 所以唯一的办法就是跳过 https 的校验。 系统当前用户 下面这行命令的影响范围是系统当前用户。 需要注意的是,你如果没有系统的 Admin 管理员权限的话,下面这条命令会提示无权限。 git config --system http.sslverify false 全局所有用户 可以运行下面的命令,这个命令是针对全局的所有用户的,通常这个会在 Git 的进程中使用。 如果你没有管理员权限,这条命令应该也是可以执行成功的。 git config --global http.sslverify false 针对当前仓库 使用下面的命令是针对当前仓库的。 进入当前仓库的地址,然后运行下面的命令: git config http.sslverify false 如果打开仓库的配置文件的话,我们可以看到上面的仓库配置文件只是在配置文件中添加了下面的一段话。 也可以直接打开配置文件来修改。 https://www.ossez.com/t/git/14418
概述 在本文章中,我们对如何在 Java 中对 Array 和 Set 进行转换进行一些说明和示例。 这些示例通过使用 Core Java 和一些第三方的转换工具,例如 Guava 和 Apache Commons Collections。 更多有关的文章,请访问:Java - OSSEZ 相关的内容和参与讨论。 从 List 转换为 Set 使用原生 Java 代码 让我们首先来看看如何在原生 Java 中把数组转换为 Set。 通过下面的代码,我们了解到首先需要把 Array 转换为 List,然后再把这个 List 转换为 Set。 @Test public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set<Integer> targetSet = new HashSet<Integer>(Arrays.asList(sourceArray)); } 可选的,我们可以首先定义一个 Set 对象,然后把这个 Set 对象的元素进行填充: @Test public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set<Integer> targetSet = new HashSet<Integer>(); Collections.addAll(targetSet, sourceArray); } 使用 Guava 我们可以使用 Guava 转换工具来把数组给出的数组来进行初始化。 @Test public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set<Integer> targetSet = Sets.newHashSet(sourceArray); } 使用 Apache Commons Collections 最后我们可以使用 Apache 的 Commons Collection 的库来进行处理。 这个处理方法和我们使用原生 Java 代码差不多,首先需要对 Set 进行初始化,然后再把 Set 中的元素进行填充。 @Test public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set<Integer> targetSet = new HashSet<>(6); CollectionUtils.addAll(targetSet, sourceArray); } 从 Set 转换为 Array 使用原生 Java Set 中有一个 toArray 的方法,你可以直接使用这个方法来把给出的 Set 转换为 Array。 @Test public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); Integer[] targetArray = sourceSet.toArray(new Integer[0]); } 需要注意的是,我们在这里使用了 toArray(new T[0]) 来对变量进行初始化,相对使用 toArray(new T[size]) 这个方法。 使用 toArray(new T[0]) 来对数组进行初始化更加安全,快速,易读。 使用 Guava 下一步,让我们来使用 Guava 的 API 来进行转换。 @Test public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() { Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); int[] targetArray = Ints.toArray(sourceSet); } Ints 中有一个 toArray 的方法,这个方法将会把整数类型的 List 转换为 Array。 需要注意的是 Ints 的类型需要和数组中的类型进行匹配才可以。 结论 在 Java 的集合类型直接进行转换是我们需要经常进行操作的方法和需求。 Guava 的方法 Sets 中通常能够对 Set 进行比较好的操作,包括对 Set 的对象进行初始化。 我们可以用这个对象中的初始化参数来对数组转换为 Set。 使用 Commons Collections 还是有点晦涩。 https://www.ossez.com/t/java-array-set/14417