C语言
明天VS依旧
嵌入式开发,基于海洋探索设备的研发,通信基站
展开
-
DPDK背景和优势
https://cloud.tencent.com/developer/article/11983331.传统的收发报文方式都必须采用硬中断来做通讯,每次硬中断大约消耗100微秒,这还不算因为终止上下文所带来的Cache Miss。2.数据必须从内核态用户态之间切换拷贝带来大量CPU消耗,全局锁竞争。3.收发包都有系统调用的开销。4.内核工作在多核上,为可全局一致,即使采用Lock Free,也避免不了锁总线、内存屏障带来的性能损耗。5.从网卡到业务进程,经过的路径太长,有些其实未.原创 2021-01-29 11:19:43 · 2058 阅读 · 0 评论 -
链接整理分享
1、Cache基本原理:https://zhuanlan.zhihu.com/p/102293437?utm_source=qq原创 2020-11-24 14:50:35 · 336 阅读 · 1 评论 -
Callback回调函数
Callbck回调函数#include <stdio.h>int callback_1(){ printf("Hello, this is callback_1\n"); return 0;}int Handle(int (* callback)){ callbck(); return 0;}int main(){ printf("Entering Main Function. \n"); Handle(callback_1); return 0;}..原创 2021-01-28 13:13:49 · 194 阅读 · 0 评论 -
sizeof字节对齐
1、根据最大的占的字节变量和偏移量来计算:#include <stdio.h>struct{ int a; //4字节 double b;//8字节 short c;//2字节}A;int main(){ printf("sizeof A =%d",sizeof(A)); return 0;}最大字节变量为double b 为8字节偏移量: a 4 * 0 = 0; b 8 * 1 =...原创 2021-01-27 17:10:26 · 214 阅读 · 0 评论 -
C语言链表
一个简单结点的结构体表示为: struct note { int data; /*数据成员可以是多个不同类型的数据*/ struct note *next; /*指针变量成员只能是-个*/ }; 一个简单的单向链表的图示 1.链表是结构、指针相结合的-种应用,它是由头、中间、尾多个链环组成的单方向可伸缩的链表,链表...转载 2018-04-15 23:25:28 · 420 阅读 · 0 评论 -
Linux中快速定位段错误的方法
在做嵌入式Linux开发的时候,程序很容易出现段错误。段错误一般是内存操作指针出错或是内存溢出等问题,有的时候系统会有一点错误提示,但有的时候就直接提示个Segmentation fault (core dumped) 。如果程序是单线程,那很好处理,编译的时候添加参数-g ,直接使用gdb 单步调试就可以直接定位到问题点在哪了。但是对于多线程,情况就不一样了。多线程进行单步调试不好处理,并且...转载 2018-03-28 23:39:05 · 5787 阅读 · 2 评论 -
FFMPEG学习记录及总结
转载至: https://blog.csdn.net/li_wen01/article/details/60765749FFMPEG是一套非常强大的软件,他主要提供音视频格式转换,图像拉升,添加水印,视频截图等功能。关于FFMPEG的学习资料非常的多,以雷神为主的博客非常详细介绍了FFMPEG的使用和具体实现。但是雷神的博客多以Windows平台开发,对于我等初学者,能做的就是把他们应用到linu...转载 2018-03-28 23:41:00 · 241 阅读 · 0 评论 -
Wireshark基本介绍和学习TCP三次握手
之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包...转载 2018-03-28 23:46:34 · 128 阅读 · 0 评论 -
sizeof&strlen
sizeof:返回对象或者类型所占的内存字节数char :1字节int :4字节指针 :4字节float :strlen:strlen(char*)函数求的是字符串的实际长度,直到遇到第一个'\0',然后就返回计数值,且不包括'\0'原创 2017-10-16 09:36:56 · 200 阅读 · 0 评论 -
gcc编译流程&存储布局&位运算
gcc编译流程:1、将c语言源程序预处理,生成.i文件2、将.i文件编译为汇编语言,生成.s文件3、将汇编语言文件经过汇编,生成目标.o文件4、将各个模块的.o文件链接起来生成一个可执行程序文件C语言的存储布局:1、代码段:2、数据段和缓冲段3、堆4、栈:原创 2017-09-13 23:22:57 · 223 阅读 · 0 评论 -
子函数返回数组(指针和结构体)
有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体。一、先来看依靠指针怎么做例程1: 1 #include "stdio.h" 2 3 char *test(char *tmp) 4 { 5 return tmp; 6 } 7 8 void main(void) 9 {10 printf("%s",t转载 2016-08-08 21:46:07 · 7839 阅读 · 0 评论 -
个人对c语言指针的理解
花了2天看了培训的c语言的视频,总的对指针有一个了解。指针就是地址。int i=5;int *p;p=&i;P为变量,是I的地址。*p的含义为:以p内容为地址的变量。要想在子函数中交换主函数a,b的地址,则可以通过指针来实现。#include void swap(int * a,int * b){ int t; t=*a; *a=*b; *b=t;原创 2016-08-08 21:53:06 · 394 阅读 · 0 评论 -
局部变量、全局变量、堆栈、静态变量
转载自博客:http://blog.csdn.net/jamestaosh/article/details/4513188感谢作者预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放转载 2016-08-09 17:04:42 · 382 阅读 · 0 评论 -
编程中常用的工具&samba
代码查看工具:source insight 笔记:mybase/nyfedit7 查看文件:Notepad++ 远程工具:teamView 文件对比工具: beyond compare win7文件管理:Cloverubuntu下:sudo apt-get install samba samba配置:vi/etc/samba/smb.conf 先给可执行权限然后在末尾加上:原创 2017-09-12 19:23:08 · 388 阅读 · 0 评论 -
linux文件操作—获取文本中指定行的内容
1、用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。2、使用strncpy函数取指定行的某一段char * strncpy(char *s1,char *s2,size_t n); 将字符串s2中最多n个字符复制到字符数组s1中,返回指向s1的指针3、使用fprintf函数把打印输出到日志文件中原创 2017-09-12 18:51:14 · 6374 阅读 · 0 评论 -
守护进程
一、什么是守护进程 守护进程: 守护进程也称精灵进程,是运行在后台的一种特殊进程。守护进程独立于控制终端并且周期性的执行某种任务或者等待处理某些打算的事件。生存周期长,常常在系统引导装入的时候启动,仅仅在系统关闭的时候才终止,可认为守护进程目的就是防止终端产生的一些信号让进程退出。因为它们没有控制终端,所以说它们是在后台运行的,很多服务器的应用和守护进程都有关。 二、守护进程的特征转载 2017-10-31 22:07:09 · 183 阅读 · 0 评论 -
linux—C整理
fork函数后,父子进程会分开,有两个返回值,一个是父进程调用fork函数后返回子进程的ID,一个是是子进程返回是否创建成功,0为成功。相当于fork后面的代码会执行两边,用判断语句来判断是父进程还是子进程。原创 2016-08-09 23:42:31 · 202 阅读 · 0 评论 -
socket详解
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型转载 2017-10-31 22:11:14 · 164 阅读 · 0 评论 -
int*p[ ]与int(*p)[ ]的不同
如int*p[ ]与int(*p)[ ]的区别 举例说明:1)int* p[2] 是一个指向int型的指针数组,即:p是包含两个元素的指针数组,指针指向的是int型。可以这样来用:#include using namespace std;int main(int argc, char* argv[]) {int* p[2];转载 2016-08-08 15:42:13 · 387 阅读 · 0 评论