自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (16)
  • 收藏
  • 关注

转载 限流 控制

请求是从一个白名单中的IP或客户端key发起的,那么限流策略将不会生效,这个请求的所有信息也不会被存储。 其IP白名单列表支持IP v4和v6的范围配置,比如"192.168.0.0/24", "fe80::/10" 和 "192.168.0.0-192.168.0.255",关于IP范围的更多信息请查看https://github.com/jsakamoto/ipaddressrange

2017-04-27 16:50:57 1048

转载 RateLimiter

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统

2017-04-27 14:01:20 441

转载 Guava官方文档-RateLimiter类

原文链接 作者:Dimitris Andreou  译者:魏嘉鹏 校对:方腾飞RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire() 会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率

2017-04-27 13:37:50 441

原创 dubbo 学习理解

一、前言部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下。整理这篇文章差不多花了两天半时间,请尊重劳动成果,如转载请注明出处http://blog.csdn.NET/hzzhoushaoyu/article/details/43273099二、什么是dubb

2017-04-24 10:29:27 2057

转载 [Google Guava] 缓存

范例01LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()02        .maximumSize(1000)03        .expireAfterWrite(10, TimeU

2017-04-21 15:49:12 511

原创 线程的工作内存

所谓线程的“工作内存”到底是个什么东西?有的人认为是线程的栈,其实这种理解是不正确的。看看JLS(java语言规范)对线程工作 内存的描述,线程的working memory只是cpu的寄存器和高速缓存的抽象描述。       可能 很多人都觉得莫名其妙,说JVM的内存模型,怎么会扯到cpu上去呢?在此,我认为很有必要阐述下,免 得很多人看得不明不白的。先抛开java虚拟机不谈,我

2017-04-21 14:48:39 12313 11

原创 Guava cacha 机制及源码分析

Guava 是Google开源出来的Java常用工具集库,包括集合,缓存,并发,字符串,I/O操作等在Java开发过程中经常需要去实现的工具类。在平常开发过程中,很多情况需要使用缓存来避免频繁SQL查询或者其他耗时操作,会采取缓存这些操作结果给下一次请求使用。如果我们的操作结果是一直不改变的,其实我们可以使用 ConcurrentHashMap 来存储这些数据;但是如果这些结果在随后时间内

2017-04-21 13:49:16 4780 1

转载 guava cache使用例子

关于介绍请参考:http://blog.csdn.net/liangrui1988/article/details/46120533#下面是测试代码 ,下载源码可在github上获取:https://github.com/liangrui1988/guavaTest[java] view plain copy package org.ru

2017-04-21 13:05:56 2319

转载 cache 使用---mark

转自:http://www.cnblogs.com/always-online/p/4062856.html

2017-04-21 10:01:22 299

原创 com.google.common.cache.CacheLoader 本地緩存的使用方法

package com.taobao.ju.my.common.biz.manager.impl;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.TimeUnit;im

2017-04-21 09:46:55 10257 1

原创 JAVA并发编程学习笔记之ReentrantLock—推荐-mark

ReentrantLock是一个可重入的互斥锁,ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。此类的构造方法提供一个可选的公平参数[html] view plain copy print?public Reentran

2017-04-20 10:58:35 352

原创 ReentrantLock与Condition

一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它

2017-04-20 10:30:30 319

转载 Java中的ReentrantLock和synchronized两种锁定机制的对比

原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构

2017-04-19 19:21:37 502

原创 lock interupt

上周五和周末,工作忙里偷闲,在看java cocurrent中也顺便再温故了一下Thread.interrupt和java 5之后的LockSupport的实现。 在介绍之前,先抛几个问题。 Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常?Th

2017-04-19 17:25:32 606

转载 Java cas

java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CASCAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。 CAS应用CAS有3个操作

2017-04-19 17:04:13 561

原创 锁Lock的实现

前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在 java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、 ReadWriteLock

2017-04-19 17:02:00 431

原创 LockSupport简单讲解及实例

LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心 AQS: AbstractQueuedSynchronizer,就是通过调用 LockSupport .park()和 LockSupport .unpark()实现线程的阻塞和唤醒 的。 LockSupport 很类似于二元信号量(只有1个许可证可供使用),如果这个许可还没有

2017-04-19 16:38:05 3183

原创 并发性能优化 – 降低锁粒度

在高负载多线程应用中性能是非常重要的。为了达到更好的性能,开发者必须意识到并发的重要性。当我们需要使用并发时, 常常有一个资源必须被两个或多个线程共享。在这种情况下,就存在一个竞争条件,也就是其中一个线程可以得到锁(锁与特定资源绑定),其他想要得到锁的线程会被阻塞。这个同步机制的实现是有代价的,为了向你提供一个好用的同步模型,JVM和操作系统都要消耗资源。有三个最重要的因素使并发的实现

2017-04-19 15:42:19 502

原创 Java lock 简述

提到Java中的锁,相信大家都知道它是用来控制多个线程访问共享资源的方式(即锁能防止多个线程同时访问空享资源而出现线程安全问题)。在实践过程中使用最多的也最常见的锁就是 synchronized 在jdk1.5之前也仅仅有这一种锁而已。在jdk1.5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,Lock接口提供了与synchronized关键字类似的同步功能,但需要在使用时

2017-04-19 14:57:40 318

原创 ReentrantLock与Condition

一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它

2017-04-19 14:34:04 263

原创 lock condition 实例

接近一周没更新《Java线程》专栏了,主要是这周工作上比较忙,生活上也比较忙,呵呵,进入正题,上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。        那么引入本篇的主角,Condition,Condi

2017-04-19 13:53:08 591

转载 推荐系统算法

在推荐系统简介中,我们给出了推荐系统的一般框架。很明显,推荐方法是整个推荐系统中最核心、最关键的部分,很大程度上决定了推荐系统性能的优劣。目前,主要的推荐方法包括:基于内容推荐、协同过滤推荐、基于关联规则推荐、基于效用推荐、基于知识推荐和组合推荐。一、基于内容推荐基 于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的

2017-04-19 11:45:33 1103

转载 推荐系统入门

1. 推荐系统的意义互联网大爆炸时期的信息过载的解决方案:对用户而言:找到好玩的东西,帮助决策,发现新鲜事物。 对商家而言:提供个性化服务,提高信任度和粘性,增加营收。2. 推荐系统的构成前台的展示页面,后台的日志系统,推荐算法等部分组成,如下图所示:3. 推荐系统的评测3.1 离线实验即线下的部分,用于训练模型优点:

2017-04-19 11:37:50 664

转载 推荐系统简单介绍

推荐系统介绍自从1992年施乐的科学家为了解决信息负载的问题,第一次提出协同过滤算法,个性化推荐已经经过了二十几年的发展。1998年,林登和他的同事申请了“item-to-item”协同过滤技术的专利,经过多年的实践,亚马逊宣称销售的推荐占比可以占到整个销售GMV(Gross Merchandise Volume,即年度成交总额)的30%以上。随后Netflix举办的推荐算法优化竞赛,

2017-04-19 11:17:55 2892

原创 AbstractQueuedSynchronizer 讲解 ---推荐

在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. Re

2017-04-19 10:47:10 312

原创 AbstractQueuedSynchronizer简单解析

在JDK1.5版本,新增了并发包,其中包含了显示锁、并发容器。在这些锁和容器里,都有同步器(AQS)的身影。为了更好地理解JDK的并发包,我会用三个主题来详细描述AbstractQueuedSynchronizer的实现。在AQS中,涉及到同步队列以及Condition对象,这也是我为什么要用三个主题来讲述的原因。本节将主要讲述同步队列,后面两节会分别讲述Condition对象以及AQS的

2017-04-19 10:38:03 321

原创 Java 可重入锁

四、可重入锁:本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁下面是使用实例01public clas

2017-04-18 19:43:03 483

原创 Java自旋锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。2.自旋锁的其他种类上篇我们讲到了自旋锁,在自旋锁中 另有三种常见的锁形式:TicketLock ,

2017-04-18 19:40:21 404

原创 Java 自旋锁

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1、自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。

2017-04-18 19:37:48 313

转载 AbstractQueuedSynchronizer的介绍和原理分析

转自魏鹏大神:http://ifeve.com/introduce-abstractqueuedsynchronizer/简介提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似ac

2017-04-18 19:04:58 298

原创 AbstractQueuedSynchronizer的实现分析

前言Java中的FutureTask作为可异步执行任务并可获取执行结果而被大家所熟知。通常可以使用future.get()来获取线程的执行结果,在线程执行结束之前,get方法会一直阻塞状态,直到call()返回,其优点是使用线程异步执行任务的情况下还可以获取到线程的执行结果,但是FutureTask的以上功能却是依靠通过一个叫AbstractQueuedSynchronizer的类来实现,

2017-04-18 16:54:04 274

原创 AbstractQueuedSynchronizer

前言Java中的FutureTask作为可异步执行任务并可获取执行结果而被大家所熟知。通常可以使用future.get()来获取线程的执行结果,在线程执行结束之前,get方法会一直阻塞状态,直到call()返回,其优点是使用线程异步执行任务的情况下还可以获取到线程的执行结果,但是FutureTask的以上功能却是依靠通过一个叫AbstractQueuedSynchronizer的类来实现,

2017-04-18 10:00:56 320

原创 concurrent

一次聊天,谈到了死锁的解决、可重入锁等等,突然发现这些离自己很远,只有一些读书时的概念涌入脑海,但各自的应用场景怎么都无法想出。痛定思痛,决定看看concurrent包里涉及并发的类及各自的应用场景。第一类:原子操作类的atomic包,里面包含了1)布尔类型的AtomicBoolean2)整型AtomicInteger、AtomicIntegerArray、AtomicIn

2017-04-18 09:41:14 2887

原创 AbstractQueuedSynchronizer的介绍和原理分析

简介提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同

2017-04-18 09:33:09 301

转载 实例讲解OSGI开发

OSGI(Open Services Gateway Initiative),或者通俗点说JAVA动态模块系统,定义了一套模块应用开发的框架。OSGI容器实现方案如Knopflerfish, Equinox, and Apache Felix允许你把你的应用分成多个功能模块,这样通过依赖管理这些功能会更加方便。和Servlet和EJB规范类似,OSGI规范包含两大块:一个OSGI容器需要实

2017-04-17 19:13:17 18645

原创 简单了解osgi

目前,业内关于OSGI技术的学习资源或者技术文档还是很少的。我在某宝网搜索了一下“OSGI”的书籍,结果倒是有,但是种类少的可怜,而且几乎没有人购买。因为工作的原因我需要学习OSGI,所以我不得不想尽办法来主动学习OSGI。我将用文字记录学习OSGI的整个过程,通过整理书籍和视频教程,来让我更加了解这门技术,同时也让需要学习这门技术的同志们有一个清晰的学习路线。我们需要解决一下几问题:

2017-04-17 19:06:56 5083 1

转载 Spring 源码分析(一)

一切都是从Bean开始的 在1996年,Java还只是一个新兴的、初出茅庐的编程语言。人们之所以关注她仅仅是因为,可以使用Java的Applet来开发Web应用。但这些开发者很快就发现这个新兴的语言还能做更多的事情。与之前的所有语言不同,Java让模块化构建复杂的系统成为可能(当时的软件行业虽然在业务上突飞猛进,但当时开发用的是传统的面向过程开发思想,软件的开发效率一直踟蹰不前。伴随着业务复杂性的

2017-04-17 16:30:45 1091

转载 spring framework 4 源码阅读

spring 的骨架spring 的骨架,也是spring 的核心包。主要包含三个内容1.context:spring 的上线文-------导演2.core:spring的核心包,主要包括spring所以用到的工具-------道具3.beans:spring的bean实例 -------演员导演负责安排演出,演员负责按照导演的指示来演出,演出过程中需要使用道

2017-04-17 16:25:53 631

原创 Java 7中的TransferQueue

Java7中加入了JSR 166y规范对集合类和并发类库的改进。其中的一项是增加了接口TransferQueue和其实现类LinkedTransferQueue。TransferQueue继承了BlockingQueue(BlockingQueue又继承了Queue)并扩展了一些新方法。BlockingQueue(和Queue)是Java 5中加入的接口,它是指这样的一个队列:当生产者

2017-04-17 15:47:19 350

原创 线程池的使用(ThreadPoolExecutor详解)

为什么要使用线程池?线程是一个操作系统概念。操作系统负责这个线程的创建、挂起、运行、阻塞和终结操作。而操作系统创建线程、切换线程状态、终结线程都要进行CPU调度——这是一个耗费时间和系统资源的事情。 另一方面,大多数实际场景中是这样的:处理某一次请求的时间是非常短暂的,但是请求数量是巨大的。这种技术背景下,如果我们为每一个请求都单独创建一个线程,那么物理机的所有资源基本上都被操

2017-04-17 15:30:42 4156 3

kafka 技术内幕 图文详解Kafka源码设计与实现

kafka 技术内幕 图文详解Kafka源码设计与实现 kafka 源码

2018-04-09

disruptor 实例

disruptor 缓冲队列 高效

2017-05-17

netty 架构剖析 和源码解读

netty 架构剖析 和源码解读

2017-05-16

zookeeper 分布式锁

利用zookeeper 实现分布式锁

2017-05-10

令牌桶Java实现

令牌桶 Java 源码 不限制桶大小

2017-05-05

turbine-web-1.0.0.war

hystrix turbine 服务监控 服务降级

2017-04-12

MySQL编译安装、主从复制的配置(CentOS-6.6+MySQL-5.6)

MySQL编译安装、主从复制的配置(CentOS-6.6+MySQL-5.6)

2017-01-06

Redis集群的安装、高可用测试、扩展测试---带源码

Redis集群的安装、高可用测试、扩展测试---带源码

2017-01-04

ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

2017-01-03

ActiveMQ的安装与使用

ActiveMQ的安装与使用

2016-12-27

Hudson持续集成服务器的安装与配置

Hudson持续集成服务器的安装与配置

2016-12-27

SonarQube代码质量管理平台的介绍与安装

SonarQube代码质量管理平台的介绍与安装

2016-12-27

svn jsvnadmin 搭建 svn服务器

svn jsvnadmin 搭建 svn服务器

2016-12-27

tomcat 启动 重启 shell 脚本

tomcat 启动 停止 重启 shell 脚本

2016-12-27

redis 单点登录

tomcat redis session manager 实现session共享单点登录

2016-12-23

tika-app-1.0

tika-app-1.0.jar 用于lucene 解析文档

2015-11-09

空空如也

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

TA关注的人

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