操作系统概述操作系统定义 没有公认的精确定义 是一个控制程序 一个系统软件 控制程序执行结果、防止错误和计算机的不当使用 执行用户程序,给用户程序提供各种服务 方便使用 是一个资源管理器 应用程序与硬件间的中间层 管理各种软硬件资源,提供访问资源的高效手段 解决资源的访问冲突,确保资源公平使用 ...
现代操作系统:多处理机系统
多处理机系统人们对更强计算力的追求促进着计算机的发展,而所有的一切都需要更多的CPU周期(又称机器周期,CPU周期定义为从内存读取一条指令字的最短时间。一个指令周期常由若干CPU周期构成。 时钟解决方案 过去的解决方案是使时钟走得更快,而现在遇到了对时钟速度的限制,即电子信号的速度不可能超过光速,这 ...
计算机操作系统:进程通信
进程通信进程间通信是为了进程间进行协作。这样做的原因有 信息共享。多个用户可能对同样的信息感兴趣 提高运算速度。 模块化。 方便。单个用户可以同时执行很多任务 进程通信机制IPC 低级通信 进程互斥与同步交换的信息量小,每次通信传递的信息量固定且效率较低 如:信号量 高级通信 进程之间以较高 ...
消息队列:RocketMQ
RocketMQ提出问题概述应用适用性RocketMQ相比于RabbitMQ与kafka具有的主要优势: 支持事务型消息(消息发送和DB操作保持两方的最终一致性,rabbitmq和kafka不支持) 支持结合rocketmq的多个系统之间数据最终一致性(多方事务,二方事务是前提) 支持18个级别的 ...
Java并发:并发编程的挑战
问题并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战。 性能与可伸缩性: 上下文切换的问题、锁的竞争。 活跃性危险: 死锁、饥饿、糟糕的响应性、活锁。 受限于硬件和软件的资源限制问题 ...
java并发:JUC
JUCjava.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是J.U.C的核心。 AQS同步组件AQS:AbstractQueuedSynchronizer,即队列同步器。是许多同步类的基类,它是构建锁或者其他同步组件的基础框架(如ReentrantLock、Ree ...
JavaBase:UnSafe类
UnSafe类UnSafe类是可以直接访问OS,即直接访问硬件,UnSafe类是使用C实现的。 UnSafe作用: 内存操作。可以直接对内存进行操作,提供了三个方法: 分配内存。 扩充内存。 释放内存。 字段的定位与修改: 定位与修改数组元素在底层内存的位置。 挂起与恢复。针对于线程而言, ...
Java并发:并发机制的底层原理
并发机制的底层原理Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 Volatile提出问题是什么Java编程语言允许线程访问共享变量,为了确保共享变量能被准 ...
Elasticsearch:数据
数据无论程序怎么写,意图都是一样的:组织数据为我们的目标所服务。但数据并不只是由随机的比特和字节组成,我们在数据节点间建立关联来表示现实世界中的实体或某些东西。属于同一个人的名字和Email会有更多的意义。 现实世界中,并不是所有相同类型的实体看起来都是一样的,一个人可能有一个家庭电话,另一个人可能 ...
Elasticsearch:入门
ElasticSearch概念ElasticSearch是一个实时分布式搜索和分析引擎,能够让你以前所未有的速度处理大数据成为可能。 它用于全文搜索、结构化搜索、分析以及将三者混用。并且可以在单机以及集群上运行。ES将三个功能整合成为一个一体化的、实时的应用,其对新用户的门槛很低。 为什么要用大部分 ...
JVM:类文件与类加载
类文件结构.class文件,类文件,字节码文件。 代码编译的结果从本期机器码转变为字节码,是存储格式发展的一步。 概述计算机只能识别0和1,因此程序需要经编译器翻译成二进制格式。 而随着虚拟机的发展,越来越多程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式。即将程序 ...
Spring:MVC
Spring MVC原理 客户端的所有请求都交给前端控制器DispatcherServlet处理,它会负责调用系统的其他模块来真正处理用户的请求。 DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协议方法、请求头、请求参数、cookie等)以及HandlerMa ...
Spring:Bean生命周期
bean的生命周期Spring容器技术内幕如果Spring容器是一辆汽车,那么BeanFactory是汽车的发动机,而ApplicationContext是一辆完整的汽车。 Spring以容器管理所有的bean对象,容器的实体是一个BeanFactory对象。但我们常用的容器是另一个Applicat ...
Spring:IOC
IOC背景提出问题IOC的理论背景 我们知道在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统地业务逻辑。 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是 ...
Spring:启动流程
启动流程 Spring的启动流程主要是定位 -> 加载 -> 注册 -> 实例化: 定位:获取配置文件路径。 加载:把配置文件读取成BeanDefinition。 注册:存储BeanDefinition。 实例化:根据BeanDefinition创建实例。 所谓的IOC容器其实 ...
Spring:Beans
Spring配置概述在使用Spring提供的各项丰富而神奇的功能前,必须在SpringIOC容器中装配好Bean,并建立Bean和Bean间的关联关系。 Spring容器高层视图要使得应用程序中的Spring容器成功启动,需要同时具备以下三方面的条件: Spring框架的类包都已经放到应用程序的类 ...
Spring:AOP
AOP为了能够更好地将系统级别的代码抽离出来,去掉与对象的耦合,就产生了面向AOP(面向切面)。如上图所示,OOP属于一种横向扩展,AOP是一种纵向扩展。AOP依托于OOP,进一步将系统级别的代码抽象出来,进行纵向排列,实现低耦合。 适用性AOP只适合那些具有横切逻辑的应用场合: 日志、安全性、事 ...