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

Android系统开发(十九):无缝拉伸的艺术——9-Patch 可绘制对象详解

引言

在移动开发中,背景、标题以及其他界面元素的设计质量直接影响用户体验。然而,如何让图片适应不同分辨率设备,成为开发者常常头疼的问题。这时,9-Patch 闪亮登场!它不仅可以无缝拉伸,还能保持视觉效果完美如初。本篇将以幽默风趣的方式带你全面了解9-Patch技术,告诉你如何像UI大师一样,把图片玩出花。
在这里插入图片描述


一、Drawable

在Android开发中,可绘制对象(Drawable)是定义界面元素外观的重要资源之一。9-Patch 是一种特殊的可绘制资源,通过在图像四周定义拉伸区域,使图片在不同尺寸屏幕上都能优雅地显示。比起简单粗暴的缩放,9-Patch 更注重细节美化,支持灵活调整内容区域。用9-Patch设计背景,就像用弹力裤代替死板的牛仔裤——舒适贴合,一步到位。


二、概念

9-Patch图像是一种扩展的PNG文件,在图像四周使用1像素的黑色边框定义可拉伸区域和内容显示区域。

  • 可拉伸区域:黑线指定可以拉伸的部分,避免重要元素被拉伸变形。
  • 内容区域:定义控件的内容展示范围,比如文本对齐的边界。

通过这些边界信息,Android可以在运行时动态调整图片尺寸,让它们看起来既不失真又能适配多种屏幕,简直是UI设计中的“魔法棒”。

在这里插入图片描述


三、调试

1. 工具与环境
  • Android Studio
  • 9-Patch工具(自带于 Android SDK 中的 Draw 9-patch)
  • 一张PNG图片
2. 实现步骤
  1. 准备图片:选择一张无透明边的PNG图片。
  2. 打开工具:启动Draw 9-patch工具,加载图片。
  3. 绘制黑线:在四周拉出可拉伸和内容区域的边界线。
  4. 预览调整:查看拉伸效果,确保图片比例合理。
  5. 保存文件:保存为.9.png格式,加入项目。
  6. 引用资源:在XML中使用<ImageView><Button>引用。
<ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/example.9" />

四、示例

案例 1:聊天气泡背景的实现

在聊天应用中,气泡背景需要根据文本长度动态调整,同时保持圆角设计。

1. 设计素材准备
创建一个透明背景的 PNG 图片,设计成四角圆润的矩形。

2. 生成 9-Patch 图

  1. 打开 Draw 9-patch 工具(在 Android SDK 中)。
  2. 加载 PNG 图片,开始绘制:
    • 左边黑线:定义竖直方向可拉伸区域,只包含中间部分。
    • 上边黑线:定义水平方向可拉伸区域,只包含中间部分。
    • 右边黑线:定义内容区域的右边界。
    • 下边黑线:定义内容区域的底边界。
  3. 保存为 chat_bubble.9.png

3. 使用代码
chat_bubble.9.png 放入项目的 res/drawable 文件夹,并在布局文件中使用:

<TextViewandroid:id="@+id/chat_bubble"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/chat_bubble"android:padding="10dp"android:text="Hello, 9-Patch!"android:textSize="16sp"android:textColor="@color/black" />

4. 效果展示
运行后,无论文本多长,气泡背景都能保持四角圆润,内容区域完美适配。


案例 2:按钮背景动态适配

在按钮设计中,需要根据按钮大小自动调整背景,同时保持边框和阴影效果。

1. 设计素材准备
设计一个矩形按钮图片,带有渐变色和阴影效果。

2. 生成 9-Patch 图

  1. 打开 Draw 9-patch 工具,加载按钮图片。
  2. 绘制:
    • 左右两侧黑线:定义横向可拉伸区域,避开阴影边界。
    • 上下两侧黑线:定义竖向可拉伸区域,仅拉伸按钮中间部分。
    • 内容区域黑线:绘制文字显示范围,避开按钮边框。
  3. 保存为 button_bg.9.png

