自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CPU总线的理解

CPU总线(Central Processing Unit Bus)是计算机硬件中的一个重要组成部分,它是连接CPU和其他硬件组件的通道。前端总线(FSB):这是连接CPU和主内存(RAM)以及其他硬件设备的主要通道。如果总线的速度或宽度不足,即使CPU的处理能力很强,也可能因为数据传输的瓶颈而无法充分发挥其性能。后端总线(BSB):这是连接CPU和高速缓存(如L2或L3缓存)的通道。总线的宽度和速度会直接影响CPU的性能。总线宽度决定了CPU一次可以处理的数据量,而总线速度则决定了数据传输的速度。

2023-08-27 15:50:06 832

原创 TCP滑动窗口和拥塞控制

滑动窗口是TCP协议为了实现流量控制而设计的机制,它通过窗口的大小来控制发送端发送的数据量。

2023-08-09 17:26:32 609

原创 操作系统用户态和核心态和CPU上下文切换

操作系统两种状态:用户态和内核态。操作系统的用户态和内核态是操作系统的两种运行状态,出现这两种状态的原因主要是为了对访问能力进行限制,用户态的权限较低,而内核态的权限较高。

2023-08-03 14:12:43 660

原创 Linux 配置与磁盘管理

Linux 配置与磁盘管理

2023-04-21 11:29:19 2099 2

原创 MVCC底层原理

MVCC的实现主要依赖于记录中的三个隐藏字段,undo log和Read View来实现。

2023-04-17 22:22:40 626

原创 Redis缓存数据库双写不一致问题

Redis双写不一致,也就是数据在缓存和数据库的一致性问题的讨论在业内是讨论得比较热门的,也是比较有争议性的。

2023-04-16 09:09:36 624

原创 Shell Script

Shell是Linux/Unix中用户和系统交换的接口,它是一个命令解释器,同时也是高级程序设计语言。

2023-04-13 16:06:26 1097

原创 Lua脚本

Lua脚本是一个小巧的轻量级的脚本语言,它的设计目的你说为了通过嵌入到应用程序中从而为应用程序提供拓展和定制功能。Lua是由C语言来编写的,几乎所有的操作系统和平台都可以编译和运行Lua脚本语言。在所有脚本引擎中,Lua的速度是最快的。所有它才被作为嵌入式脚本语言。Lua脚本很容易被C、C++代码调用,也可以反过来调用C、C++代码。

2023-04-13 13:41:28 5627

原创 Liunx wget命令

wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件,而且wget还提供了很多选项,例如下载多个文件、后台下载,使用代理等等,使用非常方便。接下来就介绍一下wget的使用方法。

2023-04-13 11:34:06 982

原创 Redis锁的租约问题

这就是典型的租约机制,用户申请了一个租约时长为lock_timeout的锁,用户可以在租约期间使用完之后正常释放锁,如果说了租约时间,即使用户没有释放锁,Redis也会自动释放锁。

2023-04-13 00:32:46 480

原创 Fail-Fast机制和ConcurrentModificationException并发修改异常

我们可以这样理解Fail-Fast机制,在集合遍历之前,我们先把集合的size,也就是modCount记录下来,在集合遍历之后产生的expectModCount,我们将modCount和expectModCount进行比较,如果不相等,那么就抛出。我们来举个例子:当我们的线程A正在使用iterator去遍历一个ArrayList或者是HashMap的时候,另一个线程B在线程A遍历的时候对该List或者Map进行add、delete、clear,这个时候线程A就很可能会抛出。

2023-04-04 17:31:12 451

原创 说一说ArrayLisst,并基于ArrayList说一下其创建和扩容问题

然后是我们的List,List是Collection的子接口,是一个有序、可重复的集合,List在Java中有两种实现方式,一种是LinkedList,而另一种就是我们的ArrayList,ArrayList是基于索引结构的实现。我们可以先来说一说数组,Array数组,是一种基于索引的数据结构,使用索引来搜索和获取数据是很快的,Array检索和获取数据的时间复杂度是O(1),但是要删除数据的开销却很大,因为删除数据之后需要对数组的数据进行重新排列,删数据之后,后面的元素需要移动到前面。

2023-04-04 17:03:23 562

原创 总结Integer与int的比较

规律一:如果Integer中被赋值的数字不在Integer.cache() 的缓存范围内的话,那么无论是new Integer (),还是Integer.valueOf(),还是 integer = xx;那么相比的时候,都是false。规律二:如果Integer中被赋值的数字在Integer.cache() 的缓存范围内的话,那么 Integer.value()、integer = xx, 都相当于常量,内存位置是一样的,而new Integer()的位置与常量的位置不同。

2023-04-04 11:25:21 69

原创 Java ACM赛制规则和输入输出

ACM赛制代码规则

2023-03-26 13:41:27 341

原创 需要去理解的算法

有一些算法我们需要去理解并熟记其写法

2023-03-23 11:15:49 62

原创 MySQL常用函数或者关键字

我们需要掌握一些常用的MySQL函数,这样我们才能更好得写出一些SQL,更好地解决我们的问题。

2023-03-23 10:51:16 75

原创 [牛客算法总结]:BM60 括号生成

牛客算法,便于自己的反思和复习

2023-03-21 14:57:45 130

原创 Java Stack编程小技巧(持续更新)

在编程中我们一直会思考,我们如何将我们的代码写得更加好一些,而不至于一直写那些原生的代码,这样会看起来比较繁琐。其次,这里也总结了一些常用的编程技巧。

2023-03-21 09:50:54 52

原创 [牛客算法总结]:验证IP地址

牛客算法,便于自己的反思与复习

2023-03-19 11:23:32 204

原创 [牛客算法总结]:链表相加(二)

牛客算法,便于自己的反思与复习

2023-03-18 13:45:51 427

原创 Java Map编程小技巧(持续更新)

为了更好地写代码,写出优雅得代码,我们需要总结这些编程技巧

2023-03-18 10:32:02 76

原创 输出二叉树的右视图

牛客算法,便于自己的反思和理解

2023-03-17 14:50:10 76

原创 [牛客算法总结]:重建二叉树

牛客算法总结:便于自己的理解

2023-03-17 13:48:04 584

原创 MySQL中的Join连接查询

我们在进行表连接查询的时候一般都会使用JOIN xxx ON xxx的语法,ON语句的执行是在JOIN语句之前的,也就是说两张表数据行之间进行匹配的时候,会先判断数据行是否符合ON语句后面的条件,再决定是否JOIN,对参与 Join 操作的基表或视图进行过滤,之后再对两表进行 Join 操作,输出结果集。对于三表或多表 Join,则都是可以拆分为两表 Join 的方式进行处理,最先参与 Join 操作的两个表的 Join 的结果集,以表的形式参与后续的 Join 操作。我们来举个例子来简单理解笛卡尔积。

2023-03-04 02:02:55 1994

原创 分布式ID生成系统

在大多数复杂的分布式系统中,往往需要对大量的数据和消息进行唯一标识。而对分布式系统后台数据库的分库分表后需要有一个唯一的ID来表示一条数据或者是消息。那么我们分布式系统ID一般都有哪些需求呢?

2023-02-28 15:14:51 264

原创 Hystrix资源隔离

Hystrix有一项比较核心的功能,就是所谓的资源隔离,资源隔离要解决的核心问题,就是将多个依赖服务的调用分别隔离到各自的资源池中,避免某一个依赖服务的调用因为依赖服务的接口调用的延迟或者失败,导致所有的线程资源全部耗费在这个服务的接口调用上,一旦某个服务的线程资源全部耗尽,就可能导致雪崩效应。信号量的资源隔离只是起到一个开关的作用,比如,服务 A 的信号量大小为 10,那么就是说它同时只允许有 10 个 tomcat 线程来访问服务 A,其它的请求都会被拒绝,从而达到资源隔离和限流保护的作用。

2023-02-21 21:22:51 1073

原创 浅谈使用CDN加速的OSS

使用CDN加速的OSS的好处支持海量存储。OSS的存储空间弹性无限扩展,您无需考虑存储架构升级。用户访问网站资源,全部通过CDN,降低源站压力。从距离客户端最近的CDN节点获取资源,减少网络传输距离,保证静态资源传输速度。

2023-02-18 13:45:17 1544 1

原创 用户管理——认证功能JWT和Session

基于session和基于JWT的方式的主要区别就是用户的状态保存的位置,session是保存在服务端的,而JWT是保存在客户端的

2023-02-17 17:14:15 800

原创 二十三种设计模式——原型模式

原型模式也可以叫克隆模式,所谓原型模式,是指以某个对象为原型,复制出一些新的对象,新的对象和原来的对象是一样的。

2023-02-16 20:16:51 84

原创 二十三种设计模式——单例模式

所谓的单例模式,指的是采用一定的手段来保证整个系统中对于某一个类只能存在一个实例对象,并且该类只提供了一个获取其实例对象的方法。

2023-02-16 17:33:01 66

原创 Zookeeper

什么是Zookeeper?Zookeeper是一个开源的分布式的,为其他分布式监控提供协调服务的Apache项目。

2023-02-15 17:07:18 356

原创 Kafka 消息队列

什么是Kafka?Kafka是一个基于分布式的、具有高吞吐量的发布、订阅模式的消息队列,主要应用于大数据领域,它可以承担大数据的存储、分析和计算。

2023-02-14 15:50:38 2690

原创 Redis 缓存穿透、缓存击穿和缓存雪崩

缓存穿透、缓存击穿和缓存雪崩这三个概念和知识点我们一定要掌握,而且我们也必须掌握其解决方案,因为我们工作中经常会遇到缓存穿透和缓存雪崩的情况。

2023-02-13 15:35:42 819

原创 布隆过滤器的使用

Redis经常会被问道缓存击穿问题,比较优秀的解决办法是使用布隆过滤器,也有使用空对象解决的,但是最好的办法肯定是布隆过滤器,我们可以通过布隆过滤器来判断元素是否存在,避免缓存和数据库都不存在的数据进行查询访问;也就是说 Guava 的布隆过滤器会根据Funnel 类的定义,计算一个对象的哈希值,放入过滤器。Google 的 Guava 库提供了使用布隆过滤器的 API 类(BloomFilter.class),它是线程安全的。布隆过滤器是用来防止缓存穿透的,我们需要知道如何使用布隆过滤器。

2023-02-13 14:31:48 808

原创 Redis过期删除策略

Redis过期删除策略

2023-02-12 15:03:30 626

原创 Java中的类加载机制

首先类的加载是由类加载器完成的,类加载器包括:根加载器(Bootstrap)、拓展加载器(Extension)、系统加载器(System)和用户自定义类加载器。从JDK1.2开始,类加载的过程就采用了双亲委派机制(PDM),双亲委派机制更好了保证了Java平台的安全性,所谓的双亲委派机制是指,JVM自带的Bootstrap是根加载器,其他加载器有且仅有一个父加载器。类的加载首先请求父类加载器进行加载,当父类加载器无能为力时才由其之类加载器进行加载。下面说一下几个类加载器的作用。

2023-02-08 18:17:51 2064

原创 MySQL 5.5版本的两个执行引擎

但是innodb执行引擎中,叶子节点数据区挂载的是真正的行记录,我们可以理解为我们user表中一行一行的记录。如果我们建立非主键索引,首先一样会在我们的idb文件中开辟一个空间去存放非主键索引的数据结构,但是与主键索引不同的是,我们在InnoDB执行引擎中,建立非主键索引的时候,在我们B+Tree数据结构中叶子节点的数据区,挂载的不是行记录,而是当前建立索引的值name和主键的值id,然后拿到这个主键值id,再去我们主键的索引树中去找行记录,过程与主机索引过程一样。因为InnoDB引擎中,主键是聚簇索引。

2023-01-17 17:59:45 803

原创 MySQL索引命中与失效

1、MySQL中索引失效的情况:1、组合索引中不遵循最左匹配原则,带头大哥不在,导致索引失效,全表扫描。2、在索引列上做了函数操作,导致索引失效,全表扫描。3、模糊查询前缀是以%开头的,导致索引失效,全表扫描。4、使用is not null 会导致索引失效。5、使用or时,如果条件查询中其中一个不带索引,导致索引失效,全表扫描。6、使用不等于(!= 或者)的时候,会导致索引失效。7、使用范围查询(>、=、

2023-01-14 21:51:17 3241 1

原创 MySQL最左匹配原则

一般我们组合索引字段数量不建议超过5个,而我们需要理解组合索引的最左匹配原则,我们就可以避免重复创建索引。比如我们建立了(x,y,z)索引,我们就不需要建立(x)索引,(x,y)索引,因为我们建立(x,y,z)索引就相当于建立了(x)索引,(x,y)组合索引,(x,y,z)组合索引。也就是我们不能使用空中楼阁,我们把我们的 age 当成1楼,birthday 当成2楼,sex当成3楼,1楼都不在,我们怎么上2、3楼,这就是最左匹配原则,第一个根本就没有匹配到,后面的就根本不用看了。

2023-01-14 14:15:07 884

原创 聚簇索引和非聚簇索引

而在InnoDB中,聚簇索引的B+树的叶子节点是一个数据页,默认大小为16K,这些叶子节点,也就是数据页的数据其实是一个有序链表,会按照主键递增的顺序来存储。在InnoBD中通过主键来聚簇数据,也就是说聚簇索引的的B+树上的叶子节点所存储的key总是主键值,如果没有定义主键,InnoDB会选择一个唯一的非空索引来代替,如果也没有这样的索引,InnoDB会隐式地定义一个主键来聚簇数据,这个隐式的主键被称为 rowID。讲完聚簇索引,接下来我们来聊一下非聚簇索引,也就是我们平常进程提起和使用的常规索引。

2023-01-13 14:50:03 1437

空空如也

空空如也

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

TA关注的人

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