VTK_python入门

2023-10-27

tk基本介绍

  1. VTK 库的框架结构

vtkObject -> vtkSource -> vtkFilter -> vtkMapper -> vtkActor -> vtkRenderer

对象 介绍
vtkObject vtk库的基类
vtkSource vtkFilter父类,为为整个可视化流程的开始定义具体的行为和接口,比如读取数据
vtkFilter 对原始数据进行滤波器处理,转化成可以直接应用算法模块的形式
vtkMapper 它将 vtkFilter 处理后的应用数据映射为几何数据,相当于为原始数据和图像数据之间定义了接口
vtkActor 表示渲染场景下一个特定物体(几何结构和属性)
vtkRenderer 为渲染器提供一种抽象规范,最终 vtkActor 通过 vtkRenderer 类将结果在窗口中显示出来

在这里插入图片描述

  1. vtk基本对象

    基本对象 介绍
    渲染控制器 定义与设备无关的坐标计算方法,创建渲染窗口
    渲染窗口 渲染窗口管理显示设备上的窗口,绘制方法可在渲染窗口上创建一个场景;渲染窗口是用户图形界面,其中包括了设置渲染窗口的大小,产生立体显示效果等方法
    渲染器 渲染器(Renderer)是管理光源照相机和绘制对象等的位置、属性等,提供了世界坐标系,观察坐标系及显示坐标系之间的转换
    灯光 灯光可在场景中照亮绘制对象
    摄像机 摄像机是定义观察者的位置
    角色 角色代表渲染场景中的绘制对象实体,通过参数调节可以设置角色的位置、方向、渲染特性、引用、纹理映射等属性,并可对角色进行缩放。
    特性 特性是说明几何物体的一些特性,实现三维图形真实感
    映射 映射制定了渲染数据和图形库中基本图元之间的联系
    变换 变换是一个放置 4x4 变换矩阵的堆栈,可以进行各种操作

    在vtk中绘制或者渲染一个场景,需要以下基本对象

  • vtkRenderWindow

  • vtkRenderer

  • vtkLight

  • vtkCamera

  • vtkActor

  • vtkProperty

  • vtkMapper
    在这里插入图片描述
    在这里插入图片描述

# 案例
import vtk
def Create():
    arrow_source = vtk.vtkArrowSource() # 数据源 箭头
    mapper = vtk.vtkPolyDataMapper() # 创建映射器
    mapper.SetInputConnection(arrow_source.GetOutputPort()) #映射器添加箭头的数据源
    actor = vtk.vtkActor() # 创建演员
    actor.SetMapper(mapper) # 给演员添加映射器
    ren = vtk.vtkRenderer() #创建绘制器
    ren.AddActor(actor) #绘制器加演员
    renWin = vtk.vtkRenderWindow() #创建显示窗口
    renWin.AddRenderer(ren) #向窗口中加入绘制器
    renWin.Render() #窗口读取绘制器,并生成图形

    iren = vtk.vtkRenderWindowInteractor() #窗口交互器
    iren.SetRenderWindow(renWin) #交互器中加入窗口
    iren.Initialize()
    iren.Start()
Vtk柱体
cylinder = vtk.vtkCylinderSource()
    cylinder.SetHeight(3.0)
    cylinder.SetRadius(1.0)
    cylinder.SetResolution(360)
    print("高:{0};半径:{1};角度:{2}".format(cylinder.GetHeight(),cylinder.GetRadius(),cylinder.GetResolution()))
    
	# 映射,将输入的数据转换为几何图元(点、线、多边形)进行渲染
    mapper =vtk.vtkPolyDataMapper()
    # 设置 VTK 可视化管线的输入数据接口,对应的可视化管线输出数据的接口为 GetOutputPort()
    mapper.SetInputConnection(cylinder.GetOutputPort())

    actor = vtk.vtkActor()

    prop = vtk.vtkProperty()
    prop.SetColor(0.6,0.96,1)
    bmpReader = vtk.vtkBMPReader()
    bmpReader.SetFileName("sky.bmp")
    texture = vtk.vtkTexture()
    texture.SetInputConnection(bmpReader.GetOutputPort())
    texture.InterpolateOn()
    actor.SetProperty(prop)
    actor.SetTexture(texture)
    
    actor.SetMapper(mapper)

    renderer = vtk.vtkRenderer()
    renderer.AddActor(actor)
    renderer.SetBackground(0.1,0.2,0.4)

    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(renderer)
    renWin.SetSize(1200,1200)
    renWin.Render() # 绘制窗口内所有绘制器同步渲染绘制

    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    iren.Initialize() #必须
    iren.Start() #开始进入事件响应循环

