Relative Content

K4NZDROID

category

「Blockchain」- Native Token | 原生代币

认识
在区块链中,原生代币(Native Token)是指与特定区块链网络深度绑定、作为其核心组成部分的加密货币或数字资产。它是该区块链协议自身发行的代币,通常具有不可替代的基础功能。
总结来说,原生代币是区块链网络的“血液”,既是功能必需品,也是经济激励的基础。理解它有助于分析不同公链的运作机制和投资逻辑。
构造

BTC 比特币:比特币网络的原生代币,用于转账和价值存储。
ETH 以太币:以太坊的“燃料”,支付 Gas 费并支撑 DeFi 生态。
BNB 币安链:最初为 ERC-20 代币,后成为币安智能链(BSC)的原生代币。

性质
核心特征

协议层集成:原生代币直接嵌入区块链的底层代码中,是协议的一部分(例如比特币网络的 BTC、以太坊的 ETH)。
基础功能支持:用于支付交易费用(Gas 费)、激励矿工 / 验证者(共识机制奖励)、或参与网络治理(如投票权)。
无需智能合约发行:不同于通过智能合约创建的代币(如 ERC-20 代币),原生代币由区块链协议本身生成和管理。
与“非原生代币”的区别

| 特性 | 原生代币 | 非原生代币(如 ERC-20)| |——————-|—————————|———————————-| | 发行方式 | 由协议底层生成 | 通过智能合约创建(依赖底层链)| | 功能必要性 | 网络运行必需(如支付 Gas)| 生态应用可选(如 DeFi 中的稳定币)| | 例子 | BTC(比特币)、SOL(Solana)| USDT(ERC-20 版)、UNI(Uniswap)|
重要性

经济模型核心:原生代币的价值往往反映该区块链的使用需求和安全性。
生态依赖性:大多数链上应用(如 DApps)需要原生代币才能运行。

应用

交易手续费:用户支付原生代币以执行转账或智能合约操作(如 ETH 用于以太坊交易)。
网络安全:通过经济激励维护共识机制(如 PoW 矿工或 PoS 质押者获得代币奖励)。
价值存储:作为该生态系统的“货币”,可能具有投机、支付或储备价值属性。
治理权:部分链的原生代币持有者可参与协议升级决策(如 Tezos 的 XTZ)。

参考
DeepSeek / 解释区块链中的“原生代币”概念[……]

READ MORE

「Cryptocurrency Exchange」- 区块链交易所 | Cryptocurrency Exchange

认识
区块链交易所(Cryptocurrency Exchange)是一个在线平台,提供加密货币与法币(如美元、人民币)或其他数字资产之间的交易服务。
区块链交易所是数字资产交易的核心平台,允许用户买卖、兑换加密货币和通证化资产。
区块链交易所是加密货币生态的枢纽,选择时需权衡安全性、流动性和监管合规性。对于普通用户,CEX更易用;而对技术用户,DEX提供了更自主的选择。随着行业发展,交易所将向更透明、高效的方向演进。
组成
核心技术 – 订单簿模型:记录买卖订单(CEX常用)。 – 自动做市商(AMM):通过算法和流动性池定价(DEX常用,如Uniswap的x*y=k公式)。 – 跨链技术:支持不同区块链资产交换(如THORChain)。
构建
典型交易所案例

**名称**
**类型**
**特点**

Binance
CEX
全球最大,支持多种衍生品交易。

Coinbase
CEX
合规性强,主打美国市场。

Uniswap
DEX
以太坊生态龙头,采用AMM机制。

OKX
混合型
提供CEX+DEX组合服务。

聚币 JuCoin https://www.jucoin.com/en
风险与挑战 – 安全风险:2022年FTX暴雷事件导致用户资产损失。 – 监管压力:各国政策差异大(如中国禁止,欧盟推行MiCA法规)。 – 技术风险:DEX面临前端攻击、MEV(矿工提取价值)问题。
性质
其核心功能包括: – 资产交易:支持BTC、ETH等加密货币的买卖。 – 价格发现:通过市场供需决定资产价格。 – 流动性提供:撮合买卖双方完成交易。
交易所类型
按中心化程度分类

– 中心化交易所(CEX)
– 特点:由公司运营,用户需托管资产到平台(如Binance、Coinbase)。
– 优势:高流动性、操作简便、支持法币出入金。
– 风险:黑客攻击、平台跑路(如Mt. Gox事件)。

– 去中心化交易所(DEX)
– 特点:基于智能合约运行,用户自托管资产(如Uniswap、dYdX)。
– 优势:匿名性、抗审查、无需信任第三方。
– 风险:流动性低、交易速度慢、智能合约漏洞。

按交易方式分类

– 现货交易所:即时买卖资产(如Kraken)。[……]

READ MORE

「安装ODB」

系统环境要求
ODB 1.4:适用于遵循 JDK1.3 和 1.4 的代码。 ODB 1.5:适用于为 JDK1.5 编译的代码。作者已经在 JDK1.6 版上测试过了,它可以工作。为 Java 7 编译并使用的代码使用 invokedetatch,目前似乎会导致问题。 请参阅问题:Jar 编译的 1.6 及更高版本可以在 1.8 JVM 上运行。
源码下载
git clone https://github.com/OmniscientDebugger/LewisOmniscientDebugger.git
进入源码目录并构建
cd LewisOmniscientDebugger gradle jar
构建结果
如果构建成功,没有 ERROR,会在 build/libs 目录中生成一个LewisOmniscientDebugger.jar文件。
运行程序
java -DDEBUG_DEBUGIFY -Xms400100100 -Xmx400100100 -DMEMORY=400100100 \

-cp build/libs/LewisOmniscientDebugger.jar:$CLASSPATH \
com.lambda.Debugger.Debugify \
build/classes/main/com/lambda/Debugger/Demo.class

参考文献
https://github.com/OmniscientDebugger/LewisOmniscientDebugger/blob/master/README.md#development[……]

READ MORE

「Networking」- 使用 iperf 工具,测试网络吞吐

