自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr_weng

厚积薄发

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

原创 提高程序运行效率的方法(补充中)

注:以C/C++程序为例一、尽量减少值传递,多用引用来传递参数。    至于其中的原因,相信大家也很清楚,如果参数是int等语言自定义的类型可能能性能的影响还不是很大,但是如果参数是一个类的对象,那么其效率问题就不言而喻了。例如一个判断两个字符串是否相等的函数,其声明如下:bool Compare(string s1, string s2)bool Co

2014-09-02 12:01:56 739

原创 Linux网络编程之socket:由一个进程发起多个连接

让一个客户端发起多个连接,然后只利用其中一个连接发送数据。

2014-09-21 21:46:08 1397

转载 Linux编程之socket:tcp流协议产生的粘包问题及解决方法

首先说明的是发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以消息为单位

2014-09-18 17:48:01 1525

原创 Ubuntu下安装ffmpeg

1.首先登入ffmpeg的官网下载源文件:

2014-09-17 17:40:35 5330 1

转载 Linux网络编程:信号

一、为了理解信号,先从我们最熟悉的场景说起:1. 用户输入命令,在Shell下启动一个前台进程。2. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。3. 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。4. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信

2014-09-14 16:47:06 865

原创 Linux网络编程之socket:使用fork并发处理多个client的请求和对等通信P2P

一、在前面讲过的回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fork出一个子进程专门服务这个客户端。但是子进程退出时会产生僵尸进程,父进程要注意处理SIGCHLD

2014-09-13 18:43:38 1016

原创 Linux编程基础:C标准库IO缓冲区与内核缓冲区的区别

1.C标准库的I/O缓冲区         UNIX的传统 是Everything is a file,键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。用户程序调用C标准I/O库函数读写普通文件或设备,而这些库函数要通过系统调用把读写请求传给内核 ,最终由内核驱动磁

2014-09-12 11:30:26 978

转载 Linux网络编程之socket:socket与字节序以及地址转换函数

一、什么是socketsocket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。

2014-09-12 11:25:08 704

转载 Linux编程基础:文件描述符file descriptor与inode

每个进程在Linux内核中都有一个task_struct结构体来维护进程相关的 信息,称为进程描述符(Process Descriptor),而在操作系统理论中称为进程控制块 (PCB,Process Control Block)。task_struct中有一个指针(struct files_struct *files; )指向files_struct结构体,称为文件 描述符表,其中每个表项包

2014-09-10 16:30:04 979

原创 Linux编程基础:C标准IO库函数与Unbuffered IO函数

先来看看C标准I/O库函数是如何用系统调用实现的。 fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int 类型的编号),分配一 个FILE 结构体, 通常里面包含了:文件fd缓冲区指针缓冲区长度当前缓冲区读取长度出错标志返回这 个FILE 结构体的地址。 fgetc(3) 通过传入的FILE *参数找

2014-09-10 14:51:58 628

原创 Linux编程基础:read/write函数以及(非)阻塞I/O的概念

一、read/write 函数read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的

2014-09-10 14:41:06 685

原创 Linux系统编程:fcntl函数与文件锁

一、fcntl函数功能:操纵文件描述符,改变已打开的文件的属性int fcntl(int fd, int cmd, ... /* arg */ );cmd的取值可以如下:复制文件描述符F_DUPFD (long)设置/获取文件描述符标志F_GETFD (void)F_SETFD (long)设置/获取文件状

2014-09-09 22:51:26 749

原创 Linux系统编程:文件的属性

一、读取文件元数据int stat(const char *path, struct stat *buf);int fstat(int fd, struct stat *buf);int lstat(const char *path, struct stat *buf); stat() stats the file pointed to by path an

2014-09-09 17:11:11 601

原创 Linux系统编程:目录的操作

一、目录的访问功能说明:打开一个目录原型:DIR*  opendir(char *pathname);返回值:打开成功,返回一个目录指针打开失败,则返回NULL

2014-09-09 15:08:00 486

原创 Linux系统编程:文件的读取写入

一、read系统调用一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函数原型:ssize_t read(int fd, void *buf, size_t count);参数:fd :想要读的文件的文件描述符buf : 指向内存块的指针,从文件中读取来的字节放到

2014-09-06 18:36:25 840

原创 Linux系统编程——文件的打开与关闭

#include#include#include#include#include#include#include#include// #define ERR_EXIT(m) (perror(m), exit(EXIT_FAILURE))#define ERR_EXIT(m) \ do { \ perror(m); \ exit(EXIT_

2014-09-06 17:59:06 817

原创 do...while(0)在宏定义中的用法

在Linux内核和其他一些开源的代码中,经常遇到下面的代码:do{ ...}while(0)其用法体现在如下几个方面:1.辅助定义复杂的宏,避免引用的时候出现错误:#defineDOSOMETHING()\foo1();\foo2();以上宏定义的意思是当调用DOSOMETHING()的时候,函数foo1()和foo2()都会被调用当如果你如此

2014-09-04 19:59:56 698

空空如也

空空如也

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

TA关注的人

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