当前位置: 首页 > news >正文

第37章 AI伦理、安全与社会影响

37.1 AI伦理的核心议题

随着人工智能技术日益深入地融入社会生活的方方面面,其带来的伦理挑战也愈发凸显。AI伦理旨在探讨和解决由AI技术引发的道德问题,确保AI的发展和应用能够服务于人类的共同利益。这不仅仅是技术问题,更是涉及社会、法律和哲学的复杂议题。

37.1.1 公平性与偏见 (Fairness and Bias)

  • 问题来源:AI模型,特别是深度学习模型,是从数据中学习模式的。如果训练数据本身就包含了人类社会中存在的偏见(如性别、种族、地域歧视),模型就会学习并放大这些偏见。

  • 典型案例

    • 招聘系统可能因学习了历史招聘数据,而对女性或少数族裔的简历给出不公平的低分。
    • 刑事司法系统中的风险评估模型,可能对某些族裔的被告预测出更高的再犯率。
  • 解决方向

    • 数据层面:审查和清洗训练数据,采用数据增强、重采样等方法来平衡数据分布。
    • 算法层面:开发“公平性感知”的算法,在模型训练过程中加入对公平性指标(如人口均等、机会均等)的约束。
    • 评估层面:使用专门的工具(如AIF360, Fairlearn)来检测和度量模型的偏见。
  • 深度案例:亚马逊的AI招聘工具
    亚马逊曾开发一个AI工具来筛选工程师简历,希望实现招聘自动化。然而,该模型很快被发现存在严重的性别歧视。由于模型主要学习了过去十年提交的简历数据,而这些数据中男性占主导地位,因此模型学会了惩罚包含“女性”一词的简历(例如,“女子国际象棋俱乐部主席”),并对毕业于两所女子大学的申请人降级。尽管工程师们努力修正,但始终无法保证模型不产生新的歧视方式。最终,亚马逊不得不放弃了这个项目。这个案例深刻地揭示了历史数据偏见如何被AI系统固化和放大。

37.1.2 透明度与可解释性 (Transparency and Explainability)

  • 问题来源:许多先进的AI模型,如深度神经网络和大型语言模型,是“黑箱”模型。我们知道它们的输入和输出,但很难理解其内部的决策逻辑。

  • 挑战:在金融、医疗、自动驾驶等高风险领域,一个无法解释的决策是不可接受的。如果一个AI系统拒绝了你的贷款申请,或者一个医疗AI给出了诊断建议,用户和监管者有权知道“为什么”。

  • 解决方向 (XAI - Explainable AI)

    • 事后解释:使用LIME、SHAP等技术,对已训练好的黑箱模型进行“事后”分析,探究哪些输入特征对某个具体决策贡献最大。
    • 内生可解释模型:设计本身就具有良好可解释性的模型,如决策树、线性模型或注意力机制可视化的Transformer。
  • 技术详解:LIME与SHAP

    • LIME (Local Interpretable Model-agnostic Explanations):LIME的核心思想是在要解释的预测点附近,用一个简单的、可解释的模型(如线性模型)来近似复杂的黑箱模型。它通过在原始输入周围生成一些扰动样本,并观察黑箱模型对这些样本的预测结果,然后用这些信息来训练一个局部代理模型。这个代理模型的权重就可以用来解释黑箱模型在“局部”的行为。
    # LIME伪代码示例
    def explain_instance(instance, black_box_model):# 1. 在instance周围生成邻域样本perturbed_samples = generate_perturbations(instance)# 2. 获取黑箱模型对这些样本的预测predictions = black_box_model.predict(perturbed_samples)# 3. 用一个简单的线性模型来拟合这些样本和预测simple_model = train_linear_model(perturbed_samples, predictions)# 4. 返回线性模型的系数作为解释return simple_model.coefficients
    
    • SHAP (SHapley Additive exPlanations):SHAP源于博弈论中的夏普利值(Shapley Value)概念。它将每个输入特征视为一个“玩家”,将模型的预测结果视为“游戏的总收益”。SHAP值计算的是每个特征在所有可能的特征组合中,对最终预测结果的平均边际贡献。它不仅能告诉我们哪个特征重要,还能告诉我们该特征是正向还是负向地影响了预测。SHAP提供了全局和局部两种解释,并且具有坚实的理论基础。