问题描述
通过 iperf 工具,可以测试两台主机间网络吞吐,比如带宽、延迟、抖动、丢包等等。它可以测试 TCP 吞吐,也可以测试 UDP 吞吐。
该笔记将记录:如何使用 iperf 进行网络吞吐测试。
解决方案
拓扑简述
测试两台主机间的吞吐,需要在两台主机中同时运行 iperf 命令: 1)host-0 作为 Server 运行(iperf -s),负责丢弃流量。 2)host-1 作为 Client 运行(iperf -c),负责生产流量。
第一步、安装命令
在每台主机中,执行如下命令,以安装 iperf 工具:

# Debian/Ubuntu
apt-get update && apt-get install -y iperf

# RHEL/CentOS
yum install -y iperf

如果是 Window 系统,访问 iPerf – Download iPerf3 and original iPerf pre-compiled binaries 下载。
第二步、执行测试
在服务端中,执行如下命令:

iperf -s

在客户端中,执行如下命令:

iperf -c ‘<server_ip_address>’

注意事项
如果服务器开启防火墙,则需要添加端口。服务默认使用 5201 端口。也可以使用选项 -p 指定自定义端口。
参考文献
How to test the network speed/throughput between two Linux servers[……]

READ MORE

「JENKINS」- 参数化构建 | Parameterized Builds | 构建前,允许选择参数

描述
WIP
原理
Parameterized Build | 参数化构建,自定义参数
Dynamic Parameter Plug-in | 动态生成构建参数 https://wiki.jenkins.io/display/JENKINS/Dynamic+Parameter+Plug-in
Extended Choice Parameter plugin | 更加复杂的自定义参数 https://wiki.jenkins.io/display/JENKINS/Extended+Choice+Parameter+plugin
Build With Parameters
官网:https://plugins.jenkins.io/build-with-parameters/ 文档: 仓库:https://github.com/jenkinsci/build-with-parameters-plugin
针对该插件所提供 Step 说明,我们未找到相关文档。
应用
in Freestyle Project
WIP
in Pipeline
parameters | https://www.jenkins.io/doc/book/pipeline/syntax/#parameters
场景:通过第三方服务获取参数
How to Render Jenkins Build Parameters Dynamically?
例如,通过 Jenkins 部署容器时,我们希望能够在页面中选择镜像版本,而可用的镜像版本需要通过 Harbor API 获取。
Active Choices | https://plugins.jenkins.io/uno-choice/
通过该插件,我们能够通过 Javascript 或 Groovy 来动态生成选项。[……]

READ MORE

「External-DNS」- 安装 | 升级 | Installing | Upgrading

版本选择
Kubernetes version compatibility https://github.com/kubernetes-sigs/external-dns?tab=readme-ov-file#kubernetes-version-compatibility
Kubernetes >= 1.22 → External DNS >= 0.10.0
部署方式
参考 kubernetes-sigs/external-dns/docs/tutorials/ 页面,该目录提供针对多个 DNS Provider 进行配置的案例。
with Manifest / on Tencent Cloud
腾讯云 / 在 TKE 中,配置 ExternalDNS | https://cloud.tencent.com/document/product/457/72679

kubectl create namespace external-dns
kubectl config set-context –current –namespace external-dns

kubectl apply -f dnspod.yaml

Q:… failed to sync v1.Ingress: context deadline execeded … A:通过 YAML 部署,需要注意 ClusterRoleBinding.subjects[].namespace 配置,错误配置将导致其无法访问 api-server 而退出。 R:failed to sync v1.Ingress: context deadline exceeded · Issue #2407 · kubernetes-sigs/external-dns
with Manifest / on AWS
https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md
with Helm Chart
Bitnami 提供 External DNS 的 Helm Chart 包。 https://artifacthub.io/packages/helm/bitnami/external-dns
但目前(08/15/2024 External DNS Helm Chart v7.5.5)仅支持部分 DNS Provider:akamai, alibabacloud, aws, azure, azure-private-dns, cloudflare, coredns, designate, digit[……]

READ MORE

「HTTP」- 报文格式

基于 TCP/IP 通信协议来传递数据(HTML 文件,图片文件,查询结果等); HTTP 默认使用 80/TCP 端口号;
HTTP 报文是承载在 TCP 协议上的,它在 TCP 中所处位置如下:

报文格式
HTTP 报文(请求报文和响应报文)的组成: 1)起始行:在请求报文中用来说明要执行的操作,在响应报文中说明执行结果; 2)首部字段:用于补充关于请求和响应的附加信息。如请求报文首部字段 Host 指定了被请求资源的 Internet 主机,响应报文首部字段 Content-Type 表明报文主体中的内容是什么类型; 3)主体:请求报文主体是客户端要发送给 Web 服务器的数据,响应报文主体则是 Web 服务器要返回给客户端的数据,如 html 文本、图片、视频等;

请求报文和响应报文只有起始行的语法不同: method:客户端对服务器端资源执行的动作,是一个单独的词,比如 GET、POST; request-URL:请求的资源在服务器上的路径; version:报文所使用的 HTTP 版本。格式为 HTTP/<主要版本号>.<次要版本号>; status-code:HTTP 状态码,用于表示请求操作的执行结果,状态码是三位数字; reason-phrase:原因短语,使用人类可读的方式对状态码进行解释;
请求报文(Request)
客户端发送的 HTTP 请求消息包括由四个部分组成:请求行;请求头部;空行;请求数据;
下图给出了请求报文的一般格式:
更形象的图示,通常如下(下图未体现空行):
请求行
请求行由 3 个字段组成:

请求方法(Method):HTTP 操作方法,或 HTTP 使用的请求方法。作用于 URI 中指定的目标资源。比如常见的 GET/POST 等。HTTP 客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型;
统一资源标识(URI):URI 是一个统一资源标识符,它标识了请求所针对的资源;
HTTP/Version(协议版本):协议版本旨在允许发送方指示消息的格式和理解后续 HTTP 通信的能力;

请求行示例:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

根据 HTTP 标准,HTTP 请求可以使用多种请求方法: HTTP1.0 定义了三种请求方法:GET、POST 和 HEAD 方法; HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法; GET:请求指定的页面信息,服务端将返回具体内容数据;[……]

READ MORE

「CERT-MANAGER」- Route53


apiVersion: v1
kind: Secret
metadata:
name: route53-credentials-secret
stringData:
access-key-id: xxxxxxx
secret-access-key: xxxxxxx

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
email: foo@example.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-account-key
solvers:
– selector:
dnsZones:
– “example.org”
dns01:
route53:
region: eu-central-1
accessKeyIDSecretRef:
name: route53-credentials-secret
key: access-key-id
secretAccessKeySecretRef:
name: route53-credentials-secret
key: secret-access-key[……]

