OCC教学:拓扑

拓扑:1.介绍

几何限制

OCCT 曲面支持矩形修剪。布尔运算后可能会出现非矩形域。
![[Pasted image 20231115140418.png]]

如何存储剪切操作的结果?

拓扑的目的

一般来说,拓扑是描述对象局限性的一种手段。
![[Pasted image 20231115140611.png]]

OCC拓扑被用于用于描述:

  • 物体的边界;
  • 对象之间的连接(通过公共边界)。
    拓扑实体称为形状(shapes)。
拓扑的定义

拓扑形状是根据这两个概念定义的:

  • 抽象拓扑(TopoDS):通过描述有界和有界对象之间的关系来定义数据结构。示例:边由其边界(即顶点)描述。
  • 边界表示(B-Rep):通过关联拓扑和几何信息来完成对象的定义。例子:一条边位于曲线上并以点为界。
    边界表示和算法类被分组在不同的包中。
    ![[Pasted image 20231115141321.png]]
为什么使用边界表示(B-rep)

B-Rep 有多种替代方案:

  • 构造立体几何(CSG), CSG 不允许对任意数字进行建模。
  • 表面模型,表面模型不适合下游工程作业。
  • 线框模型,多个实体可以对应于相同线框模型(结果不唯一)。
  • 网格模型,网格不支持弯曲几何体。
    B-Rep 有一些缺点。它是脆弱的、冗长的、复杂的。 B-Rep模型使用顶点、边和面作为几何载体,但也具有特殊的拓扑类型。模型的复杂性导致脆弱性。
    ![[Pasted image 20231115141954.png]]

拓扑:2.抽象拓扑

拓扑形状(shapes)

OCCT定义了以下类型的拓扑形状:

  • Vertex 顶点:一个点;
  • Edge 边:由顶点限制的曲线的一部分;
  • Wire 线框:一组边(通过它们的顶点连接);
  • Face 面:由线限制的表面的一部分;
  • Shell 壳:一组面(通过边连接);
  • Solid 实体:受壳限制的空间的一部分;
  • Compsolid 复合实体:一组通过面连接的实体;
  • Compound 复合:任意拓扑形状的群。
    ![[Pasted image 20231115142507.png]]
拓扑结构图

下图显示了复杂形状(图中的实体)的子形状之间关系的示例:
![[Pasted image 20231115142801.png]]

形状(shapes)的连接性

如果两个形状(shapes)共享一些边界子形状,则它们是连接的。
示例:让我们考虑两条边——e1 和 e2。它们中的每一个都受到其边界的限制,边界是顶点(v1f 和 v1l是e1的边界)(v2f 和 v2l是e2的边界)。当这两条边共享一个公共顶点 v3 时,它们是连接的。
![[Pasted image 20231115143423.png]]

形状(shape)的层次结构

TopoDS_Shape 是所有拓扑形状类的基类。
在这里插入图片描述

TopoDS_Vertex 保存有关点(零维对象)的信息;
TopoDS_Edge 保存有关曲线(一维对象)的信息;
TopoDS_Wire 是边的集合;
TopoDS_Face 保存有关表面(二维对象)的信息;
TopoDS_Shell 是面的集合;
TopoDS_Solid、TopoDS_Compsolid 保存有关实体的信息;
TopoDS_Compound 表示一个形状,它是形状的集合。

形状(shape)结构

TopoDS_Shape 类通过以下方式定义形状:

  • TopoDS_TShape 句柄(handle)(TopoDS package);
  • 局部坐标系(TopLoc package);
  • 方向(TopAbs package)。
    ![[Pasted image 20231115144441.png]]

TopoDS_TShape:一个句柄类,描述其对象在它默认坐标系。这个类从来没有直接使用过,通常使用 TopoDS_Shape。
TopLoc_Location:定义局部坐标系,将形状放置在与其定义不同的位置。
示例:所有这些盒子共享相同的 TShape,但位置不同。
![[Pasted image 20231115144358.png]]

TopAbs_Orientation:描述形状如何根据区域(内部和外部)界定几何形状。
![[Pasted image 20231115145008.png]]

考虑形状(shape)的上下文关系时,形状的方向和位置参数也被假定影响其子形状。当将一个形状发展为子形状时,子形状的方向和位置将与主形状的方向和位置相结合。这确保了在引用子形状的每个形状的上下文中对子形状的参数进行一致的解释。例如,当在这些面的上下文中搜索时,两个相连的面共享的边将具有相反的方向。

