上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: 一、阻塞队列的由来 我们假设一种场景,生产者一直生产资源,消费者一直消费资源,资源存储在一个缓冲池中,生产者将生产的资源存进缓冲池中,消费者从缓冲池中拿到资源进行消费,这就是大名鼎鼎的生产者-消费者模式。 该模式能够简化开发过程,一方面消除了生产者类与消费者类之间的代码依赖性,另一方面将生产数据的过 阅读全文
posted @ 2020-11-03 20:05 jingdy 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要使用线程池 使用线程池主要有以下三个原因: 创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程。 控制并发的数量。并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃。(主要原因) 可以对线程做统一管理。 二、线程池的原理 Java中的线程池顶层接口是Executor接口,T 阅读全文
posted @ 2020-11-03 17:10 jingdy 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 一、AQS简介 AQS是AbstractQueuedSynchronizer的简称,即抽象队列同步器,从字面意思上理解: 抽象:抽象类,只实现一些主要逻辑,有些方法由子类实现; 队列:使用先进先出(FIFO)队列存储数据; 同步:实现了同步的功能。 那AQS有什么用呢?AQS是一个用来构建锁和同步器 阅读全文
posted @ 2020-11-03 16:53 jingdy 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 一、乐观锁与悲观锁的概念 锁可以从不同的角度分类。其中,乐观锁和悲观锁是一种分类方式。 悲观锁:悲观锁就是我们常说的锁。对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界区的程序同一时间只能有一个线程在执行。 乐观锁:乐观锁又称为“无锁”,顾名思义,它是 阅读全文
posted @ 2020-11-03 16:17 jingdy 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 首先需要明确的一点是:Java多线程的锁都是基于对象的,Java中的每一个对象都可以作为一个锁。还有一点需要注意的是,我们常听到的类锁其实也是对象锁。Java类只有一个Class对象(可以有多个实例对象,多个实例共享这个Class对象),而Class对象也是特殊的Java对象。所以我们常说的类锁,其 阅读全文
posted @ 2020-11-03 14:49 jingdy 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 一、几个基本概念 在介绍volatile之前,我们先回顾及介绍几个基本的概念。 1.1、内存可见性 在Java内存模型那一章我们介绍了JMM有一个主内存,每个线程有自己私有的工作内存,工作内存中保存了一些变量在主内存的拷贝。内存可见性,指的是线程之间的可见性,当一个线程修改了共享变量时,另一个线程可 阅读全文
posted @ 2020-11-03 14:08 jingdy 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 一、什么是重排序? 计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。 为什么指令重排序可以提高性能? 现在的CPU一般采用流水线来执行指令。简单地说,每一个指令都会包含多个步骤,每个步骤可能使用不同的硬件。因此,流水线技术产生了,流水线是并行的,多个指令可以同时处于同一个阶段, 阅读全文
posted @ 2020-11-03 11:27 jingdy 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 一、并发编程模型 并发编程模型的两个关键问题 线程间如何通信?即:线程之间以何种机制来交换信息 线程间如何同步?即:线程以何种机制来控制不同线程间操作发生的相对顺序 有两种并发模型可以解决这两个问题: 消息传递并发模型 共享内存并发模型 这两种模型之间的区别如下表所示: 如何通信如何同步 消息传递并 阅读全文
posted @ 2020-11-02 17:08 jingdy 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 合理的使用Java多线程可以更好地利用服务器资源。一般来讲,线程内部有自己私有的线程上下文,互不干扰。但是当我们需要多个线程之间相互协作的时候,就需要我们掌握Java线程的通信方式。下面将介绍Java线程之间的几种通信原理。 一、锁与同步 在Java中,锁的概念都是基于对象的,所以我们又经常称它为对 阅读全文
posted @ 2020-11-02 11:45 jingdy 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 一、操作系统中的线程状态转换 首先我们来看看操作系统中的线程状态转换。在现在的操作系统中,线程是被视为轻量级进程的,所以操作系统线程的状态其实和操作系统进程的状态是一致的。 操作系统线程主要有以下三个状态: 就绪状态(ready):线程正在等待使用CPU,经调度程序调用之后可进入running状态。 阅读全文
posted @ 2020-10-30 16:30 jingdy 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 一、线程组(ThreadGroup) Java中用ThreadGroup来表示线程组,我们可以使用线程组对线程进行批量控制。 ThreadGroup和Thread的关系就如同他们的字面意思一样简单粗暴,每个Thread必然存在于一个ThreadGroup中,Thread不能独立于ThreadGrou 阅读全文
posted @ 2020-10-30 16:12 jingdy 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 一、Thread类和Runnable接口 首先,我们需要有一个“线程”类。JDK提供了Thread类和Runnable接口来让我们实现自己的“线程”类。 继承Thread类,并重写run方法; 实现Runnable接口的run方法; 1.1、继承Thread类 首先是继承Thread类 public 阅读全文
posted @ 2020-10-30 15:20 jingdy 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 进程和线程的区别? 进程:是指运行中的应用程序,CPU进行分配资源的基本单位。 线程:是指进程中的一个执行流程,有时也成为执行场景。资源调度的基本单位,CPU执行的基本单位。 进程是一个个独立的运行环境,线程是在进程中执行的一个任务。他们两个本质区别是是否单独占有内存地址空间及其它系统资源。 一、进 阅读全文
posted @ 2020-10-30 14:49 jingdy 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 发送消息,也应该只发一次,同样的短 阅读全文
posted @ 2020-10-30 10:35 jingdy 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 一、发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。 2、但是随着交互式W 阅读全文
posted @ 2020-10-29 17:38 jingdy 阅读(1003) 评论(0) 推荐(1) 编辑
摘要: RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA是目前 阅读全文
posted @ 2020-10-29 16:33 jingdy 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 签名是为了让请求合法,共分为五步 第一步:请求参数 请求参数包括系统参数和业务参数,不要遗漏 请求参数中不允许出现以Signature为key的参数。参考代码如下 String accessKeyId = “testId”; String accessSecret = “testSecret”; S 阅读全文
posted @ 2020-10-29 16:26 jingdy 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 什么是内部类:定义在类中的类 一、内部类的作用 我们为什么需要内部类?或者说内部类为啥要存在?其主要原因有如下几点: 内部类方法可以访问该类定义所在作用域中的数据,包括被 private 修饰的私有数据 内部类可以对同一包中的其他类隐藏起来 内部类可以解决 java 单继承的缺陷 当我们想要定义一个 阅读全文
posted @ 2020-10-29 15:58 jingdy 阅读(153) 评论(0) 推荐(0) 编辑
摘要: Spring认为所有的组件都应该放在Spring容器中,容器中的组件通过容器自动装配(DI)。控制反转是通过依赖注入实现的。所谓依赖注入指的是容器负责创建和维护对象之间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。 依赖注入的主要目的是为了解耦,提现了一种“组合”的理念。而不是继承。 阅读全文
posted @ 2020-10-29 14:43 jingdy 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一、Lambda 1.1、匿名函数 Lambda是一个匿名函数,可以理解为一段可以传递的代码(将代码像数据一样传递);可以写出更简洁、更灵活的代码;作为一种更紧凑的代码风格,是Java语言表达能力得到提升。 之前我们需要使用某个接口,需要通过实现接口,重写需要实现的功能,有了lambda后,省去了实 阅读全文
posted @ 2020-10-27 19:14 jingdy 阅读(301) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页