自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

罗小爬的技术宝书

一只没有脚的鸟...停不下的学习,持续的进步,点滴技术的记录与分享。

  • 博客(251)
  • 资源 (5)
  • 收藏
  • 关注

原创 REST API规范

REST+ JSON已成为Http接口的事实标准,本文给出我平时推荐的REST API规范及相关注意事项。

2024-04-23 17:01:24 491

转载 【转载】架构”4+1“视图

逻辑视图开发视图过程视图物理视图,“1”指的是场景视图。场景视图又称为用例视图,显示外部参与者观察到的系统功能。逻辑视图从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能。开发视图又称为实现视图,显示的是源代码以及实际执行代码的组织结构。处理视图又称为过程视图,显示程序执行时并发的状态。物理视图展示软件到硬件的映射。1995年Kruchten提出了著名的“4+1”视图,用来描述软件系统的架构。物理视图用来描述系统软硬件之间的映射关系,这个视图往往(系统工程人员)最为关注;逻辑视图。

2024-03-14 16:11:53 64

原创 DDD系列 - 第11讲 拆解业务流程

可以参照UML中活动图,在活动图中提出了泳道的概念,即在原业务流程图的X轴方向上添加了泳道的划分,不同的泳道即表示参与流程的不同角色。复杂业务需求通常伴随着复杂的业务流程(一个或多个),呈现业务流程最直接的方式就是运用业务流程图,业务流程图为动态的业务需求提供了简单清晰的可视化方案,可以帮助受众快速了解业务本身的运作方式,明确业务规则。)分割为执行业务活动的不同区域,分割出来的各个区域代表了不同角色的活动类型,也体现了不同的观察视图,在保证业务流程全貌的基础上清晰地体现了参与角色、活动类型等的不同特征。

2024-03-05 14:35:17 52

原创 一次团队内部的DDD分享

最近在团队内部搞了一次DDD分享,效果还算不错,在此特将本次分享所用的PPT分享给大家,大家共同学习,也随时欢迎大家提问和讨论。

2024-01-25 16:38:35 92

原创 DDD系列 - 第10讲 聚合

本文主要介绍了聚合的识别原则以及聚合间的协作方式等。

2024-01-21 15:36:23 79

原创 DDD系列 - 第9讲 实体、值对象

本篇作为识别聚合的前哨,介绍了实体、值对象的识别及定义等。

2024-01-21 15:31:53 269

原创 DDD系列 - 第8讲 仓库Repository - JPA篇(二)

书接上回的JPA仓库实现,在定义完商品聚合内相关的根实体Goods、值对象等,接下来我们还需要为根实体Goods定义相应的仓库Repository接口。

2023-12-31 19:58:37 997

原创 DDD系列 - 第7讲 仓库Repository - JPA篇(一)

本篇文章继续以前一篇中的商品聚合为例,但是领域模型和仓库Repository实现均借助于Spring Data JPA。

2023-12-17 13:26:08 972

原创 DDD系列 - 第6讲 仓库Repository - Mybatis篇

书接上回,之前通过一个关于拆解、微服务、面向对象的故事,向大家介绍了如何从微服务、面向对象一步步演进到DDD的,整个演进过程如下图:其中在领域层,我们定义了富血模型的领域模型,包括聚合、聚合根、实体、值对象等。聚合在代码层面中的表现形式即是一个包Package,起到了边界的作用,聚合内的对象间高内聚,而聚合间低耦合。聚合中放着实体、值对象、仓库等,实体相较于值对象的一个典型区别就是实体存在唯一标识,并且可通过该唯一标识查询到该实体并对其进行相关操作,值对象不存在唯一标识且通常作为实体。

2023-12-10 18:10:47 1015

原创 DDD系列 - 第5讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(三)

