专利进阶(二):专利撰写常用技术及算法汇总(持续更新中)
文章目录
- 一、前言
- 二、常用技术及算法
- 2.1 区跨链技术
- 2.2 聚类算法
- 2.3 边缘算法
- 2.4 蚁群算法
- 2.4.1 路径构建
- 2.4.2 信息素更新
- 2.5 哈希算法
- 2.5.1 常见算法
- 2.6 数字摘要
- 2.7
- 2.8
- 2.9
- 2.10
- 三、拓展阅读
一、前言
专利撰写过程中使用已有技术或算法解决新问题非常常见,本篇博文主要梳理软件发明专利撰写过程中涉及的常用技术及算法。
二、常用技术及算法
2.1 区跨链技术
2.2 聚类算法
2.3 边缘算法
2.4 蚁群算法
蚁群算法是受到对真实蚂蚁群觅食行为研究的启发而提出。生物学研究表明:一群相互协作的蚂蚁能够找到食物和巢穴之间的最短路径,而单只蚂蚁则不能。生物学家经过大量细致观察研究发现,蚂蚁个体之间的行为是相互作用相互影响的。蚂蚁在运动过程中,能够在它所经过的路径上留下一种称之为信息素的物质,而此物质恰恰是蚂蚁个体之间信息传递交流的载体。蚂蚁在运动时能够感知这种物质,并且习惯于追踪此物质爬行,当然爬行过程中还会释放信息素。一条路上的信息素踪迹越浓,其它蚂蚁将以越高的概率跟随爬行此路径,从而该路径上的信息素踪迹会被加强,因此,由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反馈现象。某一路径上走过的蚂蚁越多,则后来者选择该路径的可能性就越大。蚂蚁个体之间就是通过这种间接的通信机制实现协同搜索最短路径的目标的。
群蚁算法的2个核心步骤是:路径构建 和 信息素更新。
2.4.1 路径构建
每个蚂蚁都随机选择一个城市作为其出发城市,并维护一个路径记忆向量,用来存放该蚂蚁依次经过的城市。蚂蚁在构建路径的每一步中,按照一个随机比例规则选择下一个要到达的城市。
上述公式就是计算当前点到每一个可能的下一个节点的概率。分子是信息素强度和能见度的幂乘积,而分母则是所有分子的和值。这个刚开始是很不容易理解的,我们在最后实例计算的时候,可以看得很清楚,再反过来理解公式。注意每次选择好节点后,就要从可用节点中移除选择的节点。
2.4.2 信息素更新
信息素更新是群蚁算法的核心。也是整个算法的核心所在。算法在初始期间有一个固定的浓度值,在每一次迭代完成之后,所有出去的蚂蚁回来后,会对所走过的路线进行计算,然后更新相应的边的信息素浓度。很明显,这个数值肯定是和蚂蚁所走的长度有关系的,经过一次次的迭代,近距离的线路的浓度会很高,从而得到近似最优解。
信息素更新的作用:
- 信息素挥发(
evaporation
)信息素痕迹的挥发过程是每个连接上的信息素痕迹的浓度自动逐渐减弱的过程,这个挥发过程主要用于避免算法过快地向局部最优区域集中,有助于搜索区域的扩展。 - 信息素增强(
reinforcement
)增强过程是蚁群优化算法中可选的部分,称为离线更新方式(还有在线更新方式)。这种方式可以实现由单个蚂蚁无法实现的集中行动。基本蚁群算法的离线更新方式是在蚁群中的m只蚂蚁全部完成n城市的访问后,统一对残留信息进行更新处理。
迭代与停止
迭代停止的条件可以选择合适的迭代次数后停止,输出最优路径,也可以看是否满足指定最优条件,找到满足的解后停止。最重要的是,我刚开始理解这个算法的时候,以为每一只蚂蚁走一条边就是一次迭代,其实是错的。这里算法每一次迭代的意义是:每次迭代的m只蚂蚁都完成了自己的路径过程,回到原点后的整个过程。
2.5 哈希算法
Hash算法或称为散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个映射值称为哈希值。
例如计算一段话“hello blockchain world,this is yeasy@github”的SHA-256 Hash值。
这意味着对于某个文件,无需查看其内容,只要其SHA-256
Hash计算后结果同样为db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90,则说明文件内容极大概率上就是“hello blockchain world,this is yeasy@github”。
Hash值在应用中又常被称为指纹(fingerprint
)或摘要(digest
)。Hash算法的核心思想也经常被应用到基于内容的编址或命名算法中。
一个优秀的Hash算法将能实现如下功能:
-
正向快速:给定明文和Hash算法,在有限时间和有限资源内能计算得到Hash值;
-
逆向困难:给定(若干)Hash值,在有限时间内很难(基本不可能)逆推出明文;
-
输入敏感:原始输入信息发生任何改变,新产生的Hash值都应该出现很大不同;
-
冲突避免:很难找到两段内容不同的明文,使得它们的Hash值一致(发生碰撞)。
冲突避免有时候又称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其他明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生Hash碰撞的明文,则称算法具有“强抗碰撞性”。
2.5.1 常见算法
目前常见的Hash算法包括MD5
和SHA
系列算法。
MD4(RFC 1320)是MIT的Ronald L.Rivest在1990年设计的,MD
是Message Digest
的缩写。其输出为128位。MD4已被证明不够安全。
MD5(RFC 1321)是Rivest于1991年对MD4的改进版本。它对输入仍以512位进行分组,其输出是128位。MD5比MD4更加安全,但过程更加复杂,计算速度要慢一点。MD5已被证明不具备“强抗碰撞性”。
SHA(Secure Hash Algorithm
)并非一个算法,而是一个Hash函数族。NIST(National Institute of Standards and Technology)于1993年发布其首个实现。目前知名的SHA-1
算法在1995年面世,它的输出为长度160位的Hash值,抗穷举性更好。SHA-1设计时模仿了MD4算法,采用了类似原理。SHA-1已被证明不具备“强抗碰撞性”。
为了提高安全性,NIST还设计出了SHA-224
、SHA-256
、SHA-384
和SHA-512
算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。
目前,MD5
和SHA1
已经被破解,一般推荐至少使用SHA2-256
或更安全的算法。
提示⚠️:MD5
是一个经典的Hash算法,和SHA-1
算法一起都被认为安全性已不足应用于商业场景。
Hash算法一般都是计算敏感型的。意味着计算资源是瓶颈,主频越高的CPU运行Hash算法的速度也越快。因此可以通过硬件加速来提升Hash计算的吞吐量。例如采用FPGA
来计算MD5值,可以轻易达到数十Gbps的吞吐量。
也有一些Hash算法不是计算敏感型的。例如scrypt算法,计算过程需要大量的内存资源,节点不能通过简单地增加更多CPU来获得Hash性能的提升。这样的Hash算法经常用在避免算力攻击的场景。
2.6 数字摘要
数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文。这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
顾名思义,数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始完整的数字内容。数字摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,数字摘要可以解决确保内容未被篡改过的问题。
细心的小伙伴可能会注意到,从网站下载软件或文件时,有时会提供一个相应的数字摘要值。用户下载原始文件后可以在本地自行计算摘要值,并与提供的摘要值进行比对,可检查文件内容是否被篡改过。
数字摘要使用场景如下:
- 被发送文件用SHA编码加密产生128bit的
数字摘要
。- 发送方用自己的私用密钥对摘要再加密,这就形成了
数字签名
。- 将原文和加密的摘要(数字签名)同时传给对方。
- 对方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生又一摘要。
- 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。
2.7
2.8
2.9
2.10
三、拓展阅读
- 《专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘》
相关文章:

