后端百科
文章平均质量分 77
大厂程序员的面试宝典
ThisIsClark
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何构建自适应架构的镜像
我有一个服务叫xxx,一开始它运行在x86架构的机器上,所以最开始有个xxx:stable-amd64的镜像,后来它又需要运行在arm64架构的机器上,所以又重新打了个xxx:stable-arm64的镜像。但是对于安装脚本来说,我不希望我在拉取镜像时还有根据服务器架构去区分arm64和amd64两个tag,是否可以用一个tag让docker pull命令根据当前执行的机器的架构自动区分不同的tag呢?就成为了一个多架构镜像,Docker 会自动为用户选择正确的架构镜像。自动根据其系统架构拉取对应的镜像(原创 2025-06-03 13:24:21 · 594 阅读 · 0 评论 -
K8s的Service详解
在Kubernetes中,Service与端口的关系非常紧密。Service定义中包含了多个与端口相关的字段,包括port、nodePort和targetPort。这些端口在Service的工作流程中扮演着不同的角色。Port定义:Port是Service对外暴露的端口,用于集群内部客户端访问Service。作用:当集群内部的客户端(如另一个Pod)想要访问Service时,它们会通过Service的ClusterIP和Port来发送请求。示例。原创 2025-03-03 16:24:50 · 1539 阅读 · 0 评论 -
【后端百科】什么是堆,什么是栈
栈是一种后进先出(LIFO, Last In First Out)的数据结构,用于存储程序执行过程中的临时变量和函数调用信息。栈内存由操作系统自动分配和释放,通常用于存储局部变量、函数参数和返回地址等。应用场景函数调用:每当一个函数被调用时,系统会在栈上为该函数创建一个新的栈帧,用于存储该函数的局部变量和参数。当函数执行完毕后,栈帧会被弹出,释放内存。表达式求值:在编译或解释执行表达式时,栈常用于保存操作数和运算符,以便按照后进先出的原则进行计算。递归算法。原创 2025-02-14 11:55:31 · 1021 阅读 · 0 评论 -
【后端百科】ES的_template与_index_template技术详解
在Elasticsearch的早期版本中,索引模板通过_template端点进行管理。随着版本的更新,Elasticsearch引入了更灵活和强大的_index_template端点来管理索引模板。_template和_index_template在功能上是相似的,都是用于定义一组索引的配置,但它们在API设计和使用上存在一些差异。_template:这是Elasticsearch早期版本中用于管理索引模板的端点。虽然在新版本中仍然可用,但官方推荐使用_index_template端点来管理索引模板。原创 2025-02-04 21:02:56 · 2148 阅读 · 0 评论 -
【后端百科】mysql的join,left join,right join,full join分别是什么意思
在MySQL数据库中,JOIN操作是一种强大的工具,用于将两个或多个表中的数据进行组合,以满足复杂的查询需求。本文将详细介绍MySQL中的四种主要JOIN类型:INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN(虽然MySQL不直接支持FULL OUTER JOIN,但可以通过其他方式实现类似效果),并对它们进行对比分析。MySQL提供了多种类型的JOIN操作,每种JOIN都有其特定的用途和语法。在实际应用中,应根据具体需求选择合适的JOIN类型。原创 2025-01-25 16:53:57 · 1447 阅读 · 0 评论 -
【后端百科】mysql的group by怎么用
GROUP BY是 SQL 中的一种用于对结果集进行分组的子句,常与聚合函数(如COUNT()SUM()AVG()MAX()和MIN()等)一起使用。GROUP BY的作用是基于一个或多个列对查询结果进行分组,然后可以对每个分组执行聚合操作。以下是GROUP BY。原创 2025-01-25 16:49:25 · 857 阅读 · 0 评论 -
ES的聚合:定义与技术特点
ES聚合是对索引中的文档数据进行分类、汇总和筛选的过程。通过聚合,用户可以轻松地对海量数据进行分组、排序、统计等操作,从而发现数据中的隐藏规律和洞察。聚合功能不仅限于简单的计数或求和,还支持复杂的计算和分析,如平均值、最大值、最小值、百分位数等。原创 2025-01-22 07:54:31 · 763 阅读 · 0 评论 -
【后端百科】tls中.crt和.key的关系
crt文件,即证书文件,包含了用于验证通信方身份的公钥以及相关的证书信息。这通常是由证书颁发机构(CA, Certificate Authority)签发的数字证书。数字证书包含了与公钥相关的信息,如证书所有者的信息、证书的有效期等。.key文件,即私钥文件,包含了与数字证书相对应的私钥。私钥是一个保密的加密密钥,用于解密由公钥加密的信息。在SSL/TLS通信中,服务器会使用其私钥进行身份验证和密钥交换。原创 2025-01-14 07:42:29 · 1034 阅读 · 0 评论 -
【后端百科】Golang可能的内存泄漏场景及应对策略
Golang虽然具有内置的垃圾回收机制,但在实际开发中仍然可能遇到内存泄漏问题。开发者需要了解常见的内存泄漏场景,并采取相应的应对策略。同时,利用Golang提供的内存分析工具,可以更有效地检测和解决内存泄漏问题。通过合理的资源管理和垃圾回收机制,可以确保Golang程序的性能和稳定性。原创 2025-01-12 08:30:03 · 1614 阅读 · 2 评论 -
【后端百科】ES和MySQL对比技术探讨
MySQL和Elasticsearch各有优劣,适用于不同的场景。MySQL以其强大的事务处理能力和数据一致性保障,在关系型数据存储和管理领域占据重要地位;而Elasticsearch则以其高效的全文搜索、实时数据分析能力,在大数据处理领域崭露头角。在实际应用中,应根据具体需求和场景选择合适的数据库系统,以实现最佳的性能和效果。原创 2025-01-12 08:21:45 · 1079 阅读 · 0 评论 -
【后端百科】设计一个分布式锁需要考虑哪些东西
分布式锁是我们在分布式场景中经常用到的一种技术,在后端面试中也是出镜率很高,那么我们设计分布式锁的时候应该从那几方面去考虑呢。原创 2025-01-08 08:10:51 · 636 阅读 · 0 评论 -
【后端百科】MySQL主从复制逻辑的技术介绍
MySQL主从复制是一种数据库复制技术,用于将一个数据库服务器(主服务器,Master)上的数据更改同步到一个或多个其他数据库服务器(从服务器,Slave)上。这种技术主要用于数据备份、负载均衡、高可用性和读写分离等场景。原创 2024-12-23 22:30:25 · 1040 阅读 · 0 评论 -
【后端百科】作为键值对存储的Redis为什么还要有同为键值对存储的Hash表类型
但如果我们是一个平台,平台不只一个应用,一个用户可能也不只有一个应用的权限的话,上面的方式就行不通了。例如平台上有app1,app2,app3,然后有用户user1,user2,然后user1有app1和app2的权限,user2有app2和app3的权限,这个时候按照用用户id作为key的方式就不可行了。举个例子,假如我们有个应用,应用内注册了多个用户,每个用户的账户有效期不一样,那么我们使用Redis来存储这个数据的话就可以以如下的方式存储:key为用户id,value为该用户的有效期。原创 2024-12-21 22:10:32 · 203 阅读 · 0 评论 -
【后端百科】深入解析进程和线程的区别
进程(Process)进程是计算机中运行的一个程序的实例。它是操作系统分配资源和调度的基本单位,每个进程都有自己的内存空间、文件描述符和其他资源。进程具有独立性,一个进程的崩溃不会影响其他进程的运行。线程(Thread)线程是进程中的一个执行单元,是CPU调度的基本单位。一个进程可以包含多个线程,它们共享进程的资源,如内存和文件描述符。线程之间可以并发执行,但同一时刻只有一个线程在执行。线程的切换开销比进程小,因此更适合高并发场景。原创 2024-12-19 23:19:05 · 1762 阅读 · 0 评论 -
【后端百科】Redis的三种模式原理介绍及优缺点
主从复制模式是Redis最基础的集群模式,通过将一个Redis节点(主节点)的数据复制到一个或多个其他Redis节点(从节点)来实现数据的冗余和备份。主节点负责处理客户端的写操作,从节点则实时同步主节点的数据,并处理读操作。这种模式实现了读写分离,提高了系统的性能和数据可靠性。哨兵模式是在主从复制基础上加入了哨兵节点,实现了自动故障转移。哨兵节点是一种特殊的Redis节点,它会监控主节点和从节点的运行状态。原创 2024-12-19 23:15:59 · 699 阅读 · 0 评论 -
【后端百科】线程间通信的方法、特点与实现
共享内存是线程间通信最直接、高效的方式。由于所有线程共享同一个进程的地址空间,因此可以直接通过读写共享变量来交换数据。原创 2024-12-17 13:18:00 · 1896 阅读 · 0 评论 -
【后端百科】进程间通信的方法
进程间通信(Inter-Process Communication,简称IPC)是操作系统中不同进程之间交换数据和信息的重要机制。在现代计算机系统中,进程间通信是构建复杂应用程序和多进程系统的基础。本文将详细介绍几种常见的进程间通信方法,包括管道、共享内存、消息队列、信号、套接字等。原创 2024-12-17 13:14:48 · 704 阅读 · 0 评论 -
【后端百科】为什么gRPC速度会比较快
gRPC是一种高性能、开源的远程过程调用(RPC)框架,由Google开发并广泛使用。其出色的性能得益于多种设计特性和技术优化。本文将主要探讨为何使用Protobuf和HTTP2能提升速度。原创 2024-12-16 13:24:38 · 564 阅读 · 0 评论 -
【后端百科】什么是CAP原理
CAP原理为分布式系统的设计者提供了一种思维框架,帮助他们在设计系统时做出合适的选择。在实际应用中,设计者需要根据系统的需求和目标,在一致性、可用性和分区容错性之间做出权衡。没有绝对的“最好”方案,只有最适合当前场景和需求的方案。通过深入理解CAP原理,设计者可以更好地设计和优化分布式系统,提高系统的性能和可靠性。原创 2024-12-16 13:19:58 · 1113 阅读 · 0 评论 -
【后端百科】HTTPS工作原理详解
HTTPS是HTTP的安全版本,通过在HTTP协议的基础上增加了SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议层,实现了数据的加密传输和服务器身份验证。当用户访问一个HTTPS网站时,浏览器首先与服务器建立TCP连接,然后通过SSL/TLS协议进行加密通信,确保数据的机密性、完整性和真实性。HTTPS就是先用非对称加密生成一个对称加密的秘钥,再用这个只有发送方和接收方知道的秘钥来做对称加密。原创 2024-12-12 23:06:26 · 1424 阅读 · 0 评论 -
【后端百科】MySQL哪些操作是不能回滚的
,也比较清楚原子性中事务如果不成功会回滚,那么是否所有的语句都可以回滚呢?答案是否定的。那么有哪些SQL语句是不可以回滚的呢,知道这些可能能让你在面试中展现出比一般的面试者更深入的对于MySQL的理解。在MySQL中,有些操作是无法回滚的,这通常与事务的处理机制、存储引擎以及SQL语句的类型有关。原创 2024-12-11 23:27:13 · 532 阅读 · 0 评论 -
【后端百科】Golang defer的实现原理和常见面试问题
在Go语言中,defer关键字用于延迟函数的执行,即在包含defer语句的函数返回之前执行。这一特性使得defer在资源释放、文件关闭、解锁资源等场景中非常有用。本文将深入探讨defer的实现原理,并总结一些常见的面试问题。defer是Go语言中一个非常有用的特性,它使得资源释放和异常处理变得更加简洁和可靠。通过深入理解defer的实现原理和一些常见的面试问题,我们可以更好地掌握这一特性,并在实际开发中灵活运用。原创 2024-12-11 13:17:05 · 673 阅读 · 0 评论 -
【后端百科】select、poll、epoll三种IO多路复用方法对比
select、poll和epoll是三种常见的IO多路复用方法,它们各有优缺点。select和poll适用于中小规模的并发场景,但在处理大规模并发连接时效率较低。epoll则专为大规模并发场景设计,通过高效的数据结构和事件驱动机制提供了显著的性能优势。然而,epoll的平台依赖性也限制了其在非Linux系统上的使用。在实际应用中,应根据具体需求选择合适的IO多路复用方法,并不是epoll就一定比select和poll好,虽然epoll却是应该是目前应用最广的IO多路复用方法。原创 2024-12-10 22:59:13 · 1034 阅读 · 0 评论 -
【后端百科】如何准备面试中的手撕代码
想不出来的时候,不要马上去看答案,多想一想,即使你知道自己想出来的方法是比较笨的方法,也先把它实现出来。否则你想,到面试的时候你真遇到不会的问题了,你能像平时练习的时候一样去看看别人的解法吗,不可能的嘛。笔者曾经以为凭自己在工作中的积累就能通关算法面试,但当我真正第一次在后端面试中遇到了手撕代码之后,我才知道之前我还是太年轻了,因为遇到的问题完全和工作中遇到的不一样,当然,那次面试也就没有什么好的结果。首先,我觉得很重要的一点,也是可能很多小伙伴都会忽略的一点,就是给每一次刷题训练上强度,原创 2024-12-08 23:01:19 · 350 阅读 · 0 评论 -
【后端百科】Redis字符串实现原理
字符串是我们平时接触频率最高的一个基础类型,但就是这么一个平平无奇的基本类型,在Redis里面也是经历了各种各样的优化,来优化它对内存的占用,了解这部分内容,与其说是“学习Redis”,不如说是“向Redis学习”,学习Redis从各个可能的角度,来优化内存使用的方法和不放过任何一个可能的内存优化项的态度。embstr将RedisObject对象头结构和SDS对象连续存在一起,使用malloc方法一次分配,而raw存储形式不一样,它需要两次malloc方法,两个对象头在内存地址上一般是不连续的。原创 2024-12-07 18:22:07 · 715 阅读 · 0 评论 -
【后端百科】tcp为什么要设置TIME_WAIT
要了解这个问题,我们要先了解另外一个问题,那就是什么是MSLMSL是报文最大生存时间(Maximum Segment Lifetime)的缩写,指任何报文在网络上存在的最长时间。超过这个时间,报文将被丢弃。这个参数在TCP协议中尤为重要,用于确保数据传输的可靠性和网络资源的有效利用。确保ACK报文到达:在TCP四次挥手过程中,主动关闭方发送完最后一个ACK报文后进入TIME_WAIT状态。如果这个ACK报文丢失,被动关闭方会超时重传FIN报文。原创 2024-12-07 18:09:47 · 996 阅读 · 0 评论 -
【后端百科】golang channel深入理解
Channel是Go语言中的一种特殊类型,它像一个队列一样,遵循先进先出(FIFO)的原则,确保数据的顺序性。每个Channel都有一个指定的类型,只能传递相同类型的数据。Channel是并发安全的,允许多个goroutine同时读写,而不会引发数据竞争。Channel的主要作用是实现goroutine之间的通信和同步。通过Channel,一个goroutine可以发送数据到另一个goroutine,从而实现数据的交换和共享。原创 2024-12-04 22:58:26 · 1558 阅读 · 0 评论 -
【后端百科】缓存策略选择
一般来说我们常见的缓存策略有三种,他们各自的优劣势和实现逻辑分别如下。原创 2024-12-04 22:42:07 · 1783 阅读 · 0 评论 -
【后端百科】Redis过期删除策略
Redis会将每个设置了过期时间的key放入一个独立的字典中,以后会定时遍历这个字典来删除到期的key。除了定时遍历之外,它还会使用惰性策略来删除过期的key。所谓惰性策略就是在客户端访问这个key的时候,Redis对key的过期时间进行检查,如果过期了就立即删除。如果说定时删除是集中处理,那么惰性删除就是零散处理。原创 2024-12-03 22:49:06 · 535 阅读 · 0 评论 -
【后端百科】Redis持久化
Redis的持久机制有两种,第一种是快照,第二种是AOF日志。快照是一次全量备份,AOF日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而AOF日志记录的是内存数据修改的指令记录文本。AOF日志在长期的运行过程中会变得无比庞大,数据库重启时需要加载AOF日志进行指令重放,这个时间就会无比漫长,所以需要定期进行AOF重写,给AOF日志进行瘦身。原创 2024-11-28 23:28:26 · 525 阅读 · 0 评论 -
【后端百科】MySQL面试总结
原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中一个sql语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。持久性是指事物一旦提交,它对数据库的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。原创 2024-11-26 22:56:38 · 1127 阅读 · 0 评论 -
Redis性能优化
最近项目中在用Redis的set做数据对账功能,在实际使用过程中发现速度很慢,比对完成需要数十分钟(最多10万条数据),于是花了点时间去看怎么优化Redis的性能,经过尝试之后发现比较有效的优化方式有以下几种。尽量不要使用时间复杂度为O(n)的命令比如smembers,sinter,sdiff使用pipeline使用pipeline,客户端通过一条tcp connection传送多条命令,服务端通过一条tcp connection接收到多条命令后,拆分成多条后像处理单条命令一样处理,以减少R原创 2024-03-04 23:12:13 · 402 阅读 · 0 评论
分享