自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——二叉树进阶

在我看来,在数据结构中,存在三个最经典的树型结构,他们分别是二叉排序树(BST),二叉平衡树(AVL) 和 红黑树(BRT)。二叉排序树又叫做二叉搜索树,它可以是一棵空树,也可以是具有三个性质的一棵二叉树。性质一:若它的左子树不为空,则左子树上的所有结点的值均小于它的根结点的值性质二: 若它的右子树不为空,则右子树上的所有结点的值均大于它的根结点的值性质三: 左右子树也是二叉排序树。构造二叉搜索树的目的是提高查找和插入删除关键字的速度。因为二叉排序树是一个排序好的有序数据集,查找的速度肯定是快于无

2020-12-28 01:22:29 304

原创 shared_ptr探究

boost库下shared_ptr的源码shared_ptr类构造函数拷贝构造函数赋值语句私有成员#include <thread>#include <mutex>template <class T>class SharedPtr{public: SharedPtr(T* ptr = nullptr) : _ptr(ptr) , _pRefCount(new int(1)) , _pMutex(new mutex) {

2020-11-17 22:19:26 273

原创 项目一补充

快速搜索文档神器之所以快速,是因为我用到了数据库,Sqlite3.将本地的所有文件加载在数据库,通过sql语句来进行文件的搜索那么如何知道本地文件和数据库的文件是一一对应的,这就需要添加一个扫描模块,先扫描本地的文件,再扫描数据库的文件,进行比对,如果数据库文件少了,则进行插入;如果数据库文件多了,则要进行删除。而要操作数据库,则需要把数据库进行封装,并且把数据库里的数据进行封装,作为一个模块来进行操作。...

2020-10-24 22:25:17 151

原创 智能指针的初步认识

开辟了内存空间,必定要释放内存空间,如果不释放就会造成内存泄漏,引发安全问题。如果代码量很少的时候,我们会记得释放掉开辟的空间,但是如果代码量过大,我们会忘记开辟的空间,那么就需要智能指针来帮助我们自动释放空间。例如:#include<memory>int main(){ int* tmp = new int[10]; auto_ptr<int> ap(tmp); cout << *ap <<endl; //delete []tmp; re

2020-10-22 14:01:15 196

原创 项目二——快速搜索文档神器

#pragma once#include<iostream>using namespace std;#include<string>#include<vector>#include<set>#include<stdarg.h>#include<windows.h>#include<io.h>#include<thread>#include<chrono>#inclu

2020-09-25 16:33:34 1633

原创 项目一——点餐系统

项目设计:MVC设计框架M-model-数据管理V-view-界面管理C-controller-业务逻辑管理浏览器访问一个餐馆页面顾客:点击查看所有菜单;勾选菜品;进行下单老板:上传菜品;修改菜品;查看菜品;查看订单;修改订单数据管理模块:菜品数据管理;订单数据管理数据通过mysql数据库进行数据管理数据库表的设计菜品数据:菜品ID,菜品名称,菜品单价,修改时间订单数据:订单ID,订单桌号,菜品信息,订单状态CREATE DATABASE IF NOT EXISTS db_ord

2020-07-16 21:54:01 930

原创 mysql数据库初识

数据库操作

2020-06-14 23:13:00 342 1

原创 Linux——线程深入剖析

线程安全多个执行流对临界资源争抢访问,但是不会出现数据二义性。通俗来讲,就是多个线程并发同一段代码时,不会出现不同的结果。线程安全如何实现?同步通过条件判断保证对临界资源访问的合理性互斥通过同一时间对临界资源访问的唯一性实现临界资源访问的安全性互斥的实现互斥锁...

2020-06-06 00:40:23 255

原创 网络——TCP协议和UDP协议的认识

TCP“传输控制协议”(Transmission Control Protocol),是对应用程序数据的传输进行控制,简称TCP。内容说明源/目的端口号表示数据是从哪个进程来, 到哪个进程去32位序号/32位确认号实现确认应答机制,以及进行包序管理4位TCP报头长度表示该TCP头部有多少个32位bit(有多少个4字节); 所以TCP头部最大长度是60字节URG紧急指针是否有效ACK确认号是否有效PSH提示接收端应用程序立刻从TCP缓冲区把数

