当前位置: 首页 > news >正文

小白都能读懂的2PC原理

2PC通信原理

  • 分布式事务的原子性
  • 什么是2PC
  • 2PC提交事务的过程
  • 2PC的全局提交规则
  • 2PC通信架构
    • 集中式2PC通信架构
    • 分层2PC通信架构
    • 线性2PC通信架构
  • 故障恢复
    • 站点故障
    • 报文丢失
  • 总结

分布式事务的原子性

一提到到事务,一般就会想到它的ACID特性,其中A(atomic)其实就是指事务的原子性。那么什么是原子性呢,简单来说原子性就是要求事务只有两个状态:

  1. 一是成功,也就是所有操作全部成功
  2. 二是失败,任何操作没有被执行,即使过程中已经执行了部分操作,也要保证回滚这些操作。

其实要做到原子性并不容易,因为多数情况下事务是由多个操作构成的序列。而分布式事务原子性的表现与普通的事务原子性一致。分布式事务要涉及多个物理节点,而且还增加了网络这个不确定因素,使得要满足分布式事务的原子性问题更加复杂。
那么,如何协调内部的多项操作从而对外表现出统一的成功或者失败呢?这需要一系列的算法或者协议来保证。下面我们就来说一下最重要的2PC协议。

什么是2PC

2PC(Two-phase Commitment Protocal)。作为数据库领域最常用的协议,首次提出是Jim Gray在1977年发表的一份文稿中提出的。但是,2PC在工程中的应用其实还要早几年。
2PC可以应用在分布式事务,保证了分布式事务提交的原子性,并在不损坏日志的情况下.实现快速故障恢复,提高分布式数据库系统的可靠性。
在分布式事务中,把分布式事务的某一个代理(根代理)指定为协调者(coodinator),所有其他代理称为参与者(Participants)。只有协调者才有掌握提交或撤销事务的决定权,而其他参与者各自负责在其本地数据库中执行写操作,并向协调者提出撤销或提交子事务的意向。
其实在生活中2PC的例子有很多。下面通过一个例子来讲解2PC的原理。某班要组织一个同学聚会活动,该活动的前提条件是所有参与者(participant)同意才能举行,任意一个人不同意则取消该活动。那么该怎么举办这次活动呢?
第一阶段(phase1)
组织者(coordinator)打电话给所有参与者(participant),同时告知他们参与者列表(请注意这个参与者列表非常重要)。
proposal:提出周六2pm-5pm举办活动
vote:参与者需要投票给组织者accept 或者reject
block:如果参与者都accept,则组织者锁住2pm-5pm的时间,不再接受其它请求。
第二阶段(phase2)
commit:如果所有参与者都同意,则组织者(coordinator)通知所有参与者commit,否则通知abort,组织者解除绑定

这种提交方式也是有失败的可能性的,失败情况总结起来分为以下两种:
1.参与者失败(Participant failure):
任一参与者无响应,coordinator直接执行abort
2.(协调者失败)Coordinator failure:
Takeover: 如果participant一段时间没收到cooridnator确认(commit/abort),则认为coordinator不在了。这时候可切换自动成为Coordinator备份(watchdog)
Query: watchdog根据phase 1接收到的参与者列表发起query
Vote: 所有participant回复vote结果给watchdog, accept or reject。
Commit: 如果所有都同意,则commit, 否则abort。

2PC提交事务的过程

所以通过上节的例子,总结起来2PC把事务的提交过程分为两个阶段
1.第一阶段是表决阶段,目的是形成一个共同的决定。
2.第二阶段是执行阶段,目的是实现这个决定。根据协调者的指令。参与者或者提交事务,或者撤销事务,并给协调者发送确认消息。此时,协调者在日志中写入一条事务结束记录并终止事务。
协调者与参与者两阶段提交过程如下图所示
在这里插入图片描述

2PC的全局提交规则

1.只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。
2.只有所有参与者都同意提交事务,协调者才能做出全局提交决定。
:协调者和参与者可能进入某些相互等待对方发送消息的状态。为了确保它们能够从这些状态中退出并终止,要使用定时器。
每个进程进入一个状态时都要设置定时器。如果所期待的消息在定时器超时之前没有到来,定时器向进程报警,进程于是调用它自己的超时协议。

2PC通信架构

集中式2PC通信架构

集中式两阶段提交协议,通信只发生在协调者和参与者之间,参与者之间不交换消息。
在这里插入图片描述

