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

windowsC++操作ADB

文章目录

    • 一、ADB基础
        • 1. 工作原理
        • 2. 安装与配置
    • 二、常用ADB指令分类
        • 1. 设备连接与管理
        • 2. 文件传输
        • 3. 应用管理
        • 4. 设备交互
        • 5. 系统信息
        • 6. 日志与调试
        • 7. 网络与端口转发
    • 三、高级用法
        • 1. 多设备管理
        • 2. 无线ADB连接
        • 3. 批量执行命令
        • 4. ADB脚本示例
    • 四、常见问题与解决方案
    • 五、注意事项
    • 六、进一步学习资源
    • 七、C++代码

在自动化生产过程中,可能会遇到各种各样的场景,比如需要通过软件取读写连在电脑上的安卓设备,那此时采用adb指令将是一种极为方便的方法,adb\adb指令、C++代码详细记录如下:

ADB(Android Debug Bridge)是一种功能强大的命令行工具,允许开发者与Android设备进行通信和交互。它是Android SDK的一部分,常用于调试应用程序、安装APK、传输文件以及执行设备命令。下面从多个方面详细介绍ADB及其指令:

一、ADB基础

1. 工作原理
  • ADB通过USB或Wi-Fi在计算机(客户端)和Android设备(守护进程adbd)之间建立通信桥梁。
  • 通信流程:客户端(如命令行)→ ADB服务器(本地进程)→ 设备上的ADB守护进程。
2. 安装与配置
  • 安装:通过Android SDK Platform-Tools安装,或直接下载独立的Platform-Tools包。
  • 配置环境变量:将platform-tools目录添加到系统PATH中,以便全局使用adb命令。
  • 安装教程网上大把的,这里就不赘述了,参考地址:https://blog.csdn.net/qq_44807940/article/details/140588328

二、常用ADB指令分类

1. 设备连接与管理
adb devices          # 列出所有连接的设备(包括模拟器)
adb kill-server      # 终止ADB服务器
adb start-server     # 启动ADB服务器
adb reconnect        # 重新连接设备
2. 文件传输
adb push <本地路径> <设备路径>  # 从电脑复制文件到设备
adb pull <设备路径> <本地路径>  # 从设备复制文件到电脑
adb shell ls <设备路径>        # 查看设备文件列表
3. 应用管理
adb install <APK路径>          # 安装APK
adb uninstall <包名>           # 卸载应用
adb shell pm list packages     # 列出所有安装的应用包名
adb shell pm clear <包名>      # 清除应用数据
4. 设备交互
adb shell input text "hello"   # 在设备上输入文本
adb shell input keyevent 26    # 按下电源键(26为电源键码)
adb shell input tap x y        # 点击屏幕坐标(x,y)
adb shell screencap <路径>     # 截图并保存到设备
adb shell screenrecord <路径>  # 录制屏幕(最长180秒)
5. 系统信息
adb shell getprop ro.product.model  # 获取设备型号
adb shell getprop ro.build.version.release  # 获取Android版本
adb shell dumpsys battery           # 获取电池信息
adb shell dumpsys wifi              # 获取Wi-Fi信息
adb reboot                          # 重启设备
6. 日志与调试
adb logcat                          # 查看系统日志
adb logcat -s <标签名>               # 过滤特定标签的日志
adb shell ps                        # 查看进程列表
adb shell top                       # 查看资源占用情况
7. 网络与端口转发
adb forward tcp:8080 tcp:8080       # 将本地端口8080转发到设备端口8080
adb reverse tcp:8080 tcp:8080       # 将设备端口8080转发到本地端口8080(Android 5.0+)
adb shell ifconfig                  # 查看网络配置

三、高级用法

1. 多设备管理

当连接多个设备时,使用-s <设备ID>指定目标设备:

adb -s emulator-5554 shell          # 对模拟器执行命令
adb -s 0123456789ABCDEF install app.apk  # 对特定设备安装APK
2. 无线ADB连接

需先通过USB连接设备,然后执行:

adb tcpip 5555                     # 开启设备的TCP/IP模式,监听5555端口
adb connect <设备IP>:5555          # 通过IP连接设备(断开USB后仍可通信)
3. 批量执行命令

使用adb shell结合循环或脚本批量操作:

adb shell "for i in $(seq 1 10); do input tap 500 500; done"  # 连续点击10次
4. ADB脚本示例
# 自动化安装并启动应用
adb install myapp.apk
adb shell am start -n com.example.app/.MainActivity

四、常见问题与解决方案

  1. 设备未被识别

    • 检查USB连接和驱动
    • 重启ADB服务器:adb kill-server && adb start-server
    • 确保设备开启USB调试模式
  2. 权限问题

    • 在设备上确认USB调试授权弹窗
    • 使用root权限:adb root(需设备已root)
  3. 无线连接失败

    • 确保设备和电脑在同一Wi-Fi网络
    • 检查防火墙设置
    • 尝试重新执行adb tcpip 5555adb connect

五、注意事项

  1. 数据安全:ADB可访问设备敏感数据,建议仅在受信任环境使用。
  2. 性能影响:长时间使用screenrecord可能导致设备发热。
  3. 兼容性:部分指令可能因设备型号或Android版本不同而有差异。

六、进一步学习资源

  • 官方文档:Android Developers - ADB
  • ADB命令速查表:可在线搜索或使用第三方工具(如ADBKeyBoard)提高效率。
  • ADB下载安装
    Windows版本: https://dl.google.com/android/repository/platform-tools-latest-windows.zip
    Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
    Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip

通过掌握ADB指令,开发者可以大幅提升Android应用的调试、测试和部署效率。

