自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 202. 快乐数

【代码】leetcode 202. 快乐数。

2024-03-19 15:15:09 304

原创 leetcode 139. 单词拆分

【代码】leetcode 139. 单词拆分。

2024-03-18 20:39:04 282

原创 docker+k8s相关面试题

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由Google开发,并于2014年发布为开源项目,现在由Cloud Native Computing Foundation(CNCF)进行维护。Kubernetes旨在解决在分布式系统中部署和管理容器化应用程序时遇到的挑战。下面是一些关键概念和组件,帮助你更好地理解Kubernetes:节点(Nodes):节点是运行Kubernetes的物理或虚拟机器。每个节点都可以托管一个或多个容器。

2024-03-18 13:55:07 2898

原创 kafka面试题

data为Message的具体内容。这样做的原因是还没有被足够多副本复制的消息被认为是“不安全”的,如果 Leader 发生崩溃,另一个副本成为新 Leader,那么这些消息很可能丢失了。1、 这其实是分布式场景下的通用问题,因为我们知道CAP理论下,我们只能保证C(一致性)和A(可用性)取其一,如果支持读写分离,那其实对于一致性的要求可能就会有一定折扣,因为通常的场景下,副本之间都是通过同步来实现副本数据一致的,那同步过程中肯定会有时间的消耗,如果支持了读写分离,就意味着可能的数据不一致,或数据滞后。

2024-02-17 16:58:00 1136

原创 搭建一个完整的Kubernetes集群

Kubernetes 支持容器网络插件,使用的是一个名叫 CNI 的通用接口,它也是当前容器网络的事实标准,市面上的所有容器网络开源项目都可以通过 CNI 接入 Kubernetes,比如 Flannel、Calico、Canal、Romana 等等,它们的部署方式也都是类似的“一键部署”。在本篇的最后部分,我会介绍到它。不过,不同于对 Ceph 的简单封装,Rook 在自己的实现中加入了水平扩展、迁移、灾难备份、监控等大量的企业级功能,使得这个项目变成了一个完整的、生产级别可用的容器存储插件。

2023-12-21 15:23:25 1026

原创 golang单测

Testify是一个功能强大且易于使用的测试工具包,提供了丰富的断言方法和辅助函数。它扩展了Go的内置testing包,使测试编写更简洁、可读性更高。由于goland自动生成的测试函数使用了反射,但是大多数情况下是不使用的,使用断言这种方式,所以就用了下面的Testify。导入库:go get github.com/stretchr/testify/assert。

2023-12-20 17:04:02 656

原创 Golang for i 和for range性能对比

通过数据对比,在开发过程中,如果数据量在10000以内,for rang 性能更好一些,如果数据量超过10000,使用for i性能更好一些,需要结合具体使用场景来看。因此,在选择循环结构时,应根据具体情况和代码可读性进行权衡。循环内部会获取切片的长度,并直接访问切片的底层数组。这避免了额外的内存分配和复制操作,从而提高了性能。是通过访问底层数组或切片来获取元素的,而不需要逐个访问每个元素。循环在每次迭代时需要进行更多的工作,如获取索引和对应的值。然而,对于一般的迭代任务,性能差异可能并不明显,并且。

2023-12-19 09:57:15 544

原创 Go实现定时任务

【代码】Go实现定时任务。

2023-11-16 10:18:18 206

原创 阿里云通过音视频url获取字幕内容

【代码】阿里云通过音视频url获取字幕内容。

2023-11-08 15:24:25 192

原创 阿里云人脸识别对比

【代码】阿里云人脸识别对比。

2023-10-16 18:11:03 802

原创 项目串讲(后端)要讲哪些东西?

首先就是文件的目录,每个文件夹里都是什么东西,包含什么内容,有什么功能。最后就是具体到项目功能实现的接口(API),包括接口的名称,请求方法,请求参数,接口实现的逻辑,这个逻辑最好要画一个流程图,这样在串讲的时候会更加清晰,然后最好配上代码,把那个逻辑的代码截张图,标清楚第一步怎么样,第二步怎么样,再这就是把每一步用到的数据库表也写上去,这样就结合代码了,说明你真的看代码了,根据代码理解逻辑了,最后就是这个接口返回什么参数以及在这个接口中就是把数据查了一下,还是赋值存储入库了,入的哪个库,说清楚。

2023-10-12 15:37:17 377

原创 golang开发实习生一面算法题

算法题:用协程交替打印1~8和"a"~"f"

2023-09-27 14:50:44 278

原创 分布式锁的实现方式

分布式锁是指分布式应用各节点对共享资源的排他式访问而设定的锁。分布式CAP理论:任何一个分布式系统都不无法同时满足一致性、可用性和分区容错性,最多执行同时满足两项。在互联网领域绝大数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证最终一致性,只要这个最终时间是在用户可以接受的范围内容即可。

2023-09-12 09:35:24 208

原创 golang—面试题大全

Go中Map是一个KV对集合。底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个Key都申请一个结构通过链表串起来,而是以bmap为最小粒度挂载,一个bmap可以放8个kv。每个map的底层结构是hmap,是有若干个结构为bmap的bucket组成的数组。每个bucket底层都采用链表结构。bmap 就是我们常说的“桶”,桶里面会最多装 8 个 key,这些 key之所以会落入同一个桶,是因为它们经过哈希计算后,哈希结果是“一类”的,关于key的定位我们在map的查询和赋值中详细说明。

2023-08-13 21:21:28 5058 2

原创 Redis—过期删除策略和内存淘汰策略

当 Redis 进行内存淘汰时,会使用。

2023-08-13 08:59:46 907

原创 操作系统—网络系统

零拷贝技术是一种优化技术,用于减少数据在内核空间和用户空间之间的拷贝次数,从而提高数据传输的效率。通过避免不必要的数据拷贝,直接将数据从源缓冲区传输到目标缓冲区,减少CPU的负担,提升系统性能。IO多路复用(IO Multiplexing)是一种操作系统提供的IO处理机制,通过同时监视多个文件描述符(FD)的IO状态,实现对这些IO事件的异步处理。常见的IO多路复用技术包括select、poll和epoll。

2023-08-12 15:36:49 266

原创 Redis—集群

全量复制、基于长连接的命令传播、增量复制。主从服务器第一次同步的时候,就是采用全量复制,此时主服务器会两个耗时的地方,分别是生成 RDB 文件和传输 RDB 文件。为了避免过多的从服务器和主服务器进行全量复制,可以把一部分从服务器升级为「经理角色」,让它也有自己的从服务器,通过这样可以分摊主服务器的压力。第一次同步完成后,主从服务器都会维护着一个长连接,主服务器在接收到写操作命令后,就会通过这个连接将写命令传播给从服务器,来保证主从服务器的数据一致性。

2023-08-11 21:17:51 1227

原创 MySQL—缓存

InnoDB会把存储的数据划分为若干个页,以页作为磁盘和内存交互的基本单位,一个页默认大小为16KB,MySQL启动时,InnoDB会为buffer pool申请一篇连续的内存空间,然后按照默认的16KB的大小划分出一个个的页,buffer pool中的页就叫做缓存页。有了 Free 链表后,每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从 Free链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的控制块从 Free 链表中移除。

2023-08-10 20:20:54 1219 1

原创 操作系统—调度算法

扫描调度算法性能较好,不会产生饥饿现象,但是存在这样的问题,中间部分的磁道会比较占便宜,中间部分相比其他部分响应的频率会比较多,也就是说每个磁道的响应频率存在差异。

2023-08-10 09:33:43 179

原创 Redis—缓存

当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是。,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。为了减少对业务的影响,我们可以启用。

2023-08-10 09:02:33 1197

原创 计算机网络—IP

其中对于 A、B、C 类主要分为两个部分,分别是网络号和主机号。主机号全为1指定某个网路下的所有主机,用于广播主机号全为0指定某个网络而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。ping 是应用层命令,ping应用的底层,用的是网络层的ICMP协议ICMP是利用了IP协议进行消息的传输。。Ping 是计算机网络中常用的诊断工具,用于测试网络连接和测量网络延迟。

2023-08-09 21:03:02 1773

原创 MySQL—事务

多版本并发控制(Multi-Version Concurrency Control,简称 MVCC)是一种用于实现事务隔离的技术。在 MySQL 中,InnoDB 存储引擎使用 MVCC 来实现事务的隔离性,提高数据库并发性能。MVCC 的基本思想是为每个事务操作提供一个数据版本的快照,这样事务就可以在它自己的数据快照上独立运行,而不会受到其他并发事务的影响。通过这种方式,MVCC 可以在不使用加锁的情况下实现高效的事务隔离,从而提高系统的并发性能。

2023-08-09 17:01:21 333

原创 MySQL—锁篇

两阶段锁协议(Two-Phase Locking Protocol,简称 2PL)是一种用于控制并发事务的锁定协议,以确保事务的一致性和隔离性。两阶段锁协议可以防止脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)等问题,从而实现事务的隔离级别。两阶段锁协议的基本思想是将事务的执行过程分为两个阶段:加锁阶段(Locking Phase)和解锁阶段(Unlocking Phase)。加锁阶段(Locking Phase)

2023-08-09 16:59:55 892

原创 MySQL—索引

聚簇索引(Clustered Index)和非聚簇索引(Non-Clustered Index)是两种不同类型的数据库索引,它们在数据存储和查询性能方面有一些区别。聚簇索引并不是一种独立的索引类型,而是指数据行与索引行在存储上的排列方式。在聚簇索引中,表中的数据行按照索引键的顺序存储在磁盘上。换句话说,聚簇索引定义了表中数据的物理存储顺序。由于聚簇索引决定了数据的物理顺序,因此每个表只能有一个聚簇索引。在具有聚簇索引的表中,数据行的查找非常快,因为索引键值可以直接指向数据行的存储位置。

2023-08-09 16:57:32 726

原创 MySQL—日志

redo log 是物理日志,记录了某个数据页做了什么修改,比如对 XXX 表空间中的 YYY 数据页 ZZZ 偏移量的地方做了AAA 更新,每当执行一个事务就会产生这样的一条或者多条物理日志。在 MySQL 中,redo log(重做日志)是一种事务日志,用于记录已经执行的事务对数据库的修改操作。它用于确保事务的持久性和数据的一致性。当一个事务对数据库进行修改操作时,MySQL 首先会将这些修改操作记录到 redo log 中,然后再将修改操作应用到内存中的数据页。

2023-08-09 16:47:47 439

原创 操作系统—进程管理

线程是进程当中的一条执行流程,是CPU调度的最小单位。

2023-08-09 14:46:32 289

原创 Redis—持久化

出来的重写子进程会先将与主线程共享的内存数据以 RDB 方式写入到 AOF 文件,然后主线程处理的操作命令会被记录在重写缓冲区里,重写缓冲区里的增量命令会以 AOF 方式写入到 AOF 文件,写入完成后通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的的 AOF 文件。加载完 RDB 的内容后,才会加载后半部分的 AOF 内容,这里的内容是 Redis 后台子进程重写 AOF 期间,主线程处理的操作命令,可以使得。最后在重写工作完成后,将新的 AOF 文件覆盖现有的 AOF 文件。

2023-08-09 08:58:04 635

原创 计算机网络—HTTP

粘包问题是指在基于 TCP 协议的数据传输过程中,由于 TCP 是一个面向字节流的可靠传输协议,接收方在接收数据时可能会将多个数据包收到一起,形成一个“粘在一起”的数据包。这种现象称为粘包。粘包问题通常出现在客户端和服务器之间发送的数据包较小或发送速度较快的情况下。TCP 无法识别应用层数据边界:TCP 是一个面向字节流的传输协议,它只负责保证数据的可靠传输,但无法识别应用层数据的边界。因此,当发送方连续发送多个数据包时,接收方可能会一次性接收到这些数据包,导致粘包问题。TCP 流量控制和拥塞控制。