分层2PC通信架构

在协调者和参与者之间的通信不用直接广播的方法进行,而是使报文在树中上下传播
在这里插入图片描述

线性2PC通信架构

在线性两阶段提交协议中,参与者之间可以相互通信。为了通信,系统中的站点之间要进行排序。假设参与事务执行的站点之间的顺序是1到N,协调者就是序列中的第一个。
实现两阶段提交协议时,在第一阶段使用了向前通信方式,从协调者(No.1)到N;在第二阶段使用了向后通信方式,即从N到协调者。
线性2PC产生较少的消息.但是不提供任何并行。因此,它增加了响应时间,降低了性能。
在这里插入图片描述

故障恢复

故障类型一般分为站点故障、报文丢失两种。下面来讲讲该如何恢复

站点故障

1.一参与者在把就绪记录写入运行记录以前出现故障。在这种情况下,协调者超时机制满期,它将采取撤消的决定。所有的参与者都撤销它们的子事务。当发生该故障的参与者恢复时,重启动过程简单地撤销该事务即可.不需要过问其它站点的情况。
2.一参与者在把就绪记录写入运行记录以后发生故障。在这种情况下,其它参与者的站点终止该事务(提交或撤消)。当故障站点恢复时,重启动过程不得不询问协调者或别的某个参与者关于该事务的结果(提交或撤消),然后执行相应的动作(提交或撤消)。这种情况下需要访问远程的恢复信息。
3.协调者在把预备记录写入运行记录以后,而在写入global-commit或global-abort记录以前发生故障。这种情况下所有已经回答READY的参与者必须等待协调者恢复。协调者的重启动过程从头开始恢复提交协议,从预备记录(在运行记录中)读取参与者的标识,再次把PREPARE(预备)报文发送给它们。每个就绪的参与者必须要识别出该新的PREPARE报文是前一个PREPARE的重复报文。
4.协调者在运行中写入global-commit或global-abort记录以后而在写入完成记录以前发生故障。这种情况下,协调者在重启动时必须再次给所有参与者发送其决定,未曾收到此命令的所有参与者不得不等待到协调者恢复为止。和以前一样,参与者不应因收到该命令报文两次而受到影响。
5.协调者在运行记录中写入完成以后发生故障。这种情况下,该事物已经结束,在重启动时不需任何动作。

报文丢失

1.来自一个参与者的回答报文(READY或ABORT)被丢失。在这种情况下,协调者的超时满期,整个事务被撤销。要注意,只由协调者来发现这种故障,而从协调者的观点来看,它完全好像是一参与者的故障。但是.从参与者的观点来看情况就不同了,该参与者并不认为自己有故障,因而不会执行重启动过程。
2.丢失一个PREPARE报文。这种情况下该参与者仍停在等待状态。因为协调者并没有收到回答,所以其全局结果和前一种情况相同。
3.丢失一个命令报文(commit或abort)。参与者对此命令处于不肯定状态。在参与者中引入超时机制就可简单地消除这个问题;从回答起在超时后仍末收到任何报文的话,就发送—请求再发送该命令。
4.丢失一个ACK报文。协调者对参与者有无收到该报文处于不肯定状态。可以在协调者中引入超时机制就可简单地消除这个问题;如果从发出命令起到超时后仍未受到任何ACK报文,协调者就再次发送该命令。在参与者站点处理这种情况的最好办法是再次发送ACK报文,即使该子事务在那期间已经完成并不再活动也要重发。

总结

事实上,大多数分布式数据库都是在2PC协议基础上改进来保证分布式事务的原子性。下一篇将介绍两个有代表性的改进模型,它们分别来自两大阵营NewSQL和PGXC。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

dockerfile的详细介绍

Dockerfile 关键字作用备注FROM指定父镜像指定dockerfile基于那个image构建MAINTAINER作者信息用来标明这个dockerfile谁写的LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看RUN执行命令执行一段命令 默认是/bin/sh…...

nacos心跳

轮询 概括来说是服务端定时主动的去与要监控状态的客户端(或者叫其他系统)通信,询问当前的某种状态,客户端返回状态信息,客户端没有返回或返回错误、失效信息、则认为客户端已经宕机,然后服务端自己内部把这…...

408数据结构I 数据结构的基本概念

数据结构的基本概念 数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合,数据是计算机程序加工的原料。 数据元素 是数据的基本单位,通常作为一个整体进行考虑和处理。 数…...

