自定义博客皮肤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)
  • 资源 (23)
  • 收藏
  • 关注

原创 ubuntu alt+tab出现两个窗口解决办法

Compizsudo apt-get install compiz-pluginssudo apt-get install compizconfig-settings-manager安装完成之后,在ubuntu里找一下这个工具。打开它,弹窗消息确定就好。左边菜单选择窗口管理,右边界面把「应用程序切换条」勾掉。就会发现两个中已经没了其中一个了。...

2020-06-22 10:22:46 857 1

原创 C++对象的内存布局

要想知道C++对象的内存布局, 可以有多种方式, 比如:输出成员变量的偏移, 通过offsetof宏来得到 通过调试器查看, 比如常用的VS 只有数据成员的对象 类实现如下: class Base1{public:int base1_1;int base1_2;}; 对象大小及偏移: sizeof(Base1) 8 offsetof(Bas...

2019-08-26 10:55:19 454

原创 互斥锁、自旋锁、条件变量、信号量的区别

互斥锁、自旋锁、条件变量、信号量的区别:(1)首先,互斥锁必须总是由给它上锁的线程解锁。信号量没有这种限制:一个线程可以等待某个给定信号量,而另一个线程可以挂出该信号量。(2)其次,一个信号量有一个与之关联的值。当一个线程挂出某个信号时,即使没有其他线程在等待该信号,信号值也不会丢失,延后再等待仍然可以取到挂出的值。然而,如果某个线程调用了pthread_cond_signal,不过当时没...

2019-08-24 14:49:01 563

原创 信号量

信号量是一种用于提供不同进程间或者一个给定进程的不同线程间同步手段的原语。三种类型的信号量:(1)Posix有名信号量:使用Posix IPC名字标识,可用于进程或者线程间的同步。(2)Posix基于内存的信号量:存放在共享内存区中,可用于进程或者线程间的同步。(3)System V信号量:在内核中维护,可用于进程或者线程间的同步。一个进程或者线程可以在某个信号量...

2019-08-24 13:45:45 585

原创 自旋锁

自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁。 自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁的持有时间比较短,或者说小于2次上下文切换的时间。 自旋锁在用户态的函数接口和互斥量一样,把pthread_mutex_xxx()中mutex换成spin,...

2019-08-24 11:47:46 336

原创 读写锁

读写锁与互斥量类似,不过读写锁允许更改的并行性,也叫共享互斥锁。互斥量要么是锁住状态,要么就是不加锁状态,而且一次只有一个线程可以对其加锁。读写锁可以有3种状态:读模式下加锁状态、写模式加锁状态、不加锁状态。 一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁(允许多个线程读但只允许一个线程写)。【读写锁的特点】: 如果有...

2019-08-24 11:42:12 293

转载 每天进步一点点——负载均衡之DNS域名解析

在上一篇文章(http://blog.csdn.net/cywosp/article/details/38014581)中讲到了使用HTTP重定向来实现服务器的负载均衡,本文则讲解另一种实现服务器集群的负载均衡方案——DNS域名解析。DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。人们在通过浏览...

2019-08-18 15:53:11 146

原创 windows上搭建Redis集群

一、资源准备二、Redis服务配置 双击Redis-x64-3.2.100.msi文件安装Redis服务,安装完成后,将Redis安装目录文件复制五份,并更改文件夹名称,文件结构如下:1、端口修改 将每一个Redis服务配置文件redis.windows.conf中监听端口号修改为新的编号,如Redis7000服务的端口号修改如下:port...

2019-08-17 16:05:59 280

原创 Redis 集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据库共享,并提供复制和故障转移功能。一、节点 一个Redis集群通常由多个节点(node)组成,在开始的时候,每个节点都是互相独立的,它们都处于一个只包含自己的集群当中,要组件一个真正可工作的集群,我们必须将多个独立的节点连接起来,构成一个包含多个节点的集群。 ...

2019-08-15 14:42:48 350

原创 Redis Sentinel哨兵

Sentinel是Redis的高可用性解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理请求命令。 ...

2019-08-14 21:30:56 253

原创 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 251

原创 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 150

原创 Redis AOF持久化

Redis默认使用RDB持久化方式,用户可以通过配置appendonly选项值为yes启用AOF持久化方式。AOF持久化保存数据库状态的方法是将服务器执行的写命令保存到aof文件中。AOF持久化的实现:(1)命令追加 当AOF持久化功能处于启用状态时,服务器在执行一个写命令后,会以协议格式将被执行的命令追加到服务器状态的aof_buf缓冲区的末尾。(2)AOF文件的...

2019-08-13 22:14:20 141

原创 Redis RDB持久化

数据库状态:redis服务器中的非空数据库以及他们的键值对数据称为数据库状态。Redis持久化:将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。RDB文件:RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据。RDB文件的创建与载入:1、有两个redis命令可以用于生成RDB文件,一个是save,另一个是bgsave。(1)SAVE命令会阻...

2019-08-13 21:47:55 206

转载 Epoll在LT和ET模式下的读写方式

http://kimi.it/515.html在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unava...

2019-08-13 10:16:58 130

原创 基于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 192

原创 linux系统查询进程占用内存、CPU

一、cat /proc/[pid]/status1、查询进程id2、查询进程占用内存情况参数说明:字段 说明 VmPeak 进程所使用的虚拟内存的峰值 VmSize 进程当前使用的虚拟内存的大小 VmLck 已经锁住的物理内存的大小(锁住的物理内存不能交换到硬盘) VmHWM 进程所使用的物理内存的峰值 VmRSS 进程当...

2019-08-04 10:03:15 370

原创 快速重传与快速恢复算法

我们认识到在收到一个失序的报文段时,TCP立即需要产生一个ACK(一个重复的ACK)。这个重复的ACK不应该被迟延。该重复的ACK的目的在于让对方知道收到一个失序的报文段,并告诉对方自己希望收到的序号。 我们不知道一个重复的ACK是有一个丢失的报文段引起的,还是由于仅仅出现了几个报文段的重新排序,因此我们等待少量重复的ACK到来。假如这只是一些报文段的重新排序,则在重...

2019-07-28 16:43:43 4871

原创 拥塞避免算法

慢启动算法是在一个连接上发起数据流的方法,但有时我们会达到中间路由器的极限,此时分组将被丢失。拥塞避免算法是一种处理丢失分组的方法。 拥塞避免算法假定由于分组收到损坏引起丢失是非常少的(远小于1%),因此分组丢失就意味着在源主机和目的主机之间的某处网络发生了拥塞。有两种分组丢失的指示:发生超时和接收到重复的确认(如果使用超时作为拥塞指示,那么需要使用一个好的RTT...

2019-07-28 16:04:59 2349

原创 慢启动

慢启动 TCP需要支持一种被称为“慢启动”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。 慢启动为发送方的TCP增加了另一个窗口:拥塞窗口,记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK,拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启动...

2019-07-28 15:02:27 2298

原创 滑动窗口

滑动窗口如图: 接收方通告的窗口称为提供的窗口,它覆盖了第4字节到第9字节的区域,表明接收方已经确认了包括第3字节在内的数据,且通告窗口大小为6字节。 当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或者减小了窗口的大小。我们使用三个术语来描述窗口左右边沿的运动: 1)称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生...

2019-07-28 14:36:14 654

原创 Nagle算法

Nagle算法 如果在一个TCP连接上,客户端每次只发送一个字节到服务器,这就产生一些41字节的分组:20字节的IP首部、20字节的TCP首部和一个字节的数据。在局域网上,这些小分组通常不会引起麻烦,因为局域网一般不会出现拥塞。但在广域网上,这些小分组则会增加拥塞出现的可能。一种简单和好的方法就是采用Nagle算法。 Nagle算法要求一个TCP连接上同一时刻最...

2019-07-28 13:51:36 341

原创 TCP 经受时延

通常TCP在接收到数据时并不会立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK)。绝大多数实现采用时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。 经受时延是因为TCP使用了一个200ms的定时器,该定时器以相对于内核引导的200ms固定时间溢出。由于将要确认的数据是随机到...

2019-07-28 13:33:00 314

原创 CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙。

CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙。firewall:systemctl start firewalld.service#启动firewallsystemctl stop firewalld.service#停止firewallsystemctl disable firewalld.service#禁止firewall开机启动...

2018-05-25 11:02:47 675

转载 套接字中缓冲区

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 3788

转载 再理解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 738

转载 结构体内存对齐计算问题总结大全

原文链接找不到了前言本文给大家介绍的是关于C++结构体内存对齐计算的相关内容,内存对齐计算可谓是笔试题的必考题,但是如何按照计算原则算出正确答案一开始也不是很容易的事,所以专门通过例子来复习下关于结构体内存对齐的计算问题。话不多说,来一起看看详细介绍吧。编译环境:vs2015对齐原则: 原则1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,...

2018-05-06 11:56:50 269

转载 TCP拥塞控制-慢启动、拥塞避免、快重传、快启动

一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。对比流量控制:拥塞控制是一个全局的过程,涉及到所有的主机、路由器、以及降低网络相关的所有因素。流量控制往往指点对点通信量的控制。是端对端的问题。    拥塞...

2018-05-01 21:00:38 341

转载 TCP连接中启用和禁用TCP_NODELAY有什么影响?

TCP/IP协议中针对TCP默认开启了Nagle算法。Nagle算法通过减少需要传输的数据包,来优化网络。在内核实现中,数据包的发送和接受会先做缓存,分别对应于写缓存和读缓存。启动TCP_NODELAY,就意味着禁用了Nagle算法,允许小包的发送。对于延时敏感型,同时数据传输量比较小的应用,开启TCP_NODELAY选项无疑是一个正确的选择。比如,对于SSH会话,用户在远程敲击键盘发出指令的速...

2018-05-01 10:39:23 61537 8

转载 activemq消息队列

1、ActiveMQ 特性 - 消费者(同步和异步调度)点击打开链接2、amq的queue同步和异步接收消息点击打开链接3、提高ActiveMQ工作性能点击打开链接

2017-12-08 17:18:27 146

原创 error while loading shared libraries: ***.so: cannot open shared object file: No such file or direct

1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so

2017-12-07 11:14:40 334

原创 观察者模式

模式结构图:代码示例:#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 247

原创 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 1735

转载 Linux(Ubuntu)下MySQL的安装与配置

转自点击打开链接在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕。今天,需要在Linux下用Qt连接MySQL。遂安装配置了一把。1)首先检查系统中是否已经安装了MySQL在终端里面输入 sudo netstat -tap | grep mysql若没有反映,没有显示已安装结果,则没有安装。若如下显示,则表示已经安装2)

