OGG几何内核-BRepBuilderAPI_MakeEdge学习

news2024/12/26 22:58:52

OGG几何内核fork自OCCT 7.7.0,

BRepBuilderAPI_MakeEdge是几何内核的一个重要和基础的功能,也十分复杂,因为要支持line、circle、ellipse,parabola,hyperbola,circle,beziercurve,bsplinecurve。需要支持多种参数情况:

1、曲线。

2、曲线+始终长度。

3、曲线+始终角度。

4、曲线+两点。

5、曲线+面。

代码注释如下:

Provides methods to build edges.

The   methods have  the  following   syntax, where TheCurve is one of Lin, Circ, ...

Create(C : TheCurve)

Makes an edge on  the whole curve.  Add vertices on finite curves.

Create(C : TheCurve; p1,p2 : Real)

Make an edge  on the curve between parameters p1 and p2. if p2 < p1 the edge will be REVERSED. If p1  or p2 is infinite the  curve will be open in that  direction. Vertices are created for finite values of p1 and p2.

Create(C : TheCurve; P1, P2 : Pnt from gp)

Make an edge on the curve  between the points P1 and P2. The  points are projected on   the curve and the   previous method is  used. An  error is raised if the points are not on the curve.

Create(C : TheCurve; V1, V2 : Vertex from TopoDS)

Make an edge  on the curve  between the vertices V1 and V2. Same as the  previous but no vertices are created. If a vertex is  Null the curve will be open in this direction.

class BRepBuilderAPI_MakeEdge  : public BRepBuilderAPI_MakeShape
{
public:

  DEFINE_STANDARD_ALLOC

  
  Standard_EXPORT BRepBuilderAPI_MakeEdge();
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Lin& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Lin& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Lin& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Lin& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Circ& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Circ& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Circ& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Circ& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Elips& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Elips& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Elips& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Elips& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Hypr& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Hypr& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Hypr& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Hypr& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Parab& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Parab& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Parab& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const gp_Parab& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L, const gp_Pnt& P1, const gp_Pnt& P2, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S, const gp_Pnt& P1, const gp_Pnt& P2, const Standard_Real p1, const Standard_Real p2);
  
  //! The general method to directly create an edge is to give
  //! -      a 3D curve C as the support (geometric domain) of the edge,
  //! -      two vertices V1 and V2 to limit the curve (definition of the restriction of
  //! the edge), and
  //! -      two real values p1 and p2 which are the parameters for the vertices V1 and V2
  //! on the curve.
  //! The curve may be defined as a 2d curve in the parametric space of a surface: a
  //! pcurve. The surface on which the edge is built is then kept at the level of the edge.
  //! The default tolerance will be associated with this edge.
  //! Rules applied to the arguments:
  //! For the curve:
  //! -      The curve must not be a 'null handle'.
  //! -      If the curve is a trimmed curve the basis curve is used.
  //! For the vertices:
  //! -      Vertices may be null shapes. When V1 or V2 is null the edge is open in the
  //! corresponding direction and the parameter value p1 or p2 must be infinite
  //! (remember that Precision::Infinite() defines an infinite value).
  //! -      The two vertices must be identical if they have the same 3D location.
  //! Identical vertices are used in particular when the curve is closed.
  //! For the parameters:
  //! -      The parameters must be in the parametric range of the curve (or the basis
  //! curve if the curve is trimmed). If this condition is not satisfied the edge is not
  //! built, and the Error function will return BRepAPI_ParameterOutOfRange.
  //! -      Parameter values must not be equal. If this condition is not satisfied (i.e.
  //! if | p1 - p2 | ) the edge is not built, and the Error function will return
  //! BRepAPI_LineThroughIdenticPoints.
  //! Parameter values are expected to be given in increasing order:
  //! C->FirstParameter()
  //! - If the parameter values are given in decreasing order the vertices are switched,
  //! i.e. the "first vertex" is on the point of parameter p2 and the "second vertex" is
  //! on the point of parameter p1. In such a case, to keep the original intent of the
  //! construction, the edge will be oriented "reversed".
  //! - On a periodic curve the parameter values p1 and p2 are adjusted by adding or
  //! subtracting the period to obtain p1 in the parametric range of the curve, and p2]
  //! such that [ p1 , where Period is the period of the curve.
  //! - A parameter value may be infinite. The edge is open in the corresponding
  //! direction. However the corresponding vertex must be a null shape. If this condition
  //! is not satisfied the edge is not built, and the Error function will return
  //! BRepAPI_PointWithInfiniteParameter.
  //! - The distance between the vertex and the point evaluated on the curve with the
  //! parameter, must be lower than the precision of the vertex. If this condition is not
  //! satisfied the edge is not built, and the Error function will return
  //! BRepAPI_DifferentsPointAndParameter.
  //! Other edge constructions
  //! - The parameter values can be omitted, they will be computed by projecting the
  //! vertices on the curve. Note that projection is the only way to evaluate the
  //! parameter values of the vertices on the curve: vertices must be given on the curve,
  //! i.e. the distance from a vertex to the curve must be less than or equal to the
  //! precision of the vertex. If this condition is not satisfied the edge is not built,
  //! and the Error function will return BRepAPI_PointProjectionFailed.
  //! -      3D points can be given in place of vertices. Vertices will be created from the
  //! points (with the default topological precision Precision::Confusion()).
  //! Note:
  //! -      Giving vertices is useful when creating a connected edge.
  //! -      If the parameter values correspond to the extremities of a closed curve,
  //! points must be identical, or at least coincident. If this condition is not
  //! satisfied the edge is not built, and the Error function will return
  //! BRepAPI_DifferentPointsOnClosedCurve.
  //! -      The vertices or points can be omitted if the parameter values are given. The
  //! points will be computed from the parameters on the curve.
  //! The vertices or points and the parameter values can be omitted. The first and last
  //! parameters of the curve will then be used.
  //!
  //! Auxiliary methods
  Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L, const Handle(Geom_Surface)& S, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C, const gp_Pnt& P1, const gp_Pnt& P2, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT void Init (const Handle(Geom_Curve)& C, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S);
  
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S, const Standard_Real p1, const Standard_Real p2);
  
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S, const gp_Pnt& P1, const gp_Pnt& P2);
  
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2);
  
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S, const gp_Pnt& P1, const gp_Pnt& P2, const Standard_Real p1, const Standard_Real p2);
  
  //! Defines or redefines the arguments for the construction of an edge.
  //! This function is currently used after the empty constructor BRepAPI_MakeEdge().
  Standard_EXPORT void Init (const Handle(Geom2d_Curve)& C, const Handle(Geom_Surface)& S, const TopoDS_Vertex& V1, const TopoDS_Vertex& V2, const Standard_Real p1, const Standard_Real p2);
  
 




protected:





private:



  BRepLib_MakeEdge myMakeEdge;


};

从最后几行代码,结合可以发现,BRepBuilderAPI_MakeEdge是BRepLib_MakeEdge的包装,实际功能由BRepLib_MakeEdge实现。

为了能更深入理解BRepBuilderAPI_MakeEdge,可以研究分析一下测试命令mkedge的代码。

