自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

耿小渣的进阶之路

从小白到大白

  • 博客(95)
  • 资源 (13)
  • 收藏
  • 关注

原创 升级Linux内核版本

升级Linux内核

2023-02-26 16:55:56 442

原创 使用zlib实现gzip压缩

读写文件#include <stdio.h>#include <string.h>#include <unistd.h>#include <zlib.h>int main(){ int err; int len = 11; gzFile file; z_off_t pos; unsigned char uncompr[128] = {0}; int uncomprLen = 128; .

2021-03-23 18:39:13 1719

原创 libevent 使用实现http 服务

单线程#include <stdio.h>#include <stdlib.h>#include <string.h> //for strcat#include <unistd.h> //for getopt, fork// for struct evkeyvalq#include <event.h>#include <sys/queue.h>// for http//#include <evhttp.h

2021-03-21 18:45:01 1033

原创 gnutls_handshake() failed: Error in the pull function

执行git submodule update --init --recursive github上拉取工程子模块,出现如下错误尝试各种解决方法没有解决:1、配置代理(尝试无效)设置代理git config --global http.https://github.com.proxy http://127.0.0.1:7890git config --global https.https://github.com.proxy https://127.0.0.1:7890#7890为..

2021-03-19 11:57:06 8645 3

原创 kafka学习--初识kafka

一、kafka简介Kafka是一个高吞吐量、分布式的发布—订阅消息系统。目前kafka已经定位为一个分布式流式处理平台。kafka主要扮演如下三大“角色”消息系统:Kafka和传统的消息系统(也称为消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。于此同时Kafka还提供了大多数系统难以实现的消息顺序性保障及回溯消费的功能。 存储系统:Kafka把消息持久化到磁盘,降低了数据丢失的风险。得益于Kafka的持久化功能和多副本机制,我们可以把Kafka作为长期

2020-11-08 15:59:59 237

原创 Hyperscan 安装

源码下载Ragel:http://www.colm.net/files/ragel/ragel-6.9.tar.gzboost :http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gzhyperscan :https://download.csdn.net/download/u014608280/12745509第3方依赖库¶依赖项 版本 说明 CMake ...

2020-08-25 11:53:25 2796 2

原创 libpcap使用

捕获数据包操作/*pcap_test.c编译方式:gcc pcap_test.c -o pcap_test -lpcap -lpthread*/#include <stdio.h>#include <stdlib.h>#include <pcap.h>#include <pthread.h>#define SNAP_LEN 65535pcap_t *handle;pcap_dumper_t* out_pcap;/*函数名称.

2020-08-07 11:13:45 866

原创 DPDK CAS(compare and set)操作

rte_atomic32_cmpset()称为CAS(compare and set)操作,是DPDK无锁队列实现的关键函数,代码如下:static inline intrte_atomic32_cmpset(volatile uint32_t *dst, uint32_t exp, uint32_t src){uint8_t res; asm volatile( "lock;" "cmpxchgl %[src], %[dst];" "sete %[res];" :[res] "=a.

2020-07-27 16:04:25 764

转载 Gcc内置原子操作__sync_系列函数简述及例程

Gcc 4.1.2版本之后,对X86或X86_64支持内置原子操作。就是说,不需要引入第三方库(如pthread)的锁保护,即可对1、2、4、8字节的数值或指针类型,进行原子加/减/与/或/异或等操作。有了这套内置原子操作函数,写程序方便很多。老宋根据Gcc手册中《Using the GNU Compiler Collection (GCC)》章节内容,将__sync_系列17个函数声明整理简化如下:type __sync_fetch_and_add (type *ptr, type value, ..

2020-07-27 14:39:51 820

原创 sqlite3 简单操作

#include <stdio.h>#include <stdlib.h>#include "sqlite3.h"/*sqlite3_exec 执行sql对应的功能命令,然后将结果传递给回调函数 pv:由sqlite3_exec传递的初始化参数 argc:表头的列数 col:表头的名字数组指针 argv:表头的数据数组指针*/static int callback(void *pv, int argc, char **argv, char *.

2020-07-13 14:52:39 246

原创 curl使用

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。curl https://www.baidu.com<!DOCTYPE html><!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compat

2020-06-30 14:54:28 2220

原创 redis 源码分析--整数集合

简介整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。实现typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 ...

2020-04-18 17:31:42 167

原创 进程的各种ID

pid(进程ID) UNIX进程总是会分配一个号码用于在其命名空间中唯一的标识他们。该号码被称为进程ID号,简称PID。用fork或者clone产生的每个进程都由内核自动的分配一个新的唯一的PID值。#include <sys/types.h>#include <unistd.h>pid_t getpid( void ); ppid(父进程ID) ...

2020-04-14 15:43:42 1863

原创 缓冲与非缓冲I/O、直接与非直接I/O、阻塞与非阻塞I/O、同步与异步I/O

文件读写方式的各种差异,导致I/O的分类多种多样。最常见的有缓冲与非缓冲I/O、直接与非直接I/O、阻塞与非阻塞I/O、同步与异步I/O。根据是否利用标准库缓存,可以把文件I/O分为缓冲I/O与非缓冲I/O。 缓冲I/O,是指利用标准库缓存来加速文件的访问,而标准库内部再通过系统调度访问文件。 非缓冲I/O,是指直接通过系统调用来访问文件,不再经过标准库缓存。 这里所说的...

2020-04-13 16:55:16 786

原创 多线程编程笔记

1、线程概念线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程...

2020-04-10 17:01:09 221

原创 redis 源码分析--跳跃表

简介跳跃表(skiplist)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构。定义typedef struct redisObject {...

2020-04-08 14:57:10 200

原创 redis 源码分析--字典

简介 字典,又称为符号表(symbol table)、关联数组(associative array)或者映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。 Redis 的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。实现/* * 哈希表节点 */typedef struct...

2020-04-03 11:06:44 156

原创 linux 网络编程各种坑

TCP/IP协议相关1、延时ack当协议栈接受到TCP数据时,并不一定会立刻发送ACK响应,而是倾向于等待一个超时或者满足特殊条件时再发送。对于Linux实现,这些特殊条件如下:1)收到的数据已经超过了 full frame size2)或者处于快速回复模式3)或者出现了乱序的包4)或者接收窗口的数据足够多如果接收方有数据回写,则ACK也会搭车一起发送。当以上条件都...

2020-04-02 14:25:53 812

原创 redis 源码分析--链表

简介 链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量表较多的元素,又或列表中包含的元素都是比较长的字符串时,Redis就会用链表作为列表键的底层实现。...

2020-04-01 16:11:33 133

原创 redis 源码分析--字符串

简介Redis虽然是由C语言实现的,但是Redis没有直接使用C语言传统的字符串表示,而是构建了一种名为简单动态字符串(simple dynamic string, SDS) 的抽象类型,并将SDS用作Redis的默认字符串表示。SDS 定义sds 和 sdshdr 在sds.h头文件中定义是这样的/* * 最大预分配长度 */#define SDS_MAX_PREALLO...

2020-03-08 23:36:55 145

原创 一个简单的内存池

在研究nginx源码,以下代码完全摘抄自nginx内存池源码。mem_pool.h#ifndef _MEM_POOL_H#define _MEM_POOL_Htypedef unsigned char u_char;typedef unsigned int u_int;/*计算宏mem_align(1, 64)=64,只要输入d<64,则结果总是64,如...

2020-03-08 15:14:36 304

转载 git 命令

2020-02-10 11:11:31 172

原创 发生段错误后程序不崩溃

一个段错误的例子:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char *tmp = NULL; strcpy(tmp, "hello"); return 0;}执行结果加上段错误处理函数:#include <stdi...