3. 使用代码
button_bg.9.png 放入项目,并在 XML 布局中定义按钮:

<Buttonandroid:id="@+id/custom_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/button_bg"android:text="Click Me!"android:padding="12dp"android:textColor="@color/white"android:textSize="18sp" />

4. 效果展示
运行后,按钮背景可根据按钮大小动态拉伸,边框和阴影始终保持一致。


案例 3:对话框边框适配

在应用中,弹出对话框需要设计一个带边框的背景,确保边框样式不变且适配内容。

1. 设计素材准备
设计一个对话框背景图片,带有固定宽度的边框和透明内容区域。

2. 生成 9-Patch 图

  1. 打开 Draw 9-patch 工具,加载图片。
  2. 绘制:
    • 左右两侧黑线:定义横向可拉伸区域,避开边框部分。
    • 上下两侧黑线:定义竖向可拉伸区域,避开边框部分。
    • 内容区域黑线:定义文字或控件的显示范围,确保不与边框重叠。
  3. 保存为 dialog_bg.9.png

3. 使用代码
在对话框中引用背景:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Dialog Title").setMessage("This is a dialog with a custom 9-Patch background.").setPositiveButton("OK", null);// 获取 AlertDialog 对象
AlertDialog dialog = builder.create();// 设置 9-Patch 背景
dialog.getWindow().setBackgroundDrawableResource(R.drawable.dialog_bg);
dialog.show();

4. 效果展示
运行后,对话框边框始终保持完美宽度,内容适配居中显示。


结语

这些案例展示了 9-Patch 在不同场景中的实际应用。通过灵活定义拉伸和内容区域,9-Patch 帮助开发者轻松实现高质量的 UI 适配效果。在项目中,这种技术能显著提升界面美观度和用户体验,堪称 UI 开发的必备技能!

五、踩坑

  1. 图片边界黑线漏标:导致图片无法正常拉伸。
  2. 内容区域过小:文字可能显示不完整。
  3. 过度拉伸:确保实际显示效果符合设计预期。

六、特性

  • 优点:简单、灵活、高效。
  • 缺点:设计过程需要细心,工具依赖手动操作。

七、快稳省

使用9-Patch后,UI组件内存占用更低,拉伸性能显著提升,适配更自然。


八、展望

随着Android设备屏幕尺寸多样化,9-Patch技术仍将是UI适配的重要工具。未来或许会融入AI辅助设计,让开发者的工作更高效。

9-Patch 是提升 Android UI 体验的强大工具。它的灵活性和高效性让背景设计变得更加简单优雅。尝试它,定能让你的界面设计更上一层楼!

参考资料

以下是本文撰写过程中参考的相关书籍、技术文档和在线资源,帮助您深入理解和掌握9-Patch的设计与实现:

书籍
  1. 《Android编程权威指南(第4版)》

    • 作者:[美] Bill Phillips, Chris Stewart
    • 介绍了Android开发的基础知识和进阶技术,对Drawable的应用和9-Patch的使用有详细的讲解。
    • 推荐章节:第9章 Creating UI with Drawables
  2. 《Android开发艺术探索》

    • 作者:任玉刚
    • 国内知名的Android开发进阶读物,其中对Drawable资源管理和优化进行了深入探讨,适合有经验的开发者参考。
  3. 《JAVA编程思想(第4版)》

    • 作者:[美] Bruce Eckel
    • 虽然是Java经典书籍,但对程序设计思想的讲解为9-Patch等技术应用提供了重要参考思路。

技术文档
  1. 官方文档:Draw 9-patch tool

    • 链接
    • Android官方指南,详细描述了如何使用9-Patch工具,包括拉伸区域定义和保存方法。
  2. 官方文档:Drawable Resources

    • 链接
    • 介绍了Drawable资源的使用方式,涵盖了Bitmap、Vector、9-Patch等多种类型的绘制资源。

