摘要:
1、前言 Selector一般称为选择器,也可以翻译为多路复用器,是Java NIO核心组件之一,主要功能是用于检查一个或者多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个Channel(通道),当然也可以管理多个网络连接。使用Selector的好处在于,可以使 阅读全文
摘要:
1、前言 Java EE下用Spring boot框架后,开始面向注解编程,可以说Spring boot就是建立在注解之上。那么什么是注解呢? Java 注解(Annotation)又称 Java 标注,是JDK5.0引入的一种注释机制。 注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据 阅读全文
摘要:
1、什么是回调 设想一个情景,A是处理业务的一个步骤,A需要解决一个问题,这时候A可以问B,让B来告诉A答案,这期间,A可以继续做自己的事情,而不用因为B做的事而阻塞。于是,我们想到给B设置一个线程,让B去处理耗时的操作,然后处理完之后把结果告诉A。所以这个问题的要点就在于B处理完之后如何把结果告诉 阅读全文
摘要:
1、定义 乐观锁和悲观锁其实是两种思想,用于解决并发场景下的数据竞争问题。 悲观锁:常用的锁基本上都是悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转 阅读全文
摘要:
1、前言 在日常的开发中,一般都是直接new一个Thread对象来执行某个任务。这种方式在任务数较少的情况下比较简单实用,但是在并发量较大的场景中却有着致命的缺陷。例如在访问量巨大的网站中,如果每个请求都开启一个线程来处理的话,即使是再强大的服务器也支撑不住。CPU资源是有限的,在CPU较为空闲的情 阅读全文
摘要:
1、前言 计算机的硬件组成可以抽象为由总线、IO设备、主存、处理器(CPU)等组成。其中数据存放在主存中,CPU负责指令的执行,CPU的指令执行非常快,大部分简单指令的执行只需要一个时钟周期,而一次主内存数据的读取则需要几十到几百个时钟周期,那么CPU从主存中读写数据就会有很大的延迟。这个时候就产生 阅读全文
摘要:
1、事务提交与回滚 start transaction; …… #一条或多条sql语句 commit; 其中start transaction标识事务开始,commit提交事务,将执行结果写入到数据库。如果sql语句执行出现问题,会调用rollback,回滚所有已经执行成功的sql语句。当然,也可以 阅读全文
摘要:
1、前提 通道式(Channel)是java.nio的第二个主要创新。通道既不是一个扩展也不是一项增强,而是全新的、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。通常情况下,通道与操作系统的文 阅读全文
摘要:
1、前言 NIO中的两个核心对象是缓冲区和通道,缓冲区对象本质上是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如果我们使用get()方法从缓冲区获取数据或者使用put()方法把数据写入缓冲区,都会引起缓冲区状态的变化。 一个缓冲区对象是固定数量的数据的容器,其作用是 阅读全文
摘要:
1、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。NIO和IO的主要区别:IO是面向流的 阅读全文