gazebo中添加动态障碍物

news2024/11/23 12:10:32

文章目录

  • gazebo 教程
  • gazebo 添加动态障碍物
  • gazebo添加动态障碍物插件
  • gazebo中动态障碍物实时pose

gazebo 教程

  1. gazebo github
    https://github.com/gazebosim/gazebo-classic/tree/gazebo9
  2. gazebo tutorials
    https://classic.gazebosim.org/tutorials
  3. 运行一个空白环境
<sdf version="1.4">
  <world name="default">

    <scene>
      <ambient>0.4 0.4 0.4 1</ambient>
      <background>0.7 0.7 0.7 1</background>
      <shadows>true</shadows>
    </scene>

    <!-- A global light source -->
    <include>
      <uri>model://sun</uri>
    </include>

    <!-- A ground plane -->
    <include>
      <uri>model://ground_plane</uri>
    </include>
 
  </world>

</sdf>

gazebo 添加动态障碍物

参照官方教程:
https://classic.gazebosim.org/tutorials?tut=actor&cat=build_robot
在这里插入图片描述

actor标签范围内的模型配置。人会在多点间运动

<sdf version="1.6">
  <world name="default">
    <include>
      <uri>model://sun</uri>
    </include>
    <actor name="actor">
      <skin>
        <filename>walk.dae</filename>
      </skin>
      <animation name="animation">
        <filename>walk.dae</filename>
      </animation>
      <script>
        <trajectory id="0" type="walking">
          <waypoint>
            <time>0</time>
            <pose>0 2 0 0 0 -1.57</pose>
          </waypoint>
          <waypoint>
            <time>2</time>
            <pose>0 -2 0 0 0 -1.57</pose>
          </waypoint>
          <waypoint>
            <time>2.5</time>
            <pose>0 -2 0 0 0 1.57</pose>
          </waypoint>
          <waypoint>
            <time>7</time>
            <pose>0 2 0 0 0 1.57</pose>
          </waypoint>
          <waypoint>
            <time>7.5</time>
            <pose>0 2 0 0 0 -1.57</pose>
          </waypoint>
        </trajectory>
      </script>
    </actor>
  </world>
</sdf>

问题: 这个人或其它模型的配置是透明的,激光无法监测到对应的物体

gazebo添加动态障碍物插件

参照: https://zhuanlan.zhihu.com/p/404197579
https://blog.csdn.net/allenhsu6/article/details/114068662

默认gazebo9 的插件路径: /usr/lib/x86_64-linux-gnu/gazebo-9/plugins

kint@kint:~$ ls /usr/lib/x86_64-linux-gnu/gazebo-9/plugins 
libActorPlugin.so           libCameraPlugin.so       libFiducialCameraPlugin.so  libHydraPlugin.so            libLinearBatteryConsumerPlugin.so  libRandomVelocityPlugin.so  libSkidSteerDrivePlugin.so
libActuatorPlugin.so        libCartDemoPlugin.so     libFollowerPlugin.so        libImuSensorPlugin.so        libLinearBatteryPlugin.so          libRayPlugin.so             libSonarPlugin.so
libArduCopterPlugin.so      libCessnaGUIPlugin.so    libForceTorquePlugin.so     libInitialVelocityPlugin.so  libLinkPlot3DPlugin.so             libRaySensorNoisePlugin.so  libSphereAtlasDemoPlugin.so
libArrangePlugin.so         libCessnaPlugin.so       libGimbalSmall2dPlugin.so   libJointTrajectoryPlugin.so  libLookAtDemoPlugin.so             libRegionEventBoxPlugin.so  libTimerGUIPlugin.so
libAttachLightPlugin.so     libContactPlugin.so      libGpuRayPlugin.so          libKeyboardGUIPlugin.so      libModelPropShop.so                libRestUiPlugin.so          libTouchPlugin.so
libBlinkVisualPlugin.so     libDepthCameraPlugin.so  libHarnessPlugin.so         libKeysToJointsPlugin.so     libMudPlugin.so                    libRestWebPlugin.so         libTransporterPlugin.so
libBreakableJointPlugin.so  libDiffDrivePlugin.so    libHeightmapLODPlugin.so    libLensFlareSensorPlugin.so  libPlaneDemoPlugin.so              libRubblePlugin.so          libVehiclePlugin.so
libBuoyancyPlugin.so        libElevatorPlugin.so     libHydraDemoPlugin.so       libLiftDragPlugin.so         libPressurePlugin.so               libSimEventsPlugin.so       libWindPlugin.so

