- 博客(19)
- 资源 (1)
- 收藏
- 关注

原创 STM32变量的存储和堆栈
变量 如上图,这是在KEIL下生成的map文件的最后几行。来理解一下这几个含义,RO:只读,RW:读写,ROM:这个不用解释,固件存储。那么接下的就更好理解了:Code:编译代码段大小;RO Data:编译后只读数据大小;RW Data:编译后读写数据大小。那么,ZI Data怎么理解呢? 大家都知道,一段代码除了代码段(主要指函数或者语法语句),还有变...
2019-10-29 16:07:17
3096

原创 tx2 can通信之epoll接收
上一篇《NVIDIA TX2 CAN端口的使用(一)》介绍了如何在TX2平台上添加CAN相关的模块,本篇将介绍如何进行CAN编码。在linux驱动中,can是以网口的形式进行处理,因此完全可以使用linux下的五种编程模型。以socket为例,常用的IO模型是select、poll、epoll,因本人最近刚学习完epoll(epoll是真心强大,并且好用),所以就直接用了epoll来实现...
2019-06-06 18:20:57
1285
4

原创 线性链表常用接口的实现
线性链表是数据结构中最常见,最常用的结构之一,其动态添加与删除优越性能在很多OS的任务调度中经常被使用到。通过最近的学习与归纳,有不小收获,整理一些常用的接口与实现如下:1.link_list* create_list(void) 创建链表,并包头结点,头结点内容为链表长度(或节点数)2. STATUS head_insert( link_list* list,int index,i...
2019-06-06 17:32:51
813

原创 tx2 can通信之开机自动加载can模块
最近有个新项目使用了TX2及开发板,因地盘通信采用CAN总线,初步查了手册,TX2自身就带了两路CAN外设,于是就放弃了之前USB2CAN的方案,直接使用TX2的CANBUS;特将操作步骤记录在此。 1.查询系统是否挂载了CAN外设 使用 lsmod 指令,该指令主要是用来查询内核当前正常挂载了哪些模块。通过man命令查询lsmod的用法;当前主...
2019-05-08 09:39:07
4506
7
原创 动态工厂模式的实现
常用项目中,工厂模式通常会采用swith的方式进行创建,随着类型的不断增加,就会疯狂增加switch的case项,为了解决这个问题,采用动态注册的方式实现工厂实例的创建。实现思路上,通过提前注册key和构造器,然后在需要创建的地方通过key来找到构造器从何构造出目标对象。
2024-04-11 14:03:09
302
原创 基于mosquito封装的mqtt客户端
mosquito 是一个成熟的mqtt库,包含broker和对应客户端.使用时调用接口比较多,class mosqpp_EXPORT mosquittopp { private: struct mosquitto *m_mosq; public: mosquittopp(const char *id=NULL, bool clean_session=true); virtual ~mosquittopp(); int reinitialise(const char *id, bo
2021-08-20 17:13:39
1614
2
转载 Linux共享库、静态库、动态库详解
1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 程序函数库可分为3种类型:静态...
2020-01-17 14:20:57
540
原创 Json数据日志打印小技巧
通常涉及到网络通信一般都比免不了涉及到json字符串.最近在使用jsoncpp库做开发时,在日志打印这块儿有些头疼,json字符串本身自带格式,即使序列化之后也会出现很多的"\t""\n"等转意字符.如图:为了一屏多显示内容,我们需要去掉json的数据格式,可又不能影响其数据内容.因此需要对json数据做一些处理. 代码部分如下:/*--------------------...
2020-01-13 16:27:46
2221
1
原创 剑指offer--- 重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。使用语言:C++(clang++3.9)时间限制:< 1s空间限制:< 32M解题思路:题目考查重点应该是二叉树的遍历和特性....
2020-01-03 11:35:23
256
1
原创 剑指offer---反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。使用语言:C++(clang++3.9)时间限制:< 1s空间限制:< 32M解题思路:一.采用迭代的方法.二.采用递归的方法.迭代实现:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...
2019-12-31 09:13:24
121
1
原创 剑指offer---用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。使用语言:C++(clang++3.9)时间限制:< 1s空间限制:< 32M解题思路:题目考查重点应该是栈和队列的属性.栈:先进后出;队列:先进先出.依照这个属性,入列就先入一个特定的栈,出列的时候,将入列栈的数据出栈再压入第二个栈,就将原来栈低的数据转换到了栈顶,依次顺序出...
2019-12-30 10:41:28
107
原创 剑指offer--- 空格替换
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。使用语言:C++(clang++3.9)时间限制:< 1s空间限制:< 32M解题思路:题目考查重点应该是字符串的存储和指针,用面向对象来实现确实没什么意思,直接将str转成string对象处理起来相当简...
2019-12-27 16:36:32
128
原创 剑指offer---二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。使用语言:C++(clang++3.9)时间限制:< 2s空间限制:< 32M解题思路:思路一:暴力查询,逐行逐列查询,时间复杂度O(MxN);思路二:二分法,或者十...
2019-12-08 21:08:49
112
原创 剑指offer---从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。使用语言:C++(clang++3.9)时间限制:< 1s空间限制:< 32M解题思路:典型的逆序问题:思路一:可用栈(可以用栈意味着递归也是可以的)思路二:因也用的是C++, 可直接使用数组的转置;思路三:使用容器vector 的头插,不推荐,vector头插效率太低;实现(思路二...
2019-12-05 17:09:11
126
原创 JsonFat--Json 格式化小工具
无意中翻到了年前自己做一个Json格式化工具,拓展功能解析Base64加密的Json数据。不废话,直接看效果:初始界面Json数据格式化对Base64加密的Json字符串进行解密并格式化输出 本想把Json进行Base64加密,无奈源码找不到了,等后面有时间在改吧。需要的同学可扫码关注我的公众<一篇技术贴>,回复:JsonFat获取。...
2019-11-01 14:36:20
672
原创 Linux 系统命令及其使用详解(大全)
名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 参数: -n 或 --number 由 1 开始对所有输出的行数编号 -b 或 --number-nonblank 和 -n 相似,只不过对...
2019-10-29 17:07:29
309
转载 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://ho...
2019-06-13 13:55:25
265
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人