自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(688)
  • 资源 (1)
  • 问答 (8)
  • 收藏
  • 关注

原创 PCB板 的A样件 B样件 sop样件

PCB板是一种电子元器件的载体,可以用于电路连接和电子元件的安装。SOP样件:是PCB板的最终版本,经过多次改进和验证后的成品。B样件:是PCB板的第二版样品,用于修正和改进A样件的问题。SOP样件是PCB板的最终版本,经过多次改进和验证后的成品。B样件是PCB板的第二版样品,用于修正和改进A样件的问题。A样件:是PCB板的第一版样品,用于验证设计和功能。PCB板是一种用于电路连接和电子元件安装的载体1。A样件是PCB板的第一版样品,用于验证设计和功能。

2024-04-18 16:43:49 73

原创 fstream ifsteam ofstream 介绍

ofstream(输出文件流)用于将数据从内存写入到硬盘文件中,即将数据从程序输出到文件。ifstream(输入文件流)用于将数据从硬盘文件读取到内存中,即将数据从文件输入到程序。可以使用ifstream来打开、读取和处理文件。总结来说,ofstream用于输出数据到文件,而ifstream用于从文件中读取数据。fstream(文件流)是ofstream和ifstream的结合,可以同时进行文件的读写操作。ofstream和ifstream是C++中用于文件操作的两个类。

2024-04-18 15:27:06 79

原创 有的.ssh/config的内容是自动生成的,为什么有的却需要自己配置

自动配置:有些SSH客户端工具(如OpenSSH)在首次连接远程主机时会自动创建一个默认的.ssh/config文件,并将连接信息保存在其中。需要注意的是,无论是自动生成的还是手动配置的.ssh/config文件,都需要遵循一定的格式和语法规则。多个身份验证方式:用户可能需要在不同的远程主机上使用不同的身份验证方式,如使用密码登录或使用SSH密钥登录。多个远程主机:用户可能需要连接多个不同的远程主机,每个主机的连接参数可能不同。有的.ssh/config的内容是自动生成的,为什么有的却需要自己配置。

2024-04-10 16:33:54 237

原创 gerrit 拉取失败

在浏览器gerrit的设置界面设置的邮箱地址和在命令行使用git config --global user.email设置的邮箱地址并不一定需要保持一致。这两个邮箱地址是独立的,可以分别设置。在浏览器gerrit的设置界面设置的邮箱地址主要用于gerrit系统的通知和邮件功能,而在命令行使用git config --global user.email设置的邮箱地址主要用于git提交记录的作者信息。因此,你可以根据需要分别设置不同的邮箱地址。

2024-04-10 14:05:51 405

原创 repo 管理多个git仓库

在repo init成功情况sync的project会在./.repo/repo这个路径,包含repo所有功能逻辑的python脚本,当repo init时,执行的repo是环境变量里面默认的repo,这个repo只是单纯一个几百行的Python脚本。因为repo也是开源项目,设计者出于维护和使用体验,每次repo init时候都要从远端sync最新的版本。而不是完整的repo-project,所以要先去网络远端sync完整的repo-project,

2024-04-09 14:13:40 469

原创 引用[1]: UAT模式是指用户验收测试模式,是在软件开发过程中进行的一种测试模式,用于验证软件是否满足用户需求和预期。在UAT模式下,用户可以对软件进行全面的功能测试、性能测试、安全测试等,以确保软

引用: PROC模式是指生产环境模式,也称为生产模式。在PROC模式下,软件已经经过开发、测试和UAT等阶段的验证,已经准备好投入实际使用。在PROC模式下,软件需要保证高可用性、高性能、高安全性等,以满足实际生产环境的需求。引用[1]: UAT模式是指用户验收测试模式,是在软件开发过程中进行的一种测试模式,用于验证软件是否满足用户需求和预期。在UAT模式下,用户可以对软件进行全面的功能测试、性能测试、安全测试等,以确保软件的质量和稳定性。

2024-03-29 13:26:23 116

原创 TCP TLS