static Standard_Integer mkedge(Draw_Interpretor& di, Standard_Integer n, const char** a)
{
  if (n < 3) return 1;

  Handle(Geom_Curve)   C   = DrawTrSurf::GetCurve(a[2]);
  Handle(Geom2d_Curve) C2d = DrawTrSurf::GetCurve2d(a[2]);
  if (C.IsNull() && C2d.IsNull()) {
    //std::cout << a[2] << " is not a curve" << std::endl;
    di << a[2] << " is not a curve\n";
    return 1;
  }

  TopoDS_Edge edge;

  if (n == 3) {
    if (!C.IsNull())   edge = BRepBuilderAPI_MakeEdge(C);
    else               edge = BRepBuilderAPI_MakeEdge2d(C2d);
  }
  else {
    Handle(Geom_Surface) S;
    Standard_Integer i = 0;
    if (!C2d.IsNull()) {
      S = DrawTrSurf::GetSurface(a[3]);
      if (!S.IsNull()) i = 1;
    }
    TopoDS_Shape aLocalShape(DBRep::Get(a[3+i],TopAbs_VERTEX));
    TopoDS_Vertex V1 = TopoDS::Vertex(aLocalShape);
//    TopoDS_Vertex V1 = TopoDS::Vertex(DBRep::Get(a[3+i],TopAbs_VERTEX));
    if (n == 5+i) {
      if (V1.IsNull()) {
        if (!C.IsNull())   
          edge = BRepBuilderAPI_MakeEdge(C,Draw::Atof(a[3]),Draw::Atof(a[4]));
        else if (S.IsNull())              
          edge = BRepBuilderAPI_MakeEdge2d(C2d,Draw::Atof(a[3]),Draw::Atof(a[4]));
        else
          edge = BRepBuilderAPI_MakeEdge(C2d,S,Draw::Atof(a[4]),Draw::Atof(a[5]));
      }
      else {
        aLocalShape = DBRep::Get(a[4+i],TopAbs_VERTEX);
        TopoDS_Vertex V2 = TopoDS::Vertex(aLocalShape);
//  TopoDS_Vertex V2 = TopoDS::Vertex(DBRep::Get(a[4+i],TopAbs_VERTEX));
        if (!C.IsNull())   
          edge = BRepBuilderAPI_MakeEdge(C,V1,V2);
        else if (S.IsNull())              
          edge = BRepBuilderAPI_MakeEdge2d(C2d,V1,V2);
        else
          edge = BRepBuilderAPI_MakeEdge(C2d,S,V1,V2);
      }
    }  
    else if (n == 7+i) {
      aLocalShape = DBRep::Get(a[5+i],TopAbs_VERTEX);
      TopoDS_Vertex V2 = TopoDS::Vertex(aLocalShape);
//      TopoDS_Vertex V2 = TopoDS::Vertex(DBRep::Get(a[5+i],TopAbs_VERTEX));
      if (!C.IsNull())   
        edge = BRepBuilderAPI_MakeEdge(C,V1,V2,Draw::Atof(a[4]),Draw::Atof(a[6]));
      else if (S.IsNull())         
        edge = BRepBuilderAPI_MakeEdge2d(C2d,V1,V2,Draw::Atof(a[4]),Draw::Atof(a[6]));
      else              
        edge = BRepBuilderAPI_MakeEdge(C2d,S,V1,V2,Draw::Atof(a[5]),Draw::Atof(a[7]));
    }
    else
      return 1;
  }

  DBRep::Set(a[1],edge);
  return 0;
}

以下是各种曲线生成及参数测试:

vertex a 0 0 0
vertex b 6 0 0
vertex c 6 1 0
vertex d 6 0 0
edge l a b
mkcurve curve1 l
mkedge l1 curve1 1 2
mkedge l2 curve1 a b
mkedge l3 curve1 a c
mkedge l4 curve1 a d

circle c 0 0 0 10
mkedge c1 c 0 pi/4
mkedge c1 c 0 pi/2
mkedge c1 c 0 pi
mkedge c1 c 0 2*pi
mkedge c1 c 0 2pi
mkedge c1 c -pi pi
mkedge c1 c -pi/2 0


mkedge e1 a b

parabola w1 0 0 0 1 0 0 0 0 1 50
mkedge p1 w1 -100 100

beziercurve w2 5 0 0 0 20 0 0 20 5 0 25 10 0 10 20 0
mkedge b1 w2 
mkedge b1 w2 0 0.5
mkedge b1 w2 0 0.9
mkedge b1 w2 0 1
mkedge b1 w2 0 2

