@Abandon
码龄7年
关注
提问 私信
  • 博客:25,041
    动态:11
    25,052
    总访问量
  • 19
    原创
  • 2,292,821
    排名
  • 11
    粉丝
  • 0
    铁粉

个人简介:等风来,不去追风去!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2017-12-03
博客简介:

qq_41261736的博客

查看详细资料
个人成就
  • 获得19次点赞
  • 内容获得4次评论
  • 获得46次收藏
创作历程
  • 15篇
    2019年
  • 4篇
    2018年
成就勋章
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux下进程的通信方式(一)

在操作系统中,每一个进程都是独立的执行体,但是进程之间需要相互交互,所以就有了进程间通讯。 Linux下进程间的通讯方式有:信号、信号量、管道、消息队列、共享内存、套接字等。1、信号信号是系统预先定义好的一些特定的事件,信号可以被产生,也可以被接收,产生和接收的主体都是进程。接收到信号的进程会采取相应的一些行动。一般信号是由于某些错误条件而生成的,比如内存段冲突、浮点...
原创
发布博客 2019.08.20 ·
151 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

进程和线程的区别

一、二者定义进程:进程具有一定独立功能的程序关于某些数据结合上的一次运行活动。进程是系统进行资源分配和调度的一个独立单位。线程:线程是进程的一个实体,是进程内部的一条执行序列,是CPU调度和分派的基本单位。一个进程至少有一条线程。main函数的执行序列为主线程,通过线程创建函数创建并调用的执行序列位函数线程。进程是一个正在运行的程序(动态);线程是进程内部的一条执行路径序列;二、二...
原创
发布博客 2019.08.20 ·
177 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

为什么会产生线程?以及多线程的坏处

为什么会产生线程,线程的产生主要是解决什么问题?(1)使用多线程可以减少程序的响应时间。(2)与进程相比,线程的创建和切换开销更小。建立许多数据结构来维护线程代码段、数据段等信息,而运行于同一个进程内的线程共享同一个代码段、数据段,线程的启动或切换的开销就比进程要少到很多。(3)多CPU和多核心计算机本身就具有执行多线程的能力,如果使用单个线程,将无法复制利用计算机资源,造成资源的巨大...
原创
发布博客 2019.08.20 ·
761 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

TCP三次握手哪一阶段容易受到攻击,为什么?

首先要分析该问题,就要先搞清楚TCP三次握手的建立连接过程,如下图TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN (ack=j+1) ,同时自己也发送一个SYN包(syn=k)...
原创
发布博客 2019.08.19 ·
2196 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

TCP与UDP的区别

一、二者概念传输层协议主要有两个:TCP 协议和UDP协议。TCP协议:是面向连接的、可靠的流式服务。UDP协议:是无连接的、不可靠的数据报服务。TCP协议:通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接...
原创
发布博客 2019.08.19 ·
109 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

保护模式

保护模式与实地址模式相对应。在80286以前,CPU只有实时模式,地址总线有20位,而内存地址是16位,也就是最多能够访问2^20=1M的内存空间。在80286及以后,内存地址改为16位或32位,至少可以访问到2^32=4G的内存空间。但为了保证后续的CPU能够运行旧的CPU,只能保持向下兼容。因此,80286及以后的CPU首先进入实模式,然后通过切换机制再进入到保护模式。 ...
原创
发布博客 2019.08.17 ·
181 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

实地址模式

在实地址模式下,内存寻址方式和8086相同,由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86CPU用做高速的8086。在实模式下,所有的段都是可以读、写和可执行的。实地址模式:以8086为代表,物理地址=段寄存器<<4 + 偏移量,对内存的访问...
原创
发布博客 2019.08.17 ·
1035 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux系统调用的过程

系统调用用户态切换内核态的引发原因: 调用系统调用函数 ——>软中断 缺页异常——>硬中断系统调用的过程: 产生0X80号中断,保存当前进程的现场信息,将系统调用的系统调用号写入eax寄存器中。中断处理程序执行,也即切换到了内核...
原创
发布博客 2019.08.17 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

管道为什么是半双工?

一、管道是半双工通信的原因由于Linux一个命令只能完成一个功能,所以一个复杂点的任务需要好几个进程协同完成,第一个进程处理结果需交给第二个进程,然后一次交给第三个,等等,像流水线完成某个商品的生产一样,这个过程只需要数据单向往下传输,所以设计的时候做成了半双工。当然也可以使用管道实现双工通信,需要两个管道。二、三种通信方式的区别单工通信:传输方向只有一个方向,单工通信只有一根数据线,...
原创
发布博客 2019.08.16 ·
4793 阅读 ·
4 点赞 ·
3 评论 ·
12 收藏

