磁盘database数据恢复: ddrescue,dd和Android 设备的数据拷贝
ddrescue和dd
区别:
GNU ddrescue不是dd的衍生物,也与dd没有任何关系 除了两者都可用于将数据从一台设备复制到另一台设备。 关键的区别在于 ddrescue 使用复杂的算法来复制 来自故障驱动器的数据,尽可能少地造成额外的损坏。ddrescue具备更强大的错误处理和恢复机制,可以更好地处理损坏的数据。ddrescue可以逐渐恢复数据,首先尝试读取易读的部分,然后再处理更难访问的区域。dd是一个基础的命令,用于一般的数据复制任务,而ddrescue专注于数据恢复,因此在某些方面更复杂。- 如果你的任务是简单的数据复制,可能选择
dd足够了。但如果你处理的是受损的硬盘或需要更复杂的数据恢复操作,ddrescue可能更适合。
dd命令:
dd是一个用于复制文件和设备的基本命令。它以块为单位操作数据,可以用于复制整个磁盘、分区或文件。dd对于数据恢复来说非常基础,它简单粗暴,没有内建的错误处理机制。dd命令是一种直接复制和写入数据的工具,而不会考虑目标设备上是否已有数据。因此,在执行这个命令之前,请确保/dev/sdb上的所有数据都是你可以丢弃的,或者在执行之前进行备份。
| 命令 | 描述 |
|---|---|
sudo dd if=/dev/sda of=/dev/sdb bs=4M | 从 /dev/sda 复制整个设备的内容到 /dev/sdb,块大小为4兆字节。这将覆盖 /dev/sdb 上的所有数据。较大的块大小可以提高性能,但也可能导致更多的浪费,特别是在尝试恢复数据时。 |
sudo dd if=/dev/sda of=backup.img bs=1G count=1 | 创建一个名为 backup.img 的映像文件,其中包含 /dev/sda 的前1个千兆字节的数据。 |
sudo dd if=source.img of=/dev/sdb bs=8M | 将名为 source.img 的映像文件的内容写入到 /dev/sdb,块大小为8兆字节。这会覆盖 /dev/sdb 上的所有数据。 |
sudo dd if=/dev/zero of=/dev/sdb bs=1M count=10 | 使用 /dev/zero 中的数据(全0)覆盖 /dev/sdb 的前10兆字节。这可以用于擦除设备上的前几个块。 |
sudo dd if=/dev/sda of=/dev/sdb bs=512 count=100 | bs=512:指定块大小为512字节,即一个扇区的大小。 count=100:指定要拷贝的扇区数目。 |
sudo dd if=/dev/sda of=/dev/sdb bs=4M seek=1 | |
sudo dd if=/dev/sda of=/dev/sdb bs=4M seek=100 | 从 /dev/sda 复制数据到 /dev/sdb,但从 /dev/sdb 的第100个块之后开始写入。这是一个在目标设备上追加数据。 |
- linux下dd命令的简单图形界面工具easydd
ddrescue命令:
ddrescue是专门设计用于数据恢复的命令。它被设计成能够处理磁盘上的坏块(损坏的数据区域)并尽量从损坏的地方恢复尽可能多的数据。ddrescue会首先尝试读取易读的部分,然后在后续尝试中逐渐尝试读取更难访问的区域。
| 命令 | 描述 |
|---|---|
sudo ddrescue /dev/sda /dev/sdb logfile | 这个例子将源设备 /dev/sda 的内容复制到目标设备 /dev/sdb,并将恢复的信息记录到 logfile 中。 |
sudo ddrescue /dev/sda /dev/sdb rescued.img | 尝试从 /dev/sda 复制数据到 /dev/sdb,并将已恢复的数据写入 rescued.img。这个命令默认尝试从容易读取的部分开始,逐渐处理难以读取的部分。 |
sudo ddrescue -n /dev/sda /dev/sdb rescued.img | 使用 ddrescue 的快速模式,只复制容易读取的数据。这个命令只进行一次尝试,不尝试处理难以读取的部分。 |
sudo ddrescue -r 3 /dev/sda /dev/sdb rescued.img | 在复制时,尝试最多 3 次从难以读取的部分恢复数据。 |
sudo ddrescue -d -r 3 /dev/sda /dev/sdb rescued.img | 在尝试读取时显示调试信息,并且最多尝试 3 次。 |
sudo ddrescue -b 4096 /dev/sda /dev/sdb rescued.img | 设置块大小为 4096 字节。这允许更精细的控制读取和写入的数据块大小。 |
sudo ddrescue -c 1M /dev/sda /dev/sdb rescued.img | 设置聚类大小为 1 兆字节,这有助于加快处理速度,特别是在处理大容量存储设备时。 |
sudo ddrescue --fill-mode=+ /dev/sda /dev/sdb rescued.img | 使用 + 填充模式,在写入时填充已损坏的区域。 |
sudo ddrescue --retry-passes=3 /dev/sda /dev/sdb rescued.img | 设置最大重试次数为 3 次。在每个重试阶段结束时,ddrescue 将记录已经复制的数据并尝试恢复尽可能多的数据。 |
sudo ddrescue --timeout=10s /dev/sda /dev/sdb rescued.img | 设置超时时间为 10 秒,在此时间内尝试读取数据。如果在规定的时间内未能读取数据,则放弃当前尝试。 |
Android 设备
-
Android 调试桥(Android Debug Bridge,简称 adb)是一种用于在计算机和 Android 设备之间进行通信的命令行工具。它允许开发者通过 USB 或网络连接在计算机和 Android 设备之间传输文件、执行命令和调试应用程序。
-
Copy full disk image from Android to computer:在某些情况下,你可能不需要使用
dd命令来直接复制设备的数据。相反,你可以确保 Android 调试桥(adb)以 root 权限运行,然后使用adb pull命令直接获取分区的块设备文件。
- 安装 ADB:
- ADB 包含在 Android SDK(软件开发工具包)中。下载并安装 Android Studio,或者只下载并安装 SDK 工具,其中包含了 adb。

