开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Discourse Google Analytics 3 的升级提示

根据 Google 官方的消息: Google Analytics(分析)4 是我们的新一代效果衡量解决方案,即将取代 Universal Analytics。自 2023 年 7 月 1 日起,标准 Universal Analytics 媒体资源将停止处理新的命中数据。如果您仍在使用 Universal Analytics,我们建议您为以后使用 Google Analytics(分析)4 做好准备 Discourse 也顺其自然的有了下面的提示: Your Discourse is currently using Google Analytics 3, which will no longer be supported after July 2023. Upgrade to Google Analytics 4 now to continue receiving valuable insights and analytics for your website's performance.     如果通过管理员登录到后台就可以看见了。 解决办法 解决办法也非常简单,只需要升级到 4 就可以了。 进入Admin > Settings 然后找到 ga version 的站点设置 如果你现在还使用的是 v3_analytics 的话,切换到 v4_gtag     然后再刷新管理员控制台界面就会发现没有这个提示了。 https://www.ossez.com/t/discourse-google-analytics-3/14389

2023年04月22日 0Comments 548Browse 0Like Read more
Computer Science

Java 把 Map 的值(Value)转换为 Array, List 或 Set

概述 在这篇短文中,我们将会展示如何把 Map 中的值取出来,转换为一个 Array,、List 或者一个 Set。   当然,你可以使用 Java JDK 来进行转换,你也可以使用 Guava 来进行转换。   首先,让我们来看看,如何使用原生的 Java JDK把一个 Map 的值换行为 Array。 @Test public final void givenUsingCoreJava_whenMapValuesConvertedToArray_thenCorrect() { final Map<Integer, String> sourceMap = createMap(); final Collection<String> values = sourceMap.values(); final String[] targetArray = values.toArray(new String[0]); } 在上面的代码中,我们使用了 values.toArray(new String[0]); 来对数组变量进行初始化。 根据: Arrays of Wisdom of the Ancients 文章中的内容,使用 toArray(new T[0]) 来对数组对象进行初始化更加高效和干净。 Map 的值转换为 List 下面,让我们看看如何使用原生 Java 来把一个 Map 中的值转换为 List。 @Test public final void givenUsingCoreJava_whenMapValuesConvertedToList_thenCorrect() { final Map<Integer, String> sourceMap = createMap(); final List<String> targetList = new ArrayList<>(sourceMap.values()); } 可以看到,我们还是使用了 Map 中提供的 values 方法。 使用 Guava @Test public final void givenUsingGuava_whenMapValuesConvertedToList_thenCorrect() { final Map<Integer, String> sourceMap = createMap(); final List<String> targetList = Lists.newArrayList(sourceMap.values()); } 简单来说,我们只是使用 Guava 的 Lists 方法进行了下包装,核心还是使用 Map 自带的 values 方法。 Map 的值转换为 Set 最后,让我们来看看如何使用原生 Java 来把 Map 中的值转换为 Set。 @Test public void givenUsingCoreJava_whenMapValuesConvertedToS_thenCorrect() { Map<Integer, String> sourceMap = createMap(); Set<String> targetSet = new HashSet<>(sourceMap.values()); } 结论 通过上面的代码,我们可以看到 Java 是非常容易把 Map 中的值取出来转换为其他集合的。     其中核心的方法就是其自带的 values() 方法。 然后使用其他的类包装下。   https://www.ossez.com/t/java-map-value-array-list-set/14388#h-1

2023年04月22日 0Comments 521Browse 0Like Read more
Computer Science

Discourse 服务器上手动升级

  Discourse 如果没有办法通过 Web 界面进行升级的话,可以通过服务器上命令来进行手动升级。 升级的命令分别如下: cd /var/discourse git pull ./launcher rebuild app 在服务器上执行就可以了。     这个升级通常比较耗时,需要在个 10 多分钟。 https://www.ossez.com/t/discourse/14387  

2023年04月22日 0Comments 583Browse 0Like Read more
Computer Science

JavaSE 和 Java EE 分别是什么

