摘要:
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理做了详细的解读。 算法的具体原理这里再次贴上: 先构造一个长度为232的整数环(这个环被称为一致性 阅读全文
posted @ 2016-06-15 18:33
IT·达人
阅读(390)
评论(1)
推荐(0)
摘要:
前言 周一入职的新公司,到了公司第一件事自然是要熟悉新公司使用的各种技术,搭建本地的环境。 熟悉新公司技术的过程中,首先就是Maven,这个前面已经写过文章了,然后就是Dubbo 公司的服务都是通过Dubbo来治理的。其实之前我就对SOA、RPC等分布式服务的概念有所了解,Dubbo也多多少少知道一 阅读全文
posted @ 2016-06-15 18:33
IT·达人
阅读(1070)
评论(0)
推荐(0)
摘要:
集群监控 大型互联网企业的背后,依靠的是成千上万台服务器日夜不停的运转,以支撑其业务的 运转。宕机对于互联网企业来说,代价是沉重的,轻则影响用户体验,重则直接影响交易,导致交易下跌,并且给企业声誉造成不可挽回的损失。对于这些机器对应 的开发和运维人员来说,即便是每台机器登陆一次,登陆那么多台机器也够 阅读全文
posted @ 2016-06-15 18:32
IT·达人
阅读(1182)
评论(0)
推荐(0)
摘要:
什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种 负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的 阅读全文
posted @ 2016-06-15 18:31
IT·达人
阅读(36653)
评论(6)
推荐(6)
摘要:
初识消息中间件 维 基百科上对于消息中间件的定义是"Message-oriented middleware(MOM) is software infrastructure focused on sending and receiving messages between distrubuted sy 阅读全文
posted @ 2016-06-15 18:30
IT·达人
阅读(3489)
评论(0)
推荐(3)
摘要:
2PC与3PC 在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引入一个称为"协调者(Coordinator)"的组件来统 阅读全文
posted @ 2016-06-15 18:30
IT·达人
阅读(373)
评论(0)
推荐(0)
摘要:
前言 最近一直在拜读两本书: 1、李智慧老师的《大型网站技术架构 核心原理与案例分析》 2、曾宪杰老师的《大型网站系统与Java中间件实践》 看了并结合自己目前的工作进行了思考,感觉获益匪浅、受益良多,自己对大型网站的理解又有了不少的加深,下面分享一下自己的学习笔记。 学习笔记 1、大型网站架构的发 阅读全文
posted @ 2016-06-15 18:29
IT·达人
阅读(393)
评论(0)
推荐(0)
摘要:
MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系 统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存 储键值对的HashMap,在内存中对任意的数据(比如字 阅读全文
posted @ 2016-06-15 18:29
IT·达人
阅读(1685)
评论(0)
推荐(0)
摘要:
关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库。 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 1、关系 可以理解为一张二维表,每个关系都有一个关系名,在数据库中被称为表名 2、 阅读全文
posted @ 2016-06-15 18:28
IT·达人
阅读(874)
评论(0)
推荐(0)
摘要:
前言 随着计算机系统规模变得越来越大,将所有业务单元集中部署在一个或者若干个大型机 上的体系结构物,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。同时,随着微型计算机的出 现,越来越多廉价的PC机成为了各大IT企业架构的首选,分布式的处理方式越 阅读全文
posted @ 2016-06-15 18:27
IT·达人
阅读(6155)
评论(1)
推荐(0)
摘要:
问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。 1、火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车 票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行 一切似乎都是那么和谐。想象一下,如果他选择的目 阅读全文
posted @ 2016-06-15 18:27
IT·达人
阅读(36229)
评论(4)
推荐(19)
摘要:
CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier。 CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行 后面的动作。看一下CyclicBarrier的使用实例 阅读全文
posted @ 2016-06-15 18:24
IT·达人
阅读(415)
评论(0)
推荐(0)
摘要:
前言 在多线程环境下,JDK给开发者提供了许多的组件供用户使用(主要在java.util.concurrent下),使得用户不需要再去关心在具体 场景下要如何写出同时兼顾线程安全性与高效率的代码。之前讲过的线程池、BlockingQueue都是在java.util.concurrent下的 组件,T 阅读全文
posted @ 2016-06-15 18:23
IT·达人
阅读(316)
评论(0)
推荐(0)
摘要:
前言 定 时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。 定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理,所以它和多线程技术关联还是相当大的。那和 Thread 阅读全文
posted @ 2016-06-15 18:22
IT·达人
阅读(292)
评论(0)
推荐(0)
摘要:
使用线程池与不使用线程池的差别 先来看一下使用线程池与不适应线程池的差别,第一段代码是使用线程池的: public static void main(String[] args) { long startTime = System.currentTimeMillis(); final List<In 阅读全文
posted @ 2016-06-15 18:21
IT·达人
阅读(317)
评论(0)
推荐(0)
摘要:
概述 之前讲解Thread类中方法的时候,interrupt()、interrupted()、isInterrupted()三个方法没有讲得很清楚,只是提了一下。现在把这三个方法同一放到这里来讲,因为这三个方法都涉及到多线程的一个知识点 中断机制。 Java没有提供一种安全、直接的方法来停止某个线程 阅读全文
posted @ 2016-06-15 18:20
IT·达人
阅读(314)
评论(0)
推荐(0)
摘要:
Queue是什么 队列,是一种数据结构。除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的。无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的。在FIFO队列中,所有新元素都插入队列的末尾。 Queue中的方法 Queue中的方法不难 阅读全文
posted @ 2016-06-15 18:19
IT·达人
阅读(8763)
评论(0)
推荐(2)
摘要:
线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。 线程关联线程组:1级关联 所谓1级关联就是父对象中有子对象,但并不创建孙对 阅读全文
posted @ 2016-06-15 18:19
IT·达人
阅读(259)
评论(0)
推荐(0)
摘要:
什么是生产者/消费者模型 一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点: 1、生产者生产的时候消费者不能消费 2、消费者消费的时候生产者不能生产 3、缓冲区空时消费者不能消 阅读全文
posted @ 2016-06-15 18:18
IT·达人
阅读(343)
评论(0)
推荐(0)
摘要:
公平锁与非公平锁 ReentrantLock有一个很大的特点,就是可以指定锁是公平锁还是非公平 锁,公平锁表示线程获取锁的顺序是按照线程排队的顺序来分配的,而非公平锁就是一种获取锁的抢占机制,是随机获得锁的,先来的未必就一定能先得到锁,从这 个角度讲,synchronized其实就是一种非公平锁。非 阅读全文
posted @ 2016-06-15 18:17
IT·达人
阅读(272)
评论(0)
推荐(0)
摘要:
读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有 完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低。所以在JDK中提供了一种读写锁 ReentrantReadWriteLock, 阅读全文
posted @ 2016-06-15 18:17
IT·达人
阅读(3197)
评论(0)
推荐(0)
摘要:
ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。 ReentrantLock基本用法 先来看一下ReentrantLock的基本用法: public class Th 阅读全文
posted @ 2016-06-15 18:16
IT·达人
阅读(365)
评论(0)
推荐(0)
摘要:
ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析Thr 阅读全文
posted @ 2016-06-15 18:15
IT·达人
阅读(287)
评论(0)
推荐(0)
摘要:
ThreadLocal的作用 从上一篇对于ThreadLocal的分析来看,可以得出结论:ThreadLocal不是用来解决共享对象的多线程访问问题的, 通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程 阅读全文
posted @ 2016-06-15 18:15
IT·达人
阅读(372)
评论(0)
推荐(0)
摘要:
轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作。 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处理?一个办法就是,B线程while(i == 10000),这样两个线程之间就有了通信,B线程不断通 阅读全文
posted @ 2016-06-15 18:14
IT·达人
阅读(330)
评论(0)
推荐(0)
摘要:
前言 死 锁单独写一篇文章是因为这是一个很严重的、必须要引起重视的问题。这不是夸大死锁的风险,尽管锁被持有的时间通常很短,但是作为商业产品的应用程序每天可 能要执行数十亿次获取锁->释放锁的操作,只要在这数十亿次操作中只要有一次发生了错误,就可能导致程序中发生死锁,并且即使通过压力测试也不可能 找出 阅读全文
posted @ 2016-06-15 18:13
IT·达人
阅读(293)
评论(0)
推荐(0)
摘要:
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchronized同步语句块来解决问题。看一下例子: 运行结果,分两部分来看: 这个实验可以得 阅读全文
posted @ 2016-06-15 18:12
IT·达人
阅读(277)
评论(0)
推荐(0)
摘要:
同步静态方法 synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 写三个线程分别调用这三个方法: 写个main函数启动这三个线程: 看一下运行结果: 从运行结果来,对printC( 阅读全文
posted @ 2016-06-15 18:12
IT·达人
阅读(270)
评论(0)
推荐(0)
摘要:
脏读 一个常见的概念。在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过的。 多线程线程安全问题示例 看一段代码: public class ThreadDomain13 { private 阅读全文
posted @ 2016-06-15 18:11
IT·达人
阅读(270)
评论(0)
推荐(0)
摘要:
Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程"。为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作。下面来看一下Thread类中的静态方法: 1、currentThread() currentThread()方 阅读全文
posted @ 2016-06-15 18:10
IT·达人
阅读(278)
评论(0)
推荐(0)
摘要:
Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步。在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1、this.XXX() 这种调用方式表示的线程是线程实例本身 2、Thread.currentThr 阅读全文
posted @ 2016-06-15 18:09
IT·达人
阅读(413)
评论(0)
推荐(1)
摘要:
谈到多线程,就得先讲进程和线程的概念。 进程 进程可以理解为受操作系统管理的基本运行单元。360浏览器是一个进程、WPS也是一个进程,正在操作系统中运行的".exe"都可以理解为一个进程 线程 进程中独立运行的子任务就是一个线程。像QQ.exe运行的时候就有很多子任务在运行,比如聊天线程、好友视频线 阅读全文
posted @ 2016-06-15 18:08
IT·达人
阅读(317)
评论(0)
推荐(0)

浙公网安备 33010602011771号