2020-05-29 15:26:48 250

原创 Linux中线程的初步认识

线程话不多说,先来一张线程图。轻量化进程线程是进程中的一条执行流,这个执行流在Linux下是通过PCB实现的,因此Linux下的线程其实就是PCB,但是PCB是进程。因为Linux下的PCB,共用同一个虚拟地址空间,相对于传统PCB更加轻量化,因此也被称为轻量化进程。虽然线程共享进程数据,但是也拥有自己的一部分数据。比如:线程ID一组寄存器栈errno信号屏蔽字调度优先级在Linux中,既然线程是轻量化的进程,那么进程就相当于了一个线程组,一个进程中就会有多个线程(即多个PCB

2020-05-28 18:53:13 146

原创 Linux 进程的初步认识

进程

2020-05-27 19:57:48 203

原创 HTTP协议认识

http协议统一资源定位符(Uniform Resource Locator),简称URL,这就是人们俗称的网址。URL的格式和要素是什么,我举个例子。URL格式上图就是一个URL的基本格式,需要添加的是深蓝的线划的这个部分。这个部分叫做查询字符串,引出两个知识点,分别是urlencode和urldecode,即url编码和url解码。url编码是将特殊字符的每一个字节都转换成为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位。这里就是将"+“转义成了"2b”。考虑到用户本

2020-05-25 19:12:18 374

原创 Linux基础指令认识

Linux基础指令基础指令lspwdcdtouchmkdirrmdir&&rmmancpmvcatmorelessheadtaildatecalfindgrepzip/unziptarbcunameshutdownLinux扩展指令安装和登录指令loginha

2020-05-20 16:36:14 282

原创 计算机网络初识

网络协议:OSI七层模型OSI作用应用层针对特定应用的协议表示层设备固有数据格式和网络标准数据格式转换会话层通信管理传输层管理两节点之间的传输网络层地址管理和路由选择数据链路层互联设备之间的传送和识别数据帧物理层以"0" 、“1” 代表电压高低TCP/IP五层(或四层)模型TCP/IP作用应用层...

2020-03-12 18:51:55 138

原创 C++——多态

多态调用条件:1 .必须通过基类的指针或者引用调用虚函数2 .被调用的函数必须是虚函数,且派生类必须以基类的虚函数进行重写不符合就是普通调用class Person{public: virtual B* f() { cout << "Person::f()" << endl; return new B; }};class Student{p...

2019-12-19 21:12:28 211

原创 C++——继承

继承基类成员访问方式的变化类成员/继承方式public继承基类的public成员派生类的public成员基类的protected成员派生类的protected成员基类的private成员在派生类不可见类成员/继承方式protected继承基类的public成员派生类的protected成员基类的protected成员派生类...

2019-12-12 20:19:18 180

原创 Linux相关知识及一些常识

Linux 常用工具编辑器描述EmacsLight tableBracketsSublime TextChocolatEclipseDart Editor––编译器描述ClangInter C++GNU C++–Borland C++Viual C++...

2019-12-12 18:27:08 142

原创 C++——vector

vector

2019-11-29 21:51:02 151

原创 C++——List容器

List容器接口的使用#include<list>void test_list1(){ list<int> l1; list<int> l2(10,3); list<int> l3(l2.begin(),l2.end()); list<int> copy(l3); list<int>::iterator c...

2019-11-28 21:23:13 173

原创 C++——String

String(重要)int StrToInt1(string str)//遍历字符串{ for(size_t i = 0; i < str.size(); ++i) { cout << str[i] << " "; //cout << str.operator[ ](i) << " " ; } cout <<...

2019-11-28 20:58:09 222

原创 自定义类型知识总结

结构体类型位段枚举联合

2019-11-24 16:23:23 201

原创 C++——类与对象

类的6个默认成员函数1。构造2。析构3。拷贝构造4。赋值操作符重载5。const成员6。取地址操作符重载和const修饰的取地址操作符重载

2019-11-24 13:53:25 108

原创 C语言——文件操作相关的函数初步认识

动态内存管理:无论我们用定义int,char,double等类型的变量等来申请内存空间,但是这样的方法不够好,因为每个人的需求不同,所以需要用动态开辟空间来满足人们的需求。局部变量的数组都是在栈区的,而动态申请空间是在堆区,这时就需要动态开辟的相关函数来实现相应的功能。1.2.3....

2019-11-22 00:59:31 403

原创 动态内存开辟

malloccallocreallocfreemalloc和free必须成对使用。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>int* p=(int*)malloc(10...

2019-11-19 23:48:10 186

原创 Linux初步认识

Linux中有三种不同的权限:r:可读 对于目录来说,有浏览目录的权限w:可写 对于目录来说,有删除移动目录中文件的权限x:可执行 对于目录来说,有进入目录的权限Linux下的重要目录:(以下均为查阅资料得来)目录作用/bin系统有很多放置执行文件的目录,但是/bin目录比较特殊。/bin放置的是在单用户维护模式下还能够被操作的命令。在/bin下面的...

2019-11-17 23:09:23 122

原创 力扣OJ题感悟——链表篇

1.移除链表元素代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* removeElements(struct ListNode* head, int val)...

2019-11-17 14:14:48 269

原创 数据结构——顺序表

顺序表代码#ifndef _COMMON_H_#define _COMMON_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedef enum{FALSE, TRUE} BOOL;#define DataType int...

2019-11-12 18:21:23 200

原创 扫雷游戏

扫雷游戏代码如下:

2019-11-07 19:32:57 132

原创 三子棋游戏

三子棋代码如下:

2019-11-07 19:32:19 94

原创 C语言操作符基础

操作符的分类:算术操作符移位操作符位操作符赋值操作符逻辑操作符单目操作符关系操作符条件操作符逗号表达式下标引用函数调用和结构成员算术操作符+ - * / %移位操作符<< >>位操作符& ^ |赋值操作符复合赋值操作符= += -= *= /=...

2019-11-06 01:08:04 198

原创 关于字符串函数的模拟实现

字符串拷贝:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>char* my_strcopy(char*dest,const char*scr){ char str = *dest; while (*dest++ = *scr++) { ; } return str;}int main(){ char a...

2019-11-01 01:02:59 111

原创 C语言初步学习——指针进阶

数组指针:int arr[]={0};int (*p)[]=&arr;函数指针:Add();int (*p)()=&Add;指向函数指针数组的指针:int ((*pArr))();

2019-10-27 22:38:42 208

原创 C语言入门学习——指针初步认识

在学习指针之前,先要了解内存二进制序列作为编号就是内存单元的地址。int a = 40;内存为整型a开辟4个字节,通过每一个字节的编号,即为地址,可以找到a在内存中的位置。我们可以在内存窗口查看a的存储地址:&aa的地址是存放a的第一个字节编号。可以看到a的地址为:0x0078FCD4。int p = NULL;int* p = &a;通常会给p赋值一个空...

2019-10-25 18:30:29 192

原创 C语言入门学习————抽象化具体

在C语言这个系列中,以我个人对C语言的理解和风格,我会把抽象的C语言转化为具体的实例来学习。例如我的第一个C程序:求两数的平均值:乍一看这个程序结果是对的,但是有一个BUG,当a达到最大,b达到最大,两数相加的值就会超出内存空间。这时候,我不得不想到另一种算法:将b-a的一半给a,这样a和b就会相等了,而且不会超出内存空间。除了这种方法,还有另一种思路:">>"运...

2019-10-25 15:12:32 870 1

原创 一个准程序员的心声

大家好,我不想说太多的空话,只让用行动证明一切。为了学习编程,我会用尽一切方法去克服其中的各种困难,将这些困难化为前进的动力和源泉 ,我也希望自己可以正视自己的错误与不足,勤能补拙,坚持编程的学习,知行合一,不断进步,力争成为一名牛逼的程序员。近期编程的针对性目标:1.C语言基础的熟练掌握master2. 课后的习题的反复操作及其优化3. 自己编写一个完整且有韵味的程序。...

2019-07-12 16:13:42 144

空空如也

空空如也

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

TA关注的人

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