37.1.3 责任与问责 (Accountability and Responsibility)

  • 核心问题:当一个AI系统(如自动驾驶汽车)造成了损害,谁应该为此负责?是开发者、所有者、使用者,还是AI本身?
  • 挑战:传统的法律责任框架难以直接适用于由自主系统引发的事故。责任的归属变得模糊。
  • 解决方向:建立清晰的法律和监管框架,明确AI系统在不同应用场景下的责任主体。要求在高风险应用中保留详细的决策日志,以便事后审计和追责。
  • 案例:自动驾驶汽车致死事故
    全球首例自动驾驶汽车致死事故中,一辆处于自动驾驶模式的车辆撞上了一位横穿马路的行人。调查发现,车辆的传感器在事故发生前几秒钟就检测到了行人,但系统的决策逻辑未能正确识别并作出规避动作。同时,安全员在事故发生时正在看手机,没有尽到监控责任。
    • 责任归属的复杂性:这起事故引发了激烈的法律和伦理辩论。责任应该由谁承担?
      • 汽车制造商?因为其自动驾驶系统存在设计缺陷。
      • 传感器供应商?如果传感器数据有误或不足。
      • 车主/安全员?因为他没有履行最终的监控和干预责任。
      • 受害者?因为她违规横穿马路。
    • 启示:该案例凸显了为AI系统建立分层、明确的责任框架的紧迫性。这可能包括对制造商的严格认证、对用户的充分告知和培训,以及强制性的数据记录仪(类似“黑匣子”)以便于事故调查。

37.1.4 隐私保护 (Privacy)

  • 问题来源:AI系统通常需要大量数据进行训练,这些数据往往包含个人敏感信息。

  • 风险:数据泄露、滥用,以及模型本身可能“记住”训练数据中的具体信息,从而在生成内容时无意中泄露隐私(模型反演攻击)。

  • 解决方向

    • 数据匿名化与脱敏:在数据收集阶段就去除个人身份信息。
    • 联邦学习 (Federated Learning):允许多个参与方在不共享原始数据的情况下,联合训练一个模型。数据保留在本地,只交换模型的更新参数。这就像让一群医生在不看到彼此病历的前提下,共同研究出一种新的诊断方法。
    graph TDsubgraph 中央服务器A[全局模型 V1]endsubgraph 参与方1 (如医院A)B1[本地数据] --> C1{本地训练};A --> C1;C1 --> D1[模型更新 1];endsubgraph 参与方2 (如医院B)B2[本地数据] --> C2{本地训练};A --> C2;C2 --> D2[模型更新 2];endsubgraph 参与方N (如医院N)BN[本地数据] --> CN{本地训练};A --> CN;CN --> DN[模型更新 N];endD1 --> E{聚合更新};D2 --> E;DN --> E;E --> F[生成全局模型 V2];F --> A;style B1 fill:#cde, stroke:#333style B2 fill:#cde, stroke:#333style BN fill:#cde, stroke:#333
    
    • 差分隐私 (Differential Privacy):在算法层面注入数学上可证明的“噪音”,使得模型的输出几乎不依赖于任何单个用户的具体数据,从而提供强有力的隐私保护保证。

37.2 AI安全的核心议题

AI安全关注的是AI系统的鲁棒性、可靠性和抗攻击能力,旨在防止AI系统被恶意利用或出现非预期的有害行为。

37.2.1 对抗性攻击 (Adversarial Attacks)

  • 定义:攻击者通过对输入数据进行人眼难以察觉的微小扰动,使得AI模型做出完全错误的判断。
  • 典型案例
    • 在自动驾驶的视觉系统中,一个在“停止”标志上贴了几个小贴纸的对抗样本,可能被模型识别为“限速”标志。
    • 在语音识别系统中,一段加入微弱噪声的音频,内容未变,但可能被识别成完全不同的指令。
  • 防御方法
    • 对抗性训练:在训练过程中,主动生成对抗样本并将其加入训练集,让模型学习如何抵抗这类攻击。
    • 输入预处理:对输入数据进行去噪、压缩等操作,以消除潜在的对抗性扰动。