它在应用层和传输层之间提供了一层安全性,通过使用加密算法和数字证书来保护数据的机密性和完整性。TLS通常用于保护HTTP(超文本传输协议)通信,创建HTTPS(安全HTTP)连接。TCP(传输控制协议)是一种面向连接的协议,用于在网络上可靠地传输数据。它提供了数据分段、重传、流量控制和拥塞控制等功能,以确保数据的可靠传输。TCP仅提供了数据的可靠传输,但不提供加密和身份验证。而TLS通过使用加密算法和数字证书,确保数据在传输过程中的机密性和完整性,并对通信双方进行身份验证。

2024-03-22 16:05:36 256

原创 c和c++分别有哪些类型限定符

然而,现代编译器通常会自动优化变量的存储方式,因此register限定符在C++中已经不常用了。mutable:用于修饰类的非静态成员变量,在常量成员函数中允许修改该变量的值。C和C++都有一些类型限定符,用于修饰变量的类型和行为。// C++中的restrict指针声明。// C中的restrict指针声明。// C++中的mutable成员变量声明。// C++中的常量声明。// C++中的易变变量声明。// C中的寄存器变量声明。// C中的易变变量声明。// C中的常量声明。

2024-03-21 16:37:19 167

原创 C++:指针 引用 普通变量适用场景

需要注意的是,指针和引用都可以用于间接访问和修改内存中的数据,但它们有一些区别。使用指针的情况: 指针是一个变量,它存储了一个内存地址。使用普通变量的情况: 普通变量是最基本的数据类型,它存储了一个特定的值。使用引用的情况: 引用是一个已存在对象的别名,它提供了对对象的直接访问。当需要在函数中修改传递的参数值时,可以使用指针作为函数的参数。当需要在函数中修改传递的参数值时,可以使用引用作为函数的参数。当只需要存储和操作一个特定的值时,可以使用普通变量。当需要在函数之间共享数据时,可以使用指针。

2024-03-20 19:23:33 196

原创 SSTS(子系统功能规范) CTS PRD FR MRD

SSTS是指子系统功能规范(Subsystem Functional Specification),它是一种用于描述子系统功能的规范文档1。SSTS相较于功能清单更加具体,它描述了信号交互、功能逻辑、场景分析等内容。SSTS对复杂的功能进行结构性的拆解与分析,并定义了多个部件的组合行为,以及各个子系统的交互信息及方式。抽象性:SSTS相较于CTS更加抽象,通常不涉及包装、实现方案、详细原理、环境测试等内容。通用性:SSTS能够独立于实现方案,为实现方案约定一种设计框架,使供应商在这个框架中进行创新或降低成

2024-03-20 14:23:45 978

原创 some/ip CAN CANFD

当ECU的信号的值发生了改变,或者发送周期到了,就会发送消息,而不考虑接收者是否需要,这样就会造成总线上出现不必要的信息,占用了带宽。而SOME/IP的出现就是为了解决这一问题,它和CAN网络发送机制不同,它是接收者有需要时才会发送,避免了无效信息对总线造成的影响。既然SOME/IP是一种提供服务的通信协议,我们就可以把请求服务的ECU看成是client,而提供服务的ECU就是server。CAN 是 8Byte,CAN FD 能到 64Byte,而 SOME/IP 能到 1500 Byte。

2024-03-20 11:45:15 425

原创 UDS doip和docan

UDS诊断作为汽车ECU里的一个服务功能,位于应用层,它的实现需要有网络的支撑,我们把基于CAN总线实现的UDS诊断称为 DoCAN,基于Ethernet实现的UDS诊断称为 DoIP。DoIP在传输层以下的规范遵循ISO 13400,而应用层还是遵循ISO 14229不变,这样可以保证UDS诊断在不同车载网络上的可移植性。“ 相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信。DoIP的好处有哪些呢?什么是DoIP协议?

2024-03-20 11:33:34 201

原创 Grok ChatLaw

通过利用先进的人工智能和机器学习算法,Grok能够帮助企业实现更高效的运营和管理,提高竞争力,并为用户提供更好的产品和服务体验。数据安全和隐私保护:在处理和分析大量的数据时,Grok采用了严格的数据安全措施,确保用户和企业的数据不会被泄露或滥用。智能化的推荐系统:Grok具备智能化的推荐系统,能够根据用户的偏好和行为,为其提供个性化的产品和服务推荐。先进的机器学习算法:Grok采用先进的机器学习算法,能够自动学习和优化模型,不断提高预测和决策的准确性。