形状(shape)操作

TopoDS_Shape 类及其子类提供了各种有用的方法,例如:
访问 TShape:

  • IsNull() 检查 TShape 是否为 null;
  • Nullify() - 使 TShape 智能指针无效。
    访问location:
  • Location() - 返回现有位置;
  • Move () - 对实际形状应用变换;
  • Moved() - 返回应用变换的新形状。
    ShapeType() - 返回 TopoDS_Shape 的类型。
    形状比较:
    IsPartner()——相同的 TShape;
    IsSame()——相同的 TShape 和位置;
    IsEqual()——相同的 TShape、位置和方向。
    ![[Pasted image 20231115145707.png]]
向下转型(基类->子类)

TopoDS_Shape 对象通过值进行操作。这就是为什么要实现特殊方法来提供向下转换功能的原因:

  • TopoDS::Vertex() 返回一个 TopoDS_Vertex
  • TopoDS::Edge() 返回一个 TopoDS_Edge
  • TopoDS::Wire() 返回一个 TopoDS_Wire
  • TopoDS::Face() 返回一个 TopoDS_Face
  • TopoDS::Shell() 返回一个 TopoDS_Shell
  • TopoDS::Solid() 返回 TopoDS_Solid
  • TopoDS::CompSolid() 返回TopoDS_CompSolid
  • TopoDS::Compound() 返回一个 TopoDS_Compound
    注意:当进行不适当的转换时会引发异常。
    示例:第一个代码块是正确的,但第二个代码块被编译器报错。
    ![[Pasted image 20231115150353.png]]
形状(shape)的集合

TopTools 包提供:

  • 用于计算具有或不具有方向的形状的哈希码的类。
  • 形状集合的实例化。
    ![[Pasted image 20231115150728.png]]
搜索工具

搜索拓扑形状意味着找到它的子形状,可能符合特定的标准。

  • TopoDS_Iterator 类搜索给定形状的第一级子形状(来自其 TShape 中的列表)。

  • TopExp_Explorer 类搜索给定形状中的所有子形状,并可以选择实体类型(例如,仅面)。![[Pasted image 20231115151146.png]]

  • TopExp::MapShapes() 方法搜索子形状并将它们放入map中(从而检测相同的元素)。![[Pasted image 20231115151226.png]]

  • TopExp::MapShapesAndAncestors() 方法返回引用另一个实体的所有实体。![[Pasted image 20231115151420.png]]

在OCCT中,不存在从子形状到其祖先形状的反向指针。相反,TopExp::MapShapesAndAncestors() 可用于恢复此信息。例如,如果您想查找包含给定顶点或边的所有面,您可以使用此方法。

拓扑:3.边界表示(B-rep)

边界表示

边界表示(B-Rep)在三维描述模型对象。
在 B-Rep 建模中,实体由其边界表示。
![[Pasted image 20231115151959.png]]

B-Rep 将几何融入拓扑:

  • 几何形状:面位于曲面上,边位于曲线上,顶点位于点上。
  • 拓扑:形状的连通性。
    因此模型对象的描述就完成了。
    B-Rep 描述基于:
    TopoDS package——描述对象的拓扑结构。
    Geom 和 Geom2d package——描述这些物体的几何形状。
B-Rep 实体

定义 BRep_TVertex、BRep_TEdge 和 BRep_TFace 是为了向拓扑模型添加几何信息。
BRep_TVertex、BRep_TEdge 和 BRep_TFace 继承 TopoDS_TShape。
根据拓扑实体的不同,几何信息的存储方式也不同。
存储几何信息的实体允许描述:

  • 边:受顶点限制的曲线;
  • 面:由边限制的曲面;
  • 实体:受面限制的空间。
BRep_TVertex 中的几何图形

BRep_TVertex 几何存储为:3D 点 (gp_Pnt) ——对于所有顶点。
点表示的列表可以是:

  • 曲线上的点(Geom_Curve,参数)——如果顶点界定边。
  • 曲面上曲线上的点(Geom_Surface、Geom2d_Curve、参数)——如果顶点界定曲面上的边。
  • 曲面上的一点(Geom_Surface, Uparameter, Vparameter)——如果顶点界定面。
    ![[Pasted image 20231115153221.png]]
BRep_TEdge 中的几何图形