C语言实现学生成绩管理系统(Easy图形界面)

我的小站——半生瓜のblog 代码文件下载链接——链接 学生成绩管理系统学生成绩管理系统效果图流程&注意要点代码实现学生成绩管理系统 效果图 流程&注意要点 核心部分——EasyX显示图形界面,结构体数组和文件操作负责对数据进行各种操作。只要一进去程序…...

Unity常见合批失败

测试的时候注意两点: 1 运行起来编辑器在看结果 2 多用framedebuger 3 framedebuger观测结果时主要注意Shadows.RenderShadowMap中的Shadows.RenderJobDir和RenderForward.RenderLoopJob。可以看出来合批主要是在这两个函数中实现作用,分别是描画阴影…...

PHP_JavaScript高级编程(2)

二、今日目标 1、理解什么是面向对象(编程) 2、掌握定义对象的多种方式,并知道各种方式的优缺点 3、掌握什么是原型对象(难点) 4、理解原型链的概念(或原型链的查找方式) 5、掌握什么是回调…...

C++类的讲解(一)(超详细)

C类的讲解 1、面向对象和类的介绍 1)面向对象 C语言使用面向过程的编程方式,而C则增加了面向对象的编程方式。 面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就…...

delphi:临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别

临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体,在windows单元中定义; 是InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection, DeleteCriticalSection…...

Linux使用命令行工具管理用户和组

文章目录一、管理用户账户1.查看用户账户2.添加用户账户3.管理用户账户密码4.修改用户账户5.删除用户账户二、管理组账户1.创建组账户2.修改组账户3.删除组账户4.管理组成员一、管理用户账户 1.查看用户账户 Linux没有直接查看用户列表的命令,但是可以查看用户配置…...

C语言 指针声明和定义 - C语言零基础入门教程

目录 一.指针简介 1.内存2.内存地址3.指针声明 二.指针类型三.声明并初始化一个指针 1.声明指针并直接初始化 – 推荐2.先声明指针在初始化 – 不推荐 四.查看指针地址和指针的值五.NULL 指针 – 空指针六.重点总结七.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >&g…...

直面秋招!花了6个月肝完阿里技术官的笔记

2. ZooKeeper 介绍 2.1. ZooKeeper 由来 正式介绍 ZooKeeper 之前,我们先来看看 ZooKeeper 的由来,还挺有意思的。 下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节,推荐大家阅读一下: ZooKeeper 最早起源于雅虎研究院…...

大数据技术hadoop核心Flume

大家好,我是曜耀。 这几天曜耀开始复习一下自己的专业课,相信看过的都了解,就是当前热门的大数据技术与应用。我对于这门专业来说,一个特色就是都会,你说Linux我懂,你说java这是基操,python不好…...

K-means笔记

K-means算法 算法过程: 从N个样本数据中随机选取K个对象作为初始的聚类中心。分别计算每个样本到这各个聚类中心的距离,并将对象归于距离最短的聚类群中。所有样本计算完后,重新计算K个聚类中心。与前一次计算得到得聚类中心比较。如果聚类中…...

为什么淘宝搜索宝贝排名先后不一样,原理是什么?

为什么淘宝搜索宝贝排名先后不一样,原理是什么?  商品在淘宝搜索的排名前后是决定商品的展示多少的,当买家搜索了商品的相关关键词之后,就可以根据综合、价格、信用和价格四个不同的方式来进行排序,不同排序的情况下商…...

2021制造业数字化案例大会暨探营海尔数字化创新”在青岛盛大开幕

5月29日,“2021制造业数字化案例大会暨探营海尔数字化创新”活动在青岛成功举办。本次活动由由数字产业创新研究中心主办,锦囊专家、首席数字官、承办,海尔集团、山东省CIO联盟、青岛CIO联盟协办,邀请海尔集团的多位数字化高管和十…...

2021暑假每日一题 【week2 完结】

目录3763. 数字矩阵 【难度: 一般 / 知识点: 思维】3764. 三元数异或 【难度: 一般 / 知识点: 思维 贪心】3767. 最小的值 【难度: 一般 / 思维: 贪心 枚举】3768. 字符串删减【难度: 简单 / 知识点: 模拟】3769. 移动石子 【难度: 简单 / 知识点: 贪心】3763. 数字矩阵 【难度…...