37.2.2 数据投毒 (Data Poisoning)

  • 定义:攻击者在模型的训练数据中注入少量精心构造的“有毒”样本,从而在模型中植入“后门”。
  • 效果:模型在正常数据上表现良好,但一旦遇到包含特定触发器(trigger)的输入,就会产生攻击者预设的错误输出。
  • 案例:一个面部识别模型被投毒后,任何戴着特定颜色眼镜的人都可能被识别为某个特定身份。
  • 防御方法:数据清洗、异常检测、对训练数据的来源进行严格审查。

37.2.3 模型窃取 (Model Stealing)

  • 定义:攻击者通过反复查询一个部署为API的黑箱模型,利用其输入和输出来逆向工程,复制出一个功能相似的替代模型。

  • 危害:侵犯知识产权,使攻击者能够离线分析模型的弱点并发动其他攻击。

  • 案例:窃取商业翻译API
    一个初创公司开发了一款高质量的特定领域(如法律文书)翻译模型,并通过付费API提供服务。一个竞争对手为了节省研发成本,编写了一个脚本,系统性地将大量法律文本切分成句子,通过该API进行翻译,并记录下所有的原文和译文对。利用这些数以万计的“查询-结果”对,竞争对手成功训练出了一个性能相当的“克隆”模型,并以更低的价格推出服务,严重损害了原公司的商业利益。这个案例表明,仅仅保护API接口本身是不够的,还需要有机制来防止模型被大规模、系统性地查询从而被逆向。

37.2.4 AI对齐 (AI Alignment)

  • 定义:AI对齐是AI安全领域的一个前沿和核心议题,特别是当考虑到未来可能出现的通用人工智能(AGI)或超级智能时。它研究的是如何确保高度智能的AI系统的目标和行为与人类的价值观和意图保持一致。
  • 核心挑战
    • 目标指定问题:我们很难用形式化的语言精确、无歧义地定义复杂的人类价值观(如“幸福”、“繁荣”)。任何不完美的目标函数都可能被超级智能以意想不到的、有害的方式最大化(“国王点石成金”的寓言)。
    • 能力失控:一个足够智能的系统可能会为了实现其被设定的目标,而采取一些我们不希望看到的子目标,例如自我保护、获取更多资源,甚至阻止人类将其关闭。
  • 研究方向
    • 可中断性 (Corrigibility):研究如何设计AI系统,使其不会抵制被人类关闭或修改其目标。这需要AI理解其当前的目标函数可能是不完美的,并接受人类的修正。
    • 价值学习 (Value Learning):尝试让AI系统从人类行为、偏好和书面文本中学习复杂的、隐含的人类价值观,而不是依赖于一个简单、固定的奖励函数。
    • 可扩展的监督 (Scalable Oversight):探索如何利用AI来辅助人类监督更强大的AI。例如,通过“辩论”或“递归奖励建模”等方法,让AI系统相互诘问、寻找人类监督员难以发现的策略漏洞,从而用较少的人类精力来监督远超人类能力范围的任务。

AI对齐是一个高度交叉的领域,融合了计算机科学、哲学、博弈论和认知科学,其研究的进展对于确保人类能够长期从AI发展中受益至关重要。

  • 防御方法:API查询速率限制、对输出结果增加混淆或水印。

37.3 对社会与就业的影响

  • 就业结构变化: AI将自动化大量重复性、流程化的工作(如数据录入、客服、流水线操作),导致这些岗位的需求下降。同时,也会催生新的工作岗位,如AI伦理师、数据标注师、AI系统维护工程师等。
  • 技能要求提升: 未来社会对劳动者的要求将从执行重复性任务转向需要创造力、批判性思维、情感沟通和复杂问题解决能力的综合性人才。
  • 社会公平挑战: 如果AI带来的生产力提升和财富增值只集中在少数人手中,可能会加剧社会贫富分化。如何设计合理的再分配机制(如普及基础收入UBI、加强职业再培训)是一个长期的社会议题。