READ MORE

「Blockchain Bridge」- 区块链桥

认识
区块链桥是一种连接不同区块链网络的协议或系统,允许资产和信息在原本孤立的区块链之间转移和交互。随着区块链生态系统的多样化发展,桥接技术变得越来越重要。区块链桥是构建多链世界的关键基础设施,但其安全性仍需持续改进。用户在使用时应充分了解相关风险。
组成
典型的跨链桥工作流程:

资产锁定:用户在源链上锁定资产
验证信息:桥接协议验证交易有效性
资产铸造:在目标链上创建等值的封装资产
反向赎回:用户销毁目标链资产可解锁源链原始资产

构建
知名区块链桥示例
– Polygon PoS Bridge:连接以太坊和 Polygon – Avalanche Bridge:以太坊与 Avalanche 之间的桥接 – Wormhole:支持多链的通用消息传递协议 – Synapse Protocol:专注于跨链流动性
安全考虑
区块链桥面临的主要风险: – 智能合约漏洞:代码缺陷可能导致资金损失 – 验证者串谋:去中心化桥的验证节点可能作恶 – 流动性风险:目标链缺乏足够流动性 – 监管风险:不同司法管辖区对跨链的监管差异
性质
区块链桥主要解决以下问题: – 互操作性:打破区块链之间的孤立状态 – 资产转移:将代币从一条链转移到另一条链 – 信息交换:在不同链之间传递数据和智能合约调用
## 主要类型
### 1. 托管型桥(托管桥) – 依赖中心化托管人持有资产 – 用户将资产存入托管地址,在目标链上获得等值资产 – 例子:某些交易所提供的跨链服务
### 2. 非托管型桥(去中心化桥) – 基于智能合约和密码学原理 – 通过锁定和铸造机制运作 – 例子:Polygon Bridge, Arbitrum Bridge
### 3. 原生桥 – 特定区块链生态系统官方提供的桥接方案 – 通常用于连接 Layer1 和 Layer2 – 例子:Optimism Gateway, Arbitrum Bridge
### 4. 通用桥 – 支持多条区块链之间的互操作 – 设计更为复杂但灵活性高 – 例子:Multichain(原 Anyswap), cBridge[……]

READ MORE

「Nginx」- Web 服务器 | Engine X | 高性能的负载均衡器 | 反向代理

