Linux工具篇 | Linux diff与git补丁文件的生成与使用

Patch和Git打补丁学习笔记 1.Linux patch命令 Linux patch命令用于修补文件。 patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。 patch常用选项: -r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应... 阅读详情

一、diff 命令生成的补丁

(1)补丁文件的生成

在某一目录下新建目录patch-test-new与patch-test-old:

~/Study/patch$ ls
patch-test-new  patch-test-old

分别在目录patch-test-new与patch-test-old创建test.c内容如下:

~/Study/patch/patch-test-new$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    return 0;
}
~/Study/patch/patch-test-old$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}

可以看出目录patch-test-new下的test.c多了一行打印!下面回到两个目录的顶层目录下,执行如下命令生成补丁文件:

~/Study/patch$ diff -urN patch-test-old/ patch-test-new/ > patch-test.patch

diff参数选项的作用:

  • -u:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位
  • -r:表示递归比较各个子目录下的文件
  • -N:将不存在的文件当作空文件

另外有两个参数也可能会用到:

  • -w:忽略对空格的比较
  • -B:忽略对空行的比较

(2)补丁文件的内容

~/Study/patch$ cat patch-test.patch 
diff -urN patch-test-old/test.c patch-test-new/test.c
--- patch-test-old/test.c	2020-10-10 20:09:49.050955538 +0800
+++ patch-test-new/test.c	2020-10-10 20:10:50.174934326 +0800
@@ -3,5 +3,6 @@
 int main()
 {
     printf("hello world");
+    printf("neutionwei");
     return 0;
 }

第一部分为第1行,它是制作补丁所使用的命令,后面的是两个工程目录的文件。

第二部分为第2、3行,“---”表示原始文件,“+++”表示修改过的文件。

剩下的是第三部分,“@@ -3,5 +3,6 @@”中的“-3,5”表示原始文件的第3行到第5行,“+3,6”表示修改过的文件的第3行到第6行。两者之差的内容即为修改的内容,其中减号(“-”)表示删除,加号(“+”)表示添加。

(3)打补丁

进入到目录patch-test-old,执行如下命令打补丁:

~/Study/patch/patch-test-old$ patch -p1 < ../patch-test.patch

再次查看test.c,发现与目录patch-test-old的test.c内容一致:

~/Study/patch/patch-test-old$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    return 0;
}

(4)卸载补丁

进入到目录patch-test-old,执行如下命令卸载补丁:

~/Study/patch/patch-test-old$ patch -p1 < ../patch-test.patch 
patching file test.c

再次查看test.c,发现内容变回到最初:

~/Study/patch/patch-test-old$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    return 0;
}

二、git 生成的补丁

新建目录并初始化git仓库:

~/Study/git-patch$ git init
Initialized empty Git repository in /home/book/Study/git-patch/.git/
~/Study/git-patch$ git status 
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)
~/Study/git-patch$ cp ../patch/patch-test
patch-test-new/   patch-test-old/   patch-test.patch  
~/Study/git-patch$ cp ../patch/patch-test-
patch-test-new/ patch-test-old/ 
~/Study/git-patch$ cp ../patch/patch-test-old/test.c .
~/Study/git-patch$ ls
test.c
~/Study/git-patch$ git status 
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	test.c

nothing added to commit but untracked files present (use "git add" to track)

提交三个commit: 

~/Study/git-patch$ git add test.c 
~/Study/git-patch$ git commit -m "create a test.c file"
[master (root-commit) 5458a79] create a test.c file
 1 file changed, 7 insertions(+)
 create mode 100644 test.c
/Study/git-patch$ git log
commit 5458a799aef9ab14942b93be872ec3074261efff
Author: NeutionWei <1037508099@qq.com>
Date:   Sun Oct 11 10:34:05 2020 +0800

    create a test.c file

...................................................................................

~/Study/git-patch$ git log
commit d29174b17bbd285ededeb88b26875a90673bec71
Author: NeutionWei <1037508099@qq.com>
Date:   Sun Oct 11 10:39:40 2020 +0800

    add csdn blog https address