文件描述符

一、什么是文件描述符 在Linux上一切皆文件,文件描述符是内核为了高效的管理已经被打开的文件所创建的索引,它是一个非负整数,用于指代被打开的文件,所有执行的I/O操作的系统调用都是文件描述符完成的。在Linux中,进程是通过文件描述符来访问文件的,文件描述符实际上是一个整数,程序启动时默认有三个文件描述符,分别是:0 stdin ...
原创
发布博客 2019.08.16 ·
337 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

栈和堆的概念和区别

一、概念区分 在进程地址布局(如下图),可见地址的分布情况,栈和堆所在的位置区域。 栈:由编译器自动分配释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。每当一个函数被调用,该函数返回地址和一些关于调用的信息,比如某些寄存器的内容,被存储到栈区。然后这个被调用的函数再为它的自动变量和临时变量在栈区上分配空间,这就是C实现函数递归调用的方法。...
原创
发布博客 2019.07.23 ·
645 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

new和malloc的区别

在c++中开辟内存,常用关键字new来开辟,new+类型 eg:int *p=new int; new来分配内存时:(1)调用operator new 函数(对于数组是operator new[])分配一块足够大的、未名的内 存空间以便存储特定类型的对象...
原创
发布博客 2019.07.22 ·
137 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

4G虚拟地址空间布局

4G虚拟地址空间布局如下图所示:一、其中,用户进程部分分段存储内容如下表所示(按地址递增顺序)名称 存储内容 代码段(.text) 可执行代码、字符串字面值、只读变量 数据段(.data) 已初始化且初始值为非0的全局变量和静态局部变量 BSS段 未初始化或初始值为0的全局变量和静态局部变量 栈 局部变量、函数参数、返回地址...
原创
发布博客 2019.07.18 ·
400 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

不定长顺序表

一、不定长顺序表:与定长顺序表相比不定长顺序表的区别在于我们可以通过扩容来进行增添元素的存储单元。二、不定长顺序表的结构:是对定长顺序表的一种改进,在初始时开辟内存被利用完后,还要继续插入数据时,这时候据需要扩容。故顺序表的结构设计就要发生变化。三、不定长顺序表的操作:1、初始化2、判空3、判满、扩容4、任意pos位置的插入5、删除key值6、删除pos位置的数...
原创
发布博客 2019.05.06 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

定长顺序表

一、顺序表:逻辑相邻,物理地址也相邻二、顺序表的结构:三、 顺序表的操作:1、初始化2、任意pos位置的插入3、删除某个数据4、删除指定位置的数据,并保存该数据。5、获取任意位置的数据6、修改任意位置的数据7、查找某个数据,并返回其下标8、打印顺序表9、销毁//Seqlist.h//定长顺序表#pragma once#define ...
原创
发布博客 2019.04.21 ·
137 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

java的应用题

发布资源 2018.12.19 ·
doc

字符串常量与字符数组的内部存储区别

例如:在主函数中,二者int main(){    char *str1 = "abcde";    //字符串常量    char str2[] = "abcde";     //字符数组    str1[0] = 'x';  //str1中只存放了"abcde"的地址,所以不能对其进行修改,这个语句语法没有错,但编译出现崩溃    str2[0] = 'x';  //字符数组st...
原创
发布博客 2018.07.17 ·
571 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算字符串长度—sizeof 与 strlen 的区别

sizeof:计算数组长度,返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,该类型保证能容纳实现所建立的最大对象的字节大小strlen:计算字符串的有效长度(不包括'\0')以下是strlen函数实现代码:我们根据sizeof、strlen的区别,来分析计算出主函数输出的值。#include &lt;stdio.h&gt;#include &...
原创
发布博客 2018.07.16 ·
2393 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

指针与地址

实际上,指针==地址取地址符&amp;表示取变量地址就是在变量前加&amp;   “*”表示解引用或间接访问符int a=10;int *p=&amp;a *p表示整型地址变量  &amp;a表示整型地址值  将a的整型地址值赋给整型地址变量P                           *p=100;     间接把a的值修改为100 int **pp=&amp;p;  **pp整型地址...
原创
发布博客 2018.07.11 ·
4617 阅读 ·
1 点赞 ·
0 评论 ·
7 收藏
加载更多