4 LessenPaul

尚未进行身份认证

我要认证

Talk is cheap,show me the code

等级
TA的排名 21w+

code & life

  感觉好像很久没有写博客了,实际上也没有很久,只是习惯了每一天都去凝结一下技术上的问题。其实关于code和人生我也有在思考这个问题,而且一直都在想过。可能更多的是在失意的时候会想得更多,例如在感情受挫的时候(哈哈哈),记得在大学那会儿失恋那段时间,一直无法走出那种阴郁的心情(那可是初恋),但是本人又非常不喜欢那种情绪,二十几的人了,怎么能因为这样的事情郁郁不振呢。为了不去想这种事情,我选择整天沉浸在coding的世界中,去research如何写出更加高质量的代码,怎么去深入某个技术的原理,怎么用一个完美的

2020-07-13 23:20:24

聊聊TCP恋爱史--三次牵手四次分手

TCP概述  TCP在OSI五层协议中处于运输层,运输层主要为相互通信的应用进程提供逻辑通信,它可以为它上面的应用层提供通行服务,属于面向通信部分的最高层。我们知道在IP协议中能够将源主机发出的分组按照首部中的目的地址通过路由分组发送到目的主机。但是这个分组还停留在主机的网络层,并没有交付到主机的进程中。因此通信的端点并非是主机而是主机中的进程,因此主机的通信实际上是主机中进程的通信。  根据应用程序的不同的需求,运输层主要有两种不同的协议,一种是无连接的UDP协议;另一种就是面向连接的TCP协..

2020-06-21 14:24:07

深入MySQL事务隔离级别以及实现原理

地方

2020-06-19 12:50:34

堆的原理实现详解以及堆的应用

文章目录堆是什么堆的存储方式插入结点删除结点堆排序代码实现堆是什么  堆(heap)本质上就是一棵完全二叉树,只不过这棵完全二叉树有点特别,能够被称为堆的二叉树,除了它必须要是一棵完全二叉树外,它的每一个结点都必须大于或者小于其子节点。 解释一下就是对于树中的所有的结点都至少有一棵子树,对于这个结点的子树上所有的结点都必须要大于或者小于其父节点。因此,堆也是个递归的定义,通常,我们将结点都大于或者等于子树所有结点的堆称为最大堆 ;将结点都小于或者等于子树所有结点的堆称为最小堆 。如下图所示:

2020-06-15 18:41:46

MySQL索引实现原理剖析及使用策略优化

索引是什么  有些人对索引的解释说索引就像是书的目录,用来提高查询的效率,我觉得是废话,说了和没说一样。不如直接看看MySQL官方给出的解释:“With the exception of spatial indexes, InnoDB indexes are B-tree data structures. ”。因此,从这段描述中,可以知道,索引就是一种数据结构,通过这种特定的数据结构以及查找算法来实现对数据库中数据记录查找的快速性。  现在来想一想假如没有索引在数据库中查询一条记录会是怎么样的流..

2020-06-14 18:36:35

图及其遍历方式--广度优先&深度优先

图的定义及其分类  图和之前说的二叉树一样也是一种非线性数据结构,图由两部分组成:其一是顶点;其二是顶点之间连接的边。顶点就是图中的元素结点,而边就是用来表示顶点之间的关系,如下图:每个顶点的边的条数就是顶点的度, 例如社交产品中,我们每一个人就是图中的顶点,而我们的好友就是该通过边直接连接的顶点,我们好友的个数就是顶点的度。  上图所示的是一种图,它并没有方向的概念,我们知道有些关系之间是有方向的概念的,例如,微博中的关注关系,你关注了某个人但是这个人不一定关注了你。因此,这种图称为有向图..

2020-06-12 13:54:23

字符串匹配算法之BF算法 & RK算法 & BM算法原理及实现

BF算法  BF算法实际上就是暴力破解算法,它的优点就是简单但性能差。它的基本思想就是将模式串与主串中的子串依次比较。  假如我们需要在字符串A中匹配是否存在字符串B,这时我们就把A串叫做主串,把B串叫做模式串。而A串中字符数量等于B串字符数量的串称为子串。我们记A串的长度为n,B串的长度为m。  在主串中,检查起始位置分别是 0、1、2…n-m 且长度为 m 的 n-m+1 个子串,看有没有跟模式串匹配的。我通过一个图来说明我们可以看到在第一次匹配时,从主串的第一个字符为0处开始匹配,每..

