华山拎壶冲
码龄11年
  • 320,954
    被访问
  • 49
    原创
  • 1,125,104
    排名
  • 130
    粉丝
关注
提问 私信

个人简介:不积跬步,无以至千里。。。 面试必备:https://www.jianshu.com/u/c3be0f69940b

  • 加入CSDN时间: 2010-12-18
博客简介:

tyrroo的博客

查看详细资料
  • 3
    领奖
    总分 409 当月 2
个人成就
  • 获得229次点赞
  • 内容获得45次评论
  • 获得788次收藏
创作历程
  • 11篇
    2021年
  • 32篇
    2020年
  • 123篇
    2019年
  • 59篇
    2018年
  • 2篇
    2017年
成就勋章
TA的专栏
  • 经典面试题
    27篇
  • 算法刷题
    11篇
  • rpc
    1篇
  • java security
    1篇
  • 机器学习
    2篇
  • 数学
    1篇
  • maven
    2篇
  • springMvc
    3篇
  • java核心技术
    18篇
  • 数据结构
    8篇
  • java8
    5篇
  • git
    2篇
  • redis
    12篇
  • mysql
    8篇
  • python
    1篇
  • storm
    1篇
  • jvm
    16篇
  • linux
    50篇
  • spring
    3篇
  • 学习总结
    2篇
  • 源码解读
    3篇
  • java io
    6篇
  • 实用工具技巧
  • 日志组件
    3篇
  • spring cloud
    1篇
  • 分布式架构
    4篇
  • elasticsearch
    4篇
  • 图数据库
    14篇
  • hadoop生态
    3篇
  • kafka
    3篇
  • zookeeper
    4篇
  • quartz
    1篇
  • java多线程编程
    22篇
  • java nio
    6篇
  • java reference
    5篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

redis的底层数据结构

1、演示数据类型的实现  上篇博客我们在介绍 key 相关命令的时候,介绍了如下命令:OBJECT ENCODING key   该命令是用来显示那五大数据类型的底层数据结构。  比如对于 string 数据类型:    我们可以看到实现string数据类型的数据结构有 embstr 以及 int。  再比如 list 数据类型:    这里我们就不做过多的演示了,那么上次出现的 embstr 以及 int 还有 quicklist 是什么数据结构呢?下面我们就来
转载
发布博客 2021.07.03 ·
73 阅读 ·
0 点赞 ·
0 评论

innodb日志文件(redo-log,undo-log)

innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。1.re
转载
发布博客 2021.06.29 ·
208 阅读 ·
0 点赞 ·
0 评论

MySQL 用 limit 为什么会影响性能?

一.前言首先说明一下MySQL的版本:mysql> select version();+-----------+| version() |+-----------+| 5.7.17 |+-----------+1 row in set (0.00 sec)表结构:mysql> desc test;+--------+---------------------+------+-----+---------+----------------+..
转载
发布博客 2021.06.26 ·
90 阅读 ·
0 点赞 ·
0 评论

慢sql优化必看

https://blog.csdn.net/qq_42865087/article/details/109202607?share_token=10ACDE1C-5967-4049-87D6-67BD08BAE1F3&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1
原创
发布博客 2021.06.26 ·
62 阅读 ·
0 点赞 ·
0 评论

深入研究Netty之线程模型详解

本文主要介绍Netty线程模型及其实现,介绍Netty线程模型前,首先会介绍下经典的Reactor线程模型,目前大多数网络框架都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,非常适合处理海量的I/O事件。下面简单介绍下Reactor模式及其线程模型。Reactor模式Reactor模式首先是事件驱动的,有一个或多个并发输入源,有一个Service Handler,有多个Request Handlers;这个Service Handler会同步的将输入的请求(Event)多路
转载
发布博客 2021.06.25 ·
49 阅读 ·
0 点赞 ·
0 评论

破坏单例模式的三种方式

单例模式的定义:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。在java中,单例模式我们常用的有三种(不晓得哪个天杀的说有七种,我懒得去找……)其实,我们在日常的应用中,会遇到这么一些问题:单例模式是怎么被破坏的?单例模式无坚不摧到底好不好?单例模式既然会被破坏有没有办法写一个无法破坏的单例模式?这一次我们会讨论关于单例模式的破坏以及单例模式的良性破坏和恶性破坏。首先我们了
转载
发布博客 2021.06.25 ·
221 阅读 ·
0 点赞 ·
0 评论

Redis 消息队列的三种方案(List、Streams、Pub/Sub)

现如今的互联网应用大都是采用分布式系统架构设计的,所以消息队列已经逐渐成为企业应用系统内部通信的核心手段,它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等,而部分数据库如Redis、MySQL以及phxsql,如果硬搞的话,其实也可实现消息队列的功能。可能有人觉得,各种开源的 MQ 已经足够使用了,为什么需要用 Redis 实现 M...
转载
发布博客 2021.06.25 ·
115 阅读 ·
0 点赞 ·
0 评论

Java NIO实现原理之Channel

Channel类似与流,通道的特点:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。channel的类结构图如下:channel类结构.png其中:AbstractInterruptibleChannel:NIO中可中断channel的基本实现,可参考Java NIO中线程的中断机制ReadableByteChannel,WritableByteChannel,S.
转载
发布博客 2021.06.22 ·
76 阅读 ·
0 点赞 ·
0 评论

B-Tree和B+Tree详解

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。二叉查找树二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树,对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深...
转载
发布博客 2021.06.22 ·
78 阅读 ·
0 点赞 ·
0 评论

innodb MVCC底层原理详解

1 简介MVCC(Multi-Version Concurrency Control)多版本并发控制,是用来在数据库中控制并发的方法,实现对数据库的并发访问用的。在MySQL中,MVCC只在读取已提交(Read Committed)和可重复读(Repeatable Read)两个事务级别下有效。其是通过Undo日志中的版本链和ReadView一致性视图来实现的。MVCC就是在多个事务同时存在时,SELECT语句找寻到具体是版本链上的哪个版本,然后在找到的版本上返回其中所记录的数据的过程。首先需要知道的
转载
发布博客 2021.06.19 ·
28 阅读 ·
0 点赞 ·
0 评论

Java8内存模型—永久代(PermGen)和元空间(Metaspace)

一、JVM 内存模型  根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。  1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出StackOverflowError的错误,不过这个深度范围不是一个恒定的值,我们通过下面这段程序可以测试一下
转载
发布博客 2021.04.22 ·
104 阅读 ·
0 点赞 ·
0 评论

算法题 417:BFS 和 DFS 两种方式求岛屿的最大面积

问题描述给定一个包含了一些0和1的非空二维数组grid 。一个岛屿是由一些相邻的1(代表土地)构成的组合,这里的「相邻」要求两个1必须在水平或者竖直方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0
转载
发布博客 2020.09.16 ·
221 阅读 ·
0 点赞 ·
0 评论

二叉树、红黑树、B&B+树超齐全,快速搞定数据结构

前言没有必要过度关注本文中二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。数据在计算机中的存储结构主要为顺序存储结构、链式存储结构、索引存储结构、散列存储结构,其中链式存储结构最常见的示例是链表与树,链式存储结构主要有以下特点:优点:逻辑相邻的节点物理上不必相邻,插入、删除灵活,只需改变节点中的指针指向 缺点:存
转载
发布博客 2020.09.15 ·
422 阅读 ·
0 点赞 ·
0 评论

你真的会做 “2 Sum”题吗?

2 Sum 这题是 Leetcode 的第一题,相信大部分小伙伴都听过的吧。作为一道标着 Easy 难度的题,它真的这么简单吗?我在之前的刷题视频里说过,大家刷题一定要吃透一类题,为什么有的人题目做着越来越少,有的人总觉得刷不完的题,就是因为没有分类吃透。单纯的追求做题数量是没有意义的,Leetcode 的题目只会越来越多,就像高三时的模考试卷一样做不完,但分类总结,学会解决问题的方式方法,才能遇到新题也不手足无措。2 Sumimage这道题题意就是,给一个数组和一个目标值,让你
转载
发布博客 2020.09.11 ·
99 阅读 ·
0 点赞 ·
0 评论

一文学会回溯算法解题技巧

前言上文我们学习了深度优先搜索和广度优先搜索,相信大家对这两者的算法有了比较清楚的认识,值得一提的,深度优先算法用到了回溯的算法思想,这个算法虽然相对比较简单,但很重要,在生产上广泛用在正则表达式,编译原理的语法分析等地方,很多经典的面试题也可以用回溯算法来解决,如八皇后问题,排列组合问题,0-1背包问题,数独问题等,也是一种非常重要的算法。本文将会从以下几个方面来讲述回溯算法,相信大家看了肯定有收获!什么是回溯算法 回溯算法解题通用套路 经典习题讲解什么是回溯算法回溯算法本质其实就是
转载
发布博客 2020.09.09 ·
373 阅读 ·
0 点赞 ·
0 评论

图解排序算法:快速排序

快速排序算法首先选一个基准 pivot,然后过一遍数组,把小于 pivot 的都挪到 pivot 的左边, 把大于 pivot 的都挪到 pivot 的右边。这样一来,这个 pivot 的位置就确定了,也就是排好了 1 个元素。然后对 pivot 左边 ???? 的数排序,对 pivot 右边 ???? 的数排序,就完成了。那怎么排左边和右边?答:同样的方法。所以快排也是用的分治法的思想。「分」选择一个 pivot,就把问题分成了pivot 左边 pivot 右
转载
发布博客 2020.09.04 ·
127 阅读 ·
1 点赞 ·
0 评论

经典动态规划:打家劫舍系列问题

有好几位读者私下问我 LeetCode 「打家劫舍」系列问题(英文版叫 House Robber)怎么做,我发现这一系列题目的点赞非常之高,是比较有代表性和技巧性的动态规划题目,今天就来聊聊这道题目。打家劫舍系列总共有三道,难度设计非常合理,层层递进。第一道是比较标准的动态规划问题,而第二道融入了环形数组的条件,第三道更绝,让盗贼在二叉树上打劫,这就是传说中的高智商犯罪吧。。。下面,我们从第一道开始分析。House Robber Iimagepublic int rob(int[]
转载
发布博客 2020.09.03 ·
217 阅读 ·
0 点赞 ·
0 评论

一文学会动态规划解题技巧

前言动态规划(dynamic programming,简称 dp)是工程中非常重要的解决问题的思想,从我们在工程中地图软件上应用的最短路径问题,再在生活中的在淘宝上如何凑单以便利用满减券来最大程度地达到我们合理薅羊毛的目的 ,很多时候都能看到它的身影。不过动态规划对初学者来说确实比较难,dp状态,状态转移方程让人摸不着头脑,网上很多人也反馈不太好学,其实就像我们之前学递归那样,任何算法的学习都是有它的规律和套路的,只要掌握好它的规律及解题的套路,再加上大量的习题练习,相信掌握它不是什么难事,本文将会用比
转载
发布博客 2020.09.02 ·
240 阅读 ·
1 点赞 ·
0 评论

一文学会递归解题

前言递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等),换句话说,如果能解决递归的算法复杂度,其他算法题题的时间复杂度也基本不在话下。另外,递归算法的时间复杂度
转载
发布博客 2020.09.02 ·
340 阅读 ·
0 点赞 ·
0 评论

拜托,别再问我什么是堆了!

前言堆是生产中非常重要也很实用的一种数据结构,也是面试中比如求 Top K 等问题的非常热门的考点,本文旨在全面介绍堆的基本操作与其在生产中的主要应用,相信大家看了肯定收获满满!本文将会从以下几个方面来讲述堆:生产中的常见问题 堆的定义 堆的基本操作 堆排序 堆在生产中应用生产中的常见问题我们在生产中经常碰到以下常见的问题:优先级队列的应用场景很广,它是如何实现的呢 如何求 Top K 问题 TP99 是生产中的一个非常重要的指标,如何快速计算可能你已经猜到了,以上生产上的高
转载
发布博客 2020.09.01 ·
102 阅读 ·
1 点赞 ·
0 评论
加载更多