磁盘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=100bs=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 命令直接获取分区的块设备文件。

  1. 安装 ADB:
    • ADB 包含在 Android SDK(软件开发工具包)中。下载并安装 Android Studio,或者只下载并安装 SDK 工具,其中包含了 adb。

在这里插入图片描述

  1. 启用 USB 调试:

    • 在 Android 设备上使用 adb 之前,你需要确保 USB 调试已经启用。在设备的设置中,进入 “开发者选项” 并启用 “USB 调试”。
  2. 连接设备:

    • 使用 USB 数据线将 Android 设备连接到计算机。确保设备以 MTP(媒体传输协议)或 PTP(图片传输协议)模式连接。
  3. 运行 ADB 命令:

    • 打开终端或命令提示符,导航到 Android SDK 的 platform-tools 目录,并运行 adb 命令。
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
  1. 常见 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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯---图论之最短路dijkstra算法

目录 先分个类吧&#xff1a; 1.对于有向无环图&#xff0c;我们直接拓扑排序&#xff0c;和AOE网类似&#xff0c;把取max改成min即可。 2.边权全部相等&#xff0c;直接BFS即可 3.单源点最短路 从一个点出发&#xff0c;到达其他顶点的最短路长度。 Dijkstra算法&#x…

UI文件原理

使用UI文件创建界面很轻松很便捷&#xff0c;他的原理就是每次我们保存UI文件的时候&#xff0c;QtCreator就自动帮我们将UI文件翻译成C的图形界面创建代码。可以通过以下步骤查看代码 到工程编译目录&#xff0c;一般就是工程同级目录下会生成另一个编译目录&#xff0c;会找到…

rbd快照管理、rbd快照克隆原理与实现、rbd镜像开机自动挂载、ceph文件系统、对象存储、配置对象存储客户端、访问Dashboard

目录 快照 快照克隆 开机自动挂载 ceph文件系统 使用MDS 对象存储 配置服务器端 配置客户端 访问Dashborad 快照 快照可以保存某一时间点时的状态数据快照是映像在特定时间点的只读逻辑副本希望回到以前的一个状态&#xff0c;可以恢复快照使用镜像、快照综合示例 #…

【刷题记录】合并两个有序数组、移除元素

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.题目链接&#xff1a; T1&#xff1a;LINK T2&#xff1a;LINK 2.详解思路&#xff1a; T1: 思路1&#xff1a;弄个新数组&#xff0c;比较两个数组中的值&#xff0c;哪个小就把哪个值放到新数组中。 分析1&a…

自定义类型详解 结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…

Vue语法

1.vue模板语法2大类 插值语法&#xff1a; 功能&#xff1a;用于解析标签内容 用途&#xff1a;用于标签内容定义 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性 指令语法&#xff1a; 功能&#xff1a;用于解析标签&am…

去空行小工具Html + Javascript

这是一个平常用到的小工具&#xff0c;为了节省屏幕空间把空行去掉&#xff0c;怕要用的时候找不到故记录在此。 效果图 网页版&#xff0c;放在浏览器里就可以用 <!doctype html> <html><head><meta charset"utf-8"><title>去回车…

JMeter性能测试系列一初识JMeter

1.JMeter介绍 Apache组织的Stefano Mazzocchi是JMeter项目的创始人。编写JMeter最初的目的是为了测试server的性能(后期被Tomcat替代)。随后&#xff0c;JMeter在Apache组织内部开始被其他项目所使用&#xff0c;并最终推广出来&#xff0c;成为独立的软件项目并不断更新&…

内网渗透Searchall敏感凭证信息搜索工具

一、开发背景 在实战中进入内网的时候&#xff0c;大家需要搜集一些敏感信息例如账号&#xff0c;密码甚至浏览器的账号密码。searchall完美解决了这个问题。所以我就结合自身的经验写了一款搜索敏感信息的利用工具。它可以搜索敏感信息&#xff0c;更快为你获取到有价值的信息…

【51单片机】LED点阵屏(江科大)

9.1LED点阵屏 1.LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。 2.LED点阵屏工作原理 LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已。原理图如下 每一行的阳极连在一起,每一列…

Codeforces Round 926 (Div. 2)(A,B,C,D,E,F)

这场还是很有含金量的&#xff0c;B题开始就有难度了&#xff0c;B是个推结论的题&#xff0c;C要推结论然后递推&#xff0c;D题是有点难的树上DP&#xff08;主要是状态转移方程不好写&#xff09;&#xff0c;E题是个二进制预处理然后状压DP&#xff0c;F题是个数论&#xf…

【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

python系统学习Day2

section3 python Foudamentals part one&#xff1a;data types and variables 数据类型&#xff1a;整数、浮点数、字符串、布尔值、空值 #整型&#xff0c;没有大小限制 >>>9 / 3 #3.0 >>>10 // 3 #3 地板除 >>>10 % 3 #1 取余#浮点型&#xff…

红队笔记Day2 -->上线不出网机器

今天就来讲一下在企业攻防中如何上线不出网的机器&#xff01;&#xff01; 1.基本网络拓扑 基本的网络拓扑就是这样 以下是对应得的P信息&#xff0c;其中的52网段充当一个内网的网段&#xff0c;而111充当公网网段 先ping一下&#xff0c;确保外网ping不通内网&#xff0c;内…

2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;道路运输企业主要负责人证模拟考试题库是根据道路运输企业主要负责人最新版教材&#…

你知道.NET的字符串在内存中是如何存储的吗?

一、字符串对象的内存布局 从“值类型”和“引用类型”来划分&#xff0c;字符串自然属于引用类型的范畴&#xff0c;所以一个字符串对象自然采用引用类型的内存布局。引用类型实例的内存布局总的来说整个内存布局分三块&#xff1a;ObjHeader TypeHandle Payload。对于一般…

EasyCaptcha,开源图形验证码新标杆!

引言&#xff1a; 随着互联网的普及&#xff0c;验证码已成为网站和应用程序中不可或缺的安全组件。它能够有效地防止自动化攻击、垃圾邮件和机器人活动。在众多验证码解决方案中&#xff0c;Easy-captcha以其简单易用和高度可定制的特点受到了开发者的青睐。本文将指导读者如…

浅谈业务场景中缓存的使用

浅谈缓存 一、背景二、缓存分类1.本地缓存2.分布式缓存 三、缓存读写模式1.读请求2.写请求 四、缓存穿透1.缓存空对象2.请求校验3.请求来源限制4.布隆过滤器 五、缓存击穿1.改变过期时间2.串行访问数据库 六、缓存雪崩1.避免集中过期2.提前更新缓存 七、缓存与数据库一致性1.设…

【MySQL】学习约束和使用图形化界面创建表

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-iqtbME2KmWpQFQSt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

java.lang.NoClassDefFoundError: org/springframework/core/GenericTypeResolver

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01; 也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&…