技术博客与社区资源
  1. CSDN博客:9-Patch图详解与实战

    • 链接
    • 国内技术社区中关于9-Patch的高质量教程,详细讲解了工具的使用技巧及典型案例。
  2. Stack Overflow

    • 链接
    • 全球开发者交流的热门平台,通过9-Patch标签,可以找到大量实践问题和解决方案。
  3. GitHub项目:Drawable9Patch

    • 链接
    • 开源项目中涉及9-Patch的真实案例,开发者可以直接下载运行并参考代码实现。

课程与视频资源
  1. Google Android Developers 官方视频

    • YouTube链接
    • 包含多个与Drawable相关的视频教程,通俗易懂,适合初学者。
  2. 慕课网:Android UI开发进阶

    • 链接
    • 课程中专门讲解了如何使用9-Patch制作自适应图片背景,并结合案例进行实战演练。

工具与插件
  1. Draw 9-Patch 工具

    • Android SDK 自带工具,用于编辑和预览9-Patch图像的拉伸效果。
  2. 在线9-Patch编辑器

    • 链接
    • 一个轻量级在线工具,支持快速创建和调整9-Patch图像。
  3. Android Asset Studio

    • 链接
    • 提供在线9-Patch图生成器,可快速完成资源创建。

参考论文
  1. “Resource Management in Mobile Applications”

    • 研究如何高效管理移动应用中的资源,包括图片资源的优化方案。
  2. “Optimizing UI Performance for Android Devices”

    • 探讨了UI性能优化技巧,其中提到9-Patch的性能优势。

结语

这些参考资料涵盖了理论知识、工具教程和实践案例,帮助开发者全面掌握9-Patch的应用技巧。如果您希望进一步了解,请参考上述资源,或探索相关技术社区中的最新讨论与分享。

欢迎关注GongZhongHao,码农的乌托邦,程序员的精神家园!

相关文章:

Android系统开发(十九):无缝拉伸的艺术——9-Patch 可绘制对象详解

引言 在移动开发中&#xff0c;背景、标题以及其他界面元素的设计质量直接影响用户体验。然而&#xff0c;如何让图片适应不同分辨率设备&#xff0c;成为开发者常常头疼的问题。这时&#xff0c;9-Patch 闪亮登场&#xff01;它不仅可以无缝拉伸&#xff0c;还能保持视觉效果…...

物联网网关Web服务器--CGI开发实例BMI计算

本例子通一个计算体重指数的程序来演示Web服务器CGI开发。 硬件环境&#xff1a;飞腾派开发板&#xff08;国产E2000处理器&#xff09; 软件环境&#xff1a;飞腾派OS&#xff08;Phytium Pi OS&#xff09; 硬件平台参考另一篇博客&#xff1a;国产化ARM平台-飞腾派开发板…...

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…...

Mellanox ConnectX 系列网卡的双驱动架构:以太网与 InfiniBand 的协同设计

在现代数据中心和高性能计算(HPC)环境中,网络硬件的性能和功能至关重要。Mellanox ConnectX 系列网卡以其卓越的性能和多功能性而闻名,支持从传统的以太网到高性能的 InfiniBand 网络协议。这种多功能性使得 Mellanox 网卡能够满足不同应用场景的需求,从常规的数据中心网络…...

【Java】阿里环球Antom支付对接

阿里环球Antom支付对接 线上文档地址&#xff1a; GitHub&#xff1a;https://github.com/alipay/global-open-sdk-java 文档&#xff1a;https://global.alipay.com/docs/ac/ams_zh-cn/session_cashier maven&#xff1a; <!--阿里国际支付--><dependency><g…...

【vim】vim编辑器如何设置行号

vim编辑器如何设置行号 一、**临时设置行号**二、永久设置行号2.1. **用户配置文件方式&#xff08;针对当前用户&#xff09;**2.2. **全局配置文件方式&#xff08;谨慎使用&#xff0c;会影响所有用户&#xff09;** 在Vim中设置行号有以下两种常见的方法&#xff1a; 一、…...