BRep_TEdge 几何图形存储为曲线列表,可以是:

  • 一条 3D 曲线和曲线上的两个参数(Geom_Curve、FirstParameter、LastParameter)。
  • 曲面上的一条曲线,曲线上的两个参数和曲面上的两对参数(Geom2d_Curve、FirstParameter、LastParameter、Geom_Surface、FirstUVCoord、LastUVCoord)。
    SameParameter 属性指示是否对边缘的不同表示进行参数化同步,即 3D 曲线上具有相同参数值的点与每条 2D 曲线重合(在边的公差范围内)
    ![[Pasted image 20231115153734.png]]
BRep_TFace 中的几何图形

BRep_TFace 几何图形存储为 Geom_Surface
![[Pasted image 20231115153915.png]]

B-Rep 的精度

一些几何表示可以附加到拓扑(B-Rep)对象。例如,一个顶点可以表示为:

  • 3D点;
  • 曲线上的参数;
  • 曲面上的一对参数。
    这些表示相似但很少相同。对于建模算法,有必要准确地知道与该近似值相关
    的精度。该精度的数值与每个 B-Rep 形状相关联,称为公差。它定义了对象的
    所有几何表示所在的区域。
    在 BRep_TVertex 中,精度定义了围绕3D 点的球体的半径:![[Pasted image 20231115162809.png]]

在 BRep_TEdge 中,精度定义了 3D 曲线周围管道的半径:![[Pasted image 20231115162914.png]]

在 BRep_TFace 中,精度定义了曲面面上方和下方的厚度:![[Pasted image 20231115163008.png]]

由于公差与几何载体相关,因此它是由 B-Rep 中创建或修改几何的算法定义的。
OCCT要求:公差(顶点) >= 公差(边) >= 公差(面)
![[Pasted image 20231115163106.png]]在这里插入图片描述

Package: BRepAdaptor

OCCT 使适配器用于通过适配器模式在几何算法中使用拓扑实体。边界表示作为修剪的曲线和曲面工作,从而消除了手动修剪的必要性。可以使用以下适配器:

  • BRepAdapter_Curve——接受边曲线适配器;
  • BRepAdapter_Curve2d——接受边和面的曲线适配器;
  • BRepAdapter_CompCurve——接受线框的曲线适配器;
  • BRepAdaptor_Surface——接受面的曲面适配器。
    注意:可提供手柄版本的适配器。例如,BRepAdaptor_HSurface类是曲面适配器的手柄版本。
B-Rep 特点

3D 空间(3D 拓扑)和参数空间(UV 拓扑)中同一面的表示通常拓扑相似。
![[Pasted image 20231115164601.png]]
有时 3D 拓扑和 UV 拓扑是不同的。这是情况出现在接缝边和退化的边。

  • 接缝边是定义封闭面上(通常构建在周期性曲面上)上的接缝的边。在这种情况下,一个 3D 拓扑对应于多个UV 拓扑。
  • 当一条或多条 UV 2d 曲线对应于单个 3D 顶点时,称边已退化。此类边没有 3d 曲线表示,并且两次包含相同的顶点(方向相反)。
    在这里插入图片描述
形状(shapes)构造

OCCT提供了多个软件包,为建模算法提供高级 API。这些 API 既简单又强大:

  • 简单,因为只需要调用一次函数即可创建对象![[Pasted image 20231115164822.png]]

  • 功能强大,因为它包括错误处理和对算法提供的额外信息的访问![[Pasted image 20231115164934.png]]

Package: BRepBuilderAPI

该包包含以下类:

  • 从几何实体直接构造拓扑对象或从形状集合组合拓扑
    • BRepBuilderAPI_MakeVertex:从点构建顶点;
    • BRepBuilderAPI_MakeEdge、MakeEdge2d:从曲线构建边;
    • BRepBuilderAPI_MakePolygon:从点构建线框;
    • BRepBuilderAPI_MakeWire:从边构建线框;
    • BRepBuilderAPI_MakeFace:从曲面构建面;
    • BRepBuilderAPI_MakeShell:从曲面面构建外壳(分割为 C2 Patches);
    • BRepBuilderAPI_MakeSolid:从壳构建实体。
  • 修改对象:
    • RepBuilderAPI_Transform:对形状应用变换;
    • BRepBuilderAPI_Copy:进行形状的深层复制;
    • BRepBuilderAPI_Sewing:通过合并边界边从一组面构建外壳。
  • 创建基本对象:
    • BRepPrimAPI_MakeBox
    • BRepPrimAPI_MakeWedge
    • BRepPrimAPI_MakeSphere
    • BRepPrimAPI_MakeCone
    • BRepPrimAPI_MakeCylinder
    • BRepPrimAPI_MakeTorus
    • BRepPrimAPI_MakeHalfSpace
  • 创建扫掠对象:
    • BRepPrimAPI_MakePrism
    • BrepPrimAPI_MakeRevol
      ![[Pasted image 20231115170216.png]]