认识
官网:https://nginx.org/en/ 文档:https://nginx.org/en/docs/ 仓库:https://hg.nginx.org/nginx/
Nginx 是一个高性能的 HTTP 和反向代理服务器,它以事件驱动和异步非阻塞的方式运行,能够提供高并发的处理能力。Nginx 最初由俄罗斯的 Igor Sysoev 开发,并于 2004 年首次公开发布。它被设计为一个轻量级、高性能的服务器,能够处理大量的并发连接,并且具有较低的内存占用。
组成
Architecture and scalability
One master and several worker processes; worker processes run under an unprivileged user;
Flexible configuration;
Reconfiguration and upgrade of an executable without interruption of the client servicing; Support for kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, and poll;
The support of the various kqueue features including EV_CLEAR, EV_DISABLE (to temporarily disable events), NOTE_LOWAT, EV_EOF, number of available data, error codes;
The support of various epoll features including EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+) support;
File AIO (FreeBSD 4.3+, Linux 2.6.22+);
DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
Accept-filters (FreeBSD 4.1+, NetB[……]

READ MORE

「PROGRAMMING-LANGUAGES」- Java

认识
官网:https://www.oracle.com/java/ 文档:https://docs.oracle.com/en/java/ 仓库:None
Java 是一种面向对象、跨平台、高性能、可移植的编程语言。Java 由 Sun Microsystems 公司于 1995 年推出,后被 Oracle Corporation 收购。
Java 语言广泛应用于企业级应用、移动应用、桌面应用、互联网应用等领域。同时,Java 还拥有丰富的开发工具和技术生态,如 Eclipse、IntelliJ IDEA、Spring、Hibernate 等,使得 Java 开发变得更加高效和便捷。
JAVA 5 | JDKTM 5.0 Documentation: https://docs.oracle.com/javase/1.5.0/docs/
JAVA 6
JAVA 7 The Java® Virtual Machine Specification Java SE 7 Edition: https://docs.oracle.com/javase/specs/jvms/se7/html/index.html
JAVA 8 Java SE documentation: https://docs.oracle.com/javase/8/
http://docs.oracle.com/en/ Java API Specifications: http://www.oracle.com/technetwork/java/api-141528.html Major version number of the class file format being used:https://en.wikipedia.org/wiki/Java_class_file#General_layout JDK 5.0 Documentation: http://www.cs.mun.ca/java-api-1.5
参考
Where to find Java JDK Source Code?[……]

READ MORE

「SEGMENT-ROUTING」- SR MPLS TE | Traffic Engineering

认识
在 RSVP-TE 中:

标签分配:通过对 RSVP 协议扩展进行标签分配和扩散。每条 LSP 分配一个标签,当有多条 LSP 时,同条链路上需要分配多个标签,标签资源占用的多,标签转发表的维护工作量大;
控制平面:需要 RSVP-TE 协议作为 MPLS 的控制协议,控制平面较复杂;
可扩展性:需要维护隧道状态信息,也需要维护转发表项,可扩展性差;
路径调整和控制:无论是正常业务调整还是故障场景的被动路径调整,都需逐节点下发配置;

SR-MPLS TE(Segment Routing-MPLS Traffic Engineering)是使用 SR 作为控制协议的一种新型的 TE 隧道技术;
组成
在 SR-MPLS TE 中:

标签分配:通过扩展 IGP 来进行标签分配和扩散。每条链路仅分配一个标签,所有的 LSP 共用该标签,减少标签的资源占用,减轻标签转发表的维护工作量;
控制平面:信令控制协议为 IGP 协议扩展,减少协议数量;
可扩展性:网络中间设备不感知隧道,隧道信息携带在每个报文中,无需维护隧道状态信息,只需维护转发表项,可扩展性强;
路径调整和控制:网络中间设备不感知隧道,仅通过对入节点的报文进行标签操作即可任意控制业务路径,无需逐节点下发配置。当路径中的某个节点发生故障,由控制器重新计算路径并更新入节点的标签栈,即可完成路径调整;

SR-MPLS TE 支持采用集中式架构,控制器收集全局网络拓扑信息和 TE 信息,集中算路,然后把算路结果下发给网络设备; SR-MPLS TE 也支持使用手工方式配置;

转发路径:基于 TE 的约束属性,利用 SR 创建的隧道。SR-MPLS TE 一般有多层标签,以实现路径控制,同时也支持主备多路径;
使用多个 SID 进行组合来指导数据转发,这种工作机制可以对数据的转发路径进行一定约束,从而满足流量工程的需求,因此被称为 SR-MPLS TE(Traffic Engine);
SID 的组合形式: 使用多个 Node SID; 使用多个 Adjacency SID; 使用 Node SID 与 Adjacency SID 组合,如图中所示;

集中式 SR-MPLS TE 架构
通常 SR-MPLS TE 与控制器结合。控制器负责全局计算路径,然后在头节点下发标签栈。

扩展的 IS-IS/OSPF 携带 TE 信息,在域内泛洪 IGP 和 TE 信息,生成 TEDB;
控制器通过 BGP-LS 收集网络信息,建立全局 TE 数据库;
控制器基于约束全局算路;
控制器使用 PCEP[……]

READ MORE

「ZenTao」- 禅道 | 项目管理

认识
官网:https://www.zentao.net/ 文档:https://www.zentao.net/book/zentaopms/38.html 仓库:https://github.com/easysoft/zentaopms
禅道,ZenTao,16 年倾全力打造开源项目管理软件助力 100 万 + 团队构建研发管理平台。禅道由禅道软件(青岛)有限公司开发,国产开源项目管理软件。它集项目集管理、产品管理、项目管理、执行管理、质量管理、DevOps、知识库、AI 智能、BI 效能、工作流、学堂、反馈管理、资产库管理、组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整覆盖了研发项目管理的核心流程。禅道管理思想注重实效,功能完备丰富,操作简洁高效,界面美观大方,搜索功能强大,统计报表丰富多样,软件架构合理,扩展灵活,有完善的 API 可以调用。简而言之,禅道是个用于项目管理的软件。
组成
PHP + MySQL
构建
开源版、企业版、旗舰版、IPD 版本、迅捷版、迅捷企业版,我们主要部署开源版本,进行功能体验与查看。
ZenTao 18.5 | on Kubernetes
ZenTao on DockerHub | https://hub.docker.com/r/easysoft/zentao Docker 方式部署禅道 | https://www.zentao.net/book/zentaopms/405.html#14
通过 DeepSeek 询问,将如下配置输出为 Deployment Service PVC Ingress 资源。

sudo docker run \
–name zentao \
-p 80:80 \
-v /data/zentao:/data \
-e MYSQL_INTERNAL=true \
-d hub.zentao.net/app/zentao:18.7

软件升级
参考 禅道开源版使用帮助 / 升级禅道 / 选择和自己环境对应的升级方式 文档
DockerHub:idoop/zentao Tags | Docker Hub Dockerfile:GitHub – idoop/zentao: auto build docker image for zentao(禅道).
性质
开源版 | 企业版 | 旗舰版 | IPD 版 | https://www.zentao.net/zentao-os.html
禅道开源版
开源版不限人数、不限时间,是完全免费的版本,提供了包括项目集管理、产品管理、项目管理、执行管理、质量管理、DevOps 管理、看板管理、文档管理、组织管理和事务管理于一[……]

READ MORE

「HTTP」- 部分工作原理

原理简述
HTTP 客户端通常是浏览器,Web 服务器可以是 Apache 服务器,IIS 服务器(Internet Information Services)等;
HTTP 基于客户端 / 服务端(C/S)的架构模型。HTTP 请求及响应有如下五个步骤:

客户端与服务器建立 TCP 连接。
客户端发送 HTTP 请求。请求报文由请求行、请求头部、空行和请求数据四部分组成。
服务器接受请求并返回 HTTP 响应。响应报文由状态行、响应头部、空行和响应正文四部分组成。
释放 TCP 连接。
客户端浏览器解析响应报文并显示。客户端浏览器依次解析状态行、响应头部、响应正文并显示。如正文数据为 HTML,客户端根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示。

当释放 TCP 连接时:

若报文头部字段 Connection 的值为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接;
若 Connection 的值为 keepalive,则该连接会保持一段时间,可以继续接收请求;[……]

READ MORE

「JD-GUI」- Java Decompiler

认识
官网:https://java-decompiler.github.io/ 文档:https://java-decompiler.github.io/ 仓库:https://github.com/java-decompiler/jd-gui
Java Decompiler,又名 jd-gui,“Java Decompiler”只是一个开发工具,以便反编译和分析 Java 5 和更高版本的字节码。
JD-Core 是一个用“.class”文件重建 Java 源代码的库。JD-Core 可用于恢复丢失的源代码,并探索 Java 运行时库的源代码。
JD-GUI 使用了 JD-Core 库。所以说,Java Decompiler 是一个开发工具。
构建
方法一、直接下载已打包的 jd-gui.jar 文件。 官网首页提供了已经打包好的.jar 文件,下载即可。 官网首页:http://jd.benow.ca/
方法二、从源码编译安装 Github Repo: https://github.com/java-decompiler/jd-gui 具体的构建方法查看源码目录下的README.md文件。
构建生成的程序文件

/path/to/source/build/libs/jd-gui-x.y.z.jar
主程序文件。运行:java -jar jd-gui-x.y.z.jar

参考
JD-GUI 项目主页 JD-GUI 的维基百科主页 JD-GUI 的 GitHub 项目主页[……]

READ MORE

「MySQL」- Amazon RDS for MySQL | Aurora and RDS

认识
Amazon RDS for MySQL | Easy to manage relational databases optimized for total cost of ownership
MySQL is the world’s most popular open source relational database and Amazon RDS makes it easier to set up, operate, and scale MySQL deployments in the cloud. With Amazon RDS, you can deploy scalable MySQL servers in minutes with cost-efficient and resizable hardware capacity.
Amazon RDS for MySQL frees you up to focus on application development by managing time-consuming database administration tasks, including backups, upgrades, software patching, performance improvements, monitoring, scaling, and replication.
Amazon RDS supports MySQL Community Edition versions 8.4 and 8.0, which means that the code, applications, and tools you already use today can be used with Amazon RDS.
官网:https://aws.amazon.com/rds/mysql/ 文档:https://docs.aws.amazon.com/rds/ 仓库:
组成
WIP
构造
安全组
postgresql – Change security group on AWS RDS Database Instance – Stack Overflow
Modify the default security group,
or Create a new security group (as your have done), then go to the RDS console, click on your database, then choose Instance actions -> Modify and modify the secur[……]

READ MORE

「CONTAINER-IMAGE」- 镜像 | Image

该笔记将记录:什么是镜像,以及镜像的管理,镜像的创建,存储,修改,共享等方面的内容;
分层文件系统
容器镜像基于分层文件系统的概念,其中每个层都包含应用程序的一部分或一个组件。
镜像(image)由多个文件系统叠加而成:

bootfs,引导文件系统,位于最底端,像 Linux/Unix 的引导文件系统。用户不会和该引导文件系统有什么交互。当容器启动时,容器会被移动到内存中,而 bootfs 会被卸载,以释放由 initrd 磁盘镜像使用的内存;

rootfs,第二层文件系统,位于 bootfs 之上。rootfs 可以是多种操作系统,例如 Debain、Ubuntu 等等。rootfs 永远是只读状态,不同于传统的 Linux 引导过程(在传统的 Linux 引导过程中,rootfs 先以只读方式加载,引导结束并完成完整性检查后,会进入读写模式);

只读文件系统,位于 rootfs 之上。通过“联合挂载”(union mount)技术,在 rootfs 上挂载更多的只读文件系统。什么是联合挂载呢?联合挂载同时加载多个文件系统,但是整体上看只呈现一个文件系统。联合挂载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有底层文件系统的文件和目录;

在 Docker 中,将这些文件系统称为镜像;
一个镜像可以放到另一个镜像的顶部。位于下面的镜像成为父镜像,最底层的镜像称之为基础镜像。当从镜像中启动容器时,Docker 会在镜像的最顶层加载一个读写文件系统,我们运行的程序都是在这个读写文件系统中执行的;

在 Docker 中,使用到了一种写时复制机制。在初始化时,读写层是空的。当文件系统发生修改时,所有的变化都存在与该读写层中。比如修改一个文件,该文件会被从只读层复制到读写层,在读写层进行修改。但是该文件的只读版本依旧存在,但是它被读写层中的该文件隐藏,正是因为使用了联合挂载技术。上面的这些层共同构成了镜像。
镜像名称
docker pull | Docker Documentation Where can I find the sha256 code of a docker image? – Stack Overflow
[registry-hostname/][username/]repository-name[:tag][@digest]
registry-hostname/ | 主机名,可选

作用:指定镜像所在的 Docker Registry 地址,默认是 docker.io(即 Docker Hub)。

username/ | 用户名或组织名,[……]

READ MORE

「DDNS」- 模块交互原理

更新方式
DDNS 更新过程没有统一的标准,不同的 DDNS Server 请求更新的过程各不相同;
DDNS 采用的是 C/S 工作模式,提供了两种更新方式:
1)RFC2136 定义的 DDNS 更新方式(Client => DNS Server)
解释:设备作为 DDNS 客户端,动态更新 DNS Server 中 Domain Name 和 IP Address 的映射关系;
2)通过 DDNS Server 实现的更新方式(Client => DDNS Server => DNS Server)
解释:设备作为 DDNS 客户端,将域名与 IP 地址的映射关系发送给指定 URL 地址的 DDNS Server,然后 DDNS Server 通知 DNS Server 动态更新域名和 IP 地址之间的映射关系