2024-03-20 11:03:03 162

原创 linux进程 crash之后 ulimit -c unlimited

当ulimit -c命令返回0时,表示生成core文件的大小限制为0,即禁止生成core文件。在Linux中,可以通过设置core文件大小的软资源限制来控制进程崩溃后生成的core文件的大小1。其中,/home/zhenglg/coredump/是崩溃文件的存储路径,core-%e-%p-$t-%E是崩溃文件的名称格式。添加崩溃文件配置信息:将崩溃文件的路径和名称添加到系统配置中。通过以上步骤,当Linux开发板发生崩溃时,系统会生成崩溃文件,可以通过查找崩溃文件中的堆栈信息来排查问题。

2024-03-18 17:54:38 207

原创 网络通信加密算法有哪些及其原理

通过使用非对称加密算法,发送方可以对信息进行加密,而只有接收方拥有私钥才能解密,从而确保只有接收方能够解密信息。其中,Diffie-Hellman算法可以用于在第三者窃听的前提下,双方计算出一个无法被其他人算出的秘密作为对称加密算法的密钥,从而开始对称加密的通信1。流密码(Stream Cipher)也是一种对称加密算法,与块密码(如AES、DES、3DES)不同,它不会将明文按照块进行分割,而是将明文看作一系列比特或字节流,在每次加密时使用与明文长度相等的密钥流进行异或运算2。

2024-03-18 17:25:58 193

原创 docker yocto vscode

Yocto Project还提供了一些预定义的软件层,如Poky和meta-openembedded,这些层包含了大量常用的软件包和组件,可以帮助您快速构建起一个基本的Linux发行版。通过Yocto Project,您可以根据自己的需求选择和配置所需的软件包、内核版本和功能,以生成适合您的嵌入式设备的Linux发行版。Yocto是一个开源项目,用于构建嵌入式Linux发行版。Yocto是一个用于构建嵌入式Linux发行版的开源项目,它提供了一套工具和框架,可以根据特定需求来构建定制化的Linux系统。

2024-03-18 14:30:43 1021

原创 进程间通信 和 线程间通信

然而,互斥锁的缺点是在资源被占用时,其他线程需要等待,造成线程阻塞,降低了并发性能。不同的是,当一个线程尝试获取自旋锁时,如果锁已经被其他线程占用,该线程不会被阻塞,而是会一直在一个循环中自旋等待,直到获取到锁为止。在忙等待期间,线程会一直占用CPU资源,不会被挂起。互斥锁的阻塞是指当一个线程尝试获取已经被其他线程占用的互斥锁时,它会被阻塞,直到该锁被释放。当一个线程获得了互斥锁后,如果该线程在执行过程中发生了异常或者其他原因导致没有释放锁,那么其他线程就会一直等待该锁的释放,从而导致死等的情况发生。

2024-03-18 11:11:13 663

原创 网络中的汉字是怎么传输的

每个汉字对应一个Unicode码点,可以使用UTF-8编码将Unicode码点转换为字节流。UTF-8是一种可变长度的编码方式,它可以将Unicode码点编码成1到4个字节的字节序列。在发送端,将汉字按照UTF-8编码转换为字节流后,可以通过网络协议(如HTTP)将字节流发送给接收端。在接收端,接收到字节流后,可以通过解码操作将字节流转换回Unicode编码,然后再将Unicode编码转换为可显示的汉字。在接收端,接收到字节流后进行解码操作,将字节流转换回Unicode编码。通过网络协议发送字节流。

2024-03-13 11:35:34 275

原创 人工智能(AI)-机器学习-深度学习-大语言模型LLM(chatgtp)

【一文读懂“大语言模型” - CSDN App】

2024-03-13 11:01:44 394

原创 RIL daemon Android系统中的一个重要组件,它负责处理与移动网络通信---与基带芯片通信

