「CODING」- JavaScript

认识
JavaScript 是一种在网页浏览器中常用的编程语言。
组成
WIP
性质
它是一种解释型的、高级的、动态的、弱类型的、基于原型的语言,具有一等公民的函数。
JavaScript 支持多种编程范式,包括过程式、对象导向和函数式编程。它的语法主要受到了 C 语言的影响。
需要注意的是,尽管 Java 和 JavaScript 的名称相似,但它们是完全不同的两种语言,具有不同的语法、用途和设计哲学。
应用
JavaScript 的主要用途是为网站添加交互功能。它可以用来创建动态 HTML 内容,提供网页动画,处理用户输入,管理 cookies,以及与服务器进行通信。
虽然 JavaScript 主要用于浏览器环境,但它也可以在其他类型的环境中运行,例如 Node.js 或各种嵌入式设备。
此外,JavaScript 也被用于服务器端编程(如 Node.js),移动应用开发(如 React Native 和 Ionic),桌面应用开发(如 Electron),以及一些其他领域。[……]

READ MORE

「CSS」- position

四个值
绝对定位:absolute、fixed 相对定位:relative 默认取值:static
relative

定位基准:相对于原来位置移动,元素设置 relative 之后仍然处在文档流中,不影响其他元素的布局;
给元素设置 relative 参数,并设置 top、left 等参数,虽然宽高都没变,但元素相对于原来位置偏移,所以撑大容器;

absolute

定位基准:元素会脱离文档流,相对于最近的非 static(即 relative、absolute、fixed 或 sticky)祖先元素定位。如果没有这样的祖先元素,则相对于初始包含块(通常是 <html>);
滚动影响:元素会随页面滚动而移动。
父元素设置了相对定位或绝对定位,元素会相对于离自己最近的设置了相对或绝对定位的父元素进行定位(或者说离自己最近的不是static的父元素进行定位,因为元素默认是static)。

fixed

定位基准:相对于视口(viewport)定位,即使页面滚动,元素位置也不会改变。
滚动影响:元素不会随页面滚动,始终固定在视口中的同一位置。

说明:元素在没有定义宽度的情况下,宽度由元素里面的内容决定,效果和用 float 方法一样。
场景 | 将元素悬浮在右上角 | Float a div in top right corner
Float a div in top right corner without overlapping sibling header
问题描述
将元素悬浮在右上角,使用绝对定位即可,并无难度。但是我们希望:将元素悬浮在其他元素内部的右上角,效果类似如下:
解决办法
在示例中的 HTML 代码:

<section>
<h1>some long long long long header, a whole line, 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</h1>
<div>
<button>button</button>
</div>
</section>

实现功能的 CSS 代码:

section {
width: 50%;
border: 1px solid;
padding: 15px;
margin: 50px;

position: relative;
}

h1 {
display: inline;
}[……]

READ MORE

「DNS」- 域名解析系统 | Domain Name System

认识
在网络中,每个节点都有自己唯一的 IP Address,通过 IP Address 可以实现节点之间的相互访问。但是,如果和所有的节点进行通信都使用 IP Address 的方式,人们很难记住这么多 IP Address 信息。针对该问题,提出 DNS 技术,将难以记忆的 IP Address 映射为字符类型的地址。
在网络中,每台主机都是由 IP Address 来标识的,用户只有获得待访问主机的 IP Address 才能够成功实现访问操作。但是,对于用户来讲,记住主机的 IP Address 是相当困难的。所以,设计了一种字符串形式的主机命名机制,这些主机名与 IP Address 相互对应,这就是域名系统(DNS,Domain Name Sytem)。
DNS,Domain Name System,域名解析系统,负责将域名解析到网络地址的协议;
组成

性质
授权与分层负责 每个上一层的 DNS 伺服器所记录的资讯,其实只有其下一层的主机名称
应用
域名系统解决 IP Address 信息不便于记忆这一问题。用户进行访问网络主机操作时,可以直接使用便于记忆的、有意义的域名,由网络中的域名解析服务器将域名解析为正确的 IP Address 信息;
当我们在浏览器中输入一个域名访问某个网站时,这个域名最终会被解析为一个 IP Address,我们的浏览器实际是在和这个 IP Address 进行通信;
全世界一共有多少网站,多少注册域名?如何获得所有网站的域名? http://dailychanges.domaintools.com/new-domains/ http://www.viewdns.info/
参考
Wikipedia/Domain Name System 鳥哥的 Linux 私房菜 / 第十九章、主機名稱控制者: DNS 伺服器[……]

READ MORE

「AAA」- AAA | Authentication 认证 | Authorization 授权 | Accounting 计费

认识
针对任何网络,用户管理都是最基本的安全管理要求之一。如果网络未提供功能,则该网络是个“开放 Open”的网络,任何人都能介入并不受监管。早期,网络中并无针对特定用户的监管技术,所以管理员只能针对用户配置静态的策略。
AAA 是 Authentication(认证)、Authorization(授权)、Accounting(计费)的简称,是网络安全的一种管理机制,提供认证、授权、计费三种安全功能。简而言之,AAA 是种网络中进行用户管理(认证、授权、计费)的方法。
AAA 是种管理框架,它提供授权部分用户访问指定资源和记录这些用户操作行为的安全机制。因其具有良好的可扩展性,并且容易实现用户信息的集中管理而被广泛使用。
组成
在常见 AAA 架构中,包括 User、NAS(Network Access Server)、AAA Server 部分:

NAS(Network Access Server)
1)其负责集中收集和管理 User 的访问请求; 2)其能够创建多个 Domain 来管理 User。不同的 Domain 能够关联不同 AAA 方案(认证方案,授权方案,计费方案);
交互流程
当 NAS 收到 User 接入网络的请求时,NAS 会根据用户名来判断用户所在的 Domain,根据该域对应的 AAA 方案对用户进行管控;
构建
AAA 能够通过多种协议来实现。在实际应用中,最常使用 RADIUS 协议,还有 TACACS+、Diameter 协议。
性质
认证 Authentication
验证用户是否可以获得网络访问权。例如,通过 Username Password 进行认证,如果认证失败,则拒绝用户接入。
认证策略还能够控制用户的接入点。哪怕用户凭证正确,但是从错误的网络中登录,则可以拒绝用户。
意图:验证用户是否可以获得访问权,确定哪些用户可以访问网络;
AAA 支持的认证方式有: 1)不认证, 2)本地认证:在本地认证 3)远端认证:在 AAA Server 中,完成认证;
能够针对不同用户,采用不同的认证策略;
支持通过 RADIUS 协议或 HWTACACS(HuaWei Terminal Access Controller Access Control System)协议进行
授权 | Authorization
意图:授权用户可以使用哪些服务;
AAA 支持的授权方式有:不授权,本地授权,远端授权;
授权信息包括:所属用户组、所属 VLAN、ACL 编号等;
授权用户可以使用哪些服务或权限。当用户通过认证之后,AAA Server 向 NAS 下发用户相关的网[……]

READ MORE

「PROXY-SERVER」- TSOCKS | Transparent SOCKS Proxying

认识
TSOCKS 实现 SOCKS4/5 协议,其提供透明网络访问 —— 即使应用程序不支持代理功能,也能通过 tsocks 来代理其网络流量。
Homepage:http://tsocks.sourceforge.net/ Homepage: http://tsocks.sf.net SourceForge:https://sourceforge.net/projects/tsocks/?source=directory
组成
TSOCKS 会拦截应用程序建立 TCP 连接的调用,并根据需要透明代理他们,使得无需重新编译或者修改应用程序就可以使用代理网络;
应用
该笔记将记录:在 Linux 中,如何安装及使用 TSOCKS 以及常见问题的解决方案;
通过仓库安装

# Debian-base
apt-get install tsocks

通过编译安装
参考 TSOCKS 主页,下载该项目源码,参考源码目录的 INSTALL 文件中的说明进行安装;
程序文件
inspectsocks,用于检测 SOCKS 服务端的协议等级; saveme,取消连接 ld.so.preload 文件; tsocks,tsocks 库和应用程序之间的封装,用于使用 tsocks 运行程序; validateconf,用于检查配置文件格式是否正确;[……]

READ MORE

「Elasticsearch」- 安装中文分析器

仓库:https://github.com/infinilabs/analysis-ik
中文分析器:GitHub/medcl/elasticsearch-analysis-ik
用作中文分词
Elasticsearch 7.6.2
第一步、下载插件(可选)

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

第二步、安装插件
在 CentOS 7.4 中,如果使用 YUM 安装 Elasticsearch 服务,则:

#!/bin/sh

cd /usr/share/elasticsearch

# 直接在线安装
./bin/elasticsearch-plugin install \
“https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip”

# 或者使用离线(第一步下载的安装包)
./bin/elasticsearch-plugin install “file:///path/to/elasticsearch-analysis-ik-7.6.2.zip”

第三步、重启服务

systemctl restart elasticsearch.service

第四步、验证服务

# curl http://10.10.50.233:9200/_cat/plugins
elasticsearch-deve analysis-ik 7.6.2

Elasticsearch 6.3.2

# 安装
# CentOS 7.4,如果你使用YUM源来安装Elasticsearch服务
cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install \
“https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip”

# 版本一定要对应,否则安装会产生类似如下的提示:
# Plugin [analysis-ik] was built for Elasticsearch version 6.3.0 but version 6.3.2 is runni[……]

READ MORE

「KUBERNETES」- 网络环境设置 | 网络调试工具

kubectl create deployment busybox –image=busybox — sleep infinity
kubectl apply -f ./network-multitool.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
name: debugbox
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: debugbox
template:
metadata:
labels:
app: debugbox
spec:
containers:
– name: debugbox-busybox
image: busybox
imagePullPolicy: IfNotPresent
command: [‘sh’, ‘-c’, ‘echo Container is Running ; sleep infinity’]
– name: debugbox-network
image: praqma/network-multitool:latest
command:
– nc
– -l
– -k
– -p
– “80”
– -e
– ls
ports:
– containerPort: 80

apiVersion: v1
kind: Service
metadata:
name: debugbox
namespace: default
spec:
ports:
– name: debugging-port
nodePort: 32767
port: 2767
protocol: TCP
targetPort: 80
selector:
app: debugbox
type: NodePort
externalTrafficPolicy: Local[……]

READ MORE

「Lantern」