kint@kint:~$ ls /usr/lib/x86_64-linux-gnu/gazebo-9/plugins  | grep libActorCollisionsPlugin

编译并拷贝好对应插件后
kint@kint:~$ ls /usr/lib/x86_64-linux-gnu/gazebo-9/plugins  | grep libActorCollisionsPlugin
libActorCollisionsPlugin.so


参考自己下载源码去编译,注意gazebo的版本和branch对应

附:在gazebo中添加碰撞插件

1.下载gazebo源码

git clone https://github.com/gazebosim/gazebo-classic 
注意branch: gazebo9

2.进入actor_collisions文件夹

cd examples/plugins/actor_collisions
3.编译碰撞插件

mkdir build
cd build
cmake ..
make
4.插件拷贝

sudo cp libActorCollisionsPlugin.so /usr/lib/x86_64-linux-gnu/gazebo-9/plugins 
5.测试插件

gazebo actor_collisions.world

actor_collisions.world 中的动态物体代码部分如下,如要在原静态world中添加,直接将actor标签整过去就行,修改相应的运行轨迹waypoint:

 <actor name="actor">

   <plugin name="actor_collisions_plugin" filename="libActorCollisionsPlugin.so">
     <scaling collision="LHipJoint_LeftUpLeg_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="LeftUpLeg_LeftLeg_collision" scale="
       8.0
       8.0
       1.0
     "/>
     <scaling collision="LeftLeg_LeftFoot_collision" scale="
       8.0
       8.0
       1.0
     "/>
     <scaling collision="LeftFoot_LeftToeBase_collision" scale="
       4.0
       4.0
       1.5
     "/>
     <scaling collision="RHipJoint_RightUpLeg_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="RightUpLeg_RightLeg_collision" scale="
       8.0
       8.0
       1.0
     "/>
     <scaling collision="RightLeg_RightFoot_collision" scale="
       8.0
       8.0
       1.0
     "/>
     <scaling collision="RightFoot_RightToeBase_collision" scale="
       4.0
       4.0
       1.5
     "/>
     <scaling collision="LowerBack_Spine_collision" scale="
       12.0
       20.0
       5.0
     " pose="0.05 0 0 0 -0.2 0"/>
     <scaling collision="Spine_Spine1_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="Neck_Neck1_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="Neck1_Head_collision" scale="
       5.0
       5.0
       3.0
     "/>
     <scaling collision="LeftShoulder_LeftArm_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="LeftArm_LeftForeArm_collision" scale="
       5.0
       5.0
       1.0
     "/>
     <scaling collision="LeftForeArm_LeftHand_collision" scale="
       5.0
       5.0
       1.0
     "/>
     <scaling collision="LeftFingerBase_LeftHandIndex1_collision" scale="
       4.0
       4.0
       3.0
     "/>
     <scaling collision="RightShoulder_RightArm_collision" scale="
       0.01
       0.001
       0.001
     "/>
     <scaling collision="RightArm_RightForeArm_collision" scale="
       5.0
       5.0
       1.0
     "/>
     <scaling collision="RightForeArm_RightHand_collision" scale="
       5.0
       5.0
       1.0
     "/>
     <scaling collision="RightFingerBase_RightHandIndex1_collision" scale="
       4.0
       4.0
       3.0
     "/>
   </plugin>
   <skin>
     <filename>walk.dae</filename>
     <scale>1.0</scale>
   </skin>
   <animation name="walking">
     <filename>walk.dae</filename>
     <scale>1.000000</scale>
     <interpolate_x>true</interpolate_x>
   </animation>
   <script>
     <loop>true</loop>
     <delay_start>0.000000</delay_start>
     <auto_start>true</auto_start>
     <trajectory id="0" type="walking">
       <waypoint>
         <time>0.000000</time>
         <pose>0.000000 1.000000 0.000000 0.000000 0.000000 0.000000</pose>
       </waypoint>
       <waypoint>
         <time>0.500000</time>
         <pose>0.195090 0.980785 0.000000 0.000000 0.000000 -0.196350</pose>
       </waypoint>
       <waypoint>
          <time>1.000000</time>
          <pose>0.382683 0.923880 0.000000 0.000000 0.000000 -0.392699</pose>
       </waypoint>
       <waypoint>
          <time>1.500000</time>
          <pose>0.555570 0.831470 0.000000 0.000000 0.000000 -0.589049</pose>
       </waypoint>
       <waypoint>
          <time>2.000000</time>
          <pose>0.707107 0.707107 0.000000 0.000000 0.000000 -0.785398</pose>
       </waypoint>
       <waypoint>
          <time>2.500000</time>
          <pose>0.831470 0.555570 0.000000 0.000000 0.000000 -0.981748</pose>
       </waypoint>
       <waypoint>
          <time>3.000000</time>
          <pose>0.923880 0.382683 0.000000 0.000000 0.000000 -1.178100</pose>
       </waypoint>
       <waypoint>
          <time>3.500000</time>
          <pose>0.980785 0.195090 0.000000 0.000000 0.000000 -1.374450</pose>
       </waypoint>
       <waypoint>
          <time>4.000000</time>
          <pose>1.000000 0.000000 0.000000 0.000000 0.000000 -1.570800</pose>
       </waypoint>
       <waypoint>
          <time>4.500000</time>
          <pose>0.980785 -0.195090 0.000000 0.000000 0.000000 -1.767150</pose>
       </waypoint>
       <waypoint>
          <time>5.000000</time>
          <pose>0.923880 -0.382683 0.000000 0.000000 0.000000 -1.963500</pose>
       </waypoint>
       <waypoint>
          <time>5.500000</time>
          <pose>0.831470 -0.555570 0.000000 0.000000 0.000000 -2.159840</pose>
       </waypoint>
       <waypoint>
          <time>6.000000</time>
          <pose>0.707107 -0.707107 0.000000 0.000000 0.000000 -2.356190</pose>
       </waypoint>
       <waypoint>
          <time>6.500000</time>
          <pose>0.555570 -0.831470 0.000000 0.000000 0.000000 -2.552540</pose>
       </waypoint>
       <waypoint>
          <time>7.500000</time>
          <pose>0.382683 -0.923880 0.000000 0.000000 0.000000 -2.748890</pose>
       </waypoint>
       <waypoint>
          <time>8.500000</time>
          <pose>0.195090 -0.980785 0.000000 0.000000 0.000000 -2.945240</pose>
       </waypoint>
       <waypoint>
          <time>9.500000</time>
          <pose>0.000000 -1.000000 0.000000 0.000000 0.000000 -3.141590</pose>
       </waypoint>
       <waypoint>
          <time>10.500000</time>
          <pose>-0.195090 -0.980785 0.000000 0.000000 0.000000 2.945245</pose>
       </waypoint>
       <waypoint>
          <time>11.500000</time>
          <pose>-0.382683 -0.923880 0.000000 0.000000 0.000000 2.748895</pose>
       </waypoint>
       <waypoint>
          <time>12.000000</time>
          <pose>-0.555570 -0.831470 0.000000 0.000000 0.000000 2.552545</pose>
       </waypoint>
       <waypoint>
          <time>12.500000</time>
          <pose>-0.707107 -0.707107 0.000000 0.000000 0.000000 2.356195</pose>
       </waypoint>
       <waypoint>
          <time>13.000000</time>
          <pose>-0.831470 -0.555570 0.000000 0.000000 0.000000 2.159845</pose>
       </waypoint>
       <waypoint>
          <time>13.500000</time>
          <pose>-0.923880 -0.382683 0.000000 0.000000 0.000000 1.963495</pose>
       </waypoint>
       <waypoint>
          <time>14.000000</time>
          <pose>-0.980785 -0.195090 0.000000 0.000000 0.000000 1.767145</pose>
       </waypoint>
       <waypoint>
          <time>14.500000</time>
          <pose>-1.000000 0.000000 0.000000 0.000000 0.000000 1.570795</pose>
       </waypoint>
       <waypoint>
          <time>15.000000</time>
          <pose>-0.980785 0.195090 0.000000 0.000000 0.000000 1.374445</pose>
       </waypoint>
       <waypoint>
          <time>15.500000</time>
          <pose>-0.923880 0.382683 0.000000 0.000000 0.000000 1.178095</pose>
       </waypoint>
       <waypoint>
          <time>16.000000</time>
          <pose>-0.831470 0.555570 0.000000 0.000000 0.000000 0.981745</pose>
       </waypoint>
       <waypoint>
          <time>16.500000</time>
          <pose>-0.707107 0.707107 0.000000 0.000000 0.000000 0.785395</pose>
       </waypoint>
       <waypoint>
          <time>17.000000</time>
          <pose>-0.555570 0.831470 0.000000 0.000000 0.000000 0.589045</pose>
       </waypoint>
       <waypoint>
          <time>17.500000</time>
          <pose>-0.382683 0.923880 0.000000 0.000000 0.000000 0.392695</pose>
       </waypoint>
       <waypoint>
          <time>18.000000</time>
          <pose>-0.195090 0.980785 0.000000 0.000000 0.000000 0.196345</pose>
       </waypoint>
     </trajectory>
   </script>
 </actor>

激光可视效果图:
在这里插入图片描述

在这里插入图片描述

gazebo中动态障碍物实时pose

  1. gazebo_ros_p3d 无法发布world中model的pose
    运动中机器人是可以通过这以odometer的形式发布话题
    https://github.com/ros-simulation/gazebo_ros_pkgs/blob/noetic-devel/gazebo_plugins/src/gazebo_ros_p3d.cpp
 <plugin name="robot_p3d" filename="libgazebo_ros_p3d.so">
   <alwaysOn>true</alwaysOn>
   <updateRate>50.0</updateRate>
   <bodyName>base_link</bodyName>
   <topicName>robot_pose</topicName>
   <gaussianNoise>0.01</gaussianNoise>
   <frameName>world</frameName>
   <xyzOffsets>0 0 0</xyzOffsets>
   <rpyOffsets>0 0 0</rpyOffsets>
 </plugin>   

动态模型使用gazebo_ros_p3d插件发布pose待研究

无效的
    <!-- <plugin name="people_p3d" filename="libgazebo_ros_p3d.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>50.0</updateRate>
      <bodyName>actor</bodyName>
      <topicName>people_pose</topicName>
      <gaussianNoise>0.01</gaussianNoise>
      <frameName>world</frameName>
      <xyzOffsets>0 0 0</xyzOffsets>
      <rpyOffsets>0 0 0</rpyOffsets>
    </plugin> -->
  1. gazebo提供相应的服务与话题接口可以查看model的pose信息
int@kint:~$ rostopic list | grep state
/gazebo/link_states
/gazebo/model_states

kint@kint:~$ rosservice list | grep state
/gazebo/get_link_state
/gazebo/get_model_state
kint@kint:~$ rostopic  echo  /gazebo/model_states
name: 
  - ground_plane
  - Untitled
  - cube_20k
  - Dumpster
  - Dumpster_0
  - jersey_barrier
  - actor
  - turtlebot3_burger
pose: 
  - 
    position: 
      x: 0.0
      y: 0.0
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
  - 
    position: 
      x: 0.603431
      y: 0.0078
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
  - 
    position: 
      x: -5.38602065236
      y: -6.80744881043
      z: 0.499999533763
    orientation: 
      x: -1.56147498596e-07
      y: 4.11218458777e-07
      z: 0.000350767461665
      w: 0.999999938481
  - 
    position: 
      x: 5.96634000329
      y: -7.4192400014
      z: 0.000917228865924
    orientation: 
      x: -4.4374537364e-08
      y: 8.20482662792e-07
      z: -3.21807825887e-11
      w: 1.0
  - 
    position: 
      x: 6.01622000329
      y: 6.8208899986
      z: 0.000917228865924
    orientation: 
      x: -4.4374537364e-08
      y: 8.20482662792e-07
      z: -3.21807825887e-11
      w: 1.0
  - 
    position: 
      x: -2.42989
      y: -0.195854
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.703329181425
      w: 0.710864306711
  - 
    position: 
      x: -0.762738254539
      y: -0.685481094471
      z: 1.032665
    orientation: 
      x: -0.224475849993
      y: 0.65300445035
      z: 0.665474749341
      w: -0.283441596422
  - 
    position: 
      x: -0.0451317038465
      y: 0.0244496431331
      z: -0.00100340529416
    orientation: 
      x: -0.00228018314614
      y: 0.00312514199549
      z: 0.588102512665
      w: 0.808777144119
twist: 
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: 0.0
      y: 0.0
      z: 0.0
    angular: 
      x: 0.0
      y: 0.0
      z: 0.0
  - 
    linear: 
      x: -0.00109069429249
      y: 0.000179601510918
      z: 1.84796141906e-05
    angular: 
      x: 7.65645076952e-05
      y: -1.82519279997e-05
      z: 0.0165613168548

kint@kint:~$ rosservice call /gazebo/get_model_state "model_name: 'actor'
relative_entity_name: ''" 
header: 
  seq: 1
  stamp: 
    secs: 628
    nsecs: 363000000
  frame_id: ''
pose: 
  position: 
    x: -0.734865579665
    y: 0.655232085776
    z: 1.030874
  orientation: 
    x: 0.261328317576
    y: 0.654221918987
    z: 0.66146012535
    w: 0.257238592986
twist: 
  linear: 
    x: 0.0
    y: 0.0
    z: 0.0
  angular: 
    x: 0.0
    y: 0.0
    z: 0.0
success: True
status_message: "GetModelState: got properties"


  1. 常见一个ros节点程序,订阅gazebo模型发布的pose, 再将目标模型的pose以odometer方式发布

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

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

相关文章

深入了解Java中的SQL注入

深入了解Java中的SQL注入 本文以代码实例复现了Java中JDBC及Mybatis框架采用预编译和非预编译时可能存在SQL注入的几种情况&#xff0c;并给予修复建议。 JDBC 首先看第一段代码&#xff0c;使用了远古时期的JDBC并且并没有使用预编译。这种简单的字符串拼接就存在SQL注入 …

一云七芯!ZStack 祝贺上海市金融信创联合攻关基地荣获一等奖

2022年11月初&#xff0c;由上海市总工会、中共上海市经济和信息化工作委员会、上海市经济信息化委员会主办的2022上海城市数字化转型 “智慧工匠”选树、“领军先锋”评选活动信创应用竞赛决赛暨颁奖典礼中&#xff0c;“一云七芯适配验证云平台及服务解决方案”获得信创应用案…

GitHub2022年度前100的Java面试真题高频知识点汇总

前言 这是我在工作、面试中学习并总结到的一些知识点&#xff0c;都是一些比较典型的、面试常常被问到的问题。 如果你平时没有注意去总结的话&#xff0c;那么当你面试被问到的时候可能会是一脸懵圈&#xff0c;就算这个问题你知道怎么回事&#xff0c;但是你平时没有认真总…

【win11内存占用高优化】未运行程序,系统内存占用50以上

这里写自定义目录标题前言打开控制面板找到电源键功能找到快速启动选项&#xff0c;取消勾选&#xff0c;确定win X以管理员身份打开powershell输入如下命令&#xff0c;回车关闭终端完成前言 windows11在未运行任何其他程序的情况下&#xff0c;内存占用超50%&#xff0c;可…

速度收藏,Fiddler详细使用教程出炉!

目录 01、抓取不同类型接口数据 02、数据模拟以及过滤规则 03、如何模拟接口响应数据 04、使用fiddler进行评论接口测试 绵薄之力【软件测试学习资源分享】 01、抓取不同类型接口数据 查看windows本机的IP 配置fiddler 需要保证要抓取的手机与电脑保持同一网段&#xff0…

转换 FLAC、APE 无损音乐格式为 iTunes 支持导入的 M4A 格式

大家知道常见的无损音乐格式有 FLAC、APE、WAV 等这些格式。其中 FLAC (Free Lossless Audio Codec) 格式因为是免费自由的压缩编码、无损压缩&#xff0c;且受到操作系统、软件及硬件的广泛支持。所以是非常流行常见的无损音乐格式。 自 2005 年 Mac OS X v10.4 开始&#xf…

《垃圾回收算法手册 自动内存管理的艺术》——其他分区策略(笔记)

文章目录十、其他分区策略10.1 大对象空间10.1.1 转轮回收器10.1.2 在操作系统支持下的对象移动10.1.3 不包含指针的对象10.2 基于对象拓扑结构的回收器10.2.1 成熟对象空间的回收10.2.2 基于对象相关性的回收10.2.3 线程本地回收10.2.4 栈上分配10.2.5 区域推断10.3 混合标记—…

磨金石教育摄影技能干货分享|传统民居摄影作品欣赏

我们知道在绘画领域有写实和写意之分&#xff0c;写实多用于人像的描绘&#xff0c;写意多用于山水田园画的创作。尤其是在中国传统绘画艺术中&#xff0c;写意简直就是创作的精髓。 写实和写意的区别在于&#xff0c;前者侧重真实还原&#xff0c;后者在于主管情感表达。 建筑…

哈希表、哈希桶(C++实现)

1. 哈希 1.1 概念 哈希&#xff08;hash&#xff0c;中文&#xff1a;散列&#xff1b;音译&#xff1a;哈希&#xff09;&#xff0c;是一种算法思想&#xff0c;又称散列算法、哈希函数、散列函数等。哈希函数能指导任何一种数据&#xff0c;构造出一种储存结构&#xff0c…

机器学习笔记之配分函数(二)——随机最大似然

机器学习笔记之配分函数——随机最大似然引言回顾&#xff1a;对数似然梯度关于∇θL(θ)\nabla_{\theta}\mathcal L(\theta)∇θ​L(θ)的简化基于MCMC求解负相关于书中图像的解释引言 上一节介绍了对包含配分函数的概率分布——使用极大似然估计求解模型参数的梯度(对数似然…

5款高效率,但是名气不大的小众软件

今天推荐5款十分小众的软件&#xff0c;但是每个都是非常非常好用的&#xff0c;用完后觉得不好用你找我。 1.多窗口文件整理——Q-Dir Q-Dir 是一款多窗口文件整理工具&#xff0c;特别适合用户频繁在各个文件夹中跳转进行复制粘贴的文件归档操作。如果你的电脑硬盘中文件已经…

MySQL 数据库的增删查改 (2)

文章目录一. 数据库约束1. 约束类型2.NULL 约束3.UNIQUE 约束4.DEFAULT 约束5. PRIMARY KEY 约束6.FOREIGN KEY 约束二.表的设计三.插入四.查询1.聚合查询2.联合查询3.合并查询本篇文章继承与 MySQL 表的增删改查(1) 一. 数据库约束 1. 约束类型 NOT NULL -- 表示某一行不能…

下载安全证书到jdk中的cacerts证书库

最近在公司遇到访问https请求&#xff0c;JDK返回异常信息的问题。返回如下&#xff1a; java.lang.Exception: java.lang.Exception: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: u…

废弃阶段的风险评估

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的&#xff0c;但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段&#xff0c;通过风险评估以确定评估对…

线程安全介绍

线程安全 多线程程序处于一个多变的环境当中&#xff0c;可访问的全局变量和堆数据随时都可能被其他的线程改变。因此多线程程序在并发时数据的一致性变得非常重要。 竞争和原子操作 多个线程同时访问一个共享数据&#xff0c;可能造成很恶劣的后果。下面是一个著名的例子&a…

多数之和问题

文章目录多数求和问题1两数之和(无序)题解2两数之和(有序)题解3两数之和(二叉搜索树)题解4 三数之和题解5四数之和题解多数求和问题 针对给一组用例,和一个目标数target,求用例中多数相加等于target的所有数,且不能重复问题,一般有两种解法: 集合(不要求排序)双指针(要求排序…

万德L2接口代码执行工作的过程分享

在设计万德L2接口时&#xff0c;避免不了要用到 一些代码&#xff0c;今天小编来给各位分享一下万德L2接口代码执行工作的过程分享&#xff1a; 这里只分享部分功能执行的过程&#xff1a; OrderQueueRecord&#xff08;委托队列&#xff09; 字段名 类型 备注 stock_ex…

word文档

WORD行与行中间空出一行&#xff0c;怎么办&#xff1f; 这个情况又分两种情况&#xff1a; 第①种情况&#xff1a;行与行之间的空白行都多了一个回车符&#xff1a; Word中&#xff0c;当我们从网络上复制一些文本或者是拿到一些别人的文本&#xff0c;这种文本经常会有大…

自动切换背景的登录页面

自动切换背景的登录页面 有趣的小案例池子&#xff1a; JS实现定时器 JS实现关闭图片窗口 JS实现输入检验 获取焦点后隐藏提示内容的输入框 JS实现获取鼠标在画布中的位置 聊天信息框显示消息 JS点击切换背景图 自动切换背景的登录页面 JS制作跟随鼠标移动的图片 JS实现记…

电脑提示ISDone.dll错误怎么办?

在安装一些大型游戏时&#xff0c;容易出现ISDone.dll错误&#xff0c;那么这时我们该怎么办呢&#xff1f; 出现ISDone.dll错误的原因&#xff1f; ① RAM或硬盘空间不足&#xff0c;或内存和硬盘出现故障。 ② ISDone.dll和Unarc.dll文件损坏或丢失。 ③ 系统文件损坏。 …