编程
文章平均质量分 58
编程==搬砖
我们很少造混凝土和钢筋,但我们要知道它的作用和构造
deoxyribonucleicacid
这个作者很懒,什么都没留下…
展开
-
Hash散列 开放定址法与链地址法
假设一个数组中表示位置key={0,1,2,3,4,5,6,...},对应存储的哈希函数为hash(key)==H,key的个数为m开放定址法:(H+di)%m1,线性探测再散列:(H+i) % m;i=0,1,2,...,m-1,即di为1,2,3,4,5,6,......2,平方探测再散列:(H+pow(-1,r)*(i-r)/2)%m,r=i%2;即key,key+1*1,key-1*1,k...原创 2018-06-11 11:05:25 · 1067 阅读 · 0 评论 -
tcp/ip在物理层/数据链路层 实现简单抓包
socket的精妙之处在于协议族的横向转换和地址族的纵向转换.我们也可在更底层实现对流经host的数据流的监督和修改.尤其是监察数据,十分简单.这里是混杂模式实现对ip数据流的监察与对tcp数据流的简单查看,需要root权限.这里忽略了tcp/ip的options选项.进一步感兴趣的同学可以查看wareshark的源码实现.尊重原创,转载的同学,一定要注明来自DNA出处哦!#prag...原创 2018-09-04 10:31:31 · 1020 阅读 · 0 评论 -
TCP三次握手和四次挥手 详解
首先了解下TCP报文16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。32位序号:32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),...原创 2018-06-08 19:14:32 · 231 阅读 · 0 评论 -
网络层协议--IP简析 && 域名系统
IP--因特网协议ICMP--因特网控制协议报文ARP--地址解析协议RARP--反向地址解析协议ip地址分类:A类:大型网络:0 开头 7位网络号 主机标识24位B类:中型网络:10 开头 14位网络号 主机标识16位C类:小型网络:110 开头 21位网络号 主机标识8位D类: 1110 开头 多播(广播)标识符28位E类: ...原创 2018-09-07 13:53:56 · 1139 阅读 · 0 评论 -
TCP拥塞窗口cwnd原理,TCP/UDP结构,部分公认端口
TCP:伪头==12:仅参与校验和,成员totallen不包括伪头部.sourceip(32)destip(32)res(8) protocol(8) totallen(16)报头>=20bytes.sourcePort(16) DestPort(16)seq(32)ack_seq(32)hdrlen(4) res(6) urg/ack/psh/rst/syn/fin wi...原创 2018-09-07 15:06:53 · 3810 阅读 · 1 评论 -
ISO7层模型 && TCP/IP五层模型
ISO七层模型:应用层:协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP表示层:数据的表示、安全、压缩.(TCP/IP应用层)格式有,JPEG、ASCll、DECOIC、加密格式等会话层:建立、管理、终止会话.(TCP/IP应用层)对应主机进程,指本地主机与远程主机正在进行的会话传输层:定义传输协议端口号协议有:TCP U...原创 2018-09-07 13:23:30 · 268 阅读 · 0 评论 -
tcp/ip 详细解析以及网络层简单的发送syn
利用tcp发送syn,我们可以从网络层进行下发,其实就是组装tcp /ip包发送出去. #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <time.h>#include <sys/types.h...原创 2018-09-04 10:13:59 · 728 阅读 · 0 评论 -
Linux线程学习(三):pthread常见线程函数
在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。虽然每个线程都有自己的存放错误码的errno全局变量,但线程为了兼容其他接口,并未使用它。因此,要注意pthread...原创 2018-03-12 10:35:16 · 431 阅读 · 0 评论 -
linux线程学习(二)
上一个linux线程学习是不带锁的线程不安全形式,只要不用共享资源还是可以的,但实际工作中我们遇到的往往是需要保障线程的访问的.因此这里实现了一个简单的线程池,为线程池的实现提供思路。Status类封装了环境变量与锁,作为一种状态保障线程的安全,并提供挂起,供Pthreadpool使用。Eventloop类则用于管理方法,供Phtreadpool使用。Pthreadpool封装了多线程,并结合St...原创 2018-03-15 19:35:22 · 335 阅读 · 0 评论 -
linux线程学习(一)
多线程的简单实现(无锁).typedef void* (*Funcptr)();typedef struct{ pthread_t* threadid; int max; Funcptr callback;}pthreadpool;void* callback1(){ printf("%s\n",__func__); printf("crea...原创 2018-03-02 21:50:14 · 147 阅读 · 0 评论 -
大端对齐和小端对齐
其实大端对齐和小端对齐,迷惑的原因无非是名字问题。这里为了方便记忆,我们可以将big-endian little-endian,翻译成大尾端对齐和小尾端对齐。 大尾端对齐是网络字节序对齐的一种方式。 int i = 0x12345678;char *c = &i;*c = 0x78;即为小端对齐。...原创 2018-03-15 00:21:32 · 1737 阅读 · 0 评论 -
Redis持久化存储RDB与AOF
由于最近用到了Redis的持久化存储,故查找了一些资料,并找了两篇比较好的文章转载下来,并改动了部分内容。转载地点:https://blog.csdn.net/jackpk/article/details/30073097https://www.cnblogs.com/hepingqingfeng/p/7264038.htmlredis的rdb与aof持久化的区别:rdb的特性如下:Code:fo...原创 2018-06-04 23:59:36 · 151 阅读 · 0 评论 -
redis.conf配置选项说明以及aof与rdb出现的问题解决方法.
首页博客学院下载GitChatTinyMind论坛问答商城写博客发Chatqq_29166327的博客人生苦短,少做些虚无缥缈的事 。RSS订阅转redis.conf文件详解2018年03月06日 14:02:56阅读数:26redis.conf文件可以在github上查看,下面是我整理的其中的配置项(版本是3.2)的解析,尽量全面一些吧。参考:1、http://running.iteye.com...原创 2018-06-05 23:02:44 · 924 阅读 · 0 评论 -
Redis之SortedSet
0,字符串String 1,哈希表Hash2,列表List3,集合Set 例子4,有序集合SortedSet 例子myzset5,发布/订阅Pub/Sub6,事务Transaction7,脚本Script8,连接Connection9,服务器Server表名可以理解为key------------------------------------------------...原创 2018-06-01 09:17:26 · 243 阅读 · 0 评论 -
c++ template模板
函数模板会进行严格的类型匹配,模板类型不提供隐式类型转化普通函数能够进行自动类型转换函数模板重载四大规则1 函数模板可以像普通函数一样被重载2 C++编译器优先考虑普通函数3 如果函数模板可以产生一个更好的匹配,那么选择模板4 可以通过空模板实参列表的<>语法限定编译器只通过模板匹配5 模板的实例化类型确定是在编译期间6 函数查找顺序:1,找普通函数或类;2,如果1找不...原创 2018-06-05 19:49:57 · 1524 阅读 · 0 评论 -
Linux生成dumpcore并进行调试,以及addr2line的用法
1) 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump。2) 使用ulimit -c unlimited命令,开启core dump功能,并且不限制生成core dump文件的大小。如果需要限制,加数字限制即可。ulimit - c 10243) 默认情况下,core dump生成的文件名为core,而且就在程序当前目录下。新的core会覆盖已存在的...原创 2018-03-15 18:10:08 · 923 阅读 · 0 评论 -
运算符重载
//在类A中重载 !//其中,ret为bool ret;成员变量bool operator!(){ return !ret;}//A a(true); if(a){return true;}//执行后为true.//在类A中重载 数据类型B//其中,ret为bool ret;成员变量operator B()//不带返回值{ B b; return b; }//A ...原创 2018-02-27 15:09:22 · 262 阅读 · 0 评论