自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 0基础C保姆自学 第二节——初步认识C语言的全部知识框架

在看本章节前,请确保已经掌握了第一节的内容呦。不懂的欢迎在评论区留言~~~~本节定位:初步了解认识一下C中的知识,所有的知识都是点到为止。目的是在接下来章节的介绍中笔者的举例读者可以更好的接受。比如在函数的介绍中我们会用到指针。所有的知识点我们会在接下来的章节一一详细介绍,读者在阅读本章的时候,只需要知道有这么个东西,并且能够理解笔者所说的含义即可。本节我们将沿着上一节介绍:本节内容有:数据类型;常量和变量;字符串;转义字符;代码注释;数组;函数;选择语句;

2021-10-23 11:10:55 10702 17

原创 SQL数据库—事务(ACID特性、数据库恢复技术)

事务,是数据库中的一个重要的组成。那什么叫做事务?事务字面上理解即是指要做的事情,在SQL当中,事务可以理解为一组控制语句序列的集合。它是一个不可分割的工作单位,也是恢复和并发控制的基本单位。比如银行转账,分为你先转给银行、银行再转到指定的用户的账户上这样两个过程。它不可以出现:你给银行转过了,但是由于某些原因(比如网断了),你的目标账户没有收到来自银行的转账,那你的钱被银行私吞了?银行说我给你转了啊,可事实是目标账户并没有收到。这就引发了问题。所以,我们就希望你转给银行、以及银行再转到指定账户上。

2023-01-03 10:04:31 116

原创 Coding基本功——栈和队列

各位好,我们本节主要来训练一下我们的代码基本功,我们需要实现以下三个功能。如果你都会的话,那证明栈和队列这部分的基本功不错。

2022-12-11 11:34:00 280

原创 问题解决(1)——VS中scanf报错怎么解决

各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~)我们在用VS的时候,用库函数scanf可能会出现如下图这样的报错。这是为什么呢?实际上,这并不是你的语法错误。它报错的原因是说怀疑这个scanf函数不安全。因为VS是一款功能强大的IDE,它的语法检查、控制台环境检查机制太严格了,你从键盘中输入这个事情在它看来是一种不安全的操作。所以它才会报错。

2022-12-11 11:05:06 401

原创 Linux系统网络编程——第二十节 多路复用之epoll 模型

epoll相关系统调用1、epoll_create:(自从linux2.6.8之后, size参数是被忽略的,用完之后, 必须调用close()关闭其返回值是一个文件描述符。调用这个函数的时候,底层(内核层)会帮我们构建出一个epoll模型。epoll模型是什么?先不用管,就先理解它是一个模型就好了,它是有一个整体的、抽象的概念。2、epoll_ctl()

2022-12-11 10:36:07 331 1

原创 Linux系统网络编程——第十九节 多路复用(1)(概念、select、poll)

阻塞式等、非阻塞式等,设置某一段时间来去等3、其。

2022-12-11 00:20:52 277

原创 Linux网络原理及编程(8)——第十八节 数据链路层

各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~)思考一个问题:真正在网络中跑的是一个一个IP报文吗?实际也不是。真正在网路中传输的是一个一个的以太网帧。当然,从IP往下,不同的网络就有不同的标准了。我们接下来介绍的以太网帧,主要以以太网为标准。也是比较有代表性的。1、MAC地址用来识别数据链路层中相连的节点;

2022-12-10 20:55:08 288

原创 Linux网络原理及编程(7)——第十七节 网络层

各位好,我们根据前面的学习,知道:1、HTTP:是用来构建与解析 request && response -》调用recv和send来解决自己的问题。注意,这里的recv和send是tcp提供的接口。2、TCP :可靠性、效率、什么时候发送、怎么发、发多少3、IP:解决端到端、点到点的问题。将数据经过路径选择、送达对方主机的过程——IP负责。

2022-12-10 10:58:10 496

原创 Leetcode番外篇——滑动窗口的应用

