硬核剖析Java锁底层AQS源码,深入理解底层架构设计
我们常见的并发锁ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁。
上篇文章讲了AQS的加锁流程,这篇文章再一块看一下AQS具体源码实现。 ...
Java组合异步编程(2)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用CompletableFuture,就会具备一种神奇的能力:将同步变为异步(有点像用了月光宝盒后同时穿梭在好几个时空的感觉)。怎么做呢?来看看代码。 新增一个商店类Shop ...
java使用redis存储时出现乱码问题
今天用spring boot 做项目的时候,使用到了redis来做缓存。 然后在存入redis的时候遇到了乱码的问题,这个问题是出现在序列化上,但是这个问题很好解决,晚上的方法也很多。 因为 redis 是将数据存储在内存中的,在存入数据的时候需要对数据进行序列化的操作,问题就是出现在这里。 我们修 ...
dubbo 笔记
1. dubbo 是一款高性能的 java RPC (远程服务调用)框架。 2. RPC 框架的性能关键是“序列化”和“网络通信”,dubbo 采用二进制序列化、使用 Socket 而不是 Http 进行网络通信 3. dubbo 的架构 简单解释:服务提供者 、服务消费者 在注册中心进行注册,注册 ...
【深入浅出 Yarn 架构与实现】2-3 Yarn 基础库 - 服务库与事件库
一个庞大的分布式系统,各个组件间是如何协调工作的?组件是如何解耦的?线程运行如何更高效,减少阻塞带来的低效问题?本节将对 Yarn 的服务库和事件库进行介绍,看看 Yarn 是如何解决这些问题的。 ...
java :多线程实现的三种方式
一、并行、串行、并发 在了解java中多线程的三种实现方式之前,我们首先需要明白并行、串行、并发三个概念。 1.并行:多个CPU同时处理多个任务; 2.串行:单个CPU处理多个任务,当一个任务执行完成之后下一个任务才能够执行; 3.并发:单个CPU处理多个任务,每个任务都会被分一定的时间片,一个任务 ...
SpringCloud(九) - Nginx
1、安装Nginx 1.1 解压上传安装包 解压# nginx-1.16.1.tar.gz # nginx需要一些环境(全部执行,不存在的会执行,存在的会跳过) yum install -y wget yum install -y gcc-c++ yum install -y pcre pcre-d ...
Java中如何调用静态方法及非静态方法呢?
转自: http://www.java265.com/JavaJingYan/202206/16558183013797.html 静态方法: 我们将方法前面加上static的方法称之为静态方法 静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员(如果静态方法想调用非静态方法或者非 ...
每日一题算法
数字在升序数组中出现的次数 描述 给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数 解析 排序数组的查找问题首先考虑二分法 使用二分法找到左右边界的位置,然后长度一减即可 解题思路: 排序数组的查找问题首先考虑使用 二分法 解决,其可将 遍历法 的 线性级别 ...
Java异常
异常 一、异常:就是程序出现不正常的情况。 Throwable Error Exception RuntimeException 非RuntimeException Error:严重问题,不处理 Exception:异常类,程序本身可以处理 RuntimeException:编译期间不检查,程序出现 ...
Java代码块运行顺序细节阐述
以下这个例子非常好的阐述了父子类同时存在时静态代码块/静态变量初始化,普通代码块/普通成员变量初始化,构造器之间的具体运行顺序。 注意,在构造器开头,我们可以看作按顺序隐藏了以下两行关键执行步骤: super(); 普通代码块和普通属性的初始化... 具体例子如下,运行顺序在代码注释中以数字括号给出 ...
设计模式---责任链模式
简述 将各个功能拆分后分别封装(各功能解耦),需要时可自由组合(包括执行顺序) 话不多说,看个优化案例吧。 优化案例 最初版 以下是模拟客户端想服务端发送请求的业务流程。 客户端调用代码如下。 // 客户端 public class Client { public static void main( ...