后端
马里奥奥利奥
这个作者很懒,什么都没留下…
展开
-
Redis缓存击穿,穿透,雪崩等问题
雪崩(随机过期时间、永不过期)、穿透(表示恶意请求,在系统端判断是否符合规则,比如id<0,布隆过滤器)、击穿(查询加for update,永不过期)redis缓存穿透:查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大地压力解决方案:当通过某一个key去查询数据的时候,如果对应在数据库中的数据都不存...原创 2020-04-03 23:14:52 · 231 阅读 · 0 评论 -
二叉树的先序、中序、后序遍历的非递归方式
先序遍历:引入栈。拿到一棵树的根结点后,首先打印该结点的值,然后将其非空右孩子、非空左孩子依次压栈。栈非空循环:从栈顶弹出结点(一棵子树的根节点)并打印其值,再将其非空右孩子、非空左孩子依次压栈。void pre2(node *root) { stack<node*> sb; sb.push(root); node* cur; while (!sb.empty()) {...原创 2019-12-29 16:35:54 · 186 阅读 · 2 评论 -
计算机网络基础
物理层物理层解决如何在连接各种计算机传输媒体上传输 数据比特流 。根据信息在传输线上的传送方向,分为以下三种通信方式:单工通信:单向传输,只能一方发送数据,一方接受数据(广播)。半双工通信:双向交替传输,双方都可以接受数据,发送数据,但是不能同时进行(对讲机)。双工通信:双向同时传输,双方可以同时接受数据和发送数据(打电话)。带通调制(数模转换、模数转换):模拟信号是连续的信号(正...原创 2019-12-26 15:42:05 · 110 阅读 · 1 评论 -
排序
1. 冒泡排序从左到右不断交换相邻逆序的元素,在一轮循环之后,最大的元素放在最右边。一轮循环如果没有进行交换,说明已经有序,可以直接退出。时间复杂度: 最好O(n);最坏O(n2 );平均O(n2 )空间复杂度:O(1)稳定。2. 选择排序选择最小的元素与第一个元素互换位置。再从剩下的数组中选择最小的元素,与第二个元素交换。不断重复。时间复杂度:O(n2 )空间复杂度:O(1)...原创 2019-12-24 17:24:13 · 123 阅读 · 1 评论 -
STL
P2:STL体系结构介绍(1)STL六大部件:容器,分配器,算法,迭代器,适配器,仿函数。(2)前闭后开区间 [ ),例如 对象都有c.begin() 和 c.end()两个个函数。c.begin() 指向第一个元素地址,c.end()指向最后一个元素地址的下一个地址。P3:Array(数组)(1)大小固定。P4:vector(向量)(1)分配器会扩充, vector只能向后扩展,扩展...原创 2019-12-17 21:53:08 · 160 阅读 · 0 评论 -
cpp笔记
P1:c++编程简介(1)Class分类:class without pointer members ——>e.g: complex 复数class with pointer members ——>e.g: string 字符串P2:头文件与类的声明(1)标准库以头文件的形式存在,只需要include进去就好#include <*.h>(2)CPP防卫式头文件...原创 2019-12-11 17:50:16 · 194 阅读 · 0 评论