3 I_O_fly

尚未进行身份认证

身为一个喜欢算法的小菜鸡,喜欢自己自学

等级
TA的排名 3w+

同步异步与阻塞非阻塞的区别 (不定时更新)

同步异步与阻塞非阻塞的概念对于很多初学者来说是一个模糊的概念,其实我们的生活中存在着很多同步和异步的例子。同步和异步关注的是消息通信机制在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处...

2019-12-16 20:48:42

C柔性数组

#include<stdio.h>typedef struct _SoftArray{ int len; int array[];}SoftArray;int main(){ int len = 10; printf("The struct's size is %d\n",sizeof(SoftArray));}我们可以看出...

2019-12-16 11:43:41

sscanf的使用方法

sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。sscanf:原型:int sscanf(const char *str, const char *format,......);说明:sscanf()会将参数str的...

2019-12-05 15:35:43

HTTP请求和MIME介绍

HTTP请求和MIME介绍HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文。请求行(格式):Method Request-URI HTTP-Version CRLFMethod:方法。GET 请求获取由Request-URI所标识的资源。 POST 在Request-URI所标识的资源后附加新的...

2019-12-05 14:12:41

值得学习的C语言开源项目

- 1. WebbenchWebbench是一个在Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench...

2019-12-04 16:24:27

回车符和 换行符的区别

首先介绍一下“回车”(carriage return,’\r’)和“换行”(line feed,’\n’)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人...

2019-12-04 14:28:09

CGICC编程

嵌入式linux项目开发(一)——CGIC编程一、CGIC简介1、CGI简介CGI(Common Gateway Interface)是外部应用扩展应用程序与WWW服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而CGI规范就定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序...

2019-12-04 12:01:40

fork()函数详解

我们都知道通过fork()系统调用我们可以创建一个和当前进程印象一样的新进程.我们通常将新进程称为子进程,而当前进程称为父进程.而子进程继承了父进程的整个地址空间,其中包括了进程上下文,堆栈地址,内存信息进程控制块(PCB)等.  1.父子进程  那么我们首先来先说说父进程和子进程之间的区别:父进程设置了锁,子进程不继承 进程ID不同 子进程的未决告警被清除 子进程的未决信号集设...

2019-11-26 17:38:56

exec函数用法总结

1. exec函数说明fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程由了独立的地址空间。),也就是这两个进程做完全相同的事。在fork后的子进程中使用exec...

2019-11-26 17:36:38

curl库中curl_easy_setopt函数详解

#include <curl/curl.h>CURLcodecurl_easy_setopt(CURL *handle, CURLoption option, parameter);说明:此函数用来告诉 libcurl 执行什么样的动作。该函数有 3 个参数(该函数的可设置选项非常之多):第 1 个参数 handle 是由 curl_easy_init() 返回的句柄;...

2019-11-21 11:15:24

Linux curl最详细命令详解

curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;curl提供了一...

2019-11-18 15:10:05

彻头彻尾的理解kmp

作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。 然近期因开了个算法班,班上专门讲解数据结...

2019-11-15 12:03:56

Ubantu VS code安装

sudo dpkg -i + 安装包名字

2019-11-14 16:52:01

C/C++调用sqlite3接口详解

qlite3的C/C++接口用法可分为两种:回调形式与非回调形式。所谓回调形式其实就是通过回调的方式处理sql语句执行结果,非回调形式就是待sql语句执行完毕后再通过返回值和相关函数来判断、获取执行结果。一、sqlite3非回调形式接口用法1、sqlite3_open 打开sqlite3数据库的连接在sqlite3数据库管理系统中,用结构体sqlite3来表示一个打开的数据库对象(...

2019-11-13 08:54:32

项目开发中用到的一些宏定义总结(不定时 更新)

#ifdefDEBUG#defineDBG(...)fprintf(stderr,"DBG(%s,%s(),%d):",__FILE__,__FUNCTION__,__LINE__);fprintf(stderr,__VA_ARGS__)#else#defineDBG(...)#endifintmain(){...

2019-11-07 10:51:00

minixml开发手册

库参考手册内容函数mxmlAddmxmlDeletemxmlElementDeleteAttrmxmlElementGetAttrmxmlElementSetAttrmxmlElementSetAttrfmxmlEntityAddCallbackmxmlEntityGetNamemxmlEntityGetValuemxmlEntityRemoveCallbackmxmlF...

2019-11-05 15:29:57

OpenSIPS实战九:跨NAT通信

目录前言1、NAT问题简介2、解决终端NAT问题2.1 使用终端的外网地址通信2.2 保活终端NAT路由映射3、 媒体NAT处理小结前言跨NAT通信在VOIP通信中常会出现问题,由其原生基于UDP传输导致。虽然现在也有基于websocket这样的基于TCP的传输方式,但整体上还是基于UDP的。而VOIP的很重要的应用...

2019-10-30 09:05:15

OpenSIPS实战(八):修改sip消息-使用lumps system

目录前言1、lumps system简介2、lumps system函数接口2.1 创建指定被操作lumps的函数2.2 创建用于新插入或替换lumps的函数3、修改Contact头域与lump操作图解3.1 使用lumps实现FixContact函数3.2图解FixContact函数的lumps操作过程小结...

2019-10-30 09:04:31

OpenSIPS实战(七):模块开发-呼叫超频控制模块

目录前言1、模块开发介绍1.1 可选的5个export结构定义1.2 定义模块的export结构2、模块开发实战:呼叫超频控制模块2.1 代码实现2.2 加载模块并添加路由处理2.3 模块源码下载小结提示:本篇有较多代码,电脑浏览效果更佳前言OpenSIPS支持丰富的拓展...

2019-10-29 21:00:11

OpenSIPS实战(六):添加自定义伪变量

目录前言1、什么是伪变量2、添加伪变量的两种方法2.1 添加伪变量$appId场景实例2.2 使用核心伪变量实现$appId2.3 使用模块伪变量实现$appId 2.4 使用脚本使用$appId伪变量小结前言伪变量在编写脚本路由逻辑的过程中起到举足轻重的作用,路由逻辑可以通过伪变量获知SIP某...

2019-10-29 20:59:34

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。