大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
大家好,我是展菲!
全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
文章目录
- 前言
- 为什么需要 manifest.plist,它做了什么
- manifest.plist 示例与字段解析(逐项说明)
- 手工生成 manifest.plist(简单场景)
- 可运行 Demo:用 Python 自动生成 manifest.plist(推荐)
- 在 CI 中自动打包导出 .ipa(xcodebuild 示例)
- 托管 manifest.plist 与 ipa:生产环境建议(S3 / nginx 示例)
- 安装流程(最终用户体验)
- 常见问题与排查思路
- 安全与合规提醒(重要)
- 总结
前言
最近在给同事讲企业签名分发流程时,发现很多人卡在一个点上:如何正确生成 manifest.plist
并把它和 .ipa
一起托管,让同事或测试设备通过 itms-services
一键安装。本文把完整思路、常见坑、生产环境注意点都聊清楚,并给出一个可运行的 Python Demo,可以直接用来生成 manifest.plist
。
写得尽量口语化、接近日常工作交流;每一部分都尽量讲清楚“为什么要这么做”以及“怎么做”,并配上示例。
为什么需要 manifest.plist,它做了什么
iOS 的企业内部分发(Enterprise Distribution)通过一个特殊的 URL 协议 itms-services://?action=download-manifest&url=<manifest_url>
触发安装。系统读取你提供的 manifest.plist
来知道要下载哪一个 .ipa
,以及这个应用的 bundle identifier
、版本、名称等元信息。
换句话说,manifest.plist
是安装器的“导航文件”——iOS 不是直接下载 .ipa
,而是先下载并解析 plist
,然后据此去拿 .ipa
。另外必须满足两点:
manifest.plist
和ipa
都必须通过 HTTPS 提供(真实有效的证书);manifest.plist
的结构和字段要准确,否则 iOS 会报错或不安装。
生产环境最容易忽略的点就是:HTTPS 必须是真实可信的 CA 证书(自签名/不信任证书在 iOS 上通常无法安装应用),以及 manifest 的 URL 必须可访问且返回正确的 Content-Type。下面细讲结构与示例。
manifest.plist 示例与字段解析(逐项说明)
这是一个最常见的 manifest.plist
(把你的 ipa 地址、bundle id 等替换为真实值):
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>items</key><array><dict><key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><string>https://yourserver.com/path/to/app.ipa</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><string>com.company.app</string><key>bundle-version</key><string>1.0.0</string><key>kind</key><string>software</string><key>title</key><string>CompanyApp</string></dict></dict></array></dict></plist>
字段说明(很重要):
items
:根数组,通常只放一条描述一个 app。assets
→kind: software-package
:表示这是一个应用包;assets
→url
:指向.ipa
的 HTTPS 地址(必须能通过浏览器直接访问并用有效证书);metadata
→bundle-identifier
:要跟你应用的Bundle Identifier
一致(Xcode 中的那个);metadata
→bundle-version
:App 的版本号(CFBundleShortVersionString);metadata
→title
:在安装对话框里显示的应用名字。
如果某个字段错了(比如 bundle id 不一致、或者 ipa 地址不可达),iOS 会提示“无法安装”或“无法检索清单”。
手工生成 manifest.plist(简单场景)
你可以直接按上面的模板把 manifest.plist
写好,保存为 manifest.plist
,上传到 HTTPS 可访问的服务器上,然后用如下链接触发安装:
itms-services://?action=download-manifest&
url=https://yourserver.com/manifest.plist
如果想方便点,可以把上述链接做成页面上的按钮或二维码,用户用 Safari 打开后就会提示安装。
但手写容易出错,建议用脚本自动生成(下面有可运行 Demo)。
可运行 Demo:用 Python 自动生成 manifest.plist(推荐)
下面是一个小脚本,能把你传入的参数写成合规的 manifest.plist
。用 Python 的 plistlib
来生成,少出错。保存为 gen_manifest.py
。
#!/usr/bin/env python3
"""
gen_manifest.py
生成 manifest.plist 的小工具。
用法示例:
python3 gen_manifest.py \
--ipa-url https://example.com/builds/app.ipa \
--bundle-id com.company.app \
--version 1.2.3 \
--title "Company App" \
--output manifest.plist
"""
import argparse
import plistlib
import sys
from pathlib import Path
def build_manifest(ipa_url: str, bundle_id: str, version: str, title: str):
manifest = {
"items": [
{
"assets": [
{
"kind": "software-package",
"url": ipa_url
}
],
"metadata": {
"bundle-identifier": bundle_id,
"bundle-version": version,
"kind": "software",
"title": title
}
}
]
}
return manifest
def main():
parser = argparse.ArgumentParser(description="Generate manifest.plist for iOS enterprise distribution")
parser.add_argument("--ipa-url", required=True, help="Public HTTPS URL to the .ipa")
parser.add_argument("--bundle-id", required=True, help="Bundle identifier, e.g. com.company.app")
parser.add_argument("--version", required=True, help="App version, e.g. 1.0.0")
parser.add_argument("--title", required=True, help="App title shown during install")
parser.add_argument("--output", default="manifest.plist", help="Output plist filename")
args = parser.parse_args()
manifest = build_manifest(args.ipa_url, args.bundle_id, args.version, args.title)
out_path = Path(args.output)
with out_path.open("wb") as f:
plistlib.dump(manifest, f)
print(f"Generated {out_path.resolve()
}")
if __name__ == "__main__":
main()
说明与使用示例:
把
gen_manifest.py
放到你的机器上,确保 Python 3 可用;执行(替换 URL、bundle id、版本、title):
python3 gen_manifest.py \ --ipa-url https://cdn.example.com/apps/app-1.2.3.ipa \ --bundle-id com.example.myapp \ --version 1.2.3 \ --title "Example App" \ --output manifest.plist
脚本会生成
manifest.plist
,上传该文件与对应.ipa
到你的 HTTPS 可访问服务器后,用itms-services://...
链接测试安装。
这个脚本足够轻量,也方便你把它嵌入 CI:在 CI 打包出 .ipa
并上传到 S3 或公司内网后,CI 调用此脚本生成 manifest 并上传,最后把安装链接发给 QA。
在 CI 中自动打包导出 .ipa(xcodebuild 示例)
如果你想在 CI 中自动从 Xcode archive 导出 enterprise .ipa
,可以用 xcodebuild -exportArchive
配合一个 exportOptions.plist
,示例如下。
exportOptions.plist
(保存为 XML plist)主要关键字段是 method
= enterprise
,并指定 provisioning profile:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>method</key><string>enterprise</string><key>teamID</key><string>YOUR_TEAM_ID</string><key>provisioningProfiles</key><dict><key>com.example.myapp</key><string>My Enterprise Provisioning Profile Name</string></dict></dict></plist>
然后在机器上运行(假设已用 xcodebuild archive
得到 MyApp.xcarchive
):
xcodebuild -exportArchive \
-archivePath /path/to/MyApp.xcarchive \
-exportOptionsPlist /path/to/exportOptions.plist \
-exportPath /path/to/output_dir
导出后 output_dir
下会有 .ipa
,把它上传到 HTTPS 托管后,再生成 manifest。
如果你使用 Fastlane,在 Fastfile
里用 gym
/sigh
帮助自动化也很常见。
托管 manifest.plist 与 ipa:生产环境建议(S3 / nginx 示例)
无论你把文件放哪里,两个硬性条件必须满足:
- 访问地址是 HTTPS(有效证书);
manifest.plist
与.ipa
的 Content-Type 设置合理,方便调试时确认。
示例:用 AWS S3 + CloudFront(常见、稳定)
# 上传 ipa,指定 Content-Type
aws s3 cp app.ipa s3://my-bucket/path/app-1.2.3.ipa --acl public-read --content-type application/octet-stream
# 上传 manifest
aws s3 cp manifest.plist s3://my-bucket/path/manifest.plist --acl public-read --content-type application/xml
然后通过 CloudFront 或自定义域名配 TLS(ACM)暴露 https://dl.company.com/path/manifest.plist
,拼装 itms-services
链接。
如果你用 nginx 自建分发,注意 server 配置示例(关键点:设置 MIME,HTTPS):
server {
listen 443 ssl;
server_name dl.company.com;
ssl_certificate /etc/ssl/certs/your-cert.pem;
ssl_certificate_key /etc/ssl/private/your-key.pem;
location /apps/ {
root /var/www;
# 强制使用正确 content-type(可选)
types {
application/octet-stream ipa;
application/xml plist;
}
add_header Cache-Control "max-age=3600";
}
}
注意事项:
manifest.plist
的 Content-Type 用application/xml
或text/xml
都没问题;.ipa
推荐application/octet-stream
;- 一定要用真实 CA 证书,iOS 设备对不受信任证书会拒绝安装。
安装流程(最终用户体验)
用户在 iOS 设备的 Safari 打开如下链接(通常是放在网页里的按钮或二维码):
itms-services://?action=download-manifest&url=https://dl.company.com/path/manifest.plist
Safari 会跳转到系统安装对话框,用户确认后系统开始下载并安装。
第一次在该设备上用该企业证书安装后,用户需要在 设置 → 通用 → 描述文件与设备管理(或“设备管理”)里手动“信任”企业证书(部分 iOS 版本会在安装时同时提示),这是 iOS 的安全策略。
在企业内测场景中,最好有一份安装说明告诉用户如何信任证书。
常见问题与排查思路
iOS 显示“无法安装/未能检索清单”:
- 检查 manifest.plist 是否可通过 HTTPS 访问(手机能直接打开);
- 检查 manifest 的根节点、字段是否完整(bundle id、bundle version、url)且无语法错误;
- 检查 ipa URL 是否返回
200
,并且不是返回 HTML 页面或 302 跳转(iOS 可能不跟重定向); - 检查 HTTPS 证书是否受信任(生产必须使用受信任 CA 证书);
- 检查 bundle id 是否与 ipa 内的匹配(比如你签名时用的描述文件/证书是否对应该 bundle id)。
安装完成但 App 打不开/闪退:
- 检查企业签名是否包含私钥并且没有被撤销;
- 检查 Provisioning Profile 是否包含所用证书/正确的 entitlements;
- 查看设备 log(通过 Xcode 的 Devices 窗口)查看崩溃或签名错误信息。
企业证书被吊销导致无法安装:
- 定期审计证书使用,避免滥用;若被吊销,需尽快重新申请企业证书并重新打包分发。
安全与合规提醒(重要)
- Apple 对企业签名分发管控严格,企业账号仅允许企业内部分发给公司员工和受管控的设备,不得对外公开分发给任意用户;滥用可能导致证书被吊销。
- 在公司内部分发时,记录好每次分发的版本、时间和接收方,便于追踪。建议结合 MDM(移动设备管理)来统一管理应用/设备。
- 证书与私钥需要被妥善保管,CI 系统中的私钥导入需做好权限隔离与密钥周期更换策略。
总结
manifest.plist
是 iOS 企业内部分发的关键导航文件,必须通过 HTTPS 提供且格式正确;- 推荐用脚本自动化生成 manifest(示例提供了 Python 脚本),把生成过程放入 CI 流水线;
- 生产环境要保证
.ipa
与manifest.plist
都托管在 HTTPS(可信)地址上,推送时注意正确的 Content-Type; - 测试安装前,先用 iOS 设备在 Safari 里打开
manifest.plist
的 URL,确认能访问; - 最后,企业签名合规问题不能忽视:证书管理、使用范围、风险应对都要有流程。
相关文章:
在企业内部分发 iOS App 时如何生成并应用 manifest.plist
在企业内部分发 iOS App 时如何生成并应用 manifest.plistpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", m…...
CSP2025 游记
9.14 终于摆脱文化课爽了。 pyb 搞了一个停课仪式,每个人可以抽一瓶可乐,上面有定制的文字。 里面有四瓶可乐分别是:“联 2”、“赛 0”、“冲 2”、“刺 5”,然后就有人说抽到“赛 0”就是联赛爆零。 然后我随手一抽就是这瓶……万一是联赛零失误的意思呢? CSP2025 游记正…...
Luogu P14031 【MX-X20-T5】「FAOI-R7」连接时光 II
懒场上死活不会,下来再看一下就会了,两周没开电脑导致的。 首先考虑如何计算 \(f_S(p)\)。 首先因为 \(f_S(p)\) 的限制都是对于前缀的图的限制,所以先来考察前缀的图的结构和变化情况。 经过手玩能够知道,对于前 \(i\) 个数的图,根据值域划分,连通块就为一些相邻的区间 …...
第一周预习作业
占位,等我研究一下md和html互转...
计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统 - 指南
计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…...
csp 2025 油迹
开坑。 度过了近 4 年 oi 生涯怎么能一点回忆都不留下? 反正都是随便写写,如果开到你了或者让你不适了可以评论喷我。 还是希望有一个好到能让我打高二的成绩的。 有密码的总结属于校内联考范畴。 0914 给某个关系好的同学买了礼物,然后还给自己买了个小东西,但是周三才能拿…...
完整教程:JMeter基本介绍
完整教程:JMeter基本介绍pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size…...
[]
yy...
rv
veve...
Source Insight 4.0安装和使用教程
参考博文 Source Insight破解安装 Source Insight新建工程 Source Insight使用教程 1. Source Insight安装 1.1 安装包和破解 安装和破解文件 链接:https://pan.baidu.com/s/14o2pl6FpD6mMvSNsdb21cA?pwd=8wr7 提取码:8wr7 (博客提供) 链接: https://pan.baidu.com/s/1WY5…...
EF Core 介绍与入门实操
EF Core 介绍与入门实操简介 EF Core(Entity Framework Core)是Microsoft推出的开源跨平台ORM框架,支持SQL Server、SQLite、MySQL、PostgreSQL等主流数据库,并提供向NoSQL数据库(如Cosmos DB)的扩展能力。它通过DbContext管理实体与数据库的映射关系,提供LINQ查询、CRU…...
jdk8.0中导入新证书
windows系统中,java环境是jdk1.8.0,以前通过https://xxx.xxx.cn/open_api/authenticatin/get_access_token?key=xxx&secret=xxx访问第三方时能获取正确数据,现在调用时程序报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKI…...
ORA-00800
Table of Contents1. 现象 2. 原因分析 3. MOS搬迁3.1. Cause 3.2. Solution3.2.1. ORADISM Permission: 3.2.2. Check the priority of VKTM or LMS* @RDBMS level: 3.2.3. Cgroup Configuration 3.2.4. Priority and Runtime 3.2.5. "nosuid" option : 3.2.6. Orad…...
50期权日内交易技巧 - 指南
50期权日内交易技巧 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...
使用overleaf编写中文
第一步:在Menu中修改编译器为 “XeLateX”添加代码 \usepackage{ctex}...
9.13 CSP-S模拟21 改题记录
HZOI 写在前面 挂如分挂如分天天挂如分。T1秒切,T2看似有思路实则推半天推不出来,T4跑去库里苦找函数,然后经过探索规律终于找到正确用法了狂砍40pts。然后就打T2T3特殊性质,本以为都挺合理但是就是写挂了,而且还是挂一片,甚至暴力也挂挂挂。大概就是100+40+(>32)+40 …...
Vulkan API 创建并渲染一个辐照度立方体贴图,用于 PBR 光照计算
我将为 generateIrradianceCube 函数提供逐行中文注释和分析。这个函数是用 C++ 编写的,使用 Vulkan API 生成用于物理基础渲染 (PBR) 的辐照度立方体贴图 (irradiance cube map)。该函数创建一个立方体贴图,设置离屏渲染管线,并将环境贴图渲染为具有多级渐进纹理 (mip leve…...
使用Putty远程连接树莓派5提示No supported authentication methods available
下面中提示的错误只能使用显示器进入系统修改sudo nano /etc/ssh/sshd_config把下面文件中PasswordAuthentication设定成yes# To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes #PermitEmptyPasswords no...
[USACO24FEB] Maximizing Productivity
ci 表示关闭第 i 个农场的时间,ti 表示到第 i 个农场的初始时间,用 latei 要想在关闭前到达第 i 个农场的最晚时间,此时我们只需要把 late 数组从大到小排序即可,只要看第 v 个是否能按时到达即可。因为数组有序,如果能到达,说明所有比他小的农场都可以到达。#incl…...
记录一个纯CSS实现滚动驱动动画的效果
使用sticky与animation-timeline实现元素固定的滚动驱动动画文章在个人网站中发布,原文链接:记录一个纯CSS实现滚动驱动动画的效果先看一下这个简单的案例 代码: 你也可以直接划到下边看效果。 <div class="out-cont"><!-- 最外层元素,用于框定元素需要…...
第一周个人作业——我
第一周个人作业——我一、自我介绍 作为一名大三的学生,我的兴趣相对杂乱,涉及从小说、影视到动画、文学,再到网络论坛等多个领域,每一个都让我感受到了不同的灵感与启发。我更享受独处的时光,喜欢通过阅读和思考充实自己。偶尔我也会玩一些联机游戏,逛逛GitHub,或者与朋…...
Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题 - 详解
Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…...
Acrobat Pro DC 2025破解版安装下载教程,附永久免费免中文破解版(稳定版安装包)
一、Acrobat Pro DC 2025软件下载 [软件名称]: Acrobat Pro DC 2025(稳定版) [软件大小]: 1.63GB [安装环境]:Win 10及以上系统 [下载链接]: (建议手机保存后到电脑端打开,下载解压无需任何密码) 夸克下载链接:https://pan.quark.cn/s/c4f8d5fb593f 二、Acrobat Pro DC 20…...
20250914
1.使用缩进 2.单行字符120个以内 3.命名清晰 4.注释简洁易懂 数学之美第8章 bool代数在搜索引擎中起到了重要作用,没有他,搜索引擎的效率无法达到快速响应。 他主要通过为每个关键字建立二进制串,然后通过and,or,not进行二进制的运算, 1为符合,0为不符合,从而进行查找。…...
25秋周总结2
总结 这周基本都在考试,总的来说相比之前有一定提升,但事实上离自己的水平上限都还差了一段距离,更别说突破上限了。在我看来,现在的我不出意外每场得把最简单的两道题做出来,但是现在的情况就是还是会存在一些时候面对很简单的题却没能做出来。虽然次数不多,但是没有做出…...
华擎、微星、华硕BIOS阵脚线序及杜邦现自制刷机线
华擎、微星、华硕BIOS阵脚线序及杜邦现自制刷机线 起因及背景 博主注意到最近的一段时间八九代志强CPU进入了主流的垃圾佬视线内,且H310、Z270、B365等主板来到了100~180元的价位,配合上E2124g这种35元的核显U可以做到400元内高性能的办公和轻度游戏主机。 缺陷:但是这套玩法…...
Ubuntu 安装 VLC
sudo apt install vlc -y...
AT_abc422_f [ABC422F] Eat and Ride 题解
AT_abc422_f [ABC422F] Eat and Ride 题解 前言 好消息:场切了。 坏消息:没开 rated。 思路 注意到数据范围非常小,考虑暴力bfs。 设 $dis_i$ 为到达第 $i$ 个点的最小燃料,$w_i$ 为到达第 $i$ 个点时耗燃料最少时的体重。 如果有一条路径到达第 $i$ 个点时已经用了 $d$ 燃…...
模拟赛 R14
R14 - T1 序列 难度:黄 / 绿 题意 给定一个长为 \(n\) 的非负整数序列 \(a\),你可以进行任意次以下的操作: 选择一个区间 \([l,r]\),然后将 \(a_l,a_{l+1},\cdots,a_r\) 都减去 \(1\)。 你希望用最小的操作次数将 \(a\) 中的所有数变成 \(0\)。在此基础上,定义一次操作 \(…...
Java并发编程(2)
ThreadLocal 1、ThreadLocal是什么ThreadLocal就是线程本地变量,若创建了一个ThreadLocal变量,那访问这个变量的每个线程都会有这个变量的本地拷贝,但多个线程操作这个变量时,实际是操作自己本地内存里的变量,可以起到线程隔离的作用,避免了线程安全问题。//创建一个Thre…...
完整教程:WebApp 的价值与实现:从浏览器架构到用户体验优化
完整教程:WebApp 的价值与实现:从浏览器架构到用户体验优化pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...
Ubuntu 安装百度网盘
下载:https://pan.baidu.com/download#linux百度网盘就安装好了:...
八字喜用神起名大师 API 接口
八字喜用神起名大师 API 接口 AI/模型 基于八字命理和五行相生相克理论 十年模型积累 / 三才五格数理 姓名 / 八字命理 1. 产品功能基于传统八字命理学理论; 结合三才五格数理分析; 考虑五行相生相克关系; 提供多个候选姓名供选择; 包含详细的命理分析报告; 支持方言谐音检…...
在CentOS 7上集成cJSON库的方法
安装开发工具:使用yum包管理器安装开发工具组,以确保您拥有编译cJSON所需的所有工具,例如gcc、make、autoconf等。sudo yum groupinstall "Development Tools"获取cJSON源代码:从官方仓库克隆或下载cJSON的最新源代码。git clone https://github.com/DaveGamble/cJ…...
作业1
任务一:编码规范命名规范 变量、函数、类和文件名应该简明易懂,使用英文单词或单词缩写,并使用下划线或驼峰命名法。 变量名应该使用名词,函数名应该使用动词,类名应该使用名词或名词短语,文件名应该使用有意义的名称。 格式化规范 代码行长度应该不超过80个字符。 使用一…...
网站截图与 HTML 快照 API 接口
网站截图与 HTML 快照 API 接口 网站工具 通过网页 URL 获取站点截图与内容 网页截图 / 网页快照 网站工具 / 截图 1. 产品功能支持任意网页 URL 高质量截图,包括动态内容和 JavaScript 渲染页面; 支持全页面截图和可视区域截图两种模式; 可自定义截图尺寸、设备像素比等参数…...
深入解析:精确位置定位,AR交互助力高效作业流程
深入解析:精确位置定位,AR交互助力高效作业流程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospa…...
sdjaivkdshwqeofhsoejbc dfb vnhgtbv
几餐这一块...
开篇自我介绍随笔
一、自我介绍 生活里的我,有很多让自己沉浸其中的小爱好。我喜欢练书法,看着墨汁在宣纸上晕开,一笔一划勾勒出汉字的风骨,烦躁的心总能瞬间平静;也爱绘画,无论是用水彩记录生活里的小美好,还是用素描刻画细节,都是我表达想法的方式。除此之外,追综艺、追星也是我放松的…...
第八周
Hadoop 集群的稳定运行离不开完善的监控体系,搭建涵盖集群负载监控与日志收集的监控系统,可实时掌握集群运行状态,及时发现潜在问题。在集群负载监控方面,Ganglia 是常用的分布式监控工具,能够收集并展示集群中各节点的 CPU 使用率、内存占用量、磁盘 IO 速率、网络流量等…...
Tita 项目一体化管理:驱动项目全周期高效运营的引擎
一、企业项目管理的常见痛点 (一)项目启动规划阶段 目标模糊不清:项目启动时缺乏明确可量化的目标,团队成员对项目核心价值和预期成果理解不一致,导致后续工作方向偏离。例如,某研发项目因 “提升产品竞争力” 这一模糊目标,在功能开发中反复调整方向,浪费大量资源。计…...
飞行 NED坐标系(北东地坐标系):
在NED坐标系(北东地坐标系)中,飞机的天向速度、东向速度、北向速度的关系如下: 速度定义北向速度(N):飞行器在北方向上的移动速度。 东向速度(E):飞行器在东方向上的移动速度。 天向速度(D):飞行器在垂直地面向上的移动速度(通常为正)。…...
windows与linux环境下网络编程
windows与linux环境进行网络编程,使用的库是不一样的, 下面主要说一下windows环境下的网络编程; 网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包…...
在飞牛系统中通过docker形式部署Nginx proxy manager
在飞牛系统中通过docker形式部署Nginx proxy manager本文仅用用于记录。 目标: 分别通过以飞牛的图形化界面和docker compose实现以docker的方式部署Nginx proxy manager。 首先,管理员应当新建2个文件夹用于持久化数据存储(就是你想要留着的数据找个地方放好) 1.data 存放…...
Es索引同步异步Canal解耦方案
Es索引同步异步Canal解耦方案 首先传统的Es索引同步耦合性太高需要使用业务逻辑来同步,一旦在同步的时候服务器出现异常就用可能同步失败导致影响到其他业务,这里使用的是Canal中间件来实现异步同步索引。 简述: 这里以电商项目为例,当需要添加,修改或删除商品时为了电…...
在Ubuntu上配置phpMyAdmin和WordPress环境
在Ubuntu中配置phpMyAdmin和WordPress环境需要执行一系列的步骤,包含安装LAMP(Linux, Apache, MySQL, PHP)栈,配置数据库,然后安装phpMyAdmin和WordPress。 下面是具体的配置步骤分解: 安装LAMP环境更新系统首先更新你的Ubuntu系统: sudo apt update sudo apt upgrade安装…...
“四人过河”经典问题
一、什么是“四人过河”经典问题 最早版本见于 MBA/奥数/信息学趣题: N 个人(通常 N=4)要从左岸到右岸,只有一条小船,容量至多 2 人;船划行时间 = 船上所有人中最大的那一项; 船不能空驶,每次必须有人把船划回来; 问:让所有人到达对岸的最短总时间是多少?二、通用数…...
完整教程:C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
完整教程:C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…...
DevOps On Kubernetes
OSChina在深圳举办的”源创会年终盛典”上,华为云容器服务技术总监发表了名为《DevOps On Kubernetes》的主题演讲,演讲就如何将DevOps理念与容器技术相结合,实现容器化场景下的快速交付进行介绍,并重点介绍了华为云容器服务提供的持续交付工具——容器交付流水线(Contain…...
深耕Linux系统的道与术
- [著名系统内核专家张银奎老师Boolan直播间开讲:《深耕Linux系统的道与器》\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1pK42187EY/?vd_source=589169a942bb977a9dbcdd5f0ea6318b) - [张银奎 | 2024全球C++及系统软件技术大会](https://www.cpp-summit.org/sp…...