自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Redis的持久化

Redis是一个键值对数据库,是内存数据库,Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.RDBRDB所产生的是一个经...

2018-06-06 16:35:02 159

原创 Redis的过期策略

常见的过期删除策略:(1)定时删除:创建定时器,在时间到了时候,立刻对键进行删除过期键能尽可能被删除,并释放内存在过期键比较多的情况下,删除操作可能会占用一部分CPU时间。当内存不紧张而CPU非常紧张的情况下,会对服务器响应时间喝吞吐量造成影响例如,当大量请求等待服务器处理时,服务器应该优先处理请求而不是删除过期键。另外,创建定时器需要用到时间时间事件(由无序链表实现),以至于查找一个事件的时间复...

2018-06-05 09:30:38 959

转载 Zookeeper的功能以及工作原理

1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)文件系统2)通知机制3.Zookeeper文件系统每个子目录项如 NameSer...

2018-04-16 14:29:39 107

原创 MyBatis的工作原理

首先,我们先来了解一下,为什么要用MyBatis?最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下步骤:加载JDBC相关驱动;建立并获取数据库相关连接;创建 JDBC Statements 对象;设置SQL语句的传入参数;执行SQL语句并获得查询结果;对查询结果进行转换处理并将处理结果返回;释放相关资源;原因一:数据库连接频繁的开关,造成了资源严重的浪费,影响性能。解决问题:可以使用数据...

2018-04-12 16:06:16 246

原创 Dubbo的原理解析

Dubbo是什么?Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容...

2018-04-11 14:58:59 307

原创 Spring原理和SpringMVC流程

Spring 框架Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式.                           组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:核心容器:核心容器提供 Spring 框架的基本功能。核心容器...

2018-04-10 14:41:54 2997 1

原创 HashMap那些事

HashMap其实是由数组+链表+红黑树组成的,这个特性在JAVA8中已经得以体现。最初并没有红黑树,只是由链表组成,但是,当链表过长时,查询效率会十分低下。所以JAVA8中当链表的长度到达一定的高度时候,便会转换为红黑树,以此来优化性能。我们可以把HashMap看成是一个数组(它底层的实现也是这样的,只是可能会稍稍复杂),而它是由一个个单链表组成的(数组的每项元素为一个节点的链表)。

2017-10-09 19:39:40 154

原创 MongoDB安装与配置(windows)

刚进公司,需要用到MongoDB,所以先说一下他的安装,主要是Windows下的下载地址:链接读者可以根据自己的需要进行下载读者可以一路next下去,知道Install当安装完毕后,进入安装目录,新建两个文件夹,并且重命名为data和logs。data是存放数据的,logs是存放日志的然后,在该目录下创建mongo.conf文件,并且在其中输

2017-09-18 19:18:44 323

转载 Redis核心概念

原文出处: 高广超   概述Redis 与其他 key – value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。

2017-08-17 09:10:17 247

原创 swing的初步学习(读书笔记)

由于最近要写毕设,要做一个界面,由于没有学习过JAVA方面编写GUI的经验,去网上查了查。变学了这个swing基本组件是指只能依托在中间容器上才能被显示的组件,它不能独立存在给一个小案例import java.awt.event.ActionEvent;impo

2017-05-05 09:14:39 211

原创 MongoDB运行机制

MongoDB是用C++开发的,主要解决的是海量数据的访问效率问题。根据官方文档记载,当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万~1.5万次读写请求。数据存储结构MongoDB内部有预分配空间的机制,每个预分配的文件都用0进行填充,这使Mo

2017-04-21 16:29:48 1051

原创 Spring

Spring是一个开源框架,最早由Rod Johnson创建,Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合等方面从Spring中获益。为了降低Java开发的复杂性,Spring采取了以下4种关键策略:基于POJ

2017-04-10 18:17:28 300

原创 redis安装及其连接(windows)

一,先可以线下载redis 你可以上官网,下载redis的windows版官网:http://redis.io/   中文官网:http://www.redis.net.cn/    【推荐】中文官网:http://www.redis.cn/二,安装redis此处的redis文件夹是自己建,把自己下载的redis包解压放入其中,在cmd进入其中的目录下,运行上述

2017-03-27 17:15:36 384

原创 HTTP详解( HTTP1.0和1.1 POST和GET区别)

