Httprint 指纹识别技术:网络安全的关键洞察
引言
Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分。从网络管理的立场来看,保持对各种web服务器的监视和追踪使得Http指纹识别变的唾手可得,Http指纹识别可以使得信息系统和安全策略变的自动化,在基于已经设置了审核策略的特殊的平台或是特殊的web服务器上,安全测试工具可以使用Http指纹识别来减少测试所需要的配置。本文将介绍现有的Http指纹识别技术,同时也将讨论所遇到的一些问题并且拿出可行的解决方案。
一 指纹识别理论
指纹的定义是这样的:1是指任何表面上的指尖印象或者是在指尖上蘸上墨水而在纸上留下的的墨水印象;2是指可以用来识别的东西: 如特色、痕迹或特性等揭露起源的东西,表示物体或物质的特色的证据。指纹识别可以分为两步,一是对指纹进行收集和分类; 二是将未知的指纹同被储存在数据库中的指纹进行比较,从而找出最符合的。当采集指纹的时候,对物体的所有主要特性的抓取是必要的。 采集较多的细节,可以对第二步产生很大的帮助。当比较指纹的时候,很有可能有几个指纹是被不合适的匹配的,因为可指纹之间微小的差别很容易使识别产生错误,这也要求指纹识别需要很高的技术。指纹识别技术现在已经是网络安全的已知技术。操作系统指纹识别在任何的网络评估中是一件通常的工作,现在也有很多操作系统指纹识别技术。操作系统指纹识别为什么能成功?那是因为每个操作系统实现TCP/IP协议时有微小的差别,当前比较流行的是利用TCP/IP堆栈进行后操作系统识别,相关工具比如Nmap;还有的是利用ICMP进行操作系统识别,代表工具如Xprobe。Http指纹识别的原理大致上也是相同的:记录不同服务器对Http协议执行中的微小差别进行识别。Http指纹识别比TCP/IP堆栈指纹识别复杂许多,理由是定制Http服务器的配置文件、增加插件或组件使得更改Http的响应信息变的很容易,这样使得识别变的困难;然而定制TCP/IP堆栈的行为需要对核心层进行修改,所以就容易识别。
二 Banner获取
查看Http应答头信息是Http指纹识别中最简单也是最基础的,我们可以通过一个Tcp客户端比如netcat来实现,一般我们用的比较多的是telnet到80端口,然后发送命令来得到响应信息,这里我们以netcat来做例子,以下是三个不同Http服务器的响应信息:
1:Apache 1.3.23 server:
Http/1.1 200 OK
Date: Mon, 08 Sep 2003 17:10:49 GMT
Server: Apache/1.3.23
Last-Modified: Mon, 08 Sep 2003 03:48:19 GMT
ETag: “32417-c4-3e5d8a83”
Accept-Ranges: bytes
Content-Length: 196
Connection: close
Content-Type: text/html
2:Microsoft IIS 5.0 server:
Http/1。1 200 OK
Server: Microsoft-IIS/5.0
Expires: Mon, 08 Sep 2003 01:41:33 GMT
Date: Mon, 08 Sep 2003 16:41:33 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 08 Sep 2003 15:32:21 GMT
ETag: “b0aac0542e25c31:89d”
Content-Length: 7369
3:Netscape Enterprise 4.1 server:
Http/1.1 200 OK
Server: Netscape-Enterprise/4。1
Date: Mon, 08 Sep 2003 16:19:04 GMT
Content-type: text/html
Last-modified: Mon, 08 Sep 2002 15:37:56 GMT
Content-length: 57
Accept-ranges: bytes
Connection: close
三 模糊服务器Banner信息
在很多情况下,获取Banner被证明是一种很好的Http指纹识别方法。但是,网络管理员会选择通过配置或者是增加插件来更改或者是模糊服务器的Banner信息。当然,这样的设置确实是自动的阻止了很多对Http服务器的攻击。要让服务器返回不同的Banner信息的设置是很简单的,象Apache这样的开放源代码的Http服务器,用户可以在源代码里修改Banner信息,然后重起Http服务就生效了;对于没有公开源代码的Http服务器比如微软的IIS或者是Netscape,可以在存放Banner信息的Dll文件中修改,相关的文章有讨论的,这里不再赘述,当然这样的修改的效果还是不错的。另一种模糊Banner信息的方法是使用插件,这些插件可以提供自定义的Http应答信息。比如ServerMask这个商业软件就可以提供这样的功能,它是IIS服务器的一个插件,ServerMask不仅模糊了Banner信息,而且会对Http应答头信息里的项的序列进行重新组合,从而来模仿Apache这样的服务器,它甚至有能力扮演成任何一个Http服务器来处理每一个请求。这个软件可以在以下地址找到:
Http://www.port80software.com/products/servermask
下面就是一个被自定义Banner信息的Http服务器的例子,Apache服务器被自定义成了未知服务器:
Http/1.1 403 Forbidden
Date: Mon, 08 Sep 2003 02:41:27 GMT
Server: Unknown-Webserver/1.0
Connection: close
Content-Type: text/html; charset=iso-8859-1
下面是一个使用了ServerMask插件的IIS服务器的例子:
Http/1.1 200 OK
Server: Yes we are using ServerMask
Date: Mon, 08 Sep 2003 02:54:17 GMT
Connection: Keep-Alive
Content-Length: 18273
Content-Type: text/html
Set-Cookie: It works on cookies
too=82.3S3.O12.NT2R0RE,4147ON3P,.4OO.; path=/
Cache-control: private
从上面的例子我们可以看到,仅仅从Banner信息来判断Http服务器类型是远远不够的。
四 协议行为
在执行Http协议时,几乎所有的Http服务器都具有它们独特的方法,如果Http请求是合法并且规则的,Http服务器返回的应答信息是符合RFC里的描述的。但是如果我们发送畸形的Http请求,这些服务器的响应信息就不同了,不同服务器对Http协议行为表现的不同就是Http指纹识别技术的基本根据和原理。大家还是喜欢看例子,那就让我们来举几个不同的例子吧,我们将分析3种不同Http服务对不同请求所返回的响应信息,这些请求是这样的:
1:HEAD / Http/1.0 发送基本的Http请求
2:DELETE / Http/1.0 发送那些不被允许的请求,比如Delete请求
3:GET / Http/3.0 发送一个非法版本的Http协议请求
4:GET / JUNK/1.0 发送一个不正确规格的Http协议请求
Exp1:基本的Http请求
我们先发送请求HEAD / Http/1.0,然后分析Http响应头里的信息,对头信息里项的排序进行分析。发送的请求命令如下:
C:>nc apache.example.com 80 //回车,下同
HEAD / Http/1.0 //输入后回车,下同
响应信息:
1:Apache 1.3.23
Http/1.1 200 OK
Date: Mon, 08 Sep 17:10:49 GMT
Server: Apache/1.3.23
Last-Modified: Thu, 27 Feb 2003 03:48:19 GMT
ETag: “32417-c4-3e5d8a83”
Accept-Ranges: bytes
Content-Length: 196
Connection: close
Content-Type: text/html
2:IIS 5.0
Http/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: Http://iis。example。com/Default。htm
Date: Mon, 08 Sep 20:13:52 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 08 Sep 2003 10:10:50 GMT
ETag: W/“e0d362a4c335be1:ae1”
Content-Length: 133
3:Netscape Enterprise 4.1
Http/1.1 200 OK
Server: Netscape-Enterprise/4.1
Date: Mon, 08 Sep 2003 06:01:40 GMT
Content-type: text/html
Last-modified: Mon, 08 Sep 2003 01:37:56 GMT
Content-length: 57
Accept-ranges: bytes
Connection: close
比较结果: Apache头信息里的Server和Date项的排序是不同的。
Exp2:Http DELETE请求
这次,我们将发送DELETE / Http/1.0请求,我们将分析不同Http服务器对非法请求的应答信息的不同。发送的请求命令:
C:>nc apache。example。com 80
DELETE / Http/1.0
响应信息:
1:Apache 1.3.23
Http/1.1 405 Method Not Allowed
Date: Mon, 08 Sep 2003 17:11:37 GMT
Server: Apache/1.3.23
Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS,
PATCH, PROPFIND, PROPPATCH,
MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1
2:IIS 5.0
Http/1.1 403 Forbidden
Server: Microsoft-IIS/5.0
Date: Mon, 08 Sep 2003 20:13:57 GMT
Content-Type: text/html
Content-Length: 3184
3:Netscape Enterprise 4.1
Http/1.1 401 Unauthorized
Server: Netscape-Enterprise/4.1
Date: Mon, 08 Sep 2003 06:03:18 GMT
WWW-authenticate: Basic realm=“WebServer Server”
Content-type: text/html
Connection: close
比较结果: Apache响应的是"405 Method Not Allowed",IIS响应的是"403 Forbidden",Netscape响应的是 “401 Unauthorized”,发现对Delete请求,响应的信息是完全不同的。
Exp3:非法Http协议版本请求
这次我们将发送非法的Http协议版本请求,比如GET / Http/3。0请求,事实上Http 3.0是不存在的,发送请求命令:
C:>nc apache。example。com 80
GET / Http/3.0
响应信息:
1:Apache 1.3.23
Http/1.1 400 Bad Request
Date: Mon, 08 Sep 2003 17:12:37 GMT
Server: Apache/1.3.23
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
2:IIS 5.0
Http/1.1 200 OK
Server: Microsoft-IIS/5。0
Content-Location: Http://iis。example。com/Default。htm
Date: Mon, 08 Sep 2003 20:14:02 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 08 Sep 2003 20:14:02 GMT
ETag: W/“e0d362a4c335be1:ae1”
Content-Length: 133
3:Netscape Enterprise 4.1
Http/1.1 505 Http Version Not Supported
Server: Netscape-Enterprise/4.1
Date: Mon, 08 Sep 2003 06:04:04 GMT
Content-length: 140
Content-type: text/html
Connection: close
比较结果:Apache响应的是"400 Bad Request",IIS忽略了这个请求,响应信息是OK, 还返回了网站根目录的HTML数据信息,Netscape响应的是"505 Http Version Not Supported"。
Exp4: 不正确规则协议请求
这次测试主要是对GET / JUNK/1.0. 请求的响应,发送请求命令:
C:>nc apache.example.com 80
GET / JUNK/1.0
响应信息:
1:Apache 1.3.23
Http/1.1 200 OK
Date: Sun, 15 Jun 2003 17:17:47 GMT
Server: Apache/1.3.23
Last-Modified: Thu, 27 Feb 2003 03:48:19 GMT
ETag: “32417-c4-3e5d8a83”
Accept-Ranges: bytes
Content-Length: 196
Connection: close
Content-Type: text/html
2:IIS 5.0
Http/1。1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Fri, 01 Jan 1999 20:14:34 GMT
Content-Type: text/html
Content-Length: 87
3:Netscape Enterprise 4.1
Bad request
Your browser sent a query this server could not understand。比较结果:在这里,Apache忽视了不规则的协议"JUNK",还返回了200 “OK” 和根目录的一些信息,IIS响应的是"400 Bad Request",Netscape几乎没有返回Http头信息,相反的却返回了HTML格式的信息来表明这是个错误请求。
测试小结:我们下面列了一个表,我们可以很简单的辨别不同的Http服务器。
服务器 头信息项排序 Delete请求 非法版本 不规则协议
Apache/1.3.23 Date, Server 405 400 200
MS-IIS/5.0 Server, Date 403 200 400
Netscape4.1 Server, Date 401 505 no header
五 指纹识别工具
这里我们将介绍一个Http指纹识别工具Httprint,它通过运用统计学原理,组合模糊的逻辑学技术,能很有效的确定Http服务器的类型。它可以被用来收集和分析不同Http服务器产生的签名,什么是Http签名呢?Http签名通过16进制转为ASCII码如下:
Microsoft-IIS/5.0
CD2698FD6ED3C295E4B1653082C10D64811C9DC594DF1BD04276E4BB811C9DC5
0D7645B5811C9DC52A200B4C9D69031D6014C217811C9DC5811C9DC52655F350
FCCC535BE2CE6923E2CE6923F2454256E2CE69272576B769E2CE6926CD2698FD
6ED3C295E2CE692009DB9B3E6ED3C2956ED3C2956ED3C2956ED3C295E2CE6923
6ED3C295
Apache/1.3.x
9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BB630A04DB
0D7645B5970EE6BB811C9DC5CD37187C11DDC7D78398721EB06FE5D78A91CF57
FCCC535B6ED3C295FCCC535B811C9DC5E2CE69272576B769E2CE69269E431BC8
6ED3C295E2CE69262A200B4C811C9DC5811C9DC5811C9DC5811C9DC5811C9DC5
811C9DC5
Httprint先把一些Http签名信息保存在一个文档里,然后分析那些由Http服务器产生的结果。当我们发现那些没有例在数据库中的签名信息时,我们可以利用Httprint产生的报告来扩展这个签名数据库,而当Httprint下一次运行时,这些新加的签名信息也就可以使用了。Httprint可以图形界面运行和命令行下运行,可以运行在Windows、Linux和Mac OS X平台上。
以下是命令行下的帮助文件:
D:>Httprint
Usage: Httprint {-h | -i } -s [… options]
-h 可以是ip地址ip范围,或者是url地址
-i 一个包含测试地址的文件,默认文件是input。txt
-s 一个包含Http签名的文件,默认是signatures。txt
Options:
-o 默认的报告文件是"Httprintoutput。html"。可以
自己定义
-tp Ping超时时间,默认是1000 ms。 最大是30000 ms。
-t 连接和读取超时时间,默认是10000 ms。 最大是100000 ms。
-r 重复时间。 默认是3次。 最大是30次。
-P0 指纹识别前不Ping主机。
-? 帮助信息。
例子:
Httprint -h http://www.target.com/ -s signatures.txt
Httprint -h Https://www.target.com -s signatures.txt
Httprint -h Http://www.target.com:8080/ -s signatures.txt
Httprint -h 10.0.1.1-10.0.1.254 -s signatures.txt -o 10_0_1_x.html
Httprint -i input.txt -s signatures.txt -o output.html
使用方法是很简单的,下面是Httprint的一次输出结果:
D:>Httprint -h Http://www.Target.com -s signatures.txt
Host: http://www.target.com/ is alive…
Finger Printing on Http://www.target.com:80/
Derived Signature:
Apache/1.3.26 (Unix)
9E431BC86ED3C295811C9DC5811C9DC5050C5D32505FCFE84276E4BBC184CB92
0D7645B5811C9DC52A200B4C811C9DC511DDC7D78398721E811C9DC5811C9DC5
E2CE6923E2CE6923E2CE6923811C9DC568D17AAE2576B769E2CE6926811C9DC5
E2CE6923E1CE67B1811C9DC5E2CE6920E2CE69206ED3C2956ED3C295E2CE6920
E2CE69206ED3C295811C9DC568D17AAEE2CE6923
Banner Reported: Apache/1.3.26 (Unix)
Banner Deduced: Apache/1.3.26
Scores:
Microsoft-IIS/4.0: 47
Microsoft-IIS/5.0: 57
Microsoft-IIS/5.0 ASP。NET: 57
Microsoft-IIS/5.1: 57
Microsoft-IIS/6.0: 75
… //略去一些
Apache/2。0。x: 70
Apache/1。3。27: 79
Apache/1。3。26: 80
Apache/1。3。[4-24]: 78
… //略去一些
Com21 Cable Modem: 49
在上面的例子中,Httprint显示了被测服务器的签名信息,然后将这些信息同数据库中已有的签名进行比较,然后对每一个指纹进行评分,分数最高的也就是最符合的。 在这个例子里, "Apache/1.3.26"是最适合的。以下是图形界面的抓图:
图片
Httprint会产生一个HTML格式的报告,这个报告将对以后的分析产生很大的作用,下面是一个报告:
图片
Httprint的功能是强大的,尽管大家可以用ServerMask这样的软件来模糊指纹,但是仍然可以被Httprint这样利用统计学原理进行识别的的软件打败,下面是一个例子:
D:>Httprint unknown.example.com
Reported signature:
Protected by ServerMask
CD2698FD6ED3C295811C9DC5811C9DC5811C9DC594DF1BD04276E4BB811C9DC5
0D7645B5811C9DC5811C9DC59D69031D6014C217811C9DC5811C9DC580FF2CD2
FCCC535BE2CE6923E2CE6923811C9DC5E2CE69272576B769E2CE69262CEAB43E
6ED3C295FCCC535B811C9DC56ED3C2956ED3C2956ED3C2956ED3C295E2CE6923
6ED3C295
Best Match: Microsoft-IIS/5.0,Microsoft-IIS/5.1
Scores:
Microsoft-IIS/4.0: 86
Microsoft-IIS/5.0: 101
Microsoft-IIS/5.1: 101
Microsoft-IIS/6.0: 56
…
Apache/1.3.27: 35
Apache/1.3.26: 36
Apache/1.3.x: 34
…
MiniServ/0.01: 15
尽管服务器使用ServerMask迷惑了响应信息, 但是Httprint仍然精确的判断出它是Microsoft-IIS/5.0或5.1
图片
-END-
作者简介:风随水
一个从事十五年测试和质量管理者
曾经深圳乃至全国最大最活跃软件测试QQ群群主
致力于质量管理和体系规范
相关文章:
Httprint 指纹识别技术:网络安全的关键洞察
引言 Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分。从网络管理的立场来看,保持对各种web服务器的监视和追踪使得Http指纹识别变的唾手可得,Http指纹识别可以使得信…...
STM32的HAL库开发---ADC
一、ADC简介 1、ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器 把一些传感器的物理量转换成电压,使用ADC采集电压,然后转换成数字量,经过单片机处理,进行控制和显示。 2、常见的AD…...
PostgreSQL有undo表空间吗?
PostgreSQL有undo表空间吗 PostgreSQL 没有单独的 Undo 表空间,其事务回滚和多版本并发控制(MVCC)机制与 Oracle 等数据库有显著差异。 一 PostgreSQL 的 MVCC 实现 PostgreSQL 通过 多版本并发控制(MVCC) 管理事务…...
Huatuo热更新--安装HybridCLR
1.自行安装unity编辑器 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x 中任一版本。推荐安装2019.4.40、2020.3.26、2021.3.x、2022.3.x版本。 根据你打包的目标平台,安装过程中选择必要模块。如果打包Android或iOS,直接选择相应模块即可。如果你想打包…...
Windows环境安装部署minimind步骤
Windows环境安装部署minimind步骤 必要的软件环境 git git,可下载安装版,本机中下载绿色版,解压到本地目录下(如:c:\soft\git.win64),可将此路径添加到PATH环境变量中,供其他程序…...
前端面试手写--虚拟列表
目录 一.问题背景 二.代码讲解 三.代码改装 四.代码发布 今天我们来学习如何手写一个虚拟列表,本文将把虚拟列表进行拆分并讲解,然后发布到npm网站上. 一.问题背景 为什么需要虚拟列表呢?这是因为在面对大量数据的时候,我们的浏览器会将所有数据都渲染到表格上面,但是渲…...
【算法进阶详解 第一节】树状数组
【算法进阶详解 第一节】树状数组 前言树状数组基础树状数组原理树状数组能够解决的问题 树状数组提高树状数组区间加,区间和操作二维树状数组 树状数组应用树状数组区间数颜色树状数组二维偏序 前言 树状数组在算法竞赛中十分常见,其能解决二维数点&am…...
青少年编程与数学 02-009 Django 5 Web 编程 16课题、权限管理
青少年编程与数学 02-009 Django 5 Web 编程 16课题、权限管理 一、授权授权的主要特点和作用授权的类型应用场景 二、权限系统使用Django内置的权限系统使用组管理权限使用第三方库在视图中应用权限 三、权限管理示例步骤 1: 创建Django项目和应用步骤 2: 定义模型和权限步骤 …...
第四十四篇--Tesla P40+Janus-Pro-7B部署与测试
环境 系统:CentOS-7 CPU: 14C28T 显卡:Tesla P40 24G 驱动: 515 CUDA: 11.7 cuDNN: 8.9.2.26创建环境 conda create --name trans python3.10torch 2.6.0 transformers 4.48.3克隆项目 git clone https:/…...
低成本、高效率且成熟的电商实时数据采集方案:梦想成真?
在电子商务领域,数据是驱动业务决策的核心资源。实时数据采集对于电商企业而言,意味着能够即时洞察市场动态、消费者行为以及运营效果,从而快速调整策略,提升竞争力。然而,如何在保证数据质量的同时,实现低…...
微信小程序之mobx-miniprogram状态管理
目前已经学习了6种小程序页面、组件间的数据通信方案,分别是: 1. 数据绑定: properties 2.获取组件实例: this.selectComponent() 3.事件绑定: this.triggerEvent() 4. 获取应用实例:getApp() 5. 页面间通信: EventChannel 6.事件总线:pubsub-js 在中小型项目…...
uniapp可视化-活动报名表单系统-代码生成器
活动报名表单系统小程序旨在为各类活动组织者提供一个便捷、高效的线上报名管理平台,同时为参与者提供简单易用的报名途径。 主要功能 活动发布:活动组织者可以发布活动的详细信息,包括活动名称、时间、地点、活动内容等。用户可以在小程序中…...
1.从零开始学会Vue--{{基础指令}}
全新专栏带你快速掌握Vue2Vue3 1.插值表达式{{}} 插值表达式是一种Vue的模板语法 我们可以用插值表达式渲染出Vue提供的数据 1.作用:利用表达式进行插值,渲染到页面中 表达式:是可以被求值的代码,JS引擎会将其计算出一个结果 …...
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
作为一位个人开发者兼产品经理,我的工作日常紧密围绕着云资源的运维和管理。在这个过程中,操作系统扮演了至关重要的角色,而操作系统控制台则成为了我们进行系统管理的得力助手。本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功…...
CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?
CSS Grid网格布局和Flexbox弹性盒布局模型都是现代CSS布局的重要工具,它们各自具有独特的优势和适用场景。 作为前端开发工程师,理解这些布局模型的差异和适用场景对于编写高效、可维护的代码至关重要。 CSS Grid网格布局 适用场景: 复杂…...
2025.2.16机器学习笔记:TimeGan文献阅读
2025.2.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构一、嵌入函数二、恢复函数三、序列生成器四、序列判别器损失函数 实验结论后续展望 一、文献阅读 题目信息 题目: Time-series Generative Adversarial Networks会议: Neural Information…...
高通推出骁龙游戏超级分辨率™:充分释放移动游戏性能,带来更持久的续航
Snapdragon Elite Gaming 一直致力于为每位用户打造卓越游戏体验。骁龙支持众多端游级特性,包括144FPS游戏体验、True 10-bit HDR支持的最高视觉质量的超流畅图形,让玩家可以畅享超10亿色的游戏体验。骁龙将许多移动端首创特性引入备受玩家喜爱的游戏中&…...
golangAPI调用deepseek
目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…...
SOC芯片前端设计对芯片电源完整性的影响
在进行芯片的电源完整性时,因为PI受影响的因素较多,出现问题debug也比较难,所以在进行芯片设计时,需要端到端从前到后进行考虑设计,本篇文章将从芯片前端设计的角度来看看哪些因素会影响到PI的设计。 芯片前端设计的主…...
【区块链】零知识证明基础概念详解
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 零知识证明基础概念详解引言1. 零知识证明的定义与特性1.1 基本定义1.2 三个核心…...
面基Spring Boot项目中实用注解一
在Spring Boot项目中,实用注解根据功能可以分为多个类别。以下是常见的注解分类、示例说明及对比分析: 1. 核心配置注解 SpringBootApplication 作用:标记主启动类,组合了Configuration、EnableAutoConfiguration和ComponentScan…...
最新智能优化算法: 中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法求解23个经典函数测试集,MATLAB代码
中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法由GUO Zhiqing 等人提出,该算法的灵感来自中华穿山甲独特的狩猎行为,包括引诱和捕食行为。 算法流程如下: 1. 开始 设置算法参数和最大迭代次数&a…...
shell脚本备份MySQL数据库和库下表
目录 注意: 一.脚本内容 二.执行效果 三.创建定时任务 注意: 以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purgedOFF无效,考虑到一般数据库节点和备份…...
Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形
前言 正弦波形也是一种常用、常见的程序化图形,合理的使用正弦波形会创作出一些有趣、美观和丰富的效果,本文将使用Unity Shader Graph来实现一个正弦波形效果,帮助理解和实践Unity Shader Graph以及正弦函数。 创建一个名为SineWave的Shader…...
【算法与数据结构】并查集详解+题目
目录 一,什么是并查集 二,并查集的结构 三,并查集的代码实现 1,并查集的大致结构和初始化 2,find操作 3,Union操作 4,优化 小结: 四,并查集的应用场景 省份…...
国家队出手!DeepSeek上线国家超算互联网平台!
目前,国家超算互联网平台已推出 DeepSeek – R1 模型的 1.5B、7B、8B、14B 版本,后续还会在近期更新 32B、70B 等版本。 DeepSeek太火爆了!在这个春节档,直接成了全民热议的话题。 DeepSeek也毫无悬念地干到了全球增速最快的AI应用。这几天,国内的云计算厂家都在支持Dee…...
H5接入支付宝手机网站支付并实现
小程序文档 - 支付宝文档中心 1.登录 支付宝开放平台 创建 网页/移动应用 2.填写创建应用信息 3.配置开发设置 4.网页/移动应用:需要手动上线。提交审核后,预计 1 个工作日的审核时间。详细步骤可点击查看 上线应用 。应用上线后,还需要完成…...
Win10环境借助DockerDesktop部署大数据时序数据库Apache Druid
Win10环境借助DockerDesktop部署最新版大数据时序数据库Apache Druid32.0.0 前言 大数据分析中,有一种常见的场景,那就是时序数据,简言之,数据一旦产生绝对不会修改,随着时间流逝,每个时间点都会有个新的…...
(三)Axure制作转动的唱片
效果图 属性: 图标库:iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片,裁剪,然后加圆角, 唱片和底图是两个图片,点击播放,唱片在旋转。 主要是播放按钮和停止按钮,两个动态面板…...
[JVM篇]分代垃圾回收
分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根据对象存活的不同生命周期将内存划分为不同的域,一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...
SpringBoot多数据源实践:基于场景的构建、实现和事务一体化研究
1. 多数据源应用场景剖析 1.1 业务驱动的多数据源需求 数据量与业务复杂度引发的分库分表:在现代企业级应用中,随着业务的不断拓展和用户量的持续增长,数据量呈爆炸式增长。例如,在大型电商平台中,用户数据、订单数据…...
鸿蒙应用开发者基础
目录 判断题 单选题 多选题 判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误࿰…...
Java面试第二山!《计算机网络》!
在 Java 面试里,计算机网络知识是高频考点,今天就来盘点那些最容易被问到的计算机网络面试题,帮你轻松应对面试,也方便和朋友们一起探讨学习。 一、HTTP 和 HTTPS 的区别 1. 面试题呈现 HTTP 和 HTTPS 有什么区别?在…...
2025最新Java面试题大全(整理版)2000+ 面试题附答案详解
很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#…...
低空经济:开启未来空中生活的全新蓝海
引言 随着科技的进步,我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过,未来的某一天,快递、外卖可以像魔法一样直接从空中送到你手中?或者,你能乘坐小型飞行器,快速穿梭于城市之间,告别拥堵…...
【机器学习】线性回归与一元线性回归
【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归与一元线性回归 V1.1线性回归问题线性方程的最优解一元线性回归一元线性回归的方程一元线性回归…...
MongoDB 7 分片副本集升级方案详解(上)
#作者:任少近 文章目录 前言:Mongodb版本升级升级步骤环境1.1环境准备1.2standalone升级1.3分片、副本集升级 前言:Mongodb版本升级 在开始升级之前,请参阅 MongoDB下个版本中的兼容性变更文档,以确保您的应用程序和…...
Fiori APP配置中的Semantic object 小bug
在配置自开发程序的Fiori Tile时,需要填入Semantic Object。正常来说,是需要通过事务代码/N/UI2/SEMOBJ来提前新建的。 但是在S4 2022中,似乎存在一个bug,即无需新建也能输入自定义的Semantic Object。 如下,当我们任…...
坑多多之AC8257 i2c1 rtc-pcf8563
pcf85163 ordering information Ordering information Package Description Version Marking code PCF85163T/1 SO8 ① SOT96-1 PF85163 PCF85163TS/1 TSSOP8 ② SOT505-1 85163 ①plastic small outline package; 8 leads;body width 3.9 mm ②plastic thin…...
制作一个项目用于研究elementUI的源码
需求:修改el-tooltip的颜色,发现传递参数等方法都不太好用,也可以使用打断点的方式,但也有点麻烦,因此打算直接修改源码,把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…...
Docker高级篇
1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…...
OSI 参考模型和 TCP/IP 参考模型
数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和…...
rocketmq-netty通信设计-request和response
1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…...
初识计算机网络
从此篇我将开始网络新篇章! 1. 网络发展史 最初的计算机之间相互独立存在,每个计算机只能持有自己的数据,数据无法共享。此时的计算机为独立模式 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据&#x…...
kamailio常见问题解答
常见问题解答 本页面接受贡献,你必须通过注册表单创建一个用户账户: https://www.kamailio.org/wiki/start?doregister 如果你有一个适合收录进常见问题解答的问题,并且你不知道答案,那就添加这个问题,并将答案设置…...
Flask框架入门完全指南
一、初识Flask:轻量级框架的魅力 1.1 Flask框架定位 Flask作为Python最受欢迎的轻量级Web框架,以"微核心可扩展"的设计哲学著称。其核心代码仅约2000行,却支持通过扩展实现完整Web开发功能。这种设计使得开发者可以: …...
用deepseek学大模型05逻辑回归
deepseek.com:逻辑回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导。…...
为什么要选择3D机器视觉检测
选择3D机器视觉检测的原因主要包括以下几点: 高精度测量 复杂几何形状:能够精确测量复杂的三维几何形状。 微小细节:可捕捉微小细节,适用于高精度要求的行业。全面数据获取 深度信息:提供深度信息,弥补2D视…...
CentOS上安装WordPress
在CentOS上安装WordPress是一个相对直接的过程,可以通过多种方法完成,包括使用LAMP(Linux, Apache, MySQL, PHP)栈或使用更现代的LEMP(Linux, Nginx, MySQL, PHP)栈。 我选择的是(Linux, Nginx…...
webshell通信流量分析
环境安装 Apatche2 php sudo apt install apache2 -y sudo apt install php libapache2-mod-php php-mysql -y echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php sudo ufw allow Apache Full 如果成功访问info.php,则环境安…...