java
坠入web坑的一枚小白
初学web,多多指教
展开
-
单例设计模式
单例设计模式 使用单例模式的好处: (1)对于频繁使用的对象,可以减轻不停的创建对象所花费的时间。(2)由于new的次数减少,从而降低了系统内存的使用频率,同时也减轻了GC的压力,缩短了GC的停顿时间。 单例模式的不同写法饿汉式public class Singleton{ private static Singleton instance=new S...原创 2018-01-26 17:02:50 · 460 阅读 · 0 评论 -
Master-Worker模式
定义 Master-worker是并行模式之一。它的核心思想是,系统两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任务,Worker进程负责处理子任务。当各个Worker进程将子任务处理完后,将结果返回给Master进程,由Master进程做归纳和汇总,从而得到子系统的最终结果。其处理过程如图一所示 ...原创 2018-12-19 21:07:28 · 622 阅读 · 0 评论 -
Future模式
定义 Future模式有点类似商品订单。比如说在网上进行购物,当你买了一件物品时,你就只需要在家里等待商品或者在此之间做其他的事情。将此类型推到程序中,当某一段程序提交了一个请求,期望得到一个答复。但非常不幸的是,服务程序的处理可能很慢。在传统单线程的环境下,调用函数是同步的,也就是说必须等到服务程序处理完后才能进行其他的操作。而在Future模式下,调用方式改为异步,而原先等待返回的时间段...原创 2018-06-17 16:00:02 · 487 阅读 · 0 评论 -
高并发学习养成计划3
阻塞队列和生产者-消费者模式该模式是将“找出需要完成的工作”与“执行工作”两个过程分离开来,并把工作放到“待完成”列表以便在随后处理,而不是找出后立即处理。生产者消费者模式能简化开发过程,因为它消除了生产者类和消费者类之间的代码依赖性,此外,该模式还将生产数据的过程与使用数据的过程解耦开来以简化工作负载的管理,因为这两个过程在处理数据的速率上有所不同。在某些情况下,需要调整生产者线程数量和消费...原创 2018-12-19 23:50:43 · 234 阅读 · 0 评论 -
高并发学习养成计划4
构建高效且可伸缩的结果缓存简单的缓存可能将性能瓶颈转变为可伸缩性瓶颈,即使缓存适用于提升单线程的性能 使用HashMap和同步机制来缓存初始化数据 Memoizer1是使用synchronized和HashMap构建的缓存,虽然将计算结果是保存在了map中,但是由于将所有线程给串行化了,所以并发量极差,程序的伸缩性及其不友好。甚至可能在某些情况下还不如不加缓存的性能高。所以...原创 2018-12-20 12:57:23 · 216 阅读 · 0 评论 -
高并发学习养成计划1
使用实例封闭的方式实现线程安全 将数据封装在对象的内部,可以将数据的访问限制在对象的方法上,从而更容易确保线程在访问数据时总能持有正确的值(我的理解是将数据封闭在对象或者某个线程的内部,不发布出去,使得其他线程不能够对该数据直接进行访问,从而保证数据对外部的安全性。封闭数据的另一个好处,在安全性出现问题时,也不需要去检查整个程序,只需要检查单个类就行了)。 简单的封闭例...原创 2018-12-17 23:31:01 · 407 阅读 · 0 评论 -
高并发学习养成计划5
在线程中执行任务围绕着任务执行来设计程序结构时,第一步就是要找出清晰的任务边界。在理想状态下各个任务之间是相互独立的;任务并不依赖余其他任务的状态、结果或边界效应。独立性有助于实现并发因为如果存在足够多的处理资源,那么这些任务都可以并行执行(个人理解:每个任务相互独立,没有影响。在处理资源足够多的情况下,能做到真正的并行执行。如果没有独立,可能某个线程执行到某一地方后再向下执行要等待其他线程的...原创 2018-12-24 14:14:52 · 196 阅读 · 0 评论 -
高并发学习养成计划2
同步容器类同步容器类的问题对于已经实现同步的容器类来说,这个类本身是安全的,然而在使用同步类的多个操作来进行一个混合操作,那么这个混合操作就会变得不安全了。所以要进行额外的加锁使其复合操作安全 迭代器与ConcurrentModificationException对容器类的标准迭代方式都是使用迭代器,迭代器采用的是一种“及时失败”的策略,这便意味着当容器在迭代过程中被修改,那么...原创 2018-12-19 00:42:56 · 419 阅读 · 0 评论