通常情况下,手机厂商会根据基带芯片的要求进行硬件设计,并在Android系统中配置相应的RIL daemon与基带芯片进行通信。与基带芯片通信:RIL daemon通过与基带芯片的通信接口,实现与移动网络的连接和数据传输。总之,RIL daemon在Android系统中扮演着重要的角色,它实现了Android设备与移动网络之间的通信和数据传输功能,保证了手机的正常通信能力。以上是常见的SOC与基带芯片之间的硬件通信接口,不同的芯片厂商和产品可能会采用不同的接口标准。

2024-03-12 14:50:44 564

原创 安卓开发-----activity ,services,broadcast receiver,content provider

广播消息可以来自系统或其他应用程序,它们可以传递一些重要的信息,如电池电量低、网络连接状态变化等。活动(Activity):活动是安卓应用程序的基本组成部分,它提供了用户界面和交互的能力。AndroidManifest.xml:这是apk的清单文件,它包含了应用程序的基本信息,如应用程序的包名、版本号、权限等。资源(Resource):资源是应用程序使用的非代码资源,如图像、字符串、颜色等。资源文件:这些文件包括应用程序使用的图片、布局文件、字符串等资源,它们被编译成二进制格式并存储在apk中。

2024-03-08 15:23:43 537

原创 定义变量(内存)时 定义在堆区 栈区 还是全局区-根据所需变量的特点选择合适的内存区域-作用范围和生命周期

当需要定义大内存数组时,通常应该将其定义在堆区。堆区是用于动态分配内存的区域,它的大小由操作系统决定。在堆区分配内存可以通过使用关键字"new"来实现,例如:int* arr = new int[1000]。在堆区分配的内存需要手动释放,以避免内存泄漏,可以使用关键字"delete"来释放内存,例如:delete[] arr。相比之下,栈区是用于存储局部变量和函数调用的区域,它的大小有限。在栈区定义的数组大小通常较小,且会随着函数的结束而自动释放,无需手动释放。

2024-03-05 10:59:09 267 1

原创 git hooks

git push origin HEAD:refs/for/master 是将当前分支的最新提交推送到远程仓库的master分支,并且将提交标记为待审核状态。在Git中,hooks是一些脚本,它们在特定的Git事件发生时被触发。你可以根据需要选择其中的一个示例文件,并将其复制为不带有.sample后缀的文件名。要求下载hooks通常是为了在代码提交时执行一些额外的检查或操作,以确保代码的质量和一致性。完成以上步骤后,当你进行代码提交时,相应的hook将会被触发,并执行你定义的操作或检查。

2024-03-04 14:58:00 345

原创 mutable关键字 mutable_xxx_xxx()

问题来了,如果我想在常成员函数内部,修改对象的某个成员变量时,怎么办?这时,就需要 引入 mutable,将该对象的成员变量定义为 mutable 变量,但是,我们会把定义为mutable的这个变量,看做不属于对象的状态。这样,即使在常成员函数内部,mutable变量也可以被修改,与此同时,常成员函数内部,对于对象的其他成员变量(即对象的内部状态)还是不能修改的!这么做的目的是,在常成员函数内部,不允许修改调用它的对象的内部状态(即不许修改对象的成员变量的值)。没关系,继续往下看!一定要看完就豁然开朗了!

2024-03-04 13:24:42 145

原创 一直报段错误----函数内部的结构体指针必须使用malloc开辟空间吗

需要注意的是,如果使用了malloc函数进行内存分配,记得在不再需要使用结构体指针时,使用free函数释放相应的内存空间,以避免内存泄漏。3,作为函数参数传递:如果结构体指针是作为函数参数传递进来的,那么在函数内部可以直接使用传递进来的指针,而无需再进行内存分配。2, 使用静态分配:如果结构体的大小是已知的,并且在函数内部只需要临时使用,可以使用静态分配的方式来创建结构体指针。需要注意的是,在使用完结构体指针后,应该使用free函数释放所分配的内存,以避免内存泄漏。

2024-02-28 16:18:54 244

原创 函数里面的结构体指针指针本身和指针指向的结构体分别存储在什么区

需要注意的是,如果结构体对象存储在堆区,那么在使用完毕后需要手动释放内存(如使用free()函数),以防止内存泄漏。而如果结构体对象存储在栈区,它的生命周期将随着函数的结束而结束,无需手动释放内存。函数内部定义的结构体指针struct point* pe是一个指向结构体类型为point的指针变量。存储在栈区,而指针pe指向的结构体对象可能存储在堆区或者栈区,具体取决于结构体对象的创建方式。如果结构体对象是通过动态内存分配(如使用malloc()函数)创建的,那么它将存储在堆区。