Java 作为最流行的编程语言受到了许多人的喜爱,其在编程中的地位自不必多说。 对于许多才刚刚入门 Java 的朋友来讲,常常会产生这样的困惑,JavaEE是什么?JavaSE又是什么? Java SE Java SE 是 Java Platform, Standard Edition 的简写。 简称就是 Java 的标准版。 如上面的图片,上面就是定义了一个 JDK,JDK 有 Java 运行时和 Java SE API。 我们都知道装 Java 的时候需要装 JDK,等于就是在你的计算机上装了这么一堆东西。 Java EE Java EE 是 Java Platform, Enterprise Edition (Java EE) 的简写。 Java Platform, Enterprise Edition (Java EE) 是基于 JDK 运行的,没有 JDK 你照样用不了 Java EE。 在 JDK 中,我们看到了 Java SE 的 API,通常这部分的 API 是基本的 API,有些企业级的应用不在这个 API 里面。 这部企业级的应用,我们就放到了 Java EE 中了。 比如说,非常古老的 EJB,就在 Java EE 里面。     Java EE 通常使用 Javax 为包的名称。 Spring 如果你想跑企业应用,光有 JDK 是不够的,最开始的时候 Java 是设计是用 EJB 的。 比如说重量级的应用服务器和容器:Weblogic 和 JBoss 就是能够支持 Java EE 的。 但是 EJB 实在太难用了,结果就有了 Spring 框架,这个框架不需要 EJB 也可以跑,结果就是 Java EE API 就从你的项目中比重直接下降。 目前开发的主流还是使用 Spring。 但是 Java EE 这套东西并没有完全丢弃,还在持续开发。 总结 Spring 就是使用 JDK 可以跑起来的企业应用。 最开始的设计初衷就是丢掉麻烦笨重的 Java EE。 https://www.ossez.com/t/javase-java-ee/14385

2023年04月21日 0Comments 497Browse 0Like Read more
Computer Science

Jakarta EE - Java EE的又一个名字

Jakarta EE并不是新技术,他的前身就是大家熟悉的Java EE,老一辈的程序员可能还记得J2EE,是的,他们都是同一个东西,至于为什么会改来改去,这里面就有很多故事了。 1998年12月,SUN公司发布了JDK1.2,开始使用Java 2 这一名称,第二年Sun公司联合IBM、Oracle、BEA等大型企业应用系统开发商共同制订了一个基于Java组件技术的企业应用系统开发规范,名字很自然就取为Java 2 Platform Enterprise Edition简称J2EE。 后面的事情大家也知道,JDK 版本升的很快,J2EE名称如果跟着Java 版本走必然会给开发人员造成困惑不利于该技术的推广,终于在 2006年,SUN公司在发布Java 5 后正式将J2EE改名为Java EE(Java Platform, Enterprise Edition),很多早期 J2EE 开发者虽然现在用的是最新的 Java EE 标准但他们还是认为自己在用 J2EE,当然,只是名称的改变并没有给开发者带来什么麻烦,相比之下下面这个就是要命。 2009 年,Oracle宣布收购 SUN,Java 相关技术自然归 Oracle 所有,在 2017 年,Oracle 宣布开源 Java EE 并将项目移交给 Eclipse 基金会。 但Oracle移交的很不痛快,提了很多要求,其中就包括不能再使用 Java EE这个 名称,虽然有点无理但Eclipse 基金会还是接受了这个要求并且改名为 Jakarta EE,经历了从 J2EE 到 Java EE的改名再经历一次似乎也无所谓,但要命的是 Oracle 要求 Jakarta EE 不能修改 javax 命名空间,这个就意味着 Java EE 移交后代码就此封版,如果想修改代码,不好意思,请另起炉灶。 我们也写了一篇: J2EE,Java EE,Jakarta EE 命名之间的恩恩怨怨 文章。 根据Oracle的要求 Jakarta EE不能修改 javax 命名空间。 那么 Jakarta EE 只能将代码中 javax 修改为 jakarta ,因此最新版本Jakarta Maven描述是长这样的: <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>10.0.0</version> <scope>provided</scope> </dependency> 根据 Java Docs 网站的内容,新的 jakarta 包中的内容长的是这样的。 https://javadoc.io/doc/jakarta.platform/jakarta.jakartaee-api/latest/index.html     从上面我们可以看到,新的包完全没有使用 javax 的定义了。 所以,如果你开始使用 jakarta.jakartaee-api 的话,那么包的命名空间就为:jakarta 这个名字确实比 javax 麻烦点,谁都知道这 Oracle 就这个尿性,所以体谅下,有比没有强。 https://www.ossez.com/t/jakarta-ee-java-ee/14384

2023年04月21日 0Comments 649Browse 0Like Read more
Computer Science

Java 依赖注入(DI)