2020-06-11 11:00:53

二叉树查找树与平衡二叉树原理剖析与实现

文章目录1、什么是二叉树(Binary Tree)2、二叉树的存储方式3、二叉树的遍历4、二叉查找树(Binary Search Tree)4.1 查找操作4.2 插入操作4.3 删除操作5、平衡二叉树(AVL Tree)1、什么是二叉树(Binary Tree)  二叉树是一种特殊的树,之前我们所讲的数据结构都是线性结构,今天说的二叉树就是一种非线性结构的数据结构。它是具有如下特点的树:其一,每个结点最多只有两棵子树(也就是二叉树中不存在结点的度大于2的结点);其二,二叉树的子树具有左右之分,而且顺序

2020-06-09 15:38:00

scrapy之Spider组件以及Item对象源码分析

1、Spider组件  Spider类定义了抓取一个或者多个网页的动作,以及如何提取结构化的数据。对Spider来说整个流程如同下面的循环:(1)从第一个URL中生成第一个初始化的Request,并设置回调函数,当这些Requst下载生成response后,这些回调函数将被调用。(2)在回调函数内解析返回的response并生返回Item对象或者Request对象,或者是一个包含二者的可迭代对象。返回的Request会通过scrapy处理,并交由Downloader下载,并调用设置的回调函数(3)在

2020-06-08 12:14:36

如何设计高度可用的Hash Table之深度剖析哈希表原理

文章目录1、为什么要说哈希表2、什么是哈希表3、哈希函数的构造4、哈希冲突的处理4.1 开放定址法4.2 链地址法5、如何设计一个健壮的哈希表5.1 Hash Table的扩容5.2 如何选择扩容的策略5.3 开放定址法 VS 链地址法6、如何让哈希表中的数据有序?  看这篇博客的时候,我认为你可以结合我的另一篇博客一起阅读,关于Python中的Dict对象的底层实现(如果你有C语言的基础的话),这篇博客中我深入剖析了Python3.6的版本中Dict对象的底层源码,但是我还是建议你先看这篇博客,然后再对

2020-06-07 18:38:50

scrapy之架构简介及数据流

