- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 线程同步相关
一、 线程同步◼ 线程的主要优势在于,能够通过全局变量来共享信息。不过,这种便捷的共享是有代价的:必须确保多个线程不会同时修改同一变量,或者某一线程不会读取正在由其他线程修改的变量。◼ 临界区是指访问某一共享资源的代码片段,并且这段代码的执行应为原子操作,也就是同时访问同一共享资源的其他线程不应终端该片段的执行。◼ 线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作,而其他线程则处于等待状态。二、如何保证线程同步
2021-10-04 20:02:49
149
原创 线程相关内容
一、线程的概述◼ 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程程序的一个特例,该进程只包含一个线程)◼ 进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单位。◼ 线程是轻量级的进程(LWP:Light Weight Process),在 Linux 环
2021-09-29 08:50:16
178
原创 signal信号捕捉函数
1、signal信号捕捉函数/*#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);- 功能:设置某个信号的捕捉行为- 参数:- signum: 要捕捉的信号- handler: 捕捉到信号要如何处理- SIG_IGN : 忽略信号- SIG_DFL : 使用信号默认的行为- 回调函数 : 这个函数是内核调用,程
2021-09-11 20:08:23
603
原创 信号相关函数
1、信号相关概念1、 信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。2、发往进程的诸多信号,通常都是源于内核。引发内核为进程产生信号的各类事件如下: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入Ctrl+C 通常会给进程发送一个中断信号。 硬件发生异常,即硬件检测到一个错误
2021-09-10 17:01:54
295
原创 内存映射相关
一、内存映射◼ 内存映射(Memory-mapped I/O)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件2、使用内存映射完成父子间通信#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);-功能:将一个文件或者设备数据映射到内存中-参数:-void *addr: NULL,由内核指定-length: 要映射的数
2021-09-10 09:06:34
331
原创 有名管道的使用
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例
2021-09-08 11:29:22
3015
原创 匿名管道相关
1、进程间通讯概念◼ 进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。◼ 但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication )。 ◼ 进程间通信的目的:◼ 数据传输:一个进程需要将它的数据发送给另一个进程。◼ 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终
2021-09-03 15:49:18
165
原创 进程的相关基础
1、程序和进程程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程:◼ 二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释文件中的其他信息。(ELF可执行连接格式)◼ 机器语言指令:对程序算法进行编码。◼ 程序入口地址:标识程序开始执行时的起始指令位置。◼ 数据:程序文件包含的变量初始值和程序使用的字面量值(比如字符串)。◼ 符号表及重定位表:描述程序中函数和变量的位置及名称。这些表格有多重用途,其中包括调试和运行时的符号解析(动态链接)。◼
2021-08-29 11:27:59
176
原创 Linux的IO函数04
1.目录遍历函数//打开一个目录#include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);参数:-name:需要打开的目录的名称返回值:返回DIR * 类型,理解为目录流信息错误返回NULL#include <dirent.h>struct dirent *readdir(DIR *dirp);-参数:dirp是Opendir返回的结果-返回值:struct
2021-08-26 16:01:03
162
原创 Linux的IO函数3
1.目录操作函数/*#include <unistd.h>int chdir(const char *path);作用:修改进程的工作目录比如在/home/kekecoder启动了一个可执行程序,a.out,进程的工作目录/home/kekecoder参数:Path:需要修改的工作目录#include <unistd.h>char *getcwd(char *buf, size_t size);作用:获取当前工作目录参数:-buf:保存到buf里面,存储的路径
2021-08-24 17:17:40
91
原创 Linux的IO函数 2
一、Linux的IO函数 21.stat, lstat函数/*#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *pathname, struct stat *statbuf); 作用:获取文件相关信息 kekecoder@kekecoder-virtual-machine:~/Linux/lesson12$ stat a.
2021-08-24 15:29:15
122
原创 Linnux的IO函数 1
1、标准C库的IO函数和Linux区别1、标准C库的IO函数可以跨平台,调用不同平台的API去打开文件数据先写到缓冲器,再从缓冲器写到磁盘,提高工作效率 BUffer 8192byte,对数据进行读写用标准C库。2、Linux的IO函数比较偏底层,标准C库的IO函数比较高级网络通信使用Linux系统的IO函数2、虚拟地址虚拟地址空间不存在,内存加载,虚拟地址空间中的数据被CPU的逻辑管理单元MMU映射到物理空间,虚拟地址和物理地址进行转换。程序:代码进程:运行中的的程序,加载到内存里面,系统给
2021-08-23 20:28:43
103
原创 GDB调试
1、什么是 GDB◼ GDB 是由 GNU 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。◼ 一般来说,GDB 主要帮助你完成下面四个方面的功能:启动程序,可以按照自定义的要求随心所欲的运行程序可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式)当程序被停住时,可以检查此时程序中所发生的事可以改变程序,将一个 BUG 产生的影响修正从而测试其他 BUG2、准备工作◼ 通常,在为调试而编
2021-08-18 15:59:06
132
原创 Makefile的使用
一、Makefile使用1、什么是 Makefile◼ 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile 文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 文件就像一个 Shell 脚本一样,也可以执行操作系统的命令。◼ Makefile 带来的好处就是“自动化编译” ,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。make
2021-08-17 16:46:47
131
原创 GCC编译器和静态库动态库制作使用
C++学习day03一、GCC编译器1.GCC编译器的介绍◼ GCC 原名为 GNU C语言编译器(GNU C Compiler) ◼ GCC(GNU Compiler Collection,GNU编译器套件)是由 GNU 开发的编程语言译器。GNU 编译器套件包括 C、C++、Objective-C、Java、Ada 和 Go 语言前端,也包括了这些语言的库(如 libstdc++,libgcj等)◼ GCC 不仅支持 C 的许多“方言”,也可以区别不同的 C 语言标准;可以使用命令行选项来
2021-08-13 20:05:06
188
3
原创 Linux开发系统搭建
Linux开发系统的搭建Linux开发环境搭建1 、安装Linux 系统(通过虚拟机虚拟出一个Linux系统)2、安装XShell和XFTP3、安装 Visual studio code4 如何在虚拟机软件中虚拟出一个Linux操作系统5、如何通过Xshell远程连接到服务器6、使用visual studio code远程连接到虚拟机Linux开发环境搭建1 、安装Linux 系统(通过虚拟机虚拟出一个Linux系统)下载地址:2、安装XShell和XFTP下载地址:Xshell:远程连接Lin
2021-08-10 21:26:09
161
原创 【网络流量入侵检测数据集】CIC-IDS-2017数据集预处理
网络流量入侵检测数据集CIC-IDS-2017数据预处理CIC-IDS-2017 数据集包含良性和最新的常见攻击,类似真实世界数据(PCAPs)。它的数据采集截至2017年7月7日(星期五)下午5时,共计5天。星期一是正常的一天,只包括正常的流量。实现的攻击包括暴力FTP、暴力SSH、DoS、Heartbleed、Web攻击、渗透、僵尸网络和DDoS。他们分别于周二、周三、周四和周五上午和下午被执行下载数据集CIC-IDS-2017 入侵检测数据集,包含以下8个CSV文件:可以用于机器学习的训练
2021-01-27 19:36:40
23061
69
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人