当前位置: 首页 > news >正文

Xcode16.3配置越狱开发环境

首先先在https://developer.apple.com/xcode/resources/ 这里面登陆Apple账号,然后访问url下载 https://download.developer.apple.com/Developer_Tools/Xcode_16.3/Xcode_16.3.xip

1、安装theos

https://theos.dev/docs/installation-macos
会安装到默认位置~/theos

或者直接运行

 bash -c "$(curl -fsSL https://raw.githubusercontent.com/theos/theos/master/bin/install-theos)"

软链接放到默认位置

sudo ln -s /Users/kk/theos /opt/theos

2、安装MonkeyDev

参考这个issue解决,不过这个issue原始的脚本还需要进一步修改才可以用于16.3

https://github.com/AloneMonkey/MonkeyDev/issues/365#issuecomment-2726745723

这里放出来最终可用的安装脚本:

#!/bin/bash#set -e表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行;
#set -o pipefail表示在管道连接的命令序列中,只要有任何一个命令返回非0值,则整个管道返回非0值,即使最后一个命令返回0.
export setCmd="set -eo pipefail"
$setCmd#导出环境变量
export PATH=/opt/MonkeyDev/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH#脚本名称和版本
export scriptName="${0##*/}"
export scriptVer="2.0"#本地存储文件的目录
export MonkeyDevPath="/opt/MonkeyDev"
export backupFileExt=".MonkeyDev"#获取用户名、用户组、用户目录、和profile文件
export userName="${SUDO_USER-$USER}"
export userGroup=`id -g $userName`
export userHome=`eval echo ~$userName`#用户可能存在的profile文件
export bashProfileFiles=("$userHome/.zshrc" "$userHome/.bash_profile" "$userHome/.bashrc" "$userHome/.bash_login" "$userHome/.profile")#获取临时文件名
export tempDirsFile="`mktemp -d -t $scriptName`/tempdirs"
touch "$tempDirsFile"#把LANG变量从当前环境中删除
unset LANG#出错退出
function cleanup()
{local exitCode=$?set +etrap - $signalsremoveTempDataexit $exitCode
}function panic()
{local exitCode=$1set +eshift[[ "$@" == "" ]] || echo "$@" >&2exit $exitCode
}export signals="0 1 2 3 15"
#当shell接收到signals指定的信号时,执行cleanup命令
trap cleanup $signalsfunction removeTempData()
{local tempDirsif [[ -f "$tempDirsFile" ]]; thentempDirs=(`cat "$tempDirsFile"`)for td in "${tempDirs[@]}"; dorm -rf "$td" || truedonerm -rf "`dirname $tempDirsFile`" || truefi
}
function getTempDir()
{$setCmdlocal tempDirtempDir=`mktemp -d -t $scriptName` || \panic $? "Failed to create temporary directory"echo "$tempDir" >> "$tempDirsFile" || \panic $? "Failed to echo into $tempDirsFile"echo "$tempDir"
}function copyFile()
{cp -f "$1" "$2" || \panic $? "Failed to copy file $1 to $2"
}#备份原文件
function requireBackup()
{[[ ! -f "$1" || -f "${1}${backupFileExt}" ]] || \copyFile "$1" "${1}${backupFileExt}"
}#获取SDK信息
function getSdkProperty()
{$setCmdlocal sdk="$1"local propertyName="$2"propertyValue=`xcodebuild -version -sdk $sdk $propertyName` || \panic $? "Failed to get $sdk SDK property $propertyName"[[ $propertyValue != "" ]] || \panic 1 "Value of $sdk SDK property $propertyName cannot be empty"# return #echo "$propertyValue"
}#下载文件
function downloadFile() # args: sourceUrl, targetPath
{local sourceUrl="$1"local targetPath="$2"local curlPathmkdir -p "${targetPath%/*}" || \panic $? "Failed to make directory: ${targetPath%/*}"curlPath=`which curl` || \panic $? "Failed to get curl path""$curlPath" --output "$targetPath" "$sourceUrl" || \panic $? "Failed to download $sourceUrl to $targetPath"
}#解压文件
function extractTar() # args: tarPath, outputPath
{local tarPath="$1"local outputPath="$2"tar -C "$outputPath" -zxf "$tarPath" || \panic $? "Failed to extract $tarPath to $outputPath"
}#下载github文件
function downloadGithubTarball() # args: url, outputDir, title
{$setcmdlocal url="$1"local outputDir="$2"local title="$3"local tempDirForTarlocal tempDirForFileslocal untardDirlocal tarFile="file.tar.gz"echo "Downloading $title from Github..."tempDirForTar=`getTempDir`tempDirForFiles=`getTempDir`downloadFile "$url" "$tempDirForTar/$tarFile"extractTar "$tempDirForTar/$tarFile" "$tempDirForFiles"untardDir=`find "$tempDirForFiles/"* -type d -depth 0` || \panic $? "Failed to get untar'ed directory name of $tempDirForTar/$tarFile"mkdir -p "$outputDir" || \panic $? "Failed to make directory: $outputDir"cp -fR "$untardDir/"* "$outputDir/"
}#修改文件权限
function changeMode()
{local mode="$1"local target="$2"local recursive="$3"local options[[ $recursive != "true" ]] || \options="-R"if [[ -e "$target" ]]; thenchmod $options "$mode" "$target" || \panic $? "Failed to change mode to $mode on $target"fi
}#获取用户profile文件
function determineUserBashProfileFile()
{$setCmdlocal flocal filePathfor f in "${bashProfileFiles[@]}"; doif [[ -f "$f" ]]; thenfilePath="$f"echo "" >> "$f" || \panic $? "Failed to echo into $f"breakfidoneif [[ $filePath == "" ]]; thenfilePath="$bashProfileFiles"touch "$filePath" || \panic $? "Failed to touch $filePath"chown "$userName:$userGroup" "$filePath" || \panic $? "Failed to change owner-group of $filePath"changeMode 0600 "$filePath"fi# return #echo "$filePath"
}#验证是否存在文件
function requireFile() # args: filePath [, touchFileIfNotFound]
{local filePath="$1"local touchFileIfNotFound="$2"if [[ ! -f "$filePath" ]]; thenif [[ $touchFileIfNotFound == "true" ]]; thentouch "$filePath" || \panic $? "Failed to touch $filePath"elsepanic 1 "File $filePath not found"fifi
}#增加内容到文件
function addToFileIfMissing() # args: filePath, pattern, value
{local filePath="$1"local pattern="$2"local value="$3"local doesContaindoesContain=`doesFileContain "$filePath" "$pattern"`[[ $doesContain == "true" ]] || \echo "$value" >> "$filePath" || \panic $? "Failed to echo into $filePath"	
}#判断文件是否包含内容
function doesFileContain() # args: filePath, pattern
{$setCmdlocal filePath="$1"local pattern="$2"local perlValuelocal funcReturnperlValue=`perl -ne 'if (/'"$pattern"'/) { print "true"; exit; }' "$filePath"` || \panic $? "Failed to perl"if [[ $perlValue == "true" ]]; thenfuncReturn="true"elsefuncReturn="false"fi# return #echo $funcReturn
}#从spec读取内容
function readXcodeSpecificationById(){ #args: filePath, idlocal filePath="$1"local id="$2"content=`/usr/libexec/PlistBuddy -x -c Print "$filePath"` || \panic $? "Failed to get $filePath content"for (( i=0; i<=1; i++)); dodict=`/usr/libexec/PlistBuddy -x -c "Print $i" "$filePath"`if echo $dict | grep -qE "<string>$id</string>"; thenecho "$dict"fidone
}#往spec文件写入内容
function writeDictToSpecification(){ #args: filePath, content# echo $1,$2local filePath="$1"local content="$2"tempfile=`getTempDir`/dictfile# echo $contentecho "$content" >> $tempfile# /usr/libexec/PlistBuddy -x -c 'add 0 dict' "$filePath" > /dev/null# cat $1/usr/libexec/PlistBuddy -x -c "merge $tempfile 0" "$filePath" > /dev/null# cat $1
}# start it
# 创建/opt/MonkeyDev
mkdir -p "$MonkeyDevPath" || \panic $? "Failed to make directory: $MonkeyDevPath"branch="master"if [[ "$1" ]]; thenbranch="$1"
fi#下载一些基础文件和模板文件
downloadGithubTarball "https://codeload.github.com/AloneMonkey/MonkeyDev/tar.gz/$branch" "$MonkeyDevPath" "MonkeyDev base"
downloadGithubTarball "https://codeload.github.com/AloneMonkey/MonkeyDev-Xcode-Templates/tar.gz/$branch" "$MonkeyDevPath/templates" "Xcode templates"#下载frida-ios-dump
echo "Moving frida-ios-dump from Resources..."
downloadFile "https://raw.githubusercontent.com/shadow-boy/MonkeyDev/master/Resource/dump.py" "$MonkeyDevPath/bin/dump.py"
downloadFile "https://raw.githubusercontent.com/shadow-boy/MonkeyDev/master/Resource/dump.js" "$MonkeyDevPath/bin/dump.js"
# cp Resource/dump.js $MonkeyDevPath/bin/dump.js
# cp Resource/dump.py $MonkeyDevPath/bin/dump.py
chmod +x "$MonkeyDevPath/bin/dump.py"#创建符号链接
echo "Creating symlink to Xcode templates..."#$userHome/Library/Developer/Xcode/Templates/MonkeyDev linkto $MonkeyDevPath/templates
userDevDir="$userHome/Library/Developer"
userTemplatesDir="$userDevDir/Xcode/Templates"if [[ ! -d "$userTemplatesDir" ]]; thenmkdir -p "$userTemplatesDir" || \panic $? "Failed to make directory: $userTemplatesDir"chown -R "$userName:$userGroup" "$userDevDir" || \panic $? "Failed to change ownership-group of $userDevDir"
filn -fhs "$MonkeyDevPath/templates" "$userTemplatesDir/MonkeyDev"#修改用户profile文件
echo "Modifying Bash personal initialization file..."userBashProfileFile=`determineUserBashProfileFile`addToFileIfMissing "$userBashProfileFile" "^(export)? *MonkeyDevPath=.*" "export MonkeyDevPath=$MonkeyDevPath"
addToFileIfMissing "$userBashProfileFile" "^(export)? *MonkeyDevDeviceIP=.*" "export MonkeyDevDeviceIP="
addToFileIfMissing "$userBashProfileFile" "^(export)? *PATH=.*(\\\$MonkeyDevPath\\/bin|${MonkeyDevPath//\//\\/}\\/bin).*" "export PATH=$MonkeyDevPath/bin:\$PATH"#支持iphoneos command line tools
iosSdkPlatformPath=`getSdkProperty iphoneos PlatformPath`
macosSdkPlatformPath=`getSdkProperty macosx PlatformPath`# specificationFile="/Applications/Xcode.app/Contents/Developer/Library/Xcode/Plug-ins/XCBSpecifications.ideplugin/Contents/Resources/Embedded-Device.xcspec"# for xcode16
specificationFile=$(find /Applications/Xcode.app -name "Embedded-Device.xcspec" | head -n 1)requireFile "$specificationFile" false# backup
requireBackup "$specificationFile"hasPackageTypeForCommandLineTool=`doesFileContain "$specificationFile" 'com.apple.package-type.mach-o-executable'`
hasProductTypeForCommandLineTool=`doesFileContain "$specificationFile" 'com.apple.product-type.tool'`macosxSDKSpecificationsPath="$(cd $macosSdkPlatformPath/../../.. && pwd)/PlugIns/XCBSpecifications.ideplugin/Contents/Resources"
# echo $macosxSDKSpecificationsPath
packageTypesForMacOSXPath=$(find /Applications/Xcode.app -name "MacOSX Package Types.xcspec" | head -n 1)
productTypesForMacOSXPath=$(find /Applications/Xcode.app -name "MacOSX Product Types.xcspec" | head -n 1)requireFile "$packageTypesForMacOSXPath" false
requireFile "$productTypesForMacOSXPath" falseif [[ $hasPackageTypeForCommandLineTool != "true" ]]; thenmachoDict=`readXcodeSpecificationById "$packageTypesForMacOSXPath" "com.apple.package-type.mach-o-executable"`writeDictToSpecification "$specificationFile" "$machoDict"
fiif [[ $hasProductTypeForCommandLineTool != "true" ]]; thentoolDict=`readXcodeSpecificationById "$productTypesForMacOSXPath" "com.apple.product-type.tool"`writeDictToSpecification "$specificationFile" "$toolDict"
fiexit 0