2017-05-16 21:31:05 362

原创 ngx_queue_t

#include typedef __u_char u_char;typedef intptr_t ngx_int_t;typedef struct ngx_queue_s ngx_queue_t;struct ngx_queue_s { ngx_queue_t *prev; ngx_queue_t *next;};#define ngx_q

2017-04-02 22:30:24 295

原创 开发一个使用upstream的示例模块

Nginx配置文件/usr/local/nginx/conf/nginx.conf配置如下:#worker工作进程的用户及用户组user weijl;#Nginx worker进程个数worker_processes 1;#error日志的设置,默认logs/error.log error#error_log logs/error.log;#error_log logs/

2017-04-02 16:44:21 1254

原创 基于Nginx实现一个自己的HTTP模块--发送磁盘中的文件

文件/home/weijl/workspace/nginx-1.10.3/src/http/config内容如下:ngx_addon_name=ngx_http_mytest_moduleHTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module"NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ng

2017-03-31 11:11:16 1013

原创 基于Nginx实现一个自己的HTTP模块

/usr/local/nginx/conf/nginx.conf文件如下:实现自己的模块C代码文件/home/weijl/workspace/nginx-1.10.3/src/http/ngx_http_mytest_module.c如下:

2017-03-31 09:21:41 1873

原创 用HTTP proxy module配置一个反向代理服务器