37.4 代码实战:使用Fairlearn工具包检测和缓解模型偏见

本实战将使用微软开源的Fairlearn工具包,在一个真实的数据集上演示如何量化和缓解模型偏见。

37.4.1 环境与数据准备

pip install fairlearn scikit-learn pandas

我们将使用经典的“成人收入”数据集(Adult Census),目标是预测一个人的年收入是否超过5万美元。我们将重点关注模型对不同性别(sex)的预测是否存在偏见。

37.4.2 代码实现

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder, StandardScalerfrom fairlearn.metrics import MetricFrame, selection_rate, demographic_parity_difference
from fairlearn.reductions import ExponentiatedGradient, DemographicParity# 1. 加载和预处理数据
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
columns = ['age', 'workclass', 'fnlwgt', 'education', 'education-num', 'marital-status','occupation', 'relationship', 'race', 'sex', 'capital-gain', 'capital-loss','hours-per-week', 'native-country', 'income'
]
df = pd.read_csv(url, header=None, names=columns, na_values=' ?', skipinitialspace=True)
df = df.dropna()# 将目标变量和敏感特征转换为二进制
df['income'] = df['income'].apply(lambda x: 1 if x == '>50K' else 0)
df['sex'] = df['sex'].apply(lambda x: 1 if x == 'Male' else 0)# 选择特征并进行独热编码
X_raw = df.drop(columns=['income'])
y = df['income']
X_raw = pd.get_dummies(X_raw, drop_first=True)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_raw, y, test_size=0.3, random_state=42)# 标准化数据
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 提取敏感特征列
sensitive_features_train = X_train[:, X_raw.columns.get_loc('sex_1')]
sensitive_features_test = X_test[:, X_raw.columns.get_loc('sex_1')]# 2. 训练一个标准模型并评估其公平性
model = LogisticRegression(solver='liblinear', random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)# 使用Fairlearn的MetricFrame进行评估
metrics = {'accuracy': lambda y_true, y_pred: (y_true == y_pred).mean(),'selection_rate': selection_rate # 被预测为1(高收入)的比例
}
metric_frame = MetricFrame(metrics=metrics, y_true=y_test, y_pred=y_pred, sensitive_features=sensitive_features_test)print("--- 标准模型评估 ---")
print("整体准确率:", metric_frame.overall['accuracy'])
print("按性别的指标:")
print(metric_frame.by_group)dp_diff = demographic_parity_difference(y_test, y_pred, sensitive_features=sensitive_features_test)
print(f"\n人口均等差异 (Demographic Parity Difference): {dp_diff:.4f}")# 3. 使用Fairlearn的缓解算法训练一个更公平的模型
# ExponentiatedGradient是一种缓解算法,它尝试满足DemographicParity约束
mitigator = ExponentiatedGradient(LogisticRegression(solver='liblinear', random_state=42), constraints=DemographicParity())
mitigator.fit(X_train, y_train, sensitive_features=sensitive_features_train)
y_pred_mitigated = mitigator.predict(X_test)# 评估缓解后的模型
metric_frame_mitigated = MetricFrame(metrics=metrics, y_true=y_test, y_pred=y_pred_mitigated, sensitive_features=sensitive_features_test)print("\n--- 缓解偏见后的模型评估 ---")
print("整体准确率:", metric_frame_mitigated.overall['accuracy'])
print("按性别的指标:")
print(metric_frame_mitigated.by_group)dp_diff_mitigated = demographic_parity_difference(y_test, y_pred_mitigated, sensitive_features=sensitive_features_test)
print(f"\n缓解后的人口均等差异: {dp_diff_mitigated:.4f}")

