摘要:
1、技术都是为了解决实际问题的,考虑下面的场景: 主线程创建一个子线程,子线程做一些任务,在主线程上,等待子线程完成任务,然后向下运行。代码如下: #include <stdio.h> #include <pthread.h> #include <unistd.h> void* FuncA(void 阅读全文
摘要:
1、开源软件往往做的非常出色,错误的时候,会告诉你原因,以及怎么修改,仔细阅读就能明白。比如这个错误: [root@localhost src]# ./redis-cli -h 172.16.2.16 -p 6379 172.16.2.16:6379> get name (error) DENIED 阅读全文
摘要:
1、hiredis是redis数据库的C接口,目录为/redis-3.2.6/deps/hiredis 2、示例代码如下: #include <stdio.h> #include <stdlib.h> #include <stddef.h> #include <stdarg.h> #include 阅读全文
摘要:
1、现在有两个redis,172.16.2.16为master,10.65.200.202为salve 2、在slave端修改配置项 salveof,如下: slaveof 172.16.2.16 6379 3、在这种情况下,master端的修改,会同步到slave端。 4、但是slave端不能执行 阅读全文
摘要:
1、默认情况下,访问redis服务是不需要密码的,如果在不信任的网络环境中,需要设置密码。 2、查询当前密码,为空(也就是不需要密码),如下: 172.16.2.16:6379> config get requirepass 1) "requirepass" 2) "" 3、如何设置密码? 修改配置 阅读全文
摘要:
1、redis持久化有两种方式:分别是RDB(Redis DataBase)和AOF(Append Only File) RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上; AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来。 阅读全文
摘要:
1、Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 2、下载 redis-3.2 阅读全文
摘要:
1、好的软件应该能够处理各种可能的错误,也就是防御式编程。 2、作为服务端,应该检测客户端的终止,客户端的无效输入。 阅读全文
摘要:
1、稍微想一下就知道,TCP不是绝对可靠的协议,比如:网络断开,主机崩溃,无论TCP如何努力,都无法将数据传给对方。 2、考虑应用程序A向应用程序B发送数据的TCP流程,数据流从应用程序A通过他所在主机的TCP/IP栈向下传输,经过几台中间路由器, 通过应用程序B所在主机的TCP/IP栈向上传输,最 阅读全文
摘要:
1、TCP/IP协议栈无法将连接的丢失立即通知应用程序. TCP为什么不提供这种通知机制,不这么做的优点和缺点,应用程序怎么检测链接的丢失。 2、TCP为什么不提供连接丢失即时通知的功能? a、其他通信协议,比如SNA和X.25,在连接丢失的时候会通知应用程序。他们是如何做到的? 他们的策略是轮询发 阅读全文
摘要:
1、tcp在ip的基础上增加了校验和、可靠性和流量控制的功能,而udp只增加了校验和的功能,看起来udp应该会比tcp快很多, 但事实不是这样,有时候tcp比udp的性能还要好。 2、思考,在什么情况下udp的性能要好于tcp,以及为什么? 3、这两种协议的cpu开销主要是进行数据拷贝和校验,二者区 阅读全文
摘要:
1、有时候为了所谓的性能,我们倾向于使用udp,但是我们又期望数据的传输是可靠的,因此需要在应用层提供可靠性。 2、可靠、健壮的udp必须提供: a、在合理的时间内没有收到回复,进行重传 b、保证应答和请求的匹配 3、基于udp协议,在应用层提供可靠性,需要做很多事情,比如:滑动窗口,拥塞控制,对这 阅读全文
摘要:
1、TCP是一种流协议(stream protocol),这意味着数据是以字节流的形式发给接收者的,没有固定的报文和报文边界的概念。 接收端读取tcp数据,无法预知在这一次读操作中会返回多少个字节。 2、假设主机A向主机B发送两条报文M1和M2,调用两次send发送两条独立的报文,但是数据在传输过程 阅读全文
摘要:
1、用于网络编程的API接口有两种: Berkeley套接字 XTL 2、套接字是加州大学伯克利分校为其Unix操作系统版本开发的,TLI是AT&T(贝尔实验室)为Unix系统V3.0开发的 3、二者通信能力没有差别,但是语义差别很大,套接字是更好的选择。首先套接字具有更好的移植性,其次,套接字比X 阅读全文
摘要:
1、TCP/IP应用程序分为 TCP服务器 TCP客户端 UDP服务器 UDP客户端 2、构建框架库是比较简单的一件事,主要就是对socket编程。 阅读全文
摘要:
1、私有地址包括三块: 10.0.0.0 到 10.255.255.255 172.16.0.0 到 172.31.0.0 192.168.0.0 到 192.168.255.255 2、私有地址接入公网,需要进行NAT(Network Address Translation) 出去进行SNAT,在 阅读全文
摘要:
1、IP地址分为5类,A、B、C、D、E,它们的前缀分别是: A:0 网络个数2^7,主机个数2^24,大概1千6百万 B:10 网络个数2^14,大概1万6千,主机个数2^16,大概6万5千 C:110 网络个数2^21,大概2百万,主机个数2^8,254个 D:1110 用于多播编址 E:111 阅读全文
摘要:
1、面向连接和无连接指的是协议,本质区别在于:对于无连接协议来说,每个分组的处理都独立于其他的分组。 而对于面向连接的协议,协议实现维护了当前分组与后继分组有关的状态信息。 2、无连接就是指udp,分组称为数据报(datagram),每个分组都独立寻址,udp会尽最大努力发送数据报, 但是不保证数据 阅读全文