SSL证书序列号能当唯一ID吗:签发者、指纹与部署台账怎么区分

新能源场站微型纵向加密:轻量化安全通信架构设计与实战部署 在工业控制系统与物联网领域,保障数据传输的机密性、完整性与身份认证是核心安全需求。其基本原理是通过密码学算法对通信数据进行加密与验证,防止窃听、篡改与非法接入。这项技术的核心价值在于,能在资源受限的嵌入式环境中,为关键业务数据流提供可靠的安全防护,而不影响系统实时性与稳定性。其典型应用场景广泛分布于电力监控、新能源场站、工业物联网等对实时控制与数据安全有严苛要求的领域。本文聚焦于新能源场景下的海量终端设备安全通信挑战,深入剖析了如何通过**微型纵向加密**这一轻量化架构思想,为光伏、储能等系统的控制指令与状 阅读详情

把几家CA的证书导入同一张表,serial撞了,应该合并还是报错?先别急着去重。证书序列号不是全球统一流水号。本文把签发者、证书实例、部署入口拆开,用离线实验验证“序列号相同,但不是同一张证书”,再整理续期交接时应该留哪些字段。

一、序列号的唯一性有范围

RFC 5280第4.1.2.2节要求:序列号由CA分配,对同一CA签发的每张证书必须唯一;规范用签发者名称与序列号标识唯一证书。不能把“同一CA范围内”删掉,再给资产表的serial列加全局唯一约束。

不同CA可以各自使用相同数值。它不是域名,不是证书文件名,也不是续期次数。不要从序列号大小推断新旧,按实际证书、有效期和可信签发记录追踪版本。

二、先读完整信息,不只截一段编号

下面的certificate.pem是待检查的单张PEM证书。命令只读证书,不读取私钥;必须检查退出码,缺文件或解析失败就停止,不能把空输出当成相同。

openssl version
openssl x509 -in certificate.pem -noout -serial -issuer -nameopt RFC2253
openssl x509 -in certificate.pem -noout -fingerprint -sha256

显式指定SHA-256,是为了让跨工具比较有一致算法。RFC2253只控制名称的输出形式;issuer是一整个区分名称,不能只抄CN,也不能把显示字符串当成经过验证的CA身份。不同工具的名称格式还可能不同,生产台账应保留原证书与结构化解析结果。

三、隔离复现:两个签发者,相同serial

以下完整Bash脚本创建两个不同密钥、不同名称的本地自签证书,序列号都设为7。它们只用于离线字段反例,不是公众信任证书,也不是可直接部署的HTTPS叶证书模板。实验不联网、不安装信任根,不改生产配置;临时目录内会生成无口令测试私钥,脚本正常退出时清理,异常强杀后的残留另查。

#!/usr/bin/env bash
set -euo pipefail
umask 077
d=$(mktemp -d)
trap 'rm -rf -- "$d"' EXIT
cd "$d"
printf '[req]\ndistinguished_name=dn\n[dn]\n' > req.cnf
for ca in A B; do
  openssl req -new -x509 -newkey rsa:2048 -nodes \
    -config req.cnf -subj "/CN=Lab-$ca" -days 1 \
    -set_serial 7 -keyout "$ca.key" -out "$ca.pem" 2>"$ca.log"
  openssl x509 -in "$ca.pem" -noout -serial -issuer -nameopt RFC2253
  openssl x509 -in "$ca.pem" -noout -fingerprint -sha256
done
s1=$(openssl x509 -in A.pem -noout -serial)
s2=$(openssl x509 -in B.pem -noout -serial)
f1=$(openssl x509 -in A.pem -noout -fingerprint -sha256)
f2=$(openssl x509 -in B.pem -noout -fingerprint -sha256)
[[ "$s1" == "$s2" && "$f1" != "$f2" ]]
printf 'same_serial_different_certificate=OK\n'

本次在Linux、OpenSSL 1.1.1k上执行:两份输出均为serial=07,issuer分别为CN=Lab-A和CN=Lab-B,SHA-256指纹不同,最后打印same_serial_different_certificate=OK。每次密钥随机生成,指纹自然不同,不应照抄某次摘要当固定答案。

