学习笔记
文章平均质量分 52
韦伊
这个作者很懒,什么都没留下…
展开
-
C++对象的内存布局
要想知道C++对象的内存布局, 可以有多种方式, 比如:输出成员变量的偏移, 通过offsetof宏来得到 通过调试器查看, 比如常用的VS 只有数据成员的对象 类实现如下: class Base1{public:int base1_1;int base1_2;}; 对象大小及偏移: sizeof(Base1) 8 offsetof(Bas...原创 2019-08-26 10:55:19 · 481 阅读 · 0 评论 -
滑动窗口
滑动窗口如图: 接收方通告的窗口称为提供的窗口,它覆盖了第4字节到第9字节的区域,表明接收方已经确认了包括第3字节在内的数据,且通告窗口大小为6字节。 当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或者减小了窗口的大小。我们使用三个术语来描述窗口左右边沿的运动: 1)称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生...原创 2019-07-28 14:36:14 · 685 阅读 · 0 评论 -
Nagle算法
Nagle算法 如果在一个TCP连接上,客户端每次只发送一个字节到服务器,这就产生一些41字节的分组:20字节的IP首部、20字节的TCP首部和一个字节的数据。在局域网上,这些小分组通常不会引起麻烦,因为局域网一般不会出现拥塞。但在广域网上,这些小分组则会增加拥塞出现的可能。一种简单和好的方法就是采用Nagle算法。 Nagle算法要求一个TCP连接上同一时刻最...原创 2019-07-28 13:51:36 · 372 阅读 · 0 评论 -
TCP 经受时延
通常TCP在接收到数据时并不会立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK)。绝大多数实现采用时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。 经受时延是因为TCP使用了一个200ms的定时器,该定时器以相对于内核引导的200ms固定时间溢出。由于将要确认的数据是随机到...原创 2019-07-28 13:33:00 · 365 阅读 · 0 评论 -
linux系统查询进程占用内存、CPU
一、cat /proc/[pid]/status1、查询进程id2、查询进程占用内存情况参数说明:字段 说明 VmPeak 进程所使用的虚拟内存的峰值 VmSize 进程当前使用的虚拟内存的大小 VmLck 已经锁住的物理内存的大小(锁住的物理内存不能交换到硬盘) VmHWM 进程所使用的物理内存的峰值 VmRSS 进程当...原创 2019-08-04 10:03:15 · 424 阅读 · 0 评论 -
套接字中缓冲区
from:点击打开链接1、MTU(Maximum Transmission Unit)最大传输单元,在数据链路层中,往往规定了MTU大小,IP层的数据包通过数据链路层如果大于MTU,将被分片,到达接收端IP层后再被重组。以太网的MTU为1500字节。2、MSS(Maximum Segment Size)最大报文段,是TCP协议的一个选项。MSS选项用于在TCP建立连接时,收发...转载 2018-05-24 14:42:00 · 3889 阅读 · 0 评论 -
再理解tcp backlog
from:点击打开链接 在linux 2.2以前,backlog大小包括了半连接状态和全连接状态两种队列大小。linux 2.2以后,分离为两个backlog来分别限制半连接SYN_RCVD状态的未完成连接队列大小跟全连接ESTABLISHED状态的已完成连接队列大小。互联网上常见的TCP SYN FLOOD恶意DOS攻击方式就是用/proc/sys/net/ipv4/tcp...转载 2018-05-24 14:17:07 · 760 阅读 · 0 评论 -
结构体内存对齐计算问题总结大全
原文链接找不到了前言本文给大家介绍的是关于C++结构体内存对齐计算的相关内容,内存对齐计算可谓是笔试题的必考题,但是如何按照计算原则算出正确答案一开始也不是很容易的事,所以专门通过例子来复习下关于结构体内存对齐的计算问题。话不多说,来一起看看详细介绍吧。编译环境:vs2015对齐原则: 原则1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,...转载 2018-05-06 11:56:50 · 290 阅读 · 0 评论 -
oracle 建表空间用户及赋权
--建表空间CREATE tablespace weijldatafile "E:\APP\ADMINISTRATOR\ORACLE\ORCL\weijl.DBF"size 10Mautoextend on next 5M;--删除表空间drop tablespace weijlincluding contents and datafiles;--建用户CREATE USER原创 2017-06-09 10:44:56 · 1767 阅读 · 0 评论 -
Linux(Ubuntu)下MySQL的安装与配置
转自点击打开链接在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕。今天,需要在Linux下用Qt连接MySQL。遂安装配置了一把。1)首先检查系统中是否已经安装了MySQL在终端里面输入 sudo netstat -tap | grep mysql若没有反映,没有显示已安装结果,则没有安装。若如下显示,则表示已经安装2)转载 2017-05-16 21:31:05 · 382 阅读 · 0 评论 -
Linux环境下安装Nginx+Pcre+zlib+OpenSSL
转自:http://inotgaoshou.iteye.com/blog/962946Nginx是一款非常优秀的Web服务器,它是由俄罗斯人Igor Sysoev(伊戈尔-塞索耶夫)写的,虽然它的应用还没有老牌Web服务器Apache广泛,但相比Apache,它有着自己的一些优势,比如很好的高并发访问支持内存却占用少,配置简单,稳定性高,支持热部署等等。Nginx 已经在俄罗斯转载 2016-05-16 12:23:15 · 1131 阅读 · 0 评论 -
linux条件变量
互斥量用于上锁,条件变量则用于等待,这两种类型的同步都是需要的。 条件变量是线程可用的另一种同步机制。条件变量与互斥量一起使用,允许线程以无竞争的方式等待特定的条件发生。 条件本身是由互斥量保护的。线程在改变条件状态之前必须首先锁住互斥量。其他线程在获得互斥量之前不会察觉到这种改变,因为互斥量必须在锁定以后才能计算条件。 每个条...原创 2016-07-12 16:53:05 · 469 阅读 · 0 评论 -
tar解压报错
weijl@ubuntu:~/work/home/weijl$ tar -zvxf /home/weijl/backup/20161120110556.zip -C /home/weijl/work/gzip: stdin has more than one entry--rest ignoredtar: Child returned status 2tar: Error is n原创 2016-11-20 11:34:10 · 795 阅读 · 0 评论 -
线程与信号
sigwait 线程与信号原创 2016-07-21 16:49:46 · 298 阅读 · 0 评论 -
linux 读写锁
linux 读写锁原创 2016-07-12 16:28:17 · 378 阅读 · 0 评论 -
慢启动
慢启动 TCP需要支持一种被称为“慢启动”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。 慢启动为发送方的TCP增加了另一个窗口:拥塞窗口,记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK,拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启动...原创 2019-07-28 15:02:27 · 2393 阅读 · 0 评论 -
拥塞避免算法
慢启动算法是在一个连接上发起数据流的方法,但有时我们会达到中间路由器的极限,此时分组将被丢失。拥塞避免算法是一种处理丢失分组的方法。 拥塞避免算法假定由于分组收到损坏引起丢失是非常少的(远小于1%),因此分组丢失就意味着在源主机和目的主机之间的某处网络发生了拥塞。有两种分组丢失的指示:发生超时和接收到重复的确认(如果使用超时作为拥塞指示,那么需要使用一个好的RTT...原创 2019-07-28 16:04:59 · 2424 阅读 · 0 评论 -
快速重传与快速恢复算法
我们认识到在收到一个失序的报文段时,TCP立即需要产生一个ACK(一个重复的ACK)。这个重复的ACK不应该被迟延。该重复的ACK的目的在于让对方知道收到一个失序的报文段,并告诉对方自己希望收到的序号。 我们不知道一个重复的ACK是有一个丢失的报文段引起的,还是由于仅仅出现了几个报文段的重新排序,因此我们等待少量重复的ACK到来。假如这只是一些报文段的重新排序,则在重...原创 2019-07-28 16:43:43 · 4964 阅读 · 0 评论 -
windows上搭建Redis集群
一、资源准备二、Redis服务配置 双击Redis-x64-3.2.100.msi文件安装Redis服务,安装完成后,将Redis安装目录文件复制五份,并更改文件夹名称,文件结构如下:1、端口修改 将每一个Redis服务配置文件redis.windows.conf中监听端口号修改为新的编号,如Redis7000服务的端口号修改如下:port...原创 2019-08-17 16:05:59 · 307 阅读 · 0 评论 -
互斥锁、自旋锁、条件变量、信号量的区别
互斥锁、自旋锁、条件变量、信号量的区别:(1)首先,互斥锁必须总是由给它上锁的线程解锁。信号量没有这种限制:一个线程可以等待某个给定信号量,而另一个线程可以挂出该信号量。(2)其次,一个信号量有一个与之关联的值。当一个线程挂出某个信号时,即使没有其他线程在等待该信号,信号值也不会丢失,延后再等待仍然可以取到挂出的值。然而,如果某个线程调用了pthread_cond_signal,不过当时没...原创 2019-08-24 14:49:01 · 606 阅读 · 0 评论 -
信号量
信号量是一种用于提供不同进程间或者一个给定进程的不同线程间同步手段的原语。三种类型的信号量:(1)Posix有名信号量:使用Posix IPC名字标识,可用于进程或者线程间的同步。(2)Posix基于内存的信号量:存放在共享内存区中,可用于进程或者线程间的同步。(3)System V信号量:在内核中维护,可用于进程或者线程间的同步。一个进程或者线程可以在某个信号量...原创 2019-08-24 13:45:45 · 625 阅读 · 0 评论 -
Redis 集群
Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据库共享,并提供复制和故障转移功能。一、节点 一个Redis集群通常由多个节点(node)组成,在开始的时候,每个节点都是互相独立的,它们都处于一个只包含自己的集群当中,要组件一个真正可工作的集群,我们必须将多个独立的节点连接起来,构成一个包含多个节点的集群。 ...原创 2019-08-15 14:42:48 · 381 阅读 · 0 评论 -
自旋锁
自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁。 自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁的持有时间比较短,或者说小于2次上下文切换的时间。 自旋锁在用户态的函数接口和互斥量一样,把pthread_mutex_xxx()中mutex换成spin,...原创 2019-08-24 11:47:46 · 363 阅读 · 0 评论 -
读写锁
读写锁与互斥量类似,不过读写锁允许更改的并行性,也叫共享互斥锁。互斥量要么是锁住状态,要么就是不加锁状态,而且一次只有一个线程可以对其加锁。读写锁可以有3种状态:读模式下加锁状态、写模式加锁状态、不加锁状态。 一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁(允许多个线程读但只允许一个线程写)。【读写锁的特点】: 如果有...原创 2019-08-24 11:42:12 · 319 阅读 · 0 评论 -
Redis Sentinel哨兵
Sentinel是Redis的高可用性解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理请求命令。 ...原创 2019-08-14 21:30:56 · 274 阅读 · 0 评论 -
Redis主从+Sentinel哨兵部署,实现Redis高可靠,读写分离
一、Redis服务部署文件结构:Redis-sentinel-*:是3个哨兵服务Redis-master-6379:Redis主服务器Redis-Slave-6380:Redis从服务器Redis-Slave-6381:Redis从服务器二、主从配置1、Master配置: 默认端口6379,不作修改2、Slave配置:分别把6380及6381从服务端口por...原创 2019-08-14 17:00:17 · 278 阅读 · 0 评论 -
Redis复制
在Redis中,用户可以通过执行slaveof命令或者设置saveof选项让一个服务器去复制另一个服务器,称被复制的服务器称为master,对master执行复制的服务器称为slave。如: 192.168.0.4:6379>slaveof 192.168.0.3 6379 那么服务器192.168.0.4:6379称为slave,192.168...原创 2019-08-13 22:53:45 · 178 阅读 · 0 评论 -
Redis AOF持久化
Redis默认使用RDB持久化方式,用户可以通过配置appendonly选项值为yes启用AOF持久化方式。AOF持久化保存数据库状态的方法是将服务器执行的写命令保存到aof文件中。AOF持久化的实现:(1)命令追加 当AOF持久化功能处于启用状态时,服务器在执行一个写命令后,会以协议格式将被执行的命令追加到服务器状态的aof_buf缓冲区的末尾。(2)AOF文件的...原创 2019-08-13 22:14:20 · 166 阅读 · 0 评论 -
Redis RDB持久化
数据库状态:redis服务器中的非空数据库以及他们的键值对数据称为数据库状态。Redis持久化:将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。RDB文件:RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据。RDB文件的创建与载入:1、有两个redis命令可以用于生成RDB文件,一个是save,另一个是bgsave。(1)SAVE命令会阻...原创 2019-08-13 21:47:55 · 230 阅读 · 0 评论 -
观察者模式
模式结构图:代码示例:#include <iostream>#include <string>#include <vector>#include <list>#include <windows.h>using namespace std;class IObserver{public: virtual vo...原创 2017-07-10 14:20:08 · 274 阅读 · 0 评论 -
基于Nginx的TCP服务负载均衡
一、configure配置加上 --with-streamsudo ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_flv_module --with-http_dav_module --with-http_gzip_static_module ...原创 2019-08-08 22:32:14 · 236 阅读 · 0 评论 -
secureCRT The remote system refused the connection.
secureCRT转载 2016-05-04 10:47:32 · 900 阅读 · 0 评论 -
linux下GDB调试C++标准库STL,打印STL对象的内容
示例代码://============================================================================// Name : cpp.cpp// Author : weijl// Version :// Copyright : Your copyright notice// Descrip原创 2016-05-12 10:50:57 · 5241 阅读 · 0 评论 -
linux上安装Eclipse
之所以要在linux上安装Eclipse,是因为一开始是通过samba服务共享文件到windows上,然后再windows上安装Eclipse+WinGW原创 2016-05-24 16:38:59 · 4369 阅读 · 2 评论 -
设计模式--工厂方法
//代码示例#include <iostream>#include <string>using namespace std;enum CayType{ CAMRY,//凯美瑞 AVALON,//亚洲龙 CROWN,//皇冠 ACCORD,//雅阁 MAGOTAN,//迈腾 END,};class CCar{public: CCa...原创 2013-12-03 22:11:38 · 657 阅读 · 0 评论 -
TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
转自:http://blog.csdn.net/goodboy1881/article/details/745606目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。(转载 2015-03-12 15:24:25 · 462 阅读 · 0 评论 -
TCP序列号和确认号详解
转自:http://blog.csdn.net/webnumen/archive/2007/03/26/1541330.aspxTCP序列号和确认号详解在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们 学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP通讯 的过程,并没转载 2015-03-11 15:11:14 · 638 阅读 · 0 评论 -
Wince动态加载字体资源
Wince动态加载字体资源,AddFontResouce添加字体资源,RemoveFontResouce删除字体资源,修改系统字体注册表原创 2015-01-12 10:41:00 · 1030 阅读 · 0 评论 -
C++语言处理异常 try catch throw
C++语言处理异常 try C++语言提供对处理异常情况的内部支持,异常情况即是所知道的“异常”,可能在你的程序执行期间出现。 try、throw和catch语句已被加到C++语言中去实现异常处理。有了C++异常处理,你的程序可以向更高的执行上下文传递意想不到的事件,这些上下文能更好地从这些异常事件中恢复过来。这些异常由正常控制流外的代码进行处理。Microsoft原创 2014-10-23 10:54:17 · 627 阅读 · 0 评论 -
设计模式--适配器
意图:将一个类的接口转换成客户希望的另外原创 2014-06-05 23:15:13 · 554 阅读 · 0 评论