bsplinecurve w3 3 2  -1.0 4   1.0 4  0 0 0 1  2 10 0 1  4 6 0 1  10 0 0 1
mkedge b2 w3
mkedge b2 w3  0 0.5

通过这些测试命令,可以观察看到线的方向,以及OCCT对不同类型的线生成的edge的处理方式不同。

抛物线和双曲线:

beziercurve和bsplinecurve

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

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

相关文章

Web前端开发技术-格式化文本 Web页面初步设计

目录 Web页面初步设计 标题字标记 基本语法&#xff1a; 语法说明&#xff1a; 添加空格与特殊符号 基本语法&#xff1a; 语法说明: 特殊字符对应的代码: 代码解释&#xff1a; 格式化文本标记 文本修饰标记 计算机输出标记 字体font标记 基本语法&#xff1a; 属…

《TortoiseSVN》简单使用说明

##################工作记录#################### 常用图标说明 一个新检出的工作副本 修改过的文件 更新过程遇到冲突的文件 你当前对文件进行了锁定&#xff0c;不要忘记不使用后要解锁&#xff0c;否则别人无法使用 当前文件夹下的某些文件或文件夹已经被调度从版本控制…

BUUCTF靶场 [reverse]easyre、reverse1、reverse2

工具&#xff1a; DIE&#xff1a;下载&#xff1a;https://download.csdn.net/download/m0_73981089/89334360 IDA&#xff1a;下载&#xff1a;https://hex-rays.com/ida-free/ 新手小白勇闯逆向区&#xff01;&#xff01;&#xff01; [reverse]easyre 首先查壳&#xf…

一刷后日谈

后日谈 1.前言 ​ 今天是一刷结束的日子&#xff0c;回顾一路走过来的路&#xff0c;还是得对自己说声谢谢的&#xff1b; ​ 我是一个向来都很抗拒编程的人&#xff0c;那繁琐的符号让我觉得很是头疼&#xff0c;本科期间数据结构与算法都重修了三次&#xff0c;最后临近毕…

Redis --学习笔记

Redis简介 一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件 特点&#xff1a; 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09; 企业应用广泛 Redis默认端口号为6379 Redis是用…

Shell之(正则表达式)

目录 一、正则表达式的概括 常用选项 基础正则表达式 查看以xxx为开头 查看以xxx为结尾的文件内容 匹配单个或多个字符 匹配中括号里的内容 对子表达式进行多次或者限定次数的匹配 拓展正则表达式的基本用法 扩展元字符 匹配前面的字符或表达式至少1次&#xff0…

分布式微服务之springboot学习[上]

文章目录 SpringBoot基本介绍官方文档springboot是什么?springboot快速入门需求/图解说明完成步骤快速入门小结 Spring SpringMVC SpringBoot的关系梳理关系如何理解 -约定优于配置 依赖管理和自动配置依赖管理什么是依赖管理修改自动仲裁/默认版本号 starter场景启动器starte…

CSDN智能总结助手

github项目地址&#xff1a; https://github.com/anjude/little-demo/tree/master 获取CSDN的user name和user token 打开csdn&#xff0c;打开控制台 - Application - Cookies&#xff0c;找到domain为blog.csdn.net的cookie&#xff0c;复制user_name和user_token的值 把上…

【计网】广播域和冲突域

一、相关概念 1.各层次设备 2.冲突域 2.1定义 冲突域通俗来讲就是在同一个网络中&#xff0c;两台设备同时传输的话会产生冲突。位于OSI的第一层&#xff1a;物理层 例如在集线器场景下&#xff0c;集线器属于物理层设备&#xff0c;它不具备交换机的功能&#xff0c;当收到节…

PIM Anycast RP(PIM实现)

