自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈子龙的博客

C++后台学习

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

原创 Redis的数据结构

学习目标:拍电影-》故事情节场景:人物-物品-声音-播放1 2 3 4 5导演-场景-类对象-调度-内存池-显示等导演-场景-队列SCENE-树提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点

2021-09-18 22:51:26 297 1

原创 Redis简介

基本介绍:Redis(远程字典服务)是一种 Key-value键值对形式的NoSQL(非关系型数据库)数据库,一类开源的内存数据结构存储器,它是单线程的,将数据存储在内存中,速度很快优点:1超高的性能2完美的文档3.简单易懂的源码4.丰富的客户端库支持一类常用的开源中间件NoSQL:monoDB,redis,没有表和表之间的关联,甚至没有表的概念,意味着每条数据的大小都可能不一样,相比而言 MySQL数据库是将文件存储到磁盘当中,2012年 服务端支持Lua脚本2015年 添加了Re

2021-09-17 17:26:50 88

原创 设计模式2

行为型模式:模板方法模式:将逻辑和算法放在抽象基类之中,并定义好需要实现细节的接口,子类中实现细节#include<iostream>#include<vector>using namespace std;class Factory{public: virtual void buildCar(){ this->buildA(); this->buildB(); this->buildC();

2021-08-31 12:29:18 86

原创 设计模式1

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识装饰者模式:装饰者提供了一种给类增加职责的方法,不是通过继承实现的,而是通过组合提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计

2021-08-30 17:48:14 67

原创 STL的相关知识

vector:vector中实现了某种特殊的元素实现了支持auto访问vector支持bigin function ,迭代器返回第一个元素,还要支持 end function,迭代器返回最后一个元素class A{public: A(int n=5):n(n){ data=new int[n];}int *begin(){return data;} int *end(){return data+n;}private: int*data,n; };int main()

2021-08-28 21:34:12 41

原创 STL的相关知识2

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-08-21 21:07:05 56

原创 STL的相关知识1

function:函数对象,也是一个模板语法:function<void (param…)>#include<iostream>using namespace std;void add(int a,int b){ return a+b;}struct functor{ int operator()(int a,int b){ return a+b; } int add(int a,int b){ retu

2021-08-21 13:45:46 58

原创 函数指针和lambda

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-08-20 23:14:40 248

原创 C++多态模板

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-08-17 23:22:17 342

原创 数组的相关问题

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-08-14 21:46:57 90

原创 C++标准库

学习目标:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客 3 篇

2021-08-13 00:15:16 165

原创 高并发设计

数据库:一.池化技术原因:1.连接的耗时比较长2.相反执行一次sql可能时间很快二.池化连接最小连接(10左右),最大连接(20-30左右),预热(初始化)三.池化线程1.CPU密集型(一定不要让线程数超过cpu核心数)2.IO密集型(线程池可以适当放宽)3.尽量不使用无界队列四.主从读写分离(冗余)1.读多写少,突发流量2.主从拷贝:一个数据拷贝给多个从库查询在从库来3.异步更新:延迟效应(毫秒级),不同步五 分库分表(分片)问题:数据量增大,查询性能下降数据量占用磁盘

2021-08-11 21:32:34 40

原创 服务器相关知识

服务器:一种专门提供服务的机器硬件软件:我们关注,CS架构Sever:高并发 2响应能力-效率C10K-C100K问题P2P架构:更关注对等事件怎么对等高并发:操作系统的并发和并行多进程实现方式:多进程-阻塞?进程创建成本高切换的成本(高速缓存(弥补CPU和内存之间速差),内存上)太高高速缓存:1空间局部性,2时间局部性多线程内核支持线程线程级别:内核线程,用户线程线程模式:1个连接对应一个线程事件驱动(流水线)互斥与同步1死锁 data race 临界区

2021-08-10 21:16:50 64

原创 并发模型问题