专利进阶(二):专利撰写常用技术及算法汇总(持续更新中)
文章目录 一、前言二、常用技术及算法2.1 区跨链技术2.2 聚类算法2.3 边缘算法2.4 蚁群算法2.4.1 路径构建2.4.2 信息素更新 2.5 哈希算法2.5.1 常见算法 2.6 数字摘要2.72.82.92.10 三、拓展阅读 一、前言 专利撰写过程中使用已有技术或算法解决新问题非常常见,本…...

C#手术麻醉临床信息系统源码,实现体征数据自动采集绘制
手麻系统源码,自动生成电子单据 基于C# 前端框架:Winform后端框架:WCF 数据库:sqlserver 开发的手术麻醉临床信息系统源码,应用于医院手术室、麻醉科室的计算机软件系统。该系统针对整个围术期,对病人进…...

现代CMake高级教程 - 第 7 章:变量与缓存
双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 7 章:变量与缓存 重复执行 cmake -B build 会有什么区别? ❯ cmake -B build -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detec…...

SQL知识汇总
什么时候用存储过程合适 当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;…...

区位码-GB2312
01-09区为特殊符号 10-15区为用户自定义符号区(未编码) 16-55区为一级汉字,按拼音排序 56-87区为二级汉字,按部首/笔画排序 88-94区为用户自定义汉字区(未编码) 特殊符号 区号:01 各类符号 0 1 2 3 4 …...

