- 博客(116)
- 资源 (1)
- 收藏
- 关注
原创 【Linux】进程调度以及常见算法
文章目录什么是进程调度进程调度的原因常见调度算法1. 先来先去服务(FCFS)概念:要领:优点:缺点:2. 短作业(进程)优先调度算法SJ(P)F概念:优点:缺点:3.优先级调度算法分类特点:4. 轮转法(RR)概念:定义:特点:5.多级队列调度(MLQ)概念:关键:方法:6. 多级反馈队列算法(MLFQ)概念:优点:什么是进程调度操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则来选择进程(请求)来占用资源
2022-05-19 20:54:31 1062
原创 【刷题】笔试训练3——合法括号序列判断/另类加法
文章目录1.原题链接代码2.原题链接描述代码1.原题链接合法括号序列判断给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。测试样例:“(()())”,6返回:true测试样例:“()a()()”,7返回:false测试样例:“()(()()”,7返回:false代码class Parenthesis {public: bool chkParenthesis(string A, int n) { /
2022-05-19 20:30:51 223
原创 【刷题】笔试训练2——Fibonacci数列
文章目录Fibonacci数列描述输入描述:输出描述:代码Fibonacci数列链接:Fibonacci数列描述Fibonacci数列是这样定义的:F[0] = 0,F[1] = 1,for each i ≥ 2: F[i] = F[i-1] + F[i-2],因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X
2022-05-17 23:16:00 194
原创 【刷题】笔试训练——每日两题
文章目录第一题描述输入描述:输出描述:代码第二题描述输入描述:返回值描述:代码第一题牛客:WY16 不要二不要2描述二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述:每组数组包含网格
2022-05-16 08:40:59 174
原创 【C++】面试常考的三大特性——封装、继承、多态
文章目录封装继承多态封装1.什么是封装封装是将数据与方法进行结合,隐藏对象的部分属性和实现细节,对外开放一些接口,通过这些接口约束,类外可以合理的访问类内的属性2.封装的作用封装可以让数据隐藏让类外合理访问类内的数据3.为什么需要封装将一个对象的属性和行为结合在一起更符合人们对事务的认知,通过访问限定符将部分功能开放出来域其他对象进行交互,外部用户是不需要知道具体的实现细节的,即使知道了,也只会增加使用和维护的难度,让事情变得复杂例如我们坐火车买票,我们只需要知道票在哪买的,去哪里可以乘车
2022-05-11 17:21:29 2230
原创 【刷题】二叉树的最大深度
原题链接二叉树最大深度文章目录解法一递归解法二层序遍历解法一递归1.递归求左子树的最大高度2.再递归求右子树的最大高度3.返回左右子树中较深的那个,加上根节点的高度1class Solution {public: /** * * @param root TreeNode类 * @return int整型 */ int maxDepth(TreeNode* root) { // write code here
2022-05-11 09:38:43 149
原创 【数据库】如何安装mariadb
文章目录1.查看当前机器是否拥有mariadb2.查看是否有可用的安装包3.安装mariadb4.启动数据库5.停止数据库6.重启数据库前提:我是在centos7下进行安装的1.查看当前机器是否拥有mariadbrpm -qa | grep mariadb这样代表没有,我们需要安装2.查看是否有可用的安装包yum list | grep mariadb看到有mariadb.x86_64等就代表有安装包,直接使用yum安装就可以3.安装mariadbyum install maria
2022-05-06 09:51:17 1320
转载 【Linux】在浏览器中输入一个URL会发生什么
文章目录一、大致分解应用层传输层网络层详细分解1. 解析 URL2. 浏览器封装 HTTP 请求报文3. DNS 域名解析获取 IP 地址4. 建立 TCP 连接三次握手过程5. 浏览器发送请求6. 负责传输的 IP 协议7. 使用 ARP 协议凭借 MAC 地址通信8. 服务器响应请求9. 断开 TCP 连接四次挥手过程详解四次挥手的过程如下为什么要四次挥手10. 浏览器显示界面面试中常考的一个题目,将它完整的细致的描述一下一、大致分解应用层浏览器封装 HTTP 请求报文DNS 解析域名获得目
2022-04-25 23:06:14 542
原创 【Linux】典型的IO模型
文章目录什么是IO1.阻塞IO1.1 定义1.2 举例1.3 图解2.非阻塞IO2.1 定义2.2 举例2.3 图解3.信号驱动IO3.1 定义3.2 图解4.异步IO4.1 理解4.2 举例5.多路IO复用5.1作用5.2 分类什么是IOIO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如打开一个浏览器,访问百度首页,浏览器这个程序就需要通过网络IO获取百度的网
2022-04-23 21:15:53 545
原创 【Linux】动态库和静态库
静态库(.a):程序在编译链接的时候,把库的代码链接到了可执行文件中,程序运行的时候不需要静态库了动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码一个动态库链接可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码在可执行文件开始运行前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)动态库可以在多个程序之间
2022-04-18 20:41:04 239
原创 【Linux】理解文件系统
文章目录什么是文件系统Block Group创建文件的四个操作理解硬链接方法理解软链接方法我们使用 ls -l命令,除了可以看到文件名,还可以看到文件元数据,如图这是因为ls -l是读取磁盘上的文件信息,然后显示出来stat命令也可以看到更多信息,如图我们来解释一下什么是文件系统上图为Linux ext2文件系统,磁盘的文件系统图,擦盘是典型的块设备,硬盘分区被划分为一个个block,一个block的大小是由格式化的时候确定的,并且不可以更改,Block Groupext2文件系统会
2022-04-18 19:46:20 1462
原创 【Linux】Linux下查找命令grep、find、whereis总结
文章目录grep1.作用2.特点3.用法4.参数5.应用find1.作用2.特点3.用法1.按文件名搜索2.按照文件大小查找3.按照时间搜索4.按照权限搜索5.按照所有者和所属组搜索6.按照文件类型搜索whereis1.作用2.用法3.参数grep1.作用grep是Linux下一种强大的文本搜索工具,用于查找文件里符合条件的字符串,可以查看日志,查看命令输出,它能使用正则表达式搜索文本,并将匹配的行打印出来,使用权限是所有用户2.特点grep大小写敏感支持正则表达式3.用法grep [o
2022-04-14 09:39:16 1701
转载 【C++】C/C++什么是内存泄露,内存泄露如何避免
C/C++什么是内存泄露,内存泄露如何避免? 1. 内存溢出2. 内存泄漏3. 造成内存泄露常见的三种情况3.1 指针重新赋值3.2 错误的内存释放3.3 返回值的不正确处理 4. 如何避免内存泄露?5. 内存泄露检测工具valgrind 1. 内存溢出 内存...
2022-04-09 15:25:53 264
原创 【C++】哈希详解--哈希冲突解决办法
文章目录1.哈希概念2.哈希碰撞(哈希冲突)2.1哈希冲突产生原因2.1.1哈希函数设计原则2.1.2常见哈希函数2.2 处理哈希冲突的方法1.闭散列定义1.1线性探测1.2二次探测哈希负载因子2.开散列1.定义2.实现3.扩容3.开散列与闭散列比较1.哈希概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2N ),搜索的效率取决于搜索过程中元素的比较次数。所以我们期待
2022-04-08 09:19:58 2297
原创 【PC页面设计项目】宠物物流页面设计(源码+图示)
文章目录页面之间联系功能简介业务流程图1.体检业务流程图2.物流业务流程图用例图分析页面源码及效果展示1.登录页面1.源码2.图示2.注册界面1.源码2.图示3.首页界面1.源码2.图示4.体检预约1.源码2.图示5.物流页面1.源码2.图示入口是登录界面页面之间联系功能简介业务流程图1.体检业务流程图2.物流业务流程图用例图分析页面源码及效果展示1.登录页面1.源码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit
2022-04-03 15:24:29 627
原创 【在线OJ模拟项目】项目导航
在线OJ模拟项目项目名称链接跳转01——项目环境搭建及基本测试01链接02——项目模块划分及理解分析02链接03——模块代码详解+注释03链接04——模块之间调用与成果展示04链接05——项目技术学习05链接...
2022-04-03 10:11:01 148
原创 【在线OJ模拟项目】05——项目技术学习
文章目录1.httplib库1.项目中用到的方法2.回调函数3.Get函数4.Post函数4.Request类6.response类7.listen接口2.ctemplate1.介绍2.四种标记3.使用4.TemplateDictionary类3.JSON1.什么是JSON2.JSON 实例4.Boost库1.简介2.split方法1.httplib库在项目种我们用到了头文件httplib.h,他的作用是帮助我们把自己的centos虚拟机变成一个http服务器,能够根据请求方法回调函数进行处理请求1.
2022-04-03 09:52:31 292
原创 【在线OJ模拟项目】04——模块之间调用与成果展示
文章目录模块之间的调用成果展示1.将服务端运行起来2.用IP端口号等去浏览器访问3.点击一个试题(例如1)4.可以在试题框里任意的编码5.点击submit6.编译运行结果模块之间的调用成果展示1.将服务端运行起来2.用IP端口号等去浏览器访问3.点击一个试题(例如1)4.可以在试题框里任意的编码5.点击submit6.编译运行结果...
2022-04-02 23:45:47 266
原创 【在线OJ模拟项目】03——模块代码详解+注释
文章目录图示1.模块分解2.模块调用HTTP模块oj_sever.cpp代码试题模块oj_model代码编译运行模块compile.hpp代码工具模块oj_view.hpp代码tools.hpp代码试题的配置文件oj_data1.文件夹11.desc.txt2.header.cpp3.tail.cpp2.oj_config.cfg填充的html源码template1.all_questions.html2.question.html3.case_result.htmlmakefile图示1.模块分解
2022-04-02 19:02:11 1747 1
原创 【在线OJ模拟项目】02——项目模块划分及理解分析
文章目录图解第一部分http模块1.获取请求2.回复响应3.日志第二部分试题模块1.按照什么格式保存试题2.描述题目属性3.Load函数4.GetAllQuestions/GetOneQuestion第三部分编译运行模块1.编译条件2.错误退出3.流程第四部分工具模块OjView类1.FIileUtil类2.StringUtil类3.UrlUtil类4.TimeUtil类日志函数整个项目是一个B/S架构(浏览器——服务器),在上一节解决了环境的问题,这节详解各个模块的功能图解第一部分http模块
2022-04-01 23:44:48 555
原创 【C++】类与对象——类的六个默认成员函数
文章目录一、构造函数1.概念2.特征编译器生成的默认成员函数的意义3.成员变量的命名风格4.构造函数体赋值5.初始化列表5.1 格式5.2 注意事项5.3初始化顺序6.explicit关键字析构函数1.概念2.特征拷贝构造函数类中有六个默认成员函数,即使一个成员都没有,空类中也不是空白的,任何一个类在我们不写的情况下都会默认生成6个成员函数下面一一介绍一、构造函数1.概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对
2022-03-30 21:05:15 1618
原创 【在线OJ模拟项目】01——项目环境搭建及基本测试
文章目录✔项目目的项目实现什么功能项目模块划分✔环境搭建1.cpp-httplib开源库2.升级gcc1.查看gcc的版本2.更新步骤3.安装jsoncpp4.安装boost环境ctemplate安装步骤(只支持centos7 x86_64)💙小插曲pip安装步骤✔测试httplib-demo✔项目目的项目实现什么功能1.浏览器可以访问当前在线oj当中的所有题目,获取题目的列表2.点开任意一个题目,并且能够作答3.编译用户提交的代码,并且返回执行结果支持查看题目列表支持点击单个题目支持代
2022-03-26 16:24:22 2953 2
原创 【C++】深刻了解文件描述符与重定向
文章目录✔理解文件描述符文件描述符的分配原则结论文件描述符(文件句柄)泄漏所有进程允许打开的最大 fd 数量命令结果所有进程已经打开的 fd 数量以及允许的最大数量命令结果单个进程允许打开的最大 fd 数量命令结果✔文件描述符 & 文件流指针的区别✔重定向✔理解文件描述符文件描述符的本质就是一个小整数1.操作系统会为每一个进程在磁盘当中创建一个以进程号命名的文件夹,在该文件夹下有一个fd文件夹,保存的信息为该进程打开的文件描述信息。2.当我们打开文件时,操作系统在内存中要创建响应的数据结
2022-03-24 22:30:58 2113
原创 【C++】引用详解——引用与指针的区别
文章目录1.引用概念举例2.引用特点举例3.常引用4.引用应用场景1.做参数2.使代码更加简洁化3.做返回值举例5.传值、传引用效率比较5.1参数举例结果5.2返回值举例结果6.指针和引用的共性传引用的汇编代码传地址的汇编代码7.指针和引用的不同1.引用概念类型名& 引用变量名(对象名)=引用实体;引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会为引用变量开辟空间,他和他的引用共用同一块内存举例注意:引用类型必须和引用实体是同种和类型的void Test(){
2022-03-21 21:12:52 1439
原创 【C++】类与对象——this指针的三两事
文章目录this指针的定义this指针的引入例子this指针的特性this指针存储地点this指针可以为空吗我们之前学习了类的基本知识,例如类的定义,类的访问限定符,以及类的大小怎么求解,今天我们扒一扒this指针记得复习之前的内容🎅类与对象——什么是类?定义?访问?作用域?🎅类与对象——如何计算类对象的大小this指针的定义this指针是类成员函数的第一个隐藏函数,该指针时时刻刻指向调用成员函数的对象this指针的引入例子class Dta{public: void displ
2022-03-19 00:22:12 932
原创 【C++】C++中class和struct的相同与不同
文章目录C++与C语言中struct的区别C++中struct和class的相同点C++中struct和class的不同点C++与C语言中struct的区别C++中的struct对C语言中的struct进行扩充,主要区别如下CC++成员函数不能可以静态成员不能可以防控属性默认public,不能修改public\private\protected继承关系不可以继承可以从其他结构体继承初始化不能直接初始化数据成员可以C++中struc
2022-03-17 22:56:41 1613
原创 【Linux】基础IO总结
文章目录C语言操作接口1.打开2.写3.读4.偏移5.关闭举例1写文件举例2读文件系统调用操作接口1.打开2.写3.读4.偏移5.关闭举例1写文件举例2读文件总结C语言操作接口1.打开fopenFILE *fopen(const char *path, const char *mode)path :打开文件的方式(文件路径+文件名称)mode: 以何种方式打开r:以只读方式打开,当文件不存在时,就打开失败r+:以读写方式打开,当文件不存在时,就会打开失败w:以只写方式打开,如果文
2022-03-16 23:06:13 222
原创 【问题解决】centos7下如何关闭防火墙
文章目录查看防火墙是否运行切换到root下1.执行下面的命令2.查看1.开机禁止防火墙服务器2.开机启动防火墙服务器我在客户端与服务端的网络编程中遇到了connect refuse问题, 在客户端用curl探测端口发现22端口正常9999端口被拒绝推测可能是防火墙的原因,以下是centos7下关闭防火墙的方法查看防火墙是否运行利用下面的命令查看防火墙是否运行systemctl status firewalld.service这里的active显示防火墙正在运行切换到root下
2022-03-11 22:39:02 2036
原创 【Linux】用进程控制知识做一个简易版shell
文章目录什么是shell图示分析代码什么是shellshell是命令行解释器的统称当前使用的shell的名字是bash,bash其实也是一个程序当前我使用的是centos7下实现一个简易版的minshell图示分析shell的作用是读取一行新的输入,建立一个进程,在这个进程中运行程序,并等待这个进程结束。因此一个shell需要完成以下过程,且shell不是只能执行一次命令,因此需要循环运行1.获取命令行2.解析命令行3.建立一个新进程4.替换子进程5.父进程等待子进程退
2022-03-07 21:28:22 453 1
原创 【Linux】进程控制——程序替换
文章目录✅1.复习✅2.学习程序替换2.1.替换原理2.2.替换函数2.3.函数解释2.4.命名理解2.5.如何替换2.6.exec举例2.7.图解✅3.练习题第一题(多选)第二题(单选)第三题(多选)✅1.复习每日一问,今天也要好好复习????♀️进程控制——深刻理解进程创建进程控制——进程终止的三种方法进程控制——进程等待进程等待2.0,如何获取子进程的status✅2.学习程序替换2.1.替换原理用fork创建子进程后执行的是和父进程相同的程序,但是有可能执行不同的代码分
2022-02-21 00:40:46 714
原创 【Linux】进程等待2.0,如何获取子进程的status
文章目录①wait方法1.格式2.返回值3.参数②waitpid方法1.格式2.返回值3.参数③获取子进程status1.理解2.如何获取正确的返回值方法一代码结果方法二代码结果前面一节简单的学习了进程等待的两种方法进程控制——进程等待,今天的目标如下从函数返回值和参数上分析wait方法从函数返回值和参数上分析waitpid方法学会获取子进程status的方法①wait方法1.格式#incldue <sys/types.h>#include <sys/wait.
2022-02-18 00:35:35 1239
原创 【Linux】进程控制——进程等待
文章目录✔方法一`int wait(int *status);`如图不等待的情况等待的情况✔方法二`int waitpid(int pid, int *status, int option);`如图无法避免僵尸进程需要循环判断两种方法的不同进程等待有两种方法什么是进程等待进程等待是进程的一种状态, 是父进程等待子进程退出时的一个过程,为什么要 进程等待因为要避免产生僵尸进程.✔方法一int wait(int *status);处理退出的子进程,那么如果调用这个接口的时候没有子进程
2022-02-15 17:45:06 1963
原创 【Linux】进程控制——进程终止的三种方法
进程终止的三种方法,return ,exit(),_exit(),以及exit和_exit的区别,还有缓冲区的作用
2022-02-15 14:28:30 2131 1
原创 【C++】什么是大小端,如何判断大小端
文章目录什么是大小端大小端与操作系统有关嘛如何判断大小端方法一方法二什么是大小端大小端也可以理解为字节顺序,或者端序、尾序,就是大端序(Big-Endian)、小端序(Little-Endian)。1.大端模式:是指数据的高字节保存在内存的低地址中;2.小端模式:是指数据的高字节保存在内存的高地址中;例如0x12345678大小端与操作系统有关嘛大小端与操作系统是没有关系的大小端主要有用于存储的顺序,与存储器(硬件)关系比较大编译器和操作系统仅仅是配合CPU编译好相应的代码,而
2022-02-07 23:35:40 4037 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人