自定义博客皮肤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 406 1

原创 Redis简介

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

2021-09-17 17:26:50 129

原创 设计模式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 147

原创 设计模式1

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

2021-08-30 17:48:14 125

原创 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 81

原创 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 97

原创 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 95

原创 函数指针和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 340

原创 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 424

原创 数组的相关问题

学习目标: 提示:这里可以添加学习目标 例如:一周掌握 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 163

原创 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 237

原创 高并发设计

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

2021-08-11 21:32:34 86

原创 服务器相关知识

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

2021-08-10 21:16:50 101

原创 并发模型问题

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

2021-08-10 19:05:00 233

原创 高并发设计

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

2021-08-09 23:28:43 463

原创 左值和右值

条件编译: 可以用宏定义或者 模板+constexptr template<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 170

原创 动态多态和虚函数

虚函数: #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 99

原创 继承的问题

继承: 面向对象最重要的概念 :依据一个类来定义拎一个类 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 110

原创 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 127

原创 封装总结

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

2021-08-06 22:50:41 105

原创 封装-构造和析构

封装-构造和析构: 类的实例化: 构造函数/析构函数: 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 83

原创 高并发服务器

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

2021-08-03 23:39:29 128

原创 封装-类和对象

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

2021-07-31 11:39:54 77

原创 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 78

原创 动态规划

动态规划: 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 187

原创 线段树

线段树: 线段树或前缀树都可以来求区间和 线段树: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 98

原创 树的问题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 117

原创 树的问题

树的问题: 由树的前序和中序推出后序 #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 110

原创 拓扑排序

拓扑排序: 不断取出入度为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 439

原创 最小代价生成树

最小代价生成树: 针对图的概念: 1.生成树中的边的数量为节点数减1 2所有剩余边权加在一起最小的生成树 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 182

原创 链表问题

链表问题: 涉及头节点的需要设计虚拟头节点来完成 //删除链表的倒数第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 304 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 193

原创 图的最短路径算法

图的创建和遍历算法图的邻接矩阵的创建图的邻接矩阵创建代码`.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 283

原创 IPython和Jupyter

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

2019-11-10 22:26:13 96

原创 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]) 2 np.max...

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

空空如也

空空如也

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

TA关注的人

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