2024-02-28 15:37:31 348

原创 docker

与docker save不同,docker export只导出容器的文件系统,不包含镜像的元数据信息和层。与docker load不同,docker import命令会将文件作为一个新的镜像导入,而不是还原已有的镜像。docker export导出的是容器的文件系统,不包含镜像的元数据信息和层,可以通过docker import导入。docker save和docker export都是用于导出Docker镜像或容器的命令,但它们有一些区别。功能:将一个运行中的Docker容器导出为tar文件。

2024-02-01 18:21:06 573

原创 POSIX是可移植操作系统接口 那posix都可以作为哪些系统的系统接口 posix可以作为windows操作系统的接口吗

它的目标是提供一套基于Unix的可移植操作系统标准,使得不同的操作系统能够在接口层面上保持一致性,从而方便开发者编写可移植的应用程序。促进了软件的互操作性:由于POSIX标准的统一接口,不同的操作系统可以更容易地与其他操作系统进行交互和通信,从而促进了软件的互操作性和系统的互联互通。提供了可移植性:由于POSIX标准的存在,开发者可以编写一次代码,然后在不同的操作系统上进行编译和运行,而不需要针对每个操作系统进行特定的修改。Linux系统:Linux是一个基于UNIX的操作系统,因此也支持POSIX接口。

2024-01-19 10:44:58 467

原创 HAL层(硬件驱动接口)和库函数的(访问硬件寄存器的接口)

HAL层是一种硬件抽象层,它提供了一组函数接口,用于访问底层硬件资源。HAL层的目标是使应用程序与底层硬件解耦,从而实现跨平台的移植性和可重用性。HAL层提供了一种统一的编程接口,使开发人员可以使用相同的代码在不同的硬件平台上进行开发。库函数通常是针对特定硬件平台或任务而设计的,用于简化特定任务的编程。HAL层的目标是使应用程序与底层硬件解耦,从而实现跨平台的移植性和可重用性。HAL层提供了一种统一的编程接口,使开发人员可以使用相同的代码在不同的硬件平台上进行开发。

2024-01-11 14:55:23 407

原创 linux下动态链接库注意事项--工作经验

工作中使用动态库时,在pc上编译出来动态库后。要将动态库copy到目标设备(arm架构的linux系统上)的相应路径下。在pc上使用交叉编译工具链编译或者在yocto环境下指定目标架构使用bitbake编译。如果是静态库的话,编译时直接编进可执行文件了。不用再copy库文件了。意味着要把.so拷贝到 可执行程序的系统中。动态库 程序运行时加载。

2023-12-25 18:48:21 426

原创 autosar是rtos的一种

抵达。

2023-12-18 23:07:49 427

原创 MII、RMII、GMII、RGMII接口是什么 用在什么地方

RGMII均采用4位数据接口,工作时钟125MHz,并且在上升沿和下降沿同时传输数据,因此传输速率可达1000Mbps。②实现CSMA/CD(多点接入载波监听/冲突检测)的部分功能,可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。PHY在发送数据时,收到MAC发过来的数据(对PHY来说没有帧的概念,发过来的都是数据),然后在把并行数据转化为串行数据,在按照物理层的编码规则吧数据进行编码,再经过D/A转化通过模拟信号传输出去。

2023-12-13 14:19:19 843

原创 函数参数 传递指针类型的参数就一定是地址传参吗

函数参数传递指针类型的参数不一定是地址传参,还可以是复制传参。如果函数参数传递的是指针类型的参数,但是在函数内部并没有修改该指针所指向的内存地址的值,那么就是复制传参。只有在函数内部修改了该指针所指向的内存地址的值,才是地址传参。在这个例子中,函数func的参数是指针类型的参数p,但是在函数内部修改了p所指向的内存地址的值,因此是地址传参。而在main函数中调用func时,传递的是变量a的地址,因此也是地址传参。函数参数 传递指针类型的参数就一定是地址传参吗。

2023-11-24 18:16:21 436

原创 订阅发布和请求响应都是消息传递模式