像本题的其他条件(串p)是用来将滑动窗口中的数据抵消掉的(所以抵消掉和元素不在都是减)。不论是用优先级队列,还是用双向队列,都用到了这一点思想:即如果是最大的值被删掉了而它却仍然在我们所创建的数据结构里,不需要慌,只要在出来的时候(top的时候)判断一下它是不是在我们滑动窗口的范围之内就可以了。1、滑动窗口需要注意的是:充分利用其特性——在滑动的时候,中间的大部分元素都是不变的,变化的仅仅是滑动窗口的两端。本题的难度实际一般,关键就是需要想到取最大的数的时候,不要着急去删除就可以了。

2022-12-10 10:32:41 506

原创 Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理

TCP中采用了许许多多的机制,来保证网络传输过程当中数据的可靠性的问题。这里的可靠可以广义一点来理解。它几乎涉及到了方方面面。我们现在就挑选一些最最重要的机制来进行讲解。

2022-12-10 10:21:51 460

原创 Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)

(等待的时间是通信一个来回最多花费的时间:2MSL)如果服务器重传了若干次都没有响应,那其也就强行关闭了。(但是这种情况是比较小的)在server的TCP连接没有完全断开之前不允许重新监听,

2022-12-09 17:48:37 723

原创 Linux网络原理与编程(4)——第十四节 传输层协议

传输层是在应用层的下面一层,我们在讲解传输层协议之前,先来说一说一些前置知识即命令函数等;然后,我们本节主要来介绍UDP、TCP的报文。

2022-12-09 16:57:04 462

原创 Linux网络原理及编程(3)——第十三节 HTTPS

我们本文主要来介绍https,主要来介绍https的加密原理。大家应该都知道http和https的区别,区别很简单,主要就是在https是采用了加密协议的,而http完全是在网络上裸奔的。而我们现在几乎所有的连接都用的是https我们首先需要明白的是,我们现阶段的加密,本质上,是在应用层和传输层之间进行加密的。加密的算法有很多,比如SSL/TLS等。

2022-12-09 11:57:38 585 4

原创 Linux网络原理与编程(2)——第十二节 应用层协议(以HTTP为例)

我们从本节开始,就来正式地详细介绍网络各个层次的内容。我们先从最顶端的应用层协议说起。在说应用层协议之前,我们来思考一下什么叫协议?

2022-12-09 00:29:54 461 3

原创 Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)

我们输入ls,就是运行这样一个可执行文件,它在/bin/ls目录下,因为在环境变量里,我们可以直接运行而不用加路径。所以我们用execlp的时候,就不需要加前面的"/bin/ls" 了,因为它是在环境变量里的,execlp函数会自动从环境变量里搜索。然后如果带上了字母e,意思就是在最后,会再加上一个指针数组,这个指针数组里存储的是环境变量。第一个参数,看到了path也应该能猜个大概了,它的意思是路径,谁的路径?

2022-12-08 20:02:38 159

原创 Linux系统编程第五节——进程创建、终止、等待(通俗易懂快速上手版本)

我们本节内容,主要来讲述进程控制有关的内容。同样,我们会用通俗易懂、不同于教科书的讲授思路,来为大家讲解。同时,本节内容板块清晰简明,在最终同学们的思维导图可以做起来呦~~~(同时需要说明一下,我们本节注重的是系统编程方面,而不是完完全全地侧重于系统理论知识呦,如果想要深入学习进程的知识,可以参考以后的《操作系统》篇章,敬请期待哈~)

2022-12-08 16:57:29 500

原创 算法精品讲解(2)——DP问题入门(适合零基础者,一看就会)

目录前言DP问题它是什么(了解)从中学的例题谈起再来说一下,DP问题的核心思想(理解)DP问题的解决方法先说方法论:再说具体的例子例一:例二:例三:DP和搜索的关系结语DP入门介绍:先画个饼吧哈哈。看完之后,你也可以。如下,是我们本节将要讲述的内容。我们将结合着LeetCode、洛谷和CodeForce上面的一些习题来作为我们的参考。难度循序渐进,直到大于等于LeetCode Hard。文章首发于wx公众h【自学编程村】 我们下面就进入正文。大名鼎鼎的DP问题,实际上就是Dynamic programmin

2022-12-07 19:14:29 330

原创 重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效

