摘要:
ForkJoin线程池框架回顾 ForkJoin框架其实就是一个线程池ExecutorService的实现,通过工作窃取(work-stealing)算法,获取其他线程中未完成的任务来执行。 可以充分利用机器的多处理器优势,利用空闲的线程去并行快速完成一个可拆分为小任务的大任务,类似于分治算法。 F 阅读全文
摘要:
Guava包中限流实现分析 RateLimiter 之前的文章中已经介绍了常用的限流算法,而google在Java领域中使用Guava包中的限流工具进行服务限流。 回顾使用案例 Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法实现流量限制,使用十分方便。 @ 阅读全文
摘要:
限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理 限流一词常用于计算机网络之中,定义如下: In computer networks, rate limiting is used to control 阅读全文
摘要:
不提XXLJOB或者其他的调度框架,就看我接触的第一个任务调度框架Quartz(温故而知新) Quartz的动态暂停 恢复 修改和删除任务 实现动态添加定时任务,先来看一下我们初步要实现的目标效果图,这里我们只在内存中操作,并没有把quartz的任何信息保存到数据库,即使用的是RAMJobStore 阅读全文
摘要:
并发编程的三剑客 在开发高并发系统时有三剑客:缓存、降级和限流。 缓存 缓存的目的是提升系统访问速度和增大系统处理容量。 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。 限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来 阅读全文
摘要:
MySQL的主从复制 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的。 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步。 复制的功能不仅有利于构建高性能应用,同时也是高可用、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。 通过MySQL的主从复 阅读全文
摘要:
Jenkins基础介绍篇 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 通过Jenkins实现自动化部署项目,本地git提交代码Jenkins自动化将项目部署在Linux服务器。 Jenki 阅读全文
摘要:
承接上文 (完结撒花1-52系列)☕【JVM技术指南】「JVM总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】 并行收集器 并行收集器(也称为吞吐量收集器)是类似于串行收集器的分代收集器。 串行和并行收集器之间的主要区别是,并行收集器有多个线程,用于加速垃圾回收。 通过命令行选项 阅读全文
摘要:
优化目标与策略(Ergonomics) 垃圾回收器、堆和运行时编译器默认选择 G1(Garbage First)收集器 GC线程的最大值受限于堆大小和可用的CPU资源 初始堆空间(Xms)为物理内存的1/64 最大堆空间(Xmx)为物理内存的1/4 分层编译器,同时使用C1和C2 可以将 Java 阅读全文
摘要:
前提概要 在开发过程中在使用多线程进行并行处理一些事情的时候,大部分场景在处理多线程并行执行任务的时候,可以通过List添加Future来获取执行结果,有时候我们是不需要获取任务的执行结果的,方便后面引出ExecutorCompletionService。 CompletionService的介绍 阅读全文
摘要:
前提概要 简单回顾 jdk 里的队列: 阻塞队列: ArrayBlockingQueue主要通过:数组(Object[])+ 计数器(count)+ ReetrantLock的Condition (notEmpty:非空、notFull:非饱和)进行阻塞。 入队操作: 操作不阻塞: add:添加失败 阅读全文
摘要:
前提概述 Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成: 算法原理介绍 相信大家此前或多或少有了解到ForkJoin框架,ForkJoin框架 阅读全文
摘要:
前言介绍 了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容。 基本原理 Eureka Server 阅读全文
摘要:
前提概要 针对于后端开发者而言的,作为报表的导入和导出是一个很基础且有很棘手的问题!之前常用的工具和方案大概有这么几种: JXL(Java Excel API 工具服务),此种只支持xls的文件格式,而且对于内存的管理特别的差,现在基本不用了! 目前大多数会操作Excel工具服务或者解析都是利用Ap 阅读全文
摘要:
前提介绍 本章主要介绍相关线程声明周期的转换机制以及声明周期的流转关系以及相关AQS的实现和相关的基本原理,配合这相关官方文档的中英文互译的介绍。 线程状态流转及生命周期 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪 阅读全文