commit 9f1e6d397683fb38fd73c9eeb04f43364ca8fc9e
Author: NeutionWei <1037508099@qq.com>
Date:   Sun Oct 11 10:38:10 2020 +0800

    add printf neutionwei

commit 5458a799aef9ab14942b93be872ec3074261efff
Author: NeutionWei <1037508099@qq.com>
Date:   Sun Oct 11 10:34:05 2020 +0800

    create a test.c file

(1)git format-patch 命令生成的补丁

~/Study/git-patch$ git format-patch d29174b17bbd285ededeb88b26875a90673bec71 -2
0001-add-printf-neutionwei.patch
0002-add-csdn-blog-https-address.patch

查看补丁文件:

~/Study/git-patch$ ls
0001-add-printf-neutionwei.patch  0002-add-csdn-blog-https-address.patch  test.c
~/Study/git-patch$ cat 0001-add-printf-neutionwei.patch 
From 9f1e6d397683fb38fd73c9eeb04f43364ca8fc9e Mon Sep 17 00:00:00 2001
From: NeutionWei <1037508099@qq.com>
Date: Sun, 11 Oct 2020 10:38:10 +0800
Subject: [PATCH 1/2] add printf neutionwei

---
 test.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test.c b/test.c
index 73a8f3a..b237ba7 100644
--- a/test.c
+++ b/test.c
@@ -3,5 +3,6 @@
 int main()
 {
     printf("hello world");
+    printf("neutionwei");
     return 0;
 }
-- 
2.7.4


(2)git diff 命令生成的补丁

~/Study/git-patch$ git diff d29174b17bbd285ededeb88b26875a90673bec71 9f1e6d397683fb38fd73c9eeb04f43364ca8fc9e > test-remove-address.diff
~/Study/git-patch$ cat test-remove-address.diff 
diff --git a/test.c b/test.c
index 2e1293f..b237ba7 100644
--- a/test.c
+++ b/test.c
@@ -4,6 +4,5 @@ int main()
 {
     printf("hello world");
     printf("neutionwei");
-    printf("https://blog.youkuaiyun.com/Neutionwei");
     return 0;
 }
~/Study/git-patch$ git diff 9f1e6d397683fb38fd73c9eeb04f43364ca8fc9e d29174b17bbd285ededeb88b26875a90673bec71 > test-add-address.diff
~/Study/git-patch$ cat test-add-address.diff 
diff --git a/test.c b/test.c
index b237ba7..2e1293f 100644
--- a/test.c
+++ b/test.c
@@ -4,5 +4,6 @@ int main()
 {
     printf("hello world");
     printf("neutionwei");
+    printf("https://blog.youkuaiyun.com/Neutionwei");
     return 0;
 }

 可见它是从commit前后顺序的对比来生成补丁文件的!


(3)git apply命令打补丁

a、diff文件打补丁

查看补丁文件是否可以使用,若终端无打印则表示可以使用:

~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    printf("https://blog.youkuaiyun.com/Neutionwei");
    return 0;
}
~/Study/git-patch$ git apply --check test-add-address.diff
error: patch failed: test.c:4
error: test.c: patch does not apply
~/Study/git-patch$ git apply --check test-remove-address.diff

打补丁:

~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    printf("https://blog.youkuaiyun.com/Neutionwei");
    return 0;
}
~/Study/git-patch$ git apply test-remove-address.diff
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    return 0;
}

可见 printf("https://blog.youkuaiyun.com/Neutionwei"); 语句被去掉了!


b、patch文件打补丁

首先切换到最初的commit:

~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    printf("https://blog.youkuaiyun.com/Neutionwei");
    return 0;
}

~/Study/git-patch$ git checkout 5458a799aef9ab14942b93be872ec3074261efff
Note: checking out '5458a799aef9ab14942b93be872ec3074261efff'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 5458a79... create a test.c file
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}

检查补丁并打补丁:

~/Study/git-patch$ git apply --check 0001-add-printf-neutionwei.patch
~/Study/git-patch$ git apply 0001-add-printf-neutionwei.patch
~/Study/git-patch$ cat test.c
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    return 0;
}

去除补丁:

~/Study/git-patch$ git apply -R 0001-add-printf-neutionwei.patch
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}

(4)git am命令打补丁

一次性打上所有patch文件:

~/Study/git-patch$ ls
0001-add-printf-neutionwei.patch        test-add-address.diff  test-remove-address.diff
0002-add-csdn-blog-https-address.patch  test.c
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}
~/Study/git-patch$ git am --abort
~/Study/git-patch$ git am *.patch
Applying: add printf neutionwei
Applying: add csdn blog https address
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    printf("https://blog.youkuaiyun.com/Neutionwei");
    return 0;
}

单独打某个patch文件:

~/Study/git-patch$ ls
0001-add-printf-neutionwei.patch        test-add-address.diff  test-remove-address.diff
0002-add-csdn-blog-https-address.patch  test.c
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    return 0;
}
~/Study/git-patch$ git am --abort
~/Study/git-patch$ git am 0001-add-printf-neutionwei.patch
Applying: add printf neutionwei
~/Study/git-patch$ git am 0002-add-csdn-blog-https-address.patch
Applying: add csdn blog https address
~/Study/git-patch$ cat test.c 
#include <stdio.h>

int main()
{
    printf("hello world");
    printf("neutionwei");
    printf("https://blog.youkuaiyun.com/Neutionwei");
    return 0;
}

参考资料:Git补丁 - mic_yx - 博客园

                  Git 生成补丁与打补丁(生成Patch和打Patch) - 简书

                  Git 打补丁-- patch 和 diff 的使用(详细) - 简书

                  如何使用git 生成patch 和打入patch_liuhaomatou的专栏-优快云博客

CF鼠标宏防封指南:手把手教你调校罗技G HUB压枪脚本的延迟与随机数 本文详细解析了如何通过罗技G HUB的Lua脚本功能调校鼠标宏,实现拟真操作体验。重点介绍了随机数应用、动态后坐力补偿和智能操作序列等高级技术,帮助玩家在不违反游戏规则的前提下提升操作精度。 阅读详情

相关推荐

gitlab远程子仓库配置SSH - 保姆级教程

在网上搜索了一些方法,但是不够详细,走了好多弯路,所以记录下配置SSH的详细过程吧。

是菠萝的博客 1万+

linux命令diff和patch实例(1)

diff命令最常用的是比较文件目录或者文件 然后输出到文本文件显示处理 一目了然 (1)diff -urN 文件夹1文件夹2 > 文件夹1to文件夹2.patch -urN 这个选项为组合选项 ”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位 “-r“:表示递归比较各个子目录下的文件 “-N“:将不存在的文件当作空文件 这种组合运用一般情况是工程项目...

dfl448866的专栏 622

D触发器(D Flip-Flop)与D锁存器(D Latch)

在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。

weixin_65190179的博客 9158

Linux使用diff和patch制作和安装补丁实例

实例a – 制作补丁 命令:diff -urN linux-3.4.2 linux-3.4.2-my > linux-3.4.2-my.patch说明:当前路径为:./ 。该路径(./ )下有 linux-3.4.2 目录,其是linux-3.4.2的源码压缩包解压所得(linux-3.4.2源码未做任何修改的)。该路径(./ )下有 linux-3.4.2-my 目录,其是由l

sdd220的博客 1449

支持找回微信删除好友!一款人人可用的全能微信数据分析工具

找回删除好友、查看删除记录、恢复聊天信息....

1724

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3162

打补丁,生成.diff文件

自己的理解,仅供参考,欢迎指正。补丁的话,在我看来就是方便评审,更方便看修改代码吧。

m0_65683419的博客 1384

[官方培训]22-UE资产优化 Epic 肖月 笔记

Nanite+Lumen目标:面向TA,美术,不影响视觉的前提下,优化运行和编辑效率引擎:UE5.1延迟管线平台:主流PC,Windows 10 with DX12。