对于C/C++的编程环境来说,目前我们所接触到的、所用到的,除了vim以外,大众用的、尤其是学生群体用的主要是有三种。一种是devc++;一种是Microsoft Visual Studio,也就是我们俗称的VS;还有一种是Microsoft Visual Studio Code,也就是我们俗称的vscode。对于这样三种编译器,第一种我不想多说什么,因为我不推荐大家用devc++。唯一的好处可能就是装上去就能用。但是devc++是一种很老的编译器了。这个大家如果还有疑问,可以去网上搜搜,应

2022-10-13 19:37:46 1016 2

原创 LeetCode精讲(1)—— 单调栈有关习题及其变式

看完本节内容,你将收获:一种思想,四个习题(其中三个为LeetCode上Hard难度)同时,我们将会在文末放上七道LeetCode上有关单调栈的习题,供大家思考提升(并会附上我们推荐的题解)。我们将采用图片、视频、文字描述的方式来帮助大家理解。我们的定位是:让没有接触过这块知识的同学也能够轻松看懂。(如需转载,请注明原文出处和作者呦)...

2022-08-11 17:08:16 1916 8

原创 Linux——文件操作和inode

C语言标准库的接口stdin/stdout/stderr重定向系统文件接口文件描述符:我们上面说的open 等系统调用接口,其返回值为一个int,注意这里的int指的是内核中用于管理文件系统的数组的下标。如上图,再一个进程task_struct中,会有一个files* 类型的指针,其指向的正是以恶搞file_struct的结构体。而在这么一个结构体里面,又存在着一个存储着file*的指针数组,数组的下标从0开始,一直到n(n实际上也是有上限的)。每打开一个新的文件之后,其就会为

2022-04-11 09:05:33 240 3

原创 进程间通信

进程之间,进行相互通信,是要有一定目的的。而通常,我们所说的进程之间是相互独立的。而一旦进程之间相互进行了通信之后呢,它们之间也就会有一定的联系了。数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变

2022-04-11 09:04:47 2641 1

原创 Linux多线程详解

线程的概念和理解理解线程之前,我们需要重新对进程进行理解我们前面说一个task_struct有着一个进程地址空间,然后有页表,搭建其和物理内存的映射。我们现在需要重新对进程进行定位理解:对于CPU来说,其看到的PCB可以是多个,然后共享一份地址空间。注意,这里你没有看错,就是多个PCB共享同一块地址空间。允许这样的情况存在。那如果这样的话,进程到底是啥呢?我们之前说进程是一系列的代码和数据以及组织它的数据结构,并且这主要的数据结构就是PCB。那现在呢?实际上,

2022-04-11 09:03:44 131

原创 Linux网络原理与编程——第十一节 网络基础及套接字

