自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Linux用户权限

Linux的权限一、Linux权限的概念二、Linux权限管理1 、文件访问者的分类2 、文件类型和访问权限3、文件访问权限的相关设置方法一、Linux权限的概念Linux下有两种用户:超级用户(root)、普通用户超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$“。命令:su - [用户名]功能:切换用户。例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户u

2022-02-23 20:49:52 21209 35

原创 socket编程—UDP套接字

/server要的是port必须明确,而且不变,但是client只要有就行!//b、但是,客户端不需要显示的bind!一般的服务器port,必须是众所周知(不仅是被人,也可以被各种软件等知道的)的,并且轻易不改变!整个互联网可以看作一个大的OS,所有在网络上的行为,基本都是在一个大的OS内,进行进程间通信!//就是client正常发送数据的时候,OS会自动给你bind,采用的是随机端口的方式!作为一个服务器,要不要让客户知道,对应的服务器的地址(ip+port)?互联网世界,是一个进程间通信的世界。

2022-10-18 13:08:51 1354

原创 网络基础(一)

例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。注:所谓 “局域网” 和 “广域网” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域 网。

2022-10-18 12:52:12 458

原创 MySQL—表的增删改查

范围匹配,[a0, a1],如果 a0

2022-10-16 22:30:48 838

原创 MySQL——表的约束

主键不过是**在`众多事物`当**中选择了一个事物(该事物可能具有唯一性也可能不具有)来成为主键!此时没有被真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/notnull,default,comment,zerofill,primary key, auto_increment,unique key 。一、空属性两个值:null(默

2022-10-15 00:49:26 1784

原创 负载均衡式在线OJ

后端接收用户代码并将用户代码和测试用例组合,然后选择负载最低的主机,主机服务器把用户提交请求中的代码,写进一个XXX.CPP文件当中,子进程针对这个XXX.CPP进行编译,得到XXX.exe运行文件,如果编译出错,则把错误信息写入一个_stderr_fd文件当中。子进程针对XXX.exe文件进行执行,把标准输出和标准错误写进_stdout_fd、和_stderr_fd两个文件中,服务器读取_stdout_fd、和_stderr_fd获取运行结果并返回。3、获取题目信息成功,将所有题目数据构建成网页(用。

2022-10-14 15:52:47 1018

原创 MySQL——数据类型

数据类型本质也是一种约束:一旦你不满足我的条件,我直接终止你.约束给数据表中的数据,提供了极大的确定性。

2022-10-06 17:22:45 1572

原创 MySQL基础

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。insert into student (id, name, gender) values (1, ‘张三’, ‘男’);存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。DML中又单独分了一个DQL,数据查询语言,代表指令: select。

2022-10-05 15:42:28 519

原创 MySQL基础——表的操作

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。alter table 表名 modify 字段名(必须已经cunz) 新的字段类型;character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准。collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。alter table 表名 change 旧字段名 新字段名 新字段类型;alter table 表名 add 字段名 字段类型;

2022-10-05 15:41:14 1125

原创 MySQL基础——库操作

创建数据库、字符集和校验规则、操纵数据库、数据库删除、 查看连接情况

2022-10-05 15:38:42 583

原创 基于boost库的搜索引擎

Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。项目实现了一个Boost站内搜索引擎当启动服务器时先启动parser.cc预处理模块,先对boost离线库文件中的html文件进行解析,获得标题、内容和url,然后调用index.hpp模块,根据预处理模块结果完成正排索引和倒排索引,至此服务器启动完毕。当用户输入查询内容时。...

2022-08-20 19:02:35 1393

原创 Linux—进程状态

Linux—进程状态

2022-05-22 23:13:18 1422

原创 Linux—fork初识

fork初识一、通过系统调用创建进程-fork初识二、父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)三、fork有两个返回值一、通过系统调用创建进程-fork初识认识fork现象1:现象2:现象3:为什么会出现这种现象呢?说明不只一个人在运行,而是两个执行流在执行的。本质上是fork之后产生两个执行流。所以我们用fork来创建子进程,二、父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)如何理解fork创建子进程1、目前我们创建进程的方式有