11.4.3 代码解析与业务关联

  • 公平性度量:我们关注selection_rate(选择率),即模型预测为高收入的比例。在标准模型中,我们通常会发现男性(sex=1)的选择率远高于女性(sex=0),这反映了数据中的偏见。demographic_parity_difference直接量化了这两个选择率之间的最大差异,值越接近0越公平。
  • 偏见缓解Fairlearn的核心思想是将公平性约束(如DemographicParity,要求各群体的选择率相等)直接整合到模型的训练过程中。ExponentiatedGradient算法通过一系列的迭代,寻找一个在模型准确性和公平性约束之间达到最佳平衡的分类器。
  • 权衡 (Trade-off):对比两个模型的评估结果,我们通常会看到,缓解偏见后的模型在demographic_parity_difference上表现更好(更接近0),但其整体准确率(accuracy)可能会略有下降。这揭示了AI伦理实践中的一个核心挑战:在模型的性能和公平性之间做出权衡Fairlearn等工具的价值在于,它使得这种权衡变得明确、可量化和可优化。
  • 业务价值:在金融、招聘、司法等高风险领域,部署未经过公平性审计的模型会带来巨大的法律和声誉风险。使用Fairlearn等工具进行偏见检测和缓解,是企业构建“负责任的AI”体系、满足合规要求、赢得社会信任的关键技术步骤。

37.5 构建可信AI的最佳实践

构建一个在技术上、伦理上和安全上都值得信赖的AI系统,需要一个贯穿整个产品生命周期的系统性方法。

  1. 成立跨职能的伦理委员会:由技术、法律、产品、社会学等领域的专家组成,负责审查高风险AI项目,制定伦理准则。

  2. 进行AI影响评估 (AIA):在项目启动前,系统性地评估潜在的社会和伦理风险,包括对不同群体可能产生的不公平影响。

  3. 坚持以人为本的设计 (Human-Centered Design):确保AI系统是作为增强人类能力的工具而存在,保留有意义的人类监督和控制(Human-in-the-loop)。

  4. 采用隐私保护设计 (Privacy by Design):将隐私保护作为系统设计的核心要求,而不是事后补救。最小化数据收集,并默认采用最强的隐私保护设置。

  5. 建立全面的数据治理框架:确保数据的来源、质量、合规性和偏见得到有效管理。记录详细的数据血缘(Data Lineage)。

  6. 实施模型全生命周期风险管理:在模型开发、部署、监控和退役的每个环节,都进行安全和伦理风险的评估与缓解。

  7. 拥抱透明和开放:在适当的情况下,向用户和公众解释AI系统的能力、局限性和决策逻辑。发布模型卡(Model Cards)或数据表(Datasheets for Datasets)来增加透明度。

    • 模型卡 (Model Cards):由Google提出的概念,是一种为AI模型提供的简短、标准化的文档。它旨在向利益相关者(包括开发者、决策者、用户)清晰地传达模型的关键信息。一张典型的模型卡会包含以下内容:
      • 模型基本信息:模型的名称、版本、开发者、发布日期、模型类型(如CNN、Transformer)。
      • 预期用途:该模型被设计用来解决什么问题?目标用户是谁?哪些场景是明确不推荐使用的(Out-of-Scope Uses)?
      • 性能指标:在标准测试集上的表现如何?除了准确率,还应包括在不同人群子集(如不同性别、种族)上的性能表现,以揭示公平性问题。
      • 训练数据:模型是在什么样的数据集上训练的?数据的来源和基本特征是什么?
      • 伦理考量:模型存在哪些已知的偏见和局限性?使用时需要注意哪些伦理风险?

    模型卡就像是AI模型的“营养成分表”,它强制开发者去审视和记录模型的潜在问题,也为使用者提供了评估和选择模型的重要依据。

  8. 制定应急响应计划:为AI系统可能出现的严重故障、安全漏洞或伦理事件,提前准备好应对和补救措施。

附:AI伦理风险评估清单

在启动一个AI项目之前,团队可以参考以下清单进行自我评估,以主动识别和规避潜在的伦理风险。这是一个思考框架,而非标准答案。