3、An empty code signing identity is not valid when signing a binary for the 'Dynamic Library' product type.

点击这里的+号

添加 CODE_SIGNING_ALLOWED=NO 选项

 

4、Can't link a dylib with itself. same install_name as dylib being built in '/Users/........./Package/Library/MobileSubstrate/DynamicLibraries/HookTest.dylib'

这是因为已经编译生成过文件了,删除这个文件之后重新编译即可。

5、with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found 错误解决

这里执行了这个脚本/opt/MonkeyDev/bin/md。往这里面添加brew install 安装文件的目录即可

sudo vim /opt/MonkeyDev/bin/md

相关文章:

Xcode16.3配置越狱开发环境

首先先在https://developer.apple.com/xcode/resources/ 这里面登陆Apple账号&#xff0c;然后访问url下载 https://download.developer.apple.com/Developer_Tools/Xcode_16.3/Xcode_16.3.xip 1、安装theos https://theos.dev/docs/installation-macos 会安装到默认位置~/th…...

AWS IoT Core与MSK跨账号集成:突破边界的IoT数据处理方案

随着企业规模的扩大和业务的复杂化,跨账号资源访问成为云架构中的一个常见需求。本文将深入探讨如何实现AWS IoT Core与Amazon MSK(Managed Streaming for Apache Kafka)的跨账号集成,为您的IoT数据处理方案开辟新的可能性。无论您是正在构建多账号架构,还是需要整合不同部门的…...