三维空间中渲染对象最常用的是vtkProp子类是vtkActor(几何数据)和vtkVolume(体数据)

vtkProp子类负责确定渲染场景中对象的位置、大小和方向信息。
Prop依赖于两个对象(Prop一词来源于戏剧里的“道具”,在VTK里表示的是渲染场景中可以看得到的对象。)一个是Mapper(vtkMapper)对象,负责存放数据和渲染信息,另一个是属性(vtkProperty)对象,负责控制颜色、不透明度等参数。

VTK数据结构

import vtk

# *******三个点 加拓扑*******
# 创建点数据
points = vtk.vtkPoints()
# 创建顶点类型 points是坐标不是顶点
vertices = vtk.vtkCellArray()

# 创建点的坐标
points_list = [[1,0,0],[0,0,1],[0,0,0]]

for point in points_list:
    # 每个点坐标加入到 vtkPoints 中,返回加入点的索引号
    id = points.InsertNextPoint(point)
    # 在每个坐标点上分别创建一个顶点,顶点是单元 Cell 里的一种类型
    vertices.InsertNextCell(1)
    vertices.InsertCellPoint(id)

line0 = vtk.vtkLine()
# 线有两个端点,连接两个point
line0.GetPointIds().SetId(0,0) 
line0.GetPointIds().SetId(1,1)

line1 = vtk.vtkLine()
line1.GetPointIds().SetId(0,1)
line1.GetPointIds().SetId(1,2)

line2 = vtk.vtkLine()
line2.GetPointIds().SetId(0,2)
line2.GetPointIds().SetId(1,0)

lines = vtk.vtkCellArray()
lines.InsertNextCell(line0)
lines.InsertNextCell(line1)
lines.InsertNextCell(line2)

# 创建 vtkPolyData 对象
polydata = vtk.vtkPolyData()
# 指定数据集的几何结构(由 points 指定)
polydata.SetPoints(points)
# 指定数据集的拓扑结构(由 vertices 指定)
polydata.SetVerts(vertices)

polydata.SetLines(lines)


mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(polydata)
actor = vtk.vtkActor()
actor.SetMapper(mapper)

actor.GetProperty().SetPointSize(10)
actor.GetProperty().SetLineWidth(10)

render = vtk.vtkRenderer()
render.SetBackground(0, 0, 0)

# Renderer Window
window = vtk.vtkRenderWindow()
window.AddRenderer(render)
window.SetSize(600, 600)

# System Event
win_render = vtk.vtkRenderWindowInteractor()
win_render.SetRenderWindow(window)

# Style
win_render.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera())

# Insert Actor
render.AddActor(actor)

win_render.Initialize()
win_render.Start()

可视化基础

单元 Cell 是可视化的基础,单元是一系列有序的点按指定类型连接所定义的结构。这些点的连接顺序通常被称为顶点列表(Connectivity List);所指定的类型定义了单元的拓扑结构;点的坐标定义了单元的几何结构。

单元就是有序点集

单元是由单元类型单元顶点列表 两部分构成

单元类型:决定点集的顺序,也就是拓扑

单元顶点列表由点的索引号表示,通过索引号可以找到坐标值

线性单元和非线性单元

VTK 单元类型分为线性和非线性和其他类型。单元类型的线性和非线性划分主要是以插值函数为依据。

线性单元

