自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 典型软件系统架构视图的使用场景及图例

本文主要总结了软件系统中常见的六种架构视图类型,以及它们在软件开发和系统设计中的使用范围。这些视图类型包括逻辑视图、运行视图、数据视图、开发视图、部署视图和场景视图。逻辑视图关注于系统的组件拆分、功能职责、输入输出和依赖关系的描述。它在需求分析和系统设计阶段起到指导作用,帮助开发团队确定系统的模块划分和组件之间的关系。运行视图描述了系统中各组件之间的协作方式,并通过运行时序图展示主要功能的执行顺序。它对于理解系统的运行行为、优化性能和排查问题非常重要。

2023-08-21 21:09:49 1292

原创 JVM提速利器:ZGC垃圾回收器的工作原理和应用

ZGC是一种可扩展和低延迟的JVM垃圾回收器,能够实现大规模Java程序的快速内存分配和回收。在处理高负载情况下,ZGC表现出色,而且它能够与现有的Java应用程序平滑地集成。本文将详细介绍ZGC的原理、配置和使用示例。

2023-05-14 15:35:53 606

原创 从原理到实践,深入解析Spring Security中的CSRF保护机制

随着Web应用程序的普及和发展,网络攻击成为了一个严重的问题。其中,CSRF(Cross-Site Request Forgery)攻击是一种非常常见的攻击方式。攻击者可以利用这种漏洞欺骗用户执行恶意操作,如恶意转账、修改用户信息等。为了提高应用程序的安全性,我们必须采取措施保护Web应用程序,其中之一就是CSRF保护机制。本文将介绍Spring Security中的CSRF保护机制,并提供一些示例和实践建议,以帮助开发人员实现更安全的Web应用程序。

2023-05-14 00:15:21 1083

原创 传的神乎其神的 Kubernetes 对 Java 开发者意味着什么

Kubernetes 是一个开源的容器编排系统,它可以自动化地管理和调度容器化应用程序。自从 Kubernetes 诞生以来,它一直备受关注,不少 IT 技术专家称其为神器。对于 Java 开发者来说,Kubernetes 意味着什么?本文将从以下几个方面探讨这个问题。

2023-04-05 23:38:16 140

原创 一文带你理解 JVM 中栈空间和堆空间的区别

