自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无休居士的博客

握不住的沙,不如扬了它

  • 博客(255)
  • 收藏
  • 关注

原创 完美标签插件-助力需求有条不稳的高效开发

作为一名 Chrome 重度用户,标签页管理一直是我最大的痛点,特别是当我开了无数网页时,就会出现:卡、乱的情况,如果解决这种情况提高开发效率,我迫在眉睫!!

2024-12-14 17:49:59 199

原创 一些优秀的布隆过滤器介绍

尽管布谷鸟过滤器在删除操作中存在误删风险,但由于其支持删除操作、高效的查询性能、较高的空间利用率、灵活的误判率控制、实际应用中的误删风险可控、成熟的实现和社区支持以及多样化的应用场景,它仍然是最常用的数据结构之一。在选择数据结构时,需要根据具体的应用需求和场景来权衡各种因素,布谷鸟过滤器在大多数情况下仍然是最佳选择。

2024-11-27 03:30:00 883

原创 深入浅出解析布隆过滤器在Java中的高级应用

布隆过滤器是一种高效的空间节省型数据结构,由Burton Howard Bloom于1970年提出,主要用于判断一个元素是否可能存在于一个集合中。它的核心思想是使用一个很长的二进制向量和多个随机映射函数(哈希函数)。当一个元素被添加到布隆过滤器时,它会被多个哈希函数映射到二进制向量的不同位置,这些位置的值被设置为1。查询时,如果所有映射位置的值均为1,则认为该元素可能存在于集合中;反之,则一定不存在。

2024-11-26 02:03:26 889

原创 从理论到实践:布隆过滤器的全面解析

本文详细介绍了布隆过滤器的基本概念、工作原理以及实际应用步骤。通过具体的代码示例和应用场景,帮助读者更好地理解和掌握布隆过滤器的使用方法。在实际项目中,合理使用布隆过滤器可以显著提升系统的性能和效率。

2024-11-26 01:47:58 1129

原创 Redis面试全攻略:从基础到高级,助你轻松拿Offer

Redis是一个开源的、基于内存的键值对数据库,支持多种数据类型,如字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希表(hashes)、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)。由于其数据存储在内存中,Redis能够提供极高的数据读写速度。

2024-11-25 23:54:50 679

原创 MySQL面试攻略:从基础到高级,全面解析

基础知识:包括MySQL的基本概念、数据类型、存储引擎等。高级特性:如事务处理、锁机制、索引优化等。实际操作:编写SQL语句、性能调优、故障排除等。面试技巧:如何在面试中展现你的MySQL知识和实践经验。MySQL是一个关系型数据库管理系统(RDBMS),它使用SQL(结构化查询语言)进行数据的存储、检索和管理。MySQL因其高性能、可靠性、易用性和开放源代码而受到广泛欢迎。

2024-11-25 23:50:29 1193

原创 Mysql中的 TEXT 和 BLOB 解析

InnoDB 表是行格式存储的,这适用于包括TEXT和BLOB类型在内的所有数据列。TEXT和BLOB列的数据存储方式与普通数据列不同——它们可能会存储在数据页内(如果数据较小),或者会被分配到**溢出页**中(如果数据较大)。行格式存储并不会影响TEXT和BLOB的使用,它们依然是作为 InnoDB 行的一部分进行管理,只是它们的存储位置可能会有所不同。因此,虽然你可以在 InnoDB 表中使用TEXT和BLOB数据类型,但这并不改变表使用行格式存储的方式。前缀索引:对于TEXT和BLOB。

2024-11-24 23:53:34 1200

原创 流式上传与分片上传的原理与实现

通过本文的详细讲解,相信你已经对流式上传和分片上传有了全面的理解。流式上传适用于小文件或网络环境稳定的场景,而分片上传则更适合大文件上传,特别是需要处理网络中断的情况。断点续传是分片上传的一个重要特性,可以大大提高上传的可靠性和效率。希望本文能帮助你在面试中顺利过关,祝你好运!🎉。