线性单元采用的是线性或者常量插值函数。单元里的任意一条辨都是由两个点连接定义的。常见的有:

单元
Vertex 顶点,由一个点定义,是零维的基本类型
Polyvertex 多顶点,多个顶点组合而成,是零维的组合单元,其定义不受顶点顺序的限制
Line 直线,一维的基本类型,由两个点定义,方向是从第一个点指向第二个点
Polyline 折线,由一条或多条直线组合而成,属于一维的类型。由n+1个有序的点连接定义的,n表示折线的线段条数,每两个点(i, i+1)定义一条线段
Triangle 三角形,二维的基本类型,由三个点按逆时针的方向连接定义的,点的连接方向和表面法向量符合右手法则
非线性单元

数值分析领域里为了更准确、精确地表达数据,采用非线性单元作为数据的基本表达结构。线性单元可以很容易转换成线图元被图形库处理,非线性单元不被图形库直接支持,因此非线性单元必须先转换成线性单元后才能被图形库支持。

VTK除了提供一套复杂的非线性单元接口框架,另一种做法就是在非线性单元的每一条曲线增加一个关键点,或者增加一个曲面来近似模拟非线性单元。

属性数据

属性数据主要用于描述数据集的属性特征,对数据集的可视化实质上是对属性数据的可视化,例如根据温度显示不同的颜色。

vtk也有矢量数据,VTK的矢量数据也是指既有大小也有方向的量,三维方向上用三元组(Triple)表示为(u, v, w),如速度、应力、位移等。

import vtk

points = vtk.vtkPoints()
points.InsertNextPoint(0,0,0)
points.InsertNextPoint(1,0,0)

polydata = vtk.vtkPolyData()
polydata.SetPoints(points)

weights = vtk.vtkDoubleArray()
weights.SetNumberOfValues(2)
weights.SetValue(0,1)
weights.SetValue(1,2)

polydata.GetPointData().SetScalars(weights)

weight = polydata.GetPointData().GetScalars().GetValue(0)

print(weight)
数据集

数据集由组织结构(拓扑和几何)以及属性数据组成。

  • vtkImageData

在这里插入图片描述

vtkImageData 类型的数据是按规则排列在矩形方格中的点和单元的集合,如果数据集的点和单元排列在平面(二维)上,称此数据集为像素映射(Pixmap)、位图或图像,由 vtkPixel 单元组成;如果排列在层叠面(三维)上,则称为体 (Volume),由 vtkVoxel 单元组成。数据维数用一个三元组 (nx, ny, nz) 来表示,分别表示在 X、Y 和 Z 方向上点的个数。

  • vtkPolyData

在这里插入图片描述

多边形数据集 vtkPolyData 由顶点 (Vertex)、多顶点 (Polyvertex)、线 (Line)、折线 (Polyline) 和三角条带 (Triangle Strip) 等单元构成,多边形数据是不规则结构的,并且多边形数据集的单元在拓扑维度上有多种类型,多边形数据是数据、算法和高速计算机图像学的桥梁。

  • vtkRectilinearGrid

在这里插入图片描述

vtkRectilinearGrid 类型(线性网格)的数据是排列在矩形方格中的点和单元的集合,线性网格的拓扑结构是规则的,但其几何结构只是部分规则,也就是说,它的点是沿着坐标轴排列的,但是两点间的间隔可能不同,与 vtkImageData 类型的数据相似,线性网格是由像素或体素等单元组成的,它的拓扑结构通过指定网格的维数来隐式表达,几何结构则通过一系列的 x, y, z 坐标来表达。

  • vtkStructuredGrid

在这里插入图片描述

vtkStructuredGrid 是结构化网格数据,具有规则的拓扑结构和不规则的几何结构,但是单元之间没有重叠或交叉,如图(c)所示。结构化网格的单元是由四边形或六面体组成,结构化网格通常用于有限差分分析。典型的应用包括流体流动、热量传输和燃烧学等。

  • vtkUnstructuredGrid

在这里插入图片描述

