volatile和synchronized关键字 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。 关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性。

Java中的线程分为两类,分别为daemon线程(守护线程)和user线程(用户线程)。 在JVM启动时会调用main函数,main函数所在的钱程就是一个用户线程。其实在JVM内部同时还启动了很多守护线程,比如垃圾回收线程。 那么守护线程和用户线程有什么区别呢? 区别之一是当最后一个非守护线程束时,JVM会正常退出,而不管当前是否存在守护线程,也就是说守护线程是否结束并不影响JVM退出。 换而言之,只要有一个用户线程还没结束,正常情况下JVM就不会退出。

这还得看线程是不是属于同⼀个进程: 当两个线程不是属于同⼀个进程,则切换的过程就跟进程上下⽂切换⼀样; 当两个线程是属于同⼀个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据; 所以,线程的上下⽂切换相⽐进程,开销要⼩很多。

这还得看线程是不是属于同⼀个进程: 当两个线程不是属于同⼀个进程,则切换的过程就跟进程上下⽂切换⼀样; 当两个线程是属于同⼀个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据; 所以,线程的上下⽂切换相⽐进程,开销要⼩很多。

线程和进程的联系: 线程是进程当中的⼀条执⾏流程。 同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源,但每个 线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的。 线程与进程的⽐较如下: 调度:进程是资源(包括内存、打开的⽂件等)分配的单位,线程是CPU调度的单位; 资源:进程拥有⼀个完整的资源平台,⽽线程只独享必不可少的资源,如寄存器和栈; 拥有资源:线程同样具有就绪、阻塞、执⾏三种基本状态,同样具有状态之间的转换关系; 系统开销:线程能减少并发执⾏的时间和空间开销——创建或撤销进程时,系统都要为之分配或回收系统资源,如内存空间,I/O设备等,OS所付出...

信号量:信号量我们可以理解成红绿灯,红灯行,绿灯停。它本质上是一个整数计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 信号量表示资源的数量,控制信号量的⽅式有两种原⼦操作: ⼀个是P操作,这个操作会把信号量减去1,相减后如果信号量<0,则表明资源已被占⽤,进程需阻塞等待;相减后如果信号量>=0,则表明还有资源可使⽤,进程可正常继续执⾏。 另⼀个是V操作,这个操作会把信号量加上1,相加后如果信号量<=0,则表明当前有阻塞中的进程,于是会将该进程唤醒运...

消息队列 消息队列就是保存在内核中的消息链表,包括Posix消息队列和SystemV消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 共享内存 共享内存的机制,就是拿出⼀块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写⼊的东西,另外的进程⻢上就能看到。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

管道:管道可以理解成不同进程之间的对白,一方发声,一方接收,声音的介质可是是空气或者电缆,进程之间就可以通过管道,所谓的管道就是内核中的一串缓存,从管道的一端写入数据,就是缓存在了内核里,另一端读取,也是从内核中读取这段数据。 管道可以分为两类:匿名管道和命名管道。匿名管道是单向的,只能在有亲缘关系的进程间通信;命名管道是双向的,可以实现本机任意两个进程通信。 信号:信号可以理解成一种电报,发送方发送内容,指定接收进程,然后发出特定的软件中断,操作系统接到中断请求后,找到接收进程,通知接收进程处理信号。 比如kill-91050就表示给PID为1050的进程发送SIGKIL信号。Linux系...

进程调度就是确定某一个时刻CPU运行哪个进程,常见的进程调度算法有: 先来先服务 非抢占式的调度算法,按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。另外,对I/O密集型进程也不利,因为这种进程每次进行I/O操作之后又得重新排队。 短作业优先 非抢占式的调度算法,按估计运行时间最短的顺序进行调度。长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。 优先级调度 为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进...