2024-11-24 23:50:20 1099

原创 HTTPS的单向认证和双向认证是什么?有什么区别?

单向认证和双向认证的主要区别在于认证的方向和参与方。单向认证只需要客户端验证服务器的身份,而双向认证则需要双方都验证对方的身份。根据不同的安全需求选择合适的认证方式是非常重要的。

2024-11-23 23:56:23 1554

原创 业务设计:扫码登录的原理

扫码登录本质上是请求登录方请求已登录方将登录凭证写入特定媒介的过程。这里的请求登录方为 Web 端,已登录方为 APP 端,登录凭证可以是用户信息,也可以是换取用户信息的凭证,而特定媒介是某一张二维码。

2024-11-23 23:44:58 521

原创 Mysql没有开启binlog日志还会执行二阶段提交吗?

即使没有开启binlog,InnoDB存储引擎仍然会执行二阶段提交,以确保事务的ACID特性。原子性:通过Undo Log和Redo Log的二阶段提交机制保证。一致性:通过事务管理和二阶段提交机制保证。隔离性:通过锁机制和MVCC保证。持久性:通过Redo Log和配置参数保证。通过这些机制,InnoDB能够在没有binlog的情况下,仍然提供高度可靠和一致的事务处理能力。乐于分享和输出干货的WXGZG:JavaPersons。

2024-11-21 23:55:07 1610

原创 MySQL · 最佳实践 · 如何索引JSON字段

MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中的字段进行索引。

2024-11-21 23:52:59 1162 1

原创 Mysql没有开启binlog如何保证持久性?

大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师!🚀🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷于探索一些框架源码和算法技巧奥秘,还乐于分享这些宝贵的知识和经验。💡。

2024-11-20 23:54:31 803

原创 一些主流的RPC框架常用的预热手段

主流的RPC框架如Dubbo、gRPC、Thrift、Spring Cloud和TARS都提供了丰富的预热手段,包括延迟暴露、预热标记、健康检查和流量控制等。这些预热手段可以帮助服务在启动后逐渐增加负载,避免因突然涌入大量请求而导致性能下降或服务崩溃。通过合理配置和使用这些预热手段,可以显著提高系统的稳定性和性能。

2024-11-20 06:45:00 1270

原创 Java RPC框架的接口预热原理及无损实现

RPC接口预热是指在服务启动后,通过一系列的操作使服务的接口达到最佳的运行状态,从而提高系统的稳定性和性能。预热的主要目的是确保服务在正式接收流量之前已经完成了所有的初始化工作,避免因为初始化不充分导致的服务不可用或性能下降。🔥通过本文的介绍,我们详细了解了Java RPC框架的接口预热原理及其无损实现。预热机制不仅可以提高系统的稳定性和性能,还能确保负载均衡器更准确地评估各个节点的健康状态。希望本文的内容对你在面试中应对相关问题有所帮助。🌟乐于分享和输出干货的WXGZG:JavaPersons。

2024-11-19 23:53:04 1369

原创 编译报错:protoc did not exit cleanly. Review output for more information.

找了半天不知道什么问题,最后发现是java_outer_classname的使用问题,java_outer_classname和service的name不能一样!后来在java_outer_classname后面加了Proto,再次编译OK了!结果编译的时候报了protoc did not exit cleanly. Review output for more information.的相关错误。今天做的项目需要用到grpc,然后需要编写proto然后编译后实现grpc的具体方法!

2024-11-19 21:54:50 833

原创 聊一聊,微服务下如何开展契约测试!

测试是软件流程中非常重要,不可或缺的一个环节。一般的测试分为单元测试,集成测试,端到端的手工测试,这也是构成测试金字塔的三个层级。我们今天将要讨论的话题是契约测试,它是处于单元测试和集成测试中间的一个环节。单元测试:测试单个service集成测试:测试由多个services组成的系统端到端测试:测试从用户到各个外部系统的整个场景测试接口和接口之间的正确性验证服务层提供的数据是否是消费端所需要的将本来需要在集成测试中体现的问题前移,更早的发现问题。

