微服务与Nacos概述

微服务概述

软件架构的演变:单体架构、垂直应用架构、流式计算架构 SOA、微服务架构和服务网格。

微服务是一种软件开发架构,它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展,并通过轻量级的通信机制进行交互。

微服务架构的目标是提高系统的可伸缩性、灵活性和可维护性,同时降低开发和部署的复杂性。每个微服务都专注于一个特定的业务功能,并可以使用不同的编程语言和技术栈进行开发。这种分布式架构可以帮助团队更快地开发和部署新功能,同时减少对整个系统的影响。

Spring Cloud 是一个用于构建分布式系统的开发工具集合,它基于 Spring 框架,提供了一系列的解决方案和工具,用于简化分布式系统的开发和部署。Spring Cloud 提供了诸如服务注册与发现、负载均衡、断路器、配置管理等功能,使得开发人员可以更轻松地构建和管理分布式系统。

    提供的组件有:分布式及版本化配置管理;服务注册与发现;服务路由、服务调用、负载均衡;断路器;全局锁;选举和集群状态管理;分布式消息。

Spring Cloud 实际上是一个整合各大公司开源技术的微服务开发规范,通过 SpringBoot 框架进行封装后屏蔽复杂的配置,给开发者提供开箱即用的开发体验,而 SpringCloud Neflix、SpringCloud alibaba才是 SpringCloud 规范的实现。

Spring Cloud Alibaba 是在 Spring Cloud 基础上集成了阿里巴巴的开源项目,提供了更多的分布式系统解决方案。它包含了诸如服务注册与发现、负载均衡、断路器、配置管理等功能,同时还提供了阿里巴巴的分布式事务解决方案、消息队列等特性。Spring Cloud Alibaba 可以与 Spring Cloud 无缝集成,为开发人员提供更多的选择和灵活性,帮助构建高可靠、高性能的分布式系统。

Spring Cloud Alibaba 的组件包括:

  • Nacos:服务注册和发现中心,提供了服务的注册、发现、配置和管理等功能。

  • Sentinel:流量控制和熔断降级组件,用于保护服务的稳定性和可靠性。

  • RocketMQ:分布式消息队列,用于实现异步通信和解耦系统之间的依赖关系。

  • Alibaba Cloud OSS:对象存储服务,用于存储和管理大量的非结构化数据。

  • Alibaba Cloud ACM:配置管理中心,用于集中管理应用程序的配置信息。

  • Alibaba Cloud SMS:短信服务,用于实现短信发送和接收功能。

  • Alibaba Cloud Dubbo:RPC 框架,用于实现服务之间的远程调用。

在这里插入图片描述

DevOps 是一种软件开发和运维的方法论,旨在通过自动化和协作来加速软件交付和提高系统的稳定性。DevOps 将开发团队和运维团队紧密合作,通过自动化工具和流程来实现持续集成、持续交付和持续部署。它强调文化的变革,包括团队合作、知识共享和持续改进。

DevOps 的目标是通过减少手动工作、减少错误和提高交付速度来提高软件交付的质量和效率。

微服务和 DevOps 之间的关系是相辅相成的。微服务架构提供了可独立部署的服务单元,而 DevOps提供了自动化和协作的能力,使得团队能够高效地开发、部署和维护这些微服务。它们共同促进了软件交付的质量、效率和可靠性。

领域驱动设计 DDD 是一种软件开发方法论,旨在通过将业务领域的专业知识融入到软件设计中来解决复杂业务问题。DDD 强调将软件系统划分为不同的领域,并将业务逻辑和领域模型作为核心驱动因素。它鼓励开发团队与领域专家紧密合作,共同理解业务需求,并将这些需求转化为领域模型和领域驱动设计的实现。DDD 提供了一些概念和模式,例如聚合根、实体、值对象、领域事件等,以帮助开发人员更好地理解和设计复杂的业务逻辑。

DDD 的目标是提高软件系统的可维护性、可扩展性和灵活性,以满足不断变化的业务需求。

RestTemplate

RestTemplate 是一个用于进行 HTTP 请求的 Java 类库,通常用于与 RESTful API 进行交互。它提供了一组简单而强大的方法,使得发送 HTTP 请求、处理响应和解析数据变得容易。使用 RestTemplate可以执行各种 HTTP 操作,如 GET、POST、PUT、DELETE 等。

1、创建 RestTemplate 实例:

RestTemplate restTemplate = new RestTemplate();

2、发送 GET 请求并获取响应:

ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

String obj=restTemplate.getForObject(url,String.class);

3、发送 POST 请求并获取响应:

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON); 设置相应内容类型

HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);

ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);

4、发送 PUT 请求并获取响应:

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);

restTemplate.put(url, requestEntity);

5、发送 DELETE 请求并获取响应:

restTemplate.delete(url);

通过 RestTemplate 可以方便地设置请求头、请求参数、请求体等,并处理响应结果。也可以使用RestTemplate 的其他方法来处理不同类型的请求和响应。但是需要注意的是,RestTemplate 在 Spring5.x 版本中已被宣布为过时,并计划在将来的版本中移除。建议在新的项目中使用 Spring WebClient或其他替代方案

git 并行版本控制

Git 是世界上最先进的分布式版本控制系统,克隆一个项目的速度非常快

每个开发都可以从 master 上克隆一个本地版本库,就算没有网络,也可以提交代码到本地仓库、查看 log、创建项目分支等。每个版本库都可以创建无限个分支,分支是个完整的目录,且这个目录拥有完整的实际文件

远程中央库 gitee.com

Nacos 服务治理

Nacos 即 Naming and Configuration Service 是一个用于动态服务发现、配置管理和服务元数据的开源平台。提供了统一的服务注册和发现、配置管理和元数据管理的功能,可以帮助开发人员更轻松地构建云原生应用和微服务架构。

Nacos 的主要功能包括:

  • 服务注册和发现:Nacos 允许服务实例向注册中心注册自己的信息,并且其他服务可以通过查询注册中心来发现可用的服务实例。

  • 配置管理:Nacos 提供了一个中心化的配置管理平台,可以动态地管理应用程序的配置信息。开发人员可以在运行时更新配置,而不需要重启应用程序。

  • 服务元数据管理:Nacos 可以帮助开发人员管理服务的元数据,包括版本号、权重、健康状态等。这些元数据可以用于服务路由、负载均衡等场景。

  • 动态 DNS 服务:Nacos 支持将服务名称解析为具体的网络地址,从而实现动态 DNS 服务的功能

Nacos 工作原理

  • 服务注册:服务提供者在启动时向 Nacos 注册中心注册自己的服务信息,包括服务名称、IP 地址和端口号等。注册完成后,Nacos 将服务信息保存在自己的注册表中。

  • 服务发现:服务消费者在需要调用某个服务时,向 Nacos 注册中心发送服务名称的请求。Nacos根据服务名称从注册表中查找对应的服务提供者信息,并将其返回给服务消费者。

  • 服务健康检查:Nacos 会定期向服务提供者发送心跳检查请求,以确保服务的可用性。如果某个服务提供者长时间未响应心跳检查,Nacos 会将其标记为不可用,并从注册表中移除。

  • 动态配置管理:Nacos 提供了配置中心的功能,可以将应用程序的配置信息存储在 Nacos 中,并实现动态的配置更新。应用程序可以通过订阅配置的方式,实时获取最新的配置信息。

  • 负载均衡:Nacos 可以根据注册表中的服务提供者信息,实现负载均衡的功能。当服务消费者需要调用某个服务时,Nacos 会根据负载均衡策略选择一个可用的服务提供者。

在这里插入图片描述

Nacos 和 Eureka

Nacos 和 Eureka 都是服务发现和注册中心,用于管理和协调分布式系统中的服务实例。

主要区别:

  • 开发和维护:Nacos 是阿里巴巴集团开发和维护的开源项目,而 Eureka 是 Netflix 开发和维护的开源项目。

  • 功能和生态系统:Nacos 提供了服务注册、发现、配置管理和动态 DNS 等功能,同时还提供了更丰富的生态系统,如分布式配置、服务熔断、流量管理等。Eureka 主要关注服务注册和发现的功能。

  • 一致性协议:Nacos 使用基于 Raft 协议的一致性算法来保证数据的一致性和高可用性。而 Eureka使用了 CAP 原理中的 AP 可用性和分区容错性模型,牺牲了一致性。

  • 社区支持和发展:Nacos 在中国社区有着广泛的支持和活跃的发展,有大量的用户和贡献者。而Eureka 在国际社区有更广泛的应用和支持。

  • 生态整合:Nacos 可以与 Spring Cloud、Dubbo 等广泛使用的开发框架进行无缝整合。Eureka 也与 Spring Cloud 紧密结合,并且在 Netflix 的微服务套件中有更多的组件和工具可用。

总体而言,Nacos 提供了更多的功能和生态系统,而 Eureka 则更专注于服务注册和发现的功能。选择使用哪个取决于项目的需求和团队的偏好。

数据库设计