可以这么说,操作系统是一种运行在内核态的软件。 它是应用程序和硬件之间的媒介,向应用程序提供硬件的抽象,以及管理硬件资源。 系统主要有哪些功能? 操作系统最主要的功能: 处理器(CPU)管理:CPU的管理和分配,主要指的是进程管理。 内存管理:内存的分配和管理,主要利用了虚拟内存的方式。 外存管理:外存(磁盘等)的分配和管理,将外存以文件的形式提供出去。 I/O管理:对输入/输出设备的统一管理。 除此之外,还有保证自身正常运行的健壮性管理,防止非法操作和入侵的安全性管理。

什么是内核? 可以这么说,内核是一个计算机程序,它是操作系统的核心,提供了操作系统最核心的能力,可以控制操作系统中所有的内容。 什么是用户态和内核态? 内核具有很⾼的权限,可以控制cpu、内存、硬盘等硬件,出于权限控制的考虑,因此⼤多数操作系统,把内存分成了两个区域: 内核空间,这个内存空间只有内核程序可以访问; ⽤户空间,这个内存空间专⻔给应⽤程序使⽤,权限比较小; ⽤户空间的代码只能访问⼀个局部的内存空间,⽽内核空间的代码可以访问所有内存空间。因此,当程序使⽤⽤户空间时,我们常说该程序在⽤户态执⾏,⽽当程序使内核空间时,程序则在内核态执⾏。 用户态和内核态是如何切换的? 应⽤程序如果需要进...

什么是进程上下文切换? 对于单核单线程CPU而言,在某一时刻只能执行一条CPU指令。 上下文切换(ContextSwitch)是一种将CPU资源从一个进程分配给另一个进程的机制。从用户角度看,计算机能够并行运行多个进程,这恰恰是操作系统通过快速上下文切换造成的结果。 在切换的过程中,操作系统需要先存储当前进程的状态(包括内存空间的指针,当前执行完的指令等等),再读入下一个进程的状态,然后执行此进程。 进程有哪些状态? 当一个进程开始运行时,它可能会经历下面这几种状态: 上图中各个状态的意义: 运⾏状态(Runing):该时刻进程占⽤CPU; 就绪状态(Ready):可运⾏,由于其他进程处于运...

TCP提供了一种机制,可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是流量控制。 TCP通过滑动窗口来控制流量,我们看下简要流程: 首先双方三次握手,初始化各自的窗口大小,均为400个字节。 假如当前发送方给接收方发送了200字节,那么发送方的SND.NXT会右移200个字节,也就是说当前的可用窗口减少了200个字节。 接受方收到后,放到缓冲队列里面,REV.WND=400-200=200字节,所以win=200字节返回给发送方。接收方会在ACK的报文首部带上缩小后的滑动窗口200字节。 发送方又发送200字节过来,200字节到达,继续放到缓冲队列。不过这时候,由于大量负载的原因...

对称加密与非对称加密有什么区别? 对称加密:指加密和解密使用同一密钥,优点是运算速度较快,缺点是如何安全将密钥传输给另一方。常见的对称加密算法有:DES、AES等。 非对称加密:指的是加密和解密使用不同的密钥(即公钥和私钥)。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。常见的非对称加密算法有RSA。 RSA和AES算法有什么区别? RSA 采用非对称加密的方式,采用公钥进行加密,私钥解密的形式。其私钥长度一般较长,由于需要大数的乘幂求模等运算,其运算速度较慢,不合适大量数据文件加密。 AES 采用对称加密的方式,其秘钥长度最长只有256个比特,加密和解密速度较快,...

