胡小哲的博客

胡小哲

TCP状态标识 --- URG,ACK,PSH,RST,SYN,FIN

TCP 首部: 此次我们要讨论的就是其中的状态标识 URG:紧急指针有效。 ACK:确认序号有效。 PSH:接收方应尽快将报文段交给应用层。 RST:复位连接。 SYN:同步序号,用来发起一个连接。 FIN:发送端完成发送任务。 URG 紧急方式,使连接的一端可以告诉另一端有...

2018-05-03 20:01:47

阅读数 82

评论数 0

TCP --- 拥塞控制

网络发生拥塞的原因: 当数据到达一个较大的管道并向一个较小的管道发送数据时便会发生拥塞。 当多个输入流到达同一个路由器,而路由器的输出流小于输入流时也会发生拥塞。 拥塞控制: 避免过多的数据注入到网络中,这样可以减轻网络中路由器或链路的负载。 拥塞避免是发送方使用的流量控制,发送方感受到...

2018-05-02 23:36:41

阅读数 54

评论数 0

Redis --- SORT 命令

SORT 命令 SORT 命令可以根据键里面存储着的数据,对列表,集合以及有序集合进行排序。 参数: SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern …]] [ASC|DESC] [ALPHA] [ST...

2018-05-02 10:40:12

阅读数 67

评论数 0

Redis 命令

Redis 命令 字符串命令 Redis字符串是一个由字节组成的序列。 字符串可以存储三种类型的值: 1. 字节串 2. 整数 3. 浮点数 用户可以通过给定一个数值,对存储的整数或浮点数的字符串执行自增或自减操作。 在有需要的时候,Redis 还会将整数转换为浮点数。 R...

2018-04-27 13:14:20

阅读数 42

评论数 0

Centos 7 安装 Reids 和 Python的Redis客户端

安装 Redis Centos 使用 yum 安装 Redis 时,会出现无法找到安装源的问题。 这是因为 Redis 在第三方源里,我们添加非官方的 epel 源库。 yum install epel-release 安装之后查看 yum repolist 安装 Redis...

2018-04-25 23:32:00

阅读数 357

评论数 0

Centos7 下安装 Mysql

Centios7 下安装 Mysql 5.7 在删除之前先清空本机上的 Mysql rpm -qa | grep mysql rpm -e -nodeps + 名称 强制卸载 再清楚与mysql相关的目录 find / -name mysql rm -rf + 目...

2018-04-25 21:27:46

阅读数 174

评论数 0

Redis 数据结构简介

Redis 数据结构简介 概述 Redis 下可以存储五种不同数据结构类型之间的映射。 这五种数据类型非别为: 1. STRING 字符串 可以是字符串,整数或浮点数。 2. LIST 列表 一个链表,链表上的每个节点都包含一个字符串。 3. SET 集合 包含字符串的...

2018-04-25 15:01:19

阅读数 50

评论数 0

信号量 --- 哲学家就餐

比如我们有一张桌子,上面坐着五位哲学家 现在他们每个人都有一双筷子,并且都拥有了自己的编号。 桌子上摆满了菜,哲学家们现在开始只做两件事情,吃饭,或者思考。 当他们吃饭的时候就停止思考 ,当他们思考的时候就停止吃饭。 我们假设他们都会用筷子,而当他们要吃饭的时候都必须拿两根筷子。 ...

2018-04-23 19:34:30

阅读数 314

评论数 0

线程同步互斥机制

线程同步互斥机制 线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 例如 : 出现这种情况是因为操作系统在内核中对线程的调用的来回切换。代码可以并发的切换到其他的线程。 互斥锁 互斥锁以排他方式防...

2018-04-23 17:20:35

阅读数 274

评论数 0

Linux 多线程

Linux 多线程 线程概念 在一个程序里的一个执行路线就叫做线程。 每个进程都至少有一个线程。 进程和线程 进程是资源分配的基本单位。 线程是调度和执行的基本单位。 线程共享进程的数据:代码段,数据段,bss段和堆段,文件描述符,打开的库,mmap映射的文件以及共享内存空间...

2018-04-21 12:40:34

阅读数 47

评论数 0

Linux 异步信号处理机制

信号 概述 信号是软件中断。 信号是linux系统下的异步处理机制。 例如:在终端按写某些按键时,会通过信号机制停止一个程序。 首先,每个信号都有一个名字,都以SIG开头,通过 kill -l 可以查看 其中有很多常见信号 SIGINT :当我们在终端按下 CTRL+C 时就...

2018-04-19 15:29:45

阅读数 292

评论数 0

mysql 安装与基础

安装 我们罗列出了mysql的安装包 对应的32位机安装 mysql mysql-server mysql-devel 64位机安装 mysql.x86_64 mysql-server.x86-64 mysql-devel.x86-64 安装指令都为 yum install +...

2018-03-27 22:30:41

阅读数 84

评论数 0

C++ 网络爬虫 --- 爬取西安链家二手房信息

C++网络爬虫 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 在这里,我们使用 libcurl 库来对某一特定网页的内容进行抓取。 libcurl 库 安装 首先我们需要介绍一下 libcurl 库 libcurl 库的主要功能就是用不同的协议链接和不同的...

2018-03-27 16:19:39

阅读数 156

评论数 0

进程间通信

进程间通信 在前面我们学习了如何创建进程,但是如何让我们创建的这些进程相互联系起来,那么就需要利用进程间通信来完成。 概述 进程间通信就是在不同进程之间传播或交换信息,但是之前我们学过,每个进程在创建的时候都会分配自己独有的 4G 虚拟地址空间,进程之间都是相互独立的,所以一般而言是不能...

2018-03-16 15:14:55

阅读数 42

评论数 0

malloc 底层实现

动态存储器分配器 malloc 又称显示动态存储器分配器,动态存储器分配器维护着一个进程的虚拟存储器区域,称为堆。 我们假设堆紧接着未初始化.bss段后开始,并向上生长,对于每个进程,由内核维护着堆顶(brk —- break) 分配器将堆视为一组不同大小的块,每个块则是一个连续的虚拟存...

2018-03-13 01:19:48

阅读数 926

评论数 0

动态链接库

动态链接库又称共享库,可执行共享库。 在前面我们提到静态库中,静态库和所有软件一样,需要定期维护和更新,如果我们想要使用一个库的最新版本,我们必须显示地将程序与更新的库重新链接。 一个 C 程序通常都会使用标准 I/O 函数,在运行时这些函数的代码会被大量的赋值到每个运行进程的文本段,是对存储...

2018-03-05 18:57:21

阅读数 42

评论数 0

Linux 中 popen 函数与 system 函数的区别

popen 函数 函数原型 #include <stdio.h> FILE *popen(const char *command, const char *type); command : 一个指向以 NULL 结尾的 shell 命...

2018-03-04 00:21:58

阅读数 74

评论数 0

Linux进程概念 ---- 僵尸进程和孤儿进程

Linux 进程概念 僵尸进程 当子进程退出,并且父进程使用 wait 系统调用,没有读取到子进程退出的返回码时就会产生僵尸进程。 僵尸进程会以终止状态保持在进程表中,并且一直等待父进程读取退出状态代码。 现在我们来模拟实现一个僵尸进程 在这里,我们创建一个子进程,等待 2s 后退出...

2018-03-01 11:59:57

阅读数 51

评论数 0

Linux中文件描述符 fd 与 FILE 结构体

Linux中文件描述符 fd 与 flie 结构体 文件描述符 文件描述符(file descriptor)是内核为了高效管理已被打开的文件创建的索引。文件描述符的操作返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述表,所有打开的文件都将通过此表中的文件描述符来引用。(在前面的 ...

2018-02-26 18:54:29

阅读数 84

评论数 0

简单的自主 shell 编写

当我们打开一个终端的时候,我们可以在上面输入各种命令,从而与终端实现互动。 可以发现,每当一个指令的执行结束后,终端会等待我们的下一条指令的输入。 这就类似于我们写了一个死循环,一直在等待着命令的输入。当有一条指令输入时,创建子进程并将子进程替换为命令,执行子进程并且父进程等待子进程的执行...

2018-02-26 17:03:57

阅读数 205

评论数 0

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