![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 72
草莓感冒片
~~~
展开
-
I/O目录流操作
目录流的操作,实际是对目录的读取过程,我们利用系统提供的 API 可以在编程中实现查看目录的效果。 示例:#include <stdio.h>#include <sys/types.h>#include <string.h>#include <dirent.h>int scan_dir(char *path)...原创 2018-04-06 11:36:12 · 348 阅读 · 0 评论 -
网络编程之socket---UDP
UDP传输 UDP(User Data Protocol,用户数据报协议)是与 TCP 相对应的协议。它是属于 TCP/IP 协议族中的一种UDP 不提供可靠性,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。Udp 传输过程相较于 TCP 传输过...原创 2018-04-27 15:32:32 · 162 阅读 · 0 评论 -
TLV数据传输实例
TLV头文件#ifndef __TLV_H__#define __TLV_H__//发送命令的类型(获取文件列表还是指定文件)enum type_t{ FLIST = 0, FGET};enum send_status_t{ SEND_FHEAD = 1, SEND_FBODY, SEND_FOVER};//发送数据的命令头结构typedef struct{ un...原创 2018-05-06 14:59:11 · 1574 阅读 · 0 评论 -
第三方库使用--libzlog日志库
libzlog日志库 zlog是一个高性能、线程安全、灵活、概念清晰的纯C日志函数库。 特性: *多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数 *运行时手动或自动刷新配置 *用户自定义等级 *多线程和多进程环境下保证安全转档 ...原创 2018-05-07 15:38:36 · 2512 阅读 · 0 评论 -
网络编程之高阶TCP
TCP用户代码 网络编程之socket--TCP/IP TCP是面向字节流的,即消息的描述必须由应用程序来完成,且要在消息结束的时候显示通知TCP模块以迫使其立即发送相应的字节数据。 简单的说,TCP的recv的字节数可以是任意的,只要对方发送,不是按send的次数来recv的,是按发送的字节数来recv。即,发送方可以调用10次send,每次发送5个字...原创 2018-04-30 14:17:24 · 165 阅读 · 0 评论 -
Ubuntu下的数据库操作
常用术语 数据库: 数据库是一些关联表的集合。. 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 ...原创 2018-05-08 22:40:53 · 2050 阅读 · 0 评论 -
Ubuntu下数据库编程
示例#include <stdio.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <mysql/mysql.h>int main(int argc, char *argv[]){ MY...原创 2018-05-09 10:32:54 · 287 阅读 · 0 评论 -
缓存数据库redis快速搭建
安装从redis.cn下载最新redis包。解压安装包进入目录打开README.md,查看install方法测试环境是可以正常使用如果出现 \o/ All tests passed without errors! 表示成功,表示redis环境没有问题安装路径启动redis若出现2725:C 01 Jun 19:24:23.646 # oO0OoO0OoO0Oo Redis is starting ...原创 2018-06-02 10:13:55 · 305 阅读 · 0 评论 -
redis的基本使用——字符串
redis数据类型字符串redis字符串是一个字节序列。在redis中字符串是二进制安全的。可以存储任意长度512兆的字符串。字符串命令set:设置键值get:返回键值getrange:返回key中字符串的子字符getset:将给定的key的值设置为value,并返回旧的value示例:mget:获取一个或者多个key值...原创 2018-06-03 09:03:49 · 359 阅读 · 0 评论 -
C++常见面试题(二)
C++常见面试题(一)死锁的必要条件 互斥条件,请求和保持条件,不剥夺条件,环路等待条件。解决死锁的基本方法 预防死锁,避免死锁,检测死锁,解除死锁。程序在内存中的分布 text:只读,存代码和一些其他的东西; data:存初始化的全局变量和static变量,文字常量区,常量字符串。 bss:存未初始化的全局变量和statci变量。 堆:由低地址...原创 2018-07-28 20:05:49 · 226 阅读 · 0 评论 -
C++常见面试题(一)
结构体、类、共用体 结构体:把不同类型的数据组合成一个整体,自定义类型,默认为public; 类:将数据表示和操纵数据的方法组合成一个整洁的包,默认为private; 共用体:让不同类型的变量共用一段内存,只能同时存储其中一种类型。内存对齐 结构体或类的自身对齐值:其成员中自身对齐值最大的; 指定对齐值:#pragma pack(n),n=1,2,4,8,16改变...原创 2018-07-28 16:31:39 · 531 阅读 · 0 评论 -
linux之多线程编程
Linux线程 首先 Linux 并不存在真正的线程,Linux 的线程是使用进程模拟的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),...原创 2018-05-05 16:58:08 · 148 阅读 · 0 评论 -
网络编程之socket--TCP/IP
TCP传输 网络编程之高阶TCP 网络编程之socket--UDP TCP(Transmission Control Protocol)即传输控制协议,是一个工业标准的协议集,它是为广域网(WANs)设计的提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个 TCP 连接,之后才能传输数据。TCP 提供超时重发,丢弃...原创 2018-04-27 11:17:57 · 347 阅读 · 1 评论 -
gdb的使用
什么是GDB? GDB是一个由 GNU 开源组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB 中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。 GDB 是 linux 下调试程序的神器,做为 linux 程序员,如果不能熟练的使用 GDB 进行程序调试,那将是很失败的事情,...原创 2018-04-05 14:43:23 · 1570 阅读 · 0 评论 -
信号的认识
信号的认识 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用 kill 发送软中断信号。内核也可以因为内...原创 2018-04-07 19:12:18 · 268 阅读 · 0 评论 -
进程间通信之管道
管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。无名管道 1.它只能用于具有亲缘关系的进程间通信(父子进程或兄弟进程之间) 2.是一个半双工的通信模式,具有固定的读端和写端 半双工:指数据可以沿着两个方向传输,但同一时刻一个信道只能允许单方向传送,又称为双向交替通信。 3.可以看作一种特殊的文件,可以...原创 2018-04-23 18:17:05 · 148 阅读 · 0 评论 -
VM之Ubuntu 16.04 设置静态IP
1.首先点击NAT,设置网关,一般为x.x.x.2 。其次将下列红框中设置选中。2.其次在网络适配器中,将网络连接设置为自定义,选择VMnet8(NAT模式)。3.修改之前,查看自己的网卡名字,ifconfig4.接着用vim打开 sudo vim /etc/network/interfaces 添加以下内容5.修改/etc/NetworkManager/NetworkManager.conf...原创 2018-04-30 15:41:29 · 1159 阅读 · 0 评论 -
进程间通信之信号量
信号量又称为信号灯,它是用来协调不同进程间的数据对象的(进程间数据同步)。本质声,信号量是一个计数器,它用来记录对某个资源的存取状况。一般来说,为了获得共享资源,进程需要执行以下操作: 1.测试控制该资源的信号量 2.若此信号量的值为正,则允许进行使用该资源。进程将信号量减1 3.若此信号量为0,则该资源目前不可用,进程进入睡眠状态,直至信号量值大...原创 2018-04-20 09:00:41 · 204 阅读 · 0 评论 -
进程间通信之共享内存
共享内存是运行在同一机器上的进程间通信最快的方式,因为数据不需要再不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。 示例1.1#include <stdio.h>#include <unistd.h>#include <sys/ipc.h>#include <sys/shm.h>#define...原创 2018-04-20 09:10:35 · 135 阅读 · 0 评论 -
高并发服务器编程之epoll(一)
I/O多路复用-epoll epoll与select和poll在使用和实现上有很大区别。首先,epoll使用一组函数来完成,而不是单独的一个函数;其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,无需向select和poll那样每次调用都要重复传入文件描述符集合事件集。IO多路复用epoll模型优缺点 思路:单进程调用epoll_wait()函数来...原创 2018-05-03 10:57:58 · 434 阅读 · 0 评论 -
inotify的安装与使用
下载 链接:https://pan.baidu.com/s/1jt6TqwWv5e9qsDK5Roi4mw 密码:vdab配置 描述 inotify机制可用于监控文件或目录。当监控目录时,与该目录自身以及该目录下面的文件都会被监控,其上有事件发生时都会通知给应用程序。 inotify监控机制为非递...原创 2018-05-17 08:48:01 · 9840 阅读 · 1 评论 -
linux下MD5的API编程
下载安装openssl链接:https://pan.baidu.com/s/1eyEgqFI90FG6nIIZIY-H1g 密码:5e7c或者 API 该函数初始化该结构体。成功返回1,失败返回0. 该函数对输入参数data,进行md5计算。成功返回1,失败返回0. 该函数把结果输出至缓存md中。成功返回1,失败返回0.示例1#include <stdio.h>#i...原创 2018-05-17 09:08:03 · 1423 阅读 · 0 评论 -
高并发服务器编程之epoll(二)
服务器示例这里使用epoll_data联合体中的ptr指针。fd的使用链接:epoll_data.fd#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/type...原创 2018-05-04 17:01:12 · 239 阅读 · 0 评论 -
fastdfs 原理与过程
前言:(1)每次上传文件后都会返回一个地址,用户需要自己保存此地址。(2)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个...转载 2018-07-29 16:33:31 · 1574 阅读 · 0 评论