Discourse 如果没有办法通过 Web 界面进行升级的话,可以通过服务器上命令来进行手动升级。 升级的命令分别如下: cd /var/discourse git pull ./launcher rebuild app 在服务器上执行就可以了。 这个升级通常比较耗时,需要在个 10 多分钟。 https://www.ossez.com/t/discourse/14387
Discourse 如果没有办法通过 Web 界面进行升级的话,可以通过服务器上命令来进行手动升级。 升级的命令分别如下: cd /var/discourse git pull ./launcher rebuild app 在服务器上执行就可以了。 这个升级通常比较耗时,需要在个 10 多分钟。 https://www.ossez.com/t/discourse/14387
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
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
只要做过 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
介绍 简单来说,上面所有的名字指的都是一个东西 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
提示的错误信息如下: 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
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
我们将在服务器上安装 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
知道在一个包下面有什么类。 可以在新版的 IntelliJ IDEA 2023.1 中把鼠标移动到包上面。 在包上面就可以看到这个包下面的类了。 这个功能还不错呢,能知道这个包下面有什么东西。 https://www.ossez.com/t/intellij-idea-2023-1/14371
其他使用 G5 主题的 WordPress 插件可以使用相同的方法进行修改。 具体的方法可以通过修改 PHP 文件的方法来进行修改,这个修改方法的问题是,如果你对插件进行了更新,那么你还需要重复这个修改,因为更新的文件会把你的修改覆盖掉。 修改编辑器 编辑 \plugins\darna-framework\includes\shortcodes\portfolio 路径下的 portfolio.php 文件,找到这个文件中有关字段的数组定义。 把不需要的字段从这个数组列表中进行删除。 修改前端的页面显示 编辑 \plugins\darna-framework\includes\shortcodes\portfolio\templates\single 路径下的 small-slider.php 文件。 根据你的需要对 HTML 代码进行下修改。 我们的需求非常简单就是不显示左侧的内容,因此我们直接删除掉这个 Div 就可以了。 https://www.ossez.com/t/wordpress-g5plus/14372