自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 分布式锁

概述: Redis使用WATCH命令来代替对数据进行加锁,因为WATCH只会在数据被其他客户端抢先修改了的情况下通知执行了这个命令的客户端,而不会阻止其他客户端对数据进行修改,所以这个命令被称为乐观锁。分布式锁是由不同机器上的不同Redis客户端进行获取和释放的。分布式锁实现原理: 为了对数据进行排他性访问,程序首先要做的就是获取锁。利用SETNX命令来实现锁的获取功能,这个命令只会在

2017-12-30 17:26:17 753

原创 故障恢复

概述:用户必须做好相应的准备来应对Redis 的系统故障。如果我们决定要将Redis 用作应用程序唯一的数据存储手段, 那么就必须确保Redis 不会丢失任何数据。跟提供了ACID(ACID 是指原子性、一致性、隔离性和持久性,如果一个数据库想要实现可靠的数据事务,那么它就必须保证ACID 性质。)保证的传统关系数据库不同,在使用Redis为后端构建应用程序的时候,用户需要多做一些工作才能保证数据的

2017-12-29 17:17:24 702

原创 复制

概述: 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。为了避免单点故障,我们希望将数据库复制多个副本以部署在不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上。Redis提供了复

2017-12-29 15:18:05 257

原创 持久化

概述:持久化的目的: 1)将内存中的数据存储到硬盘的一个主要原因是为了在之后重用数据 2)防止系统故障而将数据备份到一个远程位置 3)存储在Redis 里面的数据有可能是经过长时间计算得出的,所以用户会希望自己可以将这些数据存储起来以便之后使用,这样就不必再重新计算了持久化的方式: 概述: Redis提供了AOF和RDB两种方式,两者可单独使用也可以结合使用,同时使用时重新启动Redis后

2017-12-29 10:24:26 251

原创 数据类型

命令参考String:底层实现Redis 的字符串就是一个由字节组成的序列,可以存储以下3 种类型的值:字符串,整数,浮点数。用户可以通过给定一个任意的数值,对存储着整数或者浮点数的字符串执行自增或者自减操作,在需要的时候, Redis 还会将整数转换成浮点数。 命令 用例和描述 INCR INCR key-name一一将键存储的值加上1 DECR ...

2017-12-28 20:44:10 169

原创 初识Redis

Redis简介: Redis 是一个NoSQL或者非关系型的远程内存数据库,它可以存储键( key )与5 种不同类型的值( value )之间的映射( mapping ),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能,用户可以很方便地将Redis 扩展成一个能够包含数百GB 数据、每秒处理上百万次请求的系统。Redis和Memcache

2017-12-28 12:04:21 149

原创 锁的基本概念与实现

锁与对象头锁的作用: 保护临界区资源不会被多个线程同时访问而受到破坏。通过锁,可以让多个线程排队,一个一个地进入临界区访问目标对象, 使目标对象的状态总是保持一致。对象内存分布: 对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头: 对象头(Object Header)包括两部分信息: 第一

2017-12-25 14:53:31 392

原创 虚拟机栈-方法调用

栈概述: 方法调用过程: Java 栈与数据结构上的栈有着类似的含义,它是一块线程私有先进后出的数据结构,只支持出栈和入栈两种操作。在Java 枝中保存的主要内容为栈帧。每一次函数调用,都会有一个对应的栈帧被压入Java 栈,每一个函数调用结束,都会有一个栈帧被弹出Java栈。参数,-Xss 来指定线程的最大栈空间,这个参数也直接决定了函数调用的最大深度。 由于每次函数调用都会生成对应的核帧

2017-12-24 16:28:41 592

原创 Serialization

序列化:序列化的作用: 类实现Serializable接口的目的是为了可持久化,比如网络传输或本地存储,为系统的分布和异构部署提供先决支持条件。若没有序列化,现在我们熟悉的远程调用、对象数据库都不可能存在,实现了Serializable接口,可以在网络上传输,也可以本地存储然后读取序列化的过程: 序列化: 通过对象序列化过程,把一个对象从内存块转化为数据流通过网络传输或者本地存储 反序列化:

2017-12-21 15:37:41 353

原创 JVM基本结构

JVM总体结构:类加载子系统: 类加载子系统负责从文件系统或者网络中加载Class 信息,加载的类信息存放于一块称为 方法区的内存空间。 程序计数器: 每个线程拥有自己的计数器,它指向当前执行指令的字节码地址,它是JVM唯一一个不会出现内存溢出的区域 虚拟机栈: 生命周期与线程相同,也是线程私有的,每个方法在执行时都会创建一个栈帧用于存放局部变量等方法信息。每一个方

2017-12-20 11:53:26 230

原创 JVM调优

判定是否需要加机器要结合top命令中的load average和cpu使用率率来看,不是很高时就要考虑内部程序优化参见 查看机器内存:cat /proc/meminfo |grep MemTotal|awk '{print int($2/1048756+0.5)}' 查看cpu核数:grep ‘model name’ /proc/cpuinfo | wc -l 统计连接数: netst

2017-12-12 16:10:41 318

原创 记一次tomcat参数调试

Tomcat 8.5.24参数调试测试 前置条件: Endpoint类型:NioEndpoint 服务器配置: CentOS:7.2.1511 双核8G 业务逻辑代码:long startTime = System.currentTimeMillis();PressureTestConfig config = channelConfigManager.getChanne

2017-12-12 15:35:26 348

原创 NIO

NIO编程简介: 与Socket和ServerSocket类相对应,NIO提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现,这两种新增的通道都支持阻塞和非阻塞两种模式。 一般来说低负载,低并发的应用可以采用同步阻塞模式以降低编程的复杂度,但是对于高负载,高并发的应用需要使用NIO的非阻塞模式开发详情参见 mmap原理解析 优点: nio 模式

2017-12-10 16:22:31 438

原创 IO基础知识

Linux网络I/O模型概述: Linux内核将所有外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,来返回一个file description(fd 文件描述符),同样对于一个socket读写也会返回一个socket fd,描述符就是一个数字。它指向内核中的一个结构体(文件路径,数据区等一些属性) 1)阻塞I/O模型: 从系统调用直到数据到达并复制到应用进程缓冲区或

2017-12-09 17:55:46 594

原创 Tomcat杂谈

JIoEndpoint详解 JIoEndpoint处理请求的过程 NioEndpoint详解 Tomcat容器做到自我保护,设置最大连接数

2017-12-07 17:34:32 141

原创 Spring

InitializingBean的作用:参见 spring中的DisposableBean,ApplicationContextAware的用法:参见import org.springframework.context.SmartLifecycle;import org.springframework.stereotype.Component;@Componentpublic class Te

2017-12-05 21:23:38 139

原创 HttpClient(同步版本)

HttpHandlerpublic interface HttpHandler { HttpResponse get(String var1, HttpRequest var2); HttpResponse post(String var1, HttpRequest var2);}HttpHandlerImplpublic class HttpHandlerImpl impleme

2017-12-05 18:19:56 632

原创 Tomcat学习总结

整体架构: 从顶层开始:Server是Tomcat的最顶层元素,是service的集合,即可包含多个service,Server控制整个Tomcat的生命周期。Service由一个Container和多个Connector组成,形成一个独立完整的处理单元,对外提供服务。一般情况下我们并不需要配置多Service, conf/server.xml默认配置了一个“Catalina”

2017-12-01 19:23:01 406

Vue学习源码

Vue学习源码

2017-06-20

空空如也

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

TA关注的人

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