Redisson分布式锁 来自Githup官方文档的介绍: Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-MemoryDataGrid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet,Set,Multimap,SortedSet,Map,List,Queue,BlockingQueue,Deque,BlockingDeque,Semaphore,Lock,AtomicLong,CountDownLatch,Publish/Subscribe,Bloomfilter,Remoteservice,Springcache...

  YxtwFriVB9qe   2024年02月29日   36   0   0 Java

先讲一下为什么使用分布式锁: 在传统的单体应用中,我们可以使用Java并发处理相关的API(如ReentrantLock或synchronized)来实现对共享资源的互斥控制,确保在高并发情况下同一时间只有一个线程能够执行特定方法。然而,随着业务的发展,单体应用逐渐演化为分布式系统,多线程、多进程分布在不同机器上,这导致了原有的单机部署下的并发控制策略失效。为了解决这一问题,我们需要引入一种跨JVM的互斥机制来管理共享资源的访问,这就是分布式锁所要解决的核心问题。 Lua介绍 Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供...

  YxtwFriVB9qe   2024年02月27日   26   0   0 Java

CompletableFuture异步编排优化代码 我们在项目开发中,有可能遇到一个接口需要调用N个服务的接口。比如用户请求获取订单信息,需要调用用户信息、商品信息、物流信息等接口,最后再汇总数据统一返回。如果使用串行的方法按照顺序挨个调用接口,这样接口的响应的速度就很慢。如果并行调用接口,同时调用就会节省很多时间。下面就介绍一个好用的异步编排工具CompletableFuture 简介 CompletableFuture是Java8中新增的一个异步编程工具类,它是基于Future和CompletionStage接口构建的,可以与Java8中的StreamAPI配合使用,也能够与Java9中的...

  YxtwFriVB9qe   2023年11月02日   25   0   0 Java

双亲委派机制 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式 一.工作原理: 1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器;3)如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自已去加载,这就是双亲委...

  YxtwFriVB9qe   2023年11月01日   16   0   0 Java

JVM运行时数据区之堆空间 1.核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。堆区在JVM启动的时候即被创建,其空间大小也就确定了,是JVM管理的最大一块内存空间。 《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上。(Theheapistherun-timedataareafromwhichmemoryforallclassinstancesandarraysisallocated)我要说的是:“几乎”所有的对象实例都在这里分配内存。一从实际使用角度看的。 数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这...

  YxtwFriVB9qe   2023年11月01日   73   0   0 Java

二叉树(binarytree) 二叉树(BinaryTree)是一种常见的树状数据结构,它由一组节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树具有以下特点: 每个节点最多有两个子节点,分别称为左子节点和右子节点。 左子树和右子树也是二叉树,它们的结构与父节点类似。 二叉树的顺序不固定,可以是任意形状。 两种特殊形式 二叉树还有两种特殊形式,一个叫作满二叉树,另一个叫作完全二叉树 满二叉树 如果该二叉树的所有叶子节点都在最后一层,并且结点总数=2^n-1,n为层数,则我们称为满二又树。简单点说,满二叉树的每一个分支都是满的。 完全二叉树 对一个有n个节点的二叉树,...

  YxtwFriVB9qe   2023年11月01日   19   0   0 Java

二叉搜索树(BinarySearchTree,BST) 二叉搜索树(BinarySearchTree),也称二叉查找树或二叉排序树,是一种特殊的二叉树,它满足以下性质 对于二叉搜索树的每个节点 左子树中的所有节点的值都小于该节点的值 右子树中的所有节点的值都大于(或等于)该节点的值 对于二叉搜索树的任意节点,其左子树和右子树也是二叉搜索树。 由于这种特性,二叉搜索树可以支持高效地进行查找、插入和删除操作。对于查找操作,可以通过比较目标值与当前节点的值来决定向左子树还是右子树进行搜索。对于插入操作,可以按照比较结果找到合适的位置并插入新节点。对于删除操作,则需要按照一定规则来处理不同情况...

  YxtwFriVB9qe   2023年11月01日   42   0   0 Java

平衡二叉树(BalancedBinaryTree) 平衡二叉树是一种特殊的二叉搜索树,它具有以下特点: 每个节点的左子树和右子树的高度差不超过1。 所有的子树也都是平衡二叉树。 通过保持平衡性,平衡二叉树可以在最坏情况下仍然具有较好的性能,保证查找、插入和删除操作的时间复杂度为O(logn)。 平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等 为什么需要平衡二叉树 在普通的二叉搜索树中,如果插入或删除操作不经过特殊处理,很容易出现树的不平衡,使得树的高度变得很大,导致查找操作的效率下降。 平衡二叉树通过在每次插入或删除后调整树的结构,保持树的平衡性。这样可以确保树的...

  YxtwFriVB9qe   2023年11月01日   34   0   0 Java

Java实现常见查找算法 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 线性查找 线性查找(LinearSearch)是一种简单的查找算法,用于在数据集中逐一比较每个元素,直到找到目标元素或搜索完整个数据集。它适用于任何类型的数据集,无论是否有序,但在大型数据集上效率较低,因为它的时间复杂度是O(n),其中n是数据集的大小。 以下是线性查找的基本步骤: 从数据集的第一个元素开始,逐一遍历每个元素。 比较当前元素与目标元素是否相等。 如果相等,表示找到了目标元素,返回当前元素的索引位置。 如果不相等,继续遍历下一个元素。 如...

  YxtwFriVB9qe   2023年11月01日   19   0   0 Java

红黑树(RedBlackTree) 红黑树(RedBlackTree)是一种自平衡二叉查找树,是一种高效的查找树,学习之前先了解一下平衡二叉树。于1972年由RudolfBayer发明的对称二叉B树演化而来,并以2-3-4树、2-3树流行。最终在1978年由LeonidasJ.Guibas和RobertSedgewick从对称二叉B树中推导出红黑树。红黑树具有良好的效率,它可在O(logN)时间内完成查找、增加、删除等操作 建立在BST二叉搜索树的基础上,AVL、2-3树、红黑树都是自平衡二叉树,红黑树每个节点增加了一个存储位,用来记录节点的颜色,RED或者BLACK。但相比于AVL,高度平衡...

  YxtwFriVB9qe   2023年11月01日   39   0   0 算法与数据结构
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~