-
启用 USB 调试:
- 在 Android 设备上使用 adb 之前,你需要确保 USB 调试已经启用。在设备的设置中,进入 “开发者选项” 并启用 “USB 调试”。
-
连接设备:
- 使用 USB 数据线将 Android 设备连接到计算机。确保设备以 MTP(媒体传输协议)或 PTP(图片传输协议)模式连接。
-
运行 ADB 命令:
- 打开终端或命令提示符,导航到 Android SDK 的
platform-tools目录,并运行 adb 命令。
- 打开终端或命令提示符,导航到 Android SDK 的
kubuntu@kubuntu:/media/kubuntu/系统/ESSENTIAL_FILE/ENV_ANDROID/SDK/platform-tools$ ./adb --version
Android Debug Bridge version 1.0.41
Version 34.0.5-10900879
Installed as /media/kubuntu/系统/ESSENTIAL_FILE/ENV_ANDROID/SDK/platform-tools/adb
Running on Linux 5.15.0-67-generic (x86_64)./adb --help
Android Debug Bridge version 1.0.41
Version 34.0.5-10900879
Installed as /media/kubuntu/系统/ESSENTIAL_FILE/ENV_ANDROID/SDK/platform-tools/adb
Running on Linux 5.15.0-67-generic (x86_64)global options:-a listen on all network interfaces, not just localhost-d use USB device (error if multiple devices connected)-e use TCP/IP device (error if multiple TCP/IP devices available)-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)-t ID use device with given transport id-H name of adb server host [default=localhost]-P port of adb server [default=5037]-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]--one-device SERIAL|USB only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.--exit-on-write-error exit if stdout is closedgeneral commands:devices [-l] list connected devices (-l for long output)help show this help messageversion show version numnetworking:connect HOST[:PORT] connect to a device via TCP/IP [default port=5555]disconnect [HOST[:PORT]]disconnect from given TCP/IP device [default port=5555], or allpair HOST[:PORT] [PAIRING CODE]pair with a device for secure TCP/IP communicationforward --list list all forward socket connectionsforward [--no-rebind] LOCAL REMOTEforward socket connection using:tcp:<port> (<local> may be "tcp:0" to pick any open port)localabstract:<unix domain socket name>localreserved:<unix domain socket name>localfilesystem:<unix domain socket name>dev:<character device name>jdwp:<process pid> (remote only)vsock:<CID>:<port> (remote only)acceptfd:<fd> (listen only)forward --remove LOCAL remove specific forward socket connectionforward --remove-all remove all forward socket connectionsreverse --list list all reverse socket connections from devicereverse [--no-rebind] REMOTE LOCALreverse socket connection using:tcp:<port> (<remote> may be "tcp:0" to pick any open port)localabstract:<unix domain socket name>localreserved:<unix domain socket name>localfilesystem:<unix domain socket name>reverse --remove REMOTE remove specific reverse socket connectionreverse --remove-all remove all reverse socket connections from devicemdns check check if mdns discovery is availablemdns services list all discovered servicesfile transfer:push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTEcopy local files/directories to device--sync: only push files that are newer on the host than the device-n: dry run: push files to device without storing to the filesystem-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)-Z: disable compressionpull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCALcopy files/dirs from device-a: preserve file timestamp and mode-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)-Z: disable compressionsync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)-n: dry run: push files to device without storing to the filesystem-l: list files that would be copied, but don't copy them-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)-Z: disable compressionshell:shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]run remote shell command (interactive shell if no command given)-e: choose escape character, or "none"; default '~'-n: don't read from stdin-T: disable pty allocation-t: allocate a pty if on a tty (-tt: force pty allocation)-x: disable remote exit codes and stdout/stderr separationemu COMMAND run emulator console commandapp installation (see also `adb shell cmd package help`):install [-lrtsdg] [--instant] PACKAGEpush a single package to the device and install itinstall-multiple [-lrtsdpg] [--instant] PACKAGE...push multiple APKs to the device for a single package and install theminstall-multi-package [-lrtsdpg] [--instant] PACKAGE...push one or more packages to the device and install them atomically-r: replace existing application-t: allow test packages-d: allow version code downgrade (debuggable packages only)-p: partial application install (install-multiple only)-g: grant all runtime permissions--abi ABI: override platform's default ABI--instant: cause the app to be installed as an ephemeral install app--no-streaming: always push APK to device and invoke Package Manager as separate steps--streaming: force streaming APK directly into Package Manager--fastdeploy: use fast deploy--no-fastdeploy: prevent use of fast deploy--force-agent: force update of deployment agent when using fast deploy--date-check-agent: update deployment agent when local version is newer and using fast deploy--version-check-agent: update deployment agent when local version has different version code and using fast deploy--local-agent: locate agent files from local source build (instead of SDK location)(See also `adb shell pm help` for more options.)uninstall [-k] PACKAGEremove this app package from the device'-k': keep the data and cache directoriesdebugging:bugreport [PATH]write bugreport to given PATH [default=bugreport.zip];if PATH is a directory, the bug report is saved in that directory.devices that don't support zipped bug reports output to stdout.jdwp list pids of processes hosting a JDWP transportlogcat show device log (logcat --help for more)security:disable-verity disable dm-verity checking on userdebug buildsenable-verity re-enable dm-verity checking on userdebug buildskeygen FILEgenerate adb public/private key; private key stored in FILE,scripting:wait-for[-TRANSPORT]-STATE...wait for device to be in a given stateSTATE: device, recovery, rescue, sideload, bootloader, or disconnectTRANSPORT: usb, local, or any [default=any]get-state print offline | bootloader | deviceget-serialno print <serial-number>get-devpath print <device-path>remount [-R]remount partitions read-write. if a reboot is required, -R willwill automatically reboot the device.reboot [bootloader|recovery|sideload|sideload-auto-reboot]reboot the device; defaults to booting system image butsupports bootloader and recovery too. sideload rebootsinto recovery and automatically starts sideload mode,sideload-auto-reboot is the same but reboots after sideloading.sideload OTAPACKAGE sideload the given full OTA packageroot restart adbd with root permissionsunroot restart adbd without root permissionsusb restart adbd listening on USBtcpip PORT restart adbd listening on TCP on PORTinternal debugging:start-server ensure that there is a server runningkill-server kill the server if it is runningreconnect kick connection from host side to force reconnectreconnect device kick connection from device side to force reconnectreconnect offline reset offline/unauthorized devices to force reconnectusb:attach attach a detached USB devicedetach detach from a USB device to allow use by other processes
environment variables:$ADB_TRACEcomma/space separated list of debug info to log:all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp$ADB_VENDOR_KEYS colon-separated list of keys (files or directories)$ANDROID_SERIAL serial number to connect to (see -s)$ANDROID_LOG_TAGS tags to be used by logcat (see logcat --help)$ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)$ADB_MDNS_AUTO_CONNECT comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)Online documentation: https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/master/docs/user/adb.1.md
$ ./adb devices
List of devices attached
SJQ4C19325004095 unauthorized
========》手机上选择“允许调试”========》
$ ./adb devices
List of devices attached
SJQ4C19325004095 device
- 常见 ADB 命令:
./adb shell ls
3rdmodem
3rdmodemnvm
3rdmodemnvmbkp
acct
bugreports
cache
charger
config
cust
cust_comm
cust_spec
cust_spec_cfg
d
data
default.prop
dev
dload
etc
hw_odm
hw_oem
hw_preload
log
mnt
odm
oem
patch
patch_hw
preload
proc
product
res
root
sbin
sdcard
splash2
storage
sys
system
vendor
version
ls: ./mnvm2:0: Permission denied
ls: ./modem_fw: Permission denied
ls: ./modem_log: Permission denied
ls: ./modem_secure: Permission denied
ls: ./hisee_fs: Permission denied
ls: ./sec_storage: Permission denied
ls: ./version.prop: Permission denied
ls: ./verity_key: Permission denied
ls: ./ueventd.rc: Permission denied
ls: ./resetFactory.cfg: Permission denied
ls: ./init.zygote64_32.rc: Permission denied
ls: ./init.zygote32.rc: Permission denied
ls: ./init.usb.rc: Permission denied
ls: ./init.usb.configfs.rc: Permission denied
ls: ./init.rc: Permission denied
ls: ./init.environ.rc: Permission denied
ls: ./init: Permission denied
ls: ./fstab.zram768m: Permission denied
ls: ./fstab.zram512m: Permission denied
ls: ./fstab.zram256m: Permission denied
ls: ./fstab.zram2240m: Permission denied
ls: ./fstab.zram1536m: Permission denied
ls: ./fstab.zram1280m: Permission denied
ls: ./fstab.zram1024m: Permission denied
CG
-
首先必须明确一个条件,那就是如果手机系统没有Root过的话,是绝对不可以对磁盘进行扇区级操作的。所以,第一步,请先Root了你的手机或者模拟器吧
-
ddrescue 电脑恢复数据软件不用付费ddrescue,抢救损坏的硬盘数据,Linux下的软件国产操作系
-
https://www.gnu.org/software/ddrescue/
-
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
-
sudo apt install gddrescue
-
OPTIONAL : sudo apt-get install ddrescueview
-
ddrescue的一个最大的好处是 mapFile 他可以记录进度,即使中断,下次在执行这个命令,他会检测已恢复的进度,并继续恢复,可以通过 ddrescueview 来通过GUI 的方式来查看 mapfile
-
:C/C++
-
https://github.com/lich4/DataRecovery
-
TestDisk 是一款功能强大的免费数据恢复软件!
-
Undark - a SQLite recovery tool for deleted data or corrupt database
-
Data recovery for IPFS protocol.
-
:PYTHON
-
Data recovery tools for FATX drives (XBOX and XBOX 360).
-
SQBrite is a data recovery tool for SQLite databases
-
:Rust
-
Simple read only zfs implementation with some simple tools for data recovery.
-
这是一个用于恢复最终处于不可恢复状态的丢失钱包的工具。如果你把你的种子输入到这个 工具,它会导致您的频道在您下次打开钱包时强制关闭。这将使您能够收回资金 从渠道。
-
用 Rust 编写的 BTRFS 数据恢复工具
-
ANDROID
-
https://github.com/android-rooting-tools/android_run_root_shell
-
Android-External-Root-Memory-库
-
嘿,我是格兰特。我是一名安全工程师,专注于逆向工程和漏洞研究。最近,我发现自己花了很多时间在与Android安全相关的主题上。 了解我的学术研究,阅读我一些关于杂项主题的不常发表的博客文章,查看我的项目索引,或查看我的简历以了解有关我的工作经历的更多信息。我的一些爱好包括玩 CTF(目前没有团队)、系统管理、游戏黑客、计算机图形学和网页设计。
-
Rooting with root cause: finding a variant of a Project Zero bug
-
Android Root Exploits Abuse Dirty COW Vulnerability
-
Exploiting CVE-2020-0041 - Part 2: Escalating to root
相关文章:
磁盘database数据恢复: ddrescue,dd和Android 设备的数据拷贝
ddrescue和dd 区别: GNU ddrescue 不是 dd 的衍生物,也与 dd 没有任何关系 除了两者都可用于将数据从一台设备复制到另一台设备。 关键的区别在于 ddrescue 使用复杂的算法来复制 来自故障驱动器的数据,尽可能少地造成额外的损坏。ddrescue…...
SpringMVC-入门
1.概念 SpringMVC是一种软件架构思想,把软件按照模型(Model)、视图(View)、控制器(Controller)这三层来划分。Model:指的是工程中JavaBean,用来处理数据View:指的是工程中的html、jsp等页面,用来展示给用户数据Control…...
需要学习的知识点清单
div 4 div 3 F :拓扑排序 G : 组合数学 D : 结构体排序 div 2 div 12...
杂谈--spconv导出中onnx的扩展阅读
Onnx 使用 Onnx 介绍 Onnx (Open Neural Network Exchange) 的本质是一种 Protobuf 格式文件,通常看到的 .onnx 文件其实就是通过 Protobuf 序列化储存的文件。onnx-ml.proto 通过 protoc (Protobuf 提供的编译程序) 编译得到 onnx-ml.pb.h 和 onnx-ml.pb.cc 或 on…...
嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第二天-arm ads下的start.S分析(物联技术666)
链接:https://pan.baidu.com/s/1E4x2TX_9SYhxM9sWfnehMg?pwd1688 提取码:1688 ; ; NAME: 2440INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables ; 完全注释 ; HISTORY: ; 2002.02.25:kwtark: ver 0.…...
STL之list容器的介绍与模拟实现+适配器
STL之list容器的介绍与模拟实现适配器 1. list的介绍2. list容器的使用2.1 list的定义2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers2.6 list的迭代器失效 3. list的模拟实现3.1 架构搭建3.2 迭代器3.2.1 正向迭代器3.2.2反向迭代器适配…...
Leetcode With Golang 二叉树 part1
这一部分主要来梳理二叉树题目最简单最基础的部分,包括遍历,一些简单题目。 一、Leecode 144 - 二叉树的前序遍历 https://leetcode.cn/problems/binary-tree-preorder-traversal/description/ 二叉树的遍历是入门。我们需要在程序一开始就创建一个空…...
tcp 中使用的定时器
定时器的使用场景主要有两种。 (1)周期性任务 这是定时器最常用的一种场景,比如 tcp 中的 keepalive 定时器,起到 tcp 连接的两端保活的作用,周期性发送数据包,如果对端回复报文,说明对端还活着…...
黑马Java——IO流
一、IO流的概述 IO流:存储和读取数据的解决方案 IO流和File是息息相关的 1、IO流的分类 1.1、纯文本文件 word、Excel不是纯文本文件 而txt或者md文件是纯文本文件 2、小结 二、IO流的体系结构 三、字节流 1、FileOutputStream(字节输出流ÿ…...
re:从0开始的CSS学习之路 11. 盒子垂直布局
1. 盒子的垂直布局的注意 若两个“相邻”垂直摆放的盒子,上面盒子的下外边距与下面盒子的上外边距会发生重叠,称为外边距合并 若合并后,外边距会选择重叠外边距的较大值 若两个盒子具有父子关系,则两个盒子的上外边距会发生重叠&…...
Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力
DeepFlow 是基于 eBPF 的可观测性开源项目,旨在为复杂的云基础设施及云原生应用提供深度可观测性。DeepFlow 基于 eBPF 采集了精细的链路追踪数据和网络、应用性能指标,其在网络路径上的全链路覆盖能力和丰富的 TCP 性能指标能够为专业用户和网络领域专家…...
轻松掌握Jenkins执行远程window的Jmeter接口脚本
Windows环境:10.1.2.78 新建与配置节点 【系统管理】—【管理节点】—【新建节点】输入节点名称,勾选“dumb slave”,点击ok 按如上配置: 说明: Name:定义slave的唯一名称标识,可以是任意字…...
UI文件原理
使用UI文件创建界面很轻松很便捷,他的原理就是每次我们保存UI文件的时候,QtCreator就自动帮我们将UI文件翻译成C的图形界面创建代码。可以通过以下步骤查看代码 到工程编译目录,一般就是工程同级目录下会生成另一个编译目录,会找到…...
OS设备管理
设备管理 操作系统作为系统资源的管理者,其提供的功能有:处理机管理、存储器管理、文件管理、设备管理。其中前三个管理都是在计算机的主机内部管理其相对应的硬件。 I/O设备 I/O即输入/输出。I/O设备即可以将数据输入到计算机,或者可以接收…...
Matlab绘图经典代码大全:条形图、极坐标图、玫瑰图、填充图、饼状图、三维网格云图、等高线图、透视图、消隐图、投影图、三维曲线图、函数图、彗星图
学会 MATLAB 中的绘图命令对初学者来说具有重要意义,主要体现在以下几个方面: 1. 数据可视化。绘图命令是 MATLAB 中最基本也是最重要的功能之一,它可以帮助初学者将数据可视化,更直观地理解数据的分布、变化规律和趋势。通过绘制图表,可以快速了解数据的特征,从而为后续…...
姿态传感器MPU6050模块之陀螺仪、加速度计、磁力计
MEMS技术 微机电系统(MEMS, Micro-Electro-Mechanical System),也叫做微电子机械系统、微系统、微机械等,指尺寸在几毫米乃至更小的高科技装置。微机电系统其内部结构一般在微米甚至纳米量级,是一个独立的智能系统。 微…...
MySQL 基础知识(一)之数据库和 SQL 概述
目录 1 数据库相关概念 2 数据库的结构 3 SQL 概要 4 SQL 的基本书写规则 1 数据库相关概念 数据库是将大量的数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合数据库管理系统(DBMS)是用来管理数据库的计算机系统…...
挑战杯 wifi指纹室内定位系统
简介 今天来介绍一下室内定位相关的原理以及实现方法; WIFI全称WirelessFidelity,在中文里又称作“行动热点”,是Wi-Fi联盟制造商的商标做为产品的品牌认证,是一个创建于IEEE 802.11标准的无线局域网技术。基于两套系统的密切相关ÿ…...
Midjourney提示词风格调试测评
在Midjourney中提示词及风格参数的变化无疑会对最终的作品产生影响,那影响具体有多大?今天我我们将通过一个示例进行探究。 示例提示词: 计算机代码海洋中的黄色折纸船(图像下方)风格参考:金色长发的女人,…...
Codeforces Round 926 (Div. 2)(A~C)
A. Sasha and the Beautiful Array 分析:说实话,打比赛的时候看到这题没多想,过了一下样例发现将数组排序一下就行,交了就过了。刚刚写题解反应过来,a2-a1a3-a2.....an-a(n-1) an - a1,所以最后结果只取决…...
拯救变砖的STM32:利用BOOT0/1组合实现三种烧录救机方案(含串口/JTAG异常处理)
STM32紧急救援指南:BOOT引脚组合的三种烧录方案与异常处理实战 引言:当STM32突然"变砖"时 深夜的实验室里,王工盯着眼前毫无反应的STM32开发板,额头渗出细密的汗珠——距离项目交付只剩12小时,核心控制程序却…...
OpenCore Legacy Patcher技术指南:让老旧Mac焕发新生的系统扩展方案
OpenCore Legacy Patcher技术指南:让老旧Mac焕发新生的系统扩展方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当您的Mac设备因苹果官方停止…...
Landsat8温度反演结果不准?可能是这5个参数没搞对(ENVI实战经验分享)
Landsat8温度反演精度提升:5个关键参数优化与ENVI实战解析 当你在深夜盯着屏幕上那些明显偏离预期的温度反演结果时,是否曾怀疑过ENVI软件出了问题?事实上,90%的温度反演误差都源于几个关键参数的设置不当。作为一位经历过数十个遥…...
别再单独部署Mosquitto了!用Docker一步搞定带MQTT插件的RabbitMQ 3.13
告别繁琐部署:用Docker Compose快速搭建支持MQTT的RabbitMQ集群 在物联网和微服务混合架构中,消息中间件选型常常让开发者陷入两难——选择轻量级的Mosquitto MQTT broker虽然能满足设备通信需求,却无法处理服务间的AMQP消息;部署…...
Visio高效安装与激活全攻略:从零开始到成功运行
1. Visio安装前的准备工作 第一次安装Visio的朋友们,我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时,经常遇到因为前期准备不足导致安装失败的情况。首先,检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...
影刀RPA实战:用Python字符串处理提升自动化效率(附5个常用脚本)
影刀RPA实战:5个Python字符串处理脚本解决自动化难题 在影刀RPA的自动化流程中,字符串处理就像流水线上的精密工具,直接决定了数据处理的准确性和效率。当我们需要从混乱的日志中提取关键信息、清洗客户提交的表格数据或转换不同系统的文本格…...
如何用开源工具实现3D打印钥匙自由?从参数测量到模型生成的实践路径
如何用开源工具实现3D打印钥匙自由?从参数测量到模型生成的实践路径 【免费下载链接】keygen OpenSCAD tools for generating physical keys 项目地址: https://gitcode.com/gh_mirrors/ke/keygen 在数字化制造蓬勃发展的今天,3D打印技术正逐步走…...
硬币凑钱--动态规划--完全背包的变式
1.硬币凑钱import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int nsc.nextInt();//背包问题的其中一种int[] dpnew int[n1];for(int i1;i<n…...
OPC UA over HTTPS解析卡顿,Modbus TCP粘包丢帧,Java工业协议解析故障全图谱,一线工程师紧急避坑手册
第一章:Java工业协议解析故障全景概览 在现代工业物联网(IIoT)系统中,Java 应用常作为上位机、网关或边缘服务承担 Modbus TCP、OPC UA、S7Comm、DNP3 等协议的解析与桥接任务。然而,由于协议语义复杂、设备厂商实现差…...
保姆级教程:用Docker Compose一键部署Dify AI平台(附国内镜像加速与端口冲突解决)
零门槛部署Dify AI开发平台:Docker Compose全流程指南与避坑手册 在AI应用开发领域,快速搭建一个稳定可靠的开发环境往往是项目成功的第一步。Dify作为一款面向开发者的AI应用开发平台,通过可视化编排和低代码方式大大降低了构建基于大语言模…...