2023-08-08 21:42:00 1827

原创 计算机网络—TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:再进行数据传输之前,通信的两端需要建立一个可靠的连接,通过三次握手来建立可靠的:TCP 可以保证一个报文一定能够到达接收端,通过序列号、确认应答和重传等机制来确保数据的可靠传输字节流:指的是在TCP连接中,数据被视为连续的字节流而不是分割成固定大小的数据块或消息。当应用程序发送数据时,TCP会将这些数据拆分成较小的数据块,并为每个数据块添加TCP头部信息,然后将它们作为字节流发送。

2023-08-08 21:37:42 2075

原创 操作系统—内存管理

交换空间(Swap Space)是计算机系统中用于支持虚拟内存管理的一种存储区域,通常位于硬盘或固态硬盘上。当物理内存(RAM)不足以容纳所有运行中的程序和数据时,操作系统会将一部分数据(通常是最近较少使用的页面或段)从物理内存移出到交换空间,从而为其他程序或数据腾出内存空间。这个过程被称为“交换”(Swapping)或“页面交换”(Page Swapping)。交换空间的主要作用是扩展可用内存资源,使计算机系统能够运行更多的程序或处理更大的数据。

2023-08-05 20:36:33 213

原创 Redis—数据结构

总之,在 Redis 6.2 版本以后,Hash 类型数据结构中的 Listpack 底层实现是一种紧凑的连续内存数据结构,适用于存储较小的哈希表。Listpack 是一种紧凑的、可变长度的、连续内存数据结构,用于存储有序的值列表。:虽然 Redis 中的布隆过滤器是基于特殊的数据结构实现的,但我们也可以使用 Bitmap 来实现简化版的布隆过滤器。Redis 的有序集合(Sorted Set,简称 zset)是一种将成员与分数关联的数据结构,成员之间以分数进行排序,每个成员的分数都是唯一的。

2023-08-01 09:57:18 889

原创 MySQL执行一条select语句,执行过程怎么样

优化器主要负责将 SQL 查询语句的执行方案确定下来,基于查询成本的考虑, 选择查询成本最小的执行计划。根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;

2023-07-31 08:50:29 354

原创 Go语言中使用kafka

【代码】Go语言中使用kafka。

2023-07-30 20:23:35 1326

原创 Golang并发控制

开发 go 程序的时候,时常需要使用 goroutine 并发处理任务,有时候这些 goroutine 是相互独立的,需要保证并发的数据安全性,也有的时候,goroutine 之间要进行同步与通信,主 goroutine 需要控制它所属的子goroutine。

2023-07-23 20:31:12 855

原创 Go语言的连接复用

Go语言中IO多路复用使用netpool模型。

2023-07-23 20:21:24 363

原创 基于gin框架实现图片上传到七牛云并返回URL(接口的形式)

【代码】基于gin框架实现图片上传到七牛云并返回URL(接口的形式)

2023-07-19 09:55:32 540

原创 golang二维数组或者切片排序

golang二维数组排序,一看就会,一些就废!!!

2023-07-14 20:40:45 215

原创 go函数参数传递到底是值传递还是引用传递?

go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!go函数全是值传递,没有引用传递!!!

2023-07-04 14:13:37 421

原创 Java中Stack类,Queue类,LinkedList类的总结大全

【代码】Java中Stack类,Queue类,LinkedList类的总结大全。

2023-05-20 09:10:00 186

原创 力扣:142. 环形链表 II

HashSet,不允许有重复元素,另外可以使用contains方法查询是否已有此元素,直接看代码。

2023-05-15 20:11:45 104

空空如也

空空如也

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

TA关注的人

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