- 博客(93)
- 收藏
- 关注
转载 实操代码研究各种Java技术-java.toutiao.im
whatsmarshttps://github.com/javahongxi/whatsmarswhatsmars-earth-web springmvc+velocitywhatsmars-earth-support-web earth工程的辅助工程whatmars-fs-web 用mongodb存储图片whatsmars-javase-example Java基础学习what...
2017-08-28 17:54:00
139
转载 【转】京东抢购服务高并发实践
声明:本文转载自微信公众号“开涛的博客”,转载务必声明。作者:张子良,京东高级开发工程师,在京东负责抢购后端服务系统架构和开发工作。服务介绍限时抢购又称闪购,英文Flash sale,起源于法国网站Vente Privée。闪购模式即是以互联网为媒介的B2C电子零售交易活动,以限时特卖的形式,定期定时推出国际知名品牌的商品,一般以原价1-5折的价格供专属会员限时...
2016-12-19 18:47:00
179
转载 【转】聊聊高并发系统之队列术
声明:本文转载自微信公众号“开涛的博客”,转载务必声明。队列在数据结构中是一种线性表,从一端插入数据,然后从另一端删除数据。本文目的不是讲解各种队列算法,而是在应用层面讲述使用队列能解决哪些场景问题。在我开发过的系统中,不是所有的业务都必须实时处理、不是所有的请求都必须实时反馈结果给用户、不是所有的请求/处理都必须100%处理成功、不知道谁依赖“我”的处理结果、不...
2016-12-19 18:47:00
162
转载 【转】保证分布式系统数据一致性的6种方案
问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于讨论问题,先简...
2016-12-15 16:34:00
106
转载 Spring之FactoryBean
首先要分辨BeanFactory 与 FactoryBean的区别, 两个名字很像,所以容易搞混BeanFactory: 以Factory结尾,表示它是一个工厂类,是用于管理Bean的一个工厂FactoryBean:以Bean结尾,表示它是一个Bean,不同于普通Bean的是:它是实现了FactoryBean<T>接口的Bean,根据该Bean的Id从Bean...
2016-11-25 16:48:00
76
转载 支付宝系统架构
支付宝系统架构概况典型处理默认资金处理平台财务会计支付清算核算中心交易柔性事务支付宝的开源分布式消息中间件–Metamorphosis(MetaQ)Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等...
2016-11-19 00:36:00
61
转载 高并发系统之限流特技
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场...
2016-11-19 00:28:00
62
转载 【转】深入理解Major GC, Full GC, CMS
声明:本文转自http://blog.csdn.net/iter_zc/article/details/41825395,转载务必声明。很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义。分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗?经过一系列的查...
2016-11-19 00:14:00
77
转载 一步步优化JVM六:优化吞吐量
如果你已经进行完了前面的步骤了,那么你应该知道这是最后一步了。在这一步里面,你需要测试应用的吞吐量和为了更高的吞吐量而优化JVM。 这一步的输入就是应用的吞吐量性能要求。应用的吞吐量是在应用层面衡量而不是在JVM层面衡量,因此,应用必须要报告出一些吞吐量指标或者应用的某些操作的吞吐量性能指标。观察到的吞吐量指标然后用可以用来和应用需要的性能指标进行比较,如果达到或者...
2016-11-19 00:08:00
88
转载 一步步优化JVM五:优化延迟或者响应时间
本节的目标是做一些优化以满足对应用对延迟的需求。这次需要几个步骤,包括完善Java堆大小的配置,评估垃圾回收占用的时间和频率,也许还要尝试切换到不同的垃圾回收器,以及由于使用了不同的垃圾回收器,需要重新优化Java堆空间大小。 这一步有如下可能的结果: 1、应用的延迟需求被满足了。如果这一步的优化操作满足了应用的延迟需求,你可以继续下一步优化(优化吞吐...
2016-11-19 00:02:00
527
转载 一步步优化JVM四:决定Java堆的大小以及内存占用
到目前为止,还没有做明确的优化工作。只是做了初始化选择工作,比如说:JVM部署模型、JVM运行环境、收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则。这一步将介绍如何评估应用需要的内存大小以及Java堆大小。首先需要判断出应用存活的数据的大小,存活数据的大小是决定配置应用需要的Java堆大小的重要条件,也能够决定是否需要重新审视一下应用的内存需求或者修改应用程序以满足内存需求...
2016-11-18 23:43:00
108
转载 一步步优化JVM三:GC优化基础
本节主要描述关于垃圾回收器性能的三个指标,三个关于垃圾回收器优化的基本原则,以及优化HotSpot VM的垃圾回收器的信息收集,在这些指标中权衡以及信息的收集是非常重要的。性能指标 吞吐量:衡量垃圾回收器运行在性能峰值的时候不需要关心垃圾回收器暂停的时间或者需要占用内存的能力。 延迟:衡量垃圾回收器最小化甚至消灭由垃圾回收器引起的暂停时间和应用抖动的能力...
2016-11-18 23:41:00
93
转载 一步步优化JVM二:JVM部署模型和JVM Runtime
选择JVM部署模型 JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就是启动了一个JVM实例,然后在JVM中运行一个main程序,又会启动一个JVM实例,两个JVM实例是隔离开的)。哪一个是最适合你的应用的呢?这个是前面说到系统需求和潜在规则来...
2016-11-18 23:26:00
88
转载 一步步优化JVM一:概述、方法及需求
现代JVM是一个具有灵活适应各种应用能力的软件,尽管很多应用能够在JVM的默认配置下运行良好,但是有些应用还是需要优化JVM配置以达到其性能要求。由于各种各样的应用能够运行在现在JVM上面,所以大量的JVM选项可以配置来提升应用的性能。不幸的是,对一个应用而言优化得很好的JVM配置,对应另外的应用不一定适合。所以,真正理解怎样优化JVM配置是非常有必要的。 优化现代...
2016-11-18 23:11:00
83
转载 排查Java线上服务故障的方法和实例分析
前言 作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是: (1)你可能对这个业务仅仅是听说过,而不怎么真正了解; (2)你可能没有这个故障的详细信息,比如可能仅仅是有使用方反馈服务中断了10分钟; (3)你对代码细节还没有仔细研究过。 这个时候该怎么解决问题呢?根据以前的经验...
2016-11-18 22:35:00
68
转载 【转】Zookeeper-Watcher机制与异步调用原理
声明:本文转载自http://shift-alt-ctrl.iteye.com/blog/1847320,转载请务必声明。Watcher机制:目的是为ZK客户端操作提供一种类似于异步获得数据的操作.1)在创建Zookeeper实例时,允许接收一个watcher参数,此参数将会赋值给watchMnanger.defaultWatcher,成为当前客户端的默认Watc...
2016-11-17 08:41:00
71
转载 Redis 集群解决方案比较
调研比较了三个Redis集群的解决方案:系统贡献者是否官方Redis实现编程语言TwemproxyTwitter是CRedis ClusterRedis官方是CCodis豌豆荚否Go+C1.基本架构1.1 Twemproxy增加Proxy层,由Proxy实现一致性哈希算法(支持:KETAMA/取模/随机)数...
2016-11-14 07:41:00
85
转载 Redis Cluster 实践
一:关于redis cluster1:redis cluster的现状reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/news/49(ps:跳票了好久,今年貌似加快速度了),目前的最新版本见:https://raw.githubusercontent.com/antirez/redis/3.0...
2016-11-14 07:20:00
76
转载 Redis 的几种数据结构&五种数据类型对象
先看几种数据结构通过分析底层的数据结构,学习如何根据场景选型和设计1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串a, 结构 free字段为已分配但未使用的空间 len为已使用的空间(不计入'\0') buf为char数组 b, 与C字符串区别 redis的字符环结构可以理解为将...
2016-11-14 07:05:00
241
转载 ActiveMQ in Action(7) - Wildcards
关键字: activemq2.6.7 Wildcards Wildcards用来支持联合的名字分层体系(federated name hierarchies)。它不是JMS规范的一部分,而是ActiveMQ的扩展。ActiveMQ支持以下三种wildcards:"." 用于作为路径上名字间的分隔符。"*" 用于匹配路径上的任何名字。">" 用于递归地匹...
2016-11-14 06:51:00
70
转载 ActiveMQ in Action(6) - Features
关键字: activemq2.6 Features ActiveMQ包含了很多功能强大的特性,下面简要介绍其中的几个。2.6.1 Exclusive Consumer Queue中的消息是按照顺序被分发到consumers的。然而,当你有多个consumers同时从相同的queue中提取消息时,你将失去这个保证。因为这些消息是被多个线程并发的处理。有的时候,保...
2016-11-14 06:51:00
73
转载 ActiveMQ in Action(5) - Clustering
关键字: activemq2.5 Clustering ActiveMQ从多种不同的方面提供了集群的支持。2.5.1 Queue consumer clusters ActiveMQ支持订阅同一个queue的consumers上的集群。如果一个consumer失效,那么所有未被确认(unacknowledged)的消息都会被发送到这个queue上其它的cons...
2016-11-13 21:52:00
81
转载 ActiveMQ in Action(3) - Persistence
关键字: activemq2.3 Persistence2.3.1 AMQ Message Store AMQ Message Store是ActiveMQ5.0缺省的持久化存储。Message commands被保存到transactional journal(由rolling data logs组成)。Messages被保存到data logs中,同时被refe...
2016-11-13 21:50:00
61
转载 ActiveMQ in Action(4) - Security
关键字: activemq2.4 Security ActiveMQ支持可插拔的安全机制,用以在不同的provider之间切换。2.4.1 Simple Authentication Plugin Simple Authentication Plugin适用于简单的认证需求,或者用于建立测试环境。它允许在XML配置文件中指定用户、用户组和密码等信息。以下是Ac...
2016-11-13 21:49:00
65
转载 ActiveMQ in Action(2) - Transport
关键字: activemq2.2 Transport ActiveMQ目前支持的transport有:VM Transport、TCP Transport、SSL Transport、Peer Transport、UDP Transport、Multicast Transport、HTTP and HTTPS Transport、Failover Transp...
2016-11-13 21:43:00
76
转载 ActiveMQ in Action(1) - JMS
关键字: activemq1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范。1.1 JMS的基本构件1.1.1 连接工厂 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory。1.1.2 连接 JMS Connection封装了客户与JMS提供者之间的一个虚拟的连接。1.1....
2016-11-13 21:38:00
105
转载 千万级规模高性能、高并发的网络架构经验分享
架构以及我理解中架构的本质在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右...
2016-11-09 23:34:00
56
转载 CPU高问题排查
双11大战开始了,这几天公司系统压测,CPU各种报警,于是找了篇关于CPU高问题排查的文章。一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根...
2016-11-04 11:48:00
89
转载 Worker+MQ解惑
用Worker来保证数据的一致性,再加上MQ来便于水平扩展,也提升了Worker的效率。这就是传说中的Worker+MQ,又叫做可靠消息方式。另外,将任务的查询和执行分工,形成父子任务,达到真正的分布式任务,也能提升Worker效率。Java代码packagecom.itlong.bjxizhan.support.web.job.base;...
2016-11-01 21:06:00
226
转载 HashMap解惑
HashMap中有一些我们容易忽视的点1. 关于key的hash和equalspublic V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) ...
2016-11-01 07:43:00
182
转载 ConcurrentHashMap完全解析(jdk6/7,8)
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用...
2016-10-31 08:05:00
62
转载 为什么推荐Zookeeper作注册中心
Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听。这些特点决定了zk特别适合作为注册中心(数据发布/订阅)。Zookeeper注册中心(+) (#)建议使用dubbo-2.3.3以上版本的zookeeper注册中心...
2016-10-26 12:38:00
386
转载 分布式锁的三种实现方式
分布式锁大有用途,比如用在减库存操作、流水号生成,分布式计数器等。分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那一层来挡。当大量的行锁、表锁、事务充斥着数据库的时候。一般web应用很多的瓶颈都在数据库上,这里给大家介绍的是减轻数据库锁负担的方案--分布式锁服务。本文介绍分布式锁常用的三种实现方式。一、zookeeper1、实现原理:基于zook...
2016-10-26 12:30:00
148
转载 JIT
Java JIT(just in time)即时编译器是sun公司采用了hotspot虚拟机取代其开发的classic vm之后引入的一项技术,目的在于提高java程序的性能,改变人们“java比C/C++慢很多”这一尴尬印象。说起来是编译器,但此编译器与通常说的javac那个编译器不同,它其实是将字节码编译为硬件可执行的机器码的。图片来自于网络如上图可以看出,整个ja...
2016-10-23 20:58:00
103
转载 用户态和内核态
(1)用户态和内核态的概念?--->内核态:CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序--->用户态:只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取(2)为什么需要用户态和内核态?--->由于需要限制不同的程序之间的访问能...
2016-10-22 14:12:00
428
转载 Integer.valueOf(int)及自动装箱内幕
Integer为什么要提供功能与new Integer(xx)一样的valueOf(xx)方法呢,看了源代码之后,我发现了惊人的内幕。public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low...
2016-10-22 05:11:00
95
转载 23种设计模式
目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组...
2016-10-21 00:05:00
68
转载 MySQL聚簇索引
聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但innoddb 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。 当表有聚簇索引时,它的数据实际上存放在索引的叶子页(leaf page)中。术语‘聚簇’表示数据行和相邻的键值进错的存储在一起。因为无法同时把数据行存放在两个不同的地方,所以在一个表中只能有一个聚簇索引 (不...
2016-10-20 15:16:00
67
转载 深入JVM锁机制2-Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWri...
2016-10-20 14:42:00
64
转载 深入JVM锁机制1-synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依...
2016-10-20 14:40:00
59
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人