【Python 列表(List)】

Python 中的列表&#xff08;List&#xff09;是最常用、最灵活的有序数据集合&#xff0c;支持动态增删改查操作。以下是列表的核心知识点&#xff1a; 一、基础特性 有序性&#xff1a;元素按插入顺序存储可变性&#xff1a;支持增删改操作允许重复&#xff1a;可存储重复元…...

在另一个省发布抖音作品,IP属地会随之变化吗?

你是否曾有过这样的疑惑&#xff1a;出差旅游时在外地发布了一条抖音视频&#xff0c;评论区突然冒出“IP怎么显示xx省了&#xff1f;”的提问&#xff1f;随着各大社交平台上线“IP属地”功能&#xff0c;用户的地理位置标识成为公开信息&#xff0c;而属地显示的“灵敏性”也…...

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器,安装教程

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器&#xff0c;安装教程 资源宝分享&#xff1a;https://www.httple.net/154301.html 一次性打包涵盖200个常用工具&#xff01;无论是日常的图片处理、文件格式转换&#xff0c;还是实用的时间…...

D720201 PCIE 转USB HUB

1. 启动时出现了下面错误 [ 4.682595] pcieport 0004:00:00.0: Signaling PME through PCIe PME interrupt [ 4.684939] pci 0004:01:00.0: Signaling PME through PCIe PME interrupt [ 4.691287] pci 0004:01:00.0: enabling device (0000 -> 0002) [ 5.2962…...

QT事件介绍及实现字体放大缩小(滚轮)

使用update是为了回调paintEvent这个事件函数 pic.load是加载一张图片 setfixedsize(pic.siez())是为了把按键的矩形区域变成和pic一样大 painter.drawPixmap(rec(),pic)就是在按键的矩形区域画一个pic emit clicked();是用来发送clicked信号的&#xff0c;当然你也可以在事…...

p2p虚拟服务器

ZeroTier Central ✅ 推荐工具&#xff1a;ZeroTier&#xff08;免费、稳定、跨平台&#xff09; ZeroTier 可以帮你把多台设备&#xff08;无论是否跨网&#xff09;加入一个虚拟局域网&#xff0c;彼此间可以像在同一个 LAN 中通信&#xff0c;UDP 视频、文件传输、SSH 等都…...

高尔夫基本知识及规则·棒球1号位

高尔夫与棒球的结合看似跨界&#xff0c;但两者在规则、策略和运动哲学上存在有趣的关联性。以下从五个角度进行对比分析&#xff0c;揭示它们的异同与潜在联系&#xff1a; 一、核心目标的对比性结合 高尔夫&#xff1a;以最少击球次数完成18洞&#xff08;标准杆72杆左右&am…...

数据结构(1)复杂度

一、数据结构概要 1.数据结构 数据结构是计算机存储、组织数据的方式&#xff0c;是数据相互之间存在一种或者多种特定关系的集合。没有一种单一的数据结构可以解决所有问题&#xff0c;因此要学习多种多样的数据结构。如&#xff1a;线性表、图、树等。 2.算法 算法其实就…...

多分类问题softmax传递函数+交叉熵损失

在多分类问题中&#xff0c;Softmax 函数通常与交叉熵损失函数结合使用。 Softmax 函数 Softmax 函数是一种常用的激活函数&#xff0c;主要用于多分类问题中。它将一个实数向量转换为概率分布&#xff0c;使得每个元素的值在 0 到 1 之间&#xff0c;且所有元素的和为 1。 …...

Java如何获取电脑分辨率?

以下是一个 Java 程序示例&#xff0c;用于获取电脑的主屏幕分辨率&#xff1a; import java.awt.*; public class ScreenResolutionExample { public static void main(String[] args) { // 获取默认的屏幕设备 GraphicsDevice device GraphicsEnvironm…...

【NextPilot日志移植】logged_topics.cpp解析

&#x1f4d8; PX4 Logger 模块注册 uORB 主题、实际订阅与数据采集流程 &#x1f9ed; 目的与背景 在 PX4 飞控中&#xff0c;日志记录模块 logger 需要记录多个 uORB 主题的数据&#xff08;如 IMU、GPS、姿态等&#xff09;。为了系统统一管理这些记录需求&#xff0c;log…...

CSS vertical-align

这里的小空白就是为了和基线对齐 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…...

“工作区”升级为“磁盘”、数据集统计概览优化|ModelWhale 版本更新

本次更新围绕用户在实际项目中对平台的理解和管理体验进行了多项优化。 “工作区”升级为“磁盘”、及其管理优化 平台“工作区”概念正式更名为“磁盘”&#xff0c;突出其存储功能。原有以目录代称的存储区域划分同步更名&#xff0c;其中“work目录”更改为“个人磁盘”&am…...

mac 电脑如何打开剪切板

mac 不像 Windows 拥有官方的剪贴板应用。所以我们需要使用官方商店中的第三方应用实现剪切板管理的功能。 打开苹果电脑上的 App Store&#xff0c;下载 PasteMe 或 Paste 等复制历史记录的管理工具。&#xff08;PasteMe 为买断制18元&#xff0c;Paste为订阅制&#xff0c;…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十二)

个人笔记整理---仅供参考 第十二章项目质量管理 可能考论文&#xff1f;&#xff1f;&#xff1f; 12.1管理基础 12.2项目质量管理过程 12.3规划质量管理 12.4管理质量 12.5控制质量...

Java、javax 和 Jakarta有什么区别?

在 Java 开发中,我们经常会看到 java、javax 和 jakarta 这些包名前缀。本文将详细介绍这三个命名空间的含义、发展历程以及它们之间的关系,帮助你更好地理解 Java 生态系统。 一、Java:核心 API 的基础 ✅ 含义: java 是 Java 标准库的核心包名。所有以 java. 开头的类构…...

LeetCode百题刷002摩尔投票法

遇到的问题都有解决的方案&#xff0c;希望我的博客可以为你提供一些帮助 图片源自leetcode 题目&#xff1a;169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 一、排序法 题目要求需要找到多数值&#xff08;元素个数>n/2&#xff09;并返回这个值。一般会想到先…...

【推荐笔记工具】思源笔记 - 隐私优先的个人知识管理系统,支持 Markdown 排版、块级引用和双向链接

Typora 使用Typora好多年了&#xff0c;一直非常的喜欢这个简洁的Markdown编辑工具&#xff0c;低版本的免费且好用。 Typora官网地址&#xff1a; https://typora.io/ https://typoraio.cn/ Typora的文档树如下&#xff0c;细看后&#xff0c;总觉得差点意思! 思源笔记 今…...

ACTF2025 - Web writeup

ACTF2025 - Web writeup ACTF upload 进去后是一个登录界面&#xff0c;输入用户名后登录&#xff0c;然后到一个文件上传的界面。 在 /upload?file_path 处&#xff0c;可以实现任意文件读取&#xff0c;文件内容保存在 img 标签中的 base64 值中。 示例请求&#xff1a;…...

使用Java实现HTTP协议服务:从自定义服务器到内置工具

在Web开发领域,HTTP协议是服务器与客户端(如Web浏览器)通信的核心。Java作为一种多功能且强大的编程语言,提供了多种方法来实现HTTP协议服务,满足从学习实验到生产部署的各种需求。本文将深入探讨在Java中实现HTTP服务的三种主要方法:使用ServerSocket构建自定义HTTP服务…...

【星海随笔】信息安全相关标准

重要的国际信息安全标准> 国际标准化组织&#xff08;ISO&#xff09; 该组织成立于1947年2月23日&#xff0c;总部位于瑞士日内瓦‌ 国际电工委员会&#xff08;IEC&#xff09; 成立于1906年&#xff0c;最初总部设在英国伦敦&#xff0c;但后来于1948年迁至瑞士日内瓦‌…...

检查当前 Docker 使用的 默认运行时(default runtime)方法

目录 ✅ 方法一&#xff1a;查看 Docker 配置文件&#xff08;最准确&#xff09; ✅ 方法二&#xff1a;使用 Docker info 命令 ✅ 方法三&#xff1a;检查特定容器的运行时 说明&#xff1a;常见的 Docker Runtime ✅ 方法一&#xff1a;查看 Docker 配置文件&#xff08…...

【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别

Efficient distribution similarity identification in clustered federated learning via principal angles between client data subspaces -- 基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别 论文来源TLDR背景与问题两个子空间之间的主角&#xff08;Principa…...

MySQL 性能调优:从执行计划到硬件瓶颈

MySQL 性能调优&#xff1a;从执行计划到硬件瓶颈 一、性能调优的宏观视角与核心挑战 在数字化浪潮下&#xff0c;企业数据量呈指数级增长&#xff0c;MySQL 作为主流关系型数据库&#xff0c;面临着巨大的性能压力。某电商平台日均订单量突破千万&#xff0c;高峰期数据库响…...

a-range-picker 格式化 M2 为正确日期格式

直接打印 range-picker value 是一个满足 dayjs 规则的数组&#xff1a; Reactive<1. Array(2)1. 0:Reactive<1. M2>2. 1: M2 {$L: en, $u: undefined, $d: Fri May 02 2025 14:50:00 GMT0800 (中国标准时间), $y: 2025, $M: 4, …}3. length: 24. [[Prototype]]: Ar…...

shopping mall(document)

shopping mall&#xff08;document&#xff09; 商城的原型&#xff0c;学习&#xff0c;优化&#xff0c;如何比别人做的更好&#xff0c;更加符合大众的习惯 抄别人会陷入一个怪圈&#xff0c;就是已经习惯了&#xff0c;也懒了&#xff0c;也不带思考了。 许多产品会迫于…...

【软件设计师:软件】20.软件设计概述

一、软件设计基本原则 一、软件设计基本原则 1. 模块 是指执行某一特定任务的数据结构和程序代码。 将模块的接口和功能定义为其外部特性将模块的局部数据和实现该模块的程序代码称为内部特性。在模块设计时,最重要的原则就是实现信息隐蔽和模块独立。 2 . 信息隐蔽 将每…...

ArcScroll: 弧形滑动控件

一. 什么是ArcScroll? ArcScroll是一种基于Scroll控件实现的弧形滑动控件。可以让Scroll内容项沿着一个圆心的轨迹滑动&#xff0c;从而实现内容弧形滑动的效果。如下图&#xff1a; 水平滑动&#xff1a; 垂直滑动&#xff1a; 二. 实现方案 以下&#xff0c;以水平的方向…...

芋道框架 账号未登录、租户标识未传递

一. 账号未登陆 {"code": 401,"data": null,"msg": "账号未登录" } 将接口中的 PreAuthorize 注解删除, 使用 PermitAll 注解, 设置 PermitAll 无需认证 Spring Security 中的 YudaoWebSecurityConfigurerAdapter 有详细说明 PostM…...

【计算机视觉】OpenCV项目实战:get_inverse_perspective:基于OpenCV的透视图转化为不同平面

get_inverse_perspective&#xff1a;逆透视变换的算法实现与实战指南 一、项目概述与技术背景1.1 核心功能与技术价值1.2 逆透视变换原理1.3 技术指标对比 二、环境配置与算法实现2.1 硬件要求2.2 软件部署依赖安装核心代码结构 2.3 校准参数配置 三、核心算法优化3.1 矩阵运算…...

Jsoup与HtmlUnit:两大Java爬虫工具对比解析

Jsoup&#xff1a;HTML解析利器 定位&#xff1a;专注HTML解析的轻量级库&#xff08;也就是快&#xff0c;但动态页面无法抓取&#xff09; 核心能力&#xff1a; DOM树解析与CSS选择器查询 HTML净化与格式化 支持元素遍历与属性提取 应用场景&#xff1a;静态页面数据抽…...

使用 ANSYS AEDT(单向耦合)进行高功率同轴射频滤波器的热分析

电热模拟 当今无线射频设备日益复杂&#xff0c;对大型复杂射频设计的精确高效仿真需求也随之增加。在设计早期识别和预测潜在问题可以节省资源、时间和成本。热量会降低电子设备的性能和可靠性&#xff0c;因此热分析对于确定设备在实际工作条件下是否能达到预期性能至关重要…...

Baklib实战企业内容与中台管理差异解析

企业内容管理中台本质差异 企业内容管理系统&#xff08;CMS&#xff09;与内容中台的核心差异在于战略定位与技术路径的本质性区隔。传统CMS聚焦于内容存储与审批流程的线性管理&#xff0c;而内容中台则构建起全域数据服务中枢&#xff0c;通过API接口实现跨系统内容资产调用…...

API请求参数有哪些?

通用参数 app_key&#xff1a;应用的唯一标识&#xff0c;用于验证应用身份&#xff0c;调用API时必须提供。 timestamp&#xff1a;请求时间戳&#xff0c;通常为当前时间的毫秒级时间戳&#xff0c;用于防止请求被重放攻击。 format&#xff1a;返回数据的格式&#xff0c;…...

探秘 InSAR:数据处理与形变信息提取全解析

技术点目录 InSAR技术应用现状分析及其发展InSAR原理、技术方法讲解数据处理环境建立与软件熟悉SAR影像数据获取、DEM数据获取InSAR数据前处理技术InSAR地形三维重建DInSAR形变信息提取时序InSAR技术形变速率与形变时间序列信息获取星地InSAR技术监测案例了解更多 ——————…...

Nginx静态资源增加权限验证

Nginx静态资源增加权限验证 一、前言二、解决思路2.1、方式一2.2、方式二三、代码3.1、方式一3.1.1、前端代码3.1.2、后端代码3.1.3、Nginx调整3.1.4、注意事项3.2.方式二四、参考资料一、前言 在项目开发的过程中,项目初期,及大部分小型项目都是使用共享磁盘进行静态文件的…...

初识MySQL

1. 什么是数据库 2. 什么是MySQL 我们在使用MySQL与Java进行交互时使用的接口为JDBC 3. MySQL安装与SQLyog管理工具 附录将会提供相关绿色版软件&#xff0c;不用从官网下载了 配置环境变量&#xff1a; 双击打开&#xff0c;新建&#xff08;根据mysql的根目录写path&#xff…...

计算机网络:深度解析基于链路状态的内部网关协议IS-IS

IS-IS(Intermediate System to Intermediate System)路由协议详解 IS-IS(Intermediate System to Intermediate System)是一种基于链路状态的内部网关协议(IGP),最初由ISO为OSI(开放系统互连)模型设计,后经扩展支持IP路由。它广泛应用于大型运营商网络、数据中心及复…...

python---kafka常规使用

安装依赖 在开始之前&#xff0c;需要安装 kafka-python 库。可以通过以下命令安装&#xff1a; pip install kafka-python创建生产者 生产者负责将消息发送到 Kafka 主题。以下是一个简单的生产者示例&#xff1a; from kafka import KafkaProducer import json import ti…...

图像泊松融合(convpyr_small版本)

一、背景介绍 前面已经讲过泊松融合算法和它的fft快速版本实现了&#xff0c;想看下还有没有更快的版本&#xff0c;继续翻了下论文&#xff0c;找到了更快速的版本&#xff1a;Convolution Pyramids 。 找到它的matlab代码跑了下&#xff0c;效果还不错。学习记录&#xff0c;…...

ABP vNext + EF Core 实战性能调优指南

ABP vNext EF Core 实战性能调优指南 &#x1f680; 目标 本文面向中大型 ABP vNext 项目&#xff0c;围绕查询性能、事务隔离、批量操作、缓存与诊断&#xff0c;系统性地给出优化策略和最佳实践&#xff0c;帮助读者快速定位性能瓶颈并落地改进。 &#x1f4d1; 目录 ABP vN…...

Spark,在shell中运行RDD程序

在hdfs中/wcinput中创建一个文件&#xff1a;word2.txt在里面写几个单词 启动hdfs集群 [roothadoop100 ~]# myhadoop start [roothadoop100 ~]# cd /opt/module/spark-yarn/bin [roothadoop100 ~]# ./spark-shell 写个11测试一下 按住ctrlD退出 进入环境&#xff1a;spar…...

【Python 元组】

Python 中的元组&#xff08;Tuple&#xff09;是一种不可变的有序数据集合&#xff0c;用于存储多个元素的序列。与列表&#xff08;List&#xff09;类似&#xff0c;但元组一旦创建后无法修改&#xff0c;这种特性使其在特定场景下具有独特优势。 一、核心特性 不可变性&am…...

如何将邮件送达率从60%提升到95%

一、邮件送达率的重要性 邮件送达率是邮件营销效果的关键指标。高送达率能增加邮件被打开、阅读和互动的机会&#xff1b;低送达率则可能导致邮件被误判为垃圾邮件&#xff0c;浪费企业资源。 二、影响邮件送达率的因素及优化策略 1.发件人信誉 建立良好信誉&#xff1a;发…...

【Python】‌Python单元测试框架unittest总结

1. 本期主题&#xff1a;Python单元测试框架unittest详解 unittest是Python内置的单元测试框架&#xff0c;遵循Java JUnit的"测试驱动开发"&#xff08;TDD&#xff09;理念&#xff0c;通过继承TestCase类实现测试用例的模块化组织。本文聚焦于独立测试脚本的编写…...

机器人运动控制技术简介

机器人运动控制详解&#xff1a;从基础原理到技术方案 一、机器人运动控制本质 机器人运动控制是通过算法协调电机、传感器和机械结构&#xff0c;实现精确的位姿&#xff08;位置姿态&#xff09;控制。其核心要解决三个问题&#xff1a; ​​去哪里​​ - 路径规划&#x…...

在linux系统中,没有网络如何生成流量以使得wireshark能捕获到流量

在没有网络连接的情况下&#xff0c;仍然可以通过生成本地流量来测试Wireshark的捕获功能。以下是一些方法可以在Linux系统中生成本地流量&#xff0c;以便Wireshark可以捕获到这些流量&#xff1a; 1. 使用ping命令 ping命令可以生成ICMP&#xff08;Internet Control Messa…...

常见图像融合算法(图像泊松融合)

一、背景介绍 上一篇已经讲过alpha和金字塔融合基本实现&#xff0c;这里主要是继续对图像常用的泊松融合算法和他的一些性能版本实现的基本讲解。 二、原始版本 1、基本原理 图像泊松融合也是普遍使用的常规算法&#xff0c;很多小伙伴已经分享过它的基本原理和实现了&#…...