vtkUnstructuredGrid,非结构化网格是最常见的数据集类型,它的拓扑结构和几何结构都是不规则的,在此数据集中所有单元类型都可以组成任意组合,所以单元的拓扑结构从零维延伸至三维,如图(f)所示。

VTK中任一类型的数据集都可用非结构化网格来表达,vtkUnstructuredGrid 类型数据的存储需要大量的空间以及计算时需要消耗大量的资源,除非迫不得已,一般较少使用此种类型的数据集。非结构化网格主要用于有限元分析、计算几何和几何建模等领域。

  • vtkUnstructuredPoints

在这里插入图片描述

vtkUnstructuredPoints,非结构化点集,是指不规则地分布在空间的点集。非结构化点集具有不规则的几何结构,不具有拓扑结构,非结构化点集用离散点来表达。

通常,这类数据没有固定的结构,由一些可视化程序识别和创建的,非结构化点集适合表现非结构化数据,为了实现数据的可视化,可将这种数据形式转换成其它一些结构化的数据形式

img

数据集的存储
  • vtkDataArray 数据集的访问基于索引,从零开始

  • Tuple(元组)的概念

许多可视化数据是由多个数据分量组成的,如RGB颜色数据由红、绿、蓝三个分量组成,为了在连续数组中表达这一类数据,VTK引入了元组(Tuple)的概念。元组是数据数组的子数组,用于存储数据类型相同的分量数据,元组的大小在给定后不会改变。

vtkDataArray 存储的是数值数据,如属性数据 (Attribute Data) 和点数据 (Point) 等。有些属性数据,如点、矢量、法向量和张量等,在定义时就需要指定元组的大小。例如,点、矢量和法向量等属性数据,元组的大小是3,而张量属性数据的元组大小是9 (即3×3的矩阵),标量属性数据对于元组的大小则没有任何要求,对于处理标量属性数据的算法,通常都是只处理标量每一个元组数据的第一个分量。VTK提供了将多分量的数据数组分离成单一分量的数据数组,以及将单一分量的数据数组合并成多分量的数据数组的类,即 vtkSplitField 和 vtkMergeFields。

import numpy
import vtk
from vtk.util.numpy_support import numpy_to_vtk

if __name__ == '__main__':
    # 读取 txt 文档
    source_data = numpy.loadtxt("bun000.txt")

    # 新建 vtkPoints 实例
    points = vtk.vtkPoints()
    # 导入点数据
    points.SetData(numpy_to_vtk(source_data))
    # 新建 vtkPolyData 实例
    polydata = vtk.vtkPolyData()
    # 设置点坐标
    polydata.SetPoints(points)

    # 顶点相关的 filter
    vertex = vtk.vtkVertexGlyphFilter()
    vertex.SetInputData(polydata)

    # mapper 实例
    mapper = vtk.vtkPolyDataMapper()
    # 关联 filter 输出
    mapper.SetInputConnection(vertex.GetOutputPort())

    # actor 实例
    actor = vtk.vtkActor()
    # 关联 mapper
    actor.SetMapper(mapper)

    # render
    render = vtk.vtkRenderer()
    render.SetBackground(0, 0, 0)

    # Renderer Window
    window = vtk.vtkRenderWindow()
    window.AddRenderer(render)
    window.SetSize(1200, 1200)

    # System Event
    win_render = vtk.vtkRenderWindowInteractor()
    win_render.SetRenderWindow(window)

    # Style
    win_render.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera())

    # Insert Actor
    render.AddActor(actor)
    win_render.Initialize()
    win_render.Start()
def data_actor_transform(source_data):


    points = vtk.vtkPoints()
    points.SetData(numpy_to_vtk(source_data))

    polydata = vtk.vtkPolyData()
    polydata.SetPoints(points)

    vertex = vtk.vtkVertexGlyphFilter()
    vertex.SetInputData(polydata)
   # 设置变换过程
    transform = vtk.vtkTransform()
    transform.Translate(0,0,0)
    transform.RotateY(180)
   # 新建变换的 filter
    transformFilter = vtk.vtkTransformPolyDataFilter()
     # 将变换 filter 输入设置为点数据模型 
  transformFilter.SetInputConnection(vertex.GetOutputPort())
    # 设置变换过程
    transformFilter.SetTransform(transform)
    transformFilter.Update()

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(transformFilter.GetOutputPort())

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)

    return  actor

