- 博客(138)
- 收藏
- 关注
转载 C++ and the Perils of Double-Checked Locking
C++ and the Perils of Double-Checked Locking Scott Meyers and Andrei AlexandrescuSeptember 2004Multithreading is just one damn thing after, before, or simultaneouswith another.1 Introduction
2016-06-02 20:15:33 515
转载 C/C++(&Java) Volatile关键词深度剖析
背景前几天,发了一条如下的微博 (关于C/C++ Volatile关键词的使用建议): 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volati
2016-05-30 17:15:51 2535
转载 MySQL 加锁处理分析
原文地址见:http://hedengcheng.com/?p=771 背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思
2016-05-30 15:29:08 576
转载 CQRS(Command Query Responsibility Segration)
来自http://www.cnblogs.com/netfocus/p/4055346.htmlCQRS架构简介前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺。对于这3点,我觉得很有道理。所以也想谈一下,CQRS架构下是如何实现高性能的。关于CQRS(Command Query Responsib
2016-01-12 15:45:55 1831
转载 ESB产品架构之事务管理
1 概述 在企业内事务在所有的业务交互几乎都是需要的,作为一个业务交易集中者的ESB有时也不得不面对这个问题。ESB是所有企业服务的集中者,它面对的是多种的异构的系统,由此会遇到了非常大的挑战性。大都多的情况下,我们建议如果不是业务上非常的必要,最好不要使用事务,因为在ESB的环境下,事务是一个非常昂贵,他会占用大量的资源。 2 ESB事务的特性
2015-03-04 11:10:59 1050
转载 新浪微博CacheService架构浅析
微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满足:每秒数十万的用户请求数据更新的实时性服务请求的低响应时间99.99%以上的服务可用性为了满足业
2015-03-03 14:19:52 708
转载 Netty与Reactor模式
一:Netty、NIO、多线程?时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手。过年期间@李林锋hw发布了一个Netty5.0架构剖析和源码解读 http://vdisk.weibo.com/s/C9LV9iVqH13rW/1391437855,看完也是收获不少。前面的文章我们分析了Netty的结构,这次咱们来分析最错综复杂的一部分-Netty中的多线程以及NIO的
2015-02-10 18:12:21 623
转载 AbstractQueuedSynchronizer的介绍和原理分析
简介提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同
2015-02-06 18:49:19 664
转载 总结一下内存泄漏的几个点
from http://michael-softtech.iteye.com/blog/748260今日部署tomcat的时候提示thread local 可能引起内存泄漏,于是研究了一下在java中可能引起内存泄漏的一些点,简单写一下 内存泄漏,在我看来大体有两个原因。一是本身就是跟操作系统紧密相关的资源型对象,在使用的时候要比较小心,不然容易引起泄漏。比如:
2015-01-31 10:28:55 741
转载 GC
如何判断垃圾对象?垃圾收集的第一步就是先需要算法来标记哪些是垃圾,然后再对垃圾进行处理。引用计数(ReferenceCounting)算法这种方法比较简单直观,FlashPlayer/Python使用该算法,简单高效。核心思路是,给每个对象添加一个被引用计数器,被引用时+1,引用失效-1,等于0时就表示该对象没有被引用,可以被回收。但是,Java/C#并不采用该算法,因为该
2015-01-27 18:23:48 642 1
转载 ConcurrentHashMap Segment&HashEntryLinkedList
ConcurrentHashMapConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。ConcurrentHas
2015-01-26 15:31:16 1306
转载 Dubbo基本原理机制-超时、注册
from: http://blog.csdn.net/paul_wei2008/article/details/19355681Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况分析源代码,基本原理如下:client一个线程调用远程接口,生成一个唯一的ID(比如一段随机字符串,UUID等),Dubbo是使用Atomi
2015-01-15 14:29:54 2365
转载 memcached缓存批量更新解决方案探讨
众所周知,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。 俺所在的公司经营的主要是基于web和wap两个平台的手机游戏门户网站,分布式缓存解决方法正好有用武之地,多平台共享使用memcache缓存数据 (php+mysql+memcache),确实很大程度的缓解访问量过大对数据库的压力。但是,在享受便利的同时,同样也遇到相信对大多数 memc
2015-01-14 16:49:05 948
原创 head first dubbo
1.resources: https://github.com/alibaba/dubbo 2.userGuide http://alibaba.github.io/dubbo-doc-static/Developer+Guide-zh.htm
2015-01-09 17:07:10 452
原创 virgo in eclipse
user-guide : http://www.eclipse.org/virgo/documentation/virgo-documentation-3.6.2.RELEASE/docs/virgo-tooling-guide/html/index.html
2015-01-09 17:04:07 864
原创 memcache memory release
1、flush_all命令只是将记录置为过期,并不会释放内存空间(This command does not pause the server, as it returns immediately. It does not free up or flush memory at all, it just causes all items to expire.) 2、memcache没有监视记
2015-01-09 17:00:27 545
转载 Vector Clock算法的理解
Vector Clock是Amazon’s Dynamo用来捕捉同一不同版本的对象的因果关系的一种算法。根据Dyanmo paper的描述,矢量时钟实际上是一个(node,counter)对列表(即(节点,计数器)列表)。矢量时钟是与每个对象的每个版本相关联。通过审查其向量时钟,我们可以判断一个对象的两个版本是平行分枝或有因果顺序。如果第一个时钟对象上的计数器在第二个时钟对象上小于或等于其他所有节
2015-01-09 16:55:55 809
转载 [转]NoSQL数据库笔谈
NoSQL数据库笔谈databases , appdir , node , paper颜开 , v0.2 , 2010.2序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum
2015-01-09 11:27:01 1451
转载 JDK中设计模式
本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助。一、设计模式是什么(1)反复出现问题的解决方案(2)增强软件的灵活性(3)适应软件不断变化二、学习JDK中设计模式的好处(1)借鉴优秀代码的设计,有助于提高代码设计能力(2)JDK的设计中体现了大多数设计模式,
2015-01-08 15:48:20 758
转载 无锁HashMap的原理与实现
在《疫苗:Java HashMap的死循环》中,我们看到,java.util.HashMap并不能直接应用于多线程环境。对于多线程环境中应用HashMap,主要有以下几种选择:使用线程安全的java.util.Hashtable作为替代。使用java.util.Collections.synchronizedMap方法,将已有的HashMap对象包装为线程安全的。使用java.
2015-01-08 13:09:51 2444
转载 buffer&cache
A buffer is something that has yet to be "written" to disk. A cache is something that has been "read" from the disk and stored for later use.也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据
2015-01-04 10:55:53 409
转载 vmstat命令详解
一、前言vmstat命令: 用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况二、虚拟内存运行原理在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的
2014-12-31 11:24:56 401
转载 [转]高性能I/O设计模式Reactor和Proactor
两种I/O多路复用模式:Reactor和Proactor 一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事件分离
2014-12-26 15:01:42 446
转载 [转]设计模式在Java I/O中的应用(装饰模式和适配器模式)
在Java语言的IO库的设计中,使用了两个结构模式,即装饰模式和适配器模式,本章就围绕这两个模式讨论Java的IO库的设计. 一:引言 Java语言采用流的机制来实现输入/输出,所谓流,就是数据的有序排列,它可以从某个源(流源)出来,到某个目的地(流汇)。根据流的方向可以将流分为输出流和输入流.例如Java程序可以用FileInputStream类从一个磁盘文件读入byte类型数据,也
2014-12-19 14:25:29 1056
转载 TCP状态转换图
注:主动、被动 与 服务器、客户端没有明确的对应关系。这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻 的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下TCP建立连接的三次握手过程,以及 关闭连接的四次握手过程。1、建立连接协议(三
2014-12-16 11:42:04 518
转载 [转]Linux的epoll模型
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该值是1024,搜索内核
2014-12-16 10:41:54 376
转载 [Web]URL编码与解码
from http://kb.cnblogs.com/page/133765/通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。 例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你
2014-12-01 10:48:32 456
原创 setup
SET-UP:_________________________________________________________________________________________________________________________________________====================== JDK ==
2014-10-13 12:09:45 592
原创 tomcat setenv.sh
export JAVA_OPTS="$JAVA_OPTS\ -server\ -Xms704m\ -Xmx704m\ -XX:OnOutOfMemoryError=/usr/share/scripts/on_server_crash.sh\ -XX:+HeapDumpOnOutOfMemoryError\ -XX:HeapDumpPath=/var/log/tomcat7\ -XX:
2014-10-10 13:22:11 10434
转载 spring context
spring获取webapplicationcontext,applicationcontext几种方法详解方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");ac.getBean("be
2014-08-22 17:57:40 473
转载 memcached refcount
在多线程环境中,前面memcacheditem锁粒度中可以看出在thread.c中那些item_get,item_link等,对item的一些基本操作都会根据锁的类型(分段锁或者是全局锁),严格的保证在多线程环境中的原子性,但是memcached中通过libevent得到的客户端请求,然后处理命令,函数是process_command,可以看到这个函数是不加锁的,也就是说通过原子操作调用了item
2014-08-09 17:31:48 594
转载 Slab Item source-code
今天主要总结items相关的操作,items的操作分布比较多,定义和实现在memcachd.h/c、thread.h/c、items.h/c都有,感觉完全可以放在items.h/c中。这里就对所有的这些操作(除去stats部分)进行一个简单的总结。首先对数据结构、ITEM_*宏和一些变量进行一个简单的说明,这里先建立一个宏观的概念,理解了它们的用途对后续阅读程序有很大的帮助。/**
2014-08-01 16:24:45 461
转载 Zookeeper原理及应用场景
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee
2014-08-01 12:04:14 522
转载 分布式服务框架 Zookeeper
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等
2014-07-31 17:18:41 578
转载 zookeeper acl
zookeeper ACL原文 http://www.cnblogs.com/wangxiaowei/p/3315137.html 生产环境中,经常会有多个项目使用zookeeper,例如多个hbase集群。每个项目搭建一套独立的zookeeper,无论从机器成本,还是运维成本,都是一笔额外的开销。然而多项目,多集群共用zookeeper又涉及一个权限隔
2014-07-30 14:05:03 477
原创 linux avariable port range
1.view sysctl -a | grep 'net.ipv4.ip_local_reserved_ports'2.write sysctl -w
2014-07-15 19:46:00 627
转载 RHEL更换yum源
刚开始接触redhat linux的时候,经常会为安装软件发愁,linux下的软件依赖对新手来说太繁琐和复杂。后来听说了一个好工具yum,但是作为RHEL的免费试用者,yum首先需要我们自己更换可用的源,并且配置好才能方便地使用。本人曾经在配置过程中,根据资料一步一步配置,但是还是出错了,为此纠结万分。在yum makecache的时候报错如下:[Errno 14] PYC
2014-07-15 14:18:12 711
原创 memcached restart shell
1.memcached-manager shell 2.check-memcached with telnet
2014-07-14 15:06:10 638
转载 memcached shell(start stop restart)
分享一例用于监控memcached进程是否启动的shell脚本,用于memcache的启动、停止与重启等操作,有需要的朋友参考下。1,memcached_inc.sh 设置路径,端口等讯息。代码: 复制代码代码示例:#!/bin/sh #config include HOST=$(hostname) SI
2014-07-11 15:30:16 1457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人