7 赤云

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 5w+

1.linux自实现printf

#include <stdio.h>#include <stdarg.h> /* 使用va_list、va_start等必须包含的头文件 */#include <string.h>#include <math.h>/* linux C没有itoa函数,所以要自己写 */char *itoa(int i, char *str){ ...

2019-07-18 15:37:33

CURL的学习

https://curl.haxx.se/libcurl/c/libcurl-tutorial.html

2019-01-02 15:01:03

15.TCP长连接与短连接、心跳机制

转自:1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模拟一下TCP短连接...

2018-11-14 11:35:11

2.ARM芯片的时钟体系

注:以下内容学习于韦东山老师arm裸机第一期视频教程    一. 2440时钟简介        1.1 2440是一个SOC(system on chip)系统,不仅有很多CPU,还有很多外设,在2440芯片手册有系统框架图如下:                            2440框架图中,不仅有CPU,而且有很多外设,其中外设分为两部分,一部分是AHB总线,一部分是APB...

2018-11-13 10:37:25

1.PLL的原理,怎样用它倍频

PLL - PHASE-LOCKED LOOP 中文称锁相环, 简单来说就是用一个压控振荡器 (VCO - VOLTAGE CONTROLLED OSCILLATOR) 产生一个振荡频率, 经过 N 倍分频 (N - 包括 1 的正整数) 后在鉴相器上与被锁的已知频率比较, 比较结果波形通过低通滤波产生一个电压, 然后用这个电压控制 VCO 去改变振荡频率, 直到分频的振荡频率与已知频率相等并锁相...

2018-11-13 09:33:22

14.优雅关闭socket的方法:SO_LINGER

这个参数对应大量短链接的服务器很有必要!  shutdown(fd, SHUT_RDWR); struct linger linger; linger.l_onoff = 1; linger.l_linger = 0; setsockopt(fd, SOL_SOCKET, SO_LINGER, (char *) &linger, siz...

2018-09-27 16:57:07

9.C++中的base64编解码实现

#include <string>#include <iostream>#include<stdio.h>using namespace std;std::string base64_encode(unsigned char const* , unsigned int len);std::string base64_decode(std::strin...

2018-09-07 15:04:07

1.最全整理浏览器兼容性问题与解决方案

常见浏览器兼容性问题与解决方案  所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。  在学习浏览器兼容性之前,我想把前端开发人员划分为两类:  第一类是精确按照...

2018-09-07 09:52:57

1.c++ web编程:写出你的CGI程序

 一 什么是CGI      CGI(The Common Gateway Interface):通用网关接口,定义web服务器和客户脚本进行信息交互的一系列标准。 二 web浏览器         为了了解CGI的概念,让我们来看看当我们单击一个超链接来浏览一个特定的web页或URL的时候,背后会发生什么事?      (1)浏览器首先会链接HTTP web 服务器并且请求一个U...

2018-09-06 10:46:23

17.arm架构的异常与中断

注:以下内容学习于韦东山老师arm裸机第一期视频教程一.arm架构的异常与中断的处理   1.1 ARM对异常的处理流程        1.1.1 软件初始化            a. 设置中断源,让他可以产生中断            b. 设置中断优先级            c. 设置中断总开关                    1.1.2 正常执行程...

2018-08-09 08:19:02

16.C语言及ARM中堆栈指针SP设置的理解与总结

1.什么是栈百度这么说:栈是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。当栈中没有数据元素时,称之为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。简易理解:客栈,即临时寄存的地方,计算机中的堆栈主要用来保存临时数据,...

2018-08-09 08:10:40

13.CentOS 7.3 Xinetd服务的安装与配置

一、Linux守护进程与初始化进程1. 什么是守护进程Linux服务器的主要任务就是为本地或远程用户提供各种服务。通常Linux系统上提供服务的程序是由运行在后台的守护进程(Daemon)来执行。一个实际运行中的Linux系统一般会有多个这样的程序在运行。这些后台守护进程在系统开机后就运行了,并且在时刻地监听前台客户地服务请求,一旦客户发出了服务请求,守护进程便为它们提供服务。Window...

2018-08-08 08:23:19

12.RTSP请求详解及RTP 基于UDP和TCP协议传输数据的对比

最近一段时间一直在研究rtsp和rtp,现在写博客总结一下,也是对知识的一种巩固吧。rtsp的协议的请求流程及格式请参考一下链接:http://blog.csdn.net/u010425035/article/details/10410851下面是我用VLC播放器获取海康NVR视频的截图(此次获取是基于TCP的):下面来看一下针对每一条消息的详细截图:客户端发送的OPTION消...

2018-08-07 13:55:03

四字节内存对齐

首先我们先看看下面的C语言的结构体: typedef struct MemAlign { int a; char b[3]; int c; }MemAlign;     以上这个结构体占用内存多少空间呢?也许你会说,这个简单,计算每个类型的大小,将它们相加就行了,以32为平台为例,int类型占4字节,char占用1字节,所以:4 + 3 ...

2018-08-04 08:20:30

高手进阶,终极内存技术指南——完整/进阶版 I

老實話,我個人覺得這兩篇文章真的寫的很不錯,前段時間在study關於DDR內存的初始化以及其相關知識的時候,詳細學習了它。個人很佩服原文的作者能夠寫出這麼深刻的文章。(應該說,這篇文章把DDR2的spec翻譯了大部份,對於我們BIOS工程師而言,是一篇不錯的資料。)下面是原文。两篇文章的出处是:http://hi.baidu.com/%BA%A3%B6%FB_heart/blog/calend...

2018-07-21 08:06:32

同步通信和异步通信的区别

同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下...

2018-07-10 08:16:23

15.UART协议

UART简介 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。UART通信在工作中相当常见,项目中需要生成uart信号,在博客中记录下。uart是异步通信,因为它只有一根线就可以数据的通信。不像SPI,I2C等同步传输信号。所以串口的传输速度和其它协议的速度相比是比较慢的。下面具体讲解一些uart协议以及是如何通信的。...

2018-07-10 08:06:15

1.Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明

1. 为什么要使用后缀名为 .d 的依赖文件?在 Makefile 中, 我们的依赖关系可能需要包含一系列的头文件。 比如 main.c 源文件内容如下:#include "stdio.h"#include "defs.h"int main(int argc, char *argv[]){ printf("Hello, %s!\n", NAME); return 0;} ...

2018-07-09 17:21:48

15.同步与互斥的概念

现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之...

2018-07-05 08:40:38

11.使用信号量完成互斥操作

一、首先:我们要知道信号量是什么?       信号量的本质是数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。这是书本上介绍的信号量的概念,自己的理解比较简单:     信号量就是具有原子性的计数器,就相当于一把锁,在每个进程要访问临界资源时,必须要向信号量拿个锁”,...

2018-07-04 08:39:27

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!