编程
小鼻祖想吃白萝卜
努力飞啊飞~~~~~~~~~~~~~~~~~~~~~
展开
-
编码学习笔记 —— container_of宏解析
1. container_of宏定义#define container_of(ptr,type,member) ({const typeof((type*)0)->member)*__mptr = (ptr);(type*)((char*)__mptr - offsetof(type, member));})2 container_of宏解析typeof:获取变量或表达...原创 2020-03-26 11:44:37 · 297 阅读 · 0 评论 -
《编码大全》学习笔记 ——前期
参考资料:Steve McConnell《编码大全》第2版纯笔记,无思考程序员是软件食物链的最后一环。架构师吃掉需求,设计师吃掉架构,程序员消化设计。1. 隐寓 2. 前期准备前期准备之于软件开发,好比打地基之于修房子,其重要性不言而喻。前期工作的中心目标就是降低风险:一个好的项目规划者能够尽可能早地将主要的风险清除掉,使项目的大部分工作能够尽可能平稳地进行。...原创 2020-02-11 12:28:56 · 227 阅读 · 0 评论 -
编码学习笔记 ——装载
参考:《程序员的自我修养》程序执行时,所需要的指令和数据必须在内存中才能正常运行。但是,往往程序所需要的内存大于物理内存,无法把所有指令和数据全部放在内存中。通过增加内存来解决这个问题,不太划算,因为相对于内存而言,磁盘比较便宜,因此动态装载就出现了。分页:把地址空间人为地分为固定大小的页,每一页的大小由硬件或操作系统决定。对于系统而言,页的大小是固定的。为什么可执行文件常常被叫做...原创 2019-12-11 17:04:10 · 211 阅读 · 0 评论 -
编码学习笔记 ——线程
关键词:线程、线程安全、锁、可重入、可重入函数、Volatile原创 2019-12-10 14:58:14 · 367 阅读 · 0 评论 -
编码学习笔记 ——静态链接
参考:《程序员的自我修养》第4章链接器:把目标文件按一定的方式链接到一起,形成一个可执行文件。链接器命令ld file1.o file2.o -e main -o exc // 将目标文件file1.o,file2.o以main函数作为程序入口,合成可执行文件exc。objdump -r file.o // 查看文件的重定位表...原创 2019-12-03 18:16:18 · 258 阅读 · 0 评论 -
编码学习笔记 ——目标文件
参考:《程序员的自我修养》第3章真正了不起的程序员对自己的程序的每一个字节都了如指掌。1. 什么是目标文件编译器编译源码后生成的文件,其格式为可执行文件格式。 2. 可执行文件格式...原创 2019-12-02 16:17:12 · 298 阅读 · 0 评论 -
嵌入式开发学习笔记 —— bss、data、rodata、text、自定义段
努力而向上~原创 2019-08-06 20:21:59 · 1453 阅读 · 0 评论 -
嵌入式C语言开发学习笔记 —— 内存陷阱
参考:《嵌入式系统高级C语言编程》1. 内存分配方式(1)从静态存储区域分配。何时分配:程序编译时生存周期:整个程序运行期间例子:全局变量、static变量(2)在栈(stack)上创建。何时分配:函数执行时生存周期:变量作用域期间(3)在堆(Heap)上分配,即动态内存分配。何时分配:由程序员自己决定生存周期:由程序员自己决定用法:malloc(), free...原创 2019-08-01 16:07:14 · 395 阅读 · 0 评论 -
嵌入式开发学习笔记 —— 存储
很多人都说,愿岁月静好。可整个世界都如奔涌的长江一样,哪能停得下来。原创 2019-02-14 15:37:29 · 187 阅读 · 0 评论 -
Python学习笔记 ——self、init
别人说越努力越幸运,我们姑且相信一下吧参考:https://www.cnblogs.com/jessonluo/p/4717140.html1. self是什么?类中声明函数的第一个参数,表示创建实例本身。第一个参数是实例2. 荔枝class Idol: def _init_(self,name): self.name = name 3. i...原创 2019-01-24 22:06:22 · 176 阅读 · 0 评论 -
数据结构学习笔记 —— 哈希表
1. 什么是哈希表(1) 哈希表是从一个集合A到另一个集合B的映射。(2) 集合A中的元素称为键值,集合B中的元素称为hash值。(3) 映射在数学上相当于一个函数,集合A中的元素如何映射到集合B,hash函数决定。(4) 若两个不同的键值对应同一个hash值,这种情况为hash碰撞。2. 哈希与查找设集合A为查找对象,集合B为存储位置,利用hash函数将查找对象与存储位置对应起来,通...原创 2019-01-06 15:45:27 · 345 阅读 · 1 评论 -
嵌入式C语言开发学习笔记 ——从源代码到可执行文件
读书,是为了思考和权衡。1. 可执行文件的建立过程(1)源码 ——> 预编译 ——>编译 ——> 汇编 ——>链接 ——>可执行文件。2. 预编译(1)处理以“#”开始的预编译指令。替换:#include #define 条件编译:“#if”、“#endif”、“#ifdef”、“#elif”和“#else。 保留:#pr原创 2018-12-31 19:23:39 · 939 阅读 · 0 评论 -
数据结构学习笔记 —— 排序
井然有序是最高效的。1. 直接插入排序(1) 思想:假设序列n分为两个部分,有序k和无序(n-k)。排序过程中,每次从无序的部分中取出第一个元素,将它插入到有序表中适当的位置,使之有序。 (2) 时间复杂度:最坏O(n2),最好O(n),平均O(n2)。 (3) 空间复杂度:O(1)。 (4) 对于小规模数组和基本有序的数据而言,直接插入排序比较高效。 (5) 关键代码:先在有序区间...原创 2019-01-03 19:55:09 · 308 阅读 · 0 评论 -
数据结构学习笔记 ——链表
1. 数组的局限创建数组时,需知道数组的大小。分配给数组的内存,在物理结构上是连续的。因此,当内存有限时,无法创建比较大的数组。2. 什么是链表?链表是一种线性表,其存储在物理结构上不连续。链表按链表结构可分为:单向链表、双向链表,循环链表。链表操作:创建、删除、修改3. 单向链表抽象数据结构:typedef struct NODE { Elementtype d...原创 2018-12-29 18:51:05 · 303 阅读 · 0 评论 -
数据结构学习笔记 —— 技巧
StackOverflow上,有人说他看过最逆天的注释:When I Wrote this,only God and I understand this。仅以此句注释下文。学习内容来自微信公众号:码农有道 ——《【数据结构与算法】一些常用的算法技巧总结》1. 巧用数组下标进行统计 countArray[arry[loop]]++;数组arry[]需满足:1)数组arry[] 的类型...原创 2018-12-29 19:39:45 · 199 阅读 · 0 评论 -
嵌入式C语言开发学习笔记 —— CSPL
学习不一定有用,但是不学习是肯定没用的。1. 什么是CSPL?CSPL:Common Stack Protocol Libary(Core Stack Porting Layer),一种通用的可移植的协议栈库,位于操作系统和用户程序之间,屏蔽操作系统的细节,为用户程序提供一系列的服务。2. CSPL可提供的服务任务调度、内存管理、定时器、事件管理、消息调度。配置管理、数据库、HA等。...原创 2018-12-27 15:56:03 · 6602 阅读 · 1 评论 -
嵌入式C语言开发学习笔记 —— 判断CPU大小端
愿你历遍山河,觉得人间值得。大小端:数据在内存中的存放方式。大端:数据的高字节保存在内存低地址中,低字节保存在内存高地址中。小端:反之。endian_et check_endian( ){ { union w { S32 a; char b; } unTemp; ...原创 2018-12-02 11:16:28 · 236 阅读 · 0 评论 -
嵌入式C语言开发学习笔记 —— 内存对齐
1. 内存对齐原因平台原因:不是所有的硬件平台都能访问任意位置的任意数据,有些硬件只能访问特定地址的数据。为了确保代码的可移植性,需要内存对齐。性能原因:CPU通过地址总线来存取内存中的数据。内存对齐后,可大大增加CPU的访问速度。2. 内存对齐原则(1) 数据成员各自对齐 第一个成员的偏移量为0 其余数据成员的偏移量为min(#program pack(),数据成员自身长度)的...原创 2018-12-27 13:58:04 · 293 阅读 · 0 评论 -
嵌入式C语言开发学习笔记 —— 指针
充实,便是一种幸福。原创 2018-12-27 13:34:47 · 496 阅读 · 0 评论 -
数据结构学习笔记 —— 链表问题
今天的朋友圈,在下雪❄️❄️。学习内容来自微信公众号:码农有道 ——《【数据结构与算法】面试之链表问题集锦》1. 判断链表是否为空前提带有头节点head的链表单向链表:head->next == null单向循环链表:head->next == head双向链表:(head->next == head) && (head->pre == ...原创 2018-12-30 13:20:48 · 402 阅读 · 0 评论 -
数据结构学习笔记 —— 递归
不懂才学习,懂了就不需要学习了。f(n) = g(f(n -1));1. 递归的特点自己调用自己,层层嵌套。递归为每一次调用开辟一个栈来存放函数入参、临时变量、返回地址等。2. 递归函数3要素出口条件:递归何时结束。递归:f(n) = g(f(n-1)),求g(x)。初始条件:递归如何开始。function recursion(大规模){ if (end_c...原创 2019-01-03 18:58:07 · 212 阅读 · 0 评论