超文本传输协议(HTTP)是一种应用协议用 于分布式,协作,超媒体信息系统。HTTP是交换或转让的超文本的协议。HTTP函数作为请求-响应于协议的客户端-服务器计算模式。HTTP是一个应用层协议的框架内,设计的因特网协议套件。它的定义假定底层和可靠的传输层的协议,传输控制协议(TCP)是常用的。然而HTTP可以适于使用不可靠的协议,如用户数据 ??报协议(UDP),例如在HTTPU和简单服

2016-08-21 00:12:27 5000 1

原创 MYSQL数据库使用与链接详解(Linux)

首先,你Linux上面必须安装MYSQL数据库,在上面的一篇博客中曾仔细说过,这里便不多说了。其次,启动MYSQL进入数据库重新打开一个终端,查看请记住他的端口号(3306),后面会用到给你想使用这个数据库用户权限PS(图中红笔钩花的便是用户名)下面便是建表的过程:接下来是一些基本使用操作:

2016-08-15 14:04:39 327

转载 如何在linux下检测内存泄漏

来源:洪琨链接:点击打开链接1.开发背景在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程序,而后调试器将在退出程序时,打印出程序运行过程中在堆上分配而没有释放的内存信息,其中包括代码文件名、行号以及内存大小。该功能是 MFC Framework 提供的内置机制,封装在其类结构体系内部。在 linux 或者 unix 下,我们的 C++ 程

2016-08-12 21:47:09 2734

原创 speedtest-cli在CentOS上的安装及其使用

当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商的网络连接速度。在可用于测试宽带速度的网站中,Speedtest.net也许是使用最广泛的。Speedtest.net的工作原理并不复杂:它在你的浏览器中加载JavaScript代码并自动检测离你最近的Speedtest.net服务器,然后向服务器发送HTTP GET and POST请求来测试上行/下行网速。

2016-08-12 21:31:27 5927

原创 CentOS下安装mysql

首先,大家可以看看自己的Linux下是否安装了MYSQL命令: rpm -qa | grep -i mysql如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库删除命令:rpm -e --nodeps 包名(例如: rpm -ev mysql-4.1.12-3.RHEL4.1 )删除老版本mysql的开发头文件和库命令:rm -fr /usr

2016-08-04 20:13:08 254

原创 动态库和静态库浅析

动态链接库,这些库通常有文件扩展名 DLL,OCX(含库的ActiveX控件),或DRV(对遗留系统驱动程序)。该文件格式的DLL是一样的Windows EXE文件-也就是说,移植可执行(PE)为32位和64位 Windows和新的可执行文件(NE)的16位 Windows操作系统。DLL可以包含代码,数据,和资源,在任何组合。数据文件具有相同的文件格式作为DLL,但具有不同的文件扩展名,可能

2016-08-03 20:36:26 582

原创 buddy内存分配算法浅析

因为今天遇到这个问题,所以上网搜了下,看了觉得还是很有用处,便写了这篇博文。buddy内存分配算法技术是一种内存分配算法,将内存划分分区,试图以适当地满足内存请求。buddy内存分配算法是比较容易实行。它支持有限,高效的分裂和内存块的合并。目的是为了解决内存的外碎片。避免外碎片的方法有两种1,利用分页单元把一组非连续的空闲页框映射到非连续的线性地址区间。2,开发适当的技术来记录

2016-08-02 20:46:37 2851 1

原创 select poll epoll 区别

在前面几天,我们分别写了基于select , poll,  epoll三种简单的服务器(没看过的读者可以先去看看),然而,此时会不会有人问,既然是实现同一种功能,为什么要用不用的函数呢?首先,来看看selectselect目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点。select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,可

2016-07-31 19:42:18 497

原创 epoll详解(Linux代码实现)

static void guse(const char* prac){printf("%s [ip] [port]..\n",prac);}static int my_select(cons

2016-07-30 20:02:41 549

原创 select和poll服务器实现(Linux)

select是一个系统调用和应用程序编程接口(API)在类Unix和POSIX兼容的操作系统用于检查的状态文件描述符打开输入/输出通道。选择系统调用是类似的调查在UNIX System V和更高版本的操作系统推出设施.函数如下:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct

2016-07-29 20:19:25 774

原创 TCP服务器搭建(代码实现)及SO_REUSEADDR解析

相信读者对TCP协议应该有一个清晰的概念,故而在此不再细说,但在后面还是会详细的给大家介绍,首先,先给大家说一说搭建TCP服务器用的主要函数:首先是网络字节序和主机字节序的转换函数:其次是在给大家看一看监听函数还有bind和accept函数就不再给大家介绍了server的搭建有基于进程的和基于线程的,我在这里给大家的是基于线程的。在这

2016-07-27 19:50:48 1534

原创 常见的路由表建立算法

首先,我们来看看路由表到底是什么?在Linux用ifconfig可以查看,在windos下面用ipconfig路由是网络中选择最佳路径的过程。在分组交换网络中,路由指导 网络数据包转发(从源到最终目的地)通过中间节点。中间节点通常是网络等硬件设备 路由器 , 桥梁 , 网关 , 防火墙 或 开关 。 路由表 保持记录的各种网络目的地的路线。 因此,构建路由表,在路由器的内存构建

2016-07-26 19:41:05 5718

原创 NAT和代理服务器解析

代理服务器是一个服务器,它作为一个中介用于从请求客户端从其他服务器寻求资源。客户端连接到代理服务器,请求一些服务,如一个文件,连接,网页,或可从不同的服务器和代理服务器等资源评估的要求,以此来简化和控制其复杂性。代理被发明出来的结构和封装添加到分布式系统。今天,大多数代理是网络代理,便利获取内容的万维网,并提供匿名。类型代理服务器可以驻留在用户的本地计算机上,或在互联网上的用户的计算机

2016-07-25 18:59:45 1081

原创 IP分片与重组详解

大家对IP数据包头,应该不陌生吧分片便是与图中圈出来的两个地址有关,本文也是将主要围绕他们展开。那我们先来了解他们的概念。标志一个三比特字段遵循与用于控制或识别片段。他们是(按顺序,从高分以低位):0:保留; 必须为零。1位:不分段(DF)2位:更多片段(MF)如果DF标志被设置,并且分片需要来路由分组,则该分组被丢弃。这可以发送分组到不具有足够的资

2016-07-23 19:40:24 17103 3

原创 读者写者问题浅析(代码实现)

读者作家(RW)或共享独占锁(也称为多个读取器/单写入器锁定或多读卡器锁)的一个同步原语,解决了一个读者-writers问题。一个RW锁允许并发的只读操作的访问,而写操作需要独占访问。这意味着多个线程可以并行读出的数据,但独占锁是需要编写或修改数据。当一个作家写数据,直到作家写完所有其他作家或读者将被阻止。一个常见的用途可能是用于控制访问存储器中的数据结构不能被更新原子和是无效的(不应该由另一个线

2016-07-20 20:41:19 6596

原创 生产者消费者问题(代码实现)

生产者-消费者问题(也被称为有界缓冲器问题)是一个典型的例子多线程同步的问题。问题描述了两个进程,生产者和消费者,谁都有一个共同的,固定大小的缓冲区作为一个队列。制片人的工作是生成数据,把它放入缓冲区,并重新开始。同时,消费者在消费数据(即,从缓冲器中移除),一次一个块。问题是确保生产者不会尝试将数据添加到缓冲区,如果它的全部,而且消费者不会尝试从空缓冲区删除数据。对生产者的解决方案是

2016-07-19 22:29:29 5900

原创 死锁浅析

在并发计算,一个死锁时,两个相互竞争的行动等待其他完成,因此没有永远不会发生。死锁是一个普遍的问题多系统,并行计算和分布式系统,其中软件和硬件锁是用于处理共享资源和执行过程同步。在一个操作系统中,当发生死锁进程或线程进入等待状态,因为所请求的系统资源被另一个等待过程,而这又是等待由另一个等待进程 ​​持有另一个资源保持。如果因为由它要求的资源正在使用另一个等待处理的过程是不能无限期地改变其

2016-07-18 20:26:10 650

原创 线程(代码实现)详解

在计算机科学中,一个线程执行的是,可以独立地被一个管理编程指令的最小序列调度,这是通常的的一部分的操作系统。线程和所述的实施过程的操作系统之间的不同,但在大多数情况下,一个线程的过程的一个组成部分。多个线程可以在一个过程中存在,执行同时和共享的资源,例如存储器,而不同的过程不共享这些资源。特别是,一个进程的线程共享其可执行代码和它的变量在任何给定时间的值。具有单处理器系统通常实现由多线程时

2016-07-16 21:43:43 4628

原创 线程安全及重入函数

首先,我们要知道什么事线程。一个线程执行的是,可以独立地被一个管理编程指令的最小序列调度,这通常是一部分的操作系统。线程和所述的实施过程的操作系统之间的不同,但在大多数情况下,一个线程的过程的是一个组成部分。多个线程可以在一个过程中存在,执行同时和共享的资源,例如存储器,而不同的过程不共享这些资源。特别是,一个进程的线程共享其可执行代码和它的变量在任何给定时间的值。线程安全是一个计算机

2016-07-15 22:47:11 286

原创 自主实现sleep函数(代码实现)

首先,在实现sleep函数前,先给大家价绍两个函数好了,有了这两个函数,我们便可以开始实现自己的sleep函数了然后,来看看结果:看来,的确是可以得,但是这个函数是有漏洞的,具体的漏洞我们在后面再说,我们把这段代码修改一下,使其没有漏洞:在改之前,要先了解一个函数接下来,我们就可以实现了:现在,简单的说说第一个

2016-07-13 22:34:32 2084

原创 命名管道(代码实现)

在前面,大概和简单的向大家介绍了命名管道,今天,我们来就具体实现一下;(由于在前面一篇中理论已经介绍的很清楚,所以本博文主要是说如何实在的)首先,我们来看看:它的函数原型看完了后,我们写两个程序,一个叫fifo.c和fifo2.c首先,是fifo2.c,它是写端那么,fifo.c就是读端了最后,在写一下makefile

2016-07-12 14:59:01 1103

原创 红黑树(代码实现)

首先,给大家介绍一下什么叫红黑树。看了很多书,查了很多资料,个人觉得还是《算法导论》上说的正确。我们来看看它上面是如何说的:(PS:请特别注意红色标注的地方,这是红黑树的特性和其保持平衡的关键)这些约束强制的红-黑树的临界特性:从根到最远叶的路径是不超过两倍,只要从根到最近的叶的路径更短。其结果是,该树是大致高度平衡。因为诸如插入,删除,和发现值的操作所需要的最坏情况下的时间正比于

2016-07-11 21:26:30 481

原创 信号

信号是有限形式的进程间通信中使用的Unix,类Unix和其他POSIX兼容的操作系统的。信号是一个异步发送到通知处理或特定的线程,以通知它发生事件的同一进程内。当发送信号时,操作系统中断目标进程的正常执行的流动来传递信号。可以执行过程中的任何中断非原子指令。如果进程事先注册的信号处理程序,该程序被执行。否则,默认信号处理程序被执行。嵌入式程序可能会发现进程间通信有用信号,作为计算和

2016-07-10 20:08:14 3268 1

原创 信号量

一个信号是一个变量或抽象数据类型是用于控制访问,由多个进程,以便在一个共同的资源并发系统如一个多道程序操作系统。想在现实世界中的系统中使用的信号的一个有用的方式是提供一个特定资源的多少个单位,再加上操作的记录,安全(即防止竞态条件)调整了纪录所需单位或变得自由,并且,如果需要的话,等到资源的单元变为可用。信号量是在防止竞争条件的有用工具; 然而,它们的使用是绝不是保证一个节目是从上述问题的

2016-07-09 21:12:03 598 1

原创 AVL树

AVL树是一个平衡二叉搜索树。AVL树的 高度 的两个 孩子 节点的子树最多相差一个,如果在任何时候他们相差不止一个,再平衡完成恢复这个属性。节点的平衡因子是它的右子树的高度减去它的左子树的高度。带有平衡因子 1、0 或 -1 的节点被认为是平衡的。带有平衡因子 -2 或 2 的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算

2016-07-08 17:25:57 287

原创 map,multimap,unordered_map,set,multiset,unordered_set

set是一个容器,它其中所包含的元素的值是唯一的。这在收集一个数据的具体值的时候是有用的。集合中的元素按一定的顺序排列,并被作为集合中的实例。一个集合通过一个链表来组织,在插入操作和删除操作上比vector快,但查找或添加末尾的元素时会有些慢。具体实现采用了红黑树的平衡二叉树的数据结构。map是STL 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次

2016-07-06 20:38:22 401

原创 叙述最近的学习心得

学了很久的C和C++了,也看了很多书,也做了不少题,感觉始终还是不能熟练的使用各种已知道的各种知识。在知识的细节方面,感觉自己 学的差不多了,然后,经常把很多意思相近的概念或者其他的一些相似混淆一谈,在别人讲解的时候又恍然大悟,其实自己是知道的。常常在想,隔行如隔山,但是,虽说不算入行,但是,学了这么连基本的概念也分不清楚,不禁让自己感到羞愧。但是,为什么会是这样的情况,令本人百思不得其解

2016-07-04 21:27:30 311 1

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