DDD是什么?
DDD是什么?
DDD 是领域驱动设计(Domain-Driven Design)的缩写,这是一种主要软件开发方法,由 Eric Evans 在他的书《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling Complexity in the Heart of Software)中首次提出。
DDD 主要关注于创建与业务领域紧密相关的软件模型,以确保软件能够准确地解决实际问题。
DDD 的核心理念包括以下几个方面:
领域模型(Domain Model):
领域模型是对特定业务领域知识的精确表述,它包括业务中的实体(Entities)、值对象(Value Objects)、服务(Services)、聚合(Aggregates)、聚合根(Aggregate Roots)等概念。领域模型是DDD的核心,它反映了业务专家的语言和决策。
统一语言(Ubiquitous Language):
统一语言是开发团队与业务专家共同使用的语言,它在整个项目中保持一致。统一语言确保所有人都对业务概念有着相同的理解,减少沟通成本和误解。
限界上下文(B ...
解决no main manifest attribute, in app.jar(Docker)
解决no main manifest attribute, in app.jar
环境:SpringBoot2.6.13+java8
重点:pom.xml文件是IDEA自动配的
我在将一个SpringBoot程序打包成镜像部署到Docker容器上,然后执行run命令启动容器:
1docker run --rm springboot-test:1.0
springboot-test:1.0是我的镜像
出现报错:
1no main manifest attribute, in app.jar
我排查出来问题就在pom.xml文件中我画红线的这一句
改为下面这张图这样就好了
完整的pom.xml文件如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<?xml version="1.0" encoding="UTF-8&q ...
自定义构建Docker镜像
自定义构建Docker镜像
实际上所有常用的应用程序都有对应的镜像,我们只需要下载这些镜像然后就可以使用了,而不需要自己去手动安装,顶多需要进行一些特别的配置。但是我们程序员在遇到小众项目的时候,可能没有提供镜像,这时就要我们手动去安装,接着我们就来看看如何构建我们自己的Docker镜像。构建镜像有两种方式,一种是使用commit命令来完成,还有一种是使用Dockerfile来完成,我们先来看第一种。
这里我们就做一个简单的例子,比如我们现在想要在Ubuntu的base镜像中安装Java环境,并将其打包为新的镜像(这个新的镜像就是一个包含Java8环境的Ubuntu系统镜像)
第一种:commit命令(不推荐)
拉取Ubuntu镜像
1docker pull ubuntu
接着启动Ubuntu:
1docker run -it ubuntu
更新apt
1apt update
apt安装java环境
1apt install openjdk-8-jdk
安装完成后查看一下
1java -version
退出Ubuntu到Docker环境下
1exit
查看所有容器
1dock ...
Docker安装与镜像下载和删除(优雅)
Docker安装与镜像下载和删除(优雅)
环境:Ubuntu 22.04.3 LTS
Docker安装
首先安装一些工具:
1sudo apt-get install ca-certificates curl gnupg lsb-release
接着安装官方的GPG key:
123sudo mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
最后将Docker的库添加到apt资源列表中:
1echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources. ...
JWT详解
JWT详解
JWT官网
什么是JWT
JWT的全称是Json Web Token。是基于RFC 7519开放标准的,它定义了一种紧凑且独立的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。此信息可以用作验证和相互信任,因为它是经过数字签名的。JWT 可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。
JWT由三部分组成:Header(标头),Payload(有效载荷),Signature(签名),中间用点分开,即
1Header.Payload.signature
我们可以使用jwt.io.Debugger去解码,验证和生成JWT令牌.
Header(标头)
Header通常由两部分组成:令牌的类型(JWT)和所使用的签名算法(如HMAC SHA256或RSA)。
1234{ "alg": "HS256", "typ": "JWT"}
然后,这个JSON被Base64Url编码,形成JWT的第一部分。
Payload(有效载荷 ...
RabbitMQ报错:unable to perform an operation on node 'rabbit@ubuntuserver'
RabbitMQ报错:unable to perform an operation on node ‘rabbit@ubuntuserver’
环境:VMware+Ubuntu
出问题的前置步骤:
安装Erlang
1sudo apt install erlang
安装RabbitMQ
1sudo apt install rabbitmq-server
开启RabbitMQ管理面板
1sudo rabbitmq-plugins enable rabbitmq_management
在查看RabbitMQ状态或为RabbitMQ添加用户时,即:
1sudo rabbitmqctl status
或
1sudo rabbitmqctl add_user 用户名 密码
出现Error:unable to perform an operation on node ‘rabbit@ubuntuserver’
解决方法:
首先,切换到root权限
为root设置密码
1sudo passwd root
设置密码
2. 切换到root权限
1su root
然后输入密码便 ...