自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

转载 一种可以避免数据迁移的分库分表scale-out扩容方式

一种可以避免数据迁移的分库分表scale-out扩容方式目前绝大多数应用采取的两种分库分表规则mod方式dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月份的数据在一个库表)这两种方式有个本质的特点,就是离散性加周期性。例如以一个表的主键对3取余数的方式分库或分表:那么随着数据量的增大,每个表或库的数据量都是各自增长。当

2013-09-29 00:02:27 869

转载 NoSQL数据库笔谈

颜开 , v0.2 , 2010.2序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum NRWVector clockVirtual nodegossipGossip (State

2013-09-28 10:12:48 2193 2

转载 开源数据库 Sharding 技术 (Share Nothing)

从 Shard 到 Sharding“Shard” 这个词英文的意思是”碎片”,而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏(MMORPG)中。”Sharding” 姑且称之为”分片”。Sharding 不是一门新技术,而是一个相对简朴的软件理念。如您所知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 MySQL 的潜在用户都对 MySQL 的扩

2013-09-26 23:28:42 945

转载 最通俗的CRC校验原理剖析

以下内容摘自笔者即将出版的最新著作《深入理解计算机网络》一书。本书将于12月底出版上市,敬请留意!!     本书原始目录参见此文:http://winda.blog.51cto.com/55153/1063878 5.3.2 循环冗余校验检错方案    上节介绍的奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。1. C

2013-09-26 23:10:49 707

转载 关于缓存调度算法FIFO、LRU、OPT这三种置换算法的缺页次数

这三个置换算法,或者说缓存调度算法,其实来源于操作系统。操作系统的页置换算法。FIFO:即 First In, First Out 先进先出算法。LRU: Least recently used,最近最少使用算法。即是将最近最少使用的对象踢出内存。OPT: Optimal,最优替换,也就是上帝模式。它是考虑当前内存中的对象,以及将来要放进内存的对象,然后,将在最远的将来才被访问的页面踢

2013-09-25 21:40:49 6304

转载 性能调优攻略

关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的《代码优化概要》,这篇文章基本上告诉你——要进行优化,先得找到性能瓶颈

2013-09-21 08:24:36 865

转载 防痴呆设计

最近有点痴呆,因为解决了太多的痴呆问题,服务框架实施面超来超广,已有50多个项目在使用,每天都要去帮应用查问题,来来回回,发现大部分都是配置错误,或者重复的文件或类,或者网络不通等,所以准备在新版本中加入防痴呆设计,估且这么叫吧,可能很简单,但对排错速度还是有点帮助,希望能抛砖引玉,也希望大家多给力,想出更多的防范措施共享出来。(1) 检查重复的jar包最痴呆的

2013-09-19 13:54:50 977

转载 深入JVM锁机制2-Lock

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

2013-09-18 22:58:45 774

转载 深入JVM锁机制1-synchronized

目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。   数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令

2013-09-18 22:57:27 805

转载 主题:从JVM并发看CPU内存指令重排序(Memory Reordering)

这两天,我拜读了 Dennis Byrne 写的一片博文?Memory Barriers and JVM Concurrency (中译文?内存屏障与JVM并发)。文中提到:对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器

2013-09-17 21:43:13 668

转载 内存屏障与JVM并发

内存屏障,又称内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。本文介绍了内存屏障对多线程程序的影响。我们将研究内存屏障与JVM并发机制 的关系,如易变量(volatile)、同步(synchronized)和原子条件式(atomic conditional)。本文假定读者已经充分掌握了相关概念和Java内存模型,不讨论并发互斥、并行机制和原子性。内存屏障用来实现并发编程中称为 可见性(v

2013-09-17 21:36:02 923

转载 高并发场景下 System.currentTimeMillis() 的性能问题

System.currentTimeMillis()的调用比new一个普通对象要耗时的多(具体耗时高出多少我还没测试过,有人说是100倍左右),然而该方法又是一个常用方法,有时不得不使用,比如日志,在高并发情形下怎么做才好呢? System.currentTimeMillis()之所以慢是因为去跟系统打了一次交道,什么快?内存!如果该方法从内存直接取数,那岂不是相当快,看代码: J

2013-09-11 23:02:40 4924

转载 存储方式与介质对性能的影响

摘要数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给大家提供了一份不同存储模式下的性能测试数据,方便大家在今后的程序开发过程中可以利用这份数据选择合适的数据存储模式。TAG存储性能,innodb性能,存储介质目录

2013-09-08 22:37:44 908

转载 The Page Cache FAQ

The Page Cache FAQ本FAQ中所有的操作均以磁盘文件系统为例.page cache是linux中加快文件存取速度的重要组成部份。在Linux中,关于文件系统的缓存大致可以分为两类,一类用来缓存文件系统的元数据,比如indoe,dentry,另一类即是page cache,用来缓存文件本身。1.Q:同一个文件在page cache中是否有可能存在多

2013-09-08 10:58:22 895

转载 淘宝开源MQ——metaq的详细文档

最近陆陆续续补充了不少metaq的文档,部分是直接从官方文档里摘抄出来,放在了github工程的wiki页,有兴趣了解甚至使用meta的可以仔细阅读下,一份目录:介绍基础概念和术语定义消息的可靠性、顺序和重复如何开始简单例子服务端配置管理集群和负载均衡高可用配置(异步复制和同步复制)路线图FAQ最佳实践官方手册(word文档)

2013-09-07 23:30:44 1735

转载 设计模式 for as3 误人子弟总结笔记

设计模式在粒度和抽象层次上各不相同。由于存在众多的设计模式,所以我们可以用一种方式将它们组织起来。这里,我们根据两条准则对模式进行分类,如下表所示: 第一是目的准则,即模式是用来完成什么工作的。模式依据其目的可分为创建型( Creational)、结构型( Structural)、或行为型( Behavioral )三种。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行

2013-09-07 09:02:02 1102

转载 Metaq原理与应用

Metaq原理与应用(针对2.X版本) 誓嘉 兰生2013/1/13目录1       前言2       特别说明3       专业术语4       消息系统需要解决哪些问题?4.1        Publish/Subscribe4.2        

2013-09-03 00:29:17 3400

转载 分布式消息中间件 MetaQ 作者庄晓丹专访

MetaQ(全称Metamorphosis)是一个高性能、高可用、可扩展的分布式消息中间件,思路起源于LinkedIn的Kafka,但并不是Kafka的一个Copy。MetaQ具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,目前在淘宝和支付宝有着广泛的应用。 Github地址:https://github.com/killme20

2013-09-03 00:29:06 1584

转载 Meta源码分析

Meta的client实现分析由于meta不像activeMQ等产品,它们的broker端承载了非常多的功能,而像meta这样追求性能为目的的消息中间件,则是把broker端的功能弱化,同时加强了client端的某些功能,如当前client的消息offset的存储、从broker中pull消息等。下面我们从消息pull这样一个client端最重要的功能作为分析的主线来了解meta中

2013-09-03 00:27:22 1315

转载 分布式发布订阅消息系统 Kafka 架构设计

我们为什么要搭建该系统Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础。现在它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用。活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部分。活动数据包括页面访问量(

2013-09-03 00:24:45 978

转载 TreeMap源码分析——基础分析(基于JDK1.6)

常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。     TreeMap基于红黑树(点击查看树、红黑树相关内容)实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的

2013-09-02 23:57:51 656

转载 集合框架 Map篇(5)----ConcurrentSkipListMap

Map------1.HashMap2.LinkedHashMap3.IdentityHashMap4.WeakHashMap5.TreeMap6.EnumMap7.ConcurrentHashMap8.ConcurrentSkipListMap---------------------------------------------

2013-09-02 23:28:58 786

转载 MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分

2013-09-01 23:59:59 812

转载 从IO看数据库底层实现原理

疯哥说过,科学的态度永远是严谨的,孜孜不倦的,追根究底的,我想各位歇斯底里的时候也纯粹觉得这个是放屁。但是事实就是事实,容不得半点捏造。 最近研究了Hibernate中的一些问题,发现除了缓存机制,还有些问题也值得我们深思,在hibernate严格限定Java包装类和工具类与相应数据库底层数据类型的映射的时候,各位是否想过,为什么要这么映射,也许你会说这个是hibernate3.0的规范而已,

2013-09-01 23:51:26 5641

转载 nginx 限制ip并发数,nginx限制IP链接数的范例参考

limit_zone   ctohome_zone  $binary_remote_addr  20m;limit_req_zone  $binary_remote_addr  zone=ctohome_req_zone:20m   rate=2r/s;server  {        listen          *:80;        server_name     w

2013-09-01 23:29:39 1595

转载 nginx 限制ip并发

昨天服务器被ddos攻击了两次,全网瘫痪了,而且两个ip都被机房封掉了,悲催的啊所以赶快限制下ip的并发吧http{........#这个是限制连接的存储区limit_zone apks  $binary_remote_addr  30m;#这个是限制请求的存储区limit_req_zone  $binary_remote_addr  zone=one:30m  

2013-09-01 23:27:44 735

转载 深入掌握JMS(八):JMSReplyTo

在下面的例子中,首先创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,然后再创建一个消费者来接受所回复的消息。[java] view plaincopyimport javax.jms.Connection;  import javax.jms.JMSException;  

2013-09-01 22:40:37 680

转载 深入掌握JMS(七):DeliveryMode例子

在下面的例子中,分别发送一个Persistent和nonpersistent的消息,然后关闭退出JMS。[java] view plaincopyimport javax.jms.Connection;  import javax.jms.DeliveryMode;  import javax.jms.MessageProducer;  

2013-09-01 22:38:15 1027

转载 深入掌握JMS(六):消息头

一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)。对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextMessage,ObjectMessage和BytesMessage是无结构的。一个消息可以包含一些重要的数据或者仅仅是一个事件的通知。    消息的Headers部分通常包含一些消息的描述信息

2013-09-01 22:35:56 697

转载 深入掌握JMS(五):实战Topic

与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。[java] view plaincopyimport javax.jms.Connection;  import javax.jms.JMSException;  import javax

2013-09-01 22:34:48 704

转载 深入掌握JMS(四):实战Queue

Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。[java] view plaincopyimport javax.jms.Connection;  import javax.jms.DeliveryMode;  import j

2013-09-01 22:33:37 670

转载 深入掌握JMS(三):MessageListener

消息的消费者接收消息可以采用两种方式:  1、consumer.receive() 或 consumer.receive(int timeout);  2、注册一个MessageListener。  采用第一种方式,消息的接收者会一直等待下去,直到有消息到达,或者超时。后一种方式会注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。下面举例说明:

2013-09-01 22:32:44 749

转载 深入掌握JMS(二):一个JMS例子

前一讲简单的介绍了一下JMS的基本概念, 这一讲结合一个例子让大家深入理解前一讲的基本概念. 首先需要做的是选择一个JMS提供者, 如果在JavaEE环境中可以不用考虑这些. 我们选择ActiveMQ, 官方地址: http://activemq.apache.org/. 网上有很多介绍ActiveMQ的文档, 所以在这里就不介绍了.按照上一讲的这个简图,  ConnectionFacto

2013-09-01 22:31:05 788

转载 深入掌握JMS(一):JSM基础

1. JMS基本概念     JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口简化企业 应用的开发。它支持两种消息通信模型:点到点(point-to-point)(P2P)模型和发布/订阅(Pub/Sub)模型。P2P 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。    对于点到点模

2013-09-01 22:24:33 691

转载 对列式数据库的一点总结和展望

6年半以前,我回到中国,重新加入我近19年前离开的公司:Sybase中国,负责在中国地区推动列式数据库产品Sybase IQ。从去年开始角色有些转换,从列式数据库转而关注SAP的数据库战略,同时关注在“极端OLTP”场景下的数据库技术发展方向。现在似乎是一个回顾一下列式数据库这个技术过去近10年来的发展过程,并展望一下未来的发展方向的时候了。     2006年前后,一般企业的数据规模大约

2013-09-01 10:43:43 766

空空如也

空空如也

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

TA关注的人

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