2024-11-18 23:57:09 563

原创 微服务 | 推荐几种最佳「发布」实践方式

在项目研发迭代的过程中,不可避免需要对“应用服务部署上线”。而对于应用程序升级面临最大挑战是新旧业务切换的同时还要保证系统不间断提供服务。特别是微服务盛行的今天,对服务发布的粒度、发布策略控制更佳尤为重要。蓝绿部署、红黑部署、灰度发布(金丝雀发布)、滚动发布等。接下来,就和大家聊一聊这几种带“色”的发布方法以及他们之间的区别和优缺点。

2024-11-18 23:49:35 1204

原创 《大厂算法冲锋:掌握LFU缓存算法的精妙解法》

在互联网大厂的面试中,数据结构和算法题目是必不可少的一部分。其中,LFU(Least Frequently Used)缓存设计是一个经典问题,它不仅考察了候选人的数据结构知识,还测试了他们的设计和实现能力。本文将详细介绍如何设计和实现一个LFU缓存,并提供两种高效的解决方案。希望通过本文的学习,你能更好地应对面试中的算法挑战。🚀通过本文的学习,你应该对LFU缓存的设计有了深入的理解。两种解法各有优劣,选择哪种方法取决于具体的应用场景。希望本文能帮助你在面试中更好地应对这类算法题。

2024-11-16 03:45:00 189

原创 阿里二面:手撕LRU算法(Least Recently Used)

LRU算法(Least Recently Used),最近最少使用的淘汰策略,容量有限,满了就要删除最少使用的元素。

2024-11-16 02:30:00 523

原创 并发复习:面试/笔试之多线程面试问题集锦

找工作告一段落,期间经历了很多事情,也思考了许多问题,最后也收获了一些沉甸甸的东西 —— 成长和一些来自阿里、百度、京东(sp)、华为等厂的Offer。好在一切又回到正轨,接下来要好好总结一番才不枉这段经历,遂将此过程中笔者的一些笔试/面试心得、干货发表出来,与众共享之。本文对面试/笔试过程中经常会被问到的一些关于并发编程的问题进行了梳理和总结,包括线程池、并发控制锁、并发容器和队列同步器等基础知识点,一方面方便自己温故知新,另一方面也希望为找工作的同学们提供一个复习参考。

2024-11-15 05:00:00 642

原创 并发基础:5个线程交叉打印1~100

总体来说,这段代码实现了五个线程交叉打印数字的功能,但在并发性能、错误处理和可扩展性方面还有一些改进的空间。

2024-11-15 02:00:00 615

原创 并发基础:手写阻塞队列,多线程面试中的杀手锏

阻塞队列是一种特殊的队列,当队列为空时,从队列中获取元素的操作将会被阻塞,直到队列中有新的元素被添加进来;当队列满时,向队列中插入元素的操作将会被阻塞,直到队列中有空闲的位置。阻塞队列在多线程环境中非常有用,常用于生产者-消费者模型。通过本文的详细解析,我们不仅实现了基本的阻塞队列,还探讨了如何使用Lock和Condition接口进行优化。希望本文能够帮助你在面试中更好地理解和应用多线程知识。🌟乐于分享和输出干货的WXGZG:JavaPersons。

2024-11-14 03:00:00 155

原创 并发基础:(淘宝笔试题)三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC....”的字符串【举一反三】

通过本文的详细解析,我们不仅解决了多个线程按顺序打印不同字符串、动态调整打印次数以及多组线程协作的问题,还探讨了多种实现方法和扩展思考。希望本文能够帮助你在面试中更好地理解和应用多线程知识。

2024-11-14 02:00:00 136

原创 并发基础:多线程相关最新高频面试题(大厂常见速答)

