Spring Security 为 Java 应用程序提供了一套全面的安全功能,涵盖身份验证、授权、会话管理以及针对CSRF(跨站点请求伪造)等常见安全威胁的防护。Spring Security 框架具有高度可定制性,允许开发人员根据其应用程序需求来管理安全配置。它提供了一个灵活的架构,支持各种身份验证机制,如基本身份验证、JWT 和 OAuth。
More »[译]测试 Spring Boot 应用程序:最佳实践和框架
测试是软件开发不可或缺的一部分。它可确保您的 Spring Boot 应用程序按预期运行,并在不断发展的过程中继续保持这种状态。在本文中,我们将探讨如何使用最佳实践和工具测试 Spring Boot 应用程序。
为什么测试很重要
测试至关重要,原因如下:
More »ActiveMQ源码-BrokerService和PersistenceAdapter
activemq-broker 模块 test/java 目录下有个 IDERunner 类:
public class IDERunner {
private static final boolean TRANSPORT_TRACE = false;
public static void main(String[]args) throws Exception {
BrokerService brokerService = new BrokerService();
// brokerService.addConnector(
// "tcp://0.0.0.0:61616?trace=" + TRANSPORT_TRACE +
// "&transport.wireFormat.maxFrameSize=104857600");
brokerService.setPersistent(false);
brokerService.setUseJmx(false);
brokerService.setAdvisorySupport(false);
brokerService.start();
brokerService.waitUntilStopped();
}
}
注释掉 brokerService 调用 addConnector 方法的三行代码,然后 debug 运行该类的 main 方法。
More »ThingsBoard源码编译和Idea运行
ThingsBoard 源码地址:https://github.com/thingsboard/thingsboard,从 3.7 版本之后,要求 JDK17。官方提供了源码编译的文档:Building from sources
源码编译
下载代码:
More »ActiveMQ源码本地调试运行
源码构建
1、从 https://github.com/apache/activemq 下载源码
git clone https://github.com/apache/activemq
2、切换至 activemq-5.18.x 分支
More »[译]关系数据库设计速成课程
原文链接:https://blog.bytebytego.com/p/a-crash-course-on-relational-database
在当今数据驱动的世界中,高效存储和管理信息是各种规模的企业和组织的关键要求。
关系数据库提供了一个强大的框架,用于根据实体之间明确定义的关系来存储和检索数据。它们提供了一种结构化的数据管理方法,使用户能够:
- 定义表
- 建立关系
- 执行复杂查询以从存储的信息中提取有意义的见解
然而,仅仅使用关系数据库还不足以获得其好处。
有效的数据库设计对于优化性能、确保数据完整性和促进高效的数据检索至关重要。数据库设计原则(例如规范化、索引、连接和关系)在创建结构良好且性能良好的数据库中起着至关重要的作用。
More »[译]分布式系统速成课程
原文链接:https://blog.bytebytego.com/p/a-crash-course-on-distributed-systems
分布式系统是多台计算机(也称为节点)的集合,它们协作执行特定任务或提供服务。
这些节点在物理上是分开的,并通过网络传递消息相互通信。分布式系统可以跨越地理边界,使其能够利用来自不同位置的资源。
分布式系统有几个区别于传统集中式系统的特点:
- 分布式系统中的计算机在物理上是分开的,并通过网络连接。它们不共享内存或公共时钟。
- 从外部视角来看,分布式系统对于最终用户来说是一个单一、统一的实体。
- 分布式系统提供了在系统中添加或删除计算机的灵活性。
- 分布式系统中的节点需要相互协调并达成一致才能一致地执行操作。
- 分布式系统中的节点可能独立发生故障,并且消息可能会在网络上丢失或延迟。
分布式系统在我们的日常生活中无处不在。例如 Google 搜索等大型 Web 应用程序、在线银行系统、多人游戏等。这些系统利用多台计算机协同工作,提供无缝且响应迅速的用户体验。
More »[译]数据库分片速成课程
原文链接:https://blog.bytebytego.com/p/a-crash-course-in-database-sharding
随着应用程序越来越受欢迎,它会吸引更多活跃用户并加入更多功能。这种增长导致每日数据生成量增加,从业务角度来看,这是一个积极的指标。
然而,它也给应用程序的架构带来挑战,特别是在数据库可扩展性方面。
数据库是任何应用程序的关键组件,但它也是最难水平扩展的组件之一。当应用程序的流量和数据量增加时,数据库可能会成为性能瓶颈,影响用户体验。
分片是一种解决数据库横向扩展难题的技术。它涉及将数据库划分为更小、更易于管理的单元(称为分片)。
在这篇文章中,我们将介绍数据库分片的基础知识,探讨其各种方法、技术考虑因素,以及展示公司如何实施分片来扩展其数据库的真实案例研究。
什么是分片?
分片是一种架构模式,用于解决管理和查询数据库中大型数据集的难题。它涉及将大型数据库拆分为更小、更易于管理的部分(称为分片)。
More »[译]数据库扩展策略速成课程
原文链接:https://blog.bytebytego.com/p/a-crash-course-in-database-scaling
数据库是现代应用程序开发的支柱。它们在存储、管理和检索数据方面发挥着至关重要的作用,使应用程序和服务能够有效运行。
随着应用程序越来越受欢迎并吸引越来越多的用户群,数据库面临着处理不断增加的数据量、并发用户和复杂查询的挑战。
有效地扩展数据库以确保最佳性能和良好的用户体验变得至关重要。
数据库扩展是调整和扩展数据库基础架构以适应增长并在负载增加的情况下保持性能的过程。它涉及采用各种技术和策略来有效地分配数据,优化查询执行并明智地利用硬件资源。
组织和开发人员必须了解并实施正确的数据库扩展策略。针对特定情况选择错误的策略可能会弊大于利。
在这篇文章中,我们将详细介绍最流行的数据库扩展策略,讨论它们的优点和权衡。
[译]领域驱动设计速成课程
原文链接:https://blog.bytebytego.com/p/a-crash-course-on-domain-driven-design
为复杂领域开发软件是一项具有挑战性的任务。
随着问题领域的复杂性不断增长,创建准确表示业务概念、规则和流程的软件变得越来越困难。设计不良的软件很快就会变成难以理解、难以维护和扩展的混乱代码。
领域驱动设计(DDD)为这个问题提供了解决方案。
DDD 是一种软件开发方法,它通过强调对核心领域和业务逻辑进行建模的重要性并使用这些模型作为软件设计的基础来解决领域复杂性。
领域驱动设计的核心是:
- 将主要焦点放在核心领域上。
- 基于领域模型的复杂设计
- 建立技术专家和领域专家之间的协作。
近年来,领域驱动设计的需求愈发迫切。基于微服务和云计算的架构已导致系统由众多以复杂方式交互的小组件组成。如果没有清晰且定义明确的领域模型来指导其设计,此类系统很快就会变成“一团泥球”。
More »