草庐IT

鸿蒙LiteOs读源码教程+向LiteOS中添加一个系统调用

本文分为2个部分:第1部分简要介绍如何读鸿蒙Liteos源码,第2部分是实验向LiteOS中添加一个系统调用的完整过程。前置资料:imx6ull开发板使用方式详解+源码下载+编译运行简单程序+Ubuntu虚拟机使用鸿蒙LiteOs操作系统常见错误汇总一、鸿蒙Liteos读源码教程鸿蒙的源码是放在openharmony文件夹下,openharmony下的kernel文件夹存放操作系统内核的相关代码和实现。内核是操作系统的核心部分,所以像负责:资源管理、任务调度、内存管理、设备驱动、进程通信的源码都可以在kernel文件夹里看到。进入到kernel文件夹下后会看到liteos_a和liteos_m

一文读懂常见的缓存策略

缓存策略介绍缓存是一种用于临时存储数据的技术,旨在提高数据访问速度和性能。通过将常用的数据存储在缓存中,可以减少对原始数据存储位置的访问次数,从而加快数据的读取速度。缓存通常用于加速计算机系统、网络和Web应用程序的性能。常见的缓存策略包括:「FIFO(FirstIn,FirstOut)」:先进先出,最先进入缓存的数据最先被淘汰。「LRU(LeastRecentlyUsed)」:最近最少使用,根据数据最近被访问的时间来淘汰缓存中的数据。「LFU(LeastFrequentlyUsed)」:最不经常使用,根据数据被访问的频率来淘汰缓存中的数据。「随机替换」:随机选择要淘汰的数据。FIFO缓存策略

一文读懂 AI Agents 技术

想象一下:软件实体能够自主地与环境交互,根据收集的数据做出决策,并以最少的人为干预执行基于特定场景。幸好,借助AIAgents技术,这个现实比你想象的更接近了。这些智能代理正在彻底改变行业,并改变我们的生活方式。但是,大家可能会好奇:AIAgents 到底是什么?它们是如何工作的?在本篇博文中,我们将深入探索 AIAgents 的世界!人工智能(AI)赋予机器具备判断和执行任务的能力,以协助人类在某些特定的业务场景中实现某项目标,从而显著改变了人机交互方式。在人工智能的核心体系中,我们可以关注到这些智能实体被称为智能代理(IA)的 AIAgents,能够感知环境变化并对其进行分析,以采取合理的

一文读懂 TypeScript 泛型及应用

泛型是静态类型语言的基本特征,允许将类型作为参数传递给另一个类型、函数、或者其他结构。TypeScript支持泛型作为将类型安全引入组件的一种方式。这些组件接受参数和返回值,其类型将是不确定的,直到它在代码中被使用。下面将通过一些示例,探索如何在函数、类型、类和接口中使用泛型,以及使用泛型创建映射类型和条件类型。1.泛型语法首先来看看TypeScript泛型的语法。泛型的语法为 ,其中 T 表示传入的类型。在这种情况下,T 和函数参数的工作方式相同,其作为将在创建结构实例时声明的类型的占位符。因此,尖括号内指定的泛型类型也称为泛型类型参数。泛型的定义可以有多个泛型类型采参数,例如:。注意:通常

读程序员的制胜技笔记15_读后总结与感想兼导读

1. 基本信息程序员的制胜技[土耳其]塞达特·卡帕诺格鲁(SedatKapanoglu)人民邮电出版社,2023年9月出版1.1. 读薄率书籍总字数320千字,笔记总字数35586字。读薄率35586÷320000≈11.12%1.2. 读厚方向零信任网络:在不可信网络中构建安全系统反模式危机中软件架构和项目的重构回顾活动引导:24个反模式与重构实践测试反模式:有效规避常用的92种测试陷阱1.3. 笔记--章节对应关系笔记章节字数发布日期2023年读程序员的制胜技笔记01_入门第1章 初入行当207711月2日读程序员的制胜技笔记02_算法与数据结构第2章 实用的理论281411月3日读程序员