通过这个故事,我想要传达的就是不要为了DDD而DDD,尤其对于初学者不要上来就去学习DDD中的各种迷惑性的概念和术语,本文通过拆解、微服务、面向对象的视角向读者介绍了一个系统是如何一步步走向DDD的,只有建立在理解的基础上,充分理解了各种模式的使用场景及动机,才能真正发挥各种模式的优势,放下DDD也许你才能真正体会到DDD。我们做的设计最终都是要指导落地的,搞那么多迷惑性的概念和拆解除了能让PPT上多一些谈资,似乎给指导落地并不能带来任何实质性的帮助。

2023-12-02 15:09:31 1047

原创 DDD系列 - 第4讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(二)

用户类中的属性,如ID、用户名等,我们可以直接使用编程语言的原生类型如Long、String进行建模,但其本质也是类的定义,同理我们也可以通过自定义类的形式来定义属性,例如用户身份证号属性,原本使用String类型表示,但随着后续业务的梳理,需要通过身份证号解析出用户所在的省市区、出生日期等,出于单一职责的考虑,我们可以创建一个身份证号类,该类持有身份证号属性,并提供获取省、市、区编码、获取出生日期等方法。

2023-12-02 15:06:48 1032

原创 DDD系列 - 第3讲 从架构师的角度看待DDD - 一个关于拆解、微服务、面向对象的故事(一)

拆解微服务架构面向对象分析与设计在这个故事里没有DDD,只有软件架构、软件设计与开发的探索实践、优化与思考。

2023-12-02 15:04:59 973

原创 OpenTelemetry系列 - 第4篇 OpenTelemetry K8S生态

部署OpenTelemetry Collector的daemonset实例,以收集节点(node)和运行在这些节点上的工作负载(workloads)相关的遥测数据(telemetry)。这个Collector实例将在容器级别上工作,不会创建新的pod,这对于保持Kubernetes集群的整洁和易于管理是完美的。此外,当您希望使用不同的收集/导出策略时,还可以使用sidecar模式,这正好适合此应用程序。部署Collector的deloyment实例,以收集与整个集群相关的遥测数据。

2023-12-02 10:43:07 1455

原创 OpenTelemetry系列 - 第3篇 OpenTelemetry Collector

是一个与供应商无关的代理,可以接收、处理和导出遥测数据。它支持接收多种格式的遥测数据(例如,OTLP、Jaeger、Prometheus,以及许多商业/专有工具)并将数据发送到一个或多个后端它还支持在导出遥测数据之前对其进行处理和过滤Receivers 接收器- 接收器可以是基于推或拉的,它是数据进入收集器的方式。接收器可以支持一个或多个数据源。Processors 处理器- 处理器在接收和导出之间的数据上运行。处理器是可选的,但有些是推荐的。Exporters 导出器。

2023-12-02 10:29:22 1545

原创 OpenTelemetry系列 - 第2篇 Java端接入OpenTelemetry

目录一、架构说明二、方式1 - 自动化2.1 opentelemetry-javaagent.jar(Java8+ )2.2 使用opentelemetry-javaagent.jar完成自动注入2.3 配置opentelemetry-javaagent.jar2.4 使用注解(@WithSpan, @SpanAttribute)2.5.1 代码集成@WithSpan, @SpanAttribute2.5.2 禁用已标注@WithSpan的方法的自动注入:2.5.3 不修改代码的情况下启用@WithSpan

2023-12-02 10:26:03 2676

原创 OpenTelemetry系列 - 第1篇 相关概念

随着云计算、微服务架构和越来越复杂的业务需求的兴起,对可观察性的需求从未如此之大。它是一个与跟踪中的span上下文一起存在的键值存储,使得在跟踪中创建的任何span都可以访问值。对于traces和metrics,OpenTelemetry采用全新的设计方法,指定一个新的API,并在多个语言sdk中提供该API的完整实现。尾部采样为您提供了基于从跟踪的不同部分派生的特定标准对跟踪进行采样的选项,这不是头部采样的选项。父级下面的span提供了请求期间发生的事情(或者组成请求的步骤)的更深入的上下文。

