![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
马里奥奥利奥
这个作者很懒,什么都没留下…
展开
-
mysql学习笔记
1. 常用数据类型mysql常用数据类型:数值,日期/时间和字符串(字符)类型。2. 登陆和退出数据库# 登录MySQL$ mysql -u root -p# 退出MySQL数据库服务器exit;3. 基本语法-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;--...原创 2020-03-03 23:30:05 · 328 阅读 · 0 评论 -
socket笔记4 粘包/分包的原因和处理方法 // 多线程
2-60 解决粘包、分包问题粘包原因:当发送的字节数据包比较小且频繁发送时,Socket内部会将字节数据进行粘包处理,既将频繁发送的小字节数据打包成 一个整包进行发送,降低内存的消耗。发送端发送的太快,接收方没有及时接收缓冲区的包,造成多个包一起被接收分包原因:当发送的字节数据包比较大时(大于缓存剩余空间大小 或者 大于最大报文长度),Socket内部会将发送的字节数据进行分包处理...原创 2020-03-02 16:23:57 · 546 阅读 · 0 评论 -
C++ 多线程Thread (c++11)
1. 头文件thread:该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。atomic:该头文主要声明了了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。mutex :该头文件主要声明了锁(mutex)相关的类。2. 创建线程创建线程比较简单,使用std的thread实例化一个线程对象就创建完成了。注意线程不能拷...原创 2020-02-28 00:04:38 · 426 阅读 · 0 评论 -
socket笔记3 select模型
2.17 服务器/客户端升级为select模型处理多客户端select 函数:int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);第一个参数是一个整数,指fd_set集合中所有socket的范围,而不是数量。即是所有描述符最大值+1,在windows...原创 2020-02-24 16:19:17 · 192 阅读 · 0 评论 -
socket笔记2
2.10 网络报文的数据格式定义及使用网络报文包含两个部分,头和体。服务端// Created by Surser on 2020/1/17.// Copyright © 2020 Surser. All rights reserved.//#ifdef _WIN32 #include<windows.h> #include<WinSock2....原创 2020-02-24 15:04:37 · 117 阅读 · 0 评论 -
socket笔记1
2.5 建立简单的TCP服务器和客户端在服务器绑定连接端口时,_sin.sin_port = htons(4567); // htons()将主机字节顺序转换为网络字节顺序。网络和本机字节序不同,需要转换,一个是大端编码,一个是小端编码。服务器://// main.cpp// hellocpp//// Created by Surser on 2020/1/17.// ...原创 2020-02-21 19:21:52 · 186 阅读 · 0 评论 -
应用层
动态主机配置协议DHCPDHCP (Dynamic Host Configuration Protocol) 提供了即插即用的连网方式,用户不再需要手动配置 IP 地址等信息。DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址。DHCP使用传输层的UDP服务。目标端口号67,源端口68。DHCP 工作过程如下:客户端发送 Discover 报文,该报文的目的地址...原创 2020-02-14 00:04:48 · 140 阅读 · 0 评论 -
网络层
网络层的任务是实现网络互联,实现数据包在各网络之间的传输。要实现网络层的任务,解决以下三个问题:网络层向运输层提供怎样的服务(可靠传输/不可靠传输);网络层寻址问题;路由选择问题。1. IP地址编址方式1.1 分类编址IP地址分为网络号和主机号。其中不同分类具有不同的网络号长度,并且是固定的。其中A类地址的最后一个网络号127,作为本地环回测试,不能指派。网络号为0的也保留不可指派。...原创 2020-02-12 17:00:01 · 240 阅读 · 0 评论 -
数据链路层
1. 三个基本问题封装成帧:网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。差错检测:发送之前基于发送数据计算出检错码(广泛使用循环冗余检验CRC),封装在帧尾,根据检错码判断帧是否出现错误。透明传输:帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转...原创 2020-02-10 23:57:31 · 215 阅读 · 0 评论 -
一文搞懂传输层协议 TCP和UDP
1. TCP流量控制目的:让发送方发送的速率不要太快,要让接收方来得及接受。TCP的流量控制是利用滑动窗口机制实现的,接收方在返回的ACK中会包含自己的接收窗口的大小,以控制发送方的数据发送。将窗口字段设置为 0,则发送方不能发送数据。1.1 TCP 滑动窗口窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小...原创 2020-02-10 17:11:14 · 157 阅读 · 0 评论 -
cpp防卫式头文件
#ifndef _HEAD_#define _HEAD_//...#endif在头文件中加入如上代码行,其中 HEAD用来识别该头文件,可以是这个头文件名字的大写。在调用这个头文件的时候,会判断是否被定义过,定义过了就不会再执行了,要注意两个不同的头文件不能重名。适合的场景:cpp文件调用了许多头文件,头文件可能会互相包含,加入这个的话调用头文件次序就无所谓了,这样头文件只会被...原创 2019-11-05 17:32:29 · 109 阅读 · 0 评论