- 博客(152)
- 资源 (26)
- 收藏
- 关注
原创 colcon-初识
我们先来回答一个问题,ros2为什么用colcon?ROS(Robot Operating System)使用colcon作为构建工具,主要是因为它提供了比 ROS 传统的catkin工具更多的功能和优势。具体来说,colcon在 ROS 2 中逐渐取代了catkin,并成为构建和管理多个包的标准工具,以下是它的一些关键优势:colcon支持并行构建,可以在多个 CPU 核心上同时构建多个包,从而加快构建速度。colcon。
2024-11-26 19:37:30
988
原创 程序员面试之操作系统
进程是资源(CPU、内存等)分配的基本单位,线程是CPU调度和分配的基本单位(程序执行的最小单位)。同一时间,如果CPU是单核,只有一个进程在执行,所谓的并发执行,也是顺序执行,只不过由于切换速度太快,你以为这些进程在同步执行而已。多核CPU可以同一时间点有多个进程在执行。你可以有很多角度,有进程上下文,有中断上下文。进程上下文。
2024-10-08 21:53:43
774
原创 程序员面试之c语言二
宏定义是预处理指令,文本替换,在编译前进行处理。没有类型检查,直接替换文本,可能导致意料之外的错误。风险缺乏类型安全:宏没有类型检查,可能导致运行时错误。调试困难:宏在预处理阶段展开,调试信息可能不清晰。副作用:宏替换时可能出现副作用,如表达式被多次计算。函数定义是编译时处理的代码块,有类型检查和更好的调试支持。性能要求:在性能敏感的代码中,宏定义避免了函数调用的开销(但现代编译器通常会对内联函数做优化)。常量表达式:对于编译时常量(如),宏定义更为合适。条件编译。
2024-09-25 14:57:11
881
原创 程序员面试之c语言一
回调函数是指一个函数作为参数传递给另一个函数,并在适当的时候由另一个函数调用。排序算法:在实现排序算法时,可以传递一个比较函数作为回调函数,以确定元素的顺序。return 0;
2024-09-25 14:40:13
713
原创 yocto实战之-systemd服务创建
在 Yocto 工程中创建服务主要是通过创建一个 systemd 服务文件,并将其集成到 Yocto 项目中。在你的配方目录下创建一个 files 目录,并将 my_service.service 和 my_script.sh 文件放入该目录。完成后,服务会自动被启用,并在系统启动时运行。将服务文件和脚本文件添加到 files 目录。添加配方到你的 Yocto 镜像中。
2024-09-19 11:22:16
221
原创 01-linux驱动之简单内核模块
Linux 可加载内核模块(Loadable Kernel Modules,简称 LKMs 或 LKM)是 Linux 内核的一个重要特性,它允许用户动态地添加或删除内核功能而不需要重新启动整个系统。这种灵活性使得内核可以根据需要加载不同的功能模块,从而节省内存资源并提高系统的安全性。
2024-09-10 09:05:20
500
原创 linux基础之运行级别
Linux系统的运行级别(Runlevel)是指系统在不同操作模式下的状态。传统的Linux系统使用了一种基于Inittab和init进程的运行级别系统来管理系统的启动和切换模式。随着Systemd的广泛采用,这种概念有所变化,但运行级别的概念依然存在,只是表现形式有所不同。
2024-09-05 17:09:29
1396
原创 linux基础之目录结构
Linux是一个基于Unix的开源操作系统,其文件系统具有层次化的目录结构,这种结构以根目录/作为起点,向下展开成一个倒置的树状结构。每个文件或目录在这个结构中都有自己独特的路径名称,便于定位和访问。Linux的目录设计遵循一定的惯例和标准,旨在使文件组织合理化并方便管理和维护。位置功能/binbin 是 binary 的缩写。这个目录沿袭了 UNIX 系统的结构,存放着使用者最经常使用的命令。例如 cp、ls、cat等。/boot这里存放的是启动 Linux 时使用的一些核心文件/dev。
2024-09-05 16:41:51
820
原创 设计模式专题之C语言-观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在很多场景下都非常有用,比如在GUI应用中,用户界面组件通常需要响应数据模型中的变化。
2024-08-29 10:20:31
656
原创 设计模式专题之C语言-访问者模式
访问者模式是一种行为型设计模式,它允许我们向现有类结构添加新的行为,而无需修改这些类。这种模式使用了一个访问者类,该类定义了一组访问方法,每个方法对应于结构中的某个类。这样,我们可以轻松地在不改变原有结构的情况下,通过创建不同的访问者来为整个结构添加新功能。适用场景当你需要对一个对象结构中的对象进行很多不同的并且不相关的操作时。当对象结构中的对象有共同的操作集合时。当需要对这些操作进行参数化时。
2024-08-29 10:19:43
496
原创 设计模式专题之C语言-解释器模式
解释器模式是一种行为型设计模式,它允许为简单的文法定义一个语言,并且可以解析这个语言中的句子。这种模式常用于编译器、数据库查询引擎等领域,用于处理特定的领域语言(DSL, Domain Specific Language)。本文将介绍如何使用C语言实现一个简单的解释器模式示例。
2024-08-29 09:09:55
467
原创 设计模式专题之C语言-备忘录模式
备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下捕获一个对象的内部状态,并且可以在以后将对象恢复到该状态。这种模式通常用于实现撤销功能、或者保存游戏进度等场景。备忘录模式的基本结构Originator(发起人):维护一个备忘录对象,用以存储当前的状态。Memento(备忘录):负责存储发起人的内部状态,并防止发起人以外的对象访问这些状态。Caretaker(管理者):负责保存和提供备忘录对象,但不能对备忘录的内容进行操作。
2024-08-29 09:09:12
501
原创 设计模式专题之C语言-中介者模式
中介者模式是一种行为设计模式,它定义了一个对象来封装一系列对象交互的方式。中介者模式减少了对象间的显式依赖关系,使得它们不需要相互引用就可以相互作用。这种模式简化了系统的维护和扩展。
2024-08-29 09:08:17
442
原创 设计模式专题之C语言-迭代器模式
迭代器模式是一种行为设计模式,它允许你顺序地遍历集合中的元素,而不需要暴露其底层的表示。在C语言中,由于没有类和对象的概念,实现迭代器模式需要使用函数指针、结构体等手段。使用场景当需要提供一种方法来访问一个容器对象的各个元素时,而又不想暴露该对象的内部细节。在遍历过程中可能需要执行额外的操作(如过滤条件)。
2024-08-29 09:06:51
406
原创 设计模式专题之C语言-职责链模式
职责链(Chain of Responsibility)模式是一种行为设计模式,它允许请求沿着处理者链传递,直到其中一个处理者处理它。这种模式避免了请求发送者与接收者之间的耦合关系,让多个对象都有机会处理请求。使用场景当有多个对象可以处理同一个请求,但是具体由哪个对象处理该请求在运行时刻自动确定。在需要动态指定一组对象处理一个请求的时候。避免请求发送者和接收者之间的耦合。
2024-08-29 09:05:40
784
原创 设计模式专题之C语言-命令模式
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为一个对象,从而使你能够参数化方法调用。这种模式允许我们解耦发送者和接收者,使得系统更加灵活,易于扩展。解耦: 发送者(遥控器)不需要知道接收者(电视)的实现细节。可扩展性: 可以轻松添加新的命令或修改现有命令的行为,而无需更改发送者或接收者的代码。灵活性: 支持撤销/重做等高级功能,只需稍作修改即可实现。
2024-08-29 09:04:20
912
原创 设计模式专题之C语言-策略模式
在软件工程中,设计模式是一种通用的解决方案,用于解决常见的问题。其中一种非常实用的设计模式是策略模式。策略模式定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。这样做的好处是算法的变化不会影响到使用算法的客户。
2024-08-29 09:03:10
438
原创 设计模式专题之C语言-状态模式
在软件工程中,状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。状态模式可以使得状态的变化更加明确和易于管理。本文将通过一个简单的交通信号灯示例来解释状态模式,并用C语言实现。状态模式简介状态模式的核心在于将不同的状态抽象成类,并且允许这些状态类管理它们自己的行为。当外部条件发生变化时,可以通过切换不同的状态类来改变对象的行为。这样做的好处是将行为和状态紧密地耦合在一起,使得系统更易于扩展和维护。状态模式通过将对象的行为与其内部状态分离,使得代码更加清晰和易于维护。
2024-08-29 09:00:19
446
1
原创 设计模式专题之C语言-模板方法模式
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为某些步骤提供具体的实现。该模式的核心思想是定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。目的定义算法骨架:定义算法的步骤顺序,确保算法的一致性和完整性。封装变化:将不变的部分与可能变化的部分分离,以便于维护和扩展。重用代码:允许子类重用父类中的通用逻辑,减少重复代码。如何工作定义模板方法:在基类中定义一个模板方法,它包含算法的步骤顺序。抽象操作。
2024-08-29 08:59:36
608
原创 设计模式专题之C语言-抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。在抽象工厂模式中,我们创建对象集合,这些对象通常属于同一“系列”或者有着共同的主题,而不需要知道具体是哪些类生成了这些对象。抽象工厂模式的应用场景当系统需要独立于它的产品创建、组合和表示时。当系统要由多个产品系列中的一个来配置时。当添加新的产品系列时,整个系统不会受到影响。抽象工厂:提供一个接口,用于创建一组相关或相互依赖的对象,而不需要指定这些对象所属的具体类。具体工厂。
2024-08-29 08:48:34
1060
原创 设计模式专题之C语言-外观模式
在软件工程中,设计模式是一种被广泛采用的解决特定问题的方法。其中,“外观模式”(Facade Pattern)是一种结构型设计模式,它的主要目的是提供一个统一的接口来访问一系列复杂的子系统。这使得客户端与子系统的内部细节解耦,并简化了客户端的使用。外观模式通过提供一个高层次的接口,让子系统更容易使用。它不改变子系统的功能,而是为它们提供了一个简单明了的界面。当一个系统过于复杂,需要一个简化的接口。当用户只需要使用一个子系统的一个小部分功能。当你需要降低子系统与其他组件之间的耦合度。优点。
2024-08-29 08:47:10
806
原创 设计模式专题之C语言-装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许向对象动态地添加新的功能。这种模式通过创建一个装饰类来包装原有的类,可以在不修改原类的基础上给类添加新的职责。适用场景当需要扩展一个类的功能或者给一个类添加附加职责时,装饰者模式提供了一种比继承更加灵活的方式。当不能采用生成子类的方法进行扩充时,一种情况是系统中存在大量的独立扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。
2024-08-29 08:45:20
362
原创 设计模式专题之C语言-享元模式
享元模式(Flyweight Pattern)是一种用于减少对象数量从而减少内存使用的设计模式。它的核心思想是尽可能地重用已创建的对象,而不是每次需要时都创建新的实例。这种模式尤其适用于需要大量相似对象的场景,通过共享这些对象的公共状态来节省资源。享元模式是一种旨在减少对象数量从而降低内存使用量的设计模式。它通过共享对象的公共状态来实现这一目标,特别适合于需要大量相似对象的场景。关键点对象复用:通过复用已存在的对象,而不是每次都创建新对象。内外状态分离:内在状态:对象的不变部分,可以被多个对象共享。
2024-08-28 16:27:15
827
原创 设计模式专题之C语言-代理模式
代理模式是一种结构型设计模式,它允许你提供一个替代对象来控制对某个对象的访问。这种模式在需要增加额外职责而又不想修改原始类的情况下非常有用。这个简单的例子展示了如何使用代理模式来控制对稀有物品的访问。代理模式在这里充当了一个门卫的角色,确保只有符合条件的玩家才能获取特定的物品。这种方式可以轻松地扩展,例如添加更多的条件或处理更复杂的逻辑,而不需要更改真实的物品获取逻辑。
2024-08-28 16:19:01
386
原创 设计模式专题之C语言-组合模式
组合模式是一种结构型设计模式,它允许你将对象组合成树形结构以表示部分-整体层次结构。组合模式使得客户端能够一致地处理单个对象和组合对象。这种模式在需要处理具有层次结构的数据时非常有用。组合模式是一种结构型设计模式,它的主要目的是将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户端能够一致地处理单个对象和组合对象。关键点抽象接口:定义了所有对象(无论是单个对象还是组合对象)的共同行为。叶子对象:表示组成结构的基本组件,不能包含其他对象。
2024-08-28 16:10:54
698
原创 设计模式专题之C语言-桥接模式
桥接(Bridge)设计模式是一种结构型设计模式,它的目的是将抽象与其实现分离,使得两者可以独立地变化。这种模式特别适用于系统需要支持多种不同的平台或环境,并且这些平台或环境可能经常发生变化的情况。在C语言中实现桥接模式需要考虑如何使用指针和函数指针来模拟对象的多态性。下面我们将通过一个简单的例子来解释桥接模式的概念及其在C语言中的应用。桥接模式是一种结构型设计模式,它允许将抽象部分与它的实现部分分离,从而使它们可以独立地变化。
2024-08-28 16:02:31
849
原创 设计模式专题之C语言-原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它允许一个对象通过复制现有的对象来创建新对象,而不是通过 new 关键字创建新对象。这种模式可以提高性能和复用性,特别是在创建新对象需要复杂的初始化或者资源密集型操作时。什么是原型模式?在原型模式中,一个类声明了一个克隆方法,用于创建自己的副本。这些副本是原始对象的浅拷贝或深拷贝。浅拷贝只复制对象本身,而深拷贝会递归地复制对象及其内部的所有引用。为什么使用原型模式?
2024-08-28 15:53:32
784
原创 设计模式专题之C语言-建造者模式
建造者模式是一种创建型设计模式,它允许你逐步构建一个复杂的对象,而无需让构造过程与表示层耦合。这样做的好处是你可以使用相同的构建过程创建不同的表示。建造者模式是一种非常实用的设计模式,尤其适用于需要创建具有复杂内部结构的对象的情况。在本例中,我们通过C语言实现了一个简单的汽车建造过程,展示了建造者模式如何帮助我们构建复杂对象的同时保持代码的整洁和可维护性。这种方法不仅适用于汽车这样的实体对象,也可以应用于任何需要逐步构建复杂对象的场景。
2024-08-28 15:30:16
1111
1
原创 yocto理论篇-local.conf学习
在Yocto项目中,local.conf 文件是构建配置中的一个关键组成部分,它位于构建环境目录下的 conf/ 子目录中。这个文件主要用于包含用户的自定义配置,允许用户覆盖或扩展构建系统的默认行为而无需直接修改Yocto框架的核心配置文件。覆盖默认的构建变量:例如,你可以在这里设置目标系统的架构 (MACHINE) 或者发行版 (DISTRO)。指定构建的输出位置:例如,通过设置 DL_DIR、SSTATE_DIR、TMPDIR 等变量来指定下载目录、状态缓存目录、临时文件目录等。
2024-08-27 17:43:04
291
原创 yocto理论篇-OpenEmbedded构建系统(上)
Poky是Yocto项目的参考发行版。它包含OpenEmbedded构建系统。它提供了构建Linux操作系统栈所要求的全部必要的工具、菜谱和配置数据。正如我们在前面一章中看到的,Poky是打包成简单包的几乎自包含的系统。仅仅有少量额外的组件需要安装在构建主机上以使用Poky。本章先分析针对开源软件包的典型的工作流。然后解释OpenEmbedded工作流是如何将各个软件包的构建与创建完整的Linux操作系统栈和可启动文件系统镜像的过程集成起来的。有了这些知识,我们就可以详细了解Poky架构及其组件了。
2024-08-27 17:25:08
208
原创 yocto理论篇-OpenEmbedded构建系统(下)
书接上文,前面我们主要说了OpenEmbedded构建系统中的构建开源软件包和OpenEmbedded工作流,接下来我们说一下OpenEmbedded构建系统架构的部分,从而对OpenEmbedded构建系统有完整的印象。
2024-08-27 17:23:44
229
原创 yocto实战篇-快速体验
由于build目录是动态的,所以不建议在build的目录下去做任何修改。如果你运用较为熟练后,就可以修改build目录的东西来方便你进行更快的构建和调试。注意:在实战中,你将会发现对磁盘的要求非常高,因为构建过程中会产生大量的中间的文件,也会有大量的磁盘io操作,所以这里我建议,能上固态盘就别用机械盘,容量上我建议至少200GB打底。他在过程中会创建build目录,后面包括编译和输出的所有东西都在这个build目录下。先通过编译建立一个初印象,同时也可以通过编译成功,来获取学习yocto工程带来的成就感。
2024-08-26 17:22:00
505
原创 嵌入式Linux开发工具一览无余
与桌面版和服务器Linux发行版类似,不断发展的嵌入式Linux发行版被社区项目和商业操作系统厂商开发出来。其中一些被定位为针对特定类型的嵌入式系统和设备,而其他的在本质上是更通用的,意在提供一个基础而非完整的系统。相信经过前面的介绍,对嵌入式的linux的发行版有了一定的了解。都说工欲善其事,必先利其器。如果你想建立自己的linux操作系统的话,也可以使用嵌入式Linux开发工具构建自己的定制Linux操作系统。
2024-08-23 15:25:03
912
原创 设计模式专题之C语言-抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或依赖对象,而无需指定它们的具体类。这个模式通过组合多个工厂类,实现了对产品族的创建。在C语言中,由于没有面向对象的特性(如类和继承),我们通过结构体和函数指针来模拟实现抽象工厂模式。抽象工厂接口定义了创建一组相关对象的方法。每个具体工厂实现了这些方法来生成特定的产品。具体工厂类负责实现抽象工厂接口,创建一组相关的具体产品(如发动机和轮胎)。客户端代码通过使用具体工厂,创建所需的产品对象,但无需关心具体实现细节。
2024-08-22 15:36:33
461
原创 设计模式专题之C语言-适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以协同工作。简单来说,它就像一个“适配器”,可以让本来不兼容的插头和插座之间建立联系。
2024-08-22 09:50:06
916
原创 设计模式专题之C语言-工厂方法模式
工厂方法模式是一种创建型设计模式,它定义了一个接口用于创建对象,但允许子类决定实例化哪一个类。这种模式让一个类的实例化延迟到其子类,从而实现了解耦和扩展性。在 C 语言中,由于没有类的概念,工厂方法模式通常通过函数指针和结构体来实现。我们将通过一个简单的例子来说明这一点。工厂方法模式在 C 语言中的实现尽管比在面向对象语言中要复杂一些,但它依然能够有效地帮助我们实现对象的创建和管理。通过使用函数指针和结构体,我们能够在 C 语言中实现这一经典的设计模式。
2024-08-22 09:32:38
427
3
原创 设计模式专题之C语言-单例模式
单例模式(Singleton Pattern)是设计模式中的一种,用于确保一个类只有一个实例,并提供一个全局访问点。在面向对象编程语言(如C++或Java)中,单例模式常用于限制某个类的实例数量,使得在整个应用程序中该类的实例唯一。在C语言中,我们可以通过一些巧妙的方式来实现这一模式,虽然C语言本身并不支持面向对象的特性。单例模式是非常有用的设计模式之一,特别是在需要控制资源的使用、确保某些操作的全局一致性时。在C语言中,虽然没有类的概念,但我们可以通过静态变量和适当的内存管理技巧来实现单例模式。
2024-08-22 08:45:31
1057
原创 设计模式专题之C语言-三大属性
继承:通过结构体嵌套来模拟继承关系。封装:通过将结构体和相关函数分开并使用static关键字隐藏实现细节来实现封装。多态:通过在结构体中使用函数指针来实现不同的行为。尽管C语言没有直接的面向对象特性,通过以上技巧,可以在C语言中实现类似于OOP的设计模式和机制。
2024-08-21 16:06:38
840
原创 设计模式专题之C语言-开篇
在软件开发中,设计模式是一种经过验证的解决方案,用于应对常见的设计问题。在面向对象编程语言中,如C++或Java,设计模式的实现通常利用类和继承等特性。然而,在C语言中,由于缺乏类和继承机制,设计模式的实现需要依赖结构体、函数指针和全局变量等特性。尽管如此,许多经典设计模式仍然可以在C语言中有效地实现,并为程序设计提供有力的支持。编程中的设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。这些模式提供了可重用的解决方案,帮助开发人员在面临常见的设计问题时能更高效地设计系统。
2024-08-21 15:48:35
775
原创 OP-TEE系列学习专栏简介
OP-TEE(Open Platform Trusted Execution Environment)是一个开源的安全环境框架,它允许在一个标准的、非安全的操作系统之上运行一个可信执行环境(TEE)。OP-TEE基于ARM TrustZone技术,但其设计具有高度的灵活性,可以在多种架构上实现。
2024-08-21 08:59:57
303
U盘保护工具MyUSBHelper.rar
2020-02-14
HP优盘格式化工具HPUSBFW.rar
2020-02-14
Arduino_电子积木基础套装中文教程.pdf
2019-09-16
理解Unix进程 扫描中文版.pdf
2019-02-20
spi-tools-1.0.2
2024-09-13
麦可网提供的linux驱动开发视频
2024-09-13
使用Yocto项目为任何嵌入式设备创建自定义嵌入式Linux发行版.pdf
2024-07-09
手机综合维修工具箱.exe
2020-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人