2022-05-07 22:56:21 487

原创 Linux进程概念

Linux进程概念一、冯诺依曼体系结构二、操作系统一、冯诺依曼体系结构我们常见的计算机,如笔记本大部分都遵守冯诺依曼体系。冯诺依曼体系结构分为以下结构:计算机硬件组件组成1.输入设备:键盘、磁盘、网卡、显卡、话筒等;2.输出设备:显示器、磁盘、网卡、显卡等;3.存储器(内存)4.运输器&&控制器(CPU)工作原理传输数据时。输入设备的数据先预加载到存储器中,再通过存储器将数据交给CPU进行处理,CPU再将结果写回存储器,最后再由存储器将结果刷新到输出设备。为什

2022-05-04 21:04:35 2244

原创 Linux项目自动化构建工具-make/Makefile

make/Makefile一、了解make/Makefile二、生成可执行三、make原理四、程序的清理一、了解make/Makefile对于make/Makefile首先我们需要了解make是一条命令;Makefile是一个文件。make是一个命令,可以执行某条指令。这个我们理解,那Makefile是一个文件,那这个文件是干什么用的呢?这个文件内部一共包含两个东西1、依赖关系2、依赖方法我们可以在Makefile这个文件里面写入依赖关系和依赖方法这两个东西。那依赖关系和依赖方法怎么去理解呢

2022-04-30 23:10:55 979 1

原创 C++对多态的理解

C++对多态的学习一、多态的概念1.1 概念二、多态的定义及实现2.1多态的构成条件一、多态的概念1.1 概念多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。二、多态的定义及实现2.1多态的构成条件...

2022-04-26 20:01:49 2002

原创 C++对继承的理解

C++—继承一、继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化二、基类和派生类对象赋值转换一、继承的概念及定义1.1继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。#d

2022-04-17 23:26:58 562 16

原创 C++——string

C++对string的认识一、标准库中的string类一、标准库中的string类string链接: http://www.cplusplus.com/reference/string/string/?kw=string.总结:string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。string在底层实际是:basic_string模板类的别名typedef basic_string<char,char_traits, al

2022-04-10 22:06:57 1294 10

原创 C++初识模板

C++初识模板一、泛型编程二、函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则三、类模板3.1 类模板的定义格式3.2 类模板的实例化一、泛型编程在之前的编程中,一个函数当我们数据类型不同时时就要多写一份代码,如下:使用函数重载虽然可以实现,但是有一下几个不好的地方:重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型出现时,就需要增加对应的函数。代码的可维护性比较低,一个出错可能所有的重载均出错。这时C++中出

2022-03-24 22:54:41 248 7

原创 C++——new和delete操作符

C++——new和delete操作符一、new/delete操作内置类型二、new和delete操作自定义类型三、new和delete的实现原理3.1 内置类型3.2 自定义类型四、malloc/free和new/delete的区别五、总结:C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理一、new/delete操作内置类型注意:申请和释放单个元素的空间,使用new和delete

2022-03-23 17:18:19 1927 16

原创 C++类和对象——下

C++类和对象——下一、再谈构造函数一、再谈构造函数

2022-03-21 22:38:56 355 13

原创 C++类与对象 — 中(对构造、析构、拷贝构造、运算符重载的理解)

C++类与对象 — 中一、类的6个默认成员函数二、 构造函数2.1 、概念2.2、特性三、析构函数3.1 概念3.2 特性一、类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。二、 构造函数2.1 、概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。2.2、特性构造函数是特殊的成员函数

2022-03-14 16:02:49 440 15

原创 C++类和对象 ——上

C++类和对象—上一、面向过程和面向对象初步认识二、类的引入一、面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。如设计简单外卖系统:面向过程:关注实现下单、接单、送餐这些过程。体现在代码层面——方法/函数。面向对象:关注实现类对象间的关系,用户、商家、骑手以及他们之间的关系。体现到代码层面——类的设计及类之间关系。注:C++基于面向对象:面向过程和