位置修改

OCCT 中提供的数据共享概念允许重复使用拓扑信息和实例模型通过不同的位置。形状内的位置是一组连续的变换,它们是作为单个转换进行操作。
注意:空位置和现有的相同位置被视为不同。IsSame() 检查将返回 false。
位置方法如下:

  • Location
  • Move
  • Moved
    ![[Pasted image 20231115170730.png]]
方向:边内的顶点

OCCT方向概念旨在通过内部和外部区域的信息完成边界表示。该信息是一组影响形状正确性的规则。
方向本身对于顶点没有任何意义。仅当顶点限制某些边时,顶点方向才有
意义。边是使用一对顶点构造的(在周期曲线的情况下至少一个顶点使用两
次);按照约定,第一个顶点具有 TopAbs_FORWARD 方向,第二个顶点具有 TopAbs_REVERSED 方向。
注意:BRepBuilderAPI_MakeVertex 构造一个具有 TopAbs_FORWARD 方向的顶点。
![[Pasted image 20231115171023.png]]

方向:线框内的边

面是由边界定的一部分曲面。边被组织成线框,以便能够单独跟踪每个环(外部或内部)。
当相框是自由时,没有任何限制;可以无限制地将边添加到线框上。
当线框属于面时,右手法则起作用;线框中的每个边应根据曲线上参数增加的方向定向,使内部位于左侧。
![[Pasted image 20231115171720.png]]

可以重建曲线,但更好的做法是复原基础曲线。第二选项是在OCCT中重建。

方向:实体中的面

实体是模型空间的一部分,由组织成壳的面界定。实体中的法线应该指向实体外部。微分几何指出可以通过曲面上的点计算曲面法向,使用以下公式(“x”代表叉积): N ( u 0 , v 0 ) = s u ′ ( u 0 , v 0 ) × s v ′ ( u 0 , v 0 ) N(u_{0},v_{0})=s_{u}'(u_{0},v_{0})\times s_{v}'(u_{0},v_{0}) N(u0,v0)=su(u0,v0)×sv(u0,v0)
法向计算得到方向的符号,因此存在交换偏导数的替代公式(OCCT 使用上面提供的公式)。如何保证实体中正确的法线方向?
面方向在法线之前决定符号:

  • TopAbs_FORWARD——方向根据上述公式进行计算
  • TopAbs_REVERSED——法向被乘以-1.0
    注意:实体可以表示除由实体边界界定的部分空间之外的整个模型空间。法线
    在这种情况下将指向空间的有界部分内部。
    ![[Pasted image 20231115173318.png]]

拓扑:4.建模应用接口(API)

建模API:BRepAlgoAPI

OCCT 有两种布尔算法的实现。在内部,它们被称为“旧”和“新”算法。旧算法不再维护并标记为已过时。 OCCT 的“新”布尔算法可在 BRepAlgoAPI package中找到。可以使用以下算法:

  • 相减 Cut(BRepAlgoAPI_Cut);
  • 并集 Fuse(BRepAlgoAPI_Fuse)。
  • 相交 Common(BRepAlgoAPI_Common)。
  • 相交线 Section(BRepAlgoAPI_Section)。
  • 分离器 Splitter(BRepAlgoAPI_Splitter)。
    ![[Pasted image 20231116095712.png]]
建模API:BRepOffsetAPI

