- 博客(99)
- 资源 (14)
- 收藏
- 关注
原创 一种简单安全的消息队列的C语言解决方案
基于嵌入式编程,对于有安全等级要求的项目,一般都会对编码有诸多安全性考虑的规则限制。在实际的编程中,消息队列的使用还是比较频繁的,但是对于不使用操作系统的情况下,消息队列相关的功能就需要手动实现。下面将会介绍一种简单的、安全的消息队列的实现方式。
2024-09-28 00:15:00 996
原创 共享服务器chfs(CuteHttpFileServer)搭建
本文旨在简单介绍一个在Linux环境下轻量级的文件共享服务器chfs(CuteHttpFileServer) 的简单用法,权作为记录以便后续再次使用。
2024-08-12 23:15:00 1598
原创 Linux -- Ubuntu 修改Home目录下的中文目录为英文
在安装Ubuntu系统时如果选则了中文安装系统,则在安装完成后默认在home目录下自动创建几个常用的目录,并且目录名称自动选择为安装系统时选择的语言。界面上操作回方便使用,但是如果在终端上操作就会很感到很忧伤,因为你需要在终端敲入中文(Ubuntu 16.04终端支持中文输入,Ubuntu 14.04也可以,(博主自己为ubuntu 18.04也可)但具体在哪一个版本开始支持的就不了解了),这种输入方式会让人极度不习惯。
2022-10-24 20:30:31 4963 4
原创 Linux系统下基于setitimer的高精度嵌入式软件定时器实现方案
基于上一篇博文Linux环境下的setitimer的延时/定时器的使用,我们已经了解定时器 setitimer setitimer 在同一个进程中只能使用一个的缺点,作为一个嵌入式的开发人员总觉得有点说不出的苦恼,那么本博文将基于这种力不从心的苦恼,编写一个满足基本要求的软件定时器。...
2022-07-02 22:39:27 1787
原创 Linux环境下搭建本地git服务和客户端(超级详细)
本文主要说明在本地电脑上部署git服务器和客户端的过程。设置的过程详细的令人发指,如果是初学或者不熟悉git的相关指令的话,那么本文将会是最优的指导
2022-06-19 22:37:55 3181 1
原创 利用VS2010生成win32和win64的动态库的方法(详细图文说明)
利用VS2010生成win32和win64的动态库的方法,用超级详细的步骤加上图片示意,说明动态库的生成与测试的完成的详细的过程,非常适合新手尝试。
2022-06-16 22:14:17 3467
原创 Linux环境下的setitimer的延时/定时器的使用
在linux C嵌入式开发编程中,经常会遇到精度要求比较高的周期性的定时事件,对于一般性要求 1ms 级别的精度,linux下可以使用 select() 函数实现,但是 select() 有一个弱点就是其 定时的误差会累积,运行到一定程度的时候,实际误差可能已经超出了允许的范围,那么在这种情况,setitimer() 函数可以解决误差累积这样的问题。...
2022-05-22 22:43:43 5566
原创 Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录
makefile进行项目管理,进行多目录文件编译、编译过程中自动生成编译目录、自动搜所当前目录下的所有源文件、生成静态库、合并静态库、静态库中函数的交叉调用等。根据一个比较特殊的需求而编写的一个工程模板,内容比较杂单没有进行系统性的解释说明。
2022-05-15 22:18:48 9270 5
原创 Linux系统自己打造的vim配置文件(自用)
做嵌入式开发,经常能够在一些新的环境下配置各种各样的环境,做为默认使用的编辑器,VIM非常重要,但是每次都要折腾来折腾去的配置,所以今天特意记录一下,方便后续直接使用。
2022-05-13 21:48:14 604
原创 Linux环境设置用户自定义应用的开机自启动
做 Linux 嵌入式开发,经常会遇到要设置自己的应用程序在系统开机的时候自动启动,并且一般情况我们不想安装一些额外的软件去实现此种需求。那么直接根据当前系统自带的默认的一些工具实现用户软件的开机自启动。
2022-05-09 22:37:23 7220
原创 markdown中让表格居中的写法
示例表格序号偏移说明10表格说明22表格说明34表格说明实现的代码是下面这样的。<!-- 让表格居中显示的风格 --><style>.center { width: auto; display: table; margin-left: auto; margin-right: auto;}</style><p align="center"><font fac..
2022-04-21 22:07:56 14188
原创 Linux -- 多线程编程之 - 基础实现二
为了进一步减少处理器的空转时间,支持多处理器以及减少上下文切换的开销,进程在演化中出现了另一个概念 --- 线程,它是进程内独立的一条运行路线,是内核调度的最小单元,也被成为轻量级进程。线程具有高效性和可操作性,在嵌入式发开中运用的十分广泛。
2022-03-17 23:11:10 6554
原创 Linux -- 多线程编程之 - 基础实现一
为了进一步减少处理器的空转时间,支持多处理器以及减少上下文切换的开销,进程在烟花中出现了另一个概念 --- 线程,它是进程内独立的一条运行路线,是内核调度的最小单元,也被成为轻量级进程。线程具有高效性和可操作性,在嵌入式发开中运用的十分广泛。
2021-12-27 22:42:13 5216 1
原创 Linux -- 多进程编程之 - 守护进程的出错处理
因为守护进程完全脱离终端控制,所以不能像其它进程一样将错误信息输出到控制终端。所以如何处理错误消息是一个问题。在Linux系统中,一般通用的办法是使用syslog服务,将程序中出错信息输入到系统日志文件中(如"/var/log/messages",此文件需要用用root权限的用户查看),从而可以直观地看到程序的问题所在。在不同的Linux发行版中,系统日志的文件路径全名可能有所不同(比如可能是"/var/log/syslog")。
2021-12-05 21:53:40 6366
原创 Linux -- 多进程编程之 - 守护进程
守护进程是一个生存期较长的进程,他常常在系统引导装入是启动,仅仅在系统关闭的才终止。也就是通常所说的 Daemon 进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 Linux 中很多系统服务都是通过守护进程实现的。
2021-11-27 23:37:31 7258
原创 Linux -- 多进程编程之 - 僵尸进程
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
2021-11-13 23:53:34 5673 4
原创 Linux -- 多任务机制(任务、进程、线程)介绍
多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 Linux就是一个支持多任务的操作系统,多任务操作系统使用某种调度策略支持多个任务并发执行。事实上。(单核)处理器在某一时刻只能执行一个任务。每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用CPU)时,时间片递减,操作系统会在当前任务的时间片用完时调度执行其他任务。由于任务会频繁地切换执行,因此给用户多个任务同时运行的感觉。多任务操作系统中通常有3个基本概念:任务、进程、线程。
2021-11-04 23:04:25 6186
原创 Linux -- exit()函数、_exit()函数、return的说明与使用
exit()函数和_exit()函数都是用来 终止进程 的。return是C语言关键字,主要用于子函数的返回,标识这个子函数的结束。
2021-10-24 09:15:00 11084 1
原创 OpenWRT编译 -- 出现‘...net/mac80211/mac80211.ko‘ is missing的错误
大爷来进来玩呀(*^▽^*)
2021-10-24 00:36:47 5770 15
原创 Linux -- Linux下库的生成和使用
在写程序的过程中,基本上都要依赖各种各样的库,比如标准C库等等,使用库也很大程度上减少了重复不必要的编程,也使得编写的程序精简不少。所以,当我们在编程中用到自己开发的使用比较频繁的资源的时候,也希望能够编译成库的模式。在需要用到的时候直接引用即可。那么接下来就简单描述下在 Linux 环进行的动态库和静态库的生成和使用。
2021-03-19 17:43:09 5602 4
原创 C语言 -- string.h中函数功能详解与手动实现 - 03(常用函数memchr、strchr、strstr、strspn、strlen、strnlen...)
一般系统中提供一个标准的 C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。
2021-01-27 22:20:41 3867
原创 C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)
一般系统中提供一个标准的 C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。
2021-01-25 22:14:48 2946 12
原创 C语言 -- string.h中函数功能详解与手动实现 - 01(常用函数memset、memcmp、strcmp、strncmp ...)
一般系统中提供一个标准的C库 string.h ,用于操作各种操作字符串 strxxx、内存 memxxx 的库函数。作为 C标准库 的一部分,它们被强制要求可以在任何支持 C语言 的平台上运行。 不管是在面试中还是平时的工作中,对 string.h 文件中的大部分的函数的都有涉及,并且会经常遇到手撕某个或者某几个库函数的题目,其重要程度可想而知。
2021-01-24 14:43:42 3710 7
原创 数据结构(廿六) -- C语言版 -- 图 - 图的遍历 -- 邻接表 - 深度/广度优先遍历/搜索(DFS、BFS)
图是一种非线性的数据结构,图的遍历指的是:从图中的某一顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点都被访问且仅被访问一次。根据遍历路径的不同,通常有两种遍历图的方法:深度优先遍历(Depth First Search)和广度优先遍历(Breadth First Search)。它们对无向图和有向图都适用,图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。
2020-12-19 19:16:50 5222 28
原创 数据结构(廿五) -- C语言版 -- 图 - 图的遍历 -- 邻接矩阵 - 深度/广度优先遍历/搜索(DFS、BFS)
图是一种非线性的数据结构,图的遍历指的是:从图中的某一顶点出发,沿着一些边访问图中所有的顶点,使得每个顶点都被访问且仅被访问一次。根据遍历路径的不同,通常有两种遍历图的方法:深度优先遍历(Depth First Search)和广度优先遍历(Breadth First Search)。它们对无向图和有向图都适用,图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。
2020-12-08 22:29:42 6498 8
原创 OpenWRT编译 -- 嵌入式系统Openwrt移植SQLite3数据库
SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还是私有。SQLite是世界上部署最广泛的数据库,其应用程序比我们所能统计的还要多,其中包括几个引人注目的项目。SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL数据库不同,SQLite没有单独的服务器进程。SQLite直接读写普通磁盘文件。包含多个表、索引、触发器和视图的完整SQL数据库包含在单个磁盘文件中。
2020-12-05 19:05:01 4644
原创 Android -- 让我一个外行来告诉你Android的多Activity切换中保持Socket长连接的一个实现方法
主要介绍并实现在android中的socket客户端在多个界面切换时保持socket的长链接的实现说明。
2020-11-25 10:16:44 6226 38
原创 数据结构(廿四) -- C语言版 -- 图 - 图的存储结构 -- 十字链表、邻接多重表、 边集数组
在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。从图的逻辑结构定义来看,图中任何一个顶点都可以看成是第一个顶点。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。
2020-09-05 22:56:42 7701 9
原创 数据结构(廿三) -- C语言版 -- 图 - 图的存储结构 -- 邻接表、逆邻接表
在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。从图的逻辑结构定义来看,图中任何一个顶点都可以看成是第一个顶点。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。那么本博文将带你就 “邻接表(逆邻接表)” 来窥探一二。。。
2020-08-15 19:22:48 14848 1
原创 数据结构(廿二) -- C语言版 -- 图 - 图的存储结构 -- 邻接矩阵
在图中任何两个顶点之间都可能存在联系,所以图的存储结构应该需要根据具体问题的要求来进行设计。常用的存储结构有邻接矩阵、邻接表(逆邻接表)、十字链表、邻接多重表、 边集数组。那么本博文将带你就“邻接矩阵”来窥探一二。。。
2020-08-02 01:01:24 9243 19
原创 数据结构(廿一) -- C语言版 -- 图 - 图的基本概念
图(Graph)是一种较线性表和树更为复杂的数据结构,在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中 ,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素(即其孩子节点)相关 但只能和上一层中一个元素(即其双亲节点) 相关,而在图形结构中,结点之间的关系可以是任意的 ,图中任意两个数据元素之间都可能相关。
2020-07-26 20:08:00 10051 40
原创 Linux -- VMware虚拟机配置文件(.vmx)恢复或者修改
在windows下Vmware虚拟机文件出现“无法打开虚拟机…未找到文件”的问题,本文将带你立马解决。。。。
2020-07-13 14:49:43 13132 19
原创 数据结构(二十) -- C语言版 -- 树 - 霍夫曼树(哈夫曼树、赫夫曼树、最优二叉树)、霍夫曼编码
霍夫曼树也称为称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度霍夫曼编码,又译为哈夫曼编码、赫夫曼编码,。是一种用于无损数据压缩的熵编码(权编码)算法。由美国计算机科学家大卫·霍夫曼(David Albert Huffman)在1952年发明。
2020-07-04 21:04:42 5282 15
原创 数据结构(十九) -- C语言版 -- 树 - 树、森林、二叉树的江湖爱恨情仇、相互转换
在满足树的条件下,树可以是任意形状,一个节点可以有任意多个孩子。在前面的存储结构中,提到了树的孩子兄弟方法可以将一个树用二叉链表进行存储,所以借助二叉链表,树和二叉树可以进行相互转换,从物理结构来看,他们的二叉链表是相同的。因此,只要我们设定一定的规则,用二叉树来表示树甚至森林是可以,森林与二叉树也可以相互转换。
2020-06-28 22:34:11 6243 28
原创 数据结构(十八) -- C语言版 -- 树 - 二叉树的线索化及遍历 -- 线索化后的直接前驱、后继获取
二叉树的线索化的目的就是为了方便二叉树节点的遍历和访问,那么既然要遍历,那么也就说明有顺序,也就是前后,但是既然提到了线索化,那么还是会很好奇线索化后某个节点的前驱节点、后继节点应该怎么取获取。那么本博文就带你了解。
2020-06-26 00:02:05 12510 17
一种简单易用的通用循环队列的C语言解决方案
2024-08-12
一种简单安全的消息队列的C语言解决方案
2024-08-01
linux下基于setitimer高精度多通道软件定时器
2022-05-19
Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录
2022-05-15
数据结构-树的实现代码(C语言版).rar
2021-10-27
数据结构-队列的实现代码(C语言版).rar
2021-10-27
数据结构-栈的实现代码(C语言版).rar
2021-10-27
数据结构-链表的实现代码(C语言版).rar
2021-10-27
数据结构-图的实现代码(C语言版).rar
2021-10-27
Android的多Activity切换中保持Socket长连接的一个实现方法
2020-09-26
SerialPortTest.rar
2020-05-05
字符串转换工具-含源码.rar
2020-02-15
nfqueue-tcpip-socket.rar
2019-11-24
C#下TCPIP的客户端和服务端的代码-winform
2019-02-25
生成MD5 32byte(256bit)的方法
2019-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人