2022-03-04 20:42:42 882 17

原创 Linux调试器-gdb使用

Linux调试器-gdb使用一、背景二、gdb的使用1、运行与查看命令2、断点设置命令3、代码调试命令一、背景 1、程序的发布方式有两种,debug模式和release模式。2、Linux 下gcc/g++出来的二进制程序,默认是release模式。3、要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项。4、 quit:退出gdb二、gdb的使用1、运行与查看命令1、r或run:运行程序。2、list/..

2022-03-02 17:23:33 1115 20

原创 Linux—vim编辑器的使用

Linux—vim编辑器的使用一、vim的基本概念二、 vim的基本操作一、vim的基本概念vim是一款多模式编辑器,用于编辑代码,他不能调试代码、运行代码,和记事本相识。vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:1、正常/普通/命令模式(Normal mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mo

2022-03-01 12:32:40 754 19

原创 C++深度理解函数重载

一、函数重载1.1 函数重载概念1、返回值不同,形参相同时不构成函数重载,因为调用时无法区分用那个函数。2、缺省值不同,不构成函数重载3、有些函数构成函数重载,但是在调用的时候会出现问题如:调用时Add出现歧义二、函数名字修饰(name Mangling)为什么C++支持函数重载,而C语言

2022-02-27 18:51:28 1616 23

原创 C++基础入门

C++基础入门:C++关键字(C++98)、命名空间、缺省参数、 函数重载、引用、auto关键字(C++11)、指针空值nullptr(C++11)

2022-02-25 23:48:10 1748 23

原创 二叉树的基本概念

二叉树的基本概念一、树概念及结构1.1树的概念1.2 树的相关概念二、二叉树概念及结构2.1概念2.2 特殊的二叉树2.3 二叉树的性质一、树概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i

2022-02-24 15:38:29 1142 6

原创 Linux基本指令

Linux基本指令基础指令详解ls指令pwd命令cd 指令ls 指令、pwd命令、cd 指令、 touch指令、05.mkdir指令、rmdir指令 && rm 指令man指令、cp指令、mv指令、cat、more指令、less指令、head指令、tail指令date指令、Cal指令 、find指令、grep指令、zip/unzip指令、tar指令、.bc指令uname –r指令基础指令详解ls指令语法: ls [选项] [目录或文件]功能:对于目录,该命令列出该目录下的所有

2022-01-26 11:50:20 313 12

原创 栈的增删查(C语言实现)

栈的增删查(C语言实现)一、栈的概念及结构二、栈的实现2.1、初始化栈与栈的销毁2.2、入栈与出栈2.3、取栈顶2.4、检测栈是否为空,如果为空返回非零结果,如果不为空返回0与获取栈中有效元素个数三、总代码块3.1、Stack.h3.2、Stack.c3.3、Tast.c一、栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操

2022-01-16 23:52:37 1310 4

原创 队列的增删查(C语言实现)

#define _CRT_SECURE_NO_WARNINGS 1#include"Queue.h"void QueueInit(Queue* q){ assert(q); q->head = NULL; q->tail = NULL;}void QueueDestroy(Queue* q)//销毁掉队列{ assert(q); Queue* cur = q->head; while (cur) { q->head = q->head->ne

2022-01-16 23:35:35 1399 2

原创 顺序表的优缺点

顺序表的优缺点一、顺序表的优缺点1.1、优点1.2、缺点二、链表(双向带头循环链表)2.1、优点2.2、缺点一、顺序表的优缺点1.1、优点支持随机访问(下标访问)。需要随机访问结构支持算法可以很好的适用。cpu高速缓存命中率高。1.2、缺点头部中间插入删除时间效率低。O(N)连续的物理空间,空间不够了以后需要增容。a、增容有一定程度消耗。b、为了避免频繁增容,一般我们都按倍数去增,用不完可能存在一定的空间浪费。二、链表(双向带头循环链表)2.1、优点任意位置插入 删除效率高

2022-01-13 18:58:37 2798 2

原创 cpu高速缓存命中率

cpu高速缓存命中率一、cpu高速缓存命中率一、cpu高速缓存命中率从硬件上来说存储体系的分布如下:其中磁盘和远程二级存储是不带电存储,而主存、高速缓存和寄存器是带电存储。我们的数据是从内存向上,先到L3,再到L2,再到L1,最后到寄存器进行CPU计算。缓存基本上来说就是把后面的数据加载到离自己近的地方,对于CPU来说,它是不会一个字节一个字节的加载的,因为这非常没有效率,一般来说都是要一块一块的加载的,对于这样的一块一块的数据单位,一个主流的CPU的Cache Line 是 64 Bytes(

2022-01-13 18:48:51 2586 1

原创 带头双向循环链表增删查分析及代码实现(C语言实现)

带头双向循环链表分析及代码实现(C语言)一、带头双向循环链表结构二、代码2.1、创建一个带头双向循环链表2.2、开辟一个新的空间及打印链表2.3、链表尾插2.4、链表尾删2.5、链表头插2.6、链表头删2.7链表的查找2.8、在链表pos位置插入X2.9、删除pos位置上的数据2.10、链表的销毁三、完整代码块一、带头双向循环链表结构带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势

2022-01-11 14:40:36 427

原创 环形链表(求入环节点——解题思路)

环形链表(求入环节点——解题思路)一、OJ题二、证明三、代码一、OJ题给定一个链表,返回链表开始入环的第一个节点:https://leetcode-cn.com/problems/linked-list-cycle-ii/description/二、证明让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行,两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。三、代码/** * Definition for singly-linked list. *

2022-01-09 22:50:29 591 1

原创 环形链表(判断链表中是否有环——解题思路)

@[TOC](环型链表——解题思路一、OJ题目二、快慢指针2.1、那我们如何判断呢?2.2、为什么快指针每次走两步,慢指针走一步可以?2.3、快指针一次走3步,走4步,...n步行吗?2.3.1、当n为3时,每走一次,他们之间就会相差22.3.2、当n为4时,每走一次,他们之间就会相差3三、代码一、OJ题目OJ链接:https://leetcode-cn.com/problems/linked-list-cycle/description/题目让我们判断链表中是否有环二、快慢指针2.1、那我们如

2022-01-09 16:55:22 424

原创 链表的概念、结构及优缺点

链表一、 链表的概念及结构一、 链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。相对于顺序表来说,链表按需申请空间,不用了就释放空间,更加合理的使用了空间。...

2022-01-08 22:08:28 2182 1

原创 顺序表及顺序表前后增删代码(C语言)

顺序表及顺序表前后增删代码(C语言)一、顺序表1.1概念及结构二、顺序表增删代码(C语言)一、顺序表1.1概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。(顺序表就是数组,但是在数组的基础上,要求数据是从头开始并且连续存储的,不能跳跃间隔存放)顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。二、顺序表增删代码(C语言)静态顺序表只适用于确定知道需要存多少数据

2022-01-03 00:14:15 534 1

原创 算法的时间复杂度和空间复杂度

算法的时间复杂度和空间复杂度一、算法效率1.1如何衡量一个算法的好坏1.2 算法的复杂度二、时间复杂度2.1时间复杂度的概念2.2 大O的渐进表示法三、空间复杂度四、常见复杂度对比一、算法效率1.1如何衡量一个算法的好坏如何衡量一个算法的好坏呢?算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度1.2 算法的复杂度时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额

2022-01-02 12:38:30 170

原创 C语言分支语句

1、什么是语句?C语句可分为以下五类:表达式语句函数调用语句控制语句复合语句空语句本周后面介绍的是控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:条件判断语句也叫分支语句:if语句、switch语句;循环执行语句:do while语句、while语句、for语句;转向语句:break语句、goto语句、continue语句、return语句。2. 分支语句(选择结构)在C语言中,分支语句有

2021-12-15 13:13:44 1356

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除