官网:https://getlantern.org 仓库:https://github.com/getlantern/lantern
系统环境:Kali GNU/Linux Rolling 反正我没有配置成功。。。
参考文献
Lantern – Wikipedia[……]

READ MORE

「HUAWEI-ENSP」- 实验学习:防火墙

实验需求

实验过程
通过 Web / CLI 访问防火墙
配置过程:

# 添加 Cloud 设备并进行接口配置,连接 FW GE0/0/00 接口
# 配置 Cloud 绑定的 Loopback 接口,使用 192.168.0.100/24 地址

# 防火墙开机,并登陆设备,admin / Admin@123
# 按照提示修改密码,admin / Huawei@123

[USG6000V1]interface GigabitEthernet 0/0/0
[USG6000V1-GigabitEthernet0/0/0]service-manage all permit

测试方法:

测试主机能够通过浏览器访问防火墙
firefox https://192.168.0.1:8443
admin / Huawei@123

Q:在模拟器中,无法通过 Web 访问运行的防火墙? A:模拟器配置或网桥配置:

# 或,模拟器的默认配置不同,导致无法访问
# 或,需要进入 GigabitEthernet0/0/0 接口,开启 service-manage 配置
# 或,Cloud 桥接网卡配置错误
# 或,需要检查 Cloud 桥接网卡的地址配置

Client1 能够 ping 通其网关 10.0.12.254
配置过程:

[USG6000V1-GigabitEthernet1/0/1] ip address 10.0.12.254 24
[USG6000V1-GigabitEthernet1/0/1] service-manage ping permit

[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add interface GigabitEthernet 1/0/1

测试方法:

[Client1] ping FW1 10.0.12.254 能够成功;

实现 Client1 访问 Server1 的 HTTP 服务

[USG6000V1]interface GigabitEthernet 1/0/2
[USG6000V1-GigabitEthernet1/0/2]ip address 10.0.23.254 24

[USG6000V1]firewall zone untrust
[USG6000V1-zone-untrust]add interface GigabitEthernet 1/0/2

[USG6000V1]security-policy
[USG6000V1-policy-securit[……]

READ MORE

「Kubernetes」- kubeconfig

认识
kubeconfig 文件是 Kubernetes 中用于配置集群访问信息的配置文件,它包含了连接到 Kubernetes 集群所需的所有信息。命令 kubectl 需要使用 kubeconfig 来连接 Kubernetes 集群。
组成
WIP 针对 kubeconfig 文件,其文件的结构。
构建
当创建集群时,生成 kubeconfig 文件 /etc/kubernetes/admin.conf
在初始化集群后,我们使用 kubectl 命令能够控制整个集群,这是因为 ~/.kube/config 的凭证权限足够高。但是官方并不建议直接分发该凭证,应该创建新凭证并限制访问权限。比如,某些用户仅能访问和控制特定明明空间的资源;在访问 Dashboard 界面时,因该使用受限的 TOKEN 凭证。
该笔记的其他部分将记录:在 Kubernetes 中,如何创建 TOKEN 来授权管理集群、管理特定命名空间等等操作,以及相关问题处理方法。
创建 TOKEN 凭证,来创建 kubeconfig 文件
https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_token/ https://stackoverflow.com/questions/47770676/how-to-create-a-kubectl-config-file-for-serviceaccount
第一步、创建 Admin Token(以管理整个集群)

# —————————————————————————– # 创建 Role 或 ClusterRole 资源

我们该处直接使用 ClusterRole cluster-admin 资源,所以未进行创建

# —————————————————————————– # 创建 Service Account 资源

kubectl create serviceaccount “cluster-admin-4ci” -n kube-system

# —————————————————————————– # 创建 ClusterRoleBinding 资源

kubectl create clusterrolebinding “cluster-adm[……]

READ MORE

「SSL-CERTIFICATES」- TLS | SSL | 证书管理 | HTTPS | 配置 HTTPS 访问

构建
通过 Certbot 服务,获取免费证书 腾讯云 SSL 证书 阿里云 SSL 证书
mkcert | a simple tool for making locally-trusted development certificates. It requires no configuration. https://github.com/FiloSottile/mkcert[……]

READ MORE

「JENKINS-PIPELINE」- 实践经验

场景 | 针对 Jenkinsfile 约定
避免过度封装 | 我们选择将 Shell 命令放在 Jenkinsfile 中而非封装到共享库中,以便于阅读、审查、修改、调参等等。
遵照事实需求 | 根据现实应用需求来设计 Jenkinsfile 文件,避免过度设计而加入不必要的功能及代码。
放弃完美主义 | 至少在 Jenkinsfile 开发这件事情上,我们必须放弃完美主义(很难优雅),以实现功能为主。
常规流程
环境配置 单元测试 源码编译 制品创建 应用部署
场景 | 分离部署与发布
问题
经常有开发反馈: Jenkins 构建成功了,通过“发现”代码不是最新的。
抛开研发“发现”方法的质疑,我们是否可以引入一些方法来确保最新代码已发布?
分析
我们将通过分析 CI 的流程,来找到潜在的问题:

在 CI 中,我们仅实现 Helm Chart 部署,但是并未检测服务是否启动成功。

方案
[WIP] 在 Jenkins Pipeline 中,尝试分离部署与发布[……]

READ MORE

「KUBERNETES-OBJECTS」- Pod(学习笔记)

性质
Termination of Pods | https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
常用 Pod 文件模板
这是我们常用的 Pod 文件的模板,能够根据需要进行剪裁:

apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
– name: test-container
image: k8s.gcr.io/busybox
# 镜像拉取策略:Always、IfNotPresent;
imagePullPolicy: Always
# 字段 command 对应镜像的 entrypoint 指令;
command: [ “sh”, “-c”]
# 字段 args 对应镜像的 CMD 指令;
args:
– while true; do
echo -en ‘\n’;
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
# 限制资源使用情况
resources:
requests:
memory: “64Mi”
cpu: “250m”
limits:
memory: “128Mi”
cpu: “500m”
# 使用环境变量
env:
# 直接定义环境变量
– name: FOO
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# 引用定义中的变量作为环境变量
– name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name

定义容器启动命令(command)及参数(args)
Define a Command and Arguments for a[……]

READ MORE

「BLOCKCHAIN」- 网路 | 区块链网络 | Blockchain Networking

认识
区块链中的网络是指由多个节点(计算机或服务器)通过点对点(P2P)协议连接形成的分布式系统,用于共同维护区块链数据、验证交易并达成共识。网络是区块链去中心化和安全性的核心基础,其设计直接影响区块链的性能、可靠性和扩展性。
区块链网络的核心目标是实现去中心化、安全、高效的数据同步与共识。网络设计需权衡性能、安全性和去中心化,不同应用场景(如金融、供应链)会选择不同的网络架构。
组成
节点(Node)

定义:参与区块链网络的计算机或设备,每个节点存储完整的或部分区块链数据。
类型:

– 全节点:存储全部区块链数据,独立验证交易和区块(如比特币全节点)。
– 轻节点:仅存储部分数据(如区块头),依赖全节点获取信息(如手机钱包)。
– 矿工 / 验证节点:负责打包交易、生成新区块(PoW/PoS 等共识机制下)。

网络拓扑结构

点对点(P2P)网络:(1)节点之间直接通信,无需中心化服务器。(2)优势:抗单点故障、抗审查。
广播机制:交易或区块通过“泛洪协议”(Gossip Protocol)传播,节点将信息转发给邻居节点,直至全网同步。

网络共识机制,区块链通过共识算法确保所有节点对账本状态达成一致:

PoW(工作量证明):节点竞争解决数学难题(如比特币)。
PoS(权益证明):根据持币量或质押量选择验证者(如以太坊 2.0)。
BFT 类(拜占庭容错):通过投票快速达成共识(如 Hyperledger Fabric 的 PBFT)。

网络分片(Sharding)

将网络划分为多个子网络(分片),并行处理交易,提升吞吐量(如以太坊分片设计)。

构建
通过区块链软件来构建网路,或直接使用现有网络。
网络攻击与安全

51% 攻击:单一实体控制超半数算力,可篡改交易(PoW 链风险)。
女巫攻击:攻击者伪造多个虚假节点,需通过身份验证防范。
日蚀攻击:隔离特定节点使其接收虚假信息,依赖节点多样化防御。

网络性能指标

延迟:交易传播到全网的时间。
吞吐量:每秒处理的交易数(TPS)。
去中心化程度:节点地理分布和权力分散性。

跨链网络

不同区块链网络间的互操作性,通过中继链、哈希锁定等技术实现(如 Cosmos、Polkadot)。

比特币网络 – 节点类型:全节点、矿工节点、SPV 轻节点。 – 共识机制:PoW。 – 传播机制:交易广播→矿工打包→区块广播→全节点验证。
性质
根据需求,构建出各种类型的网络:[……]

READ MORE

「Glype」- 网页代理

认识
内容:网页代理,PHP 实现,通过 cURL 实现。由于效率一般,我决定用 zephir 重写;
官网:https://www.glype.com/
Project: https://github.com/Abban/glype
组成
1)Client 将请求的 URL,编码或者加密(无法轻易还原)之后,发送到 Proxy; 2)Proxy 先解码 URL,然后使用 cURL 函数库,请求 Target; 3)Target 响应以后,开始解析页面,解析目的是替换页面中的资源链接(替换资源属性,如 img/src、a/href 等); 4)解析完成后返回页面给 Client,之后 Client Browser 就开始解析页面; 5)如果页面中存在资源链接,重复执行上述过程;
构建
原有的项目已经是 5 年前了(03/15/2017)。我们重写了原有的项目,基于面向对象,同时加入了 html、css 新属性的支持。
共有两个版本: PHP:http://git.oschina.net/demoii/glype zephir:http://git.oschina.net/demoii/glype-zephir%EF%BC%88%E5%8E%9F%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%87%8D%E5%86%99%E8%BF%98%E6%B2%A1%E6%9C%89%E5%AE%8C%E6%88%90%EF%BC%89
glype-zephir 是 glype 的 zephir 版本,由于性能原因而基于 glype 重新开发的项目。
项目的演示地址:http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIzS4RDXoLbC6W8&b=5 Homepage: http://andev.d3rm.org
php 版本的 glype 吞吐量测试地址文件
# 的测试地址为 Andoid 开发者的官网地址。 # 首页、AndroidStudio、Develop、Simple、字体文件
http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIzS4RDXoLbC6W8&b=5 http://andev.d3rm.org/browse.php?u=cUbOykRDC4P8SdBDcELVS4R9SkDgy4xOSnIUCYPgHlGOHlLgT12ZHYRASu%3D%3D&b=5 http://andev.d3rm.org/browse.php?u=cUbOykRDC4P[……]