爬虫基础之爬取某站视频

目标网址:为了1/4螺口买小米SU7&#xff0c;开了一个月&#xff0c;它值吗&#xff1f;_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…...

2024嵌入式系统的未来发展与技术洞察分享

时间如白驹过隙&#xff0c;不知不觉又是一年&#xff0c;这一年收获满满。接下来&#xff0c;将本年度对技术的感悟和洞察分析如下&#xff0c;希望对大家有所帮助。 在过去几十年里&#xff0c;嵌入式系统技术迅速发展&#xff0c;成为现代电子设备和智能硬件的核心组成部分。…...

[微服务]注册中心优化

环境隔离 企业实际开发中&#xff0c;往往会搭建多个运行环境&#xff0c;例如&#xff1a; 开发环境测试环境预发布环境生产环境 这些不同环境之间的服务和数据之间需要隔离。 还有的企业中&#xff0c;会开发多个项目&#xff0c;共享nacos集群。此时&#xff0c;这些项目…...

Leetcode 3426. Manhattan Distances of All Arrangements of Pieces

Leetcode 3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路2. 代码实现 题目链接&#xff1a;3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路 这道题很惭愧&#xff0c;一开始没有搞定&#xff0c;后来看了答案想了想&#xff…...

【重庆市乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移内容测评

标题中的“最新重庆市乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移最新”指的是一个地理信息系统&#xff08;GIS&#xff09;的数据集&#xff0c;特别设计用于ArcGIS软件。这个数据集包含了重庆市所有乡镇的边界信息&#xff0c;以Shapefile&#xff08;.shp…...

基于ChatGPT的论文写作辅助工具研究

**基于ChatGPT的论文写作辅助工具研究** **摘要**&#xff1a; 随着人工智能技术的飞速发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域取得了显著进步。ChatGPT作为OpenAI最新推出的生成式预训练Transformer模型&#xff0c;在文本生成、对话系统等方面展现出…...

定时器setTimeout和setInterval

setTimeOut()异步 setInterval()异步...

PCL 部分点云视点问题【2025最新版】

目录 一、问题概述二、解决方案1、软件实现2、代码实现三、调整之后博客长期更新,本文最近更新时间为:2025年1月18日。 一、问题概述 针对CloudCompare软件处理过的pcd格式点云,在使用PCL进行特征点提取、配准等实验中最终显示结果出现点云位置偏差较大的问题,本博客给出解…...

Cursor 与常见集成开发环境(IDE)的优势对比

Cursor与常见集成开发环境&#xff08;IDE&#xff09;的优势对比 一、AI 辅助编程能力 强大的代码生成功能&#xff1a; Cursor&#xff1a; 以其内置的强大 AI 辅助编程功能为核心优势。用户可以通过输入自然语言描述&#xff0c;快速生成各种编程语言的代码。例如&#xf…...

TDengine 做为 FLINK 数据源技术参考手册

Apache Flink 是一款由 Apache 软件基金会支持的开源分布式流批一体化处理框架&#xff0c;可用于流处理、批处理、复杂事件处理、实时数据仓库构建及为机器学习提供实时数据支持等诸多大数据处理场景。与此同时&#xff0c;Flink 拥有丰富的连接器与各类工具&#xff0c;可对接…...

不重启JVM,替换掉已经加载的类

不重启JVM&#xff0c;替换掉已经加载的类 直接操作字节码 使用ASM框架直接操作class文件&#xff0c;在类中修改代码&#xff0c;然后retransform就可以了 下边是BTrace官方提供的一个简单例子&#xff1a; package com.sun.btrace.samples;import com.sun.btrace.annotati…...

axios的使用总结

一、Axios 简介 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js。在 Vue 项目中&#xff0c;它主要用于发送 HTTP 请求来获取数据&#xff08;如从 API 获取数据&#xff09;或者提交数据&#xff08;如用户登录、注册等表单数据&#xff09;。 二…...