Tcohneyn的博客 1574

diff用法

1.diff -urN old/ new/ > mysoft.patch 参数 -u 表示使用 unified 格式,-r 表示比较目录,-N 表示将不存在的文件当作空文件处理,这样新添加的文件也会出现在patch文件中。 然后在需要应用patch的地方使用下述命令即可: patch -p0 2.diff的 -y 命令(长格式为 –side-by-side)可以将屏幕分成左右

软件工程 1235

【MATLAB】绘制泽尼克多项式

上次只给了公式没有给代码,很多小伙伴表示不是很认可。今天直接把代码发上来了。

HPC_ZY 5574

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 998

diff 命令用法--如何打补丁【原创--学习笔记】

diff 命令用法 1、”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位 2、“-r“:表示递归比较各个子目录下的文件 3、“-N“:将不存在的文件当作空文件 4、“-w“:忽略对空格的比较 5、“-B“:忽略对空行的比较 例如:假设Linux-2.6.22.6目录中是原始的内核,Linux-2.6.22.6_ok目录中是修改后的内核,可以使用以下命令制作补丁文件l...

weixin_33721427的博客 290

《QGIS快速入门与应用基础》294:双地图框布局(真彩色+假彩色对比)

摘要 本文详细介绍了在QGIS中创建专业级遥感影像对比地图的完整流程。作者作为时空智能领域专家,重点讲解了双地图框布局的实现方法,通过真彩色与假彩色影像的同步对比,满足学术研究和工程应用需求。文章包含三个核心部分:1) 前期准备工作,包括图层复制、标准化命名和参数校验;2) 布局创建与页面设置,详细说明了A4横向布局的参数配置;3) 双地图框同步技术,提供了复制粘贴法和手动设置两种实现方案。教程特别强调图层锁定、比例尺固定等关键操作,确保对比图的专业性和准确性,适合GIS从业人员和遥感研究者学习参考。

LuckyHanMo的博客 357

<Linux>使用quilt工具制作补丁(patch)文件

Linux使用quilt工具制作补丁文件前言一、安装quilt工具二、一个需要被打补丁的文件三、quilt new命令创建初始补丁文件四、quilt add命令添加目标文件五、修改目标文件代码内容六、quilt refresh命令生成补丁文件七、测试结果总结 前言 patch是Linux项目编程下常用的工具。 例如:      一份有Makefile管理的驱动代码文件,每次编译时会有Makefile规则从指定目录下解压到固件目录下,此时在驱动代码中添加了一

weixin_43580872的博客 4911

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

『Linux』补丁制作指南

我们在参与某些开源项目的过程当中,经常会遇到漏洞之类的问题,需要我们打补丁解决。尤其是Linux源码,源码代码量较多,在修改完内核并发布新内核的时候,基本采用补丁的方式进行发布,而不是将整个内核打包发布我们使用补丁发布有很多好处补丁体积很小,方便成员获取补丁方便保存,本地可以保存多个版本内核使用方便快捷,直接将补丁放到源码对应目录,然后执行相应命令即可注:博主本人并没有给 linux 提过补丁,本文仅为学习提交补丁的记录,希望对大家有帮助,勿喷如果了解这方面的佬,也欢迎评论区交流。

ReturnTmp的博客 2187

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Linux】patch 命令应用补丁文件

Linux补丁管理简明指南 本文介绍了Linux系统中patch命令的使用方法,重点演示了如何为Java项目创建和应用补丁文件: 核心工具 使用diff -u生成统一格式补丁文件 通过patch命令应用补丁 支持-R选项撤销补丁 Java项目示例 展示了从简单计算器类到添加乘除功能的完整补丁过程 包含补丁文件生成、应用验证和单元测试 实用技巧 目录级补丁处理方法 常见选项说明(-pN、--dry-run等) 补丁管理最佳实践建议 本文适合开发人员快速掌握Linux环境下代码补丁的创建与应用,特别适合参与开源

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用 diff、patch 生成生效补丁文件

最近几天再看uboo和linux内核源码,上来第一条:你要会打补丁吧! 之前用git时用过diff,和Linux命令中的diff其实是一个东西。当我们比较同一个软件的不同版本时,会用到diff。 diff一般处理纯文本文件,且以一行为单位进行比较处理的。先来看看diff的usage(详细用法可以自行man diff): diff [-bBi] from-file to-file 选项和参数: from-file :作为原始比对文档的档名; ...

2008

手把手教你如何给『Linux』打补丁

我们在参与某些开源项目的过程当中,经常会遇到漏洞之类的问题,需要我们打补丁解决。

瓦罗兰特顶级C位的博客 5377

Linux下diff的操作详解

​ 总述 Linux diff命令用于比较文件的差异。diff以逐行的方式,比较文本文件的异同处。特别是比较两个版本不同的文件,如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。diff命令可以同时输出成补丁文件,并且Linux中还有一个patch命令,可以依据diff生成的.patch补丁文件,将a.c与b.c两个文件差异部分更新到需要修改的文件。此外diff在SVN 、GIT、CVS等版本控制工具中也是不可获取的一部分。 下面我就详细...

良知犹存的博客 4654

linux下生成补丁以及打补丁,patch,diff,

最近师傅给布置了任务让我生成补丁以及把补丁文件打入,说实话搞得我真的很崩溃,出现各种问题,特别痛苦,好在师傅帮忙解决了,我也知道自己的问题是什么了,我对流程以及出错不知道怎么去找,我一定得把它总结下来。 我在windows下生成的patch,在linux下也可以,没啥区别,就是网速很慢。 第一:因为要在git仓库中下载,所以要安装git工具, 参考链接:https://blog.youkuaiyun.com/duoduo18up/article/details/80716161 第二步:工具完成之后建一个自己的文件夹要

qq_41348629的博客 1084

Git之diff和git diff生成patch/打patch(二)

一、Linux的diff生成patch和打patch 1、单个文件生成patch # diff -up xxx/a.txt yyy/b.txt > mypatch_1 参数解释: -u:显示有差异的前后3行信息 -p:显示代码所在的c函数的信息 2、多个文件生成patch # diff -uprN xxx/aaa/ yyy/bbb > mypatch_2 比较xx

Android系统攻城狮 1万+

linux笔记 diff及patch的制作与使用

此处的-p1参数,是因为新旧文件夹中的改动通常在new文件夹和old文件夹里,需要忽略首层的old和new文件夹,将内容物替换。empty 如果发现空文件,则删除,常见于需要删除旧文件夹中某个旧文件整体的情况,以及恢复补丁时删除之前新写的无效文件。empty 如果发现空文件,则删除,常见于需要删除旧文件夹中某个旧文件整体的情况,以及恢复补丁时删除之前新写的无效文件。默认为输出每个需要修改的代码块的前后3行,如需指定行数,则使用-uNUM,更改NUM为所需行数。

m0_56661101的博客 2753

Linux diff --比较两个文件并输出不同之处

diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。 1

老莫小小朋友 12万+

补丁工具Quilt与Git

quilt git patch 补丁工具 Linux 内核

Linux/OpenWrt 2903

git使用别人的补丁

用diff导出差异文件这里的b是别人机器上我要同步的所有代码所在根目录创建diff文件的常用方法如何获取commit sha1 idgit log。

qq_44927248的博客 459

Linux内核补丁与patch/diff使用详解

一、Linux内核版本类型及patch简介: 1) 2.6.x为基础版本,patch位置:    http://www.kernel.org/pub/linux/kernel/v2.6/      2) 2.6.x.y为2.6.x基础版本之上派生出来的修正版本,称为-stable内核版本,patch位置:    http://www.kernel.org/pub/li

XinYu1234789的专栏 911
上一篇: Linux系统安装 | Docker安装最新版本Ubuntu并启动容器
下一篇: 2020年1024程序员节日快乐
嵌入式逍遥
嵌入式逍遥 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄9年 7万+粉丝 237原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值