前置知识:系统调用:只是用户态进入内核态的一种方式,还有中断,异常,就是系统提供给用户做特权指令的接口1.内核态 .2用户态与之对应的进程的陷入和下沉特权指令 非特权指令如何切换,切换有成本嘛?复制拷贝的成本高级IO:1.IO多路复用(本质上是异步IO)避免NIO的多次轮询select :去内核里面统计(返回多少个就绪事件,从头到尾找)涉及好几次内核拷贝】,容易被信号中断->pselect引入了系统信号集int select(int nfds,fd_setreadfds,

2021-08-10 19:05:00 113

原创 高并发设计

高并发设计的基本方法:1.横向扩展:买更多的服务器,更多的CPU(32C)2.异步处理:把同步等待的时间转为并发执行3.使用缓存:本质上会缓解磁盘和CPU之间的速差,提高效率4.高并发系统的演进应该是循序渐进,以解决系统中存在的问题为目的和驱动力分层设计:MVC框架:M是模型 V是用户界面 C:业务逻辑与表现层,逻辑层和数据访问层相对应分层的好处:简化系统设计:不同人的关注某一层分层可以有更高的复用性更容易做横向扩展‘不足:增加了代码的复杂度每个层次独立部署,层次间通过网络来

2021-08-09 23:28:43 384

原创 左值和右值

条件编译:可以用宏定义或者 模板+constexptrtemplate<typename T>void test(T t){ if constexptr (std::is_name<T,A>{}){ t.test(); }else if constexptr(std::is_name<T,B>{}){ T.testB(); }}test(A{});test(B{});nullptr->指针类型

2021-08-08 22:32:27 119

原创 动态多态和虚函数

虚函数:#include<iostream>using namespace std;class Animal{public: //c++中可以用纯虚方法做接口virtual void run(){cout<<123<<endl;}virtual void eat(){cout<<123<<endl;}virtual void say(){cout<<123<<endl;} void atio

2021-08-08 17:45:18 62

原创 继承的问题

继承:面向对象最重要的概念:依据一个类来定义拎一个类class Derived ::Base,这就是一个私有继承继承类的存储结构:虚方法->重载虚函数表->8个字节j提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点

2021-08-08 11:39:39 63

原创 C++多态-重载

C++多态-重载:提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CSDN 技术博客

2021-08-07 17:46:06 68

原创 封装总结

封装总结:staic ->类属性和类方法,这样就与类进行了绑定了没有this指针,跟着类走的static int s_count;int People:????_count=123;//此时才分配内存空间私有化构造函数,设置静态函数来调用构造方法:安全,降低内存管理的难度(创建时可以放入一个内存池进行管理)class Mysort{ static void sortInsert(){ cout<<"1223"<<endl; }

2021-08-06 22:50:41 56

原创 封装-构造和析构

封装-构造和析构:类的实例化:构造函数/析构函数:1.默认构造函数2.有参构造函数3.拷贝构造函数4.移动构造函数4.析构函数没有返回值使用初始化列表初始化可以节省cpu的消耗,效率高分配内存->匹配构造函数->初始化列表初始化->进入大括号才能类对象还未构造完成(此时才能用this指针)delete->调析构函数->执行析构函数体->释放内存int n=1;int m(1);C++11的写法int k{1};都是调用构造函数int类型的可以

2021-08-05 23:41:59 43

原创 高并发服务器

echo高并发服务器:连接:epoll使用mmap做内存映射,实现更高效的拷贝:时间复杂度为0(1);主要对fdset的拷贝,select中从1024-2048 OPEN_MAX FDSETSIZEulimit-a ->65535cat /proc/sys/fs/file-max 782584cd /etc vi sysctl.conf 可以对内核参数的设置netstat -alnt |grep 9001查找端口是否打开单线程/单进程:可以利用非阻塞的IO(NIO)或者

2021-08-03 23:39:29 81

原创 封装-类和对象

封装-类和对象:类和对象:对比类型和变量可以分为动态部分(变量的计算)和静态部分(变量的存储)Cat cat//栈空间Cat* cat=new Cat();//堆空间内存空间:代码区,常量区,堆区,栈区类占用多少个字节只关注静态部分->类的成员属性虚函数->创建一个8个字节的虚函数表使用#pragma pack(1)可以取消内内存对齐:通讯协议序列化和反序列化时用让方法跟着类走此时对象则通过this指针来调用方法say(people*this,string word){

2021-07-31 11:39:54 36

原创 C到C++

C到C++:1.C++应用场景提示:这里可以添加学习目标例如:一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、 周一至周五晚上 7 点—晚上9点2、 周六上午 9 点-上午 11 点3、 周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如:1、 技术笔记 2 遍2、CS

2021-07-31 10:12:24 43

原创 动态规划

动态规划:1.最优子结构(大问题分解出小问题)2.无后效应求解步骤1.观察:大问题与小问题的联系2状态定义:数组如何定义3.推导状态转移方程4.初始化leetcode322 零钱兑换class Solution {public: int coinChange(vector<int>& coins, int amount) { vector<int>ans(amount+1,INT_MAX /2); ans[0]=0;

2021-07-31 00:04:09 67

原创 线段树

线段树:线段树或前缀树都可以来求区间和线段树:log(n),适用于修改使用懒标记用作修改题目描述​ 给定一个 n 位数组和两种操作:​ 操作1:数组中某个区间的所有数字加上一个值​ 操作2:查询数组中某个区间的所有数字之和输入​ 第一行输入两个整数 n,m(1≤n≤10000,3≤m≤100000)​,分别代表数组大小和操作数。​ 第二行包含 n 个整数,代表数组中相应的数字,数字大小不会超过 int 表示范围。​ 接下来 m 行,每行三个或四个整数 a,b,c,d(a∈[1,2])

2021-07-30 00:12:41 63

原创 树的问题2

树的问题2:二叉树的前序遍历 morris遍历//非递归式遍历法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), l

2021-07-28 22:26:08 58

原创 树的问题

树的问题:由树的前序和中序推出后序#include<iostream>#include<cstring>#include<vector>#include<queue>#include<cmath>#include<stack>#include<cstdio>#include<algorithm>using namespace std;char front[105],mid[105];voi

2021-07-28 00:27:36 65

原创 拓扑排序

拓扑排序:不断取出入度为0的点,拓扑排序因此不唯一#include<iostream>#include<cstring>#include<vector>#include<queue>#include<cmath>#include<stack>#include<cstdio>#include<algorithm>using namespace std;struct edge{ int

2021-07-27 00:48:40 308

原创 最小代价生成树

最小代价生成树:针对图的概念:1.生成树中的边的数量为节点数减12所有剩余边权加在一起最小的生成树Kruskal算法:1 使用并查集:2 以边排序//最小生成树模板#include<iostream>#include<algorithm>using namespace std;struct edge{ int s,e,v; bool operator<(const edge &b)const{ return this

2021-07-25 21:02:57 120

原创 链表问题

链表问题:涉及头节点的需要设计虚拟头节点来完成//删除链表的倒数第N个节点,采用两个指针来完成判断/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} *

2021-07-25 18:17:36 209 1

原创 二维数组的前缀和

二维数组的前缀和:class NumMatrix {public: int n,m; vector<vector<int> >sum; NumMatrix(vector<vector<int>>& matrix) { n=matrix.size(),m=matrix[0].size(); sum=vector<vector<int> >(n,vector<int>(m

2021-07-25 16:11:39 122

原创 图的最短路径算法

图的创建和遍历算法图的邻接矩阵的创建图的邻接矩阵创建代码`.Floyd算法dijkstra算法链式前向星总结图的邻接矩阵的创建图的创建方式有多种,这里选择邻接矩阵的创建方式。图的邻接矩阵创建代码`.#include<iostream>#include<string>#include<vector>using namespace std;int arr[105][105],n,m;int main(){ cin>>n>>m;

2021-07-24 20:03:26 114

原创 IPython和Jupyter

IPython和JupyterIpython是一个交互式计算系统 可通过pip install ipython 安装,它具有自动补全,内省,快捷键,魔术方法,粘贴和使用Ipython进行调试等功能Jupyter Notebook是个计算交互笔记本拥有更优美的界面...

2019-11-10 22:26:13 72

原创 CSDN如何写博客

目录2019.11.9记2019.11.9记pyTorch的核心是两个主要特征:1.一个n维张量。类似于numpy,但可以在Gpu上运行,numpy不能利用GPU来加速其数值计算,不能满足当代深度学习的需求2搭建和训练神经网络时的自动微分/求导机制numpy.dot() 和 x.dot(y) 为矩阵乘法计算np.max([-2, -1, 0, 1, 2])2np.max...

2019-11-09 21:38:05 184 1

空空如也

空空如也

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

TA关注的人

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