1)DDNS-Client 通过 HTTP(或其他协议)访问 DDNS-Server; 2)然后 DDNS-Server 返回 DDNS-Client 的公网地址; 3)DDNS-Client 调用 DNS 服务商的接口,来更新域名所绑定的 IP-ADDR;
或者(2)DDNS-Server 直接调用[……]

READ MORE

「HTTP」- 超文本传输协议

认识
<为什么发明 HTTP 协议?>
HTTP(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,是用于分布式、协作性、超媒体信息系统的应用层协议。HTTP 自产生以来一直被万维网所使用,用于从万维网服务器传输超文本到本地浏览器;
发展历史
HTTP 在 1990 年由 Tim Berners-Lee 提出,随后 WWW 联盟成立,组织了 IETF 小组进一步完善和发布 HTTP 协议。HTTP 从最初的 HTTP/0.9 向 HTTP/3 持续演进,性能也在不断提高;

组成

性质
其采用 Client / Server 架构模型, 用户访问网站 http:// 起始的都是标准 HTTP 服务;

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求后就断开连接。无连接的好处:采用这种方式可以节省传输时间并且可以提高并发性能,不和每个用户建立长久的连接,请求一次响应一次,但若重复性建立或拆除连接影响效率。故在 HTTP/1.1 规范中,浏览器和服务器之间会维持一段时间的 TCP 连接,不会因一个请求结束就立刻断开;

媒体独立:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP 发送。客户端以及服务器通过头部字段指定适合的 MIME Type 内容类型。HTTP 传递的数据可以是 HTML,图片,文本等等。浏览器显示的内容包括 HTML、XML、GIF、Flash 等,浏览器通过 MIME Type 进行区分;

无状态:无状态是指协议对于事务处理没有记忆能力,这样做利于更快地处理大量事务,确保协议的可伸缩性。无状态意味着如果后续报文的处理需要先前交互的信息,则该信息必须重传。虽然 HTTP/1.1 是无状态协议,但是为了实现状态保持功能而引入了 Cookie 机制(Cookie 是一个保存在客户端中的文本文件,这个文件与特定的 Web 页面关联在一起,,保存了该客户端访问这个 Web 页面时的信息。)

参考
Wikipedia/HTTP Wikipedia/HTTPs[……]

READ MORE

「CSS」- 滚动条

显示滚动条
Div with horizontal scrolling only

.container {
width: 30em;
overflow-x: auto;
white-space: nowrap;
}

隐藏滚动条,但保持页面依旧能够滚动
html – Hide scroll bar, but while still being able to scroll – Stack Overflow
问题描述
我们希望隐藏滚动条(但是,后来我们又选择显示滚动条,因为隐藏滚动条会降低页面的交互。什么意思呢?假如我们阅读到文章的底部,当我们希望快速回到最开始,对于多数用户来说,鼠标拖动滚动条是唯一的选择(很少会有人使用 SPACE、PageUp、PageDown 等等快捷键)。在某种程度上,虽然隐藏滚动条也许会提高页面的美观度,但是却牺牲交互性。所以最后选择显示滚动条,不过我们依旧会记录隐藏滚动条的方法。换个角度看这个问题,如果隐藏滚动条是个明智的选择,那么隐藏滚动条绝对会是浏览器的默认行为,何时轮到我们来做这件事)。
虽然原始的 overflow: hidden; 能够隐藏滚动条,但是页面却无法滚动,而我们希望页面依旧能滚动。
该笔记将记录:在 CSS 中,用于隐藏滚动条的 CSS 代码,以及相关问题的处理方法。
解决方案
隐藏滚动条的 CSS 代码:

.container {
-ms-overflow-style: none; /* Internet Explorer 10+ */
scrollbar-width: none; /* Firefox */
}
.container::-webkit-scrollbar {
display: none; /* Safari and Chrome */
}[……]

READ MORE

「PACKAGE-MANAGEMENT」- Flatpak

认识
官网:https://flathub.org/en 文档:https://docs.flatpak.org/en/latest/ 仓库:https://github.com/flatpak/flatpak
组成

Runtime
Basic concepts/Runtime
Runtime 提供应用程序使用的基本依赖项。每个应用程序都必须针对 Runtime 构建,并且该 Runtime 必须安装在主机系统上才能运行应用程序(Flatpak 可以自动安装应用程序所需的 Runtime)。可以同时安装多个不同的 Runtime,包括同一 Runtime 的不同版本。
Runtime 与发行版无关,并且不依赖于特定的发行版版本。这意味着它们为应用程序提供了稳定的跨发行版基础,并允许应用程序继续工作,而不受操作系统更新的影响。
简单解释,应用运行还是需要桌面环境(例如 GNOME KDE 等等)提供的函数库,而 Flakpak 在计算机上统一安装并管理这些函数库,并称之为 Runtime(运行时)。
现在(07/18/2024),官方提供 Freedesktop、GNOME、KDE、elementary 这些 Runtime 环境。| Available Runtimes
Flathub | Apps for Linux
官方:https://flathub.org/en
自建:https://github.com/flatpak/flat-manager https://docs.flatpak.org/en/latest/hosting-a-repository.html
数据保存
Q:用户数据及应用数据的保存目录? A:XDG_XXX_HOME ~/.var/ R:Requirements & Conventions – Flatpak documentation
Q:其在哪里保存的 .desktop 文件? A:/var/lib/flatpak/exports/share/applications/ R:Where are all the installed flatpak apps .desktop files located · Issue #1286 · flatpak/flatpak
构造
版本选择
Releases | https://github.com/flatpak/flatpak/releases
安装
Flatpak—the future of application distribution

apt install flatpak

sudo add-apt-repositor[……]

READ MORE

「Shadowsocks」- A secure socks5 proxy

认识
根据维基百科描述:Shadowsocks,是个开源加密代理项目,在中国大陆被广泛用于规避互联网审查。它由壹位名为“clowwindy”的中国程序员于 2012 年创建的,自此该协议(SOCKS)有了很多的实现。通常,客户端软件将在运行的计算机上打开一个 SOCKS5 代理,然后可以将这些网络流量进行导向,类似于 SSH 隧道,但与 SSH 隧道不同,shadowsocks 也可以代理 UDP 流量。
组成
Local Client ⇔ SS Local <=(encrypted traffic)=> GFW <=(encrypted traffic)=> SS Server ⇔ Remote Server
构建
以下项目多数来自于 GitHub/shadowsocks 主页:https://github.com/shadowsocks
服务部署
各种实现:python、Go、Go from Outline、C with libev、C++ with Qt、Perl
仅包含客户端
shadowsocks-android::用于 Android 的 shadowsocks 客户端。 shadowsocks-windows::用于 Windows 的 shadowsocks 客户端。由 C#实现。 ShadowsocksX-NG::用于 OS X 的 shadowsocks 客户端。由 Swift 实现。 shadowsocks-qt5::跨平台的 GUI 客户端。 shadowsocks-gui::Shadowsocks 的 GUI 客户端。由 CoffeeScript 实现。 shadowsocks-iOS::用于 iOS 和 OS X 的客户端。 shadowsocks-chromeapp::这是 shadowsocks 的 Chrome 应用版本。
包含 Client 和 Server 的实现
shadowsocks-go::由 Go 语言实现。 go-shadowsocks2::又一个由 Go 语言实现。 shadowsocks-rust::由 Rust 语言实现。 libQtShadowsocks::libQtShadowsocks 是一个用 Qt5 编写的轻量和高速的 Shadowsocks 库。 shadowsocks-libqss 既可以作为 Client,也可作为 Server。 shadowsocks::由 Python 语言实现。 shadowsocks-libev::shadowsocks-libev 是嵌入式设备和低端盒子的轻量级和全功能端口。 openwrt-shadowsocks::用于的 OpenWrt/LEDE 的 Shadowsoc[……]

READ MORE

「DDNS」- 环境部署:通过 Huawei AR Router 实现

通过 DDNS Server 实现的更新方式
贝锐花生壳/ddns申请如何进行?怎么样完成ddns解析?
参考在设备手册中关于 DNS/DDNS 的内容,以获取详细的说明及配置方法;
我们使用 www.oray.cn 的 DDNS 服务,来实现动态解析,这样就不需要在内网运行独立的 DDNS Client 服务;

system-view

ddns policy gateway-ddns
method vendor-specific
interval 60
url oray://<username>:<password>@phddnsdev.oray.net username YOUR-USERNAME password YOUR-PASSWORD

interface Dialer1
ddns apply policy gateway-ddns

# 我们通过 Web 界面配置的,然后再登陆设备查看配置,而后才理解官方手册中的内容;[……]

READ MORE

「与JAVA语言有关的逆向工具」

字节码文件反编译工具
没有用户界面的命令行工具 Krakatau CFR FernFlower JAD
Mocha Wikipedia / Mocha (decompiler) Homepage: http://www.brouhaha.com/~eric/software/mocha/
有用户界面的工具 JD-GUI
既有命令行又有用户界面的工具 JADX
反汇编及汇编器
Krakatau
JODE – Java Optimize and Decompile Environment Homepage: http://jode.sourceforge.net/
调试工具
JavaSnoop
ODB – Omniscient Debugger
性能分析工具
JProbe Suite Optimizelt Suite JProfiler
混淆工具(Obfuscator)
KLASSMASTER PROGUARD RETROGUARD DASH-O JSHRINK
Zelix KlassMaster 官网:https://www.zelix.com/klassmaster/index.html
JAVA字节码查看工具
jClassLib
jclasslib 字节码编辑器是一个可视化编译 Java 类文件和包含的字节码的所有方面的工具。
jClassLib在GitHub中的项目主页 jClassLib发行历史
VisualVM
VisualVM 是个提供可视化界面的工具,用于查看在 Java 虚拟机上运行的 Java 应用程序的详细信息。
Homepage: https://visualvm.java.net/ Download: https://visualvm.github.io/ Docs: http://visualvm.java.net/docindex.html[……]

READ MORE

「ShadowsocksR」- 流量偷渡技术(手动滑稽)

它是 Shadowsocks 的强化版本(从原项目直接 Fork 出来),对原客户端及服务端进行系列改造以使其更具混淆性,提供更好的安全性与稳定性。
”工作原理“
在互联网中,有各种类型的报文,比如 HTTP、HTTPS、FTP、SSH、RDP 等等。
而 ShadowsocksR 做的事情是将数据隐藏在这些报文中:比如它发送一个 HTTP 报文,这个报文有正常的 IP 地址,有正常的 TCP 端口号,有正常的 HTTP 的请求头,但是这个 HTTP 报文的 BODY 却是我们们要”偷渡“的数据。在防火墙看来,这就是一个普通的 HTTP 报文,它没有办法识别出这个报文到底是普通的 HTTP 报文,还是带有”偷渡“数据的 HTTP 报文。
关于项目
GitHub/WooSoftware/shadowsocksr-origin (forked from shadowsocks/shadowsocks) 这个应该是原始项目。 # 09/25/2019 / Star x 206 / Latest commit fd723a9 on Jul 27, 2017
GitHub/shadowsocksr-rm/shadowsocksr (forked from WooSoftware/shadowsocksr-origin) 该项目从上一个项目 Fork 而来。 # 09/25/2019 / Star x 349 / Latest commit fd723a9 on Jul 27, 2017
GitHub/shadowsocksrr/shadowsocksr (forked from shadowsocksr-rm/shadowsocksr) 该项目又是从上一个项目复制而来。我们是从 shadowsocks-all.sh 脚本找到了该项目。 09/25/2019 / Star x 2453 / Latest commit fd723a9 on Jul 27, 2017
服务搭建
所以我们目前使用的是 GitHub/shadowsocksr-rm/shadowsocksr 项目。详细服务的搭建可以参考 README.md 或 ShadowsocksR 服务端安装教程 文件。
单用户模式
ShadowsocksR 服务端安装教程

#!/bin/sh

# 检出项目
git clone -b manyuser https://github.com/shadowsocksr-backup/shadowsocksr.git

# 初始化
cd ~/shadowsocksr
sh initcfg.sh

# 运行服务
cd ~/shadowsocksr/shadowsocks
python serv[……]

READ MORE

「CLASH」- 网络加速工具 | 科学上网

认识
Clash 是一款开源的网络代理工具,主要用于实现网络流量的代理和转发,支持多种协议(如 HTTP、SOCKS5、Shadowsocks、VMess、Trojan 等),帮助用户突破网络限制、保护隐私或优化网络连接。
官网: 文档: https://dreamacro.github.io/clash/ 仓库: https://github.com/Dreamacro/clash
组成
config.yaml
https://clash.wiki/configuration/configuration-reference.html
构建
2025 最新各平台 Clash 下载及官网​地址 | https://clashxhub.com/ Clash 官网各版本 Clash 下载地址及备份下载地址 | https://github.com/clashdownload/Clash
Clash Verge Rev

https://github.com/clash-verge-rev/clash-verge-rev

Dreamacro

Dreamacro/clash: A rule-based tunnel in Go.

以服务方式运行 Clash 服务:clash as a daemon · Dreamacro/clash Wiki · GitHub
图形客户端
Clashy

SpongeNobody/Clashy 我们目前(05/17/2021)使用 v0.2.1 版本,但是无法完全退出进程。

Clash for Windows

Fndroid/clash_for_windows_pkg: A Windows/macOS GUI based on Clash
在 Linux 下使用 Clash For Windows 管理 Clash 订阅 | Verne in GitHub

GUI.for.Clash

https://github.com/GUI-for-Cores/GUI.for.Clash

性质
多协议支持: HTTP/SOCKS 代理 Shadowsocks(SS/SSR) VMess(V2Ray 协议) Trojan WireGuard(部分版本支持)
规则分流: 根据域名、IP、地理位置等规则将流量分配到不同代理节点(如直连、代理、屏蔽广告等)。 支持自定义规则集(如引用 GitHub 上的规则列表)。
负载均衡: 自动选择延迟最低的节点,或手动配置节点切换策略。 TUN 模式(增强版支持): 实现全局[……]

READ MORE

「CONTAINER-TECHNOLOGY」- Dockerfile

简单 Dockerfile 示例

FROM ubuntu:14.04
MAINTAINER James Turnbull “jam@example.com”
RUN apt-get update && apt-get install -y nginx
RUN echo “Hi, I am in your container. ” > /usr/share/nginx/html/index.html
EXPOSE 80

Dockerfile 由指令和参数组成,每个指令为大写字母,后跟参数,按照从上到下的顺序执行;
每个指令都会创建一个新的镜像层,并进行提交。Dockerfile 的执行流程如下: 1)从基础镜像(使用 FROM 指定)运行一个容器; 2)执行 Dockerfile 中的一条指令,对容器进行修改; 3)在指令结束后,执行提交动作,提交一个新的镜像层; 4)基于刚才提交的镜像层,运行一个新的容器; 5)回到 2)直到所有指令执行完成;
如果 Dockerfile 执行失败了,我们也会得到一个可以的镜像,然后可以在这个镜像的基础上进行调试;
默认情况下,命令在 /bin/sh -c 中执行,如果在不支持 shell 的平台上、或希望使用 exec 执行,则可以使用 RUN 命令的另一种格式:

