![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
工作问题
文章平均质量分 50
llzhang_fly
这个作者很懒,什么都没留下…
展开
-
linux下多线程获取互斥锁,多线程运行时机
如果多个线程试图执行这一代码块(一个临界区),事实上只有一个线程能够持有该互斥量(其他线程将遭到阻塞),即同时只有一个线程能够进入这段代码区域,原创 2022-09-01 22:54:07 · 426 阅读 · 1 评论 -
git和svn的区别
svn是集中式版本控制系统;git是分布式版本控制系统。svn就是所有人修改的都是服务器上的程序,如果有人修改了同样的部分,那就冲突了。所以呢,一般团队会约定,对于公共部分的程序,尽量标注出开发人员特有标识,又或者A从上添加,B从下添加。git就是开发人员创建自己的分支,这个分支就相当于将源码copy一份在本机上,之后修改的都是本地的代码,可随时拉取服务器的代码进行同步,git可创建无数分支,开发人员只需将自己修改的代码提交就可以了,这样冲突的几率会小很...原创 2022-04-11 09:36:14 · 435 阅读 · 0 评论 -
Linux时间函数总结
Linux时间函数time()、ctime()、ctime_r()、localtime()、localtime_r()、asctime()、strftime()的转换关系_半夜摘星星的博客-CSDN博客上面这个图就是它们所有函数的关系转换,比较清晰,不需要太多文字描述。下面是它们的代码实现过程:#include<stdio.h>#include<unistd.h>#include<time.h>#include<error.h>#转载 2022-04-10 18:22:21 · 832 阅读 · 0 评论 -
有限状态机
#if 0【状态机】1、什么是状态机2、有限状态机3、状态机的2中类型4、状态机的主要用途5、状态机解决了什么问题6、C语言实现状态机实例1、什么是状态机 状态机最初应用在数字电路设计领域,适合描述有先后顺序或者有逻辑规律的事情; 状态机的本质:对有逻辑顺序,或时序规律事件的一种描述方法; 状态机通过响应一系列事件而运行;当到达终态,状态机停止运行。 即:事务的状态在某事件的触发下,从其中的一个状态切换到另一个状态,直到到达终态。2、有限状态机...原创 2021-12-24 22:12:50 · 1304 阅读 · 0 评论 -
文件IO、标准IO的区别及其效率
系统IO:Unix/Linux下的系统文件IO,即文件访问机制不经过操作系统内核的缓存,数据直接在磁盘和应用程序地址空间进行传输。标准IO:带缓存的IO,又称为标准IO(C标准库中提供了标准IO库,即stdio),它实现了跨平台的用户缓存解决方案。文件IO 和 标准IO的概念【文件I/O】文件I/O是操作系统封装了一系列open、close、write、read等API函数构成的一套用来读、写文件的接口供应用程序使用,通过这些接口可以实现对文件的读写操作,但是效率并不是最...原创 2021-09-05 18:02:28 · 5720 阅读 · 0 评论 -
linux中 select() 函数的第一个参数为什么是监听的最大描述符加1呢
select() 函数原型: /* According to POSIX.1-2001 */ #include <sys/select.h> /* According to earlier standards */ #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int se原创 2021-09-05 16:41:41 · 1234 阅读 · 0 评论 -
什么是命令注入,命令注入如何避免?
1、什么是命令注入Command Injection,即命令注入攻击,是指由于嵌入式应用程序或者 web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。在命令注入的漏洞中,最为常见的是PHP的命令注入。PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函...原创 2021-08-13 23:13:27 · 16520 阅读 · 1 评论 -
2021-06-27 linux 内核双链表接口函数
原创 2021-06-27 17:06:40 · 92 阅读 · 0 评论 -
嵌入式 软件架构浅谈
一个好的软件框架,对于后续业务功能扩展开发、问题分析定位、功能维护都有着 “卓越” 的优点,为什么这么说呢?且听下面分析:1、程序架构清晰明了、原创 2021-06-10 23:40:57 · 232 阅读 · 2 评论 -
C语言字节对齐、位域、枚举、联合体
转载:https://blog.csdn.net/weixin_44627813/article/details/110352439转载 2021-06-10 23:17:04 · 63 阅读 · 0 评论 -
Linux--进程初识、fork函数、进程状态转换
总结的好,学习下,有空敲敲代码。https://blog.csdn.net/weixin_44627813/article/details/114547383转载 2021-06-10 23:14:23 · 62 阅读 · 0 评论 -
Linux--信号
如下博客对信号总结的xianghttps://blog.csdn.net/weixin_44627813/article/details/115607180?spm=1001.2014.3001.5501转载 2021-12-17 07:40:12 · 65 阅读 · 0 评论 -
整数、字符存储,以及柔性数组的使用
1、如何将数据传递给 FuncHandle(int event, void *inParam, int inParamSize) 类型的数据?为什么要使用 void *类型接收传入参数,you原创 2021-06-10 22:49:27 · 159 阅读 · 0 评论 -
linux C 线程池
1. 总结理解线程池的是什么?线程池就好比水龙头的水流入一个较大的水池,当需要水的时候,5个人挑着扁担,每个人同时可以去打10桶水(各自打各自的2通水,互不影响),然后挑着就走。如果没有水池,那么每个人都需要在从水龙头上接自己的2桶水,谁先到水就先打水,这样打水的效率极低,5个人都需要排队打10桶水。所以:线程池,顾名思义就是由多个线程组成的“水池”,当有任务需要执行时,由空闲线程进行处理,若没有任务,则线程处于休眠等待的状态。什么时候需要创建线程池呢?(为什么要使用线程池?)如果一个应原创 2021-04-25 23:35:45 · 1026 阅读 · 0 评论 -
select()和accept()区别、socket编程:服务器如何判断是否有客户端发起链接请求
参考:https://blog.csdn.net/lsgqjh/article/details/65629609select:查看指定fd_set中socket状态,如果fd_set中有套接字准备就绪(触发(读、写或执行)),则会返回,返回值为触发的套接字个数accept:经过创建套接字socket()绑定bind()以及listen()之后,将监听socket和客户端socket建立一个全新连接,并返回client的socket信息;判断是否有客户端发起链接请求, 一般用select(),.转载 2021-04-20 23:21:40 · 1543 阅读 · 0 评论 -
fopen 用ab+打开,读、写文件时,指针在哪里
【问题】打开文件都是向文件添加数据,就是以a+方式打开,用ftell函数直接得到当前位置,如果不为0,则说明文件不为空;但调试发现打开文件后用ftell函数得到的当前位置值为零?ab+表示以二进制方式打开,数据写入时在原内容后追加;打开后指针在文件头部(所以 ftell() 获取的当前文件中已写入的数据长度为0);但是fwrite的时候会判断打开模式,如果是ab+则移动到文件尾再写入ftell() 功能:获取当前读写位置偏离文件头部的字节数.总结:1)用fopen函数打开文件时,文件指针原创 2021-04-02 21:22:08 · 7784 阅读 · 0 评论 -
遍历某目录找到文件修改时间最老的文件
实现功能:打开某目录,查找该目录下文件的修改时间最老的那个文件;代码如下:#include <sys/types.h>#include <sys/stat.h>#include <time.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <dirent.h>#include <string.h>.原创 2021-03-27 13:58:16 · 699 阅读 · 0 评论 -
linux 改变GCC编译器的字节对齐方式
linux C 字节对其简介在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。 例如,下面的结构各成员空间分配情况: struct test { ch...原创 2020-09-24 23:49:58 · 4291 阅读 · 1 评论 -
本地进程间通信——Unix域套接字
本地进程间通信机制管道对于本地进程间通信,普通管道提供了相关进程(都有相同的祖先)之间通信的一种方法,但是普通管道存在两种局限性:1)它只能在“相关进程间”(即父子进程)使用; 2)它是半双工的(半双工也就是收发不能同时进行)。命名管道解决了第一个局限性,他能在不相关的进程之间进行数据通信,但是同样具有第二个局限性,即通常他们是半双工的。域套接字消息队列和unix域套接字没有上面所说的局限性的同性方法。使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通原创 2020-09-20 21:48:31 · 5733 阅读 · 0 评论 -
linux 静态库和动态库应用简介
1. linux/windows 动态库和静态库区别:windows: 动态库: xxx.dll 静态库: xxx.liblinux: 动态库: xxx.so (201806做的项目,使用linux动态库,这样目标程序比较小;如何在makefile中增加动态库的调用) 静态库: xxx.a2. 静态库和动态库区别:1)最大区别: 加载的时刻不同 静态库在程序编译阶段加...原创 2018-06-23 16:54:06 · 304 阅读 · 0 评论 -
gcc 编译流程简介
gcc 命令常用选项简介gcc 编译程序,主要分为4个阶段(预处理、编译、汇编、链接),每一个阶段的编译选项不同:-E, -S, -c, -o编译阶段 编译选项 生成文件 编译命令 1)预处理:将包含的.h 头文件相关的内容包含到.c 文件中 -E hello.i gcc -E hello.c -o hello.i 2)编译:生成汇编代码 -S hello.s(汇编代码) gcc -S hello.i -o hello.s 3)汇编:原创 2020-09-20 12:16:53 · 159 阅读 · 0 评论 -
信号量与条件变量的区别
问题场景:在实际程序处理中,经常会用到“触发某条件(认证、或判断用户合法性)后,进行一系列的处理,然后将结果返回,若返回结果正确,则继续进行后面的处理,否则退出”;一般等待结果有如下几种处理方式:1)sleep() 死等,然后在 while(1) {} 中判断返回结果的状态; 若有实时性要求,还需要进行超时处理(超时也是处理失败);2)在linux 多任务的系统中,sleep死等必然会导致系统运行实时性差;所以可以使用信号量、共享内存、或者消息队列等通信方式,让线程处于休眠等待状态。3)也可原创 2020-08-01 23:32:56 · 3135 阅读 · 0 评论 -
Linux-DEVICE_ATTR()介绍及使用示例
转自:https://www.cnblogs.com/lifexy/p/9799778.html1.介绍使用DEVICE_ATTR,可以实现驱动在sys目录自动创建文件,我们只需要实现show和store函数即可.然后在应用层就能通过cat和echo命令来对sys创建出来的文件进行读写驱动设备,实现交互.2.DEVICE_ATTR()宏定义DEVICE_ATTR()定义位...原创 2019-10-01 16:16:08 · 1078 阅读 · 0 评论 -
Android source build/envsetup.sh 及lunch 过程
https://blog.csdn.net/desler/article/details/47857889转载 2020-03-20 08:38:51 · 258 阅读 · 0 评论 -
source /etc/profile作用
source /etc/profile 文件的作用linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效。问题描述:在/etc/profile中添加环境变量后,是使用source /etc/profile编译后只能在当前终端生效;重新开启一个终端后,该环境变量失效。解决方法:重启系统:reboot,问题解决;因...原创 2020-03-19 23:43:52 · 54565 阅读 · 3 评论 -
android.mk编译规则,1个mk文件编译多个模块
最近项目上,程序编译是使用 android.mk 进行管理和编译的,之前一直使用 makfile,最目前这个机制不太了解;经过这几天了解,现将自己的理解总结如下,有新理解后续再更新。。。。。。Android.mk 自我理解1. android.mk 是用来梳理文件的编译关系,即通过最顶层的base_build.mk 文件,经过层层目录的 android.mk 选择(#include ...原创 2020-03-19 22:44:25 · 4445 阅读 · 1 评论 -
C语言中不安全函数、安全函数
转载链接:https://www.cnblogs.com/balingybj/p/4730795.html(因转载的不能提交,只能这样了)C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作(strcpy、strcat、sprintf 和 gets)。一般来讲,想“避免使用 strcpy()”和“永远不使用 gets()”这样严...原创 2020-03-19 08:37:07 · 3750 阅读 · 0 评论 -
C学习:const修饰、结构体指针及位域使用
https://blog.csdn.net/helaisun/article/details/80686073?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task原创 2020-03-18 22:52:34 · 444 阅读 · 0 评论 -
什么是回调函数?为什么要使用回调函数?如何使用回调函数?
1. 回调函数:函数指针的调用,即是一个通过函数指针调用的函数;如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。In computer programming, a callback is any executable code that is passed as an argument to other code, whic......原创 2020-03-17 23:07:45 · 99963 阅读 · 12 评论 -
MQTT学习笔记
转载:https://www.cnblogs.com/xcywt/p/10397538.htmlMQTT学习笔记因为工作需要,了解了一下MQTT。顺便记下来,现在还不会用。一、概述MQTT(Message Queuing Telemetyr Transport 消息队列遥测传输协议):基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/I...转载 2020-03-17 22:31:37 · 322 阅读 · 0 评论