文章目录1、scrapy简介2、scrapy架构概览3、组件(components)4、数据流(Data Flow)5、白话文1、scrapy简介  scrapy是一个基于Twisted异步框架的一个高效爬取框架,它是一个纯Python编写的框架,它提供了几个重要的组件,你只需要简单地步骤就可以实现一个网站的爬取。除此之外scrapy还是一个扩展性非常强的框架,你可以基于这些组件取定制适合你业务的功能。2、scrapy架构概览  我们来看看官方文档上给出的架构,先上图,再解释3、组件(compo

2020-06-06 22:53:29

Redis对事务处理详解

文章目录Redis事务的概念multiexecdiscardwatch & unwatch乐观锁和悲观锁Redis事务的概念  关于事务的概念不用多说了,大家都懂,关于DBMS中的事务可以参考一下我的这篇博客:https://blog.csdn.net/Leccen/article/details/106583721  我们知道redis的理念是追求简单和高效,因此它的事务并没有像关系数据库那样复杂。redis的事务是一组命令的集合,一个事务中所有命令都会序列化,其他客户端提交的命令请

2020-06-06 18:40:20

数据库的事务与并发控制

文章目录1、事务简介2、并发控制2.1 并发执行2.2 可串行化调度(Serializable)3、锁协议3.1 封锁3.2 封锁协议3.2.1 一级封锁协议3.2.2 二级封锁协议3.2.3 三级封锁协议4、活锁和死锁4.1 活锁4.2 死锁4.2.1 死锁的预防4.2.2 死锁的诊断和解除5、锁的粒度1、事务简介  事务(Transaction)是指用户定义的一个数据库操作序列,这些操作要门全做,要么全都不做,是一个不可分割的整体。 我想,99%的在阐述事务的概念时都会用银行转账的例子,那么我也用这

2020-06-06 16:42:59

高效的查找结构之跳跃表(Skip List)

什么是跳跃表  说实话跳跃表是我非常喜欢的数据结构,虽然很多数据结构和算法的书中并没有讲它,为什么喜欢呢?因为我觉得它最好玩,为什么好玩呢?我也不知道,就是觉得好玩。好了,说了几句废话,现在言归正传。我们之前说过单链表的结构,对于单链表而言,它对于某个元素的查找的时间复杂度是O(n),无论单链表中的数据是有序还是无序都必须要遍历链表上的结点。OK,那我们知道折半查找的性能是非常高的(它实际上也是分而治之的算法思想,由于折半查找比较简单,生活中也随处可见它的案例,所以我没讲这部份内容,不知道的可以去..

2020-06-05 21:59:58

redis持久化--RDB和AOF机制深入解析

文章目录1、什么是持久化(persistence)2、RDB机制2.1 RDB机制的流程2.2 触发方式2.3 RDB机制主要配置信息3、AOF机制3.1 AOF执行流程3.2 同步的策略3.3 重写机制3.4 AOF主要配置信息4、RDB VS AOFRDB优点RDB缺点AOF优点AOF缺点1、什么是持久化(persistence)  我们知道redis是基于内存的数据结构服务器,基于内存就意味着它的读写性能特别高,但是你在享受它的优点时就必须接受它的缺点,由于基于内存。而内存的特点是数据易失,一旦发

2020-06-05 13:44:13

进程的概念与进程的管理详解

文章目录1、进程的概念2、进程的状态和组成2.1 进程的基本状态2.2 进程的实体2.3 进程间的组织方式3、进程的管理3.1 进程的创建3.2 进程的终止3.3 进程的阻塞3.4 进程的唤醒4、线程1、进程的概念  进程(process)一直一来都没有一个较为严格的定义,大多是从其功能的角度解释它。那么进程和程序之间是怎样的一个关系呢?我们先来看看程序,程序就是指令的一个集合,是一个静态的概念,而在多道程序设计系统中,CPU在各个程序之间来回切换,这个程序运行一会儿另一个程序运行一会儿,就是说各个程序

2020-06-04 18:38:26

操作系统概述及其结构

文章目录1、计算机硬件结构1.1 处理器1.2 存储器1.3 I/O设备1.4 总线2、操作系统的概念3、操作系统特征和结构设计1、计算机硬件结构  计算机硬件是软件建立与活动的基础,而软件是对硬件的扩充。所以不管是硬件还是软件对于整个计算机体系来说是不可分割的,现代计算机体系结构基本仍然采用冯. 诺依曼体系结构。从功能上讲,计算机硬件有五大部分组成:运算器、控制器、存储器和输入/输出设备。1.1 处理器  cpu是计算机的大脑,它从内存中提取指令并执行它们,其工作周期是提取指令,译码分析,

2020-06-04 14:19:15

redis数据类型及其操作命令

1、redis简介  redis是一个开源的,基于内存的数据结构存储服务器,可以用作数据库,缓存和消息代理。

2020-06-04 11:09:45

排序算法之线性排序--桶排序&计数排序&基数排序

  之前我们讲了两类排序算法,它们的时间复杂度分别为O(n^2)和O(nlogn)。这两类排序算法都是基于元素之间比较的算法,接下里要说的几种排序算法都是不基于元素之间比较的算法,因此它们的时间复杂度能够做到O(n),所以这几种排序算法被称为线性排序。 那么既然这几种算法性能这么好,那它们有什么缺点吗?有,其一空间复杂度较之前的比较高,其二它们对数据本身要求很苛刻。现在我们就来看看。桶排序(Bucket Sort)  桶大家都不陌生,它用来装一个或者多个东西的,我们将n个待排序的数据分别放入k个

2020-06-03 16:05:16

排序算法之归并排序&快速排序

  之前我们说了冒泡排序和直接插入排序,这两种排序算法都是O(n^2)的时间复杂度,在数据规模小的时候可以使用这两种,但是对于数据规模比较大的情况复杂度就会比较大了,因此在这一节中我们来看看另外两种排序算法,归并排序和快速排序。归并排序(Merge Sort)  归并排序实际上利用了分而治之的思想,我们先将一个无序的数组分解成两个部分,分别对这两个数组递归进行归并排序,最后将结果合并就能得到一个有序的数组了。也就是说我们是将原本一个大的问题分解成多个小的子问题,这些子问题除了数据规模不一样,求解

2020-06-03 00:04:05

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。