上一页 1 2 3 4 5 6 7 ··· 22 下一页
摘要: 前面我们已经提到单个服务器再优化,它的处理能力都是有上限的,因此我们选择多扩容以及使用缓存和消息队列等对程序进行优化。 下面介绍另一种方法,随着项目需求完成越来越多,应用自然也会越来越大,架构师将一个应用整体拆分成多个应用。 拆分的原则: 1.业务优先,确定业务边界 2.循序渐进,边拆分边测试 3. 阅读全文
posted @ 2018-07-07 21:37 开拖拉机的蜡笔小新 阅读(1207) 评论(0) 推荐(0) 编辑
摘要: 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 消息被处理的过程相当于流程A被处理。我们这里以一个实际的模型来讨论下,比如用户下单成功时给用户发短信,如果没有这个消息队列,我们会选择同步调用发短信的接 阅读全文
posted @ 2018-07-07 20:31 开拖拉机的蜡笔小新 阅读(8102) 评论(0) 推荐(0) 编辑
摘要: 应用需要支撑大量并发量,但数据库的性能有限,所以使用缓存来减少数据库压力与提高访问性能。 、 缓存的使用可以出现在1到4的各个环节中,每个环节的方案他们都各有特点。 特征 命中率 = 命中数 / (命中数 + 没有命中数) 最大空间:缓存最大空间一旦缓存中元素数量超过这个值(或者缓存数据所占空间超过 阅读全文
posted @ 2018-07-07 16:43 开拖拉机的蜡笔小新 阅读(2313) 评论(0) 推荐(3) 编辑
摘要: 什么是扩容, 什么时候要扩容? 了解Java 内存结构的伙伴应该都知道 , 每个线程都有自己的工作内存, 占用内存大小取决于工作内存里变量的多少与大小 , 单个线程占用内存通常不会很大, 但是随着并发的线程不断的增加 , 从成百上千, 甚至几十万 , 占用的内存就会越来越多.这时候可能就要考虑给系统 阅读全文
posted @ 2018-07-07 15:06 开拖拉机的蜡笔小新 阅读(1084) 评论(0) 推荐(0) 编辑
摘要: 1.你了解的各种锁? 偏向锁、轻量级锁、重量级锁 简单说下先偏向锁、轻量级锁、重量级锁三者各自的应用场景: 偏向锁:只有一个线程进入临界区; 轻量级锁:多个线程交替进入临界区; 重量级锁:多个线程同时进入临界区。 偏向锁 在没有实际竞争的情况下,还能够针对部分场景继续优化。如果不仅仅没有实际竞争,自 阅读全文
posted @ 2018-07-07 14:34 开拖拉机的蜡笔小新 阅读(403) 评论(0) 推荐(0) 编辑
摘要: (1)HashMap的线程不安全原因一:死循环 原因在于HashMap在多线程情况下,执行resize()进行扩容时容易造成死循环。 扩容思路为它要创建一个大小为原来两倍的数组,保证新的容量仍为2的N次方,从而保证上述寻址方式仍然适用。扩容后将原来的数组从新插入到新的数组中。这个过程称为reHash 阅读全文
posted @ 2018-07-07 12:32 开拖拉机的蜡笔小新 阅读(2797) 评论(0) 推荐(1) 编辑
摘要: Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”。但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码。Spring对每个bean提供了一个scope属性来表示该bean的作用域。它是bean的生命周期。例如,一个scope为sing 阅读全文
posted @ 2018-07-07 11:20 开拖拉机的蜡笔小新 阅读(733) 评论(0) 推荐(1) 编辑
摘要: 1. 使用本地变量 应该总是使用本地变量,而不是创建一个类或实例变量,通常情况下,开发人员使用对象实例作为变量可以节省内存并可以重用,因为他们认为每次在方法中创建本地变量会消耗很多内存。 2.使用不可变类 不可变类比如String Integer等一旦创建,不再改变,不可变类可以降低代码中需要的同步 阅读全文
posted @ 2018-07-07 10:23 开拖拉机的蜡笔小新 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 什么是死锁? 通俗的说,死锁就是两个或者多个线程,相互占用对方需要的资源,而都不进行释放,导致彼此之间都相互等待对方释放资源,产生了无限制等待的现象。死锁一旦发生,如果没有外力介入,这种等待将永远存在,从而对程序产生严重影响。 死锁产生的必要条件 互斥条件:进程对锁分配的资源进行排他性使用 请求和保 阅读全文
posted @ 2018-07-07 10:07 开拖拉机的蜡笔小新 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 继承Thread的弊端 1.每次new Thread的时候都需要新建一个线程,性能差 2.线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或者OOM 3.Thread类缺少更多功能,比如更多的执行、定期执行、线程中断。 线程池的好处 1.重用存在的线程,减少对象创建、 阅读全文
posted @ 2018-07-07 09:37 开拖拉机的蜡笔小新 阅读(368) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 22 下一页