文本识别、截图识别保存和多文件识别
一、源码 github源码 二、介绍 采用Tesseract OCR识别 采用多线程进行图片识别 界面 选择 文件是可以识别本地的多张图片文件夹是识别文件夹里面的所有图片的内容截图 可以复制到剪切板、可以识别也可以直接保存 重置 是清除选择的图片和识别结果语言选择 是选择不同的模型…...

针对近日ChatGPT账号大批量封禁的理性分析
文 / 高扬 这两天不太平。 3月31号,不少技术圈的朋友和我闲聊说,ChatGPT账号不能注册了。 我不以为然,自己有一个号足够了,并不关注账号注册的事情。 后面又有不少朋友和我说ChatGPT账号全部不能注册了,因为老美要封锁…...
MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)
目录 前言 几个高频面试题目 推荐领域的对比学习在设计代理任务时与CV和NLP领域有什么不同?...

WeakMap 与 WeakSet
WeakSet WeakSet 结构与 Set 类似,也是不重复的值的集合。 成员都是数组和类似数组的对象,WeakSet 的成员只能是对象,而不能是其他类型的值。 若调用 add() 方法时传入了非数组和类似数组的对象的参数,就会抛出错误。 const b …...

【hello Linux】进程信号
目录 1. 进程信号的引出及整体概况 2. 信号的产生 1. 键盘产生 2. 进程异常 3. 系统调用 4. 软件条件 3. 信号的保存 1. 信号相关的常见概念 2. sigset_t 3. 信号集操作函数 4. sigprocmask:对block位图的操作 5. sigpending:对pending位图的操作 6. 捕捉…...
【SpringBoot】获取HttpServletRequest的三种方式
方法一: Controller中增加request参数 RestController public class DemoController { RequestMapping("/demo")public void demo(HttpServletRequest request) { System.out.println(request.getParameter("hello"));} }线程安全缺点: 每个方法都…...
k8s DCGM GPU采集指标项说明
dcgm-exporter 采集指标项 指标解释dcgm_fan_speed_percentGPU风扇转速占比(%)dcgm_sm_clockGPU sm 时钟(MHz)dcgm_memory_clockGPU 内存时钟(MHz)dcgm_gpu_tempGPU 运行的温度(℃)dcgm_power_usageGPU 的功率(w)dcgm_pcie_tx_throughputGPU PCIeTX 传输的字节总数 (kb)dcgm_pc…...
从线程安全到锁粒度,使用Redis分布式锁的注意事项
关于 Redis 的分布式锁 在分布式的场景下,多个服务器之间的资源竞争和访问频繁性,为了数据的安全和性能的优化,我们需要引入分布式锁的概念,这把锁可以加在上层业务需要的共享数据/资源上,能够同步协调多个服务器的访…...
CopyOnWriteArrayList 的底层原理与多线程注意事项
文章目录 CopyOnWriteArrayList 的底层原理与多线程注意事项1. CopyOnWriteArrayList 底层原理1.1 概念说明1.2 实现原理1.3 优点1.4 缺点 2. CopyOnWriteArrayList 多线程注意事项与实例2.1 注意事项2.2 示例2.2.1 示例代码 3. 总结 CopyOnWriteArrayList 的底层原理与多线程注…...

互斥锁深度理解与使用
大家好,我是易安! 我们知道一个或者多个操作在CPU执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于你分析并发编程Bug出现的原因,例如利用它可以分析出long型变量在32位机器上读写可能出现的诡异Bug,明明已经把变量…...

Elasticsearch --- 数据聚合、自动补全
一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这…...

Haproxy搭建web群集
一.常见的web集群调度器 1、目前常见的web集群调度器分为软件和硬件 2、软件通常使用开源的LVS、Haproxy、Nginx LVS 性能最好,但搭建复杂。Nginx并发量,性能低于Haproxy 3、硬件一般使用比较多的是F5,也有很多人使用国内的一些产品&a…...

Packet Tracer - 配置和验证小型网络
Packet Tracer - 配置和验证小型网络 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 RTA G0/0 10.10.10.1 255.255.255.0 不适用 G0/1 10.10.20.1 255.255.255.0 不适用 SW1 VLAN1 10.10.10.2 255.255.255.0 10.10.10.1 SW2 VLAN1 10.10.20.2 255.25…...
Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机设备的各种固件信息如DeviceID或者SerialNumber等(C++)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...

java 的参数传递
一、疑惑引入 首先,我们从一个例子来引出这个问题: public static void main(String[] args) throws IOException {List<String> mockList Lists.newArrayList("a", "b");System.out.println("1: " mockList);L…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...