SPU 标准产品单位是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。如 iPhone X 可以确定一个产品即为一个 SPU,SPU 是由品牌+型号+关键属性构成的SKU 库存量单位。如 iPhone X 64G 银色 则是一个 SKU

针对电商而言:

1、SKU 是指一款商品,每款都有出现一个 SKU,便于电商品牌识别商品。

2、一款商品多色,则是有多个 SKU,例一件衣服,有红色、白色、蓝色,则 SKU 编码也不相同,如相同则会出现混淆,发错货。

分类表设计如下

CREATE TABLE `category` (`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '分类 ID', `name` varchar(50) DEFAULT NULL COMMENT '分类名称', `sort` int(11) DEFAULT NULL COMMENT '排序', `parent_id` int(20) DEFAULT NULL COMMENT '上级 ID', PRIMARY KEY (`id`),KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11182 DEFAULT 
CHARSET=utf8 COMMENT='商品类目';

分类选择完成后,需要加载品牌,品牌加载并非一次性加载完成,而是根据选择的分类进行加载。

分类品牌关系表

DROP TABLE IF EXISTS `category_brand`;
CREATE TABLE `category_brand` (`category_id` int(11) NOT NULL COMMENT '分类 ID',`brand_id` int(11) NOT NULL COMMENT '品牌 ID',    PRIMARY KEY (`brand_id`,`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

品牌表

CREATE TABLE `brand` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '品牌 id', `name` varchar(100) NOT NULL COMMENT '品牌名称', `image` varchar(1000) DEFAULT '' COMMENT '品牌图片地址', `initial` varchar(1) DEFAULT '' COMMENT '品牌的首字母', `sort` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULTCHARSET=utf8 COMMENT='品牌表';

当选择分类后,会加载分类对应的属性。

分类属性表

DROP TABLE IF EXISTS `category_attr`;
CREATE TABLE `category_attr` (`category_id` int(11) NOT NULL,`attr_id` int(11) NOT NULL COMMENT '属性分类表',PRIMARY KEY (`category_id`,`attr_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

属性表

CREATE TABLE `sku_attribute` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) DEFAULT NULL COMMENT '属性名称', `options` varchar(2000) DEFAULT NULL COMMENT '属性选项', `sort` int(11) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
CREATE TABLE `spu` ( `id` varchar(60) NOT NULL COMMENT '主键', `name` varchar(100) DEFAULT NULL COMMENT 'SPU 名', `intro` varchar(200) DEFAULT NULL COMMENT '简介', `brand_id` int(11) DEFAULT NULL COMMENT '品牌 ID', `category_one_id` int(20) DEFAULT NULL COMMENT '一级分类', `category_two_id` int(10) DEFAULT NULL COMMENT '二级分类', `category_three_id` int(10) DEFAULT NULL COMMENT '三级分类', `images`varchar(1000) DEFAULT NULL COMMENT '图片列表', `after_sales_service` varchar(50) DEFAULT NULL COMMENT '售后服务', `content` longtext COMMENT '介绍', `attribute_list` varchar(3000) DEFAULT NULL COMMENT '规格列表', `is_marketable` int(1) DEFAULT '0' COMMENT '是否上架,0 已下架,1 已上架', `is_delete` int(1) DEFAULT '0' COMMENT '是否删除,0:未删除,1:已删除', `status` int(1) DEFAULT '0' COMMENT '审核状态,0:未审核,1:已审核,2:审核不通过', PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `sku` ( `id` varchar(60) NOT NULL COMMENT '商品 id', `name` varchar(200) NOT NULL COMMENT 'SKU 名称', `price` int(20) NOT NULL DEFAULT '1' COMMENT '价格(分)', `num` int(10) DEFAULT '100' COMMENT '库存数量', `image` varchar(200) DEFAULT NULL COMMENT '商品图片', `images` varchar(2000) DEFAULT NULL COMMENT '商品图片列表',`create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `spu_id` varchar(60) DEFAULT NULL COMMENT 'SPUID', `category_id` int(10) DEFAULT NULL COMMENT '类目 ID', `category_name` varchar(200) DEFAULT NULL COMMENT '类目名称', `brand_id` int(11) DEFAULT NULL COMMENT '品牌 id', `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称', `sku_attribute` varchar(200) DEFAULT NULL COMMENT '规格', `status` int(1) DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除', PRIMARY KEY (`id`), KEY `cid` (`category_id`), KEY `status` (`status`), KEY `updated` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

订单详表:

CREATE TABLE `order_master` ( `order_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '订单 ID', `order_sn` bigint(20) unsigned NOT NULL COMMENT '订单编号 yyyymmddnnnnnnnn', `customer_id` int unsigned NOT NULL COMMENT '下单人 ID', `shipping_user` varchar(10) NOT NULL COMMENT '收货人姓名', `province` smallint NOT NULL COMMENT '收货人所在省', `city` smallint NOT NULL COMMENT '收货人所在市', `district` smallint NOT NULL COMMENT '收货人所在区', `address` varchar(100) NOT NULL COMMENT '收货人详细地址', `payment_method` tinyint NOT NULL COMMENT '支付方式:1 现金,2 余额,3 网银,4 支付宝,5 微信', `order_money` decimal(8,2) NOT NULL COMMENT '订单金额', `district_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '优惠金额', `shipping_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '运费金额', `payment_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '支付金额', `shipping_comp_name` varchar(10) DEFAULT NULL COMMENT '快递公司名称', `shipping_sn` varchar(50) DEFAULT NULL COMMENT '快递单号', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间',`shipping_time` datetime DEFAULT NULL COMMENT '发货时间', `pay_time` datetime DEFAULT NULL COMMENT '支付时间',`receive_time` datetime DEFAULT NULL COMMENT '收货时间', `order_status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态', `order_point` int unsigned NOT NULL DEFAULT '0' COMMENT '订单积分', `invoice_title` varchar(100) DEFAULT NULL COMMENT '发票抬头', `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP COMMENT '最后修改时间',PRIMARY KEY (`order_id`),UNIQUE KEY `ux_ordersn` (`order_sn`)
) ENGINE=InnoDB COMMENT='订单主表';
CREATE TABLE `order_detail` ( `order_detail_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键 ID,订单详情表 ID', `order_id` int unsigned NOT NULL COMMENT '订单表 ID', `product_id` int unsigned NOT NULL COMMENT '订单商品 ID', `product_name` varchar(50) NOT NULL COMMENT '商品名称', `product_cnt` int NOT NULL DEFAULT '1' COMMENT '购买商品数量', `product_price` decimal(8,2) NOT NULL COMMENT '购买商品单价', `average_cost` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '平均成本价格', `weight` float DEFAULT NULL COMMENT '商品重量', `fee_money` decimal(8,2) NOT NULL DEFAULT '0.00' COMMENT '优惠分摊金额', `w_id` int unsigned NOT NULL COMMENT '仓库 ID', `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP COMMENT '最后修改时间',PRIMARY KEY (`order_detail_id`)
) ENGINE=InnoDB COMMENT='订单详情表';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/82707.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事务,不只ACID | 京东物流技术团队

1. 什么是事务&#xff1f; 应用在运行时可能会发生数据库、硬件的故障&#xff0c;应用与数据库的网络连接断开或多个客户端端并发修改数据导致预期之外的数据覆盖问题&#xff0c;为了提高应用的可靠性和数据的一致性&#xff0c;事务应运而生。 从概念上讲&#xff0c;事务…

开发中常用的数据库日志都长啥样呢?

目录 常见日志级别 数据库日志 Undo log 逻辑日志 redolog binlog 慢查询日志 AOF 文本文件 RDB 二进制文件 常见日志级别 DEBUG&#xff1a;用于详细记录应用程序的运行过程&#xff0c;如变量值、执行流程等。DEBUG级别的日志通常用于开发和调试过程中&#xff0c;以…

[保研/考研机试] 约瑟夫问题No.2 C++实现

题目要求&#xff1a; 输入、输出样例&#xff1a; 源代码&#xff1a; #include<iostream> #include<queue> #include<vector> using namespace std;//例题5.2 约瑟夫问题No.2 int main() {int n, p, m;while (cin >> n >> p >> m) {//如…

业务中如何过滤敏感词

在我们访问网站的时候&#xff0c;如果发现我们发布的内容有色情暴力的东西等等&#xff0c;会屏蔽掉&#xff0c;这种行为就是过滤敏感词。 从技术层面实现起来&#xff0c;其实比较简单&#xff0c;因为我们输入的内容就是一个大型的字符串&#xff0c;我们要调用某些api来判…

ESP32开发阶段启用 Secure Boot 与 Flash encryption

Secure Boot 与 Flash encryption详情 请参考&#xff1a;https://blog.csdn.net/espressif/article/details/79362094 1、开发环境 AT版本&#xff1a;2.4.0.0 发布IDF 与 python&#xff1a; idf4.3_py3.10_env系统&#xff1a;虚拟机 ubuntu 20 2、使能 secure boot 和 …

【动态规划刷题 6】 删除并获得点数 粉刷房子

740. 删除并获得点数 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点数。…

list模拟实现【引入反向迭代器】

文章目录 1.适配器1.1传统意义上的适配器1.2语言里的适配器1.3理解 2.list模拟实现【注意看反向迭代器】2.1 list_frame.h2.2riterator.h2.3list.h2.4 vector.h2.5test.cpp 3.反向迭代器的应用1.使用要求2.迭代器的分类 1.适配器 1.1传统意义上的适配器 1.2语言里的适配器 容…

实现链式队列

dl.h dl.c main.c 结果

BM5 合并k个已排序的链表 javascript

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a; 示例1 输入&#xff1a; [{1,2,3},{4,5,6,7}] 返回值&#xff1a; {1,2,3,4,5,6,7}示例2 输入&#xff1a; [{1,2},{1,4,5},{6}] 返回值&#xff1a; {1,1,2,4,5,6}解题思路 利用两个…

RabbitMQ 发布确认机制

发布确认模式是避免消息由生产者到RabbitMQ消息丢失的一种手段 发布确认模式 原理说明实现方式开启confirm&#xff08;确认&#xff09;模式阻塞确认异步确认 总结 原理说明 生产者通过调用channel.confirmSelect方法将信道设置为confirm模式&#xff0c;之后RabbitMQ会返回Co…

spring 面试题

一、Spring面试题 专题部分 1.1、什么是spring? Spring是一个轻量级Java开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack&#xff08;一站式&#xff09;轻量…

Unity之ShaderGraph 节点介绍 Utility节点

Utility 逻辑All&#xff08;所有分量都不为零&#xff0c;返回 true&#xff09;Any&#xff08;任何分量不为零&#xff0c;返回 true&#xff09;And&#xff08;A 和 B 均为 true&#xff09;Branch&#xff08;动态分支&#xff09;Comparison&#xff08;两个输入值 A 和…

未来C#上位机软件发展趋势

C#上位机软件迎来新的发展机遇。随着工业自动化的快速发展&#xff0c;C#作为一种流行的编程语言在上位机软件领域发挥着重要作用。未来&#xff0c;C#上位机软件可能会朝着以下几个方向发展&#xff1a; 1.智能化&#xff1a;随着人工智能技术的不断演进&#xff0c;C#上位机…

中间件RabbitMQ消息队列介绍

1. MQ的相关概念 1.1 什么是MQ MQ&#xff08;message queue&#xff09;&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中存放的内容是message而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息…

手机开启应急预警通知 / 地震预警

前言 安卓手机在检测到地震时&#xff0c;将发送地震预警通知&#xff0c;但此设置是默认关闭的&#xff0c;原因是以防引发用户恐慌从而引发安全问题&#xff0c;且开启此设置需要完成指引教程&#xff0c;因此默认关闭此设置。下文介绍如何开启此设置。 开启方法 华为手机开…

nginx简介与安装配置,目录结构和配置文件介绍

一.nginx简介 1.简介 2.特性 二.nginx安装 1.rpm包方式 &#xff08;1&#xff09;下载扩展源 &#xff08;2&#xff09;安装扩展rpm包&#xff0c;nginx -V查看配置参数&#xff0c;后面源码安装时要用到 2.源码方式 &#xff08;1&#xff09;建议提前下好所需要的部…

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub&#xff0c;需要发布的仓库名为 myrepo&#xff0c;那么 pages 的 URL 为&#xff1a; https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好&#xff08;或者生成&#xff09;标准的网页内容&a…

Windows安装Redis

自己电脑做个测试&#xff0c;需要用到Redis&#xff0c;把安装过程记录下&#xff0c;方便有需要的人 1、找到下载地址&#xff1a;Releases microsoftarchive/redis GitHub Windows的Redis需要到GitHub上下载&#xff1a; 2、下载完后设置密码&#xff0c;打开文件夹&…

Linux下TCP网络服务器与客户端通信程序入门

文章目录 目标服务器与客户端通信流程TCP服务器代码TCP客户端代码 目标 实现客户端连接服务器&#xff0c;通过终端窗口发送信息给服务器端&#xff0c;服务器接收到信息后对信息数据进行回传&#xff0c;客户端读取回传信息并返回。 服务器与客户端通信流程 TCP服务器代码 …

车云一体化系统基础理论

车云一体化系统基础理论 介绍目标正文 参考文档 介绍 最近在调研车云链路一体化的整套解决方案&#xff0c;涉及分布式消息队列&#xff08;RocketMQ&#xff09;、分布式存储&#xff08;Doris&#xff09;、离线数据处理&#xff08;Spark&#xff09;、用户行为日志分析&am…