2023-12-02 10:23:39 950

原创 快速集成Skywalking 9(Windows系统、JavaAgent、Logback)

SkyWalking是一个开源的可观察性平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking提供了一种简单的方法来维护分布式系统的清晰视图,即使是跨云的。它是一个现代APM,专门为云原生的、基于容器的分布式系统而设计,支持对应用端TracinigMetricsLogging的采集和展示。SkyWalking逻辑上分为四个部分:探测器、平台后端、存储和UI,本次快速安装主要集中在平台后端、存储(默认内存数据库H2)、UI的快速启动。

2023-11-18 21:08:43 1612

转载 【转载】JAVA进阶之Agent

笼统地来讲,Java Agent 是一个统称,该功能是 Java 虚拟机提供的一整套后门,通过这套后门可以对虚拟机方方面面进行监控与分析,甚至干预虚拟机的运行。Java Agent 又叫做Java 探针,是在 JDK1.5 引入的一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能。

2023-11-17 09:48:52 69

原创 DDD系列 - 第2讲 从贫血模型、事务脚本到面向对象(富血模型)、DDD领域模型的跨越

CURD Boy的三宗罪:Mybatis、事务脚本、贫血模型,你占了哪几样?

2023-11-10 15:42:31 178

原创 mybatis中if test字符串比较

【代码】mybatis中if test字符串比较。

2023-11-09 15:48:44 417

原创 云原生相关概念

云原生依托于云计算环境,云原生的价值不在于搭建各种云环境,企业内再怎么搭建私有云、K8S集群、工具链等,也赶不上公有云厂商的一键运维。云计算的优势在于外部数据中心、按量付费、免运维、快速部署,而云原生的优势就是在云计算环境上、借助云计算环境上的资源、基础设施等快速运维应用。 为了避免云计算厂商技术锁定,推荐使用云原生业界通用的技术,如Docker、K8S、Istio等,如银行、政府等涉密项目,可以联合云计算厂商使用专有云环境。

2023-11-01 14:08:17 1968 3

转载 【转载】RAID0、RAID1、RAID5、RAID10特点是什么?所需的硬盘数量分别为多少?

RAID级别最少硬盘数容量公式优点缺点RAID02N x S高速无冗余RAID12S高可靠低空间RAID53平衡写性能低RAID104高速高可靠空间利用低其中,N表示硬盘数量,S表示最小容量的硬盘。

2023-10-30 16:24:46 145

转载 【转载】一文了解公有云、私有云、混合云、边缘云、专有云、分布式云

很多客户担心公有云的安全问题,敏感行业、大型客户可以考虑,但一般的中小型客户,不管是数据泄露的风险,还是停止服务的风险,公有云都远远小于自己架设机房。私有云是为某个特定用户/机构建立的,只能实现小范围内的资源优化,因此并不完全符合云的本质–社会分工,所以 Openstack 等开源软件带来的私有云繁荣可能只是暂时的,会有越来越多的客户发现廉价的硬件和免费的软件并不是打造私有云的充分条件,精细的管理、7×24运维所耗去的总成本(TOC)不比公有云低,而且随着公有云厂商运营能力的进步,这种趋势会越来越明显。

2023-10-16 10:06:29 129

原创 Alpha 测试与 Beta 测试

验收测试是以用户为主的测试,软件开发和QA人员也应该参加,测试一般在用户所在地进行,由用户验证软件产品是否满足了所有的需求的一系列的验收测试工作。验收测试的目的是为了以发现“未实现的需求”为目的,以评估“适合使用”为目标,该类测试的不是以发现缺陷为主要目的。进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。开发者通常不在测试现场,这是在开发者无法控制的环境下进行的测试。的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。

2023-09-07 09:56:32 557

转载 【转载】一文看懂开源许可证丨开源知识科普