这只证明serial单列无法区分这两个证书。没有测试真实CA申请、续期、吊销、TLS握手或浏览器信任;实验也没有在同一CA下重复分配序列号,别把反例变成签发建议。

四、证书实例用什么标识

工程台账可记录“摘要算法+整张证书DER摘要”作为证书实例的内容标识,并保存来源与原件。OpenSSL的fingerprint计算对象是整张DER编码证书,不是PEM文本,也不是公钥摘要。需要与另一个工具对照时,可以明确转换后计算:

openssl x509 -in certificate.pem -outform DER -out certificate.der
openssl dgst -sha256 certificate.der

本次对隔离证书实测,两条路径的SHA-256摘要一致。PEM文本换行不改变证书指纹;但这不是整包完整性检查,fullchain含多张证书时应逐对象处理。摘要用于工程识别,不是数学上无碰撞的承诺,更不证明签名可信、名称匹配或仍未过期。

五、证书表和部署表别挤成一行

一张证书可以部署到多个入口,一个入口也可能在轮换期间关联新旧证书。指纹相同只能合并证书实例,不能顺手删掉另一条部署记录。把“材料是谁”和“现在在哪里被使用”分开,交接才不会丢节点。

对象建议记录不能替代
证书实例算法、指纹、issuer、serial、SAN、有效期信任与用途验证
部署入口主机、端口、SNI、节点、关联指纹服务实际加载证明
观测记录采样时间、目标、结果、观测指纹当前状态保证

证书台账中的序列号、证书指纹与部署入口三个对象

图示仅区分台账对象,不是完整验证流程。主机与端口不是所有入口字段;SNI、协议、代理和节点按实际环境补充。同一指纹关联多个入口是正常关系,不等于这些入口已经完成HTTPS验收。

六、续期时保留新旧关联

证书换新后,先新增证书实例,再把目标部署记录关联到预期指纹;外部观测确认后记录实际指纹与时间。不要仅更新到期时间、覆盖旧serial,导致旧节点仍在提供旧证书却无法追溯。

同钥续期也不等于同一证书:公钥可以不变,而序列号、有效期等证书内容发生变化。反过来,重新下载同一证书并不是一次新签发。是否换钥、是否更新证书、是否成功部署,分别保留证据,不能只看任务退出0。

七、冲突和缺值要停止自动合并

导入时先明确serial的进制;十进制7与十六进制07表示同一个数,不应按字符串制造两个编号。保留原始表示及解析数值,别截短长序列号,也别用浮点数保存它。

相同issuer与serial却出现不同证书内容时,保留两份原件并告警,核查解析、来源、签发者命名与CA记录,不自动选“日期较新”的一份覆盖。缺issuer、缺指纹或采集失败应标未知;昨天的成功采样不能自动填成今天成功。

八、交接前的检查清单

  • serial没有被当成跨CA全局ID,issuer没有只截取CN。
  • 指纹算法固定,明确单张DER证书,不混入文件哈希或公钥pin。
  • 证书实例与部署入口分别保留,多节点观测带准确目标和时间。
  • 续期前后实例可追溯,未知和冲突不会被静默合并。
  • 材料识别之后,另做链、名称、有效期、用途与真实服务验收。

台账不是把一串编号记下来就完成了。先把编号的范围讲清楚,再把证书和入口连起来,后面的轮换、监控和退役才有可靠依据。

参考资料:

【信息科学与工程学】【安全领域】第二百零五篇 漏洞治理 01 形式:RabbitMQ管理插件SSRF CVE-2026-57211(CVSSv4 8.3,Windows多插件可诱发SMB NTLM泄露)、管理API资源无限CWE-770 CVSSv4 5.3、管理UI存储XSS CVE-2026-57214/其他;用法:GET /cgi-bin/.%2e/%2e%2e/etc/passwd→读密文/源码→RCE。定量:CVSS 9.0;例:Spectre CVE-2017-5753、Meltdown CVE-2017-5754(CPU越界/未授权内核读); 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 136

GitHub Actions 自动化:5 个真实运维提效案例

回顾五个案例的共同思路:把高频、规则明确、易出错的运维动作交给流水线,把人的精力留给判断与优化。给出从单点试点到体系化推广的推进建议。

2205_76017107的博客 133

