等待/通知机制可以通过Java内置的等待/通知机制(wait()/notify())实现一个线程修改一个对象的值,而另一个线程感知到了变化,然后进行相应的操作。管道输入/输出流管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线程之间的数据传输,而传输的媒介为内存。 管道输入/输出流主要包括了如下4种具体实现:PipedOutputStream、 PipedInp
volatile和synchronized关键字 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。 关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量 访问的可见
Java中的线程分为两类,分别为 daemon 线程(守护线程)和 user 线程(用户线程)。 在JVM 启动时会调用 main 函数,main函数所在的钱程就是一个用户线程。其实在JVM 内部同时还启动了很多守护线程, 比如垃圾回收线程。那么守护线程和用户线程有什么区别呢?区别之一是当最后一个非守护线程束时,JVM会正常退出,而不管当前是否存在守护线程,也就是说守护线程是否结束并不影响 JVM
这还得看线程是不是属于同⼀个进程: 当两个线程不是属于同⼀个进程,则切换的过程就跟进程上下⽂切换⼀样; 当两个线程是属于同⼀个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据; 所以,线程的上下⽂切换相⽐进程,开销要⼩很多。
线程和进程的联系:线程是进程当中的⼀条执⾏流程。 同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源,但每个 线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的。线程与进程的⽐较如下:调度: 进程是资源(包括内存、打开的⽂件等)分配的单位, 线程是 CPU 调度的单位; 资源:进程拥有⼀个完整的资源平台,⽽线程只独享必不可少的资源,如寄存器和栈; 拥有资源:线程同
Socket与其他通信机制不同的是,它可用于不同机器间的进程通信。 优缺点: 管道:简单;效率低,容量有限; 消息队列:不及时,写入和读取需要用户态、内核态拷贝。 共享内存区:能够很容易控制容量,速度快,但需要注意不同进程的同步问题。 信号量:不能传递复杂消息,一般用来实现进程间的同步; 信号:它是进程间通信的唯一异步机制。 Socket:用于不同主机进程间的通信。
信号量:信号量我们可以理解成红绿灯,红灯行,绿灯停。它本质上是一个整 数计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制, 防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 信号量表示资源的数量,控制信号量的⽅式有两种原⼦操作: ⼀个是 P 操作,这个操作会把信号量减去 1,相减后如果信号量 < 0,则表明资源已被
消息队列消息队列就是保存在内核中的消息链表,包括Posix消息队列和System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。共享内存共享内存的机制,就是拿出⼀块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写⼊的东西,另外的进程⻢上就能看到。共享内存是最快的 I
管道:管道可以理解成不同进程之间的对白,一方发声,一方接收,声音的介质可是是空气或者电缆,进程之间就可以通过管道,所谓的管道就是内核中的一串缓存,从管道的一端写入数据,就是缓存在了内核里,另一端读取,也是从内核中读取这段数据。管道可以分为两类:匿名管道和命名管道。匿名管道是单向的,只能在有亲缘关系的进程间通信;命名管道是双向的,可以实现本机任意两个进程通信。信号 : 信号可以理解成一种电报,发送方
进程调度就是确定某一个时刻CPU运行哪个进程,常见的进程调度算法有:先来先服务非抢占式的调度算法,按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。另外,对I/O密集型进程也不利,因为这种进程每次进行I/O操作之后又得重新排队。短作业优先非抢占式的调度算法,按估计运行时间最短的顺序进行调度
什么是僵尸进程?僵尸进程是已完成且处于终止状态,但在进程表中却仍然存在的进程。僵尸进程一般发生有父子关系的进程中,一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中。什么是孤儿进程?一个父进程退出,而它的一个
什么是进程上下文切换?对于单核单线程 CPU 而言,在某一时刻只能执行一条 CPU 指令。上下文切换 (Context Switch) 是一种将 CPU 资源从一个进程分配给另一个进程的机制。从用户角度看,计算机能够并行运行多个进程,这恰恰是操作系统通过快速上下文切换造成的结果。在切换的过程中,操作系统需要先存储当前进程的状态 (包括内存空间的指针,当前执行完的指令等等),再读入下一个进程的状态,
并发就是在一段时间内,多个任务都会被处理;但在某一时刻,只有一个任务在执行。单核处理器做到的并发,其实是利用时间片的轮转,例如有两个进程A和B,A运行一个时间片之后,切换到B,B运行一个时间片之后又切换到A。因为切换速度足够快,所以宏观上表现为在一段时间内能同时运行多个程序。 并行就是在同一时刻,有多个任务在执行。这个需要多核处理器才能完成,在微观上就能同时执行多条指令,不同的程序被放到不同的处理
什么是内核?可以这么说,内核是一个计算机程序,它是操作系统的核心,提供了操作系统最核心的能力,可以控制操作系统中所有的内容。什么是用户态和内核态?内核具有很⾼的权限,可以控制 cpu、内存、硬盘等硬件,出于权限控制的考虑,因此⼤多数操作系统,把内存分成了两个区域: 内核空间,这个内存空间只有内核程序可以访问; ⽤户空间,这个内存空间专⻔给应⽤程序使⽤,权限比较小; ⽤户空间的代码只能访问⼀个局部的
可以这么说,操作系统是一种运行在内核态的软件。 它是应用程序和硬件之间的媒介,向应用程序提供硬件的抽象,以及管理硬件资源。系统主要有哪些功能?操作系统最主要的功能: 处理器(CPU)管理:CPU的管理和分配,主要指的是进程管理。 内存管理:内存的分配和管理,主要利用了虚拟内存的方式。 外存管理:外存(磁盘等)的分配和管理,将外存以文件的形式提供出去。 I/O管理:对输入/输出设备的统一管理。 除此
对称加密与非对称加密有什么区别?对称加密:指加密和解密使用同一密钥,优点是运算速度较快,缺点是如何安全将密钥传输给另一方。常见的对称加密算法有:DES、AES 等。非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。常见的非对称加密算法有 RSA。RSA和AES算法有什么区别?RSA采用非对称加密的方式,采用公钥进行
XSS 攻击也是比较常见,XSS,叫跨站脚本攻击(Cross-Site Scripting),因为会与层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆,因此有人将跨站脚本攻击缩写为 XSS。它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览网页的时候,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意攻击用户的特殊目的。XSS 攻
什么是 DoS、DDoS、DRDoS 攻击?DOS: (Denial of Service), 翻译过来就是拒绝服务, 一切能引起拒绝 行为的攻击都被称为 DOS 攻击。最常见的 DoS 攻击就有计算机网络宽带攻击、连通性攻击。 DDoS: (Distributed Denial of Service),翻译过来是分布式拒绝服务。是指处于不同位置的多个攻击者同时向一个或几个目标发动攻击,或者一个攻
什么是 CSRF 攻击?CSRF,跨站请求伪造(英文全称是 Cross-site request forgery),是一种挟持用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。CSRF 是如何攻击的?1. 用户登陆银行,没有退出,浏览器包含了 用户 在银行的身份认证信息。 2. 攻击者将伪造的转账请求,包含在在帖子 3. 用户在银行网站保持登陆的情况下,浏览帖子 4. 将伪造的转账
DNS劫持DNS劫持即域名劫持,是通过将原域名对应的IP地址进行替换,从而使用户访问到错误的网站,或者使用户无法正常访问网站的一种攻击方式。域名劫持往往只能在特定的网络范围内进行,范围外的DNS服务器能够返回正常的IP地址。攻击者可以冒充原域名所属机构,通过电子邮件的方式修改组织机构的域名注册信息,或者将域名转让给其它主持,并将新的域名信息保存在所指定的DNS服务器中,从而使用户无法对原域名来进行
有哪些安全攻击?网络安全攻击主要分为两种类型,被动攻击和主动攻击被动攻击被动攻击是指攻击者从网络上窃听他人的通信内容,通常把这类攻击称为截获,被动攻击主要有两种形式:消息内容泄露攻击和流量分析攻击。由于攻击者没有修改数据,使得这种攻击很难被检测到。主动攻击直接对现有的数据和服务造成影响,常见的主动攻击类型有:篡改:攻击者故意篡改网络上送的报文,甚至把完全伪造的报文传送给接收方。 恶意程序:恶意程序
一、ICMP 协议的功能ICMP(Internet Control Message Protocol) ,网际控制报文协议。ICMP 协议是一种面向无连接的协议,用于传输出错报告控制信息。 它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。 当遇到 IP 数据无法访问目标、IP 路由器无法按当
MAC地址和IP地址都有什么作用?MAC地址是数据链路层和物理层使用的地址,是写在网卡上的物理地址,用来定义网络设备的位置,不可变更。 IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址用来区别网络上的计算机。为什么有了MAC地址还需要IP地址?如果我们只使用MAC地址进行寻址的话,我们需要路由器记住每个MAC地址属于哪个子网,不然一次路由器收到数据包都要满世界寻找目的MAC地址。而我
ARP协议,Address Resolution Protocol,地址解析协议,它是用于实现IP地址到MAC地址的映射。1、每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系;2、当源主机需要将一个数据包发送到目的主机时,会首先检查自己的ARP列表,是否存在该IP地址对应的MAC地址;如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一
域名和 IP 的关系IP地址在同一个网络中是唯一的,用来标识每一个网络上的设备,其相当于一个人的身份证号域名在同一个网络中也是唯一的,就像是一个人的名字、绰号假如你有多个不用的绰号,你的朋友可以用其中任何一个绰号叫你,但你的身份证号码确实唯一的。但同时你的绰号也可能和别人重复,假如你不在,有人叫你的绰号其他人可能就答应了。一个 IP 可以对应多个域名吗?一个域名可以对应多个IP,但这种情况DNS做
一、IP地址又两部分组成网络层负责将数据从一个设备传输到另一个设备,世界上那么多设备,又该如何找到对方呢?因此,网络层需要有区分设备得编号。我们一般用IP地址给设备进行编号。对于IPv4协议,IP地址共32位,分成四段(如192.168.0.1),每段8位。只有一个单纯得IP地址虽然做到了区分设备,但是全世界那么多设备,寻址起来非常麻烦。因此需要将IP地址分成两段:一段是网络号,负责标识该IP地址
一、IP协议是什么?IP协议(Internet Protocol)又被称为互联网协议,是支持网间互联的数据包协议,工作在网际层,主要目的就是为了提高网络的可扩展性。通过网际协议IP,可以把参与互联的,性能各异的网络看作一个统一的网络。和传输层TCP相比,IP协议是一种无连接、不可靠的数据包传输服务,和TCP协议一起构成了TCP/IP协议的核心。二、IP协议有哪些作用2.1 寻址和路由在IP数据报中
一、UDP协议为什么不可靠?UDP在传输数据之前不需要先建立连接,远地主机的运输层在接收到UDP报文后, 不需要确认,提供不可靠交付。总结就以下四点: 不保证消息交付:不确认,不重传,无超时 不保证交付顺序:不设置包序号,不重排,不会发生队首阻塞 不跟踪连接状态:不必建立连接或重启状态机 不进行拥塞控制:不内置客户端或网络反馈机制二、DNS为什么要用UDP?更准确地说,DNS既使用TCP又使用UD
一、最根本区别:TCP 是面向连接,而 UDP 是无连接。可以这么形容:TCP是打电话,UDP是大喇叭。二、TCP和UDP的应用场景TCP应用场景: 效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。例如:文件传输(准确高要求高、但是速度可以相对慢)、收发邮件、远程登录。 UDP应用场景: 效率要求相对高,对准确性要求相对低的场景。例
重传包括超时重传、快速重传、带选择确认的重传(SACK)、重复 SACK 四种。一、TCP重传机制1.1超时重传超时重传,是 TCP 协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的 ACK 报文,那么就重新发送数据,直到发送成功为止。1.2快速重传TCP 还有另外⼀种快速重传(Fast Retransmit)机制,它不以时间
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号