上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 在前面介绍了ForkJoinPool的骨架源码之后,我们来看看ForkJoinPool的核心组成。WorkQueue的源码。 一、类结构及其成员变量 1.1 类结构和注释 WorkQueue是ForkJoinPool的核心内部类,是一个Contented修饰的静态内部类。 /** * Queues 阅读全文
posted @ 2022-08-22 13:31 夏尔_717 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 在前文中介绍了如何使用ForkJoinPool和ForkJoin的一些基本原理。现在继续来分析ForkJoin,原本计划从源码开始分析。但是ForkJoinPool的源码太过复杂。后续得分好几部分来讲解。今天先做一个总体的介绍。 一、ForkJoinPool总体介绍 在java中运行ForkJoin 阅读全文
posted @ 2022-08-17 22:25 夏尔_717 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 一、简介 ForkJoinPool是自Java7开始,提供的一个用于并行执行的任务框架。广泛用在java8的parallelStream和CompletableFuture中。其主旨是将大任务分成若干小任务,之后再并行对这些小任务进行计算,最终汇总这些任务的结果,得到最终的结果。这个描述实际上比较接 阅读全文
posted @ 2022-08-14 23:47 夏尔_717 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 一、前言 经过60多年的发展,科学家和工程师们发明了很多排序算法,有基本的插入算法,也有相对高效的归并排序算法等,他们各有各的特点,比如归并排序性能稳定、堆排序空间消耗小等等。但是这些算法也有自己的局限性比如快速排序最坏情况和冒泡算法一样,归并排序需要消耗的空间最多,插入排序平均情况的时间复杂度太高 阅读全文
posted @ 2022-08-06 14:31 夏尔_717 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Sentinel Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网:https://github.com/alibaba/Sentinel/wiki 2012年,Sentinel诞生于阿里巴巴,其主要目标是流量控制。2013- 阅读全文
posted @ 2022-08-03 23:54 夏尔_717 阅读(116) 评论(0) 推荐(0) 编辑
摘要: API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接 阅读全文
posted @ 2022-08-01 00:03 夏尔_717 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 一、概述 Feign是声明式Web服务客户端,它使编写Web服务客户端更加容易。 Feign不做任何请求处理,通过处理注解相关信息生成Request,并对调用返回的数据进行解码,从而实现简化HTTP API的开发。 如果要使用Feign,需要创建一个接口并对其添加Feign相关注解,另外Feign还 阅读全文
posted @ 2022-08-01 00:03 夏尔_717 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一、前言 Redis与MySQL双写一致性如何保证? 这问题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的? 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实 阅读全文
posted @ 2022-08-01 00:02 夏尔_717 阅读(810) 评论(0) 推荐(1) 编辑
摘要: `MySQL`是当今最通用的数据库软件之一,也是大部分人接触最多,时间最长的数据库软件之一。深入了解`MySQL`的架构和设计对于`DBA`,研发和运维都非常重要,能够帮助我们在日常工作中更好地理解和运用`MySQL`。 * `SQL`语句在数据库底层的执行过程? * `MySQL`底层数据存储结构 阅读全文
posted @ 2022-07-29 18:59 夏尔_717 阅读(165) 评论(0) 推荐(0) 编辑
摘要: Redis的内存用完了会发生什么? 如果达到设置的上限(默认noeviction)时,Redis的写命令会返回oom错误信息(读命令还可以正常返回)。 redis.exceptions.ResponseError, OOM command not allowed when used memory > 阅读全文
posted @ 2022-07-15 21:38 夏尔_717 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一、概述 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。 Redis提供了一系 阅读全文
posted @ 2022-07-15 14:48 夏尔_717 阅读(813) 评论(0) 推荐(4) 编辑
摘要: Redis提供了丰富的数据类型,常见的有五种:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。 随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stre 阅读全文
posted @ 2022-07-10 21:50 夏尔_717 阅读(482) 评论(2) 推荐(1) 编辑
摘要: # 一、简介 在本文中,我们来看看[Caffeine](https://github.com/ben-manes/caffeine) — 一个高性能的Java缓存库。 `Caffeine`的底层数据存储采用`ConcurrentHashMap`。因为`Caffeine`面向`JDK8`,在`JDK8 阅读全文
posted @ 2022-07-09 20:33 夏尔_717 阅读(2767) 评论(0) 推荐(1) 编辑
摘要: 归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。 一、基本思想 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序 阅读全文
posted @ 2022-07-04 20:28 夏尔_717 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine),排序器每次只能看到一个列。它是基于元素值的每个位上的字符来排序的。对于数字而言就是分别基于个位,十位,百位或千位等等数字来排序。 基数排序(Radix sort)是一种非比较型整数排序算法,其原 阅读全文
posted @ 2022-07-04 20:27 夏尔_717 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 一、算法思想 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量 使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中 同时,对于桶中元素的排序,选择何种比较排序算法 阅读全文
posted @ 2022-07-04 18:08 夏尔_717 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 优化接口性能对每个后端开发来说见惯不惯了,也是一项必备的技能,因为我们平时开发中都会对外提供接口,性能差的话,功能多少会有影响。另外接口性能算是一个跟开发语言无关的公共问题,该问题既简单又复杂。 一般导致接口性能问题的原因不尽相同,项目功能不同的接口,导致接口出现性能问题的原因可能也不一样,要根据场 阅读全文
posted @ 2022-07-02 20:05 夏尔_717 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 第一个突破O(n^2)的排序算法;是简单插入排序的改进版;它与插入排序的不同之处在于,它会优先比较距离较远的元素。 希尔排序(Shell Sort),也称递减增量排序算法,1959年Shell发明。是插入排序的一种高速而稳定的改进版本。 希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直 阅读全文
posted @ 2022-07-01 00:05 夏尔_717 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd) 和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法(Heap Sort). 堆的定义如下:$n$个元素的序列${k_1,k_2,···,k_n}$当且仅当满足下关系时,称 阅读全文
posted @ 2022-07-01 00:05 夏尔_717 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 一、基本思想 计数排序的特征当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比 阅读全文
posted @ 2022-07-01 00:05 夏尔_717 阅读(91) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页