网络故障不再烦恼:一文读懂以太网接口物理DOWN故障及解决方案!

一、接口物理Down概念以太网接口是提供给用户操作或配置的真实存在、有器件支持的物理接口,主要用于接收和发送数据。接口保持正常UP状态是设备正常运转的最基本条件。当接口处于DOWN状态时,其指示灯状态为常灭,接口不能正常收収报文,设备上产生类似如下格式的日志:IFPDT/4/IF_STATE(l)[3]:InterfaceGigabitEthernet0/0/12hasturnedintoDOWNstate.您可以通过执行displayinterface命令查看接口当前物理状态(回显中currentstate字段信息)。在上图的示例中,接口GE0/0/12的当前物理状态为Administrat

c++ - 使用 Bluez 的 C/C++ BLE 读/写示例

我开始使用微Controller和树莓派(tardisBLE加密狗)构建一个简单的BLE网络。作为起点,我正在寻找一个简单的C或C++示例来读/写BLE设备,类似于我能够通过命令行执行的操作。到目前为止,我发现的示例非常复杂。作为BLE初学者,在进行更复杂的设计之前,我需要一些非常简单的示例来构建。我可以像下面的gatttool示例中那样对BLE设备名称进行硬编码。这是我目前如何使用Bluez的命令行选项。从命令行我可以使用:$sudohcitoollescanLEScan...BB:A0:50:02:18:07MyDevice接下来我可以使用gatttool在命令行上连接到设备:$s

读程序员的制胜技笔记13_安全审查(上)

1. 安全1.1. 关乎人类心理学1.1.1. 接受开发者有着人类的弱点,主要的弱点就是对概率的错误估计1.2. 安全从来不只跟软件和信息有关,也跟人和环境有关1.2.1. 有不计其数的公司让它们的数据库在互联网上没有密码就可以被访问1.3. 安全漏洞本身总是被叫作事故(incident),绝不是不负责任的1.4. 安全,就像测试一样,是你的服务、数据和业务的可靠性的一个子集1.5. 应当将与安全有关的决定看作可靠性技术债,它能帮你优化整个人生1.6. 安全问题的不可避免也强调了事无绝对,没有绝对安全的系统1.7. 完美的安全是不可能实现的,你总会遇到用户体验和安全之间的权衡2. 复盘报告2.

读程序员的制胜技笔记12_与Bug共存(下)

1. 亚伯拉罕·马斯洛(AbrahamMaslow)在1966年所说:“如果你唯一的工具是一把锤子,你往往会把每个问题都看成钉子。”2. 错误恐惧2.1. 不是每一个bug都是由你的代码中的错误引起的,也不是每一个错误都意味着你的代码中存在一个bug2.1.1. 开发人员本能地把所有的错误当作bug,并不约而同地、坚持不懈地把它们消灭2.1.2. 对这些错误用平常心看待,这些所谓的错误是很正常的事情2.2. 有关异常的真相2.2.1. 异常可能是编程史上被误解最多的结构2.2.1.1. 故障代码(failingcode)放在一个try语句块里,然后加上一个空的catch语句块,就大功告成了2.

一文读懂从 CPU 多级缓存 & 缓存一致性协议(MESI)到 Java 内存模型

文章目录CPU多级缓存&缓存一致性协议(MESI)CPU多级缓存缓存一致性协议(MESI)缓存行(Cacheline)四种缓存状态缓存行状态转换多核协同示例网站体验MESI优化和引入的问题StoreBufferes&InvalidateQueueStoreBufferes&InvalidateQueue带来的问题硬件内存模型读屏障&写屏障思考&联系CPU多级缓存&缓存一致性协议(MESI)CPU多级缓存参考:JavaMemoryModel缓存一致性协议(MESI)多级缓存的出现解决了CPU处理速度和内存读取速度不一致的问题,但是同时也带来缓存不一致的问题,为了解决这个问题,我们引入了缓存一致性