2021牛客暑期多校训练营5

B、Boxes 题目大意 你有nnn个盒子,每个盒子内存在可能有黑球和白球中的一种,打开每个盒子都有一个代价wiw_iwi​,你还有一次询问裁判的机会,当然询问裁判代价为CCC,你需要告诉裁判这nnn个盒子每个盒子里面的球颜色&a…...

MySQL数据库从小白到小菜04

MySQL数据库从小白到小菜04MySQL进阶补充插入聚合查询COUNTSUMAVGMAXMINGROUP BYHAVING联合查询内连接外连接MySQL进阶补充 插入 在表中插入数据时用的是INSERT,在MySQL中,是可以插入(查找结果表)的数据,但是结果表每一列的顺序类型都必须与…...

Java学习路线图//Java、Java学习路线、Java自学、Java经验分享、经验分享、资源分享

今天整理了群里大佬们的实践经验成文为学习路线图,目的是帮助后来者高效的学习Java。 该路线图在保留了文章的核心架构外,也做了一些优化,包括: 更详细的学习内容。更精确的学习时间。优化学习方法,避开前端知识。及…...

Linux高级存储管理

Linux高级存储管理1.lvm定义1.1 逻辑卷2.lvm的建立3.lvm的拉伸4. lvm缩减5.lvm快照6.lvm设备的删除7.管理vdo设备1.lvm定义 1.1 逻辑卷 逻辑卷主要适用于解决存储空间扩展问题,逻辑卷可以利用软件实现无限扩展。LVM可以实现把新的物理分区重组成物理卷&#xff0c…...

PyQt5环境Pycharm+anaconda配置

文章目录在pycharm中新建项目安装所需包配置Qt designer和pyUIC首先下载好pycharm和anaconda在pycharm中新建项目 新建项目选择anaconda环境 检查所需包:pyqt5,pyqt5-tools,sip等,注意选择anaconda包管理器 可以在anaconda navi…...

Vue子组件调用父组件的方法

转载至:https://blog.csdn.net/zgrkaka/article/details/100528714 PS:需要说明的一点是关于this.$parent的时候使用方式,我之前一直以为只要父组件里定义了比如下面这样的情况: components:{childNode } 然后在子组件里面就可以直接通过this.$parent获取到父组件的属性和方…...

Python个人学习笔记1 - 按行,列求和

1. 给df的每一列求均值 (添加一行) df.loc[Col_sum] df.apply(lambda x: x.mean())2. 给df的每一行求和 (添加一列) df[Row_sum] df.apply(lambda x: x.sum())...

移动端开发那些事

1px解决方案 为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个’px’的含义是不一样的. 移动端html的header总会有一句 <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno&qu…...

Redis 分布式锁原理

1、 使用数据结构&#xff1a;string 2、 使用操作命令 Redis 字符串(String) // 只有在 key 不存在时设置 key 的值。成功返回1&#xff0c;失败返回0SETNX key value// 将值 value 关联到 key &#xff0c;并将 key 的过期时间设为 seconds (以秒为单位)。SETEX key seconds …...

蓝绿发布、灰度发布和滚动发布

一文搞懂蓝绿发布、灰度发布和滚动发布 应用程序升级面临最大挑战是新旧业务切换&#xff0c;将软件从测试的最后阶段带到生产环境&#xff0c;同时要保证系统不间断提供服务。 长期以来&#xff0c;业务升级渐渐形成了几个发布策略&#xff1a;蓝绿发布、灰度发布和滚动发布…...

隐私保护与生成模型: 差分隐私GAN的梯度脱敏方法

一、差分隐私是什么&#xff1f; 这篇文章以差分隐私和生成模型为主要研究对象&#xff0c;针对面临的问题&#xff0c;先介绍相关的背景知识和现有研究方法&#xff0c;后展示解决方案和实验结果。 机器学习模型的训练需要大量的数据喂食&#xff0c;而这些数据的应用就会涉…...

洛谷P1449 后缀表达式进阶解法

#include<iostream> #include<stack> #include<string>using namespace std;stack <int> expr; string temp; char ch; int first, second;int main() {for (;;){cin >> ch;switch (ch){case(.):expr.push(stoi(temp));temp "";brea...

Python_Flask 模板复用 继承

