自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tecoes的博客

本博客仅仅是作者对学习的一个记录,转载自网络的文章,如果有侵犯的权益请联系作者做一个声明~~~

  • 博客(15)
  • 收藏
  • 关注

转载 另一种内存映射方法--mmap函数

介绍除了标准的文件 IO,例如 open, read, write,内核还提供接口允许应用将文件 map 到内存。使得内存中的一个字节与文件中的一个字节一一对应。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同.

2020-08-31 23:07:59 554

转载 进程间通信共享内存使用总结

什么是共享内存?共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。注:共享内存没有任何的同步与互斥机制,所以要使用信号量来实现对共享内存的存取的同步。共享内存特点和优势当中共享内存的大致原理相信我们可以看明白了,就是让两个进程地址通过页表映射.

2020-08-31 22:02:12 486

转载 【转载】Linux多线程编程小结

1.Linux进程与线程进程是资源分配的最小单位,线程是CPU调度的最小单位 这句话的意思,关键是最后一句,线程是CPU调度的最小单位,也就是说,本质上操作系统调度的是线程 而不是进程,因为任何一个进程都包含一个 主线程,所以操作系统是对线程进行调度的,这一点,也 解释了,为什么在 线程中做各种循环执行程序(do..while、for、while)时,程序不会死机了,因为线程本身就是会被CPU循环调度。与进程相比,创建的子线程从主线程那继承了什么? 我们知道父子进程间的继承是...

2020-08-30 16:17:18 135

转载 Linux编程之select

Linux编程之selectselect系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。select 机制的优势为什么会出现select模型?先看一下下面的这句代码:int iResult = recv(s, buffer,1024);这是用来接收数据的,在默认的阻塞模式下的套接字里,recv会阻塞在那里,直到套接字连接上有数据可读,把数据读到buffer里后recv函数才会返回,不然就会一直阻塞在那里。在单线程的程序里出现这种情况会导

2020-08-30 15:55:06 197

转载 为什么使用双重指针

一般情况下我们不使用指向指针的指针,因为这带来了操作的复杂性。但有些情况下我们不得不用。当指针作为一个函数的参数输出时,它的作用就显示出来了。例如:设计一个函数:void fun1(char sz[], char search, char * pa)要求:这个函数参数中的数组array是以0值为结束的字符串,要求在字符串sz中查找字符是参数search里的字符。如果找到,函数通过第三个参数(pa)返回值为sz字符串中第一个找到的字符的地址。如果没找到,则为pa为0。实现代码如下:void f

2020-08-30 15:44:42 465

转载 C语言volatile和restrict关键字

volatile和restrict关键字是C语言中一对功能相反的关键字,volatile是禁止编译器优化修饰的变量,restrict是只能使用该关键字优化的指针变量。volatile关键字由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化,编译器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所有这些都要求使用volatile变量。不懂得volatile内容将会带来灾难。比如:.

2020-08-30 15:02:51 376

转载 【转载】C语言之结构体基础知识

转载自https://blog.csdn.net/yanggangclcsdn/article/details/49718131(C语言中的结构体(struct))这篇文章写的还是不错的,条理清晰,唯一不足是对结构体与指针方面介绍的不足===============================================================================================C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类

2020-08-09 22:06:54 200

转载 【转载】Windows netstat 查看端口、进程占用

在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.操作:操作分为两步:1)查看该端口被那个PID所占用; 方法一:有针对性的查看端口,使用命令 netstat –ano|findstr “<端口号>”(个人测试,win7下DOS命令中,端口不能带“”),如图,最后一列为PID。图中的端口号为1068,所对应的PID为3840。 ...

2020-08-09 21:51:14 1615

转载 flash和DDR的概念及解释

对做嵌入式设备的开发者来说,经常会听到flash和设备内存DDR这些名词。嵌入式设备运行起来以后,输入ls命令,会看到很多设备目录,比如/home, /dav, /dev等,这些目录下的文件都是存在flash或者内存DDR里面的。具体区分可以敲入mount命令看下,挂载成功的路径和文件是存储在flash或者emmc中的,特点是掉电保存,不丢失数据。其他的目录下的文件是存储在DDR内存中的,掉电数据就丢失了。对软件开发来说,可以简单理解为flash和DDR代表不同的存储芯片,文件存在flash还是DDR是

2020-08-09 21:39:00 14056

转载 gcc静态库链接选项 --whole-archive --no-whole-archive

在大型工程开发中,工程目录会分的非常细,在modules下会创建很多模块,每个modules都会编译成.a静态库文件供主路径/app/src/下使用,这样就会产生链接库问题,比如在app下的函数要调用静态库里的函数,会出现未定义的错误,需要通过-Wl,--whole-archive -lXXX-Wl,--no-whole-archive在脚本里修改下链接库的选项,这里XXX代表静态库的名称--whole-archive是链接器选项,作用是设置连接器将库中的符号全部加载到链接的库中,在编译的时候要..

2020-08-09 15:56:44 5515

原创 source insight显示完整文件路径方法

Option->preference->display ,去掉勾选“trim long path names with elipses”,这样路径中省略号就没有了,显示完整的路径

2020-08-09 15:38:02 1875

原创 windows下的常用快捷键

ctrl + R 刷新当前页面ctrl + space 中英文切换ctrl + A 全部选中当前页面的内容ctrl + X 剪切ctrl + C 复制ctrl + V 粘贴ctrl + Y 返回上一步ctrl + Z 撤销上一步操作ctrl + tab 小菜单向下切换标签(比如浏览器的多个页面切换)ctl + Alt + del 打开任务管理器...

2020-08-09 15:28:40 98

原创 C语言指针和字符串详解

字符串可以分配在内存的不同区域,通常用指针来支持字符串操作,指针支持动态分配字符串和将字符串作为参数传递给函数。知道字符串的位置对理解程序的工作原理以及用指针访问字符串有帮助。字符串的位置决定它能存多久,以及程序的哪些部分可以访问它。比如说,分配在全局内存的额字符串会一直存在,可以被多个函数访问。静态局部字符串也一直存在,不过只有定义他们的函数才能访问,分配在堆上的内存在释放之前会一直存在,也可以被多个函数访问。字符串通常以字符指针的形式传递给函数和从函数返回,可以用字符指针传递给字符串,也可以用字符常

2020-08-09 15:10:19 724

原创 指针和数组之指针表示法和数组表示法

数组是能用索引访问的同质元素连续集合,这里的连续是指数组元素在内存中是相邻的,中间不存在空隙,跟链表的不一样,而同质是指元素都是同一种类型。1.指针表示法和数组表示法指针在处理数组时很有用,可以用指针指向已有的数组,也可以从堆上分配内存然后把这块内存当做一个数组使用。数组表示法和指针表示法某种意义上可以互换,程序使用上可以相互转换,方便理解程序,一般数组下标形式方便看懂程序。int vector[5] = {1,2,3,4,5};int * pv = vector; //vector=&am

2020-08-02 21:06:24 8078

原创 数组指针在一维数组和二维数组中应用

数组指针:指向数组整个元素的指针,不是指向数组首元素的地址的,但指针的值等于数组首元素的地址,本质是指针,要仔细理解下。指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;*p[n]:根据优先级,先看[],则p是一个数组,再结合*,这个数组的元素是指针类型,共n个元素,这是“指针的数组”,即指针数组

2020-08-02 17:30:19 808

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除