拓扑图 配置 配置全局使能组播路由 配置OSPF 配置PIM-SM 配置anycast-rp&#xff0c;Loopback 1为Anycast-RP地址&#xff0c;Loopback 0为Anycast-RP本地地址 配置IGMP sysname AR1 # multicast routing-enable # interface GigabitEthernet0/0/0ip address 10.1.12.1 2…

删除重复的电子邮箱-力扣

题目 答案 delete p1 from Person as p1 ,Person as p2 where p1.email p2.email AND p1.id>p2.id; 解析 按照题目删除即可&#xff0c;注意删除的是一条&#xff0c;所以直接是person p1 即可 此处不能用distinct &#xff0c;其一般与select相互使用。

遍历列表

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍历列表中的所有元素是常用的一种操作&#xff0c;在遍历的过程中可以完成查询、处理等功能。在生活中&#xff0c;如果想要去商场买一件衣服&#…

C++ RPC ORM 高速解析

支持所有常用编程语 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令&#xff1a; capnp help capnp compile -oc myschema.capn…

Qt代码初识

文章目录 Qt代码初识1. Qt Hello World 程序1.1 使⽤ "按钮" 实现1.1.1 纯代码⽅式实现1.1.2 可视化操作实现 1.2 使⽤ "标签" 实现1.2.1 纯代码⽅式实现1.2.2 可视化操作实现 2. 项⽬⽂件解析2.1 .pro ⽂件解析2.2 widget.h ⽂件解析2.3 main.cpp ⽂件解析…

防火墙技术基础篇:解析防火墙的网络隔离机制

防火墙技术基础篇&#xff1a;解析防火墙的网络隔离机制 网络安全在现代社会中扮演着重要的角色&#xff0c;保护网络系统、用户和数据免受未经授权的访问、破坏和窃取。个人、企业和国家都需要加强网络安全意识&#xff0c;采取有效措施保护自身的网络安全。随着网络攻击手段…

VS2022通过C++网络库Boost.asio搭建一个简单TCP异步服务器和客户端

基本介绍 上一篇博客我们介绍了通过Boost.asio搭建一个TCP同步服务器和客户端&#xff0c;这次我们再通过asio搭建一个异步通信的服务器和客户端系统&#xff0c;由于这是一个简单异步服务器&#xff0c;所以我们的异步特指异步服务器而不是异步客户端&#xff0c;同步服务器在…

SQL靶场搭建

概述 简单介绍一下SQL靶场的搭建&#xff0c;以及在搭建过程中遇到的一些问题。使用该软件搭建靶场相对简单&#xff0c;适合新手小白。当然&#xff0c;也可以在自己的虚拟机下进行搭建&#xff0c;相对来说就较为复杂。本章主要讲解使用Phpstudy进行SQL靶场搭建。 这里我推…

SpringBoot 实现 RAS+AES 自动接口解密

一、讲个事故 接口安全老生常谈了 过年之前做了过一款飞机大战的H5小游戏&#xff0c;里面无限模式-需要保存用户的积分&#xff0c;因为使用的Body传参&#xff0c;参数是可见的。 为了接口安全我&#xff0c;我和前端约定了传递参数是&#xff1a;用户无限模式的积分“我们…

一个简约高级视差效果PR动态图文开场视频模板

这是一个高质量且易于定制的pr模板。具有模块化结构&#xff0c;可以轻松更改内容。包括视频教程&#xff0c;即使是新手小白也可以轻松套用模板制作视频。 主要特点&#xff1a; 水平&#xff08;19201080&#xff09;和垂直&#xff08;10801920&#xff09;分辨率&#xff…

实验二 电子传输系统安全-进展2

上周任务完成情况&#xff08;代码链接&#xff0c;所写文档等&#xff09; 重新调通电子公文传输系统部署gmssl学习生成SM2证书学习gmssl中的CTLS实现将数据库从SqlServer迁移到Mysql调试Mysql驱动学习Bouncy Castle 代码链接 Mysql表设计 /* Navicat MySQL Data Transfer…