DNS劫持 DNS劫持即域名劫持,是通过将原域名对应的IP地址进行替换,从而使用户访问到错误的网站,或者使用户无法正常访问网站的一种攻击方式。 域名劫持往往只能在特定的网络范围内进行,范围外的DNS服务器能够返回正常的IP地址。攻击者可以冒充原域名所属机构,通过电子邮件的方式修改组织机构的域名注册信息,或者将域名转让给其它主持,并将新的域名信息保存在所指定的DNS服务器中,从而使用户无法对原域名来进行解析以访问目标地址。 DNS劫持的步骤 1.获取要劫持的域名信息:攻击者会首先访问域名查询要劫持的站点的域名信息。 2.控制域名响应的E-Mail账号:在获取到域名信息后,攻击者通过暴力破解或者...

  G1PV9Utmq6En   2023年11月05日   42   0   0 IP服务器IPDNS服务器DNS

什么是CSRF攻击? CSRF,跨站请求伪造(英文全称是Cross-siterequestforgery),是一种挟持用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 CSRF是如何攻击的? 1.用户登陆银行,没有退出,浏览器包含了用户在银行的身份认证信息。 2.攻击者将伪造的转账请求,包含在在帖子 3.用户在银行网站保持登陆的情况下,浏览帖子 4.将伪造的转账请求连同身份认证信息,发送到银行网站 5.银行网站看到身份认证信息,以为就是用户的合法操作,最后造成用户资金损失。 怎么应对CSRF攻击 检查Referer字段 HTTP头中的Referer字段记录了该HTTP请求的来源...

什么是DoS、DDoS、DRDoS攻击? DOS:(DenialofService),翻译过来就是拒绝服务,一切能引起拒绝行为的攻击都被称为DOS攻击。最常见的DoS攻击就有计算机网络宽带攻击、连通性攻击。 DDoS:(DistributedDenialofService),翻译过来是分布式拒绝服务。是指处于不同位置的多个攻击者同时向一个或几个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器,并利用这些机器对受害者同时实施攻击。 主要形式有流量攻击和资源耗尽攻击,常见的DDoS攻击有:SYNFlood、PingofDeath、ACKFlood、UDPFlood等。 DRDoS:(Dis...

有哪些安全攻击? 网络安全攻击主要分为两种类型,被动攻击和主动攻击 被动攻击 被动攻击是指攻击者从网络上窃听他人的通信内容,通常把这类攻击称为截获,被动攻击主要有两种形式:消息内容泄露攻击和流量分析攻击。由于攻击者没有修改数据,使得这种攻击很难被检测到。 主动攻击 直接对现有的数据和服务造成影响,常见的主动攻击类型有: 篡改:攻击者故意篡改网络上送的报文,甚至把完全伪造的报文传送给接收方。 恶意程序:恶意程序种类繁多,包括计算机病毒、计算机蠕虫、特洛伊木马、后门入侵、流氓软件等等。 拒绝服务Dos:攻击者向服务器不停地发送分组,使服务器无法提供正常服务。

  G1PV9Utmq6En   2023年11月02日   35   0   0 服务器数据服务器数据

一、ICMP协议的功能 ICMP(InternetControlMessageProtocol),网际控制报文协议。 ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。 它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。 当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。 比如我们日常使用得比较多的ping,就是基于ICMP的。 二、ping的原理 ping,PacketInternetGroper,是一种因特网包探索器,用于...

  G1PV9Utmq6En   2023年11月02日   42   0   0 源地址InternetIPInternetIP源地址

MAC地址和IP地址都有什么作用? MAC地址是数据链路层和物理层使用的地址,是写在网卡上的物理地址,用来定义网络设备的位置,不可变更。 IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址用来区别网络上的计算机。 为什么有了MAC地址还需要IP地址? 如果我们只使用MAC地址进行寻址的话,我们需要路由器记住每个MAC地址属于哪个子网,不然一次路由器收到数据包都要满世界寻找目的MAC地址。而我们知道MAC地址的长度为48位,也就是最多共有2的48次方个MAC地址,这就意味着每个路由器需要256T的内存,显然是不现实的。 和MAC地址不同,IP地址是和地域相关的,在一个子网中的设备,我...

  G1PV9Utmq6En   2023年11月02日   26   0   0 IP子网寻址IP寻址子网
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~