JVM标识符的记录

先引入一下我们team的一个需求处理

https://note.youdao.com/ynoteshare1/index.html?id=a262b6b15e67b9423b207d0cee11c5c3&type=note

其中用到了

 public boolean internalElementValid(String ln) {
        boolean flag = false;
        int ci = ln.indexOf('#');
        if (ci >= 0) {
            ln = ln.substring(0, ci);
        }
        ln = ln.trim();
        int n = ln.length();
        if (n != 0) {
            if ((ln.indexOf(' ') >= 0) || (ln.indexOf('\t') >= 0)) {
                log.error("Illegal configuration-file syntax");
                flag = true;
            }
            int cp = ln.codePointAt(0);
            if (!Character.isJavaIdentifierStart(cp)) {
                log.error("Illegal provider-service path: " + ln);
                flag = true;
            }
            for (int i = Character.charCount(cp); i < n; i += Character.charCount(cp)) {
                cp = ln.codePointAt(i);
                if (!Character.isJavaIdentifierPart(cp) && (cp != '.')) {
                    log.error("Illegal provider-service path: " + ln);
                    flag = true;
                }
            }
        }
        return flag;
    }
}

这个方法是干什么的我们分析一下。

拿出每一个字符的代码点(codePoint又可以称谓代码单元)然后每一个方法去判断是否符合javaIdentifieri,是否符合java可使用的标识符。

java标识符: 用来表示类名,变量名,方法名,类型名,数组名,文件名的有效字符序列称为标识符。

规则:

1.只有字母(区分大小写),下划线,美元符号和数字组成,长度不受限制。

注:字母包括英文26个字母 ,汉字,日文,朝鲜文,俄文,希腊字母等。

2.第一个字母不能是数字。

3.不能是关键字

关键字(50):abstract    assert    boolean    break    byte    case    catch    char    class    const    continue    default

do    double    else    enum    extends    final    finally    float    for    goto    if    implements    import    instanceof    

int    interface    long    native    new    package    private    protected    public    return    short    static    strictfp

super    switch    synchronized    this    throw    throws    transient    try    void    volatile    while

4.不能是true false null(尽管三个都不是关键字)--------------------- 

 

那么我是怎么知道这个方法的

如下:

在java.uti.ServiceLoader这个类中已经有过验证,

作为一次实践,也作为一次学习~

 

### WebLogic 中支持的标识符类型及其用法 #### 1. **系统属性标识符** WebLogic 使用特定的系统属性作为标识符,用于配置和管理服务器行为。这些标识符通常以 `weblogic` 开头,并可以通过命令行参数或配置文件指定。 - **示例**: - `weblogic.system.enableSetUID`: 控制 WebLogic 是否可以在绑定到特权端口后切换 UID[^2]。 - `weblogic.system.nonPrivUser`: 指定 WebLogic 启动后运行的非特权用户账户名称。 - **用法**: 这些标识符主要用于安全性和性能优化场景。例如,通过设置 `weblogic.system.enableSetUID=true`,可以提高系统的安全性,防止敏感操作被滥用。 --- #### 2. **HTTPS 协议相关的标识符** 为了支持 HTTPS 协议,WebLogic 提供了一系列与 SSL/TLS 配置相关的标识符。 - **示例**: - `-Dweblogic.security.SSL.ignoreHostnameVerification=false`: 禁用主机名验证,适用于开发环境测试[^3]。 - `-Dweblogic.ssl.TrustKeyStore=DemoTrust`: 指定信任存储的位置和类型[^3]。 - **用法**: 在生成密钥库和证书时,需要使用工具如 `keytool` 来定义相关标识符。以下是生成密钥的具体流程: ```bash # 步骤1: 创建密钥库 keytool -genkey -v -alias weblogicsgepit -keyalg RSA -keysize 1024 \ -keypass sg@KDJ&*(epit -dname "CN=192.168.1.1,OU=XXXX,O=XXXX,L=XX市,ST=XX,C=CN" \ -validity 365 -keystore /home/weblogic/weblogic_identity.jks -storepass sgepit # 步骤2: 请求证书签名 keytool -certreq -v -alias weblogicsgepit -file /home/weblogic/cert_request.pem \ -keypass sg@KDJ&*(epit -storepass sg@KDJ&*(epit -keystore /home/weblogic/weblogic_identity.jks ``` 完成上述步骤后,需将生成的 `.jks` 和 `.pem` 文件部署至 WebLogic 的域目录下,并在控制台中配置 Keystores 选项[^3]。 --- #### 3. **补丁管理和版本控制标识符** Oracle 提供了专门的标识符来描述 WebLogic 补丁的状态和功能改进。 - **示例**: - `Patch ID`: 如 `E7HI` 或 `35586779`,表示具体的补丁编号[^4]。 - `PSU Version`: 如 `10.3.6.0.231017`,指代补丁集更新 (PSU) 版本号。 - **用法**: 当安装新补丁时,管理员应记录对应的 Patch ID 和 PSU Version,以便后续维护和回滚操作。此外,还需关注官方文档中的兼容性说明,例如 Java SE 7 是推荐搭配使用的 JDK 版本[^4]。 --- #### 4. **内存管理标识符** 针对 OutOfMemoryError (OOM) 错误,WebLogic 提供了一些专用标识符帮助诊断和调整 JVM 参数。 - **示例**: - `-Xms<size>` 和 `-Xmx<size>`: 设置初始堆大小和最大堆大小[^5]。 - `-XX:+HeapDumpOnOutOfMemoryError`: 自动捕获 OOM 发生时的堆转储文件[^5]。 - **用法**: 如果应用程序频繁触发 OOM 异常,则可通过增加 JVM 堆大小或优化代码逻辑缓解问题。例如,在处理大规模数据导出(如 CSV 文件)时,建议分批读取和写入数据,减少单次加载的压力。 --- #### 总结 WebLogic 支持多种类型的标识符,涵盖了系统配置、SSL 加密、补丁管理以及内存调优等多个方面。每种标识符都有其独特的用途和最佳实践,合理运用能够显著提升应用性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值