重量级锁:底层使用的Monitor实现,里面涉及到了用户态和内核态的切换、进程的上下文切换,成本较高,性能比较低。轻量级锁:线程加锁的时间是错开的(也就是没有竞争),可以使用轻量级锁来优化。轻量级修改了对象头的锁标志,相对重量级锁性能提升很多。每次修改都是CAS操作,保证原子性。偏向锁:一段很长的时间内都只被一个线程使用锁,可以使用了偏向锁,在第一次获得锁时,会有一个CAS操作,之后该线程再获取锁,只需要判断mark word中是否是自己的线程id即可,而不是开销相对较大的CAS命令一旦锁发生了竞争都会升

2024-11-13 02:15:00 1676

原创 并发基础:(淘宝笔试题)三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC....”的字符串

在互联网大厂的面试中,多线程和并发控制是经常被考察的知识点。其中一个经典问题是:三个线程分别打印 A、B、C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC....”的字符串。这个问题不仅考察了候选人对多线程的理解,还考察了他们解决实际问题的能力。本文将详细解析这一问题,并提供一种高效的解决方案,帮助你在面试中脱颖而出

2024-11-13 02:00:00 515

原创 并发基础:Java线程池有哪些状态?状态是如何转换的?

线程池的状态总共有 5 种:RUNNING:运行状态、SHUTDOWN:关闭状态、STOP:停止状态、TIDYING:整理状态和 TERMINATED:销毁状态。默认情况下,如果不调用关闭方法,线程池会一直处于 RUNNING 状态,而线程池状态的转移有两个路径:当调用 shutdown() 方法时,线程池的状态会从 RUNNING 到 SHUTDOWN,再到 TIDYING,最后到 TERMENATED 销毁状态;

2024-11-12 02:45:00 749

原创 并发应用:DDD实战中应对并发挑战,五个技巧让你轻松应对

并发管理是一个高级话题,也是设计中的难点,一不小心就会出问题。让每个开发人员都成为并发高手又是一件不太现实的事,但好在存在很多并发管理的成熟方案,业务开发者按照场景进行落地即可。在业务开发中,事务一致性核心在于“原子性”,则并发管理的核心在于“隔离性”。原子性:一个业务操作被视为一个不可分割的逻辑单元,要么全部执行成功,要么全部失败回滚;隔离性:并发业务操作之间要相互隔离,不能互相干扰;有些时候,写更新不依赖于之前的数据状态,只需使用最新数据进行覆盖即可,此时,并发管理也就变的非常简单。

2024-11-12 02:15:00 1619

原创 集群架构中Lua脚本的限制以及出现的报错

通过上述表格和示例,你应该能够更好地理解在 Redis Cluster 模式下使用 Lua 脚本时需要注意的事项。必须带有至少一个键:确保 Lua 脚本中至少有一个键,以便代理可以根据键将脚本转发到正确的 DB 分片。多个键必须属于同一个槽位:使用哈希标签确保多个键属于同一个槽位,避免跨槽位操作。

2024-11-11 03:30:00 1234

原创 面试必备指南 :如何在Redis Cluster模式下高效使用Lua脚本?

综合来看,在redis cluster下使用lua脚本是唯一可以原子化操作序列的方式。为了避免跨slot操作key,可以使用hashtag,也可以用新特性直接操作。但是hashtag无疑是更好的方式,毕竟跨了slot对性能也略有影响,官方也不建议这么操作。

2024-11-11 02:45:00 1001

原创 技术领导者的道与术:从领导者到领导力

在每次开发小组的会议里,你说的话的最多,发表的意见也最多,最后的决定也是你来拍板。如果你希望让周围的人生活变得更容易且有意义,帮助他们克服困难并实现目标,那么,你就是一个“仆人式的领导”。你会惊讶的发现你的团队中实际上不止一个领导者,而是这些人从来没有机会展示。如果你是一个在团队里不停讲话的人,请给别人一个机会,特别是给其他成员一段时间的决定权。如果某个个是天生的领导者,人们会倾向于追随于这个人,不论这个人是否有一个职位头衔。团队成员一个个像被宠坏的孩子,期待着妈妈照顾他们的每一个需求,包括帮助他们思考。