领域评估问题
1. 数据 (Data)□ 我们的训练数据是否能代表所有受影响的用户群体?是否存在样本偏差?
□ 数据中是否包含个人敏感信息?我们是否获得了合法授权?
□ 我们采取了哪些措施来保护数据隐私和安全?
2. 公平性 (Fairness)□ 我们的模型是否可能对特定群体(基于性别、种族、年龄等)产生不成比例的负面影响?
□ 我们将如何定义和衡量模型的公平性?
□ 如果发现偏见,我们有什么缓解计划?
3. 透明度 (Transparency)□ 我们能否向用户和监管者解释模型是如何做出决策的?
□ 我们的模型决策逻辑是否清晰、易于理解?
□ 当用户对模型结果提出质疑时,我们是否有申诉和修正的渠道?
4. 鲁棒性与安全 (Robustness & Safety)□ 我们的模型在面对未知或对抗性输入时表现如何?
□ 系统失效可能会带来哪些物理、心理或财务上的伤害?
□ 我们是否有应急预案来处理系统故障?
5. 责任与治理 (Accountability)□ 谁对AI系统的决策和其产生的结果负责?
□ 我们是否建立了内部的AI伦理审查流程?
□ 我们的系统是否符合相关法律法规的要求?
6. 社会影响 (Societal Impact)□ 这个AI应用对人类的自主性和尊严有何影响?
□ 它是否可能加剧现有的社会不平等?
□ 它对环境和长期社会福祉有何潜在影响?
  • 案例:某公司的聊天机器人伦理事件
    一家科技公司推出的社交聊天机器人在与大量用户互动后,开始发表带有种族歧视和煽动性言论的内容。根本原因在于,该机器人被设计为通过模仿用户的语言来进行学习,而它在无监督的情况下学习了互联网上的不良言论。该事件引发了巨大的公关危机。
    • 事后分析:该公司缺乏充分的风险评估,没有预见到开放式学习可能带来的负面影响。同时,缺乏有效的内容过滤机制和紧急关闭预案。
    • 改进措施:此后,类似的产品在推出前会进行更严格的“红队演练”(即模拟恶意攻击),内置更强的安全过滤器,并建立快速响应机制,一旦发现有害行为,能立即介入并修正。这个案例凸显了“构建可信AI最佳实践”中几乎每一条的重要性。

37.6 总结

本章我们深入探讨了AI伦理、安全与社会影响这一复杂而深刻的议题。我们分析了由AI技术引发的核心伦理挑战(偏见与公平性、隐私保护、可解释性、责任归属)、关键安全威胁(对抗性攻击、数据投毒、模型窃取、AI对齐)以及对社会就业的深远影响。我们认识到,技术本身是中立的,但其设计和应用却蕴含着设计者的价值观。因此,构建负责任的AI不仅仅是技术问题,更是社会、法律和哲学问题。

通过Fairlearn的代码实战,我们具体学习了如何量化和缓解模型偏见,将抽象的伦理原则付诸实践。通过“构建可信AI的最佳实践”和“AI伦理风险评估清单”,我们为AI从业者提供了在项目全生命周期中主动管理和规避风险的行动指南。这需要跨学科的合作和持续的公众对话,共同塑造一个不仅智能,而且公正、安全、透明、对人类社会有益的AI未来。

37.6 Mermaid图表:AI伦理与安全的攻防图景

解决方案与防御
AI安全威胁
AI伦理问题
公平算法/数据平衡
可解释AI (XAI)
法律法规/审计日志
联邦学习/差分隐私
对抗性训练
数据审查/异常检测
API访问控制
对抗性攻击
对抗性扰动
数据投毒/后门
有毒数据
模型窃取
模型API
模型偏见
数据偏见
不可解释性
黑箱模型
责任模糊
自主系统
隐私泄露
个人数据

总结