shopro 商城,2025年新申请的微信支付提示失败,支付提示 Get Wechat Public Cert Error 问题的修复办法

shopro 商城,最近新申请的微信支付商户 支付提示 Get Wechat Public Cert Error 问题的修复办法

行走的卡路里 1243

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 214

【GPT】Coze使用开放平台接口-【7】Dify 比较篇

coze 用于社交,dify 用来内部构建。抛开工作流,机器人,工具,coze 最大的区别在于可以直接发布到社交媒体上。所以,coze 对操作体验上也花了不少功夫,而 dify 就专注在帮助使用者打磨工作流。coze 各个大模块之前可以联动的机制也比较多,所以侧重点各不相同。

非晓为骁的博客 7612

ddr3ip核心_DDR3 IP 核配置

DDR3 控制器 IP 核2.DDR3 IP核配置点击 Flow Navigator 面板下的“Project Manager -->IP Catalog”。 在“Memories & Storage Elements -->Memory Interface Generators”分类展开后,可以看到名为“Memory Interface Generator (MIG 7 ...

weixin_33049919的博客 2935

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 407

BAPI创建委外采购订单

使用BAPI BAPI_PO_CREATE1创建委外采购订单,组件为手工输入时,有几个点需要注意: 1、已通过CS01创建过BOM的物料,创建时会自动带出components。如果要修改当前组件清单,可以通过设置pocomponents-change_id = 'E’来实现 lv_sline = lv_sline + 1. ls_pocomponents-po_item = l_ebelp + 10. ls_pocomponents-ITEM_NO = l

Buffalo_soldier的博客 3260

企业版虚拟机ESXi网络配置

1. 把卷组里剩下的所有空间(100%FREE)全加给根目录。# 2. 刷新文件系统,让系统立刻认出新容量。

墨痕诉清风的博客 222

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1708

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 632

自动化运维选型:四条技术路线的能力边界,以及它们为什么不能互相替代

自动化运维怎么选型?拆解配置管理、基础设施即代码、作业调度与场景化编排四条技术路线边界,分析账本归属与时间语义差异,给出四种架构组合与判断点,帮企业看清为何不能互相替代。

trainsignalcn的专栏 303

华为校招实习机试&华为社招机试20240619-2.排列组合的回文字符串[200分]( Java | Python3 | C++ | C语言 | JsNode | Go)实现100%通过率

如果一个字符串和它反转后的字符串相同,我们称这个字符串为回文字符串,如"aba"是一个回文字符串,"abb"不是一个回文字符串(长度为1的字符串也是回文字符串)。现给定一个字符串,其长度范围为:[1,1000),返回其通过重新排列组合后所有可能的回文字符串的个数(需要去除重复的组合)。返回其通过重新排列组合后所有可能的回文字符串的个数,去除重复的组合后的回文字符串是"abba","baab",因此返回2。解释:排列组合后的回文字符串是"abba" , "baab",因此结果为2。

算法算法算法!!! 829

AI Agent 的安全风险,正在从 Prompt 扩展到运行环境

从 Cursor 恶意扩展事件看 AI Agent 运行环境的安全风险与权限边界。

2501_92842654的博客 463

基于NRF52833芯片的DW3000 SPI驱动接口代码实现

详细介绍基于NRF52833、nRF52820 、nRF52832 nRF52840 芯片的DW3000 硬件驱动接口代码

DT程序员的博客 1214

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

闲置Windows主机搭建私有网盘:轻量局域网文件服务方案实测

本文介绍基于闲置Windows主机搭建轻量级私有文件服务的实用方案,针对个人开发者、小团队及实验室用户痛点,提出以Web形态文件系统替代公有网盘或复杂NAS的低成本解决方案。该方案无需额外硬件,部署简单,支持多设备浏览器访问、权限隔离、临时分享链接与原文件预览,适合局域网内素材归档、协作共享与安全分发。但需注意其局限性:依赖主机常开、无磁盘冗余、外网访问需谨慎配置,且不适用于高并发或核心业务存储。建议结合备份机制与安全策略使用,合理权衡成本与可靠性。

zxcvb153的博客 224

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ubuntu安装hadoop系统

本文详细介绍了基于VMware克隆虚拟机搭建三节点Hadoop分布式集群的全过程:使用同一Ubuntu镜像克隆出master、worker1、worker2三台虚拟机,依次配置主机名、固定IP(如192.168.82.10/11/12)、SSH服务及免密登录,确保节点间网络互通。随后安装Java,下载配置Hadoop并分发至各节点,最终初始化启动集群,验证其存储与计算功能,实现高效的大数据环境部署。

qq_43592674的博客 279

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

docker部署IPTV

【代码】docker部署IPTV。

wuxingge的博客 42

FineBI、Power BI、Tableau 建模能力实测:2026 年三款主流 BI 的性能与运维成本对比

其二为权限与安全的工程化程度。原因并非其某一单点最强,而是其将建模、性能、运维这三项最易被忽视又最决定成败的因素,做成了一个相对均衡、且面向国内企业场景默认到位的整体,这是其与另两款产品的真正差异所在。FineBI 在企业级落地与长期运维的省心程度上领先,Power BI 在建模与计算上限上领先,Tableau 在分析体验上领先,三者分别适合不同的团队与场景。FineBI、Power BI、Tableau 的建模能力并非简单的强弱之分,三款产品对数据模型的理解存在根本差异,这一差异决定了后续各维度的表现。

Leo的博客 86

IP 地址与子网划分

CIDR(无类别域间路由)是一种简写方式,用/数字/24 = 前 24 位是 1。

weixin_67448099的博客 128

Kubernetes 集群部署

实验环境:VMware Workstation 26 + Rocky Linux 9.8 + Kubernetes v1.35.10 + Docker 29.9.3 + cri-dockerd 0.4.10。

2302_80967029的博客 151

输电线路全景监测的多传感融合与应用效果评估方法

输电线路监测从“有数据”迈向“用数据”,核心挑战在于效果评估。需构建覆盖几何、姿态、环境、解算四层的全景监测体系,通过多源融合与统一解算提升告警准确性。评估应聚焦预警及时性、误报率、运维减负与数据可用性,并按风险分级部署、分场景统计、剥离干扰变量,确保效果可核对、可验证。

QXWZ_的博客 321

ssh 直接免密输入 sudo 密码

推荐方案:macOS Keychain。

weixin_40548182的博客 94

CentOS 7系统信息与硬件

本文整理 CentOS7 系统信息、硬件信息、内核日志查看命令,讲解 uname、hostnamectl、uptime、date、cal 查看系统基础信息;lscpu、free、lsmem、dmidecode、lspci、lsusb 查看 CPU、内存、PCI、USB 硬件;dmesg 查看内核日志,附带参数解析和实操案例,是服务器巡检、硬件识别、启动故障排查的运维笔记。

2301_81401822的博客 268

邮件提交协议(MSA):与标准 SMTP 有何不同?

上周有个客户的运维把发信程序从 25 端口改到 587,账号密码都填了,日志里还是 530 5.7.0。他把日志甩过来,问是不是我们把认证关了。认证没关。他那套代码从头到尾没发过 AUTH——EHLO、MAIL FROM、RCPT TO、DATA,四步走完就等 250。这套流程在 25 端口上跑了七八年,一次没出过事。同一个程序换个端口就死,这件事本身比故障有意思:25 和 587 之间隔着的,是两种角色,端口号只是外面那层皮。

2503_92398835的博客 307

PostgreSQL:PostgreSQL(PG)全景深度梳理

本文系统梳理PostgreSQL核心特性与实战要点,涵盖定位、架构、数据类型、索引、事务、高可用、备份恢复、对比选型及踩坑规范。PG以强SQL、MVCC、JSONB、多索引、可扩展插件为优势,适用于复杂业务、GIS、时序、混合负载及AI向量场景;短板在于多进程模型对短连接不友好、长事务易致表膨胀。推荐生产使用pgBackRest+Patroni+PgBouncer组合,结合连接池、合理索引与规范DDL,充分发挥其企业级能力。

snow的博客 441
上一篇: HTTPS改到8443端口要重签SSL证书吗:域名验证与服务端口分开看
下一篇: 申请SSL证书时账户密钥和证书私钥能共用吗:ACME身份与TLS用途分开管理
Lsetea
博客等级 码龄10年 24粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lsetea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值