READ MORE

「Solflare」- 区块链钱包 | Hold strong with the most powerful wallet on Solana

认识
官网:https://www.solflare.com/ 文档:https://docs.solflare.com/solflare 仓库:https://github.com/solflare-wallet
Manage your Solflare wallet with ease. 简而言之,区块链钱包,作用于 Solana 网络。
性质
Make every asset an asset
Quick transfer Send & receive Solana assets
Get coins Buy crypto within wallet
Personalized gallery Buy, collect and sell NFTs
Defi. Games. Exchanges. Explore Solana securely[……]

READ MORE

「KUBERNETES/KUBECTL」- 常见问题汇总

[Sol] … specifying a root certificates file with the insecure flag is not allowed …
okteto shows error: specifying a root certificates file with the insecure flag is not allowed when interacting with k8s cluster
问题描述
执行 kubectl 命令,产生 Error: Kubernetes cluster unreachable: specifying a root certificates file with the insecure flag is not allowed 错误。
原因分析
okteto shows error: specifying a root certificates file with the insecure flag is not allowed when interacting with k8s cluster · Issue #3124 · okteto/okteto
解决方案
删除 clusters[].cluster.certificate-authority-data 数据,或者不要使用 clusters[].cluster.insecure-skip-tls-verify: true 选项;[……]

READ MORE

「.dockerignore」- 控制加入构建文中的内容

认识
You can use a .dockerignore file to exclude files or directories from the build context. This helps avoid sending unwanted files and directories to the builder, improving build speed, especially when using a remote builder.
文档:https://docs.docker.com/build/concepts/context/#dockerignore-files
场景 | 当构建镜像时,忽略文件 | .dockerignore
Do not ignore .dockerignore (it’s expensive and potentially dangerous) COPY with docker but with exclusion
dockerignore | 学习笔记
在上下文目录中,可以创建 .dockerignore 文件(类似于 .gitignore 文件),防止在 Build Context 中的某些文件被传到 Docker Server 中。
该文件中的匹配模式规则采用 Go 语言中的 filepath.Match() 函数。
忽略所有文件,仅包含个别文件
docker – Dockerignore: Ignore everything except a file and the Dockerfile – Stack Overflow

# Ignore everything
*

# Allow files and directories
!/file.txt
!/src[……]

READ MORE

「http_load」

内容: http_load 的使用。
http_laod Version 09Mar2016
http_load 并行运行多个 http 请求,来测试 Web 服务器的吞吐率(throughput)。 和 Apache 的 ab 有点类似,但是比 ab 更加灵活,http_load 支持从文件中读取 URL,也可以按照时间比率进行测试。 http_load 运行在单个进程中,所以不会对客户端机器造成太大压力。它也可以执行 https 请求。
Homepage: https://acme.com/software/http_load/
Download: https://acme.com/software/http_load/http_load-09Mar2016.tar.gz
安装
请阅读源码目录下的 README 文件。SysV-like 的系统,或者使用 SSL 需要修改 Makefile,这两点在 README 中都有讲。
安装,直接执行 make 就可以了,安装并不复杂,执行 make 之后会在源码目录下生成 http_load 文件。
命令行语法
http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file] -parallel N | -rate N [-jitter] -fetches N | -seconds N url_file
参数解释
以下的选项都可以使用单个字母简写,比如 -checksum 等价 -c。

-checksum

检查获取到文件的校验和,来确保每次是正确的。校验和是在第一次请求时计算的,然后以后每次请求都会进行计算和比较。
如果没有使用改选项,只检查字节数。

-throttle

使 http_load 将其数据消耗调节到 33.6Kbps,用于模拟“调制解调器”用户的访问

-proxy

使 http_load 走 web 代理。

-verbose

在 stderr 上,每分钟输出进度报告。

-timeout

在放弃之前,等待空闲连接的时间。默认 60s。

-sip sip_file

