自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 写在最初

博客园园龄三年又七个月,许多次回头看却觉得杂乱且无法整理。就像过去的大学岁月,无法看清真正属于我的到底是哪些。悟已往之不谏,知来者之可追。2019年搬家至此,记录之后的学习。唯心。...

2019-01-26 13:03:40 200

转载 二叉树转为双向链表

代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNode* Convert(TreeNode* root) { if(root==NULL) return NULL;//递

2020-10-13 10:42:10 225

转载 C++ 类内成员初始化顺序

转载自:https://blog.csdn.net/qq_27278957/article/details/104012302静态成员是类所有的对象的共享的成员,而不是某个对象的成员。它在对象中不占用存储空间,这个属性为整个类所共有,不属于任何一个具体对象。所以静态成员不能在类的内部初始化,比如声明一个学生类,其中一个成员为学生总数,则这个变量就应当声明为静态变量,应该根据实际需求来设置成员变量。总结:1.成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序

2020-10-12 21:17:33 771

原创 redis 的 RDB持久化

https://www.cnblogs.com/javazhiyin/p/12985656.html

2020-10-10 11:10:50 188

原创 TCP中的异常情况

https://network.51cto.com/art/201905/597065.htm

2020-10-10 10:36:36 210

原创 redis 数据结构底层实现

https://database.51cto.com/art/201906/598234.htmhttps://i6448038.github.io/2019/12/01/redis-data-struct/

2020-10-10 00:34:32 113

原创 redis hash 实现详解

https://www.jianshu.com/p/7f53f5e683cf

2020-10-10 00:07:56 263

原创 数据库中的ACID及隔离级别

https://cloud.tencent.com/developer/article/1121737https://blog.csdn.net/zyq_2014/article/details/85939053

2020-10-10 00:00:12 164

转载 class 和 struct的区别

class 和 struct 最本质的区别 : class 是引用类型,它在堆中分配空间,栈中保存的只是引用;而 struct 是值类型,它在栈中分配空间。什么是class?class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、操作符等。 在.NET中,所有的类都最终继承自 System.Object 类,因此是一种引用类型,也就是说,new 一个类的实例时,在栈(stack)上存放该实例在托管堆(Managed Heap)中的地址,而实例的值保

2020-10-09 17:14:51 3917

转载 static关键字

https://www.cnblogs.com/beyondanytime/archive/2012/06/08/2542315.html

2020-10-09 15:18:56 115

转载 为什么推荐InnoDB引擎使用自增主键?

https://blog.csdn.net/zheng0518/article/details/76302167

2020-10-09 15:07:53 116

转载 一致性哈希和虚拟节点的关系

转载自:https://blog.csdn.net/bluishglc/article/details/52847591一致性哈希所要解决的问题一般的哈希算法存在的问题是:当“模”发生变化时,所有的值都需要重新哈希,而一致性哈希算法的特别之处就是它能把这种变化带来的影响降低到最小。关于这一点不再赘述,可以参考http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html,讲的非常明白。简单地说,就是在添加和删除节点的时候,只有失效节点上的数据会

2020-10-08 22:26:14 443

转载 TCP第三次握手失败会怎么样

转载自:https://blog.csdn.net/gochenguowei/article/details/79649997面试题:在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢?相信了解 tcp 协议的人,三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端接收到 syn + ack 之后,向 server 发送的 ack 包 由于各种原因 server 没有收到。这时 client, server 分别会

2020-10-08 11:47:36 3698

原创 redis 持久化方法对比

https://www.cnblogs.com/Anker/p/6099705.html

2020-10-07 22:28:30 93

转载 redis快的原因

Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。多路指的是多个 socket 连接,复用指的是复用一个线程。多路复用技术就是让单个线程高效地处理多个连接请求。Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。另外,数据结构也帮了不少忙,Red..

2020-10-07 21:52:51 922

转载 设计短网址系统

链接:https://www.zhihu.com/question/29270034/answer/46446911自增策略通过发号,给每一个过来的长地址,发一个号即可,小型系统直接用mysql的自增索引就搞定了。如果是大型应用,可以考虑各种分布式key-value系统做发号器。不停的自增就行了。第一个使用这个服务的人得到的短地址是http://xx.xx/0 第二个是 http://xx.xx/1 第11个是 http://xx.xx/a 第依次往后,相当于实现了一个62进制的自增字段即可。几个子问

2020-10-07 17:39:05 248

原创 redis三种模式

redis 主从复制模式和哨兵模式 https://zhuanlan.zhihu.com/p/142832200三种模式 https://cloud.tencent.com/developer/article/1543023

2020-10-06 20:20:47 269

转载 分布式锁

为何需要分布式锁效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪费资源。比如用户付了钱之后有可能不同节点会发出多封短信。正确性:加分布式锁同样可以避免破坏正确性的发生,如果两个节点在同一条数据上面操作,比如多个节点机器对同一个订单操作不同的流程有可能会导致该笔订单最后状态出现错误,造成损失。分布式锁的特点互斥:不同节点的不同线程间互斥可重入性:同一个节点上的同一个线程如果获取了锁之后,也可以再次获取这个锁锁超时:可本地锁一样支持锁超时,防止死锁高效和高可用支持阻塞和非阻塞

2020-10-06 20:06:36 105

原创 乐观锁和悲观锁

乐观锁和悲观锁:https://juejin.im/post/6844903639207641096乐观锁:https://juejin.im/post/6844903564691652615

2020-10-06 17:19:11 109

转载 架构:基于Nginx+Redis+jvm堆缓存的多级缓存架构设计

多级缓存架构采用三级缓存:nginx本地缓存+redis分布式缓存+tomcat堆缓存的多级缓存架构缓存中的数据分为两种时效性要求非常高的数据:库存、价格等一般来说,显示的库存,都是时效性要求会相对高一些,因为随着商品的不断的交易,库存会不断的变化。当然,我们就希望当库存变化的时候,尽可能更快将库存显示到页面上去,而不是说等了很长时间,库存才反应到页面上去。时效性要求不高的数据:商品的基本信息(名称、颜色、版本、规格参数,等等)时效性要求不高的数据,就还好,比如说你现在改变了商品的名称,稍微晚个

2020-10-06 16:36:34 408

转载 缓存穿透、缓存击穿、缓存雪崩原因及措施

缓存穿透缓存穿透指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且,如果从存储层查不到数据,则不写入缓存。这导致这个不存在的数据每次请求都要到存储层查询,失去了缓存的意义。在流量大时,DB可能就挂掉了。解决方案布隆过滤器,将所有可能存在的数据哈希到一个bitmap中,一个一定不存在的数据会被bitmap拦截掉,从而避免对底层系统的查询压力。如果一个查询返回的数据为空,仍然把这个空结果缓存,但过期时间会很短,最长不超过五分钟。缓存雪崩缓存雪崩是指在我们在设置缓存时采用了相同的过期时间

2020-10-06 11:59:03 173

原创 http 状态码 301 302 303 区别

301永久性重定向,该状态码表示请求的资源已被分配了新的URL,以后应使用资源现在所指的URL302临时重定向。表示请求的资源已被分配了新的URL,希望用户本次使用新的URL访问。和301相似,但302表示的资源不是永久移动,只是临时性的。303由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。303明确表示客户端应当采用get方法获取资源。307临时重定向。该状态码与302有相同的含义。尽管302标准禁止post变化get,但实际使用时大家不遵守。 307会遵照浏览

2020-10-05 17:42:03 955

原创 最大连接数

client最大tcp连接数client每次发起tcp连接请求时,除非绑定端口,通常会让系统选取一个空闲的本地端口(local port),该端口是独占的,不能和其他tcp连接共享。tcp端口的数据类型是unsigned short(2字节),因此本地端口个数最大只有65536,端口0有特殊含义,不能使用,这样可用端口最多只有65535,所以在全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。server最大tcp连接数server通常固定在某个本

2020-10-05 17:31:15 1598

原创 TCP的粘包现象和处理方法

链接:https://blog.csdn.net/hhthwx/article/details/79167164

2020-09-16 17:22:47 333

原创 nginx的IO模型详解

链接:https://www.cnblogs.com/chuyiwang/p/9884041.html

2020-09-16 16:02:36 224

原创 epoll原理以及和select的区别

epoll 原理介绍:epoll有三个系统调用,epoll_create,epoll_ctl,epoll_wait。epoll是初始化数据结构,并且返回一个fd。epoll可以添加或删除描述符。添加时,初始化一个epitem,包含监听的fd,监听事件,就绪链表。然后把对应的回调函数注册到就绪队列中。最后把这个epitem插入到epoll对象的红黑树中,方便后续查找。事件被触发的时候,回调函数会被调用,将对应的epitem写入到就绪链表中。如果当前用户进程正在epoll_wait状态,会将进程唤醒..

2020-09-16 11:22:24 520

原创 TCP中TIME_WAIT状态的作用

TIME_WAIT状态的作用主要有两个:可靠的关闭连接。假设主动关闭连接的一端发送的最后一个ACK分段在网络中丢包或被延迟了,被动关闭的一端因收不到ACK,会重新发送FIN包。这时如果没有TIME_WAIT状态直接处于CLOSED状态,就会直接响应RST而不会响应ACK。极端情况下,ACK到达对端需要一个MSL,对端重发的FIN到达需要一个MSL,当2个MSL之后仍未收到重传的FIN,则认为对端已经收到了ACK。防止上一次连接中的分段延迟到达后影响新连接。TCP连接由五元组(协议,源IP,源端口,目的I

2020-09-15 10:40:36 1317

原创 二维数组按行和按列遍历效率

按行遍历效率高。链接:https://blog.csdn.net/lbwo001/article/details/78817439

2020-09-14 11:24:47 454

原创 MySql索引

MySql 索引那些事:链接联合索引:链接

2020-09-14 11:11:46 90

转载 https加密机制

为什么需要加密?因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了,他还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。最简单容易理解的就是对称加密 。什么是对称加密?就是有一个密钥,它可以对一段内容加密,加密后只能用它才能解密看到原本的内容,和我们日常生活中用的钥匙作用差不多。用对称加密可行吗?如果通信双方都各自持有同一个密钥,且没有别人知道,这两方

2020-09-11 20:36:45 289 1

原创 静态链接库和动态链接库的区别

库是写好的、现有的、成熟的、可以复用的代码。一个程序编译成可执行程序的步骤:静态库在链接阶段,会将汇编生成的目标文件.o 与引用到的库一起链接打包到可执行文件中。静态库对函数库的链接是在编译时期完成的。程序运行时与函数库再无瓜葛,移植方便。浪费空间和资源,因为所有相关的目标文件与有关的函数库都被链接成一个可执行文件。静态库对程序的更新、部署和发布会带来麻烦。一个静态库更新,所有用它的程序都需要重新编译。动态库动态库把对一些库函数的链接载入推迟到程序运行的时期。可以实现进程之间的资源共.

2020-09-11 20:00:14 205

原创 session和cookie

链接:https://www.mudouyu.com/article/221

2020-09-11 10:29:20 92

转载 session和cookie的区别

链接:https://www.zhihu.com/question/19786827/answer/28752144来源:知乎由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯

2020-09-11 10:24:43 108

原创 TCP分段和IP分片

参考链接:https://www.cnblogs.com/zhangkele/p/9899278.html

2020-09-08 15:45:58 124

原创 TCP和网络编程

异常情况:https://www.cnblogs.com/cangqinglang/p/10879326.html网络编程概述:https://www.cnblogs.com/cangqinglang/p/10879324.html

2020-09-07 23:53:19 97

原创 编译和解释的区别

编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。...

2020-09-07 21:03:08 1698

原创 【LeetCode 445】 Add Two Numbers II

题目描述两个链表,表示数字,高位在首部。求两个数字之和。思路用栈。或者反转链表。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * Lis

2020-09-07 20:52:39 90

原创 【LeetCode 99】 Recover Binary Search Tree

题目描述二叉搜索树有两个节点的值被交换了,不改变树的结构,恢复二叉树。思路根据中序遍历顺序,找出不符合的节点。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} *

2020-09-07 17:31:30 104

转载 TCP如何保证可靠传输

TCP/IP可靠传输的基础是滑动窗口协议和连续ARQ协议,配合着流量控制和拥塞控制,使得整个传输过程保证:传输信道不产生差错不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据(通过累计确认、超时重传、拥塞控制三大模块保证)参考链接:https://www.jianshu.com/p/613d5d1d4e1c...

2020-09-03 18:03:33 143

原创 分段,分页,段页式存储管理,多级页表

分页,段页式:https://blog.csdn.net/zephyr_be_brave/article/details/8944967虚拟地址和物理地址映射,多级页表:https://www.cnblogs.com/binarylei/p/12600886.html

2020-09-03 15:24:40 576

空空如也

空空如也

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

TA关注的人

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