在开源诞生之初,自由软件是当时的主流提法,回顾开源的发展史,从自由软件到开源运动实现了非常大的跨越,前者更多的是一种精神的倡导,而后者着眼于软件的协同开放,因此会有非常严谨的开源许可证的规则和限制。例如,在一个使用 Apache 许可证的开源项目中,其下游 Fork 的企业不仅没有回馈上游开源项目,反而将衍生的代码更改为不受 OSI 认可的 SSPL Licence,另行宣布成为一个新的开源项目,误导了很多不明真相的人,以为又涌现出一个新的开源项目。,对开源感兴趣的同学可以点击原文链接下载。

2023-08-16 09:09:25 516

原创 【D3S】REST接口文档自动生成 - 集成smart-doc并同步配置到Torna

本文结合笔者开源项目d3s介绍了如何通过maven插件集成smart-doc,并同步接口文档到Torna。

2023-08-09 19:18:25 407

原创 每次执行@Test方法前都执行一次DB初始化(SpringBoot Test + JUnit5环境)

本文介绍了两种在执行Spring Boot单元测试方法(JUnit5)前通过SQL脚本对数据库进行始化的方式(@Sql、ResourceDatabasePopulator)

2023-08-08 17:16:35 640

原创 【D3S】数据权限 - 基于Mybatis的数据权限拦截器实现

目录一、背景二、动机三、实现思路3.1 权限类型、操作类型3.2 统一用户及数据权限集合模型3.3 定义数据权限拦截注解3.4 提取配置属性3.5 数据权限拦截器实现四、集成方式五、关于D3S一、背景最近一直在做RBAC相关的架构设计与实现,传统的RBAC的权限控制只是控制到REST接口(url)、具体方法(权限码)等,而通常实际业务场景还需要对数据权限进行控制,例如:用户仅允许查询自己的用户信息,不允许查询其他人的用户信息用户仅被允许查询 同部门 或 同部门及子部门 的用户信息用户仅允许查询指

2023-07-02 18:20:01 1319

原创 记一次Mybatis mapper.xml中sql定义重构(resultMap.extends、columnPrefix、sql自定义参数、跨namespace复用)

本文记录了一次实际开发时的Mybatis mapper.xml中的sql定义重构,借助了resultMap.extends、association.resultMap、association.columnPrefix、sql自定义参数、跨mapper.xml(namespace)级别的复用等机制。

2023-06-16 10:33:04 424

原创 后端SpringBoot应用向云原生K8S平台迁移

本文主要介绍了在云原生时代K8S平台下如何更便捷的开发Spring应用,首先着重论述了3种不同的方式:Spring Cloud Alibaba、Spring Cloud K8S、SpringBoot+K8S,并给出了笔者认为的最佳实践,之后又简要论述了ServiceMesh方案的架构选型,最后在文末给出了一些关于云原生时代下的Devops平台的使用建议。

2023-05-24 16:21:03 1824

原创 OAuth2.0 & OIDC1.0及落地方案

本文介绍了OAuth2.0 & OIDC1.0的相关术语、授权模式及交互流程等,并站在不同角度论述了OAuth2.0 & OIDC1.0作为建设企业用户认证中心的落地思路,给出了不同客户端类型关于授权模式的选型建议,最后结合Spring Security OAuth2生态给了典型架构(前后端分离+微服务+应用网关)的集成示例。

2023-05-20 21:02:15 2205

原创 Mybatis-Plus Wrapper应该出现在Servcie类中吗?

中的PageHelper类、PageInfo类,PageHelper插件也是技术绑定的(强绑定到Mybatis),既然我们们之前强调了Servcie层与Dao层间的界限,如此在Servcie层使用PageHelper也是越界了,例如后续如果切换Spring JPA,那PageHelper在Servcie层的相关的引用也都需要调整。经过优化过后,Service层代码确实清爽了许多,移除了Mybatis-Plus的Wrapper构造逻辑,使得Service层可以更专注于业务逻辑的实现。

2023-05-08 14:09:49 647

原创 Dockerfile构建镜像读取环境变量问题