该软件包提供了额外的构建工具,例如:

  • BRepOffsetAPI_ThruSections——从一组轮廓放样(loft)构建壳体或实体;
  • BRepOffsetAPI_DraftAngle——使用给定的角度信息锥化一个形状的面集;
  • BRepOffsetAPI_MakeOffsetShape——在给定形状上构建偏移形状;
  • BRepOffsetAPI_MakeThickSolid——根据给定实体和要删除的面集构建空心实体;
  • BRepOffsetAPI_MakePipe——通过沿着导线(spine)扫掠形状轮廓(profile)来构建管道形状(用于创建管道(Pipe)形状,通常是通过沿着一条给定的曲线生成具有不同截面的形状。这是一种通过定义路径和截面来创建具有变化横截面的几何体的方法);
  • BRepOffsetAPI_MakeEvolved——从平面或线(spine)和轮廓(profile)构建可展形状(是一个更一般化的工具,用于创建演化(Evolved)形状。它可以处理更复杂的几何演变,包括旋转、放样、扭曲等。与 BRepOffsetAPI_MakePipe不同,BRepOffsetAPI_MakeEvolved可以执行更广泛的形状演变操作)
    ![[Pasted image 20231116102107.png]]
建模API:BRepFilletAPI

该package提供了用于创建圆角和切角的类:

  • BRepFilletAPI_MakeFillet2d 二维倒角
  • BRepFilletAPI_MakeFillet 三维倒角
  • BRepFilletAPI_MakeChamfer 切角
    ![[Pasted image 20231116103755.png]]
建模API:修改历史记录

有时,内置操作无法解决建模问题。在这种情况下使用自定义建模管道。 OCCT 没有持久索引;操作后拓扑项可能会发生不可预测的变化。历史支持可以克服这个问题。建模算法具有三种方法可以了解拓扑操作后初始形状“S”的修改状态:

  • IsDeleted(S) 告知形状“S”是否已被算法删除;
  • Modified(S) 列出了表示形状“S”的修改状态的形状(此类形状与“S”具有相同的基础几何形状)。
  • Generated(S)列出了算法从形状“S”生成的形状(此类形状具有“S”中不存在的新基础几何形状)
    ![[Pasted image 20231116104451.png]]

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

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

相关文章

Mars3d-vue最简项目模板集成使用Mars3d的UI控件样板

备注说明&#xff1a; 1.小白可看步骤一二&#xff0c;进阶小白可直接看步骤三 步骤一&#xff1a;新建文件夹<uitest>&#xff0c;在mars3d仓库拉一份最简项目模板&#xff1a; git clone mars3d-vue-template: Vue3.x 技术栈下的Mars3D项目模板 步骤二&#xff1a;运…

01_SHELL编程之变量定义(一)

SHELL编程 该课程主要包括以下内容&#xff1a; ① Shell的基本语法结构 如&#xff1a;变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等&#xff1b; ② 基本正则表达式的运用&#xff1b; ③ 文件处理三剑客&#xff1a;grep、sed、awk工具的使用&…

最好用的Python库推荐总结,每一个都用处很大!

文章目录 分词 - jieba词云库 - wordcloud可视化进度条 - tpdm优美的表格 - PrettyTable多进程 - multiprocessing多线程 - threading谷歌翻译 - googletrans重复回调 - retrying游戏开发 - pygame绘图教程 - turtle数据分析 - pandas算法加密 - pycryto操作 win 电脑 - pywin3…

2—10岁女童羽绒服,黑色长款也太好看了吧

冬天怎么能没有一件暖呼呼的羽绒服呢&#xff1f; 黑色长款羽绒服也赞了吧 大长款连帽&#xff0c;防风保暖设计 时尚与美观度都兼具呢&#xff01;好穿又耐穿&#xff01;

qt定时器的使用

在QWidget中进行声明

大数据毕业设计之前端01:我的前端之路

初遇前端 初次接触前端还是2016年&#xff0c;那一年暑假心血来潮&#xff0c;在网易云课堂上学着前端三剑客&#xff08;html、js、css&#xff09;。18年毕业&#xff0c;把用各色水笔手写的花花绿绿笔记寄回家里&#xff0c;投身奔赴后端与大数据开发的征程。 遥记18年的毕…

关于hadoop报错ERROR: Cannot set priority of namenode process与jps仅有自身的某类解决办法

运行start-sh.all发现了如图的问题 也是搞了很久搜了很多教程&#xff0c;发现很多人并不是大毛病而是很多小细节出了错误。 首先检查如下hadoop-env.sh &#xff0c;core-site.xml &#xff0c;hdfs-site.xml &#xff0c;mapred-site.xml &#xff0c;yarn-site.xml 内容是…

flutter 绘制右上角圆角三角形标签

绘制&#xff1a; import package:jade/utils/JadeColors.dart; import package:flutter/material.dart; import dart:math as math;class LabelTopRightYellow extends StatefulWidget {final String labelTitle; // 只能两个字的&#xff08;文字偏移量没有根据文字长度改变…

