01 2018 档案

摘要:ZooKeeper学习第七期--ZooKeeper一致性原理 一、ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。 图 1.1 ZooKeeper解决单点故障 那么我们继续分 阅读全文
posted @ 2018-01-16 23:01 Andy奥 阅读(1623) 评论(0) 推荐(0)
摘要:http://825635381.iteye.com/blog/2276077 http://www.importnew.com/27326.html //面试题 http://blog.csdn.net/zw19910924/article/details/78254267 //线上服务运行时间长 阅读全文
posted @ 2018-01-14 21:46 Andy奥 阅读(381) 评论(0) 推荐(0)
摘要:转载两篇不错的文章: 第一篇: 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%。 [java] view plain copy final HashMap<String, Stri 阅读全文
posted @ 2018-01-14 16:00 Andy奥 阅读(451) 评论(0) 推荐(0)
摘要:Centos7安装并配置mysql5.6完美教程 Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想使用mysql的开发人员来说并不是一个好消息。然而,网上关于 Linux安装mysql数据库的教程数不胜数,但是,大多教程都是漏洞百出。今天,为了帮助各位需要的人,从而写下C 阅读全文
posted @ 2018-01-11 16:12 Andy奥 阅读(252) 评论(0) 推荐(0)
摘要:jedisLock—redis分布式锁实现 一、使用分布式锁要满足的几个条件: 二、应用的场景例子 管理后台的部署架构(多台tomcat服务器+redis【多台tomcat服务器访问一台redis】+mysql【多台tomcat服务器 访问一台服务器上的mysql】)就满足使用分布式锁的条件。多台服 阅读全文
posted @ 2018-01-11 09:59 Andy奥 阅读(508) 评论(0) 推荐(0)
摘要:深入理解Java中的String 一、String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Serializable, Comparable<String>, Ch 阅读全文
posted @ 2018-01-10 21:40 Andy奥 阅读(327) 评论(0) 推荐(0)
摘要:高并发分布式系统中生成全局唯一Id汇总 数据在分片时,典型的是分库分表,就有一个全局ID生成的问题。单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求: 1 不能有单点故障。 2 以时间为序,或者ID里包含时间。这样一是可以少一个索引,二是冷热数据容易分离。 3 可以控制Sha 阅读全文
posted @ 2018-01-09 20:27 Andy奥 阅读(429) 评论(0) 推荐(0)
摘要:sleep() sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级 的线程得到执行的机会,也可以让低优先级的线程得到执行机会。但是sleep()方法不会释放“锁标志”,也就是说如果有synchronized同步 阅读全文
posted @ 2018-01-09 16:23 Andy奥 阅读(964) 评论(0) 推荐(0)
摘要:动态代理:JDK动态代理和CGLIB代理的区别 代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。 而AOP,是通过动态代理实现的。 一、简单来说: JDK动态代理只能对实现了接口的类生成代理,而不能针对类 阅读全文
posted @ 2018-01-09 14:32 Andy奥 阅读(312) 评论(0) 推荐(0)
摘要:IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在 JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务 端进行通信,默认情况下服务端需要对每个请求建立一堆线程 阅读全文
posted @ 2018-01-09 12:20 Andy奥 阅读(366) 评论(0) 推荐(0)
摘要:对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行ini方法等。 主要流程如下: 1. 类加载检查 JVM遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到 阅读全文
posted @ 2018-01-09 11:30 Andy奥 阅读(267) 评论(0) 推荐(0)
摘要:前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在 的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时 阅读全文
posted @ 2018-01-09 11:24 Andy奥 阅读(359) 评论(0) 推荐(0)
摘要:讨论Socket必讨论长连接和短连接 一、长连接和短连接的概念 1、长连接与短连接的概念:前者是整个通讯过程,客户端和服务端只用一个Socket对象,长期保持Socket的连接;后者是每次请求,都新建一个Socket,处理完一个请求就直接关闭掉Socket。所以,其实区分长短连接就是:整个客户和服务 阅读全文
posted @ 2018-01-07 22:46 Andy奥 阅读(28662) 评论(0) 推荐(0)
摘要:1 什么是长连接和短连接 三次握手和四次挥手 TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程。 三次握手为连接的建立过程,握手失败则连接建立失败。 四次挥手为连接的完整释放过程,也会发生某个消息丢失或者超时的情况,有一方主动发送FIN消息即表示连 阅读全文
posted @ 2018-01-07 22:45 Andy奥 阅读(3123) 评论(0) 推荐(0)
摘要:TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数 阅读全文
posted @ 2018-01-07 22:36 Andy奥 阅读(519) 评论(0) 推荐(0)
摘要:三次握手 TCP连接是通过三次握手来连接的。 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为m,等待服务器确认,这时客户端的状态为SYN_SENT。 第二次握手 当服务器收到客户端发送的SYN后,服务器要做的是确认客户端发送过来的SYN,在这 阅读全文
posted @ 2018-01-07 22:31 Andy奥 阅读(450) 评论(0) 推荐(0)
摘要:一、分布式数据一致性 在分布式系统中,为了保证数据的高可用,通常会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。 (1)什么是数据一致性 在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致 阅读全文
posted @ 2018-01-07 15:07 Andy奥 阅读(49773) 评论(5) 推荐(2)
摘要:本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。 阅读全文
posted @ 2018-01-07 14:39 Andy奥 阅读(854) 评论(0) 推荐(1)
摘要:Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类 阅读全文
posted @ 2018-01-07 14:12 Andy奥 阅读(662) 评论(0) 推荐(2)
摘要:本文是基于周志明的《深入理解Java虚拟机》 垃圾收集算法 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。 由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的 阅读全文
posted @ 2018-01-07 13:51 Andy奥 阅读(212) 评论(0) 推荐(0)
摘要:一、jvm堆内存的分代划分 在基于分代的内存回收策略中,堆空间通常都被划分为3个代,年轻代,年老代(或者tenured代),永久代。在年轻代中又被划分了三个小的区域,分别为:Eden(伊甸)区,S0区(survivor 0),S1区(survivor 1),如下图所示: 其中,新的对象总被分配到年经 阅读全文
posted @ 2018-01-07 13:41 Andy奥 阅读(486) 评论(0) 推荐(0)
摘要:一、顺序查找 条件:无序或有序队列。 原理:按顺序比较每个元素,直到找到关键字为止。 时间复杂度:O(n) 二、二分查找(折半查找) 条件:有序数组 原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程 结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元 阅读全文
posted @ 2018-01-04 10:54 Andy奥 阅读(825) 评论(0) 推荐(0)
摘要:由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速 度简直无法容忍。曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会 抓狂。因此如何 阅读全文
posted @ 2018-01-03 13:54 Andy奥 阅读(353) 评论(0) 推荐(0)
摘要:Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。 可 能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么 阅读全文
posted @ 2018-01-03 13:42 Andy奥 阅读(284) 评论(0) 推荐(0)
摘要:如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyISAM引擎支持。其可以在 CREATE TABLE ,ALTER TABLE ,CREATE IND 阅读全文
posted @ 2018-01-03 13:40 Andy奥 阅读(280) 评论(0) 推荐(0)
摘要:MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like 'default_storage_engine 阅读全文
posted @ 2018-01-02 17:04 Andy奥 阅读(300) 评论(0) 推荐(0)
摘要:悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中 阅读全文
posted @ 2018-01-02 16:55 Andy奥 阅读(394) 评论(0) 推荐(0)
摘要:SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 首先,我们使用 test 数据库,新建 tx 表,并且如图所示打开两个窗口来操作同一个数据库: 第1级别:Read Uncommitt 阅读全文
posted @ 2018-01-02 16:38 Andy奥 阅读(10669) 评论(0) 推荐(0)