一、网络的层状划分结构我们网络的层级,与OS之间的关系,可以看成是这个样子的:我们来解释一下:从system call(系统调用结构)开始往下,都是属于OS和硬件的范畴,我们一般的程序员所进行的开发,通常都是在用户层。(这个我们后面还会具体说到)其中,TCP/IP协议属于传输层,准确点来说,其是由操作系统来完成,就是说由OS来帮助我们收发报文。而其他的MAC协议和以太网等协议,就是属于驱动、网卡等硬件设施层面的事情了。我们后面再来谈。他们属于数据链路层和物理层。(注:这里只是

2022-04-06 15:24:32 6658 20

原创 Linux第十节——信号

实际上,信号我们用的并不少,我们本节就来重点地、系统地探讨一下信号的有关内容。为了便于理解,我们先来说ctrl c由ctrl + c发出的信号我们来举一个简单的例子:先该创建文件创建文件:来看这样一个简单的代码:它是一个死循环。我们用这个死循环来演示ctrl c的功能。结合上面的运行,来说两个点:1、在前台运行的程序只能有一个。我们的程序在前台运行起来之后,我们再去输入一些指令等等,就无法执行了。在前台没有另外的可执行程序运行的时候,实际上是ba...

2022-03-18 21:39:44 1545 15

原创 C++第十一节——单例模式 C++11 智能指针 异常 有关讲述

本节内容,我们要介绍四个模块的内容。按照顺序来,分别是单例模式、C++11、异常和智能指针。目录单例模式要求设计一个类,只能让其创建在堆上。你实现一个类,要求该类只能在栈上去创建设计一个函数,要求防止拷贝构造单例模式:饿汉模式懒汉模式懒汉模式和饿汉模式的对比C++11C++11简介统一的列表初始化声明类型auto类型decltypenullptr范围for循环STL的新内容右值引用和移动语义左值引用和右值引用比较.

2022-03-14 12:45:35 1808 25

原创 C++ 第十节 ——哈希 unordered_map/unordered_set的封装 位图 布隆过滤器 海量数据处理

我们本节继续讲解STL里的内容。哈希表又叫做散列表,它可以用来封装unordered_map和unordered_set。我们还是按照老规矩来,先介绍其用法,再介绍其原理,并引到哈希上来。目录unordered_map/unordered_set的用法unordered_map/unordered_set的底层原理1、直接定址法:2、除留余数法闭散列:二次探测开散列Unordered_map和Unordered_set的封装哈希的应用位图:位图的应用:

2022-03-09 20:08:28 1399 40

原创 C++ 第九节——map/set(用法+底层原理+模拟实现)

有了前面红黑树的底子,我们这一节的任务就比较轻松了。关于Map和Set是什么东西,我们来借助网络文献进行解释。首先,我们需要知道的是,Map和Set的底层都是红黑树。即是一种平衡的二叉搜索树,也就是二叉平衡搜索树。而set就是我们前面说到的Key模型,而map就是<K,V>模型。我们接下来将一边对比,一边介绍。set和map的介绍先来看set:通过查阅文档有关set的声明,我们可以发现:这里的T就是我们所说的Key,就是key_type或者说是value_

2022-03-05 21:19:05 2806 13

原创 C++ 第八节&数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)

我们将着重来探讨 二叉树 中特殊的两种树——搜索二叉树 和 平衡二叉树。而平衡二叉树我们可以有AVL树,红黑树等。我们今天就重点来说说这三种结构。1、二叉搜索树我们之所以将其放在这里来讲,最主要的原因就是之前我们所有模拟实现都是用C去实现的,而这些东西用C语言很难实现,所以,我们将其放在C++当中。1-1、概念二叉搜索树又称二叉排序树,它要么是一个空树,要么是满足以下性质的一个二叉树。若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树

2022-03-02 21:47:23 1838 50

原创 初阶后的C++ 第七节 —— 多态

什么叫多态?字面意思,就是多种状态。那又是谁的多种状态呢?看完本节,你将会知道答案

2022-02-27 11:00:00 275 14

原创 初阶后的C++——第六节——IO流 与 继承

C++之继承,C++IO流,C++文件操作,你想了解吗?关于IO流的知识,我们在这里只是简单地提一下,以及在代码书写过程当中需要注意的问题。关于其具体的、详细的知识,我们放在Linux操作系统中来介绍。

2022-02-24 18:32:46 768 14

原创 Linux 第四节 进程地址空间

你认为用%p打印出来的是真正内存中的地址?实际上,我们在用C/C++语言所看到的地址,全部都是虚拟地址!物理地址,用户一概看不到,由OS统一管理你认为堆栈等在整个系统中只会存在一份?你认为真正的内存中真的有内存分布一说?本节内容,结合进程的知识,你将了解到这些知识。

2022-02-13 13:35:18 754 16

原创 初始Linux—Linux系统编程第三节——初始进程

你是否知道,你耳熟能详的main函数是有三个参数的?你是否设置过环境变量?那你是否知道,环境变量是干什么用的?内存、操作系统的又是怎样的存在?冯诺依曼体系结构是什么?本节,你将会学到这些内容。

2022-02-12 22:10:22 1307 15

原创 Linux系统编程—第二节—(Centos 7)开发工具等(yum vim gcc g++ gdb make Makefile )

2022-02-03 22:52:22 10308 15

原创 初识 Linux系统编程 第一节——Linux基本指令与权限

Linux发展背景(了解)开源(了解)企业应用现状(了解)Linux在服务器领域的发展(了解)Linux在桌面领域的发展(了解)Linux在移动嵌入式领域的发展(了解)Linux在云计算/大数据领域的发展(了解)发行版本(了解)操作系统(了解)Linux下的基础指令:(重点)1、ls指令2、cd指令3、pwd指令4、touch指令5、mkdir指令递归创建文件:补充:tree命令6、rm(rmdir)指令7、man指令8、cp

