CrypTen——基于pytorch的隐私保护机器学习框架
目录
一、CrypTen概述
二、应用场景
三、CrypTen优势
四、CrypTen技术解析
1.基于pytorch的构建基础
2.核心密码学原语
3.加密模型训练流程
五、传统隐私保护技术与CrypTen的对比
1.传统隐私保护技术介绍
2.CrypTen与传统隐私保护技术的区别
六、CrypTen的环境配置
七、简单代码示例
八、相关基础概念
密码学原语
同态加密
秘密共享
Shamir 的秘密共享方案
CrypTen
a framework for Privacy Preserving Machine Learning built on PyTorch.
facebookresearch/CrypTen: A framework for Privacy Preserving Machine Learning
一、CrypTen概述
Crypten 是由 Facebook 人工智能研究院开源的一个深度学习框架扩展,专注于提供加密的深度学习计算能力。它基于 PyTorch 构建,将加密技术深度集成,使得模型训练与推理能够在密文数据上直接进行,确保数据在整个计算流程中的隐私性。
其核心技术包括同态加密、秘密共享等多种密码学原语。这些技术允许数据以加密形式参与运算,计算结果解密后与明文计算结果相同,从而实现在不暴露原始数据的前提下完成复杂的深度学习任务。
二、应用场景
隐私保护的机器学习:在机器学习领域,数据隐私是一个重要的问题。Crypten 可以用于构建隐私保护的机器学习模型,使得模型在训练和推理过程中不泄露数据隐私。例如,在联邦学习中,多个参与方可以使用 Crypten 加密自己的数据,然后共同训练一个模型,而无需将数据集中到一个中心服务器上,从而保护了各方的数据隐私。
数据共享与分析:在数据共享和分析场景中,Crypten 可以确保数据在共享过程中的隐私。例如,政府部门之间需要共享统计数据以进行联合分析,但又不想泄露具体的个体数据。通过 Crypten 的加密技术,各方可以将数据加密后共享,然后在加密数据上进行分析,最终得到的结果也是加密的,只有授权方可以解密查看,从而实现了数据的隐私保护。
金融领域的隐私计算:在金融领域,数据隐私和安全性至关重要。Crypten 可以用于实现金融交易的隐私保护,例如,在多方参与的金融衍生品定价中,各方可以使用 Crypten 加密自己的敏感数据,然后共同计算出一个公平的定价结果,而无需泄露各自的交易策略和资产信息。
......
三、CrypTen优势
1.以机器学习为中心。框架通过CrypTensor对象呈现协议,这与PyTorch的Tensor对象看起来和感觉一样。这允许用户像在PyTorch中那样利用自动微分和神经网络模块。
2.基于库的设计。就像PyTorch一样,CrypTen实现了一个张量库。这使得实践者更便于调试、实验和探索机器学习模型。
3.考虑到现实世界挑战。CrypTen不简化或削弱安全协议的实现。(意味着它不会为了追求诸如提升计算速度、降低资源占用或者方便开发等目标,而在密码学安全协议的实施环节偷工减料。)
四、CrypTen技术解析
1.基于pytorch的构建基础
Crypten 依托 PyTorch 这一广泛使用的深度学习框架,继承了其诸多优秀特性。这使得开发者能够利用 PyTorch 成熟的张量计算、自动求导等功能,无缝过渡到加密计算领域。例如,在定义神经网络模型结构时,沿用 PyTorch 的 nn.Module 类来构建,仅需在数据处理与模型运算环节引入 Crypten 的加密操作,大大降低了学习成本与开发难度。
2.核心密码学原语
同态加密
同态加密允许在密文上直接进行特定的数学运算,结果解密后与明文运算结果相符。Crypten 利用同态加密实现密文数据的加法和乘法操作,这对于深度学习中的线性层计算、卷积计算等至关重要。以线性层为例,权重与加密后的输入数据可在密文状态下相乘,再加上加密的偏置项,整个过程无需解密,保障数据隐私。不过,同态加密的计算开销较大,随着计算复杂度提升,性能瓶颈愈发明显。
秘密共享
秘密共享将秘密数据拆分成多个份额,分发给不同的参与方。只有当足够数量的份额组合在一起时,才能重构出原始秘密。在 Crypten 中,常用于模型参数或数据的分布式存储与计算,例如在多方联合训练模型时,各方持有模型参数的不同份额,通过交互计算中间结果,最终协同完成训练任务,有效防止单点数据泄露风险。
3.加密模型训练流程
·数据加密:在训练前,使用 Crypten 提供的加密函数对原始训练数据进行加密,将其转化为密文张量,这些密文张量可在后续计算中替代明文数据,确保数据在传输与初始计算阶段的安全性。
·加密运算:模型的前向传播、反向传播过程中的计算都基于加密数据与加密模型参数进行。如在反向传播求梯度时,利用同态加密特性计算密文梯度,保证梯度信息不泄露,进而更新加密后的模型参数。
·结果解密(可选):在某些需要查看中间结果或最终预测结果的场景下,对加密计算结果进行解密,但这一步骤通常在受信任环境或满足隐私合规条件下进行,避免随意解密带来的数据暴露风险。
五、传统隐私保护技术与CrypTen的对比
1.传统隐私保护技术介绍
差分隐私
·原理:通过向查询结果或数据分析输出中添加精心设计的噪声,使得攻击者难以从输出中推断出个体数据的具体信息。例如,在统计数据库查询时,每次查询结果都会附带一定随机噪声,即使攻击者多次查询并对比结果,也很难还原出某一特定个体的数据。
·应用场景:广泛应用于数据挖掘、统计分析领域。像一些互联网公司收集用户行为数据进行群体分析时,利用差分隐私技术在公开聚合数据结果的同时,保护用户个人隐私,防止通过数据分析定位到具体用户行为模式。
·优势:简单易行,对原始数据的处理相对直接,不需要复杂的加密体系构建,计算开销较小,能快速应用于大规模数据的初步隐私保护。
·劣势:添加噪声可能会导致数据准确性下降,尤其在对精度要求极高的场景,如精准医疗诊断、高精度金融风险建模等,噪声带来的误差可能使结果失去实用价值。
访问控制
·原理:基于身份认证和授权机制,限定只有经过授权的用户或系统才能访问特定数据资源。常见的如企业内部系统,员工通过用户名和密码登录,根据其岗位角色被赋予不同的数据访问权限,研发人员可能有权访问产品研发数据,而财务人员只能访问财务相关数据。
·应用场景:各类企业、机构的信息管理系统。政府部门存储公民敏感信息的数据库,通过严格的访问控制,确保只有合法的公务人员在执行公务时,依据流程获得相应权限才能查看、处理特定公民信息,防止信息泄露。
·优势:针对性强,直接从数据访问源头把关,能有效防止未经授权的访问,易于理解与管理,通过常规的权限管理策略就能实施。
·劣势:无法防范授权用户的恶意操作,若内部人员违规泄露数据,访问控制机制难以察觉;且对于数据在授权使用过程中的隐私保护相对薄弱,一旦数据流出访问控制边界,如被下载到本地设备,后续流向难以监管。
2.CrypTen与传统隐私保护技术的区别
隐私保护方式
传统技术如差分隐私侧重于数据结果层面的模糊化,Crypten 则聚焦于计算过程中的数据加密。在多方计算场景下,使用差分隐私的各方共享带有噪声的数据进行分析,而 Crypten 让各方以加密数据交互,数据全程不暴露真实值,计算结果由加密运算得出。
数据可用性
差分隐私牺牲部分数据准确性换取隐私,Crypten 由于采用加密计算,只要解密正确,数据原始分布与精度得以保留,在如医疗影像识别训练模型、复杂金融模型训练等对数据精度敏感场景,Crypten 更具优势,能提供高质量的隐私保护计算服务。
应用复杂性
访问控制相对简单直观,依赖于身份认证与权限分配体系;Crypten 基于复杂的密码学原语,需要一定的密码学知识与深度学习框架基础来开发应用,但其能应对更复杂的分布式、协作式计算隐私挑战,如跨机构的联合模型训练,传统访问控制很难满足这种动态、多方的数据交互隐私需求。
六、CrypTen的环境配置
一、系统与软件要求
·操作系统:Crypten 支持多种主流操作系统,包括 Linux、macOS以及 Windows(需安装 Windows Subsystem for Linux,WSL,推荐 Ubuntu 环境)。
·Python 版本:要求 Python 3.6 及以上版本。
二、安装依赖库
·PyTorch:Crypten 基于 PyTorch 构建,首先需安装合适版本的 PyTorch。
·加密库:Crypten 依赖一些加密相关的库,如 crypten-ckks(用于同态加密)、crypten-mpc(用于多方计算相关加密操作)等。
三、安装 Crypten
在确保依赖库安装正确后,通过 pip 安装 Crypten 主库。
七、简单代码示例
import torch
import crypten
#torch 是 PyTorch 深度学习框架,用于创建和操作张量(Tensor),它是 Crypten 的基础。crypten 是用于加密操作的库。
crypten.init() #初始化 Crypten 环境。在使用 Crypten 进行加密操作之前,需要先调用 crypten.init() 来设置加密环境,包括初始化加密密钥等。x = torch.tensor([1.0, 2.0, 3.0])
x_enc = crypten.cryptensor(x) # 加密,将张量 x 加密,创建了一个加密张量 x_enc。crypten.cryptensor 是 Crypten 中用于将明文数据加密为密文数据的函数。在这里,张量 x 被加密,其内容变得无法直接读取,只有通过相应的解密操作才能恢复原始数据。x_dec = x_enc.get_plain_text() # 解密,将加密张量 x_enc 解密,得到原始的明文张量 x_dec。get_plain_text() 方法是 Crypten 中用于解密密文数据并获取明文数据的函数。解密后的张量 x_dec 与原始张量 x 相同,即 [1.0, 2.0, 3.0]。y_enc = crypten.cryptensor([2.0, 3.0, 4.0]) #创建了一个新的加密张量 y_enc,其中包含三个浮点数 [2.0, 3.0, 4.0]。与 x_enc 类似,y_enc 也是通过 crypten.cryptensor 函数加密得到的,其内容同样无法直接读取。
sum_xy = x_enc + y_enc # 加密张量相加,对两个加密张量 x_enc 和 y_enc 进行加法运算,得到一个新的加密张量 sum_xy。Crypten 支持对加密数据进行加法运算,这意味着可以在不泄露原始数据的情况下对加密数据进行计算。这里的加法运算是逐元素进行的,即 x_enc 中的每个元素与 y_enc 中对应位置的元素相加。
sum_xy_dec = sum_xy.get_plain_text() # 解密求和结果,将加密张量 sum_xy 解密,得到求和结果的明文张量 sum_xy_dec。通过 get_plain_text() 方法,我们可以查看加法运算的结果。解密后的 sum_xy_dec 应该是 [3.0, 5.0, 7.0],这是 x 和 y 对应元素相加的结果。
八、相关基础概念
密码学原语
密码学原语是构建密码系统和实现各种加密任务的基础组件,它们是一些最基本、最核心的密码学算法或操作,就如同搭建高楼大厦的基石。
从广义上来说,像哈希函数、对称加密算法、非对称加密算法等都属于密码学原语。哈希函数可以将任意长度的数据映射为固定长度的哈希值,用于数据完整性验证等场景,例如常见的 MD5、SHA-256 等算法;对称加密算法使用相同的密钥对数据进行加密和解密,加密速度快,适合大量数据的加密场景,像 AES 算法在很多领域广泛应用;非对称加密算法则有公钥和私钥之分,公钥可公开用于加密,私钥保密用于解密,常用于数字签名、密钥交换等,经典的如 RSA 算法。
在 Crypten 的语境下,同态加密和秘密共享就是其关键的密码学原语。
同态加密
同态加密是一种特殊的加密技术,允许对加密数据(密文)进行特定的运算,而无需先将数据解密。运算后的密文结果在解密后与对原始明文数据进行相同运算的结果相同。这一特性使得同态加密在保护数据隐私的同时,能够进行有意义的计算。
同态加密基于复杂的数学难题,如代数几何、编码理论等,通过这些难题的计算复杂性来确保加密的强度和安全性。具体来说,同态加密允许对加密数据进行加法、乘法等运算后得到加密结果,而这个结果在解密后与对原始数据进行相同运算的结果一致。
根据支持的运算类型和次数,同态加密可以分为以下几类:
部分同态加密(Partially Homomorphic Encryption, PHE):只支持加法运算或乘法运算中的一种。例如,Paillier 同态加密算法支持加法和数乘运算。
有些同态加密(Somewhat Homomorphic Encryption, SWHE):同时支持加法和乘法运算,但运算次数有限。
全同态加密(Fully Homomorphic Encryption, FHE):支持任意次数的加法和乘法运算,是最强大的同态加密形式。
同态加密的显著缺点就是计算开销极大,相较于传统明文计算,无论是计算时间还是资源消耗,都要高出数倍甚至数十倍。这主要源于加密算法本身的复杂性以及为了保障计算准确性所引入的额外操作。
秘密共享
秘密共享(Secret Sharing)是一种密码学技术,它将一个秘密分割成多个部分(称为“份额”或“分片”),并将这些部分分发给不同的参与者。只有当一定数量的参与者将他们的份额组合在一起时,才能重构出原始秘密。这种技术可以有效地提高秘密的安全性和可靠性,防止秘密被单一实体泄露或丢失。
秘密共享的核心思想是将一个秘密S分割成 n个份额S1,S2,…,Sn,并分发给n个参与者。只有当至少k个参与者(其中k≤n)将他们的份额组合在一起时,才能重构出原始秘密S。这种方案通常被称为(k,n)-门限方案。
Shamir 的秘密共享方案
本篇对隐私计算深度学习新范式crypten进行了简单的总结与介绍,希望能够帮助更多的人了解crypten。
上述内容借鉴来源探索CrypTen:深度学习的安全与隐私保护新范式-CSDN博客
豆包 - 字节跳动旗下 AI 智能助手
相关文章:
CrypTen——基于pytorch的隐私保护机器学习框架
目录 一、CrypTen概述 二、应用场景 三、CrypTen优势 四、CrypTen技术解析 1.基于pytorch的构建基础 2.核心密码学原语 3.加密模型训练流程 五、传统隐私保护技术与CrypTen的对比 1.传统隐私保护技术介绍 2.CrypTen与传统隐私保护技术的区别 六、CrypTen的环境配置…...
日志模块升级,采用sleuth实现日志链路追踪
文章目录 1.common-log4j2-starter1.目录结构2.pom.xml 引入sleuth3.application.yml 开启Sleuth4.log4j2-spring.xml xiugai 日志输出格式5.TraceIdFilter.java 输出带有TraceId的箭头6.LogAspect.java 更改AOP的范围(因为后面出现了栈溢出问题)7.pom.x…...
84,【8】BUUCTF WEB [羊城杯 2020]Blackcat
进入靶场 音乐硬控我3分钟 回去看源码 <?php // 检查 POST 请求中是否包含 Black-Cat-Sheriff 和 One-ear 字段 // 如果任意一个字段为空,则输出错误信息并终止脚本执行 if(empty($_POST[Black-Cat-Sheriff]) || empty($_POST[One-ear])){die(请提供 Black-C…...
中信证券、安我保险-安我股保联合策略
中信证券2025年资本市场年会在深圳开幕,会议以“站上起跑线”为主题,对2025年全球金融市场、宏观经济与政策、A股市场投资策略、大类资产配置、资本市场新格局下的各经济领域发展趋势进行了全面展望。 据悉,中信证券2025年资本市场年会,现场邀请了百余位顶尖学者、产业专家、企…...
WPF实战案例 | C# WPF实现大学选课系统
WPF实战案例 | C# WPF实现大学选课系统 一、设计来源1.1 主界面1.2 登录界面1.3 新增课程界面1.4 修改密码界面 二、效果和源码2.1 界面设计(XAML)2.2 代码逻辑(C#) 源码下载更多优质源码分享 作者:xcLeigh 文章地址&a…...
如何在Spring Boot项目中高效集成Spring Security
1 Spring Security 介绍 Spring Security 是一个功能强大且高度可定制的安全框架,专为保护基于Java的应用程序而设计。它不仅提供了认证(Authentication)和授权(Authorization)的功能,还支持防止各种常见的安全攻击模式。本文将详细介绍Spring Security的主要特点、功能…...
浅谈Unity中Canvas的三种渲染模式
Overview UGUI通过 Canvas 组件渲染和管理UI元素。Canvas 是 UI 元素的容器,它决定了 UI 元素的渲染方式以及它们在屏幕上的显示效果。Canvas 有三种主要的渲染模式,每种模式有不同的用途和特点。本文将介绍这三种渲染模式 1. Screen Space - Overlay 模…...
组件中的emit
我们从页面向子组件传递参数时,我们可以使用props;我们从页面向子组件传递模板片段时,可以使用slots;当我们需要子组件传递参数给调用它的页面时,我们可以使用emit进行参数传递。 例如: <template>…...
java发送邮件
文章目录 需要的依赖发送邮件准备申请授权码 配置文件测试代码 遇到的问题 需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><…...
网络安全 | F5-Attack Signatures-Set详解
关注:CodingTechWork 创建和分配攻击签名集 可以通过两种方式创建攻击签名集:使用过滤器或手动选择要包含的签名。 基于过滤器的签名集仅基于在签名过滤器中定义的标准。基于过滤器的签名集的优点在于,可以专注于定义用户感兴趣的攻击签名…...
左右互搏03-so调用java md5-android开发
依然走动态注册 新建一个java类 package com.koohai.encutils;import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.util.Log;import java.security.MessageDigest; import java.util.List; …...
性能测试丨JVM 性能数据采集
什么是JVM性能数据采集? JVM性能数据采集是指通过一些工具和技术采集与Java虚拟机相关的性能数据。这些数据包括但不限于内存使用、CPU使用、垃圾回收(GC)行为、线程活动等。合理地分析这些数据,可以帮助我们找出系统的瓶颈&…...
MySQL 基础学习(3):排序查询和条件查询
MySQL 查询与条件操作:详解与技巧 在本文中,我们将探讨 MySQL 中的查询操作及其相关功能,包括别名、去重、排序查询和条件查询等,并总结一些最佳实践和注意事项。 一、使用别名(AS) 在查询中,…...
Autogen_core: Quickstart
代码 from dataclasses import dataclass from typing import Callablefrom autogen_core import DefaultTopicId, MessageContext, RoutedAgent, default_subscription, message_handlerdataclass class Message:content: intdefault_subscription class Modifier(RoutedAgen…...
导出地图为pdf文件
有时我们只是想创建能共享的pdf文件,而不是将地图打印出来,arcpy的ExportToPDF()函数可以实现该功能. 操作方法: 1.在arcmap中打开目标地图 2.导入arcpy.mapping模块 import arcpy.mapping as mapping 3.引用当前活动地图文档,把该引用赋值给变量 mxd mapping.MapDocumen…...
从零开始打造智能推荐引擎:技术、实践与未来展望
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
【Leetcode刷题记录】16.最接近的三数之和
16. 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。📑排序双指针 这道题和三数之和很像,不同点是…...
什么是Pytest Fixtures作用域及如何为Pytest Fixtures设置合适的作用域
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 编写重复代码很可能是你最不乐意做的事情之一。至少对我来说是这样。 在一个全力追…...
vue3 vue2区别
Vue 3 和 Vue 2 之间存在多个方面的区别,以下是一些主要的差异点: 1. 性能改进 Vue 3:在性能上有显著提升,包括更小的包体积、更快的渲染速度和更好的内存管理。Vue 2:性能相对较低,尤其是在大型应用中。…...
硬件学习笔记--36 TTL、RS232、RS485相关介绍
RS232、TTL、RS485是三种不同的电气标准和通信接口,它们各自具有独特的特点和应用场景。以下是这三者的主要区别: 一、定义与标准 TTL(Transistor-Transistor Logic) TTL是一种数字信号电平标准,由TTL器件产生&#x…...
FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现
本文主要介绍如何基于FPGA实现视频的任意角度旋转,关于视频180度实时旋转、90/270度视频无裁剪旋转,请见本专栏前面的文章,旋转效果示意图如下: 为了实时对比旋转效果,采用分屏显示进行处理,左边代表旋转…...
HBase-2.5.10 伪分布式环境搭建【Mac】
文章目录 前言一、搭建单节点Zookeeper1. 解压zookeeper2. 配置环境变量3. 修改配置文件4. 启动zk 二、搭建伪分布式Hbase1. 解压hbase2. 配置环境变量3. 修改配置4. 启动HBase 前言 搭建hbase伪分布式环境 提示:以下是本篇文章正文内容,下面案例仅供参…...
我的2024年年度总结
序言 在前不久(应该是上周)的博客之星入围赛中铩羽而归了。虽然心中颇为不甘,觉得这一年兢兢业业,每天都在发文章,不应该是这样的结果(连前300名都进不了)。但人不能总抱怨,总要向前…...
erase() 【删数函数】的使用
**2025 - 01 - 25 - 第 48 篇 【函数的使用】 作者(Author) 文章目录 earse() - 删除函数一. vector中的 erase1 移除单个元素2 移除一段元素 二. map 中的erase1 通过键移除元素2 通过迭代器移除元素 earse() - 删除函数 一. vector中的 erase vector 是一个动态数组&#x…...
STM32项目分享:智能宠物喂食系统(升级版)
目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能宠物喂食系统(升级版) (资…...
逻辑复制parallel并发参数测试
逻辑复制parallel并发参数测试 一、测试结果、测试环境描述 1.1、测试结果 cpu表中有1000万条数据,大小为1652MB,当更新的数据量多于10万条的时候有明显变化,多余30万条的时候相差2倍。 更新的数据量较多时,逻辑复制使用并发参数相比于使用…...
python学opencv|读取图像(四十六)使用cv2.bitwise_or()函数实现图像按位或运算
【0】基础定义 按位与运算:全1取1,其余取0。按位或运算:全0取0,其余取1。 【1】引言 前序学习进程中,已经对图像按位与计算进行了详细探究,相关文章链接如下: python学opencv|读取图像&…...
2025美赛数学建模C题:奥运金牌榜,完整论文代码模型目前已经更新
2025美赛数学建模C题:奥运金牌榜,完整论文代码模型目前已经更新,获取见文末名片...
Kiwi 安卓浏览器本月停止维护,扩展功能迁移至 Edge Canary
IT之家 1 月 25 日消息,科技媒体 Android Authority 今天(1 月 25 日)发布博文,报道称 Kiwi 安卓浏览器将于本月停止维护,相关扩展支持功能已整合到微软 Edge Canary 浏览器中。 开发者 Arnaud42 表示 Kiwi 安卓浏览器…...
Couchbase UI: Server
在 Couchbase UI 中的 Server(服务器)标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍: 1. 节点列表 显示集群中所有节点的列表,每个节点的详细信息包括: 节点地址࿱…...
(一)HTTP协议 :请求与响应
前言 爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。 今天的HTTP协议,会有助于我们更好的了解网络。 一、什么是HTTP协议 (1)定义 HTTP(超文本传输协议ÿ…...
微信阅读网站小程序的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
资源管理输入、工具与技术、输出
过程输入工具与技术输出规划资源管理1.项目章程2.项目管理计划质量管理计划、范围基准3.项目文件项目进度计划、需求文件、风险登记册、干系人登记册4.事业环境因素5.组织过程资产1.专家判断2.数据表现层级型、矩阵型、文本型3.组织理论4.会议1.资源管理计划2.团队章程3.项目文…...
【JavaWeb学习Day13】
Tlias智能学习系统 需求: 部门管理:查询、新增、修改、删除 员工管理:查询、新增、修改、删除和文件上传 报表统计 登录认证 日志管理 班级、学员管理(实战内容) 部门管理: 01准备工作 开发规范-…...
mapStruct 使用踩坑指南
一、缓存机制 经常因为变更字段(通常会这样),导致启动失败。需要清理生成的文件。 /Users/uzong/IdeaProjects/uzong-crm/uzong-crm-manager/src/main/java/com/uzong/crm/manager/GroupManager.java:14:67 java: 找不到符号符号: 方法 getId()位置: 类型为com.u…...
Hive详细讲解-概述与环境搭建
文章目录 1.Hive概述1.2.Hive架构原理1.3Driver 2.Hive最小化模式安装部署3.生产环境hive安装部署4.将hive的元数据存储到Mysql5.元数据库概述6.Hive服务的部署6.1HiveServer26.2Metastore 7.HiveServer2使用7.1Metastore嵌入模式配置7.2Metastore独立模式配置* 8.hive常用的参…...
【算法】数论基础——约数个数定理、约数和定理 python
目录 前置知识约数约数个数定理约数和定理实战演练总结 前置知识 需要掌握:唯一分解定理(算术基本定理) 约数 约数,即因数,定义为: 如果一个整数a可以被另一个整数b整除(即 a mod b 0),那么b就…...
【阅读笔记】基于整数+分数微分的清晰度评价算子
本文介绍的是一种新的清晰度评价算子,整数微分算子分数微分算子 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类:灰度梯度评价函数、频域函数和统计学函数,其中灰度梯度评价函数具有计算简单,评价效果好等优点…...
【技术】TensorRT 10.7 安装指南(Ubuntu22.04)
原文链接:https://mengwoods.github.io/post/tech/008-tensorrt-installation/ 本文安装的版本如下: Ubuntu 22.04 Nvidia Driver 538.78 CUDA 12.2 cuDNN 8.9.7 TensorRT 10.7 安装前的准备(可选) 在安装新版本之前…...
Linux权限有关
文章目录 一、添加普通用户二、Xshell下命令行的知识三、 Linux和Windows操作系统四、再探指令和Linux权限五、用户相关用户切换: 今天我们学习与Linux有关的权限等内容,以及一些零碎知识帮助我们理解Linux的系统和Xshell的原理。 本篇是在Xshell环境下执行的。 一…...
vue router路由复用及刷新问题研究
路由复用问题 当路由匹配路径未发生变化时,只是相关的参数发生了变化,路由跳转时,会发现虽然地址栏中的地址更新到了新的链接,但是页面渲染并未触发响应路由组件的created,mounted等钩子函数,也就意味着组件并没有被重…...
XML实体注入漏洞攻与防
JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574...
【论文阅读】RT-SKETCH: GOAL-CONDITIONED IMITATION LEARNING FROM HAND-DRAWN SKETCHES
RT-Sketch:基于手绘草图的目标条件模仿学习 摘要:在目标条件模仿学习(imitation learning,IL)中,自然语言和图像通常被用作目标表示。然而,自然语言可能存在歧义,图像则可能过于具体…...
27. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表服务
报表是每个记账应用所具备的功能,要实现报表功能就需要把账本的核心功能(记账)完成,因此报表服务作为本专栏第一部分单体应用开发中最后一个要实现的功能,这一篇文章很简单,我们一起来实现一个简单的报表服…...
LeetCode - #194 Swift 实现文件内容转置
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
【全栈】SprintBoot+vue3迷你商城(9)
【全栈】SprintBootvue3迷你商城(9) 往期的文章都在这里啦,大家有兴趣可以看一下 后端部分: 【全栈】SprintBootvue3迷你商城(1) 【全栈】SprintBootvue3迷你商城(2) 【全栈】Spr…...
ThreeJS示例教程200+【目录】
Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…...
《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记
paper:Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal 目录 摘要 1、介绍 2、相关工作 2.1 阴影去除 2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM) 3、方…...
PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10
1.环境搭建 硬件环境:CANoe、待测设备(包含UDS诊断模块) 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…...
基于java实现规则引擎设计思路
背景 去年底换了公司,目前在做HR招聘系统,产品要求:管理端手动配置发布招聘要求(支持多个招聘条件AND与OR关系编排);当C端用户报名该职位时,系统执行该规则,返回报名成功或失败。根据技术调研,采用db存规则…...