- 博客(16)
- 问答 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 进阶的Redis之哈希分片原理与集群实战
前面介绍了《进阶的Redis之数据持久化RDB与AOF》和《进阶的Redis之Sentinel原理及实战》,这次来了解下Redis的集群功能,以及其中哈希分片原理。集群分片模式如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法。Redis的Cluster正...
2018-11-12 11:13:00
848
原创 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手
Docker简述Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支持,Win10前需要内置虚拟机),正所谓“一次打包,到处运行”。Docker容器的运行是完全的沙箱机制,相互之间不会有任何关联(除非自己串联集群)。网络、存...
2018-12-12 10:48:00
141
原创 “过时”的SpringMVC我们到底在用什么?深入分析DispatchServlet源码
之前已经分析过了Spring的IOC(《零基础带你看Spring源码——IOC控制反转》)与AOP(《从源码入手,一文带你读懂Spring AOP面向切面编程》)的源码,本次就来分析下SpringMVC。本文先简述下目前SpringMVC的使用情况,然后通过Demo的简单让大家有一个初步的使用印象,然后带着印象去看其中执行的分发源码。到底什么是Spring MVC,我们还在用吗?Spring ...
2018-11-22 11:40:58
153
原创 Java多线程——锁概念与锁优化
为了性能与使用的场景,Java实现锁的方式有非常多。而关于锁主要的实现包含synchronized关键字、AQS框架下的锁,其中的实现都离不开以下的策略。悲观锁与乐观锁乐观锁。乐观的想法,认为并发读多写少。每次操作的时候都不上锁,直到更新的时候才通过CAS判断更新。对于AQS框架下的锁,初始就是乐观锁,若CAS失败则转化为悲观锁。悲观锁。悲观的想法,认为并发写多读少。每次操作数据都上锁,即...
2018-11-15 09:56:20
127
原创 进阶的Redis之数据持久化RDB与AOF
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存。但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里面的数据就会丢失不见了。这样的数据库并不是一个可靠的数据库。所以数据的持久化是内存型数据库的重中之重。它不仅提供数据保存硬盘的功能,还可以借此用硬盘容量扩展数据存储空间,使得Redis的可以存储超...
2018-11-04 22:27:00
129
原创 浅谈分布式CAP定理
互联网发展到现在,由于数据量大、操作并发高等问题,大部分网站项目都采用分布式的架构。而分布式系统最大的特点数据分散,在不同网络节点在某些时刻(数据未同步完,数据丢失),数据会不一致。在2000年,Eric Brewer教授在PODC的研讨会上提出了一个猜想:一致性、可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个!在200...
2018-10-19 10:21:00
179
原创 Java异步编程——深入源码分析FutureTask
Java的异步编程是一项非常常用的多线程技术。之前通过源码详细分析了ThreadPoolExecutor《你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识》。通过创建一个ThreadPoolExecutor,往里面丢任务就可以实现多线程异步执行了。但之前的任务主要倾向于线程池,并没有讲到异步编程方面的内容。本文将通过介...
2018-10-09 11:51:00
84
原创 一文了解JVM全部垃圾回收器,从Serial到ZGC
《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同的收集器。常用的7种收集器,其适用的范围如图所示Serial、ParNew、Parallel Scavenge用于新生代;CMS、Serial Old、Paral...
2018-09-28 16:20:00
97
原创 必知必会JVM垃圾回收——对象搜索算法与回收算法
垃圾回收(GC)是JVM的一大杀器,它使程序员可以更高效地专注于程序的开发设计,而不用过多地考虑对象的创建销毁等操作。但是这并不是说程序员不需要了解GC。GC只是Java编程中一项自动化工具,任何一个工具都有它适用的范围,当超出它的范围的时候,可能它将不是那么自动,而是需要人工去了解与适应地适用。拥有一定工作年限的程序员,在工作期间肯定会经常碰到像内存溢...
2018-09-27 16:26:00
99
原创 从源码入手,一文带你读懂Spring AOP面向切面编程
之前《零基础带你看Spring源码——IOC控制反转》详细讲了Spring容器的初始化和加载的原理,后面《你真的完全了解Java动态代理吗?看这篇就够了》介绍了下JDK的动态代理。基于这两者的实现上,这次来探索下Spring的AOP原理。虽然AOP是基于Spring容器和动态代理,但不了解这两者原理也丝毫不影响理解AOP的原理实现,因为大家起码都会用。...
2018-09-14 12:55:00
352
原创 你真的完全了解Java动态代理吗?看这篇就够了
之前讲了《零基础带你看Spring源码——IOC控制反转》,本来打算下一篇讲讲Srping的AOP的,但是其中会涉及到Java的动态代理,所以先单独一篇来了解下Java的动态代理到底是什么,Java是怎么实现它的。动态代理看起来好像是个什么高大上的名词,但其实并没有那么复杂,直接从字面就很容易理解。动态地代理,可以猜测一下它的含义,在运行时动态地对某些东...
2018-09-09 13:24:00
370
原创 零基础带你看Spring源码——IOC控制反转
本章开始来学习下Spring的源码,看看Spring框架最核心、最常用的功能是怎么实现的。网上介绍Spring,说源码的文章,大多数都是生搬硬推,都是直接看来的观点换个描述就放出来。这并不能说有问题,但没有从一个很好的、容易切入的角度去了解学习。博主来尝试抛弃一些所知,从使用上入手,步步回溯源码去了解学习。很多人会混乱IOC和DI的两个概念,其实这两者...
2018-09-09 13:21:00
307
原创 你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识
Java是一门多线程的语言,基本上生产环境的Java项目都离不开多线程。而线程则是其中最重要的系统资源之一,如果这个资源利用得不好,很容易导致程序低效率,甚至是出问题。有以下场景,有个电话拨打系统,有一堆需要拨打的任务要执行,首先肯定是考虑多线程异步去执行。假如我每执行一个拨打任务都new一个Thread去执行,当同时有1万个任务需要执行的时候,那么就会...
2018-09-09 13:18:00
190
原创 Java多线程——ReentrantReadWriteLock源码阅读
之前讲了《AQS源码阅读》和《ReentrantLock源码阅读》,本次将延续阅读下ReentrantReadWriteLock,建议没看过之前两篇文章的,先大概了解下,有些内容会基于之前的基础上阅读。这个并不是ReentrantLock简单的升级,而是落地场景的优化,我们来详细了解下吧。背景JUC包里面已经有一个ReentrantLock了,为何还...
2018-09-09 13:15:00
164
原创 Java多线程——ReentrantLock源码阅读
上一章《AQS源码阅读》讲了AQS框架,这次讲讲它的应用类(注意不是子类实现,待会细讲)。ReentrantLock,顾名思义重入锁,但什么是重入,这个锁到底是怎样的,我们来看看类的注解说明ReentrantLock与隐式锁synchronized功能相同,但ReentrantLock更具有扩展性。《锁优化》里提到Java在1.6对隐式...
2018-09-09 13:09:00
566
原创 Java多线程——AQS框架源码阅读
AQS,全称AbstractQueuedSynchronizer,是Concurrent包锁的核心,没有AQS就没有Java的Concurrent包。它到底是个什么,我们来看看源码的第一段注解是怎么说明看完第一段,总结下AQS是一个同步的基础框架,基于一个先进先出的队列。锁机制基于一个状态值,它是原子值。...
2018-09-09 13:00:00
118
空空如也
tomcat启动时,创建连接池失败
2015-08-18
关于部署启动tomcat的一个错误
2015-08-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人