学习总结BIO,NIO,AIO

学习总结BIO,NIO,AIO

BIO,NIO,AIO 的概念Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。同步阻塞IO(BIO): 用户进程发起一个IO操作以后,必须等待IO操作的真正完成后,才能继续运行。同步非阻塞IO(NIO): 用户进程发起一个IO操作以后,可做其它事情,但用户进程需要经常询问IO操作是否完成,这样造成不必要的CPU资源浪费。异步非阻塞IO(AIO): 用户进程发起一个IO操作然后,立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知。类比Future模式。由于 AIO 的应用不是很多,所以下面主要学习 BIO 和 NIO ...

默认分类 2019-05-22 PM 18℃ 0条
操作系统进程、线程、调度

操作系统进程、线程、调度

进程程序就是一个指令序列,在早起的计算机只支持单道程序,还没有进程的概念;而引入多道程序技术后,为了程序的并发执行,从而引入了进程、进程实体的概念。进程与进程实体*进程实体的在组成:PCB:进程控制块,描述了进程的基本信息和运行状态,是进程存在的唯一标志;所谓的创建和撤销进程都是指对PCB的操作。程序段:程序的代码。数据段:程序运行时产生的运算数据,包括全局变量、局部变量等。PCB包含:进程标识符(PID)、处理机状态、进程调度信息、进程控制信息。进程和进程实体进程是进程实体的运行过程,是系统进行资源分配的基本单位。进程实体是静态的,进程是动态的。进程的组织方式和特征组织方式进程的组织,...

操作系统 2019-05-13 PM 18℃ 0条
操作系统概述

操作系统概述

操作系统概述操作系统的概念:负责管理协调硬件、软件等计算机资源的工作为上层用户、应用程序提供服务是一种系统软件根据概念操作系统需要提供的相应的功能。作为系统资源的管理者:处理机管理、存储器管理、文件管理、设备管理。处理机:计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。作为用户和计算机硬件之间的接口:命令接口、程序接口、GUI(图形界面)。命令接口用户直接调用,分为联机命令接口(说一做一)和脱机命令接口(批处理)程序接口又被称为系统调用、广义指令,用户通过程序间接使用基本特征操作系统基本特征有四个,并发、共享、虚拟、异步,而并发和共享是最基本的特征,它们互为存在条件,而如...

操作系统 2019-05-11 PM 20℃ 0条
并发编程补充

并发编程补充

volatile 与 synchronized 的区别修饰区域volatile 轻量级,只能修饰变量synchronized 重量级,修饰变量和方法线程安全线程安全包括两个方面:可见性、原子性volatile 只能保证数据的可见性,所以不能用来同步;而 synchronized 因为只有获得锁才能进入临界区所以即保证可见性,也保证原子性。并行与并发的区别并行: 两个任务同时运行,即 A 任务进行的同时,B 任务也在进行。并发: 两个任务都请求运行,而处理器只能接受一个任务,于是就把这两个任务安排轮流进行,由于时间间隔短,所以感觉是两个任务都在运行。锁、volatile 和 synchro...

并发编程 2019-05-03 PM 18℃ 0条
Java并发编程

Java并发编程

参考:地址线程的状态五种基本状态新建: 线程创建后还未启动。可运行: 正在运行或正在等待 CPU 时间片(CPU分配给各个程序的时间)。阻塞: 多线程有同步操作时才会出现的状态,一个线程等待另一个线程(锁释放)。等待: 1.限期等待,一定时间后会被系统自动唤醒,可以使用 sleep、wait(带参)、join(带参)等方法进入。2.无限期等待,只能被其它线程唤醒,可以使用 wait(无参)、join(无参)等方法进入。与阻塞区别: 等待是主动进入,而阻塞是被动进入;等待在同步代码内,而阻塞在同步代码外。死亡: run 方法运行结束或出现未捕获的异常。线程的睡眠和挂起:sleep() 方法...

并发编程 2019-05-02 PM 23℃ 0条
JMM 内存模型

JMM 内存模型

JMMJMM:JavaMemoryModel,即 Java 内存模型,用于屏蔽各种硬件和操作系统的内存访问差异。注: JMM 和 JVM内存结构不是一个层次的划分:JVM 内存结构是伴随JVM的启动而对内存区域进行的划分是真实存在的JMM 只是一个抽象的概念,和多线程相关的,描述了一组规则或规范,这些规则或规范围绕如何处理并发过程中的原子性、可见性和有序性来建立的。主内存、工作内存、内存交互内存模型结构所有的变量都存储在主内存中,每个线程都有自己的工作内存,而工作内存则存储在 CPU 的高速缓存或寄存器中(比在内存中读写快)。每个线程只能直接操作自己工作内存中的变量(由主内存拷贝而来的或...

并发编程 2019-04-29 PM 15℃ 0条
项目的高并发处理

项目的高并发处理

首先简单描述下分布式和集群:分布式:将不同的业务分在不同的地方,即一个任务分给多个机器去做,减少单个任务的执行时间。集群:将多台服务器集中在一起,实现同一业务,即提高单位时间内执行的任务数。分布式每个点可以做集群,而集群不一定是分布式的。处理高并发问题的常见方法1. 使用静态页面**尽量将可以使用静态页面的地方使用静态页面,减少页面的解析时间,能够缓解服务器压力并降低数据库数据的频繁交换。实现静态页面的方法由很多:freemarker 和 SpringMVC 整合:地址模拟请求,将结果保存到html文件中,如使用HttpClient之类的:地址2.缓存**将一些有时效性或经常访问的数据存...

总结和问题 2019-04-28 PM 14℃ 0条
JVM 垃圾回收算法

JVM 垃圾回收算法

JVM 内存区域:地址JVM 垃圾收集器:地址@[toc]内存分配在内存分配的文章中有提到:目前主流的垃圾收集器都是采用分代回收算法(新生代和老年代),再根据不同年代的特点选择合适的垃圾收集算法。对象是优先在 eden 区分配的,当 eden 区没有足够空间时会先进行一次 Minor GC,如果GC后空间依然不够则会直接进入老年代(分配担保机制)。Minor GC 和 Full GCMinor GC: 新生代GC,发生在新生代的垃圾收集动作,次数频繁效率快。Full GC: 老年代GC,发生在老年代,速度会比 Minor GC 慢。会进入老年代的对象:大对象: 需要大量连续内存空间的对象...

JVM 2019-04-03 PM 20℃ 0条
JVM内存区域

JVM内存区域

参考:地址运行时内存区域内存区域图解Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域,且 JDK 版本不同也有所区别。JDK 1.8之前JDK 1.8 之后线程共享的:堆内存方法区直接内存线程私有:虚拟机栈(Java栈)本地方法栈程序计数器注:永久代是HotSpot的概念,方法区是Java虚拟机规范中的定义,是一种规范,而永久代是一种实现,一个是标准一个是实现直接内存不是虚拟机规范中定义的内存区域虚拟机栈虚拟机栈的主要内容:虚拟机栈描述的是 Java 方法执行的内存模型,每次方法调用的数据都是通过栈传递的。Java虚拟机栈是由一个个栈帧组成,而每个...

JVM 2019-04-01 PM 19℃ 0条