04 2016 档案

摘要:大型网站架构系列:电商网站架构案例设计思路请参见:http://my.oschina.net/xianggao/blog/637807 阅读全文
posted @ 2016-04-28 22:10 moonandstar08 阅读(395) 评论(0) 推荐(0) 编辑
摘要:大型网站架构之负载均衡可以参见:http://my.oschina.net/xianggao/blog/639038 负载均衡常见算法如下: 一.轮循(Round Robin) 这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该 阅读全文
posted @ 2016-04-28 22:08 moonandstar08 阅读(599) 评论(0) 推荐(1) 编辑
摘要:网络通信高性能的三个主题: 1) 传输:用什么样的通道将数据发送给对方,BIO、NIO或者AIO,IO模型在很大程度上决定了框架的性能; 2) 协议:采用什么样的通信协议,HTTP或者内部私有协议。协议的选择不同,性能模型也不同。相比于公有协议,内部私有协议的性能通常可以被设计的更优; 3) 线程: 阅读全文
posted @ 2016-04-28 21:56 moonandstar08 阅读(429) 评论(0) 推荐(0) 编辑
摘要:关于volatile变量的使用,由于使用得比较多,后面如果需要温习的话可以参考:http://www.infoq.com/cn/articles/java-memory-model-4 阅读全文
posted @ 2016-04-28 21:50 moonandstar08 阅读(217) 评论(0) 推荐(0) 编辑
摘要:任何应用都有一个设计指标,当应用的压力超过了他设计所能承载的能力时,就好比一座只允许行人通过的独木桥,是无法承载一辆坦克的重量的,这个时候,为了让机器能够继续运行,在不宕机的情况下尽其所能的对一部分用户提供服务,保证整个流程能够继续走下去,这个时候,就必须对应用进行流控,丢弃一部分用户的请无法避免。 阅读全文
posted @ 2016-04-27 21:55 moonandstar08 阅读(3500) 评论(0) 推荐(0) 编辑
摘要:分布式设计与开发相关链接请参见:http://my.oschina.net/xianggao/blog/540921?fromerr=VEb9UXRQ http://www.cnblogs.com/my_life/articles/5163740.html 阅读全文
posted @ 2016-04-18 21:54 moonandstar08 阅读(384) 评论(0) 推荐(0) 编辑
摘要:一、分布式算法 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法. 典型的 阅读全文
posted @ 2016-04-18 21:37 moonandstar08 阅读(32612) 评论(5) 推荐(9) 编辑
摘要:大型网站设计之负载均衡:http://blog.csdn.net/chaofanwei/article/details/28386363 阅读全文
posted @ 2016-04-17 16:07 moonandstar08 阅读(332) 评论(0) 推荐(0) 编辑
摘要:按照java内存的结构,发生内存溢出的地方常在于堆、栈、方法区、直接内存。 一、堆溢出 堆溢出原因莫过于对象太多导致,看代码: 二、栈溢出 根据JAVA虚拟机规范描述:如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError 如果虚拟机在扩展栈时无法申请到足够的内存 阅读全文
posted @ 2016-04-17 15:31 moonandstar08 阅读(1153) 评论(0) 推荐(0) 编辑
摘要:一、同步容器 主要代表有Vector和Hashtable,以及Collections.synchronizedXxx等。 锁的粒度为当前对象整体。 迭代器是及时失败的,即在迭代的过程中发现被修改,就会抛出ConcurrentModificationException。 二、并发容器 主要代表有Con 阅读全文
posted @ 2016-04-17 15:21 moonandstar08 阅读(834) 评论(0) 推荐(1) 编辑
摘要:在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。 从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提 阅读全文
posted @ 2016-04-17 14:57 moonandstar08 阅读(298) 评论(0) 推荐(0) 编辑
摘要:1、堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5 阅读全文
posted @ 2016-04-17 10:39 moonandstar08 阅读(541) 评论(0) 推荐(0) 编辑
摘要:之前曾经有讲过在heap size<=3G的情况下完全不要考虑CMS GC,在heap size>3G的情况下也优先选择ParallelOldGC,而不是CMS GC,只有在暂停时间无法接受的情况下才考虑CMS GC(不过当然,一般来说在heap size>8G后基本上都得选择CMS GC,否则那暂 阅读全文
posted @ 2016-04-17 10:24 moonandstar08 阅读(518) 评论(0) 推荐(0) 编辑
摘要:Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳。 一、通过SCN恢复删除且已提交的数据 1、获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的scn号为:1499223 2、查询当前sc 阅读全文
posted @ 2016-04-17 10:18 moonandstar08 阅读(279) 评论(0) 推荐(0) 编辑
摘要:一、CyclicBarrier使用 new Thread().start(); new Thread(new Runnable() {},"XXX").start(); 输出结果如下: 二、CountDownLatch使用 输出结果如下: 阅读全文
posted @ 2016-04-17 09:37 moonandstar08 阅读(244) 评论(0) 推荐(0) 编辑
摘要:1、查找最新jar包地址:http://search.maven.org 2、jar包之间依赖:http://mvnrepository.com 3、学习网站:http://www.hollischuang.com/ 4、架构视频讲解:http://opentalk.upyun.com/show/i 阅读全文
posted @ 2016-04-17 09:06 moonandstar08 阅读(145) 评论(0) 推荐(0) 编辑
摘要:今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3? 代码如下: 看了问题后,得出了以下几个问题: 如果在 try 语句块里使用 return 语句,那么 finally 语句块还会执行吗?(如果你的答案是不会执行,请务必要看下去 ^_^) 如果执行, 阅读全文
posted @ 2016-04-13 22:09 moonandstar08 阅读(236) 评论(0) 推荐(0) 编辑
摘要:使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对:$.post(url, "name=aty&age=25")和$.post(url, {"name":"aty","age":25})。 显然,使用json的方式比使用字符串拼接要方便。对于后台 阅读全文
posted @ 2016-04-13 21:59 moonandstar08 阅读(7845) 评论(0) 推荐(0) 编辑
摘要:第一种(懒汉,线程不安全): 第二种(懒汉,线程安全): 这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。 第三种(饿汉): 这种方式基于classloader机制,在深度分析Java的ClassLoader机制( 阅读全文
posted @ 2016-04-13 21:55 moonandstar08 阅读(324) 评论(0) 推荐(0) 编辑
摘要:在开发过程中,经常会碰到需要利用定时器来完成一些特定的任务. 针对定时器的总结可以参考如下链接:https://yq.aliyun.com/articles/2368?spm=5176.100239.yqblog1.10.ZVwVBe 阅读全文
posted @ 2016-04-13 21:09 moonandstar08 阅读(259) 评论(0) 推荐(0) 编辑
摘要:public class PrintMain { public static String obj1="obj1"; public static String obj2="obj2"; public static void main(String[] args) { new Thread(new Runnable() { public void run... 阅读全文
posted @ 2016-04-12 23:26 moonandstar08 阅读(425) 评论(0) 推荐(0) 编辑
摘要:Spring容器中的bean具备不同的scope,最开始只有singleton和prototype,但是在2.0之后,又引入了三种类型:request、session和global session,不过这三种类型只能在Web应用中使用。 在定义bean的时候,可以通过指定<bean>的singlet 阅读全文
posted @ 2016-04-12 23:03 moonandstar08 阅读(227) 评论(0) 推荐(0) 编辑
摘要:相应运行结果如下: 阅读全文
posted @ 2016-04-12 22:51 moonandstar08 阅读(5385) 评论(0) 推荐(0) 编辑
摘要:在介绍之前,先抛几个问题。 如果你都都能很明确的答上来了,说明你已经完全懂Thread.interrupt,可以不用往下看那了。 那如果不清楚的,带着这几个问题,一起来梳理下。 Thread的interrupt处理的几个方法: public void interrupt() : 执行线程interr 阅读全文
posted @ 2016-04-12 22:43 moonandstar08 阅读(872) 评论(0) 推荐(0) 编辑
摘要:由于数据量的巨大,大部分Web应用都需要部署很多个数据库实例。这样,有些用户操作就可能需要去修改多个数据库实例中的数据。传统的解决方法是使用分布式事务保证数据的全局一致性,经典的方法是使用两阶段提交协议。 长期以来,分布式事务提供的优雅的全局ACID保证麻醉了应用开发者的心灵,很多人都不敢越雷池一步 阅读全文
posted @ 2016-04-12 22:17 moonandstar08 阅读(1358) 评论(0) 推荐(0) 编辑
摘要:一、传统的分布式事务模型 关于分布式事务,有一个被大家广泛接受的分布式处理模型:X/Open DTP模型。 该模型主要由4个组件构成:应用程序(Application Program)[AP]、资源管理器(Resource Manager)[RM]、事务管理器(Transaction Manager 阅读全文
posted @ 2016-04-10 14:41 moonandstar08 阅读(986) 评论(0) 推荐(0) 编辑
摘要:一、三种事务模型 1、本地事务模型:开发人员不用知道事务的存在,事务全部交给数据库来管理,数据库自己决定什么时候提交或回滚,所以数据库是事务的管理者。 2、编程式事务模型:事务的提交和回滚操作完全交给开发人员,开发人员来决定事务什么时候提交或回滚,所以开发人员是事务的管理者。 3、声明式事务模型:开 阅读全文
posted @ 2016-04-10 13:53 moonandstar08 阅读(599) 评论(0) 推荐(0) 编辑
摘要:原文链接,请参见:http://weibo.com/ttarticle/p/show?id=2309403952892003376258 数据库高可用性难题 数据库的数据一致和持续可用对电子商务和互联网金融的意义不言而喻,而这些业务在使用数据库时,无论 MySQL 还是 Oracle,都会面临一个艰 阅读全文
posted @ 2016-04-10 10:23 moonandstar08 阅读(2467) 评论(0) 推荐(0) 编辑
摘要:在并发编程中我们有时候需要使用线程安全的队列。要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。 使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,其中阻塞队列的典型是:BlockingQueue; 非阻塞的实现方式 阅读全文
posted @ 2016-04-10 09:31 moonandstar08 阅读(790) 评论(0) 推荐(0) 编辑
摘要:使用线程池与不使用线程池的差别 先来看一下使用线程池与不适应线程池的差别,第一段代码是使用线程池的: 接着是不使用线程池的: 运行一下,我这里第一段代码使用了线程池的时间是194ms,第二段代码不使用线程池的时间是2043ms。这里默认的线程池中的线程数是100,如果把这个数量减小,虽然系统的处理数 阅读全文
posted @ 2016-04-07 22:52 moonandstar08 阅读(276) 评论(0) 推荐(0) 编辑
摘要:Spring应用的几种事务处理机制 Java Transaction API和XA协议是Spring常用的分布式事务机制,不过你可以选择选择其他的实现方式。理想的实现取决于你的应用程序使用何种资源,你愿意在性能、安全、系统稳健性、数据完整方面做出何种权衡。在这次JavaWorld大会上,来自Spri 阅读全文
posted @ 2016-04-07 22:34 moonandstar08 阅读(1766) 评论(0) 推荐(0) 编辑
摘要:架构演进,请参见:http://www.csdn.net/article/2015-10-24/2826028 http://blog.dataman-inc.com/untitled-10/ 阅读全文
posted @ 2016-04-07 21:52 moonandstar08 阅读(323) 评论(0) 推荐(0) 编辑
摘要:一. 缓存穿透 (请求数据缓存大量不命中) 缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 例如:下图是一个比较典型的cache-storage架构,cache(例如 阅读全文
posted @ 2016-04-07 21:18 moonandstar08 阅读(5956) 评论(1) 推荐(3) 编辑
摘要:MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要,新手往往在出现主从同步错误的时候不知道如何入手,这篇文章就是根据自己的经验来详细叙述mysql主从的管理。 MYSQL主从同步的作用 (1) 数据分布 (2) 负载平衡(load b 阅读全文
posted @ 2016-04-06 22:43 moonandstar08 阅读(270) 评论(0) 推荐(0) 编辑
摘要:一、问题产生背景 在使用分布式对数据进行存储时,经常会碰到需要新增节点来满足业务快速增长的需求。然而在新增节点时,如果处理不善会导致所有的数据重新分片,这对于某些系统来说可能是灾难性的。 那么是否有可行的方法,在数据重分片时,只需要迁移与之关联的节点而不需要迁移整个数据呢?当然有,在这种情况下我们可 阅读全文
posted @ 2016-04-06 22:28 moonandstar08 阅读(2830) 评论(0) 推荐(1) 编辑
摘要:生产者、消费者模型 方式一:以LinkedBlockingQueue阻塞队列的方式来进行存储 方式二:以ArrayBlockingQueue有界阻塞队列的方式来存储 方式三:以wait/notify方式进行处理 关于生产者、消费者模型可以参考:http://blog.csdn.net/monkey_ 阅读全文
posted @ 2016-04-06 21:27 moonandstar08 阅读(416) 评论(0) 推荐(0) 编辑
摘要:关于ThreadLocal的使用请参见:http://ifeve.com/java-theadlocal/ 阅读全文
posted @ 2016-04-06 21:22 moonandstar08 阅读(274) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示