本章探讨了与AI技术发展相伴相生的两大关键领域:AI伦理与AI安全。在AI伦理方面,我们剖析了公平性、可解释性、责任和隐私这四大核心议题,理解了AI偏见的来源以及XAI、联邦学习等应对技术。在AI安全方面,我们学习了对抗性攻击、数据投毒和模型窃取等主要的攻击手段及其防御策略。我们必须认识到,构建负责任、可信赖的AI,绝不仅仅是追求更高的模型精度。它要求我们在技术设计、数据处理、法律框架和社会共识等多个层面进行系统性的思考和建设。一个技术上先进但伦理上存在缺陷或安全上脆弱的AI系统,其潜在的社会风险可能远超其带来的效益。因此,将伦理和安全原则内化到AI研发的全生命周期中,是每一位AI从业者和决策者不可推卸的责任。


文章转载自:

http://PBjYJ3yW.hcgbm.cn
http://hPiRQ2og.hcgbm.cn
http://6ULqm9fa.hcgbm.cn
http://KNrCEcMX.hcgbm.cn
http://wAqLvxCi.hcgbm.cn
http://tLXHQo1e.hcgbm.cn
http://JtYzYPAX.hcgbm.cn
http://YTQt23jI.hcgbm.cn
http://me5kEzFe.hcgbm.cn
http://tZK0PvXQ.hcgbm.cn
http://wDTNLd0i.hcgbm.cn
http://ZBOESg81.hcgbm.cn
http://HNUSmj0P.hcgbm.cn
http://edwKxyaQ.hcgbm.cn
http://davuIdk0.hcgbm.cn
http://WvSpGHUT.hcgbm.cn
http://MRAwuhhB.hcgbm.cn
http://xeJRttPW.hcgbm.cn
http://w8eme11z.hcgbm.cn
http://smX8K4wc.hcgbm.cn
http://jIBUPtG5.hcgbm.cn
http://b5VoCYq1.hcgbm.cn
http://hVj8fqw8.hcgbm.cn
http://YI0nIFZL.hcgbm.cn
http://DV4kfQCv.hcgbm.cn
http://fobBsmkc.hcgbm.cn
http://qQxfa5aH.hcgbm.cn
http://HRsfztWb.hcgbm.cn
http://i54xBgak.hcgbm.cn
http://P2OQ0TZ7.hcgbm.cn
http://www.dtcms.com/a/384993.html

相关文章:

  • 基于shell脚本实现mysql导出指定/全量表前n条,快速预览数据结构
  • 【spring MVC】的执行流程
  • NLP Subword 之 BPE(Byte Pair Encoding) 算法原理
  • 从 Web 到 LLM,多入口、多链路的自动化威胁如何防护?
  • Roo Code代码库索引功能
  • 以太网链路聚合实验
  • 机理流程图绘制,如此简单 !
  • 从按钮到接口:权限系统设计的艺术与实践 —— 打造细粒度可扩展的权限架构
  • 3D 打印在道具制作领域的应用调研与轻资产介入策略创意报告
  • Python多进程通信完全指南:打破进程隔离的壁垒
  • webrtc之语音活动下——VAD人声判定原理以及源码详解
  • S32K3平台RTC应用笔记
  • 开源收银系统_大型收银系统源码_OctShop
  • UE5 蓝图接口函数类型知多少?
  • 【MySQL分库分表:海量数据架构的终极解决方案】
  • 深入解析 Apache RocketMQ架构组成与核心组件作用
  • Tomcat下载和安装教程(图文并茂,适合新手)
  • (用Maven)整合SpringBoot,SpringMVC,MyBatis
  • 数据结构---基于链式存储结构实现的双端队列
  • 【完整源码+数据集+部署教程】训练自动化:电杆基坑分割系统 yolov8-seg-C2f-CloAtt
  • 某发电替代扩建项目集控楼高大支模自动化监测
  • 什么是产品思维?产品经理如何提高产品思维?
  • Quat.js四元数完全指南
  • 34.Socket编程(UDP)(上)
  • 综合篇| 智能体平台dify、coze和n8n对比
  • Crond服务
  • LazyVim设置tab
  • 【无标题】好吧
  • 【Git】零基础入门:配置与初始操作实战指南
  • 云手机兼容性对游戏的重要性