2020-01-13 17:46:24 1098

原创 git checkout 文件 Permission denied错误

git 切换来切换去,出现一个文件被修改,然后执行git checkout出现如下问题,环境是本地文件挂载到服务器上的1、查看权限发现没有问题。2、git 上执行rm 删除,没有报错但是查看文件还是存在,执行git status 还是老样子报文件被修改。3、在本地上删除报需要管理员权限错误,shift + delete 强制删除,执行git status 依然是错误,再去本地看文...

2019-12-11 18:01:55 2767

转载 Linux vmstat命令详解

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。别 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存...

2019-12-09 10:47:26 122

转载 中国支付清算系统简介

|中国的支付清算有两套体系 当你去ATM取钱时,用的是央行的CNAPS(中国现代化支付清算系统) 当你用支付宝买买买时,用的是第三方支付的清算系统 这里先介绍第一部分:CNAPS|当你在ATM取钱时,银行都做了什么?我们先拿一个ATM取钱的例子来说明跨行业务的过程。假如你拿着一张工行卡去建行的ATM取了100元,这时候就发生了跨行业务。这个过程非常简单:...

2019-12-04 10:45:38 5347

转载 MYSQL 锁

什么是锁?锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问,提供数据的完整性和一致性。MySQL 不同的存储引擎支持不同的锁机制,MyISAM 和MEMORY 存储引擎采用的是表级锁(talbe-level locking);BDB存储引擎采用的是页面锁(page-level locking),但是也支持表级锁,InnoDB存储引擎即支持行级锁(row-...

2019-09-09 22:37:48 114

转载 写缓冲(change buffer)

简单回顾一下:(1)MySQL数据存储包含内存与磁盘两个部分;(2)内存缓冲池(buffer pool)以页为单位,缓存最热的数据页(data page)与索引页(index page);(3)InnoDB以变种LRU算法管理缓冲池,并能够解决“预读失效”与“缓冲池污染”的问题;画外音:细节详见《缓冲池(buffer pool)》。毫无疑问,对于读请求,缓冲池能够减少...

2019-09-09 14:11:51 885 2

转载 缓冲池(buffer pool)

应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。今天,和大家聊一聊InnoDB的缓冲池。InnoDB的缓冲池缓存什么?有什么用...

2019-09-09 14:07:46 701

原创 mysql事务

一、什么是事务数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么全部不执行。事务的实现在数据库的引擎层,MyISAM不支持事务。二、事务的特性(ACID)原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability)1、原子性 原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有...

2019-09-07 16:27:17 166

原创 InnoDB存储引擎 --存储结构

表结构定义文件 MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件。但不论表采用何种存储引擎,MySQL都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义。frm还用来存放视图的定义,如用户创建了一个v_a视图,那么对应的会产生一个v_a.frm文件,用来记录视图的定义。查看MySQL 数据文件存储位置的方法: 表空间文件 (InnoDB)...

2019-08-14 09:55:02 411

原创 NFS协议

NFS文件系统NFS(Network File System,网络文件系统)最初由SUN公司于20世纪80年代设计,一种典型的基于网络的文件系统。它提供了在网络内各个设备对于共享文件操作的方式,如某一FAT文件系统物理上是存放在其他设备上的,某设备可以通过挂载这个FAT文件系统,使该系统就像是存放在本地设备上的。用户可以不加区别地对本地和非本地文件进行操作。在TCP/IP标准协议集的基础上,N...

2019-08-13 15:59:21 5119

原创 Python3-基本数据类型

整数定义:a = 125。 python 可以处理“任意”大小的整数包括负数。 支持二进制、八进制、十进制、十六进制通过前缀来区分:前缀 例子 进制 0b或者0B a = 0b1010 2 0o或者0O a = 0o12 8 无 a = 10 10 0x或者0X a = 0xa 16 浮点数定义的三种...

2019-08-03 23:05:09 117

原创 mysql 索引相关(InnoDB存储引擎)

索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。可以用于提高读写效率的数据结构很多,介绍三种常见、也比较简单的数据结构,它们分别是哈希表、有序数组和搜索树。哈希表 哈希表是一种以键-值(key-value)存储数据的结构,我们只要输入待查找的值即key,就可以找到其对应的值即Value。哈希的思路很简单,把值放在...

2019-08-03 20:36:58 267

转载 C语言调用python脚本

.Python脚本,名称为py_add.py def add(a=1,b=1): print('Function of python called!') print('a = ',a) print('b = ',b) print('a + b = ',a+b)C语言代码callpython.c#include <Python.h>#i...

2019-07-24 16:10:35 4148

转载 Valgrind使用简介

Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所...

2019-06-28 10:18:25 4813 1

转载 SMTP_POP3与MIME协议整理

邮件协议整理写在前面最开始的邮件传输是根据SMTP实现的,但由于历史原因,Internet上的很多网关不能正确传输8 bit内码的字符,比如汉字等。所以出现了对邮件内容编码的需要。这样,在邮件协议中除了smtp、pop外,又增加了与编码相关的MIME。概括地说,smtp、pop与邮件的接收、发送过程相关,这两者负责邮件的传输;而MIME与邮件内容(这里,邮件内容包括发件人信息、收件人/...

2019-04-18 15:44:07 5552

转载 /proc/cpuinfo 详解

LinuxCPU数量判断,通过/proc/cpuinfo.相同physical id :决定一个物理处理器如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。其实只要#include &lt;unistd.h&gt;long num =...

2019-03-18 17:00:42 3899

转载 IMAP协议详解

概述IMAP4(Internet Message Access Protocol 4) 即 交互式数据消息访问协议第四个版本IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的,后期版本是华盛顿州立大学进行开发的,IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”(IMAP4rev1)IMAP4协议与POP3协议一样也...

2019-03-13 17:11:38 30371 2

原创 ftp协议详解

一、Windows下搭建FTP服务器,抓取FTP数据包1、2、3、4、5、IP地址填写自己本机的IP地址6、勾选了匿名就不用输入密码了7、8、抓包二、linux下FTP抓包先检查有没有安装FTP没有的话执行下面命令安装yum install vsftpd -y通过/etc/vsftpd/vsftpd.conf 文...

2019-03-02 11:13:20 7995

hyperscan-master.zip

hyperscan 源码

2020-08-25

redis-3.0.0源码.zip

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

2020-03-08

rfc3530.pdf

资源为RFC3550,详细介绍了NFS协议, 英文版

2019-08-13

xshell6_破解版.rar

xshell破解版,可以无限开窗口 ,解压问执行绿化.bat 即可

2019-07-17

ftpserver.rar

ftp源码,包括server 和client

2019-06-13

C和指针(中文)

本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。

2019-03-01

SIP协议详解

适合sip协议解析者使用

2018-07-24

面试--DBA30问

资深DBA工程师在工作中遇到的和面试会问到的的30个问题

2018-06-25

深入理解MySQL核心技术(第二版)

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

2018-06-25

Python+Web开发实战

内容涉及web框架,测试,数据库,消息队列,服务化,持续集成等。

2018-06-22

unix环境高级编程源码

unix高级环境编程书中所有的代码 ,

2018-06-11

空空如也

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

TA关注的人

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