DDD架构
1.前言: 现今的软件开发完成基本的功能是比较简单的,但在开发的过程中如何保证代码的可维护和可扩展是比较复杂的一个问题。不管是从技术角度还是业务角度,如何解耦是一个比较值得深入探索的问题。在进入公司的一刻起,我的导师就告诉我实现功能固然简单,但如何保证代码的可维护性和系统的独立可扩展才是最重要的,而学习了DDD架构,本文记录一些DDD架构的理解。
2.概述: DDD架构不是一个框架,而是一种架构思维,在开发系统的过程中,如何降低系统的复杂度是一个比较大的挑战,尤其是应对一些复杂、业务繁多的大型系统,系统架构的好坏直接影响该系统是否可以不断拓展,在更新迭代的过程中防止烂尾,减少重构升级的复杂度。按我理解来说其实就是基于传统的三层架构,划分更细,拆分更关注自己的领域,从而在后续升级系统或拆分服务时减少复杂度。
3.特点:1.领域划分
2.统一语言
3.方便拆分
4.结构:用户接口层(Interfaces):主要用于存放用户接口层与前端交互、展示数据相关代码,处理用户Restful请求。包含:assembler、dto 和 facade 三类。 ·Assembler:实现 ...
常用sql语句总结
常用sql语句总结发表于2023-10-24|更新于2023-10-24
|阅读量:
DDL数据库定义语言创建数据库create database db1
如果不存在就创建create database if not exist db1
查看所有数据库
show databases
查看某个数据库的定义信息show create database db1
修改数据库字符alter create database db1 character set utf-8
删除数据库drop database b1
查看表结构desc b1
展示创建表的sql语句show create table b1
修改表名alter table b1 rname to b2
添加列alter table b1 add 列名 数据类型
删除列alter table b1 drop 列名
删除表drop table b1
如果纯在就删除表drop table if exist b1
DML数据操作语言插入所有列名数据insert into b1(列名1,列名2,···列名n)values(值1,值2,···值n) ...
链接
1.鸡翅clubhttps://www.yuque.com/jingdianjichi/kwag7a
2.简历账号登录_全民简历用户登录【全民简历网】 (qmjianli.com)
3.vpn星链云 (starlinkcloud.life)
4.健管hygeia-test.zhonganinfo.com
5.新序易https://www.xinxuyi.com.cn/copper_manage/
6.AIhttps://chatgpt.com/
7.脚手架https://www.zhihu.com/question/365634958/answer/2797962815?utm_id=0
8.hexo博客butterflyButterfly 安裝文檔(二) 主題頁面 | Butterfly
9.gradle无效的发源版本gradle 无效的源发行版: 11 - 正怒月神 - 博客园 (cnblogs.com)
10.加密解密 md5在线解密破解,md5解密加密 (cmd5.com)
宝塔面板
1.概念一种简单好用的免费服务器运维面板,可以在新手入门时方便快捷的通过可视化面板来访问服务器,管理服务器资源。
2.安装1.购买云服务器,需要勾选公网ip。
2.下载ssh终端连接工具,如xshell、mobaxterm,也可使用服务器自带连接工具
3.访问宝塔官网,宝塔官网地址:[https://www.bt.cn/new/index.html]
4.选择linux面板
5.下载方式:在线安装、命令行脚本安装皆可
6.开放服务器宝塔端口,配置对应服务器安全组。
7.保存账号密码与url
8.登录可选择默认初始软件环境,如jdk、nginx、mysql等,也可自己任意下载
vue入门
vue入门发表于2023-07-21|更新于2023-07-24
|阅读量:
1.vue基础 概念:Vue是一种流行的前端JavaScript框架,用于构建交互式的用户界面。它是一种开源框架,由尤雨溪(Evan You)开发并维护。Vue的目标是通过简单的API和响应式数据绑定来帮助开发者构建现代化的单页面应用程序
vue官方文档:https://cn.vuejs.org
demo1:入门案例——导入依赖
导入开发版本的vue.js
123456789101112131415<body> <div id="app"> {{message}} </div> <!-- 开发环境版本,包含了有帮助的命令行警告 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script> var app=new ...
docker容器
docker容器发表于2023-07-21|更新于2023-07-21
|阅读量:
1.初始docker? ●什么是docker?
●docker和虚拟机的区别
●docker架构
●安装docker
1.1什么是docker?docker的基本概念 镜像:docker镜像是docker的基础,是一种轻量级、可移植的软件包,包含了将应用程序运行所需要的文件、库、环境变量、配置等。
1$ docker pull nginx #下载nginx镜像
容器:docker容器是docker镜像的一个实例,运行应用程序的一个独立的运行环境。
12$ docker run --name my-nginx -d nginx #在后台运行一个nginx容器$ docker run nginx #运行停止的容器
仓库:用来存储、发布、管理docker的平台,和代码托管平台类似。Docker hub是最常用的公共仓库,在其中可以找到各种各样的镜像。
1$ docker pull ubuntu #下载Ubuntu镜像
dockerfile:是用于构建Docker镜像的脚本文件,可以用来 ...
gatewawy网关
gatewawy网关发表于2023-07-13|更新于2023-07-22
|阅读量:
Gateway网关组件作用:解耦(解除客户端与微服务的耦合),方便微服务访问地址的维护,服务路由、负载均衡;身份认证和权限校验;请求限流;
网关也会被当成一个微服务注册在nacos上,网关会作为一个与客户端与各种服务的中间人,为客户端提供中转服务。在中转服务时可以做一些与本身业务功能无关的逻辑,比如认证、鉴权、监控、路由转发等等。
相同作用的一些技术对比:
●Nginx+lua脚本:使用nginx的反向代理和负载均衡可以实现对api服务器的负载均衡和高可用;lua脚本语言可以编写一些简单逻辑,具有原子性,完成某些操作。
●Kong : 基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。
●Zuul : Netflix开源的网关,功能丰富,使用JAVA开发,易于二次开发问题:缺乏管控,无法动态配置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如Ngin ...
erueka+nacos注册管理中心
erueka+nacos注册管理中心erueka和nacos的出现起源于微服务认识微服务:服务架构从单体架构变为微服务架构单体架构:业务功能全部集中在一个项目中开发优点:结构简单,易于维护;
部署容易且成本低
缺点:耦合度高,不易拓展
微服务架构:优点:耦合度低;
升级和服务拓展容易;
缺点:服务调用关系复杂,部署难度高
架构特征:
单一职责:每一个服务对应唯一的业务功能
自治:可分团队开发 各个团队开发不同的业务 不同的数据库 并独立部署交付自己的服务
面向服务:服务提供同一接口,语言和技术可以不相同
隔离性强:暂未理解
这里一个问题引出注册中心:服务与服务之间如何调用,调用关系如何管理1直接调用:也可以,但实际业务不可能这样实现,耦合度太高,不容易拓展
eg:修改order-service中的根据id查询订单业务,要求在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。
因此,我们需要在order-service中 向user-service发起一个http的请求,调用http://localhost:8081/user/{userId}这个接口。
...
feign
在一个 Spring Boot 多模块 Gradle 项目中,使用 Feign 进行远程调用是一个很好的选择。Feign 是一个声明式的 HTTP 客户端,它使得 HTTP API 的调用像调用本地方法一样简单。以下是详细步骤:
添加 Feign 依赖
首先,在你的 build.gradle 文件中添加 Feign 的依赖。在你的 service-api 模块中:
123dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'}
在 service-impl 模块中也添加相同的依赖:
123dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'}
启用 Feign 客户端
在你的主应用类中启用 Feign 客户端。在你的 se ...
用户中心对接
使用Feign客户端与远程API进行通信的过程包括以下几个步骤:
1. 引入Feign依赖首先,需要在你的项目中引入Feign的依赖。在pom.xml中添加以下依赖:
1234xml复制代码<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
2. 启用Feign客户端在你的Spring Boot应用的启动类上添加@EnableFeignClients注解来启用Feign客户端:
1234567891011java复制代码import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework ...