摘要:
TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们称为套接字(socket)。端口号拼接到IP地址后面就构成了套接字,例如192.0.0.32:80。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程,而端到端的通信才是应用进程之间的通信。 数据包格式 T 阅读全文
摘要:
Hi, all!我自己实现了一个双向循环链表,发布在Github上。 叫QuickList,包含完整的链表模块源码和测试用例。遵循GPL V2.0协议。 大家可以去github上获取,如果觉得好用请帮我点个star,谢谢啦嘿嘿~ QuickList传送门 3.1 抽象数据类型 程序设计的基本法则之一 阅读全文
摘要:
1. 事件集的使用 单个指定事件唤醒线程,任意事件唤醒线程,多个指定事件一起唤醒线程。信号量主要用于“一对一”的线程同步,当需要“一对多”、“多对一”、“多对多”的同步时,就需要事件集来处理了。RT-Thread中的事件集用一个32位无符号整型变量来表示,变量中的一个位代表一个事件,线程通过“逻辑与 阅读全文
摘要:
1. 临界区保护 临界区是仅允许一个线程访问的共享资源。它可以是一个具体的硬件设备,也可以是一个变量、一个缓冲区。多个线程必须互斥的对他们进行访问 1.1 方法一:关闭系统调度保护临界区 禁止调度 /* 调度器商锁,上锁后不再切换到其他线程,仅响应中断 */ rt_enter_critical(); 阅读全文
摘要:
1. 启动顺序 SystemInit() $Sub$$main() rtthread_startup() rt_application_init() main_thread_entry $Super$$main用户主函数 2. 堆范围 自由分配的内存(堆)起始地址为RAM的起始地址加上RW+ZI段后 阅读全文
摘要:
算法分析 如果解决一个问题的算法被确定下来,并用某种证明方法证明其是正确的,那么接下来就要判断该算法的运行时间,以及运行时占用的空间。这一章主要讨论 估算程序运行时间 降低程序的运行时间 递归的风险 将一个数自乘得到其幂以及计算两个数的最大公因数的有效算法 2.1 数学基础 1. 如果存在正常数c和 阅读全文
摘要:
前言 一个算法的优劣好坏,会决定一个程序运行的时间、空间。也许当小数据量的时候,这种影响并不明显,但是当有巨量数据的时候,算法的好坏带来的性能差异就会出天差地别。可以说直接影响了一个产品的高度和广度。每个程序员都想用最优的算法解决问题,我们期待自己写出的代码是简洁、高效的。但是如何评判一个算法的好坏 阅读全文
摘要:
自述 自从工作之后,就没有再写博客了,一方面是因为自己初入职场还不能很好的适应职场生活。另一方面也是对前途有些不知所措。现在工作已经快三年了,我慢慢找到了自己的节奏,也许还是有很多不成熟的地方,但是我已经想开啦。做自己真正喜欢的事就好了,遵循自己的内心。在职场的这些年我写了很多笔记,但是没有时间整理 阅读全文
摘要:
Hi!大家好,我是CrazyCatJack。又和大家见面了。今天给大家带来的是构建Linux下的根文件系统。希望大家看过之后都能构建出符合自己需求的根文件系统^_^ 1.内容概述 1.构造过程 今天给大家展示的根文件系统构造过程如下图所示: 正如大家看到的,这是一个环环相扣的过程。因为在这四个方面的 阅读全文
摘要:
Hi,大家好!我是CrazyCatJack。今天给大家讲解Linux根文件系统的init进程和busybox的配置及编译。 先简单介绍一下,作为一个嵌入式系统,要想在硬件上正常使用的话。它的软件组成大概有这三部分:1)bootloader 2)嵌入式系统kernel 3)根文件系统 。这其实非常好理 阅读全文