2024-11-09 21:34:50 726

原创 程序人生:怎样从程序员到技术官?

CTO的意思​CTO,即首席技术官(Chief Technology Officer),是企业内部负责技术的最高负责人。这一职位通常由具有丰富技术经验的专业人士担任,直接向首席执行官(CEO)汇报工作。CTO的职责广泛,包括但不限于制定和执行公司的技术战略、管理技术团队、进行技术评估和选型、制定技术标准等。CTO,从规模来讲,初创团队其实是在找一个项目经理或技术经理,A轮公司是在找技术总监或技术主管;而B轮或研发团队人数较多、以产品技术为核心的公司,才称得上真正的首席技术官CTO。

2024-11-09 21:27:30 3255 1

原创 实践出真知:MVEL表达式中for循环的坑

for循环里面是一个单独的闭包空间,你里面使用的所有的变量都需要提前定义好,不然的话这个闭包空间里面是没有这个变量定义的,然后你的所有针对这个变量的操作就都会跑出空指针异常

2024-11-08 04:30:00 467

原创 实践出真知:MVEL表达式empty的坑

MVEL为测试值的空性提供了一个特殊的文字,巧妙地命名为empty。例如:foo == empty如果foo的值满足空性的任何要求,则示例表达式将为true。

2024-11-08 04:00:00 502

原创 掌握Java线程池:从入门到精通,轻松应对大厂面试

在当今互联网行业的面试中,对Java线程池的理解和应用是考察候选人技术深度的重要环节之一。线程池不仅能够提高程序性能,还能有效管理资源,避免过多线程导致的系统崩溃。本文旨在帮助准备面试的大学生深入理解Java线程池的工作原理及其最佳实践。

2024-11-07 03:30:00 1019

原创 Redis三种集群模式:主从模式、哨兵模式和Cluster模式

Redis 支持三种不同的集群模式:主从模式、哨兵模式和Cluster模式,各具特色,应对不同的应用场景。初始阶段,Redis 采用主从模式进行集群构建。在此模式中,主节点(master)负责数据写入,而从节点(slave)则用于数据读取和备份。若主节点发生故障,需人工介入,将某个从节点提升为新的主节点。但这种模式在故障恢复上效率较低,无法实现高度自动化。为了提升系统的高可用性,Redis 推出了哨兵模式。在此模式下,通过一个哨兵集群来监控主从节点的健康状态。

2024-11-07 02:15:00 2847

原创 Redis架构图,以终为始

单个Redis支持的读写能力还是有限的,此时我们可以使用多个redis来提高redis的并发处理能力,这些redis如何协同,就需要有一定的架构设计,这里我们首先从主从(Master/Slave)架构进行分析和实现.

2024-11-06 03:15:00 1654

原创 Redis核心知识点简介,快速记忆

这些知识点涵盖了Redis的基本概念、数据结构、内存管理、缓存问题及解决方案、集群架构以及一些应用场景和操作命令。对于面试准备来说,重点可以关注持久化方式的选择、数据结构的应用场景、内存管理和缓存相关的问题解决方法等。

2024-11-06 02:00:00 985

原创 如果 MySQL 主库出现了问题,从库该何去何从呢?

这篇文章我们主要介绍了在 MySQL 数据库中两种主从复制的方式。首先我们解释了传统的 MySQL 主从复制的方式在主从切换的过程中很有可能会导致主从数据不一致的问题;为此,MySQL 5.6之后的版本又为我们提供了一个 GTID 的方式,通过判断 GTID 是否存在,进而判断是否执行该事务。一般在生产环境中,强烈建议使用 GTID 的方式部署 MySQL 主从复制集群。

2024-11-05 04:30:00 1870

原创 为什么要学Redis?

Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区。您可以对这些类型运行原子操作,例如附加到字符串;递增哈希值;将元素推送到列表中;计算集合交集, 并集和差异;或者在排序集中获得排名最高的成员。

2024-11-05 01:45:00 945

空空如也

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

TA关注的人

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