使用 F12 查看 Network 及数据格式

在浏览器中&#xff0c;F12 开发者工具的 “Network” 面板是用于查看网页在加载过程中发起的所有网络请求&#xff0c;包括 API 请求&#xff0c;以及查看这些请求的详细信息和响应数据的。以下以常见的 Chrome 浏览器为例&#xff0c;介绍如何使用 F12 控制台查看 Network 里…...

HTML<img>标签

例子 如何插入图片&#xff1a; <img src"img_girl.jpg" alt"Girl in a jacket" width"500" height"600"> 下面有更多“自己尝试”的示例。 定义和用法 该<img>标签用于在 HTML 页面中嵌入图像。 从技术上讲&#x…...

Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普

引言&#xff1a; 今天我们聊聊Android生态中最“硬核”的话题&#xff1a;通用内核镜像&#xff08;GKI&#xff09;与内核模块接口&#xff08;KMI&#xff09;。这是内核碎片化终结者的秘密武器&#xff0c;解决了内核和供应商模块之间无尽的兼容性问题。为什么重要&#x…...

每日一刷——1.20——准备蓝桥杯

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目一 请统计某个给定范围[L, R]的所有整数中&#xff0c;数字2出现的次数。 比如给定范围[2, 22]&#xff0c;数字2在数2中出现了1次&#xff0c;在数12中出现1次&#xff0c;在数20中出现1次&a…...

知行合一:解决有心无力的问题,解决知易行难的问题,知行合一并不意味着事事都要合一,而是....

问题是什么&#xff1f; 想学习的时候&#xff0c;有手机阻碍我们。想戒掉手机短视频&#xff0c;卸载后&#xff0c;几天的时间&#xff0c;又下载了回来。制定了减肥计划&#xff0c;但就是不执行。明知道这样做是不对的&#xff0c;但依然行动不起来。 沉溺于各种各样的享…...

C++ Qt练习项目 日期时间数据 未完待续

个人学习笔记 新建项目 设计UI 实现组件功能 参考资料 4.7日期时间数据_哔哩哔哩_bilibili...

Golang学习笔记_28——工厂方法模式(实例)

Golang学习笔记_26——通道 Golang学习笔记_27——单例模式 Golang学习笔记_28——工厂方法模式 工厂方法模式&#xff08;实例&#xff09; package factory_method_demoimport "fmt"// Order 接口&#xff0c;定义订单的基本操作 type Order interface {Calculate…...

linux下springboot项目nohup日志或tomcat日志切割处理方案

目录 1. 配置流程 2. 配置说明 其他配置选项&#xff1a; 3. 测试执行 4. 手动执行 https://juejin.cn/post/7081890486453010469 通常情况下&#xff0c;我们的springboot项目部署到linux服务器中&#xff0c;通过nohup java -jar xxx.jar &指令来进行后台运行我们…...

SentencePiece和 WordPiece tokenization 的含义和区别