vtk.vtkTransformPolyDataFilter()
# 将变换 filter 输入设置为点数据模型
transformFilter.SetInputConnection(vertex.GetOutputPort())
# 设置变换过程
transformFilter.SetTransform(transform)
transformFilter.Update()

mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(transformFilter.GetOutputPort())

actor = vtk.vtkActor()
actor.SetMapper(mapper)

return  actor

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

VTK_python入门 的相关文章

  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 在 Qt 服务器上验证用户身份

    我正在尝试使用 C QtTcpSocket 为个人项目 多人国际象棋游戏 实现身份验证系统 我的朋友建议了一种验证用户的方法 但我想问是否有更简单或更好的方法 来自 Python 背景 做这个项目主要是为了加深对 C 的理解 我将发布我朋友
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • 使用 vtk 给定一组点创建多条折线

    我需要使用 vtk 和 paraview 显示 50 个粒子空间中的轨迹 目前我的数据是pos x y t n 其中 n 是第 n 个粒子的标签 我已将所有数据保存在 vtk 文件中 该文件的组织方式如下 vtk DataFile Vers
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • Q风格所有权

    在 Qt 应用程序中使用样式时 我遇到了一个有趣的问题QStyle所有权 QStyle继承自QObject 通常接受QObject parent作为构造函数参数来管理其子级的生命周期 但QStyle的构造函数没有此构造函数参数 第一个问题
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • QWebEngineView 在 load() 或 page() 方法上崩溃

    我正在致力于将 Qt 5 5 QWebView 项目移植到 Qt 5 6 测试版 QWebEngine 我已经阅读了移植指南here https wiki qt io Porting from QtWebKit to QtWebEngine
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma

随机推荐

  • 电机矢量控制方法

    在工业控制领域 电动机是一个重要的研究方向 发电厂60 的能量都去驱动电动机来为人类服务 可见电机的控制在工业以及军事方面的重要性 电动机分为直流电机和交流电机 而交流电机包括同步交流电机和异步交流电机 同步电动机和异步电动机的区别在于 同
  • 跳出for循环

    跳出for循环有三种方式 1 continue 跳出当次循环 可继续进行下一个循环 function ceshi for var i 0 i lt 6 i if i 3 continue console log i ceshi 效果图 2
  • 如何设计管理员和用户登录界面C语言,管理员登录设计(第7节)

    本文实现管理员登录效果 当用户名和密码正确时 弹出登录成功提示 否则弹出用户名或密码错误提示 今天有以下三大学习任务 学习任务一 了解命名空间的定义 定义 namespace 空间名 类 引用 using 空间名 学习任务二 实现管理员登陆
  • 【micropython】SPI触摸屏开发

    背景 最近买了几块ESP32模块 看了下mircopython支持还不错 所以买了个SPI触摸屏试试水 记录一下使用过程 硬件相关 SPI触摸屏 使用2 4寸屏幕 常见淘宝均可买到 驱动为ILI9341 具体参数如下图 引脚描述 ESP32
  • C++中【字符串】与【整型】和【浮点型】转换攻略

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 C 算法刷题等过程中经常会遇到字符
  • 化工安全生产管理平台:融合重大危险源监控预警、可燃有毒气体检测报警、企业安全风险分区于一体

    产品概述 化工企业安全生产信息化管理平台 以实现化工企业安全生产数字化 信息化 智能化管理为目标 建设融合重大危险源监控预警管理 可燃有毒气体检测报警管理 企业安全风险分区管理 生产人员在岗在位管理和企业生产全流程管理于一体的安全生产信息化
  • 测试从业1到3年经验,常见软件测试工程师面试题总结

    前言 软件测试工程师 和开发工程师相比起来 虽然前期可能不会太深 但是涉及的面还是比较广的 前期面试实习生或者一年左右的岗位 问的也主要是一些基础性的问题比较多 涉及的知识主要有MySQL数据库的使用 Linux操作系统的使用 软件测试框架
  • SpringMVC文件的上传下载&JRebel的使用

    目录 前言 一 JRebel的使用 1 IDea内安装插件 2 激活 3 离线使用 使用JRebel的优势 二 文件上传与下载 1 导入pom依赖 2 配置文件上传解析器 3 数据表 4 配置文件 5 前端jsp页面 6 controlle
  • 【多目标跟踪MOT学习笔记】字节跳动ByteTrack论文研究(一):BYTE策略

    文章目录 前言 一 是什么ByteTrack 二 BYTE 1 BYTE method 概览 2 First Association 关联1 3 Second Association 关联2 4 Post Processing 后处理 4
  • 涅槃重生,BitKeep如何闯出千万用户新起点

    在全球 BitKeep钱包现在已经有超过千万用户在使用 当我得知这个数据的时候 有些惊讶 也有点意料之中 关注BitKeep这几年 真心看得出这家公司的发展之迅速 还记得2018年他们推出第一个版本时 小而美 简洁顺手 他们大胆且略显理想主
  • [非线性控制理论]4_反馈线性化_反步法

    非线性控制理论 1 Lyapunov直接方法 非线性控制理论 2 不变性原理 非线性控制理论 3 基础反馈稳定控制器设计 非线性控制理论 4 反馈线性化 反步法 非线性控制理论 5 自适应控制器 Adaptive controller 非线
  • 【操作系统 · 线程】介绍、分类、多线程

    线程 介绍 分类 多线程 一 介绍 1 进程与线程 2 多线程 3 线程的功能 二 线程分类 1 用户级线程 2 内核级线程 3 其他方案 三 多核 多线程 一 介绍 进程中有两个重要概念 资源所有权 执行 因这一区别 许多操作系统中出现了
  • ueditor1.5 新版ueditor设置字体大小文件所在位置

    ueditor src plugins font js文件 将想添加的字体大小设置即可 fontsize 10 11 12 14 16 18 20 24 36 72
  • 【HBZ分享】java之二叉堆排序实战代码

    废话不多说 直接上代码 注释都在代码中 利用大顶堆排序 最终数组从小到大 复制即用无需导包 package 大顶堆 import java lang reflect Array import java util Arrays public
  • 30天自制操作系统学习-第1天

    第一天 1 批处理文件 直接由DOS命令行解释执行的文件 通常后缀名为 bat或 cmd 2 镜像文件 img后缀的文件 可用于制作操作系统文件 一个3 5英寸的软盘容量为1440k 3 nask 作者自己制作的汇编代码编译器 代码与nas
  • Adobe Creative Suite 5.5 简体中文版

    http www itopdog cn graphic image web design software adobe creative suite html Adobe Creative Suite 5 5 简介 Adobe Creati
  • xml和javaBean实现互转

    最近遇到了调用接口需要xml报文传递 用传统最简单的方式就是我们string手动拼接报文传递 这样调用问题解决了 返回的数据问题没有得到解决 因为返回的也是xml报文 需要对其做一些转换操作 既然转换 直接在传递时通过简单的方式将报文序列化
  • Python 日志管理模块logging

    参考 link https www cnblogs com nancyzhu p 8551506 html 日志 日志是跟踪软件运行时所发生的事件的一种方法 软件开发者在代码中调用日志函数 表明发生了特定的事件 事件由描述性消息描述 该描述
  • ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法

    程序连接orarle报ORA 12505错误 一 异常 ORA 12505 TNS listener does not currently know of SID given in connect descriptor The Connec
  • VTK_python入门

    tk基本介绍 VTK 库的框架结构 vtkObject gt vtkSource gt vtkFilter gt vtkMapper gt vtkActor gt vtkRenderer 对象 介绍 vtkObject vtk库的基类 vt