2022-01-30 18:29:32 2242 17

原创 初阶C++ 第五节—STL之Stack和Queue(deque+priority_queue)+适配器 + 仿函数 + 模板进阶

这一节比较简单。任务比较轻松。先说Stack 和 Queue。我们还是先来说说它们的用法,然后再来模拟实现。目录Stack和Queue的用法Stack:Queue:Stack和Queue的模拟实现deque:(双向队列)仿函数优先级队列(堆)模板进阶非类型模板参数模板的特化函数模板特化类模板特化模板分离编译原因:解决方法:模板总结Stack和Queue的用法首先,关于Stack和Queue它们的底层逻辑,我们已经在数..

2022-01-29 12:16:10 1276 5

原创 初阶C++——STL——string类、vector类和list类(使用方法+模拟实现+测试+思路分析)

从今天开始,我们正式进入STL的学习。我们今天会重点讲解三个类——string vector 和 list在介绍之前,我们可以先来了解一下,何为STL?以及它的优势和缺陷。

2022-01-27 20:19:50 1625 25

原创 初阶C++—— 第三节—— 动态内存管理 初识模板

我们还是先回到上一章节所说的段子:编程世界,一切皆对象。如果没有对象的话,那就new一个出来。这里的new就是和动态内存管理有关系了。我们今天来好好地说一说。首先,还记得我们之前所说的C/C++的内存分布吗?这个图其实我们已经引用第二次了。预备知识我们认为,C/C++ 包含内核空间、栈区、内存映射段、堆区、数据段、代码段等。该图引自0基础C语言自学保姆教程——第十一节 自定义类型(结构体、枚举、位段、联合)与预处理指令(#define、#include等)_jxwd的博客-C

2022-01-25 15:57:46 1229 28

原创 初阶C++——C++第二节——类和对象(大全篇)

想必大家都听过这样一个段子:编程界最不缺少的就是对象。因为编程世界,一切皆对象。没有对象怎么办?我可以new一个出来。关于new的内容,我们下一节再说。本章节我们先说《类和对象》,并且重点在 类 上。另外,本节内容超级多的。是能分成三篇文章来写的,但是我嫌麻烦,一锅端了。目录一、对象的概念二、面向过程和面向对象初步认识三、类的引入四、类的定义4-1 类的两种定义方式4-1-1. 声明和定义全部放在类体中。4-1-2. 声明放在.h文件中,类的定义放在.cp..

2022-01-24 16:22:52 954 23

原创 初阶C++——C++第一节——C++基础语法

这下,我前面什么都不想写了,上来就是正文,上来就肝。没有广告了!要说明一句,笔者在C中啰嗦过的语法在这里是不会再重复了的(什么分支循环什么的),相信如果我要是重复啰嗦的话,我不烦你们都烦了。一、什么是C++二、C++的发展史三、C++命名空间——关键字namespace3-1 命名空间的定义方法3-2 命名空间的使用方式四、C++ 输入 输出五、缺省参数5-1 缺省参数概念5-2 全缺省与半缺省5-2-1 全缺省5-2-2 半缺省六、函数重载七、引用7-1 引用概念:7-2 引用使用注意:7-3 常

2022-01-23 09:49:01 473 24

原创 初阶 数据结构与算法——经典 八大排序算法||初步学习至熟练掌握(附动图演示,初学者也能看懂)

一、冒泡排序(Bubble_sort)1、文字表述版:2、动画演示版:3、代码实现版本:复杂度分析:适用情况:二、选择排序(select_sort)1、文字表述版:2、动画演示版:3、代码实现版:复杂度分析:适用场景:三、插入排序(insert_sort)1、文字 表述版:2、动画演示版:​3、代码实现版:时间复杂度:适用情况:四、希尔排序(shell_sort)1、文字表述版:2、动图演示版:3、代码实现版:

2022-01-22 16:00:03 1011 38

空空如也

空空如也

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

TA关注的人

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