acme.sh 说明
acme.sh 实现了 acme 协议, 可以从 letsencrypt 以及 ZeroSSL 生成免费的证书.
主要步骤:
- 安装 acme.sh
- 生成证书
- copy 证书到 nginx/apache 或者其他服务
- 更新证书
- 更新 acme.sh
生如蝼蚁当立鸿鹄之志, 命如薄纸应有不屈之心!
acme.sh 实现了 acme 协议, 可以从 letsencrypt 以及 ZeroSSL 生成免费的证书.
主要步骤:
安装常用软件
1 | sudo apt install -y vim bash-completion net-tools network-manager lrzsz unzip |
删除自带的工具
1 | # 彻底删除 snap 以及其配置文件 |
参考文档: FineBI
强烈建议手动配置 Xmx 参数,并且推荐内存修改在 8GB <= Xmx < 32 GB(一定要 < 32GB)或者40GB <= Xmx <= 64GB
1 | JAVA_OPTS="$JAVA_OPTS -Xms4g -Xmx8g -XX:PerBytecodeRecompilationCutoff=-1 -XX:PerMethodRecompilationCutoff=-1" |
注: -Xmx 配置在 32GB ~ 40GB 会导致性能问题严重,> 64GB 性能变差。
-XX:PerBytecodeRecompilationCutoff=-1和-XX:PerMethodRecompilationCutoff=-1参数是为了避免 JVM 的 Bug,JIT 的 Deoptimization 机制可能会导致运行缓慢。
增加 MaxDirectMemorySize 配置,MaxDirectMemorySize 参数为 NIO 最大堆外内存,若不配置,MaxDirectMemorySize 的大小即等于 -Xmx
1 | JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g" |
配置 headless 模式参数,该参数只需在使用 Linux 下环境修改。
1 | JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" |
配置垃圾收集器,建议仅使用默认的 Parallel Scavenge 收集器。
若使用了 CMS(-XX:+UseConcMarkSweepGC) /G1(-XX:+UseG1GC) 收集器,该收集器的 Full GC 是单线程的,可能会导致系统长时间无响应,如非必要,建议去掉「 UseConcMarkSweepGC / UseG1GC 」参数,即可使用默认的 Parallel Scavenge 收集器。
可以通过以下方法查看当前使用的垃圾收集器
1 | % java -XX:+PrintCommandLineFlags -version |
修改 vm.max_map_count 参数
max_map_count 文件包含限制一个进程可以拥有的 VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。
调优这个值将限制进程可拥有 VMA 的数量。限制一个进程拥有 VMA 的总数可能导致应用程序出错,因为当进程达到了 VMA 上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。
建议调整 vm.max_map_count 参数的值为 262144 ,以免 VMA 数量到了默认的上限,导致 JVM 进程崩溃。
为 Tomcat 设置环境变量,创建 /usr/local/tomcat/bin/setenv.sh 文件,内容如下
more >>针对 GitHub clone 需要身份验证的仓库时,提示如下错误:
1 | remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. |
在讨论变量生命周期之前,先来了解下计算机组成里两个非常重要的概念:堆和栈。
栈(Stack)是一种拥有特殊规则的线性表数据结构。
more >>go 语言中的常量使用关键字 const 定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型,数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。
常量的定义格式和变量的声明语法类似,例如:
1 | const name [type] = value |
golang 的数值类型分为以下几种:整数、浮点数、复数,其中每一种都包含了不同大小的数值类型,例如有符号整数包含 int8、int16、int32、int64 等,每种数值类型都决定了对应的大小范围和是否支持正负符号。
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true