这里写目录标题什么情况下使用模板继承标签代码基础模板&#xff1a;复用 模板继承 * include 宏 什么情况下使用模板继承 1.多个模板具有完全相同的顶部和底部 2.多个模板具有相同的模板内容&#xff0c;但是内容中部分不一样 3.多个模板具有完全相同的模板内容 标签 {% …...

C++ STL基本组成(6大组件+13个头文件)

STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成&#xff0c;其中后面 4 部分是为前 2 部分服务的&#xff0c;它们各自的含义如下表所示。 STL的组成含义容器一些封装数据结构的模板类&#xff0c;例如 vector 向量容器、list 列表容器等。算法STL 提…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

入门须知:次世代3D建模软件有哪些?

你想玩建模吗&#xff1f;次世代建模&#xff0c;一般是建模、雕刻、展UV、拓扑、贴图、做材质等几个步骤。在不同的步骤当中&#xff0c;所用到的软件有所不同。 这里为大家科普下建模软件&#xff1a; 高模&#xff1a;Maya、3Dmax、Zbrush 中模&#xff1a;Maya、3Dmax …...

零基础学习3D建模,第一步:3D建模软件有哪些?给你科普一下

1.建模软件有很多&#xff0c;为大家科普下建模软件有哪些&#xff1a; 高模&#xff1a;Maya、3Dmax、Zbrush 中模&#xff1a;Maya、3Dmax 低模&#xff1a;Maya、3Dmax、Topogun 展UV&#xff1a;Maya、Zbrush、Unfold3D、Uvlayout 烘焙&#xff1a;Maya、Zbrush、3Dma…...

3D建模都用哪些软件?

3D建模软件有下列几种&#xff1a; 一、C4D软件 主要还是用于影视特效和影视包装等。 C4D是德国的MAXON公司开发的三维图像制作软件&#xff0c;以其高的运算速度和强大的渲染插件著称。 C4D具备入门轻松&#xff0c;简单上手&#xff0c;渲染迅速&#xff0c;有各种插件。…...

最常见的游戏建模软件有哪些?

3D建模软件普遍存在于我们的日常的学习和工作中&#xff0c;但是高校基本不开设软件类课程。 在真正的工作中&#xff0c;我们才发现在学校自学的那点软件基础完全不够用&#xff0c;甚至连基本的软件知识都不清楚。 所以今天&#xff0c;我们对几款超好用的3D建模软件进行全…...

学“建模”需要熟知这些软件

建模行业使用的软件有很多&#xff0c;最常用的有8个&#xff0c;分别是&#xff1a;Maya、C4D、3Dmax、zbrush、 Blender、Houdini、Rhino、Modo等。 不同的软件有不同的特点和功能。 ①C4D应该算是最受市场和行业人士追捧的。 与Maya和3Dmax相比&#xff0c;它的界面更简洁&…...

12款开源或免费的3D建模软件

1、Blender Blende是一款系统全面的3D建模套件&#xff0c;它提供了大量专业级功能和模块&#xff0c;跨平台支持所有的主要操作系统。目前并已成为免费3D软件的代名词。Blender通常被称为TheBlenderProject&#xff0c;因为它不仅仅是一个软件&#xff0c;还是一个完整的社区…...

2021全新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码/站长亲测

简介&#xff1a; 全新PHP短网址系统URL缩短器平台&#xff0c;它使您可以轻松地缩短链接&#xff0c;根据受众群体的位置或平台来定位受众&#xff0c;并为缩短的链接提供分析见解。 系统使用了laravel框架编写&#xff0c;前后台双语言使用&#xff0c;可以设置多域名&…...

短网址短链接哪个好用?2021年最好的缩短链接短网址推荐

短网址&#xff0c;又称短链接&#xff0c;英文名为Short URL&#xff0c;是一种形式上比较短的网址&#xff0c;使用跳转到方式代替长网址链接&#xff0c;形式美观&#xff0c;而且更容易分享。最出名的短网址服务有百度短网址dwz.cn、新浪微博t.cn、腾讯url.cn、缩我suo.im和…...

html5打开抖音链接,抖音主页链接在哪里弄(主页链接设置教程)

企业号可在主页设置官网链接按钮&#xff0c;可跳转企业官网&#xff0c;为企业提供品牌及产品介绍能力&#xff0c;提高用户对品牌认知度。对有售卖需求的企业&#xff0c;可设置跳转至企业自营京东店铺或天猫店铺&#xff0c;缩短转化路径&#xff0c;提高流量效率。一、手机…...