(Demo3D 学习笔记)案例2:飞板传输货物,并按指定货位上架

2023-05-16

1、模型描述

通过红色飞板,将输送机处的货物逐个传送到货架指定货位,货位由货位表指定。

2、模型布局

3、解决方案

3.1、载荷发生器

首先给载荷发生器创建自定义属性Loc,类型为表。

在载荷发生器的属性窗口中,找到自定义属性Loc,编辑此表,8行*3列,列名分别为rack(货架号)、bay(列号)、lvl(层号),对应货物上架存储的物理位置。每行代表一个载荷,每行值代表每个载荷将来要存放在货架上的位置。

接下来是对载荷生成器生成的每个载荷中,附带货架号、列号、层号信息。方法是在载荷的OnLoadCreated事件中,编写相应代码如下:

function LoadCreator1_OnLoadCreated( sender : Demo3D.Visuals.LoadCreatorVisual, load : Demo3D.Visuals.Visual )
{
    
    var table:Table=sender.Loc.Table;  //定义表,取值为载荷生成器的Loc自定义属性,注意引用表属性时,要额外加 .Table 后缀
    var rowcount:int=table.Rows.Count;  //定义表的总行数
    var seq:int=sender.SequenceNumber;       //定义载荷的生成序号,即载荷生成器创建的第几个载荷

//为当前载荷创建rack、col、lvl 属性,其值为表Loc 的相应列值
    if(!load.HasCustomProperty("rack")){
        load.AddSimpleProperty("rack",table.Rows[seq]["rack"],"rack");
    }
    if(!load.HasCustomProperty("col")){
        load.AddSimpleProperty("col",table.Rows[seq]["col"],"rack");
    }
    if(!load.HasCustomProperty("lvl")){
        load.AddSimpleProperty("lvl",table.Rows[seq]["lvl"],"rack");
    }

    //如果当前载荷序号超过了表的总行数,则禁止载荷生成器生成载荷    
    if(seq==rowcount-1){
    sender.ReleaseEnabled=False;
    }
}

在载荷生成器的OnReset事件中启用生成载荷

function LoadCreator1_OnReset( sender : Demo3D.Visuals.LoadCreatorVisual )
{
    sender.ReleaseEnabled=True;
}

3.2、飞板

3.2.1、飞板初始化

在飞板的OnReset事件中编写代码

//自定义移动速度属性

if ( ! sender.HasProperty("LinearSpeed") )
{
        sender.AddSimpleProperty("LinearSpeed", new SpeedProfile(1, 0.5, 0.5),"");
}

//自定义旋转速度属性
if ( ! sender.HasProperty("RotationSpeed") )
{
         sender.AddSimpleProperty("RotationSpeed", new AngularSpeedProfile(90,45, 45), "");
}

sender.WorldLocation = vector(0, 0, 0);         //设置飞板初始位置在世界坐标系原点
sender.WorldRotationY = 0;        //设置飞板的初始旋转轴

3.2.2、设置飞板监听光眼

   

 3.2.3、飞板的 OnMessage 事件

 编写代码如下:

function flyPad_OnMessage( sender : Demo3D.Visuals.BoxVisual, message : Demo3D.Visuals.ScriptingObject )
{
    //监听到的事件如果不是光眼 PE1的 OnBlocked 事件,则退出本程序,不作任何处理
    if(!(message["MessageType"]=="OnBlocked" && message.MessageSender.Name=="PE1")){
        return;
    }
    
    //否则,进行如下处理
    var load:Visual=message["load"];
    var pe:PhotoEys=message["MessageSender"];
    var conv:Demo3D.Visuals.StraightRollerConveyor= pe.Parent;
    conv.MotorOff();//关闭输送机马达
        
    //飞板原地升降,高度与输送机高度相同
    var targetLoc:Vector3=sender.WorldLocation;
    targetLoc.Y=conv.Height;
    sender.MoveTo(targetLoc,sender.LinearSpeed);
    sender.WaitForMove();
        
    //飞板原地旋转,X轴向与输送机X轴向相对    
    var targetRot:Vector3=Degrees(conv.WorldRotation);
    sender.TurnTo(Axis.Y,180+targetRot.Y,sender.RotationSpeed);
    sender.WaitForMove();
    
    //飞板移动到输送机出口处
    sender.SetInitialPosition();
    var convStartLoc:Vector3=sender.TransformFromWorld(conv.WorldLocation);
    var convEndLoc:Vector3=new Vector3();
    convEndLoc.X=convStartLoc.X-conv.Length-sender.Width/2.0;
    convEndLoc.Z=convStartLoc.Z;
    sender.MoveTo(sender,convEndLoc,sender.LinearSpeed);
    sender.WaitForMove();
    
    //叉齿伸出接货
    var extender:Visual=sender.FindChild("extender");
    extender.TranslateLocalX(load.Width+0.2,1);
    extender.WaitForMove();
    
    //货物绑定到叉齿,叉齿回缩
    load.Stick(extender);
    extender.TranslateLocalX(-load.Width-0.2,1);
    extender.WaitForMove();
    
    var rackIdx:int=load.rack-1;//定义货架排号,取值为货物附带的rack属性值
    var shelfIdx:int=load.lvl-1;//定义货架层号,取值为货物附带的lvl属性值
    var bayIdx:int=load.col-1;//定义货架格号,取值为货物附带的col属性值
    var rack1:Visual=doc.FindVisualByName("Rack1");//货架组件
    var racks:RackVisual[]=rack1.FindType(RackVisual);//定义一个数组,其元素对应为货架组件中的单排货架
    racks.Sort(new VisualDistanceComparer(rack1.WorldLocation));//货架数组排序,即racks[0]为第一排货架,rack[1]为第2排货架,等等
    
    var targetRack:RackVisual=racks[rackIdx];//货物待上架的目标货架
    var shelves:ShelfVisual[]=targetRack.FindType(ShelfVisual);//定义一个数组,其元素为目标货架的各搁板
    shelves.Sort(new VisualDistanceComparer(targetRack.WorldLocation));//搁板数组排序,即shelves[0]为第一层搁板,shelves[1]为第2层搁板,等等
    
    var targetShelf:ShelfVisual=shelves[shelfIdx];//目标搁板
    targetRot=Degrees(targetShelf.WorldRotation);//目标搁板的角度
        
    //奇偶数排货架,其货架前后端位置正好相反    
    if(rackIdx % 2==0){  //奇数排货架
        
        //飞板原地旋转
        sender.TurnTo(Axis.Y,targetRot.Y,sender.RotationSpeed);//飞板原地旋转,角度与目标搁板方向相同
        sender.WaitForMove();
        
        //飞板水平移动到目标搁板前端入口处
        sender.SetInitialPosition();
        targetLoc=targetShelf.WorldLocation;//目标搁板世界坐标
        targetLoc=sender.TransformFromWorld(targetLoc);//将目标搁板世界坐标转换为相对坐标
        //目标位置微调
        targetLoc.X -=sender.Width/2.0;
        targetLoc.Y =0;
        targetLoc.Z -=sender.Depth/2.0;
        //飞板水平移动
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        //目标货格位置
        var binLoc:BinLocation=new BinLocation();
        binLoc.Bay=bayIdx;
        binLoc.Bin=0;
        binLoc.Index=0;
        
        //目标货格坐标处理
        sender.SetInitialPosition();
        targetLoc=targetShelf.GetNextStoragePosition(binLoc);//获取目标货格相对目标搁板的的坐标(注意是相对坐标)
        targetLoc=targetShelf.TransformToWorld(targetLoc);//目标位置的相对坐标转换为世界坐标
        targetLoc=sender.TransformFromWorld(targetLoc);//目标位置的世界坐标再转换为相对飞板的相对坐标
        var targetBinLocY:Double=targetLoc.Y;//保存目标货格的Y坐标,用于定位下一步中飞板原地升降的高度
        //目标位置微调
        targetLoc.Y =0;
        targetLoc.Z =0;
        
        //飞板平移动到目标货格附近
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        //飞板原地转90°
        sender.SetInitialPosition();
        sender.TurnTo(sender,Axis.Y,270,sender.RotationSpeed);
        sender.WaitForMove();
        
        //飞板原地升降到目标货格高度
        sender.SetInitialPosition();
        targetLoc.X=0;
        targetLoc.Y=targetBinLocY;
        targetLoc.Z=0;
        sender.SetInitialPosition();
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        
        //叉齿伸出放货
        sender.SetInitialPosition();
        extender.TranslateLocalX(load.Width+targetShelf.BayDepth/2.0,1);
        extender.WaitForMove();
        
        //放货,将货物与目标搁板绑定
        load.Stick(targetShelf);
        //叉齿缩回
        sender.SetInitialPosition();
        extender.TranslateLocalX(-(load.Width+targetShelf.BayDepth/2.0),1);
        extender.WaitForMove();
        
        //飞板移动到目标搁板入口处
        sender.SetInitialPosition();
        targetLoc=targetShelf.WorldLocation;
        targetLoc=sender.TransformFromWorld(targetLoc);
        targetLoc.X -=sender.Width/2.0;
        targetLoc.Z +=sender.Depth/2.0;
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();

      }    
    else{        //偶数排货架
        //飞板原地旋转
        sender.TurnTo(Axis.Y,180+targetRot.Y,sender.RotationSpeed);//飞板原地旋转,角度与目标搁板方向相同
        sender.WaitForMove();
        
        //飞板水平移动到目标搁板后端入口处
        sender.SetInitialPosition();
        targetLoc=targetShelf.WorldLocation;//目标搁板世界坐标
        targetLoc=sender.TransformFromWorld(targetLoc);//将目标搁板世界坐标转换为相对坐标
        //目标位置微调
        targetLoc.X -=(targetShelf.OverallLength+sender.Width/2.0);
        targetLoc.Y =0;
        targetLoc.Z +=sender.Depth/2.0;
        //飞板水平移动
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        //目标货格位置
        var binLoc:BinLocation=new BinLocation();
        binLoc.Bay=bayIdx;
        binLoc.Bin=0;
        binLoc.Index=0;
        
        //目标货格坐标处理
        sender.SetInitialPosition();
        targetLoc=targetShelf.GetNextStoragePosition(binLoc);//获取目标货格相对目标搁板的的坐标(注意是相对坐标)
        targetLoc=targetShelf.TransformToWorld(targetLoc);//目标位置的相对坐标转换为世界坐标
        targetLoc=sender.TransformFromWorld(targetLoc);//目标位置的世界坐标再转换为相对飞板的相对坐标
        var targetBinLocY:Double=targetLoc.Y;//保存目标货格的Y坐标,用于定位下一步中飞板原地升降的高度
        //目标位置微调
        targetLoc.Y =0;
        targetLoc.Z =0;
        
        //飞板平移动到目标货格附近
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        //飞板原地转90°
        sender.SetInitialPosition();
        sender.TurnTo(sender,Axis.Y,90,sender.RotationSpeed);
        sender.WaitForMove();
        
        //飞板原地升降到目标货格高度
        sender.SetInitialPosition();
        targetLoc.X=0;
        targetLoc.Y=targetBinLocY;
        targetLoc.Z=0;
        sender.SetInitialPosition();
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();
        
        
        //叉齿伸出放货
        sender.SetInitialPosition();
        extender.TranslateLocalX(load.Width+targetShelf.BayDepth/2.0,1);
        extender.WaitForMove();
        
        //放货,将货物与目标搁板绑定
        load.Stick(targetShelf);
        //叉齿缩回
        sender.SetInitialPosition();
        extender.TranslateLocalX(-(load.Width+targetShelf.BayDepth/2.0),1);
        extender.WaitForMove();
        
        //飞板水平移动到目标搁板后端入口处
        sender.SetInitialPosition();
        targetLoc=targetShelf.WorldLocation;//目标搁板世界坐标
        targetLoc=sender.TransformFromWorld(targetLoc);//将目标搁板世界坐标转换为相对坐标
        //目标位置微调
        targetLoc.X -=sender.Depth/2.0;
        targetLoc.Z -=(targetShelf.OverallLength+sender.Width/2.0);
        //飞板水平移动
        sender.MoveTo(sender,targetLoc,sender.LinearSpeed);
        sender.WaitForMove();    
    
    }
    conv.MotorOn();//飞板完成传输任务后,开启输送机马达,使得输送机上的下一个载荷移动,又一次触发光眼的 OnBlocked 事件。

}

4、最终效果

 5、学习小结

5.1、利用载荷发生器的SequenceNumber属性,作为行号去读取一个表的行列值;

5.2、用代码对载荷发生器创建的载荷,创建待上架位置的自定义属性;

5.3、用代码开启某对象的监听功能,设置两个对象之间监听和被监听的关系;

5.4、对象的 OnMessage 事件,以及参数message的运用,注意参数 message 的数据类型是字典,其主要键名有MessageSender、MessageType;

5.5、利用飞板的 OnMessage 事件,来处理飞板监听到的光眼封堵事件;

5.6、对象移动函数 MoveTo()、旋转函数 TurnTo() 的应用,特别要注意参考坐标系的应用;

5.7、对象旋转时,应注意单位是角度还是弧度,以及角度单位的转换;

5.8、参考坐标系为相对坐标时,SetInitialPosition() 函数的应用;

5.9、注意货架组中,奇数排货架和偶数排货架的前端/后端位置正好相反;

5.10、获取货架的货格位置的相应坐标函数 Shelf.GetNextStoragePosition(binLoc) 的应用;

5.11、货架对象的层级关系:货架对象 > 货架组 RackVisual[ ]> 搁板组  ShelfVisual[ ]> 货格组;

5.12、Sort()函数对货架数组 RackVisual[ ]、搁板数组  ShelfVisual[ ] 中的元素按某种规则进行排序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Demo3D 学习笔记)案例2:飞板传输货物,并按指定货位上架 的相关文章

  • SDN和SD-WAN的概念别再搞混了—Vecloud微云

    最近 xff0c SD WAN在融资领域是一个比较热的话题 国外几家SD WAN的头部企业不断地获得融资 xff0c 也包括被思科 VMware等巨头收购和兼并 xff0c 国内创业公司推出了各种SD WAN产品和解决方案 不得不说 xff
  • SDN和SD-WAN有本质区别—Vecloud微云

    作为软件定义网络 xff08 SDN xff09 技术中的一个细分 xff0c 软件定义广域网 xff08 SD WAN xff09 无疑是从2015年到现在企业级广域网布局中最热门的技术之一 SDN SDN旨在支持局域网 xff08 LA
  • 企业MPLS专线的价格及计费方式——微云专线

    企业MPLS专线的费用 MPLS最大技术特色为可以指定资料包传送的先后顺序 xff0c 提供优质增值服务 xff0c 如 xff1a 差别服务 Diff serv 服务级别 CoS 和服务质量 QoS 等 因为MPLS整合了第三层路由和第二
  • 网络专线MPLS配置原理

    MPLS最早的意思是让中间设备只是查找一个表 xff0c 这样就可以相对更快地工作 xff0c 随着CPU运算能力的不断提高 xff0c 包的交换方式从原始到传统 一次路由多次交换 xff0c 最后再到快速的CEF数据交换方式 xff0c
  • 什么是BGP,BGP的优点有哪些?-Vecloud

    什么是BGP 边界网关协议 BGP 是运行于 TCP 上的一种自治系统 AS 的路由协议 xff0c 是唯一能够妥善处理不相关路由域间的多路连接的协议 通俗点讲 中国电信 中国联通 中国移动和一些拥有AS自治域的大型民营IDC运营商就可以通
  • 从linux接入到windows远程桌面

    Windows 提供了一种远程桌面系统 xff0c 可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件 要连接Windows远程桌面 xff0c 需在Windows客户端安装 相应的软件 xff08 tsclient xff09
  • ssh命令使用总结

    前言 为了安全起见 xff0c 公司服务器只给开放了一个ssh端口其他服务器通过跳板机登录 xff0c 这样难免会造成一些不便 xff0c 但是ssh总体还比较强大 xff0c 可以通过配置 xff0c 方便容易的进行登录 也可以通过端口转
  • **matlab subs函数**

    matlab subs函数 matlab中subs 是符号计算函数 xff0c 表示将符号表达式中的某些符号变量替换为指定的新的变量 xff0c 常用调用方式为 xff1a subs S OLD NEW 表示将符号表达式S中的符号变量OLD
  • Python爬虫库推荐,建议收藏留用

    很多人学Python xff0c 都是从爬虫开始的 xff0c 毕竟网上类似的资源很丰富 xff0c 开源项目也非常多 Python学习网络爬虫主要分3个大的版块 xff1a 抓取 xff0c 分析 xff0c 存储 当我们在浏览器中输入一
  • 【深度学习】:Faster RCNN论文详解

    Faster RCNN详解 Faster RCNN 是在Fast RCNN的基础上 xff0c 进一步改进 xff0c 解决select search 算法选择候选框速度太慢的问题 Faster R CNN Towards Real Tim
  • 优化命令之taskset——查询或设置进程绑定CPU

    目录 一 xff1a taskset概述 二 xff1a 安装taskset工具 2 1taskset语法 2 2taskset用法 2 2 1指定PID为8528的进程在CPU1上运行 2 2 2更改具体某一进程 xff08 或 线程 x
  • Kubernetes:(十八)flannel网络

    目录 一 xff1a 什么是Flannel 1 1 Flannel实现原理 1 2 数据转发流程 二 xff1a Flannel网络概述 2 1 Vxlan 模式 2 1 1 通信流程 2 1 2 部署 2 1 3 相关配置 2 1 4 卸
  • 串口调试工具 O-ComTool V1.1.3

    新版本 O ComTool V2 0 0点击访问 写在之前 由于本人从事嵌入式工作 xff08 物联网方向 xff09 xff0c 经常需要和串口打交道 xff0c 面对各种规约 协议 xff0c 调试实在麻烦 xff0c 于是本人根据同事
  • 关于VSCODE的插件 一

    官方API文档 1 要学好TypeScript 官方教程 1 1TypeScript是一门弱类型语言 强类型和弱类型主要是站在变量类型处理的角度进行分类的 这些概念未经过严格定义 xff0c 它们并不是属于语言本身固有的属性 xff0c 而
  • Keil_debug

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言 一 使用步骤 1 引入库 2 读入数据 总结 前言 程序员的工作中调试 debug xff0c 修bug xff0c 改bug
  • 前端基础知识梳理——html中的长度单位与颜色RGB值

    前言 我们在编写前端业务的时候很定会使用到长度单位 xff0c 这对于我们构建前端元素 xff0c 布局 xff0c 定位是很重要的 就像我们在盖房子的时候 xff0c 需要使用标尺线精确的测量 xff0c 也要使用颜色用于装饰页面 在ht
  • 【Hadoop】熟悉常用的HBase操作(Java实现)

    一 实验平台 操作系统 xff1a Linux deepin Hadoop版本 xff1a 2 7 7 HBase版本 xff1a 1 2 6 Java IDE xff1a Eclipse 二 实验内容 1 使用 Hadoop提供的Java
  • Hadoop权威指南:知识梳理(一)

    第一章 xff1a 初识Hadoop MapReduce三大设计目标 xff1a 为只需要短短几分钟或几个小时就可以完成的作业提供服务运行于同一个内部有高速网络连接的数据中心内数据中心内的计算器都是可靠的 专门的硬件 提供Hadoop支持的
  • tasksel —– ubuntu里面方便安装服务的软件

    用这个软件可以方便安装dns server lamp kubuntu desktop ubuntu desktop xubuntu之类的软件包 这个软件在ubuntu server里是预装的 xff0c 而在桌面版里是不预装的 xff0c
  • 信号量能被 FixedThreadPool 替代吗?

    Semaphore 信号量 从图中可以看出 xff0c 信号量的一个最主要的作用就是 xff0c 来控制那些需要限制并发访问量的资源 具体来讲 xff0c 信号量会维护 许可证 的计数 xff0c 而线程去访问共享资源前 xff0c 必须先

随机推荐

  • 带参数的宏定义(宏函数)

    宏函数没有普通函数压栈 跳转 返回等的开销 xff0c 可以提高程序的效率 宏的名字中不能有空格 xff1b 用括号括住每一个参数 xff0c 并括住宏的整体定义 xff1b 用大写字母表示宏的函数名 define SUM xff08 a
  • OVN&OVS代码下载、编译安装以及运行步骤

    1 代码下载 新建代码目录 home code 下载ovs代码 xff1a git clone b branch 2 15 https github com openvswitch ovs git 下载ovn代码 xff1a git clo
  • CMMI过程改进反例

    xfeff xfeff 最近一直在看 CMMI 的资料 xff0c 越看觉得越有意思 xff0c 今天看到过程改进的时候 xff0c 突然想起来之前所在的公司发生的过程改进相关的事儿来 公司通过 CMMI3 级认证之后 xff0c PMO
  • hadoop 超详细入门wordcount

    概述 今天博客收到了第一条评论 xff0c 感觉很赞哦 xff0c 最近一直在学习hadoop xff0c 主要是结合 实战Hadop xff1a 开启通向云计算的捷径 刘鹏 xff0c 然后apache官网的doc xff08 还是要以官
  • NOIP2018集训总结

    由于语文水平有限 xff0c 精美的桥段 xff0c 跌宕起伏的情节是不可能的了 xff0c 也许看起来会很智障 初赛 前排沙发祝贺墙根火 这次初赛主要在 读程序填空 上失分较多 先找几个不是原因的原因 xff1a 考前那晚宿舍里人巨吵考前
  • Hadoop大数据入门到实战(第四节) - HDFS文件系统(使用)

    这一小节我们来学习 xff1a 1 HDFS的设计 xff0c 2 HDFS常用命令 HDFS的设计 分布式文件系统 客户 xff1a 帮我保存一下这几天的数据 程序猿 xff1a 好嘞 xff0c 有多大呢 xff1f 客户 xff1a
  • HashMap什么时候重写hashcode和equals方法,为什么需要重写

    转载自 xff1a http bdcwl blog 163 com blog static 765222652009112744733937 HashSet内部是通过HashMap实现 只有使用排序的时候才使用TreeMap 否知使用Has
  • 运维如何解决终端部门投诉

    东部某省会城市的联通分公司 xff0c 内部业务系统都运行在VMware为基础的虚拟化环境中 xff0c 但联通的网络运维部在运维时却遇到了很多难题 由于V center的operation manager等云管产品只能监控到虚拟化网络的基
  • Latex并排显示两张图片

    begin figure htbp begin minipage t 0 5 linewidth centering includegraphics width 61 textwidth figures karate graph pdf c
  • HashMap原理深入理解

    hashing 哈希法 的概念 散列法 xff08 Hashing xff09 是一种将字符组成的字符串转换为固定长度 xff08 一般是更短长度 xff09 的数值或索引值的方法 xff0c 称为散列法 xff0c 也叫哈希法 由于通过更
  • ROS2通过话题的发布与订阅进行串口通信

    目录 步骤新建一个cpp header的包进入include xff0c 新建头文件minimal publisher hpp进入src目录 xff0c 新建文件minimal publisher cpp进入src目录 xff0c 新建文件
  • 【增大C盘内存——拓展卷】C盘与未分配空间之间有恢复分区的解决方法——安装diskgenius

    目录 1 简述 2 diskgenius的使用 1 简述 C盘内存告急 xff0c 一般方法是删除 移动 xff0c 还有一类就是拓展C盘的大小 通常来说 xff0c 电脑或笔记本刚买来的时候 xff0c 硬盘分区都是出厂时早就被先划分好的
  • 【使用ubuntu时电脑很卡,连切换个页面都要等好一会儿】

    之前用ubuntu我都是看运气的 xff0c 一打开运行内存必定到达92 左右 xff0c 有时候很卡很卡 xff0c 做个作业花了大半天 xff0c 只有偶尔莫名的顺畅 直至昨天 xff0c 我发现了一个地方 xff0c 将它改过来就好多
  • 使用宝塔部署JavaWeb前后端项目到服务器

    1 我使用的是腾讯云的轻量应用服务器 xff0c 在安装系统的时候可以选择使用宝塔Linux面板 2 安装了宝塔面板以后 xff0c 可以在应用管理中看到宝塔面板的登陆地址 在登录之前需要在用户名和密码那一栏登录 xff0c 来获取宝塔的用
  • VMware USB Arbitration Service无法启动的解决方案

    原文地址 xff1a VMware USB Arbitration Service无法启动的解决方案 作者 xff1a 尔心眼坏坏 问题描述 xff1a 常用VMware虚拟机的朋友们有时应该遇到这种情况 xff0c 就是装完VMware
  • VMware安装linux虚拟机(完整版)

    vmware的安装 去官网进行下载虚拟机 虚拟机下载地址 xff1a VMware16下载 vmware workstation pro 16官方版下载 虚拟机 华军软件园 第一步 打开安装包 第二步 选择稍后安装 是最快的方式 第三步 看
  • AWK中BEGIN和END的使用理解

    awk中begin和end的使用 awk使用 语法 awk 39 script 39 filenames awk使用语法中的script又由多个pattern 43 action组成 单个 pattern actions 应用不通的patt
  • 教你彻底搞懂Cocos Creator Tween

    Cocos 使用了Tween来代替原来的Action系统 今天来给大家讲解Tween如何使用 帮助大家掌握Tween的使用 xff0c 并且对Tween有一个更深入的了解 这里有个cocos creator学习交流点击可以直接进入 1 Tw
  • Hexo的常用指令合集

    Hexo xff1a 一个基于Node js的静态网页生成器 xff0c 常将它与Github Page搭配使用 xff0c 创建个人博客网站 hexo有许多主题 xff0c 其实最火爆的是NexT Matery等 xff0c 复制关键词到
  • (Demo3D 学习笔记)案例2:飞板传输货物,并按指定货位上架

    1 模型描述 通过红色飞板 xff0c 将输送机处的货物逐个传送到货架指定货位 xff0c 货位由货位表指定 2 模型布局 3 解决方案 3 1 载荷发生器 首先给载荷发生器创建自定义属性Loc xff0c 类型为表 在载荷发生器的属性窗口