为了更高效的运行应用程序,JVM 选择将内存划分为栈空间和堆空间。 每当我们声明新变量和对象、调用新方法、声明 String 或执行类似操作时,JVM 都会在栈或堆空间里面操作指定内存。在这篇文章里面,我们将简要介绍 JVM 的内存模型以及它们的主要功能,然后我们将介绍它们是如何存储在内存里面,以及会在哪里使用到它们。最后,我们将分几个维度总结它们之间的主要区别。1. 栈空间JVM 中的栈空间用于静态内存分配和线程的执行。 它包含方法的原始值以及对象的引用。对该内存的访问是按后进先出 (LIF

2022-11-27 20:39:09 972

原创 一文带你了解如何使用 Drools 规则引擎进行反向推理

1. 概述规则引擎在我们进行业务开发过程中使用非常广泛,比如常见的营销活动的策略定义、金融业务里面的风险评估、征信验证都会使用到规则引擎的能力。在本文里面我们将介绍如何使用 Java 里面最常用的 Drools 规则引擎进行反向推理。2. 正向推理正向推理是指我们从数据输入开始,得出一个特定的结论。比如使用正向推理可以根据节点之间已知的连接,发现新的路由。3. 反向推理与正向推理相反,反向推理是直接从结论(假设)开始,通过回溯一系列事实来验证结论是否正确。在比较正向推理和反向推理时,正向推理可以

2022-11-12 16:24:54 452

原创 Nocalhost + JRebel: 打造 Kubernetes 下构建云原生 Java 应用的全新体验

我们在进行日常开发调试的时候经常遇到一个窘境,就是我们修改的代码在开发环境很难及时生效,一天下来,大多数时间都被消耗在调试和部署上面,最后没有办法,除了加班还是只能加班。为了解决这个问题,Coding 开发了一个叫做Nocalhost的工具,给我们在 Kubernetes 环境下进行开发带来了全新的体验,Nocalhost 可以帮助我们把本地的代码实时的同步到 Kubernetes Pod 容器上。而且进一步的,Nocalhost 可以完美结合 Java 热加载神器 JRebel,实现 Java 代码

2022-11-01 22:57:05 312

原创 性能优化宝典之序列化

当将数据写入文件、发送到网络、写入到存储时通常需要序列化(serialization)技术,从其读取时需要进行反序列化(deserialization),又称编码(encode)和解码(decode)。序列化作为传输数据的表示形式,与网络框架和通信协议是解耦的。如 Dubbo 支持 Hessian 和 JSON,HTTP 协议支持 XML、JSON 和流媒体传输等。序列化的方式有很多,作为数据传输和存储的基础,如何选择合适的序列化方式显得尤其重要。序列化分类通常而言,序列化技术可以大致分为以下三种

2022-10-29 22:13:10 456

原创 到底为什么我们需要 Clickhouse?

Clickhouse 是现在最流行的 OLAP 数据库之一,虽然名声如雷贯耳,但在我们心目中总有一个疑问,到底为什么我们需要 Clickhouse,是哪些优点让字节、腾讯这些大公司都选择它作为最推荐的 OLAP 数据库,这篇文章将试图带我们找到答案。一、什么是 Clickhouse?Clickhouse 是一个开源使用列式存储的 OLAP 数据库,最初由 Yandex 公司开发,现在从 Yandex 拆分出来并成立了独立的 Clickhouse Inc,其功能类似于 Google Analytics

2022-10-25 22:35:12 680

原创 一文带你了解 GraphQL 和 REST 的区别和使用场景

一、概述在创建 Web 服务来支持我们的应用程序时,我们可以选择使用 REST 或者 GraphQL 作为通信模式。虽然两者都最有可能在 HTTP 上使用 JSON,但它们有不同的优点和缺点。在本教程中,我们将比较 GraphQL 和 REST。我们将创建一个产品数据库示例,并比较两种解决方案在执行相同的客户端操作时有何不同。二、示例服务我们的示例服务将允许我们:在草稿状态下创建产品更新产品详情获取产品列表获取单个产品的详细信息及其订单让我们从使用 REST 创建应用程序开始。三

2022-10-23 16:02:33 918

原创 Golang 中实现插件机制的方法对比

我们知道类似 Java 等半编译半解释型语言编译生成的都是类似中间态的字节码,所以在 Java 里面我们想要实现程序工作的动态扩展,可以通过 Java 的字节码编辑技术 ASM 来实现,那么在 Golang 里面要如何实现插件扩展机制呢?

2022-10-22 12:11:35 907

原创 两小时手撕一个 Java 版本的区块链应用程序

一、概述区块链是一种分布式账本技术 (DLT),起源可以追溯到 2008 年 中本聪发表的关于比特币的白皮书,它由不断增长的区块组成,这些区块使用加密技术安全地链接在一起。每个区块包含前一个区块的加密哈希、时间戳和交易数据(通常表示为 Merkle 树,其中数据节点由叶子表示)。 时间戳证明交易数据在创建区块时已经存在。 由于每个块都包含有关前一个块的信息,因此它们有效地形成了一个链(类似链表数据结构),每个附加块都链接到它之前的块。 因此,区块链交易是不可逆的,因为一旦记录下来,任何给定块的数据都不能

2022-10-20 21:28:32 1793

原创 一文带你了解 MySQL 和 Redis 事务实现对比

我们都知道,如果要实现事务,需要整体保证 ACID(A-原子性|C-持久性|I-隔离性|D-一致性) ,其中一致性是目标,原子性、持久性和隔离性都是手段,所以这里对比一下 MySQL 和 Redis 在事务实现上的区别,当然严格意义上来说,Redis 由于不满足原子性,不能算真正意义上实现了事务。原子性MySQL - 原子性MySQL 的原子性是通过 undolog 保证的,undolog 是 MySQL 的回滚日志,保存的是数据的历史版本,通过历史版本让数据在任何时候都可以回滚到某一个事务开始之

2022-10-19 22:23:38 728

原创 一文带你了解 PPT 里面如何使用合适的图表

我们在平常的汇报、答辩和演讲里面,经常会遇到一个问题,就是如何使用合适的图表清晰准确的表达出自己的意图。虽然公司里面的 PPT 工程师为很多代码工程师所不齿,但做好一个 PPT 并不是一件很容易的事情,本文就带你了解 PPT 里面如何使用合适的图表,让你轻松掌握各种图表的应用场景和使用技巧。一、图表呈现的哲学1.1 好的标准信:保证数据的正确性达:让用户轻松接受信息雅:保证可视化的美观1.2 图表的分类1.3 排版原则从上至下重要的信息放在上面从左至右重要

2022-10-18 20:37:09 527

原创 Redis - 听说 Dragonfly 宣称比我快 25 倍

似乎总有几个项目声称他们已经建立了"世界上最快的键/值存储",有时使用的短语甚至更加离谱,比如以下项目:Redis: https://github.com/redis/redisKeyDB: https://github.com/snapchat/keydbDragonfly: https://github.com/dragonflydb/dragonflySkytable: https://github.com/skytable/skytable而根据国外的基准测试结果(

2022-10-17 21:56:52 1277

原创 一文教会你如何使用 Spring TaskScheduler 任务调度器

概述在本教程中,我们将讨论 Spring 任务调度机制, TaskScheduler, 以及它的预构建实现。然后我们将探索要使用的不同触发器。Spring 3.0 引入了TaskScheduler*,其中包含多个可以配置在未来某个时间点运行的方法。 *TaskScheduler 还返回 ScheduledFuture 接口的表示对象,我们可以使用它来取消计划任务并检查它们是否已完成。我们需要做的就是选择一个可运行的任务进行调度,然后选择一个合适的调度策略。ThreadPoolTaskSche

2022-10-16 09:50:42 932

原创 一篇文章教会你如何使用 Spring Shell 的 CLI

1。概述简而言之,Spring Shell 项目 提供了一个交互式 shell,用于处理命令并使用 Spring 编程模型构建功能齐全的 CLI。在本文中,我们将探索它的特性、关键类和注释,并实现几个自定义命令和自定义。2。 Maven 依赖首先,我们需要将 spring-shell 依赖项添加到 pom.xml 中:<dependency> <groupId>org.springframework.shell</groupId> <art

2022-10-15 13:12:40 313

原创 在 Thymeleaf 中使用日期的方法

1。介绍Thymeleaf 是一个 Java 模板引擎,能够直接与 Spring 一起工作。有关 Thymeleaf 和 Spring 的介绍,请查看 this write-up。除了这些基本功能之外,Thymeleaf 还为我们提供了一组实用程序对象,它们将帮助我们在应用程序中执行常见任务。在本教程中,我们将讨论新旧 Java Date 类的处理和格式化以及 Thymeleaf 3.0 的一些特性。2。 Maven 依赖项首先,让我们创建配置以将 Thymeleaf 与 Spring 集成到我们

2022-10-15 12:40:18 2777

原创 程序员知识图谱-Java 内存溢出的排查方法

内存溢出分类Java 里面内存溢出主要分以下几种:堆溢出1、内存溢出(无法申请到内存)jstat 查看内存使用情况,检查堆参数,一般是申请的内存太大,比如一个特别大的 byte 数组2、内存泄漏(对象无法回收)可以使用 MAT 工具里面的 Path to GC Roots 定位,一般是一个特大不能回收的对象栈溢出StackOverflowError方法调用层次太深,内存不够新建栈帧,比如一个没有结束条件的递归OutOfMemoryError线程太多,内存不够新建线程MetaSpa

2022-10-13 20:08:13 2885

原创 Spring Boot 配置 jar 包外面的 Spring Properties 文件

一、概述Properties 文件是我们可以用来存储项目特定信息的常用方法。理想情况下,我们应该将其保留在 jar 包之外,以便能够根据需要对配置进行更改。在这个教程中,我们将研究在 Spring Boot 应用程序 中从 jar 外部位置加载 Properties 文件的各种方法。二、使用默认位置按照惯例,Spring Boot 按以下优先顺序在四个预定位置查找外部化配置文件 --- application.properties 或 application.yml :{#crayon-5c73a1

2022-10-13 19:48:56 493

原创 配置 Spring Security 登录后重定向到不同的页面

1。概述Web 应用程序的一个常见要求是在登录后将不同类型的用户重定向到不同的页面。例如,将标准用户重定向到 /homepage.html 页面和将管理员用户重定向到 /console.html 页面。本文将展示如何使用 Spring Security 快速安全地实现此机制。这篇文章也是建立在 Spring MVC 教程 之上的,该教程涉及设置项目所需的核心内容。2。 Spring 安全配置Spring Security 提供了一个组件,该组件直接负责决定在成功验证后做什么——Authenticat

2022-10-10 22:10:52 1083

原创 要想学会 PowerMock 看这一篇文章就够了

前置步骤引入依赖<dependencies> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0</version> <scope>test</scope

2022-10-09 19:40:07 214

原创 使用 Spring Security 手动验证用户

1。概述在这篇快速文章中,我们将重点介绍如何在 Spring Security 和 Spring MVC 中手动验证用户的身份。2。Spring Security简单地说,Spring Security 将每个经过身份验证的用户的主体信息保存在 ThreadLocal 中——表示为 Authentication 对象。为了构造和设置这个 Authentication 对象——我们需要使用 Spring Security 通常用来在标准身份验证上构建对象的相同方法。为此,让我们手动触发身份验证,然后

2022-10-09 09:24:04 271

原创 还在用 JUnit4?手把手教你迁移到 JUnit5

一、概述在本教程中,我们将学习如何从 JUnit 4 迁移到最新的 JUnit 5 版本,并介绍两个版本的库之间的差异。有关使用 JUnit 5 的一般指南,请参阅我们的文章 此处。二、JUnit 5 的优势让我们从以前的版本 JUnit 4 开始,它有一些明显的限制:单个 jar 库包含整个框架。我们需要导入整个库,即使我们只需要一个特定的功能。 在 JUnit 5 中,我们获得了更多的粒度,并且可以只导入必要的内容。在 JUnit 4 中一次只有一个测试运行器可以执行测试(例如 Sprin

2022-10-08 20:14:16 1139

原创 浅谈 Mock Server

What?什么是 Mock ServerMock 是模拟的意思。在测试中,通常表述为:对测试过程中不容易构造或者不容易获取的物件,用一个虚拟的物件来进行模拟的一个过程。能够提供 Mock 功能的服务就叫作 Mock Server。 Mock Server 通过模拟真实的服务,提供对来自客户端请求的真实响应。Why?为什么要用 Mock Server在开发初期先模拟外部接口,避免直接使用实际外部接口进行开发调试,提高开发效率全面准确的模拟外部接口的返回,提高自身代码的可靠性,提升验证的全面性H

2022-10-07 21:33:25 2081

原创 Spring Cloud Consul 入门指引

1 概述Spring Cloud Consul 项目为 Spring Boot 应用程序提供了与 Consul 的轻松集成。Consul 是一个工具,它提供组件来解决微服务架构中一些最常见的挑战:服务发现——自动注册和注销服务实例的网络位置健康检查——检测服务实例何时启动并运行分布式配置——确保所有服务实例使用相同的配置在本文中,我们将了解如何配置 Spring Boot 应用程序以使用这些功能。2 前提条件首先,建议快速浏览 Consul 及其所有功能。在本文中,我们将使用在 loc

2022-10-04 11:33:05 285

原创 Spring Security 配置 Remember Me

1。概述本教程将展示如何使用 Spring Security 在 Web 应用程序中启用和配置 Remember Me。之前已经讨论过设置安全和简单表单登录的 MVC 应用程序。该机制将能够跨多个会话识别用户——首先要了解的是,Remember Me 仅在会话超时后才会启动。默认情况下,用户在 30 分钟不活跃后会超时,但在 web.xml 中可以配置超时时间。注意:本教程重点介绍基于标准 cookie 的方法。对于持久化方法,请查看 Spring Security -- Persistent Rem

2022-10-03 17:54:37 366

空空如也

空空如也

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

TA关注的人

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