要在伦敦银技术分析史上留名 这可能吗?

在学习伦敦银投资的时候&#xff0c;我们都很羡慕那些以人的名字命名的交易工具或者策略&#xff0c;例如布林带、帝纳波利点位、加特利形态、艾略特波浪理论等等。投资者也有一个希望&#xff0c;就是开发属于自己的交易策略或者工具&#xff0c;这并不是不可能的&#xff0c;…

C 语言指针和数组

C 语言指针和数组 在本教程中&#xff0c;您将了解C语言编程中数组与指针之间的关系。您还将学习使用指针访问数组元素。 在了解数组与指针之间的关系之前&#xff0c;请确保检查以下两个主体&#xff1a; [C 数组](C 语言数组-CSDN博客)[C 指针](C 语言指针-CSDN博客) 数组…

springboot327基于Java的医院急诊系统

交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

解决编译时提示“没有那个文件或目录 #include <pcap.h>”的问题

解决编译时提示“没有那个文件或目录 #include 当你在编译代码时遇到“没有那个文件或目录 #include <pcap.h>”的错误提示&#xff0c;这通常意味着编译器在你的系统路径中找不到 pcap.h 头文件。pcap.h 是网络流量捕获库 pcap 的头文件&#xff0c;用于在 C/C 程序中捕…

高效能人士的七个习惯

今天小编给大家推荐最近读的一本书&#xff0c;史蒂芬柯维的《高效能人士的七个习惯》&#xff0c;分别是积极主动、以始为终、要事第一、双赢思维、知己解彼、综合高效及不断更新。 一、个人领域&#xff1a;从依赖到独立 习惯一&#xff1a;积极主动——个人愿景的原则付诸行…

哪种猫罐头比较好?推荐给新手养猫的5款好口碑猫罐头!

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;哪种猫罐头比较好&#xff1f;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产…

雷达模糊函数及MATLAB仿真

文章目录 前言一、雷达模糊函数二、Matlab 仿真1、单脉冲模糊函数①、MATLAB 源码②、仿真结果1&#xff09;不确定函数三维图2&#xff09;不确定函数的等高图3&#xff09;模糊函数的三维图4&#xff09;模糊函数的等高图 2、单脉冲多普勒频率轴上的切面①、MATLAB 源码②、仿…

nvm安装详细教程(卸载旧的nodejs,安装nvm、node、npm、cnpm、yarn及环境变量配置)

文章目录 一、完全卸载旧的nodejs1、打开系统的控制面板&#xff0c;点击卸载程序&#xff0c;卸载nodejs&#xff08;1&#xff09;打开系统的控制面板&#xff0c;点击程序下的卸载程序&#xff08;2&#xff09;找到node.js&#xff0c;鼠标右击出现下拉框&#xff0c;点卸载…

11月编程语言排行榜出炉:C#超越Java已成定局!

TIOBE最新的编程语言排行榜刚刚出炉了&#xff0c;本月Java依然大幅下跌3.63%&#xff0c;C#本月上涨3.4%&#xff0c;C#和Java仅相差0.7%。 就像网友评论说的&#xff1a;Java成于互联网的兴起&#xff0c;败于互联网的衰落。 一直以来我也都是从事互联网行业、主要是电商行业…

redis高级案列case

案列一 双写一致性 案例二 双锁策略 package com.redis.redis01.service;import com.redis.redis01.bean.RedisBs; import com.redis.redis01.mapper.RedisBsMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; imp…

comfyui指北-1

https://colab.research.google.com/github/tieai/SDXL-ComfyUI-Colab/blob/main/SDXL_OneClick_ComfyUI.ipynb#scrollToSaAJk33ppFw1https://colab.research.google.com/github/tieai/SDXL-ComfyUI-Colab/blob/main/SDXL_OneClick_ComfyUI.ipynb#scrollToSaAJk33ppFw1 可以用上…

SpringCloud Alibaba组件入门全方面汇总(中):服务熔断降级-Sentinel

文章目录 Sentinel常见的容错思路Sentinel流量控制规则sentinel 自定义异常 sentinelresources 注解使用Feign整合Sentinel**面试题&#xff1a;结合Feign后&#xff0c;你在项目中的降级方法中会实现什么样的操作/功能&#xff1f;** Sentinel Sentinel是阿里巴巴开源的分布…