- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 负载均衡最佳实践及自定义负载均衡器
负载均衡是分布式系统中的关键技术,用于将来自客户端的请求合理地分配到多个后端服务器上,以提高系统的性能、可靠性和可扩展性。通过负载均衡,可以避免单个服务器因负载过高而出现性能瓶颈或故障,同时能够实现系统资源的高效利用。常见的负载均衡算法包括轮询、随机、加权随机、一致性哈希等。轮询算法按照顺序依次将请求分配到后端服务器列表中的每个服务器上,每个服务器被轮流选中的机会均等。这种算法简单公平,适用于后端服务器性能相近的场景。随机负载均衡器在后端服务器列表中随机选择一个服务器来处理请求。
2024-12-09 22:16:00
1283
1
原创 【MarsCode】每日一题字符串 之 - 数字字符串格式化
小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的。由于我们处理的是字符串,并且需要对字符串进行插入操作(插入千分位逗号),因此我们可以选择使用字符串或字符串构建器(StringBuilder)来处理。我们需要将一个不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。,这些也需要精简掉。:从后往前遍历整数部分,每三位插入一个逗号。:将处理后的整数部分和小数部分重新合并。
2024-12-08 22:16:37
676
原创 【MarsCode】每日一题数组 之 数字分组求偶数和
小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选择方法可以达到这一目标。你需要从每个数字组中选择一个数字,使得这些数字的和为偶数。问题的核心在于如何判断一个数的和是否为偶数。语雀:https://www.yuque.com/icu0。
2024-12-08 22:16:06
522
原创 【23种设计模式】七种设计原则:理论与 Java 实践
单一职责原则规定一个类应该只有一个引起它变化的原因,即一个类只负责一项职责。如果一个类承担了过多的职责,那么这些职责之间的耦合度会很高,一旦某个职责发生变化,可能会影响到整个类的其他职责相关的功能,导致代码的可维护性和可扩展性变差。开闭原则指出软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着当有新的需求或功能变化时,应该通过扩展现有代码来实现,而不是直接修改已有的代码,这样可以减少对原有系统的影响,降低出错的风险,提高系统的稳定性和可维护性。里氏替换原则表明子类型必须能够替换它们的父类型。
2024-12-07 20:46:34
1371
1
原创 【23种设计模式】原型模式:理论剖析与Java实践
原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需依赖具体的类构造函数。其核心思想是基于已有的对象实例(原型)来创建新的对象,这在创建复杂对象或创建对象成本较高的情况下非常有用,能够显著提高创建对象的效率并简化对象的创建过程。原型模式为对象的创建提供了一种高效、灵活的解决方案,尤其适用于创建成本高或对象类型动态变化的场景。在 Java 中通过实现Cloneable接口和重写clone。
2024-12-06 23:52:57
1131
原创 【23种设计模式】建造者模式:理论剖析与Java实践
建造者模式是一种创建型设计模式,它将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。该模式的核心在于将复杂对象的创建过程分解为多个简单的步骤,由不同的建造者来实现这些步骤,最后通过一个指挥者来协调各个建造者,完成复杂对象的构建。这种模式适用于创建复杂对象的场景,如创建一个包含多个部件且部件之间有特定组合关系的产品,像电脑的组装(包括主机、显示器、键盘、鼠标等部件)或者一份具有多种配料和制作步骤的套餐等。
2024-12-05 23:58:11
969
原创 【23种设计模式】工厂模式:理论剖析与Java实践
工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,将对象的创建和使用分离。通过使用工厂模式,可以将对象的创建逻辑封装在一个专门的工厂类中,而不是在客户端代码中直接使用 new 关键字来创建对象。这样做的好处是,当需要创建新的对象或者修改对象的创建逻辑时,只需要在工厂类中进行修改,而不会影响到使用这些对象的客户端代码,提高了代码的可维护性和可扩展性。简单工厂模式定义了一个工厂类,这个工厂类有一个创建对象的方法,根据传入的参数不同来创建不同类型的对象。
2024-12-04 19:45:52
1034
原创 【23种设计模式】单例模式:理论剖析与 Java 实践
单例模式是一种创建型设计模式,其核心目的在于确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。这种模式在许多场景中都具有重要应用价值,例如在数据库连接池管理中,只需要一个共享的连接池实例来处理所有数据库请求,避免资源的过度消耗和冲突;在日志记录系统中,单例的日志记录器可以确保所有日志信息都按照统一的方式进行处理和存储。单例模式在 Java 编程中是一种非常重要且常用的设计模式,它通过多种实现方式来确保一个类只有一个实例,并提供全局访问点。
2024-12-03 07:58:58
1199
原创 基于 Vue + Java 的刷题优惠券项目设计方案
刷题优惠券项目旨在为刷题平台用户提供优惠激励,促进用户更多地参与刷题活动。通过发放日常优惠券和定时秒杀优惠券,增加用户的刷题动力和平台的吸引力。用户可在前端界面查看优惠券信息、领取优惠券,并在刷题消费时使用优惠券享受折扣或其他优惠。
2024-12-02 00:03:40
1611
原创 基于 echart+ redis 的刷题日历项目设计与实现
刷题日历项目旨在为用户提供一个直观、便捷的刷题数据可视化平台。通过日历的形式展示用户的刷题历程,让用户清晰地了解自己在不同时间的学习状态和成果,同时借助数据分析功能,帮助用户发现学习规律,优化学习计划。
2024-12-01 01:06:26
1352
原创 Disruptor:高性能异步处理的卓越之选
Disruptor 是一个开源的高性能异步处理框架,它基于无锁的环形缓冲区数据结构以及一系列精心设计的并发编程模式,旨在实现极低延迟、高吞吐量的事件处理。与传统的基于队列的异步处理方式相比,Disruptor 在处理大量并发事件时展现出了显著的优势,能够极大地提升系统的整体性能与响应速度。Disruptor 凭借其独特的环形缓冲区结构、无锁并发机制以及灵活的事件处理器和消费者依赖链设计,在高性能异步处理领域展现出了无可比拟的优势。
2024-11-30 15:59:12
1031
原创 Caffeine + Redis + MySQL:构建强大的三级缓存机制
这种三级缓存机制构建了一个多层次的数据存储与访问体系。当应用收到数据请求时,首先会在速度最快的本地内存缓存 Caffeine 中查找数据,如果命中,则直接返回数据,大大减少了数据获取的延迟。若 Caffeine 中未找到数据,则会进一步在分布式缓存 Redis 中进行查询。Redis 作为高性能的分布式缓存系统,能够应对大量并发请求,并提供丰富的数据结构支持。
2024-11-28 00:04:45
1404
4
原创 Sentinel:网站流量控制与熔断的强大守护者
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,它能够在服务的入口和出口处对流量进行精准的控制和管理,同时具备强大的熔断机制,能够及时发现并隔离故障服务,保障整个系统的可用性和稳定性。Sentinel 提供了丰富的功能特性和灵活的配置方式,使其能够适应不同规模和复杂程度的业务系统需求。Sentinel 作为一款强大的流量控制与熔断框架,在网站流量管理和系统稳定性保障方面具有显著的优势。
2024-11-28 00:04:28
1041
原创 JD - HotKey:缓存热 Key 管理的高效解决方案
JD - HotKey 是专门针对缓存热 Key 场景设计的一套机制。它旨在通过一系列的技术手段,在热 Key 出现时能够快速检测、精准定位,并采取有效的措施来缓解热 Key 对缓存系统以及整个应用架构带来的压力,确保系统在高并发访问下依然能够保持稳定、高效的运行状态。JD - HotKey 设计方案凭借其高效的热 Key 检测机制、灵活的热 Key 处理策略以及良好的系统架构与集成性,为解决缓存热 Key 问题提供了一种切实可行且高效的途径。
2024-11-27 22:12:39
1565
1
原创 数据库连接池调优——可视化查询慢SQL利器
Druid 是阿里巴巴开源平台上的一个数据库连接池实现,它为开发人员提供了高效、稳定且功能丰富的数据库连接管理方案。除了基础的连接池功能外,Druid 还具备强大的监控和扩展能力,能够帮助开发人员和运维人员深入了解数据库的使用情况,及时发现并解决潜在的性能问题,尤其是在定位和分析慢 SQL 语句方面表现突出。Druid 作为一款优秀的数据库连接池,凭借其高效的连接池管理、强大的监控功能以及在可视化查询慢 SQL 等方面的出色表现,为开发和运维人员在数据库性能优化工作中提供了有力的工具支持。
2024-11-25 22:02:42
2426
13
原创 动态IP黑白名单过滤的设计与实现(下篇原理实现)
命名空间用于隔离不同的配置集。使用场景:在需要动态调整配置的场景下使用,例如调整缓存大小、切换不同的服务端点等,应用可以通过监听器及时感知这些变化并应用新的配置。而配置中心的出现就是为了实现分布式系统中配置的 **集中化管理,**还提供动态更新、配置分组、版本控制、灰度发布、安全管理,简化了多环境和多实例的配置运维,确保系统的灵活性和稳定性。5)配置的安全管理:配置中心一般会提供加密存储和权限控制功能,可以对敏感信息(如数据库密码、API 密钥等)进行加密处理,并限制访问权限,确保敏感配置信息的安全性。
2024-11-20 09:08:18
2007
13
原创 动态IP黑白名单过滤的设计与实现(上篇设计思想)
不过,它不允许假阴性,也就是说,如果 Bloom Filter 判断某个元素不存在,那么它一定是不存在的。如果布隆过滤器判断一个元素不存在集合中,那么这个元素一定不在集合中,如果判断元素存在集合中则不一定是真的,因为哈希可能会存在冲突。哈希函数的个数:哈希函数越多,误判率越低,但计算成本会增加。双层验证:在 Bloom Filter 判断元素在黑名单中后,进一步查验实际的黑名单(例如,查数据库中的黑名单详细记录)。,但默认是对应用级别进行判断,需要改造来源的获取方式为获取请求客户端的 IP,可参考。
2024-11-19 22:19:27
1659
3
原创 同端互斥登录技术选型之Sa-Token(下篇)
当用户新登录账号时,先检测该用户是否已经登录、并且是否有设备冲突,冲突的话,把之前的登录态删除掉即可。,与 HttpSession 没任何关系, SaSession 是 Sa-Token 提供的会话中专业的数据缓存组件,通过 SaSession 我们可以很方便的缓存一些高频读写数据(比如登录用户信息),提高程序性能。整合 Redis,非常简单。之后请求任何接口,都能正常响应,如果需要登录,会和之前一样返回未登录。该接口提供了获取当前登录用户的权限和角色的方法,在每次调用鉴权代码时,都会执行接口中的方法。
2024-11-18 09:11:13
1097
1
原创 同端互斥登录技术选型之Sa-Token(上篇)
为了防止这些情况,我们的系统需要能够实时监控和检测同一账户在多个设备上的登录情况,在检测到冲突时,及时通知用户并采取相应的安全措施(如强制下线或警告)。即每次登录时,检测当前账户已登录设备数量,若超过限制,系统阻止登录或强制最早登录设备下线。同一时间,只允许同一账户在一个设备上登录。即每次新设备登录时,检测当前账户是否已经在其他设备上登录,若已登录则将其他设备强制下线。要想实现这种策略,需要记录账户登录设备的类型,每次登录时检查是否有同类设备已登录,如果有则强制下线相同设备类型的旧登录。
2024-11-17 00:17:14
1285
7
原创 Linux上慢SQL查询与优化
使用 LIMIT 来限制结果集大小:如果只需要查询部分结果,可以使用 LIMIT 来限制结果集的大小,减少传输数据的量。使用 EXPLAIN 分析查询计划:使用 EXPLAIN 命令可以分析查询的执行计划,查看是否合理使用了索引。避免使用 SELECT *:只选择需要的列,不使用 SELECT * 可以减少数据的传输量,提高查询效率。将频繁执行的查询结果进行缓存:将频繁执行的查询结果缓存起来,可以减少对数据库的访问,提高查询性能。使用合适的数据类型:选择合适的数据类型可以减少存储空间的占用,提高查询性能。
2024-11-16 00:15:16
1759
11
原创 轻松搞定在任何地方都能实时同步和共享部署在本地的思源笔记
今天我们来聊聊如何将思源笔记、cpolar内网穿透和群晖WebDAV这三位“好朋友”结合起来,实现思源笔记的云同步功能。没错,只需简单几步,你就能让思源笔记在任何地方都能实时同步和共享!在这个信息爆炸的时代,文件的同步与共享变得尤为重要。传统的文件同步方案常常受到网络环境和设备限制的困扰,让人感到复杂且不稳定。为了打破这些束缚,我们提出了一个结合思源笔记、cpolar内网穿透和群晖WebDAV的云同步解决方案。首先,我们要利用cpolar将群晖NAS上的WebDAV服务暴露到公网上。
2024-11-09 23:41:45
2354
7
原创 什么!你还不会Redis?跟着我讲透Redis【中篇之常见Redis命令】
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:通用指令是部分数据类型的,都可以使用的指令,常见的有:String类型String类型,也就是字符串类型,是redis中最简单的存储类型其value是字符串,不过根据字符串的格式不同,又可以分为3类:String类型的常见命令:Redis的通用命令-key的层级结构Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?key的结构Redis的key允许有多个单词形成层级结构
2024-06-27 01:26:38
871
原创 什么!你还不会Redis?跟着我讲透Redis【上篇之初识与安装】
NoSQL,意即”不仅仅是SQL“,泛指非关系型的数据库。NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。不遵循SQL标准。不支持ACID远超于SQL的性能。数据无关联储存在内存当中Redis诞生于2009年全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NOSQL数据库键值 (key-value)型,value支持多种不同数据结构,功能丰富、单线程,每个命令具备原子性。
2024-06-26 01:25:09
612
原创 【数据库】Redis的线程与IO
博客昵称:架构师Cool最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟!博主小留言:哈喽!各位优快云的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘。
2023-03-14 23:56:21
348
原创 【Java并发特性】JUC并发特性(一)
JAVA里面进行多线程通信的主要方式就是 `共享内存` 的方式,共享内存主要的关注点有两个:`可见性` 和 `有序性`。加上复合操作的 `原子性`,可以认为JAVA的线程安全性问题主要关注点有3个(JAVA内存模型JMM解决了可见性和有序性的问题,而锁解决了原子性的问题):`可见性`、`有序性`、`原子性`
2023-03-13 21:02:09
336
原创 【架构师】跟我一起学架构——Serverless
博客昵称:架构师Cool最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟!博主小留言:哈喽!各位优快云的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘。
2023-03-08 07:43:28
457
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人