三台ubuntu计算机,ip分别为192.168.0.5     负载均衡服务器192.168.0.7     web服务器192.168.0.8     web服务器三台设备都安装了nginx在web服务器安装目录下创建文件夹proxy_loc,proxy_loc文件下创建index.html文件$sudo mkdir proxy_loc$sudo

2017-03-30 14:51:22 876

转载 HTTP通信中的请求转发和请求重定向

点击打开链接在HTTP通信和Java Web开发中,经常会用到请求转发和请求重定向,它们两个有很大的区别:    首先,请求转发是指:一个Web资源在收到一个客户端的请求后,去掉用另外一个资源进行处理,这个过程请称为请求转发。很明显,请求转发是发生在Web服务器端的,客户发发出Request,服务端在内部进行forward,然后把最终的结果Response给客户端。    请求重定

2017-03-29 15:33:25 497

JAVA核心技术.pdf

JAVA核心技术.pdf

2017-02-10

Debugging.with.gdb.中文版

Debugging.with.gdb.中文版

2016-12-17

Python简明教程

Python简明教程

2016-11-16

CxImage6.0

CxImage6.0 源代码 支持不同的图片格式 透明色通道

2015-09-15

科来网络分析系统2010 技术交流版

科来网络分析系统2010 技术交流版

2015-03-11

SVN日志插件

scintilla 日志插件 SVN 开发

2014-10-24

Windows 模拟时钟

Windows 模拟时钟 定时器 API

2014-06-24

error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)

error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案

2014-05-28

SettingTrack

SettingTrack 代码

2014-03-12

CanBusDebugTool

CanBusDebugTool 代码

2014-03-12

Kill run进程工具

Kill 启动 进程工具

2014-03-12

Wince串口工具

wince 串口 打印 工具

2014-03-12

设计模式可复用面向对象软件基础

设计模式可复用面向对象软件基础,找过很多的pdf,但是大多都是每一章一个pdf文件,这个资源就全部整合到一个pdf文件里,方便阅读。

2013-10-20

C++ 标准库string replace成员的几个用法

C++ 标准库string replace成员的几个用法

2013-10-09

windows API 文本文件换行读写

windows API 文本文件 txt 换行 读写

2013-09-22

ATL基础教程

一个简单的ATL实例,MFC实现,控制台调用ATL

2013-09-03

Windows API 创建对话框、子控件

Windows API 创建对话框,在主对话框上创建子控件按钮,单击按钮在对话框上显示位图,单击另一按钮给主对话框发送销毁消息,关闭对话框

2013-07-09

鼠标按下和弹起 按钮上贴位图

封装好一个类实现鼠标按下和弹起分别显示不同的位图,在OnPaint函数里面用windows API 编写的代码

2013-07-04

Windows API 实现截屏

Windows API 实现截屏 保存到本地

2013-07-04

静态存储区 堆 栈

C/C++语言 数据在内存中存储的方式 静态存储区、堆、栈

2013-02-03

Windows串口通信相关API函数

Windows串口通信相关API函数 doc

2012-11-23

注册表 API

25 个注册表 API 函数详解 doc

2012-11-23

C++语言处理异常 try catch throw

C++语言处理异常 try catch throw,带程序例子

2012-09-28

空空如也

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

TA关注的人

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