在CNAP K8S Deployment运行此Java镜像时,发现类似spring.output.ansi.enabled环境变量无法注入,即启动Java镜像后在Java应用无法读取到对应的环境变量配置。并非所有的基础镜像均支持"bash"(Bourne-Again Shell),但几乎全部镜像均支持"sh"(Bourne Shell)。经测试发现shell环境(即sh -c环境)不支持小写点分环境变量名称的格式,即xxx.yyy的格式。因此,使用上述方法时,请确保基础镜像中的"bash"可用。

2023-05-08 13:10:08 1569

原创 升级H2数据库2.x版本遇见的问题

本文主要记录了升级H2内存数据库版本(2.x)过程中遇到的问题及解决方案。

2023-04-17 13:03:32 1240 2

原创 SpringMvc接收列表、数组参数(@RequestParam、@PathVariable)

SpringMvc接收List、Array参数(适用于@RequestParam、@PathVariable)

2023-04-08 08:43:25 1954 2

原创 Gitee搭建个人博客(Beautiful Jekyll)

由于之前一直使用的Jekyll,便一直沿用了,虽然Jekyll本地开发运行时需要安装Ruby开发环境,但即使不安装也可以通过直接发布到Github或Gitee Pages进行查看,还是挺方便的。Jekyll、Hugo、Hexo 也可以运行在 Gitee Pages 上,也就是说,你可以使用 Gitee 的服务来搭建你的仓库页面、博客或者网站,而且是完全免费的。至此我的博客算搭建完成了,达到了自己满意的效果,感兴趣的小伙伴可自行搞起来,也希望我的折腾过程对大家有所帮助。要是喜欢我的博客可直接克隆代码库。

2023-03-18 17:42:27 2085 2

原创 JDK11下J2Cache序列化器反射异常及--illegal-access解决方案

本文基于线上JDK11使用J2Cache序列化器出现的反射异常,介绍了Java9后--illegal-access和--add-opens选项的相关使用说明,并给出了基于--illegal-access和--add-opens的避免非法反射访问异常的解决方案,最后又给出了自定义J2Cache序列化器的解决方案。

2023-03-16 14:29:31 1760

原创 LDAP入门

本文主要介绍了LDAP相关概念,讲解了使用OpenDJ在Windows系统快速搭建Ldap服务端及其管理工具control-panel、Apache Directory Studio,旨在帮助读者快速入门LDAP。

2023-03-05 16:22:54 2814

原创 Istio Sidecar启动顺序 - 导致的应用容器网络不通

本文主要记录了在Istio环境使用Spring Cloud K8S读取ConfigMap导致的网络异常及调整Istio Sidecar启动顺序的解决方案。

2023-03-04 11:02:05 789

原创 DDD系列 - 第1讲 DDD相关概念入门

本文主要介绍了DDD的相关概念,帮助读者对DDD有一个入门的印象,后续笔者会陆续发布更多关于DDD落地的文章。

2023-03-03 16:50:13 1321

pagenote.crx

pagenote - 一款chrome·网页标记插件, 在尝试了 (1)Scribe Toolbar(无法成功注册-google验证码限制), (2)Markup、LINER(免费版单网页标记数<=8个、颜色1-2种有限制), 最后发现了pagenote, (1)颜色有4种无限制, (2)单网页标记数可达50个 (3)可以无需登录离线使用

2021-12-03

kubekey-v1.2.0-linux-amd64.tar.gz

Kubesphere官方安装工具KubeKey v1.2.0版本, 个别企业环境无法访问github,可通过此链接下载

2021-11-30

Oracle VirtualBox User Manual - 6.1.28.pdf

VirtualBox 6.1.28用户手册 - 英文版

2021-11-22

headingsMap-3.10.1.zip

chrome浏览器插件

2021-11-08

android存储

本文介绍Android中的5种数据存储方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实 现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据  

2013-05-16

空空如也

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

TA关注的人

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