只要做过 Java 一段时间,基本上都会遇到这个问题。 Dependency Injection (DI)中文称之为依赖注入。 都说了 Spring 的关键部分就是 Dependency Injection (DI),但是什么是依赖,为什么要注入,基本上没怎么找到使用简单文字说明的文章。 本文尝试用土话把这个问题说明白。 这里有 2 个概念,依赖和注入。 依赖 什么是依赖? 看看下面的代码 package com.ossez.java.legacy; public class MyApplication { private EmailService email = new EmailService(); public void processMessages(String msg, String rec){ //do some msg validation, manipulation logic etc this.email.sendEmail(msg, rec); } } 在 MyApplication 对象中,定义了一个 EmailService 对象。 那就说明 MyApplication 依赖 EmailService 对象。 假设如果我们在 MyApplication 对象中,不对 EmailService 对象进行初始化,猜猜会有什么? 空对象异常呀,因为被依赖的对象没有初始化,同时还有一个问题就是如果 EmailService 改变了 MyApplication 如何获得改变后的 EmailService 对象?     依赖注入 为了解决对象之间依赖同步的问题。 简单就是为了解决问题:如果 EmailService 改变了 MyApplication 如何获得改变后的 EmailService 对象? 这个解决方法就是注入依赖。 我们把依赖的对象注入到被依赖的对象中不就可以了。 Spring 容器 为了对依赖注入进行管理,我们可以手工进行管理,当然也可以使用框架,这个框架就是你常用的 Sring 容器。 我们把这个交给 Spring 的容器来进行管理,让我们更多的注重业务逻辑,而不是天天在空对象异常上徘徊。 这就是我们说的 DI 的意思。 https://www.ossez.com/t/java-di/14383

2023年04月21日 0Comments 456Browse 0Like Read more
Computer Science

J2EE,Java EE,Jakarta EE 命名之间的恩恩怨怨

介绍 简单来说,上面所有的名字指的都是一个东西 Java Platform, Enterprise Edition 上面的几个名词都是下面的内容的简写: J2EE(Java 2 Platform, Enterprise Edition) Java EE (Java Platform, Enterprise Edition) Jakarta EE(Jakarta Enterprise Edition) 上面的排序是按照时间演进来进行排序。 为什么叫 J2EE 1998年12月,SUN公司发布了JDK1.2,开始使用Java 2 这一名称。 第二年 Sun 公司联合IBM、Oracle、BEA 等大型企业应用系统开发商共同制订了一个基于Java 组件技术的企业应用系统开发规范,名字很自然就取为Java 2 Platform Enterprise Edition 简称J2EE。 最开始的时候 Sun 是希望这个标准和基于 Java 的扩展给企业用户用的。 按照 Java 版本的定义,Java 是不使用主版本的,所以自然就使用了数字 2。 这个就导致 J2EE 实在是难理解。 最令人郁闷的 EJB 就是 J2EE 中的内容,因为程序员实在烦躁这个 EJB 的容器管理和注入,所以就有了一个轻量的框架 Spring,这就是是另外一个演进路径了。 Java 1.0 的版本语言规范,现在还可以在伯克利的网站上找到:The Java Language Specification 随后在 1999 年发布的 1.2 版本中,有些扩展就从 Java 1.0 版本中拆分出来了,这些拆分的内容就被 Sun 用来作为 Java 的企业版来发布了。   对于拆分出来的有关企业部分的内容,需要一个新的名字,那么这个名字就自然的使用了 Java 2 Platform Enterprise Edition , 标准链接: Java 2 Platform, Enterprise Edition (J2EE) Overview 这个名字一直使用到了 2006 年了。 Java EE 在 2006 年 ,Java 1.5 版本发布了,J2EE 这个名字就停止使用了,确实这个名字也难理解。 J2EE 就被改成了 Java EE 或者 Java Platform Enterprise Edition 这个名字更加简单明了,去掉了比较有歧义的数字 2。 Jakarta EE 时间来到了 2017 年,这个时候 Java 已经属于 Oracle 了。 Oracle 捐 Java EE 给 Eclipse 基金会了。 按照 Oracle 的尿性,一般给点留点,Java 这几个字,Oracle 是肯定不会给的,Eclipse 拿到 Java EE 也没有办法用 Java 这个字。 咋办呀,改名字呗,Eclipse 经过社区的投票,就把 Java 改成了 Jakarta。 这一改,又和 Apache 的 Jakarta 重复了,其实也好,不管怎么样总算是有个名字了。 这就是现在有关 Java 企业版部分的内容就被称为 Jakarta EE 了。 下面的表格显示了 Jakarta EE 的版本演进史。 结论 简单一句话,上面这堆东西就是大部分可能都没有用到的 Java EE (Java 企业版)中的包。   https://www.ossez.com/t/j2ee-java-ee-jakarta-ee/14382

2023年04月21日 0Comments 521Browse 0Like Read more
Computer Science

Linux 安装 JDK 17 的时候提示字体错误

提示的错误信息如下: warning: ibm-semeru-open-17-jdk-17.0.6.10_0.36.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 9bce9629: NOKEY error: Failed dependencies: dejavu-sans-fonts is needed by ibm-semeru-open-17-jdk-17.0.6.10_0.36.0-1.x86_64 说是缺少一个 dejavu-sans-fonts 字体。 直接运行命令: [root@devops-norctx-com yhu]# yum install dejavu-sans-fonts 安装就可以了。 https://www.ossez.com/t/linux-jdk-17/14376

2023年04月07日 0Comments 964Browse 0Like Read more
Computer Science

Jenkins 如何配置 JDK

Jenkins 在编译的时候出现了一个问题是项目要求使用的是 JDK 17,但是 Jenkins 自己是运行在 JDK 11 上的,这样导致 Jenkins 没有办法进行编译。 Jenkins 中安装 JDK 的配置,也只能配置到 JDK 9。     问题和解决 这个问题其实是可以通过指定 JDK 的安装程序来解决的。 例如我们希望使用的是 JDK 17,我们可以使用 IBM 提供的 OpenJDK。 地址为: IBM Developer 然后选择 JDK 17 的版本。 在操作系统平台上选择 Linux。     然后通过右键,选择下载的地址,例如,我们找到的下载地址为:https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.6%2B10_openj9-0.36.0/ibm-semeru-open-jdk_x64_linux_17.0.6_10_openj9-0.36.0.tar.gz 返回到 Jenkins,然后选择解压 zip 或者 tar.gz 文件。 然后选择安装器,把这个 JDK 装上去就可以了。 注意,这里有可能会装不上去,这是因为你操作系统的配置可能会导致这个问题。 直接配置系统中已有的 JDK 假设我们系统中已经有了 JDK 的多个版本。     直接在 Jenkins 上配置这个JDK 的路径就可以了 我们实际配置的路径为:/usr/lib/jvm/ibm-semeru-open-17-jdk     在项目的配置中,你是可以对使用的 JDK 进行配置的。     选择你需要的 JDK 就可以了。 https://www.ossez.com/t/jenkins-jdk/14374

2023年04月07日 0Comments 1881Browse 0Like Read more
Computer Science

IBM Semeru Runtime 17.0.6.0 在 Linux 下的安装

我们将在服务器上安装 17.0.6.0 JDK。 因为我们服务器还跑了 11 的 JDK,所以实际上有 2 套 JDK 在运行。 下载 rpm 包 我们使用的是 rpm 的安装方式,下载地址为:IBM Developer 运行下面的命令来进行下载: wget https://github.com/ibmruntimes/semeru17-binaries/releases/download/jdk-17.0.6%2B10_openj9-0.36.0/ibm-semeru-open-17-jdk-17.0.6.10_0.36.0-1.x86_64.rpm 安装 运行下面的命令来进行安装: [root@devops-norctx-com yhu]# rpm -Uvh ibm-semeru-open-17-jdk-17.0.6.10_0.36.0-1.x86_64.rpm 如果你遇到缺少字体的提示,请参考: Linux 安装 JDK 17 的时候提示字体错误 页面中的内容。 随后稍等下就完成安装了。     查看安装路径 运行命令: alternatives --config java 来查看当前操作系统下安装的路径。 例如我们: [root@devops-norctx-com yhu]# alternatives --config java There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- + 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el8.x86_64/bin/java) * 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el8.x86_64/jre/bin/java) 3 /usr/lib/jvm/ibm-semeru-open-17-jdk/bin/java Enter to keep the current selection[+], or type selection number: 如果不想更改,直接退出就可以了。   https://www.ossez.com/t/ibm-semeru-runtime-17-0-6-0-linux/14375

2023年04月07日 0Comments 630Browse 0Like Read more
12345…8
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (511)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1