参数为一个文件。sip_file 的内容为 IP 地址(不能是主机[……]

READ MORE

「CERT-MANAGER」- 部署

Kubernetes 1.30.0 / cert-manager 1.17
该笔记将记录:在 Kubernetes Cluster 中,部署 cert-manager 组件,以及相关问题解决办法;
补充说明

作为系列部署资源,cert-manager 运行在 Kubernetes Cluster 中,并利用 CRD 来配置 CA 并请求证书;
部署方式:我们使用官方文档中推荐的 Helm Chart 方式,不再使用原始的 YAML 清单文件;
在部署 cert-manager 组件之后,需要创建代表 CA 的 Issuer 或 ClusterIssuer 资源;
在集群中,部署多个 cert-manager 实例会出现意外行为(以前 v1.3 文档提到过,该版本不清楚是否存在该限制);

部署 cert-manager 组件
安装组件:

helm repo add jetstack https://charts.jetstack.io
helm repo update jetstack

helm search repo jetstack/cert-manager | grep 1.17
helm pull jetstack/cert-manager –version v1.17.1

helm show values ./cert-manager-x.x.x.tgz > cert-manager-x.x.x.tgz.helm-values.yaml
vim cert-manager-x.x.x.tgz.helm-values.yaml
… installCRDs: true
… Image Repository and Image Tag

helm upgrade –install –namespace cert-manager –create-namespace \
cert-manager ./cert-manager-x.x.x.tgz -f cert-manager-x.x.x.helm-values.yaml

验证安装:

# cmctl check api –wait=2m
The cert-manager API is ready

# kubectl get pods –namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-69c97bc646-zh7sf 1/1[……]

READ MORE

「HCL」- 实验学习:堆叠 | IRF

实验拓扑

实验需求

配置 IRF 技术,实现两台设备堆叠。

实验步骤

# —————————————————————————– # 1

[H3C]interface range Ten-GigabitEthernet 1/0/50 to Ten-GigabitEthernet 1/0/51
[H3C-if-range]shutdown

[H3C]irf-port 1/2
[H3C-irf-port1/2]port group interface Ten-GigabitEthernet 1/0/50
[H3C-irf-port1/2]port group interface Ten-GigabitEthernet 1/0/51

[H3C]interface range Ten-GigabitEthernet 1/0/50 to Ten-GigabitEthernet 1/0/51
[H3C-if-range]undo shutdown

[H3C-if-range]save
[H3C]irf-port-configuration active

# —————————————————————————– # 2

[H3C]irf member 1 renumber 2
[H3C]irf member 1 priority 20 # 修改优先级
<H3C>reboot # 当修改 Stack ID 参数后,需要重启才能看到端口的变化;

[H3C]interface range Ten-GigabitEthernet 2/0/50 to Ten-GigabitEthernet 2/0/51
[H3C-if-range]shutdown

[H3C]irf-port 2/1
[H3C-irf-port2/1]port group interface Ten-GigabitEthernet 2/0/50
[H3C-irf-port2/1]port group interface Ten-GigabitEthernet 2/0/51

[H3C]interface range Ten-GigabitEthernet 2/0/50 to Ten-GigabitEthernet 2/0/51
[H3C-if-range]undo shutdown

[H3C]irf-port-configuration active

测试方法:

修改 1 的 sysname 能够[……]

READ MORE

「Apache Maven」- 构建工具

认识
Maven is an attempt to apply patterns to a project’s build infrastructure in order to promote comprehension and productivity by providing a clear path in the use of best practices. Maven is essentially a project management and comprehension tool and as such provides a way to help with managing: Builds, Documentation, Reporting, Dependencies, SCMs, Releases, Distribution.
Philosophy of Maven | History of Maven
如今构建单个 Java 项目需要用到很多第三方的类库(非常之多,令人瞠目结舌)。并且 Jar 包间的关系错综复杂,某个个 Jar 包往往又会引用其他多个 Jar 包,任何缺失的 Jar 包都会导致项目编译失败。而 Maven 是个 Jar 管理工具,我们只需在配置文件(pom.xml)中进行声明,然后 Maven 会到仓库(Maven Repository)帮助我们下载所有的 Jar 包,极大降低管理难度。
官网

https://maven.apache.org

文档

https://maven.apache.org/guides/index.html
《Maven 实战》(许晓斌)

Maven 3.6.3

Introduction | https://maven.apache.org/ref/3.6.3/
Settings | https://maven.apache.org/ref/3.6.3/maven-settings/settings.html

仓库

https://github.com/apache/maven

组成
概念 | Fundamentals
概念术语 | Terms and Fundamentals
配置 | Configuration
Maven configuration occurs at 3 levels:

Project – most static configuration occurs in pom.xml.

The
Project[……]

READ MORE

「Shadowsocks」- 安装 | 使用 libev 库的 C 语言实现

应用
从发行版源中安装

# Kali GNU/Linux Rolling
apt-get install shadowsocks-libev

使用源码编译安装
这里不再介绍,参考源码目录中的README.md文件。
题外话 如果是以前,我肯定会从源码编译一下,但是现在不会了。年轻的时候爱折腾,发行版的源中已经提供了编译好的二进制包,还有启动管理脚本。在这种情况下,我再自己编译就是给自己找麻烦,不是说现在不爱折腾,只是可以留出更多的时间,专注在该专注的事情上。如果由编译的必要,我肯定还是会自己编译。
安装的可执行程序
客户端工具: ss-local,SOCKS5 协议的客户端。 ss-nat,该工具配置 ss-redir,用于为 ss-redir 设置 NAT 规则。 ss-redir,作为一个透明代理运行在本地,用于代理 TCP 流量。 ss-tunnel,本地端口转发工具。
服务端工具: ss-server,SOCKS5 协议的服务端。 ss-manager,ss-server 的控制器,用作服务端的用户管理、流量统计。
参考
Shadowsocks-libev 的 GitHub 仓库[……]

READ MORE

「QuickNode」- 常用操作

认识
官网:https://www.quicknode.com/ 文档:https://www.quicknode.com/docs/welcome 仓库:
QuickNode is a blockchain infrastructure platform that simplifies access to various blockchain networks for developers and businesses. It provides managed nodes, allowing users to connect to blockchains like Ethereum, Bitcoin, Solana, and others, without needing to set up and maintain their own infrastructure. QuickNode offers a global network of APIs and tools to streamline blockchain development, making it easier to build and scale Web3 applications.
QuickNode provides pre-configured and maintained nodes for various blockchain networks, eliminating the need for developers to manage their own infrastructure.
简而言之,提供区块链节点,让用户快速地接入区块链网络。
构建
https://www.quicknode.com/pricing
Accelerate $249/month 450 MillionAPI Credits* Included
450M API credits included $0.55/1M API credits 125requests /second 25 GB for Streams 1,200 GB/s for Functions 25 GB for IPFS[……]

READ MORE

「skopeo」- Work with remote images registries

认识
官网:https://github.com/containers/skopeo 文档:https://github.com/containers/skopeo 仓库:https://github.com/containers/skopeo
skopeo is a command line utility that performs various operations on container images and image repositories.
简而言之,该工具能够,在仓库间复制镜像、查看仓库中镜像内容、删除仓库中镜像、仓库间镜像同步、……
性质
Skopeo can perform operations which consist of:

Copying an image from and to various storage mechanisms. For example you can copy images from one registry to another, without requiring privilege.
Inspecting a remote image showing its properties including its layers, without requiring you to pull the image to the host.
Deleting an image from an image repository.
Syncing an external image repository to an internal registry for air-gapped deployments.
When required by the repository, skopeo can pass the appropriate credentials and certificates for authentication.

Skopeo operates on the following image and repository types:

containers-storage:docker-reference An image located in a local containers/storage image store. Both the location and image store are specified in /etc/containers/storage.conf. (This is the backend for Podman, CRI-O, Buildah and friend[……]

READ MORE

「iSCSI」- Internet Small Computer Systems Interface

认识
iSCSI (Internet Small Computer System Interface) 是一种基于 IP 的存储网络标准,它允许通过 TCP/IP 网络传输 SCSI 命令,使远程存储设备看起来像是本地连接的设备。
iSCSI vs. SCSI
Difference between SCSI and iSCSI
SCSI is a layer 2 deterministic channel protocol. It’s initials stand for “Small Computer Systems Interface.” It is a standard protocol for computer systems to connect to storage systems. SCSI protocol runs on Fibre Channel (called fibre channel protocol or FCP), Infiniband, and layer 2 Ethernet.
ANSI, SNIA, and the IEEE working groups mapped the SCSI protocol to TCP/IP to enable the SCSI protocol to work on layer 3 TCP/IP Ethernet. This standard is called iSCSI.
iSCSI is the SCSI protocol mapped to TCP/IP and run over standard Ethernet technologies.
组成
### iSCSI 主要组件

iSCSI Initiator (发起端):客户端设备,发起存储请求
iSCSI Target (目标端):服务器端,提供存储资源
LUN (Logical Unit Number):目标端提供的逻辑存储单元

构造
1. Linux 环境下部署 iSCSI Target
#### 使用 targetcli 工具

# 安装必要的软件包
sudo apt-get install targetcli-fb # Ubuntu/Debian
sudo yum install targetcli # CentOS/RHEL

# 启动 target 服务
sudo systemctl start target
sudo systemctl enable target

# 进入 targetcli 配置界面
sudo targetcli

# 在 targetcli 中执行以[……]

READ MORE

「Sass」- Syntactically Awesome Style Sheets

认识
Sass (Syntactically Awesome Style Sheets) 是一种 CSS 预处理器,它扩展了 CSS 的功能,使样式表的编写更高效、更可维护。Sass 通过引入变量、嵌套规则、混合宏(mixins)、继承等特性,解决了传统 CSS 开发中的诸多痛点。
组成
WIP
构建
Node Sass
Node Sass 是一个将 Sass (Syntactically Awesome Style Sheets) 编译成 CSS 的 Node.js 库。它是流行的 LibSass C/C++ 库的 Node.js 绑定版本。
https://github.com/sass/node-sass npm set sass_binary_site https://npmmirror.com/mirrors/node-sass/
其主要特点

高性能:由于基于 LibSass 的 C/C++ 实现,编译速度比纯 JavaScript 实现的 Sass 更快
兼容性:支持大多数 Sass 功能,与 Ruby Sass 保持高度兼容
易用性:作为 npm 包提供,易于在 Node.js 项目中使用

需要注意的是,Node Sass 目前已经弃用,官方推荐使用 Dart Sass 作为替代方案。Dart Sass 的 API 与 Node Sass 高度相似,迁移通常只需更改 require/import 语句。尽管 Node Sass 已被弃用,但在一些遗留项目中仍可能遇到它,了解它的基本用法对于维护这些项目仍然有帮助。
性质
其提供很多功能来解决问题,比如 缺乏代码复用机制、选择器嵌套混乱、无法实现样式复用、缺乏继承机制、难以模块化管理、缺乏运算能力、缺乏逻辑控制、……,其本质上要解决的问题还是 CSS 文件的管理。
缺乏代码复用机制
问题:传统 CSS 中重复的值(如颜色、字体等)需要多次编写 解决:Sass 提供变量功能

$primary-color: #3498db;
$font-stack: Helvetica, sans-serif;

body {
color: $primary-color;
font-family: $font-stack;
}

选择器嵌套混乱
问题:CSS 中多层嵌套选择器需要重复编写父选择器 解决:Sass 提供嵌套语法

nav {
ul {
margin: 0;
li { display: inline-block; }
}
a { text-decoration: none; }
}

应用
使用[……]

READ MORE

「HUAWEI-ENSP」- 实验学习:链路聚合

实验拓扑

实验需求

通过手动模式,来实现链路聚合;
通过 LACP 模式,来实现链路聚合;

实验过程
Manual Mode
配置过程:

# —————————————————————————– # 配置 SW1

[SW1]interface Eth-Trunk 1
[SW1-Eth-Trunk1]mode manual load-balance
[SW1-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/3

# —————————————————————————– # 配置 SW2

[SW2]interface Eth-Trunk 1
[SW2-Eth-Trunk1]mode manual load-balance
[SW-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/3

测试方法:

[PC1] ping PC3,并通过 Wireshark 抓包;

补充说明:

通过 Wireshark 抓包,流量可能仅通过一条链路转发,在其他两条链路无法看到流量;

LACP Mode | 802.3ad
配置过程:

# —————————————————————————– # 配置 SW3

[SW3]interface Eth-Trunk 1
[SW3-Eth-Trunk1]mode lacp-static
[SW3-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/3

# —————————————————————————– # 配置 SW4

[SW4]interface Eth-Trunk 1
[SW4-Eth-Trunk1]mode lacp-static
[SW4-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 to 0/0/3

# 调整 SW4 优先级,使其成为主动端

[SW4] lacp priority 16382 # 系统优先级;值小,则优先级高; default=32768[……]

READ MORE

「Rancher」- 常见问题处理

[Sol.] Unable to connect to the server: x509: certificate signed by unknown authority
通过 Rancher 提供的 kubeconfig 文件连接集群,提示错误

# /usr/local/bin/kubectl get pods
Unable to connect to the server: x509: certificate signed by unknown authority

This file contains a certificate-authority-data entry for the cluster, which causes kubectl to fail with Unable to connect to the server: x509: certificate signed by unknown authority as it does not match the certificate that rancher is actually behind. Deleting this section from the kubeconfig allows it to work again.
解决方案: 1)或,SSL/TLS options for Rancher 2.0. Rancher 2.0 has reached General… | by Sebastiaan van Steenis | Medium 2)或,Ability to disable populating of cacerts when using external SSL termination with a well known CA · Issue #11388 3)或,我们将 Rancher 迁移到 Kubernetes Cluster 中,而不再采用 Single Docker Container 的方式进行部署;
[Sol.] … error syncing ‘system-library’ …


rancher-server | 2022/08/01 09:47:03 [ERROR] error syncing ‘system-library’: handler system-image-upgrade-catalog-controller: upgrade cluster c-m-dqgvppq8 system service alerting failed: template system-library-rancher-monitoring incompatible with[……]

READ MORE

「AWS」- 优化国内访问速度

为了提高国内用户访问海外 AWS 服务器的速度,可以结合以下 AWS 服务和优化策略,重点解决跨境网络延迟和带宽限制问题。通过以下组合,可显著降低国内用户的访问延迟(通常可减少 30%-50%)。建议使用 AWS 的Compute Optimizer和CloudWatch监控性能变化。
使用 AWS Global Accelerator
– 原理:通过 AWS 全球边缘节点(非中国节点,如香港、东京等)优化路由,减少跨境跳数。 – 优势: – 自动选择最优 AWS 网络路径,降低延迟。 – 固定 IP 地址,避免 DNS 解析波动。 – 适用场景:TCP/UDP 流量加速,适合动态内容或 API。
部署 Amazon CloudFront(CDN)
– 原理:将静态内容缓存至边缘节点(如香港、新加坡等靠近中国的节点)。 – 配置建议: – 选择靠近中国的边缘站点(如`Hong Kong, Tokyo, Seoul`)。 – 启用压缩(Gzip/Brotli)和 HTTP/2。 – 使用 Origin Shield 减少回源请求。 – 注意:动态内容需结合 Lambda@Edge 优化。
中国区域混合架构(需合规备案)
若业务允许,可通过以下方式合规接入中国: – AWS 中国区域(北京 / 宁夏):通过 ICP 备案后,使用中国本地节点加速。 – 跨境专线:通过 AWS Direct Connect 连接海外与中国区域,但成本较高。
地域优化 | 网络层优化
– Amazon EC2 优化: – 选择东京(`ap-northeast-1`)或新加坡(`ap-southeast-1`)区域,物理距离更近。 – 启用 EC2 的 TCP 协议优化(如调整内核参数)。
– Elastic Load Balancer (ALB/NLB):部署在靠近中国的区域,分配请求负载。
DNS 优化(Amazon Route 53)
– Latency-Based Routing:根据用户延迟自动选择最优服务器。https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-latency.html – Geolocation Routing:将中国用户定向至优化后的终端节点。
协议与传输优化
– QUIC/HTTP3 支持:通过 CloudFront 启用,减少高频请求的延迟。 – WebSocket 优化:使用 Global Accelerator 或 ALB 加速长连接。
客户端缓存策略
– Cache-Control Headers:延长静态资源缓存时间,减少重复请求。 – Service Work[……]

READ MORE