RUN [ “apt-get”, “install”, “-y”, “nginx” ]

使用数组来传递参数;
指令 EXPOSE 用于告诉 Docker 该”容器内的应用程序将会使用哪些端口“,但这并不意味着可以自动访问任意容器运行中服务的端口(这里是 80)。出于安全原因,需要用户使用 docker run 运行容器时来指定打开的端口;
常用 Dockerfile 指令
Dockerfile reference Dockerfile COPY vs ADD: key differences and best practices
CMD
Dockerfile reference | Docker Documentation / CMD
指定容器启动时运行的命令,和 docker run 命令非常相似。但是,在 docker run 中指定的命令会覆盖 CMD 指定的命令;
该指令有三种形式: 1)CMD [“executable”,”param1″,”param2″] (exec form, this is the preferred form) 2)CMD [“param1″,”param2”] (as default parameters to ENTRYPOINT) 3)CMD command param1[……]

READ MORE

「DNS」- 请求响应慢、延迟约 5 秒钟

问题描述
# 04/16/2019
主机 centos 4.18.12-1.el7.elrepo.x86_64 系统,镜像 apline 系统。在容器里 PING 某个域名,在进行 DNS 解析时会有一段时间的延迟。
使用tcpdump抓包,发现:在容器中,当 PING 某个域名时,发出两次 DNS 查询,一个 IPv4 的 A 记录,一个 IPv6 的 AAAA 记录。当 DNS 查询记录为 A 类型时,是整正常的。当 DNS 查询类型为 AAAA 时,返回的 DNS 状态码是 SERVFAIL(RCODE=2)。当然,我们的 DNS 服务器中并没有 IPv6 的记录,但是返回 SERVFAIL 是不正常的(我查了返回 SERVFAIL 的原因)。但是,在容器中 PING 百度时是正常的。因为 BAIDU 的 IPv6 返回的不是 ServFail 状态,而是 IPv6 地址。
使用 PING -4 时,马上返回结果,因为值进行了 IPv4 的 A 记录解析。然后,结合 DNS Issue #255 中的描述,我们将问题的焦点放在了 DNS 上,DNS 服务器是 BIND,使用它的了 DLZ 技术。
这里面有很多猜疑的成分,由于不具备某些方面的知识,正确的思路是:在 PING 出现问题的时候,进行调试,堆栈追踪,找到程序的行为,然后确定是 DNS 返回的 SERVFAIL 导致程序的延迟,然后了解 SERFFAIL 的状态值、含义、返回原因,然后综合处理问题。
原因分析
问题是 DNS 服务器返回 SERVFAIL 状态导致的。该状态导致了 PING 命令延迟。(这里面存在猜疑的成分,但是结论的可信度还是很高的)
还有一方面,好多程序开始尝试同时进行 IPv4 的 A 记录和 IPv4 之上的 AAAA 记录的解析。在 PHP 的 CURL 中,也出现了类似的现象,但是我没有进行验证,只是相信是同样的原因。时间成本太高了,还有很多其他的事情要做,又不是只解决这个一个问题。
解决方法
解决方法由以下几个: 1)从根本上解决 DNS 服务器返回 SERVFAIL 状态的。(我们采用的方案) 2)更换镜像或者依赖程序类库,来使得解析的时候只进行 IPv4 的 A 记录解析。(不根本,影响后期 IPv4 切换) 3)调整容器,修改 /etc/resov.conf 配置,设置 timeout 和 attempts 选项,减少重试和超时。(不根本,时间粒度大,影响体验,最多就是暂缓问题) 4)调整容器,在 /etc/hosts 手动绑定。(此方案最多就是暂缓了问题,依旧没有解决问题) 5)还有一些其他的办法,最后都被过滤掉了。技术不可行,或者工作量太大。
该问题特定于 BIND 的 DLZ[……]