SentencePiece和 WordPiece tokenization 的含义和区别 SentencePiece 和 WordPiece 都是常用的分词(tokenization)技术,主要用于自然语言处理(NLP)中的文本预处理,尤其是在处理大规模文本数据时。它们都基于子词(subword)单元,能够将未登录词(out-of-vocabulary, O…...

视频修复最强算法 部署笔记2025

目录 模型下载: 模型: 原版保存的视频,vs code不播放: 模型下载: Release ProPainter V0.1.0 Release sczhou/ProPainter GitHub huggingface-cli download --resume-download lixiaowen/diffuEraser --local-dir /mnt/pfs/models/huggingface/models--lixiaowen--d…...

Java数据结构——优先队列

目录 引言1. 优先队列2. 优先队列的实现2.1 堆的概念2.2 堆的创建2.2.1 堆的向下调整2.3 堆的插入2.4 堆的删除 3. 总结 引言 前面一篇文章讲了二叉树&#xff0c;本篇将讲述数据结构中的优先队列&#xff0c;优先队列则需要用到完全二叉树来实现。 1. 优先队列 队列&#x…...

红外热成像之无人机载荷

电力巡检 相较于传统的人工电力巡线方式&#xff0c;无人机巡检能够在高空对人工难以达到或无法检测的设备进行检测&#xff0c;实现了电子化、信息化、智能化巡检&#xff0c;可以提高巡检的工作效率和应急抢险水平。 森林防火 无人机搭载红外光电系统能在森林高空进行全天候监…...

深入Spring Boot:自定义Starter开发与实践

引言 Spring Boot通过其强大的自动配置机制和丰富的Starter模块&#xff0c;极大地简化了Spring应用的开发过程。Starter模块封装了一组相关的依赖和配置&#xff0c;使得开发者可以通过简单的依赖引入&#xff0c;快速启用特定的功能。然而&#xff0c;除了使用Spring Boot提…...

MasterSAM downloadService任意文件读取(CVE-2024-55457)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

【Pytest】基础到高级功能的理解使用

文章目录 第一部分&#xff1a;Pytest 简介1.1 什么是 Pytest&#xff1f;1.2 Pytest 的历史1.3 Pytest 的核心概念1.4 Pytest 的特点1.5 为什么选择 Pytest&#xff1f; 第二部分&#xff1a;Pytest 的基本使用2.1 安装 Pytest2.2 编写第一个测试用例2.2.1 创建一个简单的测试…...

【Linux系统编程】—— 从零开始实现一个简单的自定义Shell

文章目录 什么是自主shell命令行解释器&#xff1f;实现shell的基础认识全局变量的配置初始化环境变量实现内置命令&#xff08;如 cd 和 echo&#xff09;cd命令&#xff1a;echo命令&#xff1a; 构建命令行提示符获取并解析用户输入的命令执行内置命令与外部命令Shell的主循…...

探索云原生可观测性:技术与团队协作的深度结合

TheNewStack 出品的电子书《Cloud Native Observability for DevOps Teams》读后感&#xff0c;老书新读&#xff0c;还是另有一番领悟。 阅读原文请转到&#xff1a;https://jimmysong.io/blog/cloud-native-observability-devops/ 最近读了 TheNewStack 发布的电子书《Cloud …...

Vue基础(2)

19、组件之间传递数据 组件与组件之间不是完全独立的&#xff0c;而是有交集的&#xff0c;那就是组件与组 件之间是可以传递数据的 传递数据的解决方案就是 props ComponentA.vue <template><!-- 使用ComponentB组件&#xff0c;并传递title属性 --><h3>…...

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用. 本地部署&#xff0c;注重隐私&#xff0c;简单高效的MYSQL审计平台。 它可以通过流程审批&#xff0c;实现真实线上环境sql的审核和执行&#xff0c;还可以回滚执行&#xff0c;能够确保线上SQL更新的可靠性…...

《鸿蒙Next应用商店:人工智能开启智能推荐与运营新时代》

在科技飞速发展的当下&#xff0c;鸿蒙Next系统的出现为操作系统领域带来了新的变革与机遇&#xff0c;而人工智能技术的融入更是让其应用商店的智能化推荐和运营迈向了一个全新的高度。 用户画像精准构建 在鸿蒙Next系统中&#xff0c;应用商店可以借助系统强大的权限管理和…...

SSTI注入

ssti漏洞成因 ssti服务端模板注入&#xff0c;ssti主要为python的一些框架 jinja2 mako tornado django&#xff0c;PHP框架smarty twig&#xff0c;java框架jade velocity等等使用了渲染函数时&#xff0c;由于代码不规范或信任了用户输入而导致了服务端模板注入&#xff0c;…...

根据经纬度查询地理位置信息API

API 概述 接口名称&#xff1a;查询地理位置信息V2接口类型&#xff1a;HTTP GET接口地址&#xff1a;https://api.kertennet.com/geography/locationInfo_v2请求编码格式&#xff1a;utf-8 请求说明 请求头部 标签类型必填说明参数示例Content-Typestring是请求的内容类型…...

【知识分享】PCIe5.0 TxRx 电气设计参数汇总

目录 0 引言 1 参考时钟--Refclk 2 发射端通道设计 3 发送均衡技术 4 接收端通道设计 5 接收均衡技术 6 结语 7 参考文献 8 扩展阅读 0 引言 PCI Express Base Specification 5.0的电气规范中&#xff0c;关键技术要点如下&#xff1a; 1. 支持2.5、5.0、8.0、16.0和3…...

Airsim 项目结构分析

Airsim 项目结构分析 本文只分析最核心的 AirLib 项目结构&#xff0c;以及其与 Unreal 项目的关系 假如已经根据 Airsim 主页&#xff0c;克隆了完整项目。 Build on Linux - AirSim 克隆源码 # go to the folder where you clone GitHub projects git clone https://git…...

STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态

STM32W5500以太网应用开发003_TCP服务器添加OLED&#xff08;u8g2&#xff09;显示状态 实验效果3-TCP服务器OLED1 拷贝显示驱动代码1.1 拷贝源代码1.2 将源代码添加到工程1.3 修改代码优化等级1.4 添加头文件路径1.5 修改STM32CubeMX工程 2 修改源代码2.1 添加头文件2.2 main函…...

SQLmap 注入-03 获得用户信息

1: Sqlmap 先进入库&#xff0c;然后进入table, 然后列出column: sqlmap -u "http://192.168.56.133/mutillidae/index.php?pageuser-info.php&usernamexiaosheng&passwordabc&user-info-php-submit-buttonViewAccountDetails" --batch -p username -D …...

Kafka 和 MQ 的区别

1.概述 1.1.MQ简介 消息中间件&#xff0c;其实准确的叫法应该叫消息队列&#xff08;message queue&#xff09;&#xff0c;简称MQ。其本质上是个队列&#xff0c;有FIFO的性质&#xff0c;即first in first out&#xff0c;先入先出。 目前市场上主流的MQ有三款&#xff…...

若依报错:无法访问com.ruoyi.common.annotation

无法访问com.ruoyi.common.annotation 若依的父工程的pom文件中设置了jdk为1.8&#xff0c;将idea的jdk也改为1.8即可。...

MCU、MPU、SOC、ECU、CPU、GPU的区别到底是什么

MCU、MPU、SOC、ECU、CPU、GPU的区别 参数MCUMPUSoCECUCPUGPU处理能力低至中中至高综合&#xff0c;视具体设计而定专用于汽车控制中至高高&#xff08;并行能力强&#xff09;集成度高低高高低&#xff08;需配合主板使用&#xff09;低&#xff08;通常作为外部设备&#xff…...

档案事业与数据要素之间有什么关系?

在数字时代背景下&#xff0c;档案事业正经历着前所未有的变革。随着大数据、云计算、人工智能等技术的快速发展&#xff0c;档案数据已成为重要的基础性战略资源和关键生产要素。那么档案事业与数据要素之间究竟有什么关系&#xff1f; 一、档案数据要素的内涵与价值 数据要…...

HarmonyOS NEXT:华为分享-碰一碰开发分享

随着科技的不断进步&#xff0c;智能手机和智能设备之间的互联互通变得越来越重要。华为作为科技行业的领军企业&#xff0c;一直致力于为用户提供更加便捷、高效的使用体验。HarmonyOS NEXT系统的推出&#xff0c;特别是其中的“碰一碰”功能&#xff0c;为用户带来了前所未有…...

nuxt3项目打包部署到服务器后配置端口号和开启https

nuxt3打包后的项目部署相对于一般vite打包的静态文件部署要稍微麻烦一些&#xff0c;还有一个主要的问题是开发环境配置的.env环境变量在打包后部署时获取不到&#xff0c;具体的解决方案可以参考我之前文章 nuxt3项目打包后获取.env设置的环境变量无效的解决办法。 这里使用的…...