七、C++代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>/*** 执行ADB命令并返回结果* @param command 要执行的ADB命令(不含"adb "前缀)* @param outputBuffer 用于存储命令输出的缓冲区* @param bufferSize 缓冲区大小* @return 成功返回0,失败返回-1*/
int executeAdbCommand(const char *command, char *outputBuffer, size_t bufferSize) {if (command == NULL || outputBuffer == NULL || bufferSize < 1) {errno = EINVAL;return -1;}// 构建完整的ADB命令char fullCommand[1024];_snprintf(fullCommand, sizeof(fullCommand), "adb %s", command);fullCommand[sizeof(fullCommand) - 1] = '\0'; // 确保字符串终止FILE *pPipe = _popen(fullCommand, "rt");if (pPipe == NULL) {fprintf(stderr, "Error: Failed to execute command (errno=%d)\n", errno);return -1;}// 初始化输出缓冲区outputBuffer[0] = '\0';// 读取命令输出char tempBuffer[256];while (fgets(tempBuffer, sizeof(tempBuffer), pPipe) != NULL) {size_t currentLen = strlen(outputBuffer);size_t lineLen = strlen(tempBuffer);// 检查是否有足够空间添加新行if (currentLen + lineLen + 1 >= bufferSize) {fprintf(stderr, "Warning: Output buffer is full, truncating output\n");break;}// 追加到输出缓冲区strncat(outputBuffer, tempBuffer, bufferSize - currentLen - 1);}// 关闭管道并获取退出码int exitCode = _pclose(pPipe);if (exitCode == -1) {fprintf(stderr, "Error: Failed to close pipe (errno=%d)\n", errno);return -1;}// 检查ADB命令是否成功执行(通常返回0表示成功)return (exitCode == 0) ? 0 : -1;
}int main(void)
{char output[2048];const char *adbCommands[] = {"devices","shell getprop ro.product.model","version","invalid-command"  // 测试失败情况};for (int i = 0; i < sizeof(adbCommands) / sizeof(adbCommands[0]); i++) {printf("Executing: adb %s\n", adbCommands[i]);printf("----------------------start------------------\n");if (executeAdbCommand(adbCommands[i], output, sizeof(output)) == 0){printf("Output:\n%s\n", output);printf("==0\n");} else{printf("Failed to execute command\n");printf("==-1\n");}printf("==================end======================\n\n");}return 0;
}

在这里插入图片描述

相关文章:

windowsC++操作ADB

文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...

Springboot实现重试机制

背景 研发工作中时常遇到要和其他服务对接&#xff0c;依赖对方能力的情况&#xff0c;最恶心的是对方提供的服务不稳定&#xff0c;时灵时不灵的&#xff0c;进而影响到自己功能的稳定性。万一发生了这种事&#xff0c;做为研发&#xff0c;咱该怎么办&#xff1f;通过容错直接…...

CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析

目录 1. 什么是 PsExec&#xff1f; 2. 什么是 Telnet&#xff1f; 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...

第二十三天打卡

作业&#xff1a; 整理下全部逻辑的先后顺序&#xff0c;看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...

【漫话机器学习系列】256.用 k-NN 填补缺失值

用 k-NN 填补缺失值&#xff1a;原理、实现与应用 在实际的数据科学项目中&#xff0c;我们经常会遇到数据缺失&#xff08;Missing Values&#xff09;的问题。缺失值如果处理不当&#xff0c;不仅会影响模型训练&#xff0c;还可能导致最终结果偏差。 今天&#xff0c;我们…...

tomcat与nginx之间实现多级代理

准备工作 准备5台虚拟主机&#xff1b;至少准备3台虚拟主机&#xff1b; 设备1作为代理服务器&#xff1b;设备2与设备4作为处理静态资源请求服务器&#xff08;使用nginx&#xff09;&#xff1b;设备3与设备5作为处理动态资源服务器&#xff08;使用tomcat&#xff09; 设…...

商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究

摘要&#xff1a;随着商业航天领域的迅速发展&#xff0c;运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战&#xff0c;包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时&#xff0c;通过案例研究展示…...

[Java实战]Spring Boot 3 整合 Ehcache 3(十九)

[Java实战]Spring Boot 3 整合 Ehcache 3&#xff08;十九&#xff09; 引言 在微服务和高并发场景下&#xff0c;缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架&#xff0c;其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...

【Flask全栈开发指南】从零构建企业级Web应用

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1f6a7; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f50d; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f9e9; 关键技术模块说明⚖️ 技术选…...

使用docker安装clickhouse集群

1、简介 clickhouse 作为大数据场景中&#xff0c;实现快速检索的常用列式存储数据库&#xff0c;采用物理机部署&#xff0c;会在数据量大的场景中&#xff0c;物理机器存储达到阈值需要扩容&#xff0c;会带来比较大的问题&#xff0c;因此&#xff0c;使用docker部署clickho…...

佰力博科技准静态d33测试的注意事项

准静态d33测试是测量压电材料纵向压电应变常数的重要方法&#xff0c;其注意事项包括以下几个方面&#xff1a; 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪&#xff0c;如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...

iOS设备投屏Archlinux

我的iphone手机屏太小&#xff0c;我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3&#xff0c;开源。原来只支持 AirPlay Mirror 协议&#xff0c;现在新增 支持来自 AirPlay 的纯音频 &#xff08;Apple Los…...

VUE_UI组件的二次封装

属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...

算法·KMP

KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1​&#xff0c;不在匹配失败时重新开始遍历子串 s 2 s_2 s2​&#xff0c;实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义&#xff1a;一是匹配失败后&#xff0c;子串 s 2 s_2 s2​应该回退的位置&#xff0c;一种…...

如何正确地写出单例模式

如何正确地写出单例模式 | Jarks Blog 枚举方式&#xff1a; public class SingletonObject {private SingletonObject() {}/*** 枚举类型是线程安全的&#xff0c;并且只会装载一次*/private enum Singleton {INSTANCE;private final SingletonObject instance;Singleton() {…...

Mac M系列 安装 jadx-gui

安装 Homebrew在终端中执行以下命令&#xff08;需管理员密码&#xff09;&#xff1a; 安装 Homebrew&#xff08;官方源&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内用户可用镜像源加速&…...

水滴Android面经及参考答案

目录 static 关键字有什么作用,它修饰的方法可以使用非静态的成员变量吗? Java 中创建线程有几种方式? wait 和 sleep 的区别,如何打断 sleep? Java 垃圾回收的目的是什么,垃圾回收机制是怎样的? Java 的垃圾回收(GC)机制是如何工作的? 请解释 Java 内存模型(J…...

《猜拳游戏》

综合案例《猜拳游戏》 需求&#xff1a; 本游戏是一款单机游戏&#xff0c;人机交互 规则&#xff1a; 需要双方出拳&#xff1a;石头、剪刀、布 赢&#xff1a; 石头 → 剪刀剪刀 → 布布 → 石头 平&#xff1a; 两边出拳相等 输&#xff1a; … 实现&#xff1a; 选择对…...

Mysql索引优化

一、索引 1. 主键索引&#xff08;Primary Index&#xff09; 定义 主键索引是一种特殊的唯一索引&#xff0c;用于唯一标识表中的每一行数据。每个表最多有一个主键索引&#xff0c;且索引列不允许为 NULL&#xff0c;自动添加 UNIQUE 和 NOT NULL 约束。 特点&#xff1a;…...

Postgresql与openguass对比

背景介绍 PostgreSQL是世界上最先进的开源关系型数据库&#xff0c;以其强大的功能、稳定性和可扩展性著称。而openGauss是华为公司于2020年6月30日开源的数据库系统&#xff0c;内核基于PostgreSQL 9.2.4版本演进而来。值得注意的是&#xff0c;PostgreSQL 11.3版本拥有290个数…...

线程的概念和控制

自从20世纪60年代提出了进程的概念之后&#xff0c;操作系统一直以进程作为独立运行的基本单位。到了20世纪80年代&#xff0c;人们又提出了比进程更小的、能独立运行的基本单位——线程。提出线程的目的是试图提高系统并发执行的程度&#xff0c;从而进一步提高系统的吞吐量。…...

如何配置activemq,支持使用wss协议连接。

1、到阿里云申请一个证书&#xff0c;通过后下载jks证书。 2、配置activemq&#xff1a; 打开activemq安装目录中“conf/activemq.xml”&#xff0c;增加以下记录&#xff1a; <transportConnectors> <transportConnector name"wss" uri"…...

【言语】刷题3

front&#xff1a;刷题2 题干 超限效应介绍冰桶挑战要避免超限效应 B明星的作用只是病痛挑战的一个因素&#xff0c;把握程度才是重点&#xff0c;不是强化弱化明星作用&#xff0c;排除 A虽没有超限效应&#xff0c;但是唯一的点出“冰桶效应”的选项&#xff0c;“作秀之嫌…...

关于 ast: Babel AST 全类型总览

AST 的每个节点都有一个 type 字段&#xff0c;用来标识它的语法类型。 程序结构节点 type说明示例Program整个程序的根节点整体代码结构BlockStatement大括号代码块 {}if、function、for 等的主体ExpressionStatement表达式语句&#xff08;如 a b;&#xff09;EmptyStatem…...

STM32 内存

根据STM32的存储器映射机制&#xff0c;其32位地址总线可访问4GB逻辑地址空间&#xff08;0x00000000-0xFFFFFFFF&#xff09;&#xff0c;但实际物理地址分配由芯片厂商定义。以下是STM32完整的地址映射结构及关键区域说明&#xff1a; 一、地址空间整体架构 4GB地址空间划分…...

图片的require问题

问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…...

关于 js:8. 反调试与混淆识别

一、常见反调试手段识别 1. debugger 死循环&#xff08;阻塞调试器&#xff09; 样例代码&#xff1a; while (true) {debugger; }原理&#xff1a; 每次执行到 debugger 语句&#xff0c;如果 DevTools 打开&#xff0c;将自动触发断点。 如果在死循环中&#xff0c;调试…...

深度Q网络(DQN)的基本概念

一、深度Q网络(DQN)的基本概念 深度Q网络(Deep Q-Network,DQN)是将强化学习中的Q学习(Q-Learning)与深度学习相结合的算法,由DeepMind在2013年提出,并在2015年发表于《Nature》杂志。它通过神经网络近似动作价值函数(Q函数),解决传统Q学习在高维状态空间下的计算难…...

uniapp+vue3中自动导入ref等依赖

前言&#xff1a; 在我们使用uni-appvue3创建项目&#xff0c;开发的过程中&#xff0c;老是需要导入我们的ref、onshow等&#xff0c;那么能不能自动导入&#xff0c;不用我们每个页面都写呢&#xff1f;是没问题的&#xff0c;这里让他的小帮手来帮你减轻负担&#xff1a;他就…...

合肥SMT贴片加工核心优势与工艺升级

内容概要 在电子制造领域&#xff0c;工艺精度与生产效率的平衡始终是企业关注的核心命题。本文将系统呈现合肥SMT贴片加工产业的技术演进图谱&#xff0c;为寻求制造升级的企业提供可落地的决策参考。 作为长三角电子制造集群的重要节点&#xff0c;合肥SMT贴片加工产业通过持…...

Ansible安装与核心模块实战指南

Ansible安装与核心模块实战指南 自动化运维入门:从安装到模块化任务配置 Ansible作为一款无代理自动化工具,通过模块化设计实现高效管理,尤其适用于快速部署、配置和维护大规模系统。本文将从安装、核心模块使用到实际案例,全面解析其核心功能与最佳实践。 一、Ansible安装…...

TDengine 做为 Spark 数据源

简介 Apache Spark 是开源大数据处理引擎&#xff0c;它基于内存计算&#xff0c;可用于批、流处理、机器学习、图计算等多种场景&#xff0c;支持 MapReduce 计算模型及丰富计算操作符、函数等&#xff0c;在大超大规模数据上具有强大的分布式处理计算能力。 通过 TDengine …...

Codeforces Round 997 (Div. 2)

A. Shape Perimeter 题目大意 给你一个m*m的正方形&#xff0c;再给你n个坐标表示每次在xy移动的距离&#xff08;第一个坐标是初始位置正方形左下角&#xff09;&#xff0c;问路径图形的周长 解题思路 记录好第一次的位置之后一直累加最后求总移动距离的差值即可 代码实…...

WSL 安装 Debian 12 后,Linux 如何安装 nginx ?

在 WSL 的 Debian 12 中安装 Nginx 的步骤如下&#xff1a; 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y2. 安装 Nginx sudo apt install nginx -y3. 管理 Nginx 服务 ▶ 启动 Nginx sudo service nginx start # 如果使用 systemd 可能需改用&…...

目标检测任务 - 数据增强

目标检测任务 - DETR &#xff1a; 数据预处理/数据增强 算法源码实例 import datasets.transforms as Tnormalize T.Compose([T.ToTensor(),T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])scales [480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800]…...

java的switch case

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int type in.nextInt();switch(type){case 1:case 2:System.out.println("你好");break;case 3:System.out.println("晚上好"…...

基于亚博K210开发板——LCD触摸屏读取坐标数据测试

开发板 亚博K210开发板 实验目的 主要学习 K210 通过 I2C 读取触摸屏的坐标&#xff0c;并打印出来&#xff0c;显示在 LCD上。 实验准备 实验元件 LCD 显示屏触摸板 元件特性 K210 开发板自带 2.0 寸触摸屏&#xff0c;其实是 LCD 显示屏上贴一个触摸板组成&#xf…...

coze平台实现文生视频和图生视频(阿里云版)工作流

工作流全貌 开始 首先从入参开始&#xff1a; api_key&#xff1a;来自阿里云百炼平台&#xff0c;自行去申请 prompt&#xff1a;生成视频的文本提示词。支持中英文&#xff0c;长度不超过800个字符&#xff0c;每个汉字/字母占一个字符&#xff0c;超过部分会自动截断。 …...

python酒店健身俱乐部管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

QtGUI模块功能详细说明,图标和光标(七)

目录 一.窗口和屏幕管理 二. 绘图和渲染 三. 图像处理 四. 字体和文本 五. 事件和输入处理 六. OpenGL 和硬件加速 七. 颜色和外观 八. 图标和光标 1、QIcon: 图标管理 1.1、QIcon 简介 1.2、图标的来源与创建 1.3、多分辨率与 DPI 支持 1.4、图标的状态管理 2、…...

【图像处理基石】如何入门OCR技术?

入门OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术需要结合理论学习、工具实践和项目实战&#xff0c;以下是分步骤的学习指南&#xff0c;适合零基础学习者&#xff1a; 一、明确OCR技术的核心概念 OCR的基本原理 核心流程&#xf…...

数据库知识沉浸式游戏化学习设计研究

数据库知识沉浸式游戏化学习设计研究 摘要: 本研究旨在设计一款以数据库知识为主题的沉浸式游戏化学习系统。通过对数据库知识体系的深入剖析,结合游戏化学习理论,构建了一个多层次、多任务的游戏架构。玩家在游戏过程中需完成构建数据库结构、编写 SQL 查询等任务来解锁关…...

大疆无人机

在大疆上云API中&#xff0c;​​DRC 链路​​通常指 ​​Device-Cloud Remote Control Link&#xff08;设备-云端远程控制链路&#xff09;​​&#xff0c;它是无人机&#xff08;或设备&#xff09;与云端服务之间建立的​​实时控制与数据传输通道​​&#xff0c;用于实现…...

撤回不了一点 v1.0.2,支持微信QQ钉钉飞书等消息防撤回

如今生活节奏快得飞起&#xff0c;社交软件和工作通讯软件成了咱日常交流的核心阵地。大家肯定都有过这些闹心事儿&#xff1a;和朋友聊得正嗨&#xff0c;对方突然撤回一条消息&#xff0c;好奇心瞬间爆棚&#xff0c;却怎么也看不到撤回的内容&#xff1b;工作群里关键信息刚…...

什么是Git?

“Git”是目前非常火、广泛使用的版本控制系统&#xff0c;尤其在软件开发领域中扮演着核心角色。 一、什么是Git&#xff1f;它到底是什么&#xff1f; Git 是一种版本控制系统&#xff08;Version Control System, VCS&#xff09;。它的主要作用是帮助开发者管理“代码的不…...

微信小程序 自定义图片分享-绘制数据图片以及信息文字

一 、需求 从数据库中读取头像&#xff0c;姓名电话等信息&#xff0c;当分享给女朋友时&#xff0c;每个信息不一样 二、实现方案 1、先将数据库中需要的头像姓名信息读取出来加载到data 数据项中 data:{firstName:, // 姓名img:, // 头像shareImage:,// 存储临时图片 } 2…...

langchain提示词的使用

一、概述 提示词是指向人工智能大模型提供的输入信息&#xff0c;通常包含关键词、问题或指令&#xff0c;可以引导大模型生成与用户期望相符的回应。我们在豆包&#xff0c;DeepSeek等大模型中输入的问题都可以认为一个简单的提示词&#xff0c;不过为了真正得到我们需要的结…...

C语言| extern的用法作用

C语言| 局部变量、全局变量 extern定义的变量&#xff0c;只对全局变量有用。 掌握extern的用法及其作用。extern主要用于在不同.c文件间扩展全局变量的作用范围。 扩展全局变量的使用范围&#xff0c;操作方法&#xff1a; 1 在一个文件内扩展全局变量的使用范围 全局变量…...

Rust 环境变量管理秘籍:从菜鸟到老鸟都爱的 dotenv 教程

前言 写代码的你,是否遭遇过这些灵魂拷问: “我现在在哪个环境?开发?测试?还是直接在生产线上裸奔?”“少写一个 .env,测试脚本在数据库里上演清空大法,客户当场破防。”“每次手动设置 RUST_ENV,命令敲到一半就开始怀疑人生,还怕输错一个字符引发灭世级事故。”别慌…...