操作系统是怎么组织文件的?虚拟文件系统(Virtual File System)
ext2文件系统为例启动块(boot block):大小就是1KB,由pc标准确定。后面的都是块组构成,分为六部分,如图超级块(super block):整个分区的信息,在每个块组都有一份拷贝块组描述符表(gdt):本块的描述信息块位图(block bitmap):显示块是否占用inode位图:占一个块,表示每一个inode是否空闲可用inode表:文件类型,权限等等数据块(data block):常规文件数据,目录信息,符号链接,设备文件stat命令:读取文件的inode信息,然后把i
Linux下自己从0开始动手实现一个shell
源代码/************************************************************************* > File Name: kkbshell.c > Author: liuhao > Mail: [email protected] > Created Time: Mon 13 Sep 2021 07:16:36 PM CST *********************************************
Linux下用rar压缩和解压文件
一.widonds下打包rar文件并上传yum install lrzsz rz test.rar二、下载并安装rar软件2.1 下载mkdir -p /home/oldboy/toolscd /home/oldboy/toolswget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz2.2 安装tar zxvf rarlinux-3.8.0.tar.gzcd rarmakemake install 三、rar命令语法将/e
R语言取算术平均值函数
getqmean <- function(x, y) { n <- length(x) sum <- 0 for (i in 1: n) { sum <- sum + x[i] * y[i] } print(sum / sum(y))}
Linux网络模型epoll
epoll是一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。IO多路复用是指在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其进行读写操作Iepoll的核心是3个API,核心数据结构是: 1个红黑树和1个链表epoll_create 创建epollevent对象红黑树双向链表队列epoll_ctl 注册事件把感兴趣的事件添加到红黑树里面epoll_wait 获得可用事件的通知-在工作线程里面epoll_createint epo
阻塞和非阻塞&&同步和异步概念及其区别
阻塞和非阻塞阻塞和非阻塞指的是调用者(程序)在等待返回结果(或输入)时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。同步和异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由调用
比手写makefile好用一万倍CMake!
当尝试过写了很多很多的makefile代码因为某些逻辑错误无法修改bug的时候,当因为无法理解文件引用的逻辑时(我深受其害)…makefile?代码引用逻辑就够喝一壶了。Linux下安装cmakesudo apt-get install cmake就用四个cmake基本命令吧# CMakeLists.txt# 指定cmake最小版本cmake_minimum_required(VERSION 3.0)# 生成项目名称project(MyLinuxServerTest)# 包含头文件路
GPL协议和GNU系统
在C++SGI-STL3.3时看到了一个词copyright/* * Copyright (c) 1996-1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * prov
R语言:方差分析之单因素方差分析和双因素方差分析
方差分析方差分析(Analysis of Variance,ANOVA),是利用样本数据检验两个或两个以上的总体均值之间是否有差异的一种方法;(缘起多个处理问题-即多个因变量)即若所有自变量对应的因变量的均值相等,则意味着自变量对因变量没有影响,没有显著差异散点图观察不能提供充分的证据证明不同行业被投诉的次数之间有显著差异这种差异可能是由于抽样的随机性所造成的常用情况:自变量是分类变量,因变量是数值变量方差分析中常用的基本假定是:正态性:每个总体均服从正态分布,也就是说,对于每一个水
使用这11个代码,可以大大地简化我们的代码。
在这篇文章中,我将与你分享一些关于JS的技巧,可以提高你的JS技能。 1.避免 if 过长 如果判断值满足多个条件,我们可能会这么写: 像这样如果有多个条件,if 条件就会很我,可读性降低,我们可以这
fcntl设置非阻塞
#include <fcntl.h>#include <unistd.h>int fcntl(int fd, int cmd, ... /* arg */ );/* 样例 */int flags = fcntl(fd, F_GETFL);flags |= O_NONBLOACK;fcntl(fd, F_SETFL, flags);
C++/C的#pragma参数选项及其解析
每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每个编译程序在保留C和C++语言的整体兼容性时提供不同机器和操作系统特定的功能。编译指示被定义为机器或操作系统特定的,并且通常每种编译程序是不同的。语法:#pragma token_string“token_string”是一系列字符用来给出所需的特定编译程序指令和参数。数字符号“#”必须是包含编译指令的行中第一个非空白字符;而空白字符可以隔开数
汇编语言程序设计(1):栈以及栈的使用
简单的说一说。(栈的特性我在此就不做赘述了,LIFO)CPU提供的栈机制现今的CPU中都有栈的设计。8086CPU提供相关的指令,支持用栈的方式访问内存空间。基于8086CPU的编程,可以将一段内存当作栈来使用。操作:(栈的操作都是一个字,不是字节)入栈:push出栈:pop问题:CPU怎么知道一段内存空间被当作栈使用?执行push和pop的时候,怎么知道哪个单元是栈顶单元?回答:栈段寄存器SS(存放栈的段地址),栈顶指针寄存器SP(存放栈顶的偏移位置)。任意时刻,SS:SP指向栈顶位
Django中间件和CSRF跨站请求攻击
中间件类须继承自django.utils.deprecatiion.MiddlewareMixin类中间件开启中间件# settings.pyMIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware',
Django缓存机制cache和token会话存储
Django缓存机制和token存储缓存配置缓存创建缓存数据表并迁移文件到文件Django中使用缓存局部缓存缓存api的使用浏览器缓存策略强缓存协商缓存token生成token基本知识JWTheaderPayloadSignature服务端生成Token加密算法Token如何存储缓存定义:缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存比如redis数据库意义:视图渲染有一定成本,数据库的频繁查询过高;所以对于低频变
LeetCode 105.从前序和中序遍历序列构建二叉树
目录1.题目2.思路3.c++代码1.题目给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点示例1Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例2Input: preorder = [-1], inorder = [-1]Output: [-1]2.思路知识回顾:前序遍历规律:中左右;中序遍历规律:左中右该
今日推荐
周排行