【Docker】镜像安全扫描工具clair与clairctl

news2026/4/9 3:01:38
【Docker】镜像安全扫描工具clair与clairctl镜像扫描结构图方式2的具体操作步骤clair是什么clair是一个开源项目用于静态分析appc和docker容器中的漏洞。 漏洞元数据从一组已知的源连续导入并与容器映像的索引内容相关联以生成威胁容器的漏洞列表。clair版本选择clair选择2.0.1版本clair安装过程docker方式1.clair将漏洞元数据存储在Postgres中先拉取postgres:9.6docker pull postgres:9.62.使用官方镜像clair:v2.0.1并进行拉取docker pull quay.io/coreos/clair:v2.0.13.创建clair的配置文件存放的文件夹mkdir /root/clair/_config4.下载clair的配置文件主要是对数据库连接方式的配置curl -L https://raw.githubusercontent.com/coreos/clair/v2.0.1/config.example.yaml -o /root/clair/_config/config.yaml5.运行postgres容器docker run -d -e POSTGRES/_PASSWORD“” -p 5432:5432 postgres:9.66.运行clair容器docker run --nethost -d -p 6060-6061:6060-6061 -v /root/clair/_config:/config quay.io/coreos/clair:v2.0.1 -config/config/config.yaml注此时clair容器不断从各个数据站点下载漏洞数据源并存放至数据库中非常耗时存在大量数据站点无法请求的情况。若此时漏洞元数据可以下载可继续以下步骤7.安装辅助工具clairctlclairctl一个轻量级命令行工具用于在本地使用clair并生成HTML报告。Clairctl需要go语言支持7.1 下载go支持包https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz7.2 解压tar -zxvf go1.8.3.linux-amd64.tar.gz /usr/local/go7.3 设置环境变量export PATH$PATH:/usr/local/go/binexport GOROOT/usr/local/go7.4 确认go版本go version7.5 安装clairctlcurl -L https://raw.githubusercontent.com/jgsqware/clairctl/master/install.sh | sh7.6 确认clairctl版本clairctl version7.7 检查clairctl与Clair的连接clairctl health如果显示✔则说明clairctl和clair能够进行正常连接。8.上传镜像至clairclairctl push -l nginx9.分析本地镜像clairctl analyze -l nginx在分析时生成详细的分析文档clairctl analyze -l --log-level debug nginx10.生成结果如果希望堪当更加详细的信息可以使用report命令clairctl report -l nginx11.查看clair分析的具体步骤clairctl analyze -l --log-level debug nginx备注192.168.2.186 root Beyond#11 clair用的是最新版也可以使用v2.0.1版本需要等待2、3个小时让漏洞元下载下来目前这种方式可以成功push与analyze nginx但查不出任何漏洞要么nginx本身就没有漏洞要么就是没有进行比对push其他镜像时出现了问题该问题暂不知道解决方式。docker-compose方式1.安装docker-composecurl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-compose检查版本docker-compose --version2.将以下代码保存在/root目录下的docker-compose.yml中version: 2.1 services: postgres: image: postgres:9.6 restart: unless-stopped volumes: - ./data/postgres/data:/var/lib/postgresql/data:rw environment: - POSTGRES_PASSWORDpassword - POSTGRES_USERclair - POSTGRES_DBclair clair: image: quay.io/coreos/clair:v2.0.1 restart: unless-stopped volumes: - ./data/clair/config/:/config/:ro - ./data/clair/tmp/:/tmp/:rw depends_on: postgres: condition: service_started command: [--log-leveldebug, --config, /config/config.yml] clairctl: image: jgsqware/clairctl:latest restart: unless-stopped environment: - DOCKER_API_VERSION1.24 volumes: - ./data/clairctl/reports/:/reports/:rw - /var/run/docker.sock:/var/run/docker.sock:ro depends_on: clair: condition: service_started3.将以下配置代码保存在/root/data/clair/config目录中的config.yml中clair: database: type: pgsql options: source: postgresql://clair:passwordpostgres:5432/clair?sslmodedisable cachesize: 16384 api: port: 6060 healthport: 6061 timeout: 900s updater: interval: 2h notifier: attempts: 3 renotifyinterval: 2h4.在docker-compose.yml的路径下构建镜像并启动容器docker-compose up -d5.因为clairctl的官方镜像中的用户限定为clairctl因此更改权限chmod 777 /var/run/docker.sock6.确认docker-compose启动的容器信息docker-compose ps7.确认clairctl与clair的连接状况docker-compose exec clairctl clairctl health8.将本地镜像push到clairdocker-compose exec clairctl clairctl push -l nginx9.分析镜像docker-compose exec clairctl clairctl analyze -l nginx10.生成HTML报告docker-compose exec clairctl clairctl report -l nginx调用clair的api方式先看clair v2.0.1的api文档示例请求POST http://localhost:6060/v1/layers HTTP/1.1{ Layer: { Name: 523ef1d23f222195488575f52a39c729c76a8c5630c9a194139cb246fb212da6, Path: https://mystorage.com/layers/523ef1d23f222195488575f52a39c729c76a8c5630c9a194139cb246fb212da6/layer.tar, Headers: { Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiY WRtaW4iOnRydWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO19W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGu ERTqYZyuhtF39yxJPAjUESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE }, ParentName: 140f9bdfeb9784cf8730e9dab5dd12fbd704151cf555ac8cae650451794e5ac2, Format: Docker } }该步操作是将指定镜像的每一层按照顺序push到clair中。官网说明为了分析容器图像必须按照正确的顺序push某个镜像的所有层。例如要分析由三层A- B- C组成的图像其中A是基础层必须对此路径进行三次API调用从A到C.此外在分析B时必须将A设置为父级然后在分析C时必须将B定义为父级。Name为层id,或为一个不与其他图层id重复的字符串Path位图层的下载地址Authorization字段是一个可选值可选其内容将在通过HTTP请求图层时填充Authorization HTTP Header。ParentName为父级idFormat固定为Docker因此目前我们的思路为打包测试用的image再将解压后的文件复制到tomcat的ROOT目录中在post的过程中注意层级的父子关系。1.将某个镜像打包docker save -o /root/data/nginx.tar nginx:latest2.解压该镜像tar -xvf nginx.tar3.查看镜像的层级关系vi manifest.json输出[{ Config: e445ab08b2be8b178655b714f89e5db9504f67defd5c7408a00bade679a50d44.json, RepoTags: [nginx:latest], Layers: [ 08029cfa8b0dcfe678e23255feef9c9f1a08c39ebf6faffc4e5ee8b6ec63ff1f/layer.tar, 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81/layer.tar, 22e7e6fdc1e671b8f4d55efa2e707cf4ac35e34d757efc2b43c219be7a800ae4/layer.tar ] }]由此可知08029为最底层656e为中间层22e7为最上层。4.复制文件到tomcat的ROOT目录中cp -r /root/data//* /usr/local/apache-tomcat-8.5.42/webapps/ROOT5.发起请求5.1 push最底层请求示例post http://192.168.2.186:6060/v1/layers { Layer: { Name: 08029cfa8b0dcfe678e23255feef9c9f1a08c39ebf6faffc4e5ee8b6ec63ff1f, Path: http://localhost:8080/08029cfa8b0dcfe678e23255feef9c9f1a08c39ebf6faffc4e5ee8b6ec63ff1f/layer.tar, Format: Docker } }5.2 push中间层请求示例post http://192.168.2.186:6060/v1/layers { Layer: { Name: 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81, Path: http://localhost:8080/656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81/layer.tar, ParentName: 08029cfa8b0dcfe678e23255feef9c9f1a08c39ebf6faffc4e5ee8b6ec63ff1f, Format: Docker } }5.3 push最上层请求示例post http://192.168.2.186:6060/v1/layers { Layer: { Name: 22e7e6fdc1e671b8f4d55efa2e707cf4ac35e34d757efc2b43c219be7a800ae4, Path: http://localhost:8080/22e7e6fdc1e671b8f4d55efa2e707cf4ac35e34d757efc2b43c219be7a800ae4/layer.tar, ParentName: 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81, Format: Docker } }6.获取镜像漏洞请求示例get http://192.168.2.186:6060/v1/layers/22e7e6fdc1e671b8f4d55efa2e707cf4ac35e34d757efc2b43c219be7a800ae4?featuresvulnerabilities响应示例{ Layer: { Name: 22e7e6fdc1e671b8f4d55efa2e707cf4ac35e34d757efc2b43c219be7a800ae4, NamespaceName: debian:10, ParentName: 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81, IndexedByVersion: 3, Features: [ { Name: libgd2, NamespaceName: debian:10, VersionFormat: dpkg, Version: 2.2.5-5.2, AddedBy: 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81 }, { Name: openssl, NamespaceName: debian:10, VersionFormat: dpkg, Version: 1.1.1c-1, AddedBy: 656e37151781143bab1be21edfbe2de2251ffe28e8d2004e83cd79a7a76d0b81 }, { Name: util-linux, NamespaceName: debian:10, VersionFormat: dpkg, Version: 2.33.1-0.1, AddedBy: 08029cfa8b0dcfe678e23255feef9c9f1a08c39ebf6faffc4e5ee8b6ec63ff1f }, ........... ] } }备注这种方式和第一种方式在分析nginx时得到了相同的分析结果未发现任何漏洞2019/0905再次调研结果无任何本质性改变此外clairctl在两年前就已经停更存在的问题很多安装中出现的问题1.clair官方镜像下载速度很慢配置阿里云镜像加速依然无效多次出现下载失败的情形。2.clairctl官方github提供的安装命令中出现的部分链接已经失效。3.clair更新漏洞元数据频繁出现超时、文件解析等错误。在多次更换版本的情况下尝试了2.0.1与最新版v2.0.9依然未解决。在漏洞元数据未更新完全的情况下使用分析命令后得不到正确的结果。总结一、之前的扫描镜像原理之前的镜像扫描采用的是clair的1.0版本首先前端发起扫描请求后端接收到请求后再调用abcsys服务abcsys调用clairctl,clairctl在内部调用clair的api可能由于clair的版本太低出现了很多镜像不支持的问题。二、使用中出现的问题(1)漏洞元下载缓慢经查阅信息漏洞元数据需要3个小时左右才可以下载完毕。(2)扫描任何镜像都查不出漏洞经过排查发现特征-漏洞关系表下载不下来导致clair仅能分析出特征而不能扫描出漏洞目前该问题无法解决。下载不下来的问题可能由于该地址已经失效或者需要代理才可以访问。三、两个可选的clair扫描策略(1)继续使用clairctlclair的扫描方式但clairctl停更已久可能会出现意想不到的问题。(2)直接使用clair api的方式只不过这个需要分层提交。这样避免使用clairctl在漏洞元数据填充完毕后调用方将获得扫描的json字符串解析简单方便。但这样的缺点是需要分层提交。参考文档1.clair官网2.clair官方Github3.clair官方api4.clairctl官方github5.安全防护工具之Clair6.安全工具无疾而终的clairctl安装出现问题的解决记录[1]open file:permission denied尽管给文件设置777权限后依然被拒绝解决方案https://github.com/coreos/clair/issues/707执行命令setenforce 0 注意这只是临时解决方式一旦机器重启则依然出现权限拒绝的问题因此需要永久性解决永久解决方案https://www.cnblogs.com/ftl1012/p/selinux.html该方案未尝试[2]postgres数据库出现大量的同步错误解决方案可以下载210上的postgres中的public库目前该库是harbor集成clair所依赖的数据库该数据库中存储的漏洞比较全且表结构与v2.0.1的clair所依赖的数据库一致可以直接导入到postgres中。但依然会在导入的过程中出现问题即使删除postgres中的库直接复制库也不行。在复制库的过程中会出现主键丢失与数据丢失的问题造成的结果就是clair分析出的漏洞不全。该问题暂时未解决估摸着是外键依赖的问题。[3]clairctl无法向clair push镜像clairctl虽然能与clair正常连接即clairctl能对clair进行健康检查。但clairctl无法向clair push镜像会收到clair 400的错误。目前该问题未解决。可能的原因clairctl的版本和clair的版本不对应造成clairctl的请求和clair的api对不上的问题。最终可用版数据库方面的考虑为了避免clair依赖的postgres数据同步失败或不完整的情况以及为了好harbor的扫描结果一致因此打算直接使用harbor的扫描漏洞库。因此需要需要添加配置文件config.yml在/root/data/clair/config下添加config.ymldatabase: type: pgsql options: source: postgresql://postgres:password192.168.2.194:5432/postgres?sslmodedisable cachesize: 16384 api: port: 6060 healthport: 6061 timeout: 900s updater: interval: 2h notifier: attempts: 3 renotifyinterval: 2h启动clair运行命令docker run --nethost -d -p 6060-6061:6060-6061 -v /root/data/clair/config:/config quay.io/coreos/clair:v2.0.1 -config/config/config.yml请求clair的api(1)将镜像打包并解压至tomcat的ROOT目录中这一步主要是提供一个模拟的服务器用于提供待扫描镜像的每一层的下载地址。(2)获取ROOT目录中的manifest.json此文件是描述该镜像的层序结构。{ Config: 158ad321fec9a1621f3251d68f91d53f1003c93cca29ded31d00bd1ade2c3a47.json, RepoTags: [ 192.168.2.194/public/fabric-node:0.0.6rc17 ], Layers: [ c5da0099e17668eceecd5f30e5b2012089d9def80a64be8a9e6adc85197528a7/layer.tar, dc875156727c2cd7c2f8c85aaa2fe5f33a4ff699edd52ab2b021f7abc74a16c6/layer.tar, 48a07fbdca8996ebce7ff7ad95c793a57b1676e2b05ec32bb2bfde32025e90ed/layer.tar, bd85a4f03f646be6fc9393230f98053bc44de3346ffa96da51f1307eb1f43ee4/layer.tar, cc4a551d9f992fc502d601340febca9ba5eecbbf006e3cfb38269fb4f29960cb/layer.tar, c90086e0cafb06746235f5139b9e5dbfdfe29ad4478eed876be2766cbc097222/layer.tar, 3997751112581455a0b622c5b6ce74cffabd0be2507b345450caa505a358f7f2/layer.tar ] }(3)循环layers,依次请求clair的api以第二层为例POST http://192.168.2.186:6060/v1/layers { Layer: { Name: dc875156727c2cd7c2f8c85aaa2fe5f33a4ff699edd52ab2b021f7abc74a16c6, Path: http://localhost:8080/dc875156727c2cd7c2f8c85aaa2fe5f33a4ff699edd52ab2b021f7abc74a16c6/layer.tar, ParentName: c5da0099e17668eceecd5f30e5b2012089d9def80a64be8a9e6adc85197528a7, Format: Docker } }其中Name为镜像该层的名称Path为该层的下载地址Parent为该层的父层名称当该层已经是第一层是则不传该参数Format格式固定为Docker获取分析结果其中镜像名称为最后一层的名称数据库会按照当初存入的层级关系一直找到该层链接的所有层并将所有层的特征-漏洞二元组返回。GET http://192.168.2.186:6060/v1/layers/3997751112581455a0b622c5b6ce74cffabd0be2507b345450caa505a358f7f2?featuresvulnerabilities返回结果示例{ Layer:{ Name:3997751112581455a0b622c5b6ce74cffabd0be2507b345450caa505a358f7f2, NamespaceName:centos:7, ParentName:c90086e0cafb06746235f5139b9e5dbfdfe29ad4478eed876be2766cbc097222, IndexedByVersion:3, Features:Array[145] } }《网络安全从零到精通全套学习大礼包》96节从入门到精通的全套视频教程免费领取如果你也想通过学网络安全技术去帮助就业和转行我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。网络安全学习路线图想要学习 网络安全作为新手一定要先按照路线图学习方向不对努力白费。对于从来没有接触过网络安全的同学我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线大家跟着这个路线图学习准没错。配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取g.cn/direct/4fd5acecbff8471098d6b027b62f45d5.png#pic_center)学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取文章来自网上侵权请联系博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2494328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…