READ MORE

「CONTAINER-REGISTRY」- 搭建镜像仓库 | Harbor | HARBOR

认识
Harbor —— 高级版的 Registry 服务。Harboar 是一种开源、可信、云原生的 Registry 项目,用于存储、签名、扫描内容。通过添加用户通常需要的功能(如安全性,身份,管理)来扩展开源 Docker Distribution。”拥有靠近构建和运行环境的 Registry“可以提高镜像传输效率。Harbor,支持在 Registry 之间复制映像,还提供高级安全功能(如用户管理,访问控制,活动审计)。
该笔记将记录:在 Linux 中,如何搭建 Harbor 镜像仓库,以及相关问题的处理方法。
官网:https://goharbor.io/ 文档:https://github.com/goharbor/website | https://goharbor.io/docs/2.11.0/ 仓库:https://github.com/goharbor/harbor
组成
架构:https://github.com/goharbor/harbor/wiki/Architecture-Overview-of-Harbor[……]

READ MORE

「Node.js」-

认识
Node.js is a JavaScript-based platform for server-side and networking applications. Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许开发者使用 JavaScript 来编写服务器端代码。
组成
WIP
构建
镜像仓库:https://hub.docker.com/_/node
Node.js v10.x on CentOS 7
Enterprise Linux based distributions

# Step 1 – Add Node.js Yum Repository
curl -sL https://rpm.nodesource.com/setup_10.x | bash –

# Step 2 – Install Node.js on CentOS
yum install nodejs-10.15.3 # 安装指定版本
yum install nodejs

################################################################################
# Step 3 – Check Node.js and NPM Version
################################################################################
node -v

npm -v

Node.js 15.x on Debian GNU/Linux 10 (buster)

# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_15.x | bash –
apt-get install -y nodejs

Node.js v12.x on Debian
适用发行版:Debian,Ubuntu 18.04.3 LTS
# 08/13/2019

# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_12.x | bash –
apt-get install -y nodejs

性质

异步非阻塞 I/O:Node.js 使用事件驱动、非阻塞 I/O 模型,使其轻量且高效。
单线程事件循环:采用单线程事件循环架构,适合 I/O 密集型应用。
基于 Chrome V8 引擎:使用 Google 的 V8 JavaSc[……]

READ MORE