请求响应模式(Request-Response)是一种同步消息传递模式,其中请求者发送请求消息,而响应者则返回响应消息。这种模式通常用于需要请求和响应之间有明确的关系的场景,例如银行取钱的例子中,输入金额后需要等待银行返回钱才能离开。订阅发布模式(Publish-Subscribe)是一种异步消息传递模式,其中发布者将消息发送到主题,而订阅者则从该主题接收消息。发布者和订阅者之间没有直接的联系,发布者只需要将消息发布到主题,而订阅者只需要订阅感兴趣的主题即可。

2023-11-24 18:14:29 453

原创 订阅发布和请求响应都是消息传递模式

请求响应模式(Request-Response)是一种同步消息传递模式,其中请求者发送请求消息,而响应者则返回响应消息。这种模式通常用于需要请求和响应之间有明确的关系的场景,例如银行取钱的例子中,输入金额后需要等待银行返回钱才能离开。订阅发布模式(Publish-Subscribe)是一种异步消息传递模式,其中发布者将消息发送到主题,而订阅者则从该主题接收消息。发布者和订阅者之间没有直接的联系,发布者只需要将消息发布到主题,而订阅者只需要订阅感兴趣的主题即可。

2023-10-20 17:35:49 260

原创 值传递 地址传递

所谓的地址传递,指的就是函数的参数是数组名或者指针。传递的是数组的首地址或指针的值,而形参接收到的是地址,即指向实参的存储单元,形参和实参占用相同的存储单元,即形参和实参是相同的。值传递的特点是单向传递,即主调函数被调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。因此在数组名或指针作函数参数时所进行的传送只是地址传送,形参在取得该地址之后,与实参共同拥有一段内存空间,形参的变化也就是实参的变化。

2023-09-12 16:28:15 248

原创 MCU主频 服务器台式机主频 处理器主频那些事

后来工艺改良了单片机也设计也改良了,CPU可以耐受的主频提升了,所以制造出了所谓的6时钟周期51单片机(6分频,主频2MHz)和1时钟周期的51单片机(1分频,主频12MHz,叫1T单片机)。IP 核可以划分为CPU、GPU、DSP、VPU、总线、接口等6个类别,也可按软核、固核、硬核分类。当前 SoC已成为功能最丰富的硬件,集成了 CPU、GPU、RAM、ADC、DAC、Modem、高速DSP 等各个功能模块,部分SoC还集成了电源管理模块、各种外部设备的控制模块,同时还需要考虑各总线的分布利用等。

2023-09-12 09:35:56 539

原创 CMSIS—OS(V1/V2)

CMSIS-RTOS2 是一个通用的 API ,不受底层 RTOS 内核的影响。在这个实时操作系统泛滥的年代,有这么一个系统封装接口层还是蛮有必要的。前些时间偶然间在STM32最新的固件库中就发现了这个系统封装接口,当时就把自己所用的系统进行封装。相同的代码可以轻而易举的移植到不同的实时系统中。其简洁的书写手法,也会给我的应用层带来视觉上的体验感,使用可以尽可能去关注应用。只需更改该CMSIS-OS的API所调用的RTOS的API。更换RTOS的意义何在?更换项目中所使用到的RTOS。

2023-08-09 14:42:08 956

原创 撤销 git reset --hard HRAD^操作

以下操作演示了 如何撤销git reset --hard HRAD^操作 亲测可用。

2023-07-13 16:16:21 1037

原创 无需多人协作开发时 只在本地使用git,无需git push到远程仓库

1.以下部分先介绍的是git在本地的使用。当不涉及到多人协作,只是想要一个工具记录每一次的提交和修改,能轻松还原到某个版本,git已经可以满足这些功能了。2.只有当涉及到多人协作时,gitlab和github等web仓库才更好的派上用场。untrack:文件未入库,新增的文件都是untrack。modify:已经入库或者进入暂存区文件被修改。staged:文件进入暂存区。unmodify:文件未修改。3.git文件有四种状态。

2023-07-13 13:33:40 987

USB知识点,usb相关概念,usb的从上电到数据收发的流程

USB知识点,usb相关概念,usb的从上电到数据收发的流程。

2022-03-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除