- 博客(39)
- 资源 (14)
- 收藏
- 关注
转载 Zookeeper(7)-Zookeeper的原理Paxos
原计划在介绍完zookeeper client之后就着手ZK Server的介绍,但是发现ZK Server所包含的内容实在太多,并不是简简单单一篇Blog就能搞定的。于是决定从基础搞起比较好。那么ZK Server最基础的东西是什么呢?我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。 先说Paxos,它是一个基于消息传递的一致性算
2016-09-30 14:39:17 400
转载 Zookeeper(6)-Zookeeper 存储与client
当我写完Zookeeper leader选举后,准备看看Zookeeper的存储和处理客户端请求的时候发现,如果能看看Zookeeper的API是不是在理解后面的过程更好些呢。Zookeeper的client是通过Zookeeper类提供的。前面曾经说过,Zookeeper给使用者提供的是一个类似操作系统的文件结构,只不过这个结构是分布式的。可以理解为一个分布式的文件系统。我们可以通过Zo
2016-09-30 14:21:48 420
转载 Zookeeper(5)-Zookeeper leader选举
在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节。那么什么是leader选举呢?zookeeper为什么需要leader选举呢?zookeeper的leader选举的过程又是什么样子的?本文的目的就是解决这三个问题。 首先我们来看看什么是leader选举。其实这个很好理解,leade
2016-09-30 14:05:31 416
转载 Zookeeper(4)-Zookeeper启动过程
在上一篇,我们了解了zookeeper最基本的配置,也从中了解一些配置的作用,那么这篇文章中,我们将介绍Zookeeper的启动过程,我们在了解启动过程的时候还要回过头看看上一篇中各个配置参数在启动时的位置。Zookeeper的启动入口在org.apache.zookeeper.server.quorum.QuorumPeerMain。在这个类的main方法里进入了zookeeper的启动
2016-09-30 13:46:29 468
转载 Zookeeper(3)-Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象。本文只关注分布式模式的zookeeper,因为这也是在生产环境的唯一部署方式,单机的zookeeper可以在测试和开发环境使用,但是单机环境的zookeeper就不再是zookeeper了。安装配置很简
2016-09-30 11:18:44 437
转载 Zookeeper(2)-Zookeeper可以干什么
在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 这大概描述了Zookeeper主要可以干哪些事情
2016-09-30 11:03:47 946
转载 Zookeeper(1)-Zookeeper是什么
Google的三篇论文影响了很多很多人,也影响了很多很多系统。这三篇论文一直是分布式领域传阅的经典。根据MapReduce,于是我们有了Hadoop;根据GFS,于是我们有了HDFS;根据BigTable,于是我们有了HBase。而在这三篇论文里都提及Google的一个lock service---Chubby,哦,于是我们有了Zookeeper。 随着大数据的火热,Hxx们已
2016-09-30 11:00:13 483 1
转载 本地调试微信接口方法
使用国内的www.ngrok.cc并且有详细的视频使用教程 调试微信接口,例如调试微信消息收发接口,我们需要提供一个公网访问url,正常情况下,我们需要建立web工程,然后打包,不部署服务器,提供服务器外网访问url。但是想要将自己本地电脑上运行的项目发布到公网,让所有人都可以访问,显然是很麻烦的一件事情。这里介绍三种方式,将本地运行代码发布到互联网,提供映射域名,实现本地调试微信接
2016-09-30 10:28:45 2008
转载 HttpClient(4.5) 使用实例(微信API,网页授权Oauth2.0)
设置头信息:[java] view plain copy print?CloseableHttpClient httpClient = HttpClientBuilder.create(). setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy()).
2016-09-30 10:25:49 7761 1
转载 mysql并发控制与InnoDB锁问题
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。一、背景知识1.事务(Transaction)及其ACID属性 事务是由一组SQ语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的A
2016-09-29 17:26:52 491
转载 Mysql order by语句未使用索引的思考
今天早上查看网站,发现非常慢!进linux 用top查看,发现MySQL cpu到了100%。开始怀疑是mysql性能的问题,不会10万条数据就卡成这样吧?虽然我的linux是在服务器上放了个虚拟机,但也不至于10万条记录挂啊? 网上找了一大把文章,my.cnf也设置了,我虚拟机内存是2G,将key_buf设置成512M 还是卡。非常郁闷! 最后没办法,只能用explain来找原
2016-09-29 16:30:51 8201 3
转载 MySQL的InnoDB和MyISAM区别
功能MyISAMInnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限
2016-09-29 16:09:11 346
转载 MySQL函数总结
一、数学函数求绝对值函数abs()select fweight-50,abs(fweight-50),abs(-5.23) from t_person;求指数函数power()select fweight,power(fweight,-0.5),power(fweight,2),power(fweight,3),power(fweight,4) from t_perso
2016-09-29 16:01:09 430
转载 mysql乐观锁总结与实践
上一篇文章谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的是乐观锁,乐观锁( Optimistic Locking ) 相对
2016-09-29 15:16:40 489
转载 mysql(for update)悲观锁总结与实践
悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。 使用场景举例:以MySQL InnoDB为例, 商品goo
2016-09-29 15:02:12 20496 3
转载 mysql单列索引、多列索引的使用
数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度。索引优化是数据库优化的最重要手段。 如果查询语句使用索引(通常是where条件匹配索引)就会利用树的结构加快查找,索引会按值查找到要查找的行在表中位置,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查
2016-09-29 14:21:51 24456 2
转载 Mysql使用索引可能失效的场景
1.WHERE字句的查询条件里有不等于号(WHERE column!=…),MYSQL将无法使用索引2.类似地,如果WHERE字句的查询条件里使用了函数(如:WHERE DAY(column)=…),MYSQL将无法使用索引3.在JOIN操作中(需要从多个数据表提取数据时),MYSQL只有在主键和外键的数据类型相同时才能使用索引,否则即使建立了索引也不会使用4.如果WHER
2016-09-29 14:04:28 13615 4
转载 MySQL日期数据类型、时间类型使用总结
MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。 日期类型 存储空间 日期格式 日期范围 ------------ --------- ----------------------- --------------------
2016-09-29 11:16:29 437
转载 Hessian和Java反序列化问题小结
Hessian反序列化问题众所周知,Hessian框架提供的序列化方式,在性能上要优于Java自己的序列化方式。他将对象序列化,生成的字节数组的数量要相对于Java自带的序列化方式要更简洁。目前公司的一个项目中,有RPC调用的需要,这里我们使用了公司自己的开源RPC框架Dubbo作为远程调用框架,进行业务方法的调用和对象的序列化。这里,我们没有对Dubbo做出特殊配置,Dubbo在
2016-09-29 10:30:21 3162
翻译 Hessian实现远程调用
Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时又具有防火墙穿透能力。Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。Hessian官网:http://hessian.caucho.com/
2016-09-29 10:03:26 5107 2
转载 Redis分布式锁实现
Redis是一个key-value存储系统。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。 下面我们以redis为基
2016-09-27 16:43:14 543
转载 基于Redis的在线用户列表解决方案
前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案可以采用SessionListener来完成,当有Session创建和销毁的时候做相应的操作即可完成功能及将相应的Session的引用存放于内存中,由于持有了所有的Session的引用,故可以方便的实现用户单一登陆的功能(比
2016-09-27 16:18:28 4396
转载 Redis中PipeLine使用
(一)简介 Redis客户端与Redis之间使用TCP协议进行连接,一个客户端可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client,因此当执行多条命令的时候都需要等待上一条命令执行完毕才能执行,如:get ‘0’,get ‘1’,get ‘2’其执行过程
2016-09-27 15:48:26 6893
转载 Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
Jedis是redis的java版本的客户端实现。本文做个总结,主要分享如下内容:【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】好了,一个一个来。 一、 Pipeline 官方的说明是:starts a pipeline,which is a very efficient way to send lots of c
2016-09-27 15:27:51 750
转载 Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比:一、普通同步方式最简单和基础的调用方式,@Testpublic void test1Normal() { Jedis jedis = new Jedis("localhost"); long start = System.currentTimeMillis(); for (int
2016-09-27 15:12:38 389
转载 Web系统大规模并发—电商秒杀与抢购
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高
2016-09-27 14:47:03 669
转载 Redis事务
Redis 提供的事务机制与传统的数据库事务有些不同,传统数据库事务必须维护以下特性:原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 持久性(Durability),简称ACID。我们逐项考察下 Redis 在事务的 ACID 上做出的权衡与取舍:原子性(Atomicity)原子意味着操作的不可再分,要么执行要么不
2016-09-27 13:50:48 387
转载 Redis:主从复制
1、主从复制 单台redis会遇到单点故障的问题,为了解决redis的高可用,主从复制应该是学习的第二个步骤。本文想达到的目的是,一个master带一个slave,而slave又带了一个slave,这样的好处是,当master故障后,直接把slaver1改为master,其他的配置不需要修改,服务又可以正常使用。 作为master的redis配
2016-09-22 17:40:33 910
转载 redis持久化、主从复制及数据备份
现在在项目里已经大量使用redis了,为了提高redis的性能和可靠性我们需要知道和做到以下几件事:常用内存优化手段与参数redis的性能如何是完全依赖于内存的,所以我们需要知道如何来控制和节省内存。首先最重要的一点是不要开启Redis的VM选项,即虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,但是其内存管理成本非
2016-09-22 17:18:59 622
转载 Redis基本操作(命令+java)
一、server端安装 1、下载https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载windows平台文件:解压后,选择当前64位win7系统对应的版本: 2、安装 1)解压后将里面所有文件拷贝至redis安装目录: 几个
2016-09-22 16:39:30 569
转载 Java垃圾回收机制
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集
2016-09-22 16:08:40 382
转载 在JavaScript文件中读取properties文件的方法
假设有JavaScript文件叫做:readproperties.js,这个文件需要读取config.properties这个配置文件,步骤如下:1、 下载插件jquery.i18n.properties-min-1.0.9.js,在eclipse中放到合适的目录下。由于需要jQuery的支持,所以也需要jquery插件,在这里选择jquery-1.7.1.min.js(jquery.i18
2016-09-21 17:46:13 42334 4
转载 JS读取本地文件及目录的方法
Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼、富有朝气。但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读、写和删除,就象在VB、VC等高级语言中经常做的工作一样。怎么样,你是否需要了解这方面的知识?那就请跟我来,本文将详细描述如何使用Javascript语言进行文件操作。一、功能实现核心:FileSystemObject 对象
2016-09-21 17:13:38 23879 3
转载 JAVA垃圾收集器与内存分配策略
引言垃圾收集技术并不是Java语言首创的,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。垃圾收集技术需要考虑的三个问题是:哪些内存需要回收? 什么时候回收? 如何回收?http://segmentfault.com/a/1190000002931555 中讲到java内存运行时区域的分布,其中程序计数器,虚拟机栈,本地方法区都是随着线程而生,随线
2016-09-21 16:18:31 417
转载 Java内存区域和GC机制
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)
2016-09-21 16:05:46 484
转载 聊聊JVM:相对全面的GC总结(专栏)
http://blog.csdn.net/column/details/talk-about-jvm.html
2016-09-20 11:03:57 461
转载 单元测试之测试整合框架Unitils
引述:程序测试对保障应用程序正确性而言,其重要性怎么样强调都不为过。JUnit是必须事先掌握的测试框架,大多数测试框架和测试工具都在此基础上扩展而来,Spring对测试所提供的帮助类也是在JUnit的基础上进行演化的。直接使用JUnit测试基于Spring的应用存在诸多不便,不可避免地需要将大量的精力用于应付测试夹具准备、测试现场恢复、访问测试数据操作结果等边缘性的工作中。Mockito、Unit
2016-09-18 14:52:44 859
转载 JMeter压力测试总结
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。并且能自动生成压力测试报告。1. 下载JMeterhttp://jmeter.apache.org/
2016-09-18 14:28:51 2378
Hibernate_Session_Transaction
2013-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人