自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 实时计算

实时计算(Real-time computing)也称为即时计算,是计算机科学中对受到“实时约束”的计算机硬件和计算机软件系统的研究,实时约束像是从事件发生到系统回应之间的最长时间限制。实时程序必须保证在严格的时间限制内响应。[1]通常实时响应时间会是以毫秒为单位,也有时是以微秒为单位。相比之下,非实时系统是一种无法保证在任何条件下,响应时间均符合实时约束限制的系统。有可能大多数的情形下,非实时系

2015-01-18 15:41:54 1616

转载 对互联网海量数据实时计算的理解

对互联网海量数据实时计算的理解1. 实时计算的概念互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级。个人理解,互联网行业的实时计算可以分为以下两种应用场景:1)  数据源是实时的不间断的,要求对用户的响应时间也是实时的。主要用于互联网流式数据处理。所谓流式数据是指将数

2015-01-18 14:41:57 876

转载 并发和并行的区别:吃馒头的比喻

并发和并行的区别就是一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生.并发性(concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。并行(parallelism)是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并

2013-11-21 00:20:50 1135

转载 Java直接内存访问的技巧

ava被设计成一个安全,可管理的环境,然而 Java HotSpot有一个后门,提供了对低级别的,对直接内存和线程的操作。这个后门是—-sun.misc.Unsafe。这个类在JDK中有广泛的应用,例如,java.nio和java.util.concurrent。很难想象在日常开发中使用这些危险的,不可移植和未经校验的API。然而,Unsafe提供一种简单的方法来观察HotSpot JVM内部的一

2013-11-20 00:55:08 1700

转载 TCP/IP重传超时--RTO

概述:本文讨论主机在发送一个TCP数据包后,如果迟迟没有收到ACK,主机多久后会重传这个数据包。主机从发出数据包到第一次TCP重传开始,RFC中这段时间间隔称为retransmission timeout,缩写做RTO。本文会先看看RFC中如何定义RTO,然后看看Linux中如何实现。本文旨在分享:当遇到了TCP层问题改如何去查找、阅读文档,该如何去在Linux源码中寻求答案。1. 起

2013-11-19 00:07:23 1572

转载 代码和产品发布的几种方式

最近有几个朋友提起”灰度发布"这个概念和相关的问题。想解释一下几种具体的发布方式(具体名称中文翻译不一定正确)、他们的优缺点和实现难点。这几种方式都可以作为快速运营的软件或者web服务公司逐步发布新代码或者新产品,边尝试边改进的方法,这些方法可以避免一次发布里面某个产品/代码的漏洞对网站产生瞬间毁灭性的后果。 这几种方式各有优缺点和难点,根据实际情况一个公司可能使用不同的方法做不同

2013-11-18 21:56:17 950

转载 Java应用运维

对于互联网产品或长期运行的产品而言,运维工作非常重要,尤其是在产品复杂了以后,在这篇blog中就来说下Java应用的运维工作(ps:虽然看起来各种语言做的系统的运维工作都差不多,但细节上还是会有很多不同,so本文还是只讲Java的)。苦逼的码农按照需求开发好了一个全新的Java Web应用,该发布上线给用户用了,要把一个Java Web应用发布上线,首先需要搭建运行的环境,运行的环境需要有

2013-11-18 21:52:41 1326

转载 常见的Java问题排查方法

以下是Java应用在运行时常见的一些问题,总结了运行时黑盒方式的一些排查方法,也希望看到的同学能给予补充,无论是补充碰到的问题,还是补充解决方法。类装载的相关问题写过Java代码的同学估计都碰到过ClassNotFoundException/NoClassDefFoundError/NoSuchMethodException(还有一个常见的ClassCastException就不在这里

2013-11-18 21:51:01 1882

转载 通过blktrace, debugfs分析磁盘IO

前几天微博上有同学问我磁盘util达到了100%时程序性能下降的问题,由于信息实在有限,我也没有办法帮太大的忙,这篇blog只是想给他列一下在磁盘util很高的时候如何通过blktrace+debugfs找到发生IO的文件,然后再结合自己的应用程序,分析出这些IO到底是谁产生的,最终目的当然是尽量减少不必要的IO干扰,提高程序的性能。blktrace是Jens Axobe写的一个跟踪IO请

2013-11-18 21:42:03 1447

转载 cpu iowait高排查的case

在之前的常见的Java问题排查方法一文中,没有写cpu iowait时的排查方法,主要的原因是自己之前也没碰到过什么cpu iowait高的case,很不幸的是在最近一周连续碰到了两起cpu iowait的case,通过这两起case让自己学习到了很多系统层面的知识,也许这些知识对于熟悉系统的人来说没什么,不过对于写Java的同学我觉得还是值得分享下(由于Java基本不用于存储类型的场景,所以

2013-11-18 21:40:50 9774

转载 某应用出现启动后集群中部分node成功,部分node失败

解决过程:1、失败的node抛出的是NoClassDefFoundError,这些node在环境上和应用包上是完全一致的,因此猜想是classloader装载class时出现了什么问题;2、在启动参数上增加了-XX:+TraceClassLoading,想看看成功的node和失败的node是不是从第一个地方加载的相应的类,悲催的是成功的node加上了这参数后启动超慢,于是只好放弃;3、

2013-11-18 20:39:23 1050

转载 Timing Wheel 定时轮算法

最近自己在写一个网络服务程序时需要管理大量客户端连接的,其中每个客户端连接都需要管理它的 timeout 时间。通常连接的超时管理一般设置为30~60秒不等,并不需要太精确的时间控制。另外由于服务端管理着多达数万到数十万不等的连接数,因此我们没法为每个连接使用一个Timer,那样太消耗资源不现实。最早面临类似问题的应该是在操作系统和网络协议栈的实现中,以TCP协

2013-11-17 23:01:29 1129

转载 zookeeper项目使用几点小结

背景  前段时间学习了zookeeper后,在新的项目中刚好派上了用场,我在项目中主要负责分布式任务调度模块的开发,对我自己来说是个不小的挑战。  分布式的任务调度,技术上我们选择了zookeeper,具体的整个分布式任务调度的架构选择会另起一篇文章进行介绍。   本文主要是介绍自己在项目中zookeeper的一些扩展使用,希望可以对大家有所帮助。  项目中

2013-11-03 11:06:52 1088

转载 一种高效无锁内存队列的实现

Disruptor是LMAX公司开源的一个高效的内存无锁队列。这两天看了一下相关的设计文档和博客,下面尝试进行一下总结。第一部分。引子谈到并发程序设计,有几个概念是避免不了的。1.锁:锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很

2013-10-31 22:32:06 713

转载 NIO trick and trap NIO的技巧与陷阱

IO划分为两个阶段:1 等待数据就绪2 从内核缓冲区copy到进程缓冲区(从socket通过socketChannel复制到ByteBuffer)non-direct ByteBuffer: HeapByteBuffer,创建开销小direct ByteBuffer:通过操作系统native代码,创建开销大基于block的传输通常比基

2013-10-31 00:07:14 1120

转载 JavaScript跨域总结与解决办法

什么是跨域1、document.domain+iframe的设置2、动态创建script3、利用iframe和location.hash4、window.name实现的跨域数据传输5、使用HTML5 postMessage6、利用flash本文来自网络(http://f2e.me/200904/cross-scripting/,该网址已不能访问),仅作个人读书笔记之用,并稍作修改和补充

2013-10-27 22:00:14 543

转载 一个nginx配置例子

user www www; worker_processes 2; pid /var/run/nginx.pid;  # [ debug | info | notice | warn | error | crit ] error_log /var/log/nginx.error_log info;  events { worker_connections

2013-10-18 22:02:05 788

转载 nginx+php产生大量TIME_WAIT

一 TIME_WAIT产生原因:1、nginx现有的负载均衡模块实现php fastcgi负载均衡,nginx使用了短连接方式,所以会造成大量处于TIME_WAIT状态的连接。2、TCP/IP设计者本来是这么设计的主要有两个原因(1) 防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)(2) 可靠的关闭TCP连接在主动关闭

2013-10-11 23:13:09 1109

转载 打造百万级访问网站的技术准备

首先,当你看到这个标题的时候你不要有所质疑,这里说打造百万级访问的网站并不是说上犹博客已经有这个级别了,上犹博客自从去年7月24日注册域名以来到现在已经走过了1年多的时间,之所以在首页显示本站已经运营794天,是因为本站有些数据确实已经是700多天前的东西了,本站第一篇博文开始已经换了3个域名了,到现在,这个域名是打算一直坚持下去的,刚开始学习怎么去玩博客,到现在已经经历了一段漫长的岁月,从开始的

2013-10-09 21:51:11 1286

转载 深入Java集合学习系列:HashMap的实现原理

深入Java集合学习系列:HashMap的实现原理博客分类: Core JavaJava算法数据结构IDEAJDK 1.    HashMap概述:   HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2.    Ha

2013-10-09 21:44:48 851

转载 TIME-WAIT状态

关于time-wait状态只有发起主动关闭的一方进入此状态。例外情况是双方同时关闭,这时都进入此状态在此状态中停留的时间是2MSL,MSL定义为30秒到2分钟,linux定义的是30秒,所以停留1分钟如果此状态下有数据达到,就重置该定时器。time-wait状态下按理对方关闭了连接,不会有数据到来的。下面是time-wait存在的必要性:对于主动关闭方,最后要发送一

2013-10-09 20:45:50 758

转载 "4+1" 视图模型

n 4+1视图模型概况     Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。如下图: n 逻辑视图(Logic View)     逻辑试图主要是用来描述系统的功能需求,即

2013-10-03 10:38:45 1806

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

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

2013-09-29 00:02:27 860

转载 NoSQL数据库笔谈

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

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

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

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

2013-09-26 23:28:42 916

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

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

2013-09-26 23:10:49 702

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

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

2013-09-25 21:40:49 6274

转载 性能调优攻略

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

2013-09-21 08:24:36 857

转载 防痴呆设计

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

2013-09-19 13:54:50 973

转载 深入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 762

转载 深入JVM锁机制1-synchronized

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

2013-09-18 22:57:27 800

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

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

2013-09-17 21:43:13 660

转载 内存屏障与JVM并发

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

2013-09-17 21:36:02 913

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

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

2013-09-11 23:02:40 4912

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

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

2013-09-08 22:37:44 880

转载 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 887

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

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

2013-09-07 23:30:44 1700

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

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

2013-09-07 09:02:02 1097

转载 Metaq原理与应用

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

2013-09-03 00:29:17 3347

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

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

2013-09-03 00:29:06 1573

空空如也

空空如也

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

TA关注的人

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