自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (2)
  • 收藏
  • 关注

原创 glib主事件循环

glib 主事件循环

2022-06-30 17:42:47 973 1

原创 QEMU中的QOM(三)

这一节专门对类型的层次结构进行介绍,QOM通过这种层次结构实现了类似C++中的继承概念。edu设备的类型信息edu_info结构中有一个parent成员,这就指定了edu_info的父类型名称,edu的父类型是TYPE_PCI_DEVICE,表明edu设备被设计成为一个PCI设备。edu设备的父类型为TYPE_PCI_DEVICE,而TYPE_PCI_DEVICE的父类型为TYPE_DEVICE,而TYPE_DEVICE的父类型为TYPE_OBJECT所以这个edu类型的层次关系为TYPE_PCI_DE

2022-06-05 10:19:53 397

原创 QEMU中的QOM(2)

QEMU中的QOM

2022-06-05 09:21:41 262

原创 QEMU中的QOM(1)

qemu QOM

2022-06-02 17:21:11 577

原创 WSGI+WEBOB+ROUTES学习笔记(二)

一个与WSGI密切相关的工具包WebOb,它是一个用于对WSGI request环境environ进行包装以及用于创建WSGI response的一个包。Requestwebob.Request是WebOb中的一个重要对象。其会对environ参数进行封装,from webob import Requestreq=Request.blank('/article?id=1')#创建一个空的environ并将path转换成path_info和其他一些属性from pprint import pprin

2022-01-18 14:27:22 227

原创 WSGI+WEBOB+ROUTES学习笔记(一)

WSGI和WEBOB和ROUTES主要用于组合起来处理web发送过来的请求并将响应返回给web端,本篇主要来记录以下wsgi模块的作用。什么是WSGI在接收到HTTP的请求时,我们不需要关心是怎样接收到的,我们需要关心的是怎样处理传送来的请求,并将响应返回给web端。WSGI的作用就在这里,它主要应用于web server和web application之间。Web Server和Web application都实现了WSGI规范,然后各司其职:web server:接收来自客户端的HTTP请求,

2022-01-18 09:51:41 450

原创 python中MetaClass详解

都说python很容易,可我咋看的这么难,又是装饰器又是MetaClass的。搞得头大,那么什么是MetaClass,首先,我们要搞清楚python中有两中关系,issubclass和isinstance。issubclass用于判断一个类是否是一个类的父类。isinstance用于判断一个对象是否是一个类的实例。 MetaClass最基本的类就是type。可以用它来创建一个新的类A,此时这个新的类A就是type的一个实例isinstance(A,type)为真。因此,MetaClass主要...

2021-11-19 16:40:40 383

原创 Centos8中kvm和qemu-kvm源码编译

本文中在Centos8中进行编译,kvm源码编译对gcc版本有要求,qemu-kvm对python版本有要求,不能使用python3.kvm源码下载:git clone http://git.kernel.org/pub/scm/virt/kvm/kvm.git/本文中为/usr/local/src/kvm.git复制 /boot/config-4.18.0-305.3.1.el8.x86_64 到kvm.git目录下,并命令为.configcd /usr/local/src/kvm.git

2021-10-27 14:19:20 718

原创 Centos 制作rpm包

本文中的所有操作均在根用户下操作执行第一步:安装rpm-buildyum -y install rpm-build第二步:创建6个文件夹mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,\SPECS,RPMS,SRPMS,SOURCES}SOURCES:存放tar.gz包BUILD:存放tar.gz解压的文件BUILDROOT:rpm包的临时安装文件,放置执行文件和操作文档RPMS:存放生成的rpm文件SRPMS:存放生成的src.rpm文件SPE

2021-10-26 23:12:22 763

原创 libvirt笔记 网络接口

可以使用virInterface类中的方法检查和修改物理主机上的网络接口配置。这可以用来设置主机来对想要直接连接网络的客户域共享一个物理接口(简要说——奴役一个物理接口,然后为每个虚拟机创建伐设备管理你想分享接口),以及通用主机网络接口管理。除了物理硬件,这些方法还可以用于配置网桥、绑定接口和vlan接口。virInterface类不用于配置虚拟网络(用于在NAT后隐藏客户域的接口);虚拟网络是使用virNetwork类来配置的。每个主机接口都由virInterface类的一个实例表示,每个实例都有一个

2021-09-30 11:08:17 440

原创 libvirt笔记network

虚拟网络可以使用networkLookupByName,networkLookupByUUID,networkLookupByUUIDString和listNetworks这几种方法来发现,可以用下面几种例子展示。import sys​import libvirt​​conn = None​try:​ conn = libvirt.open("qemu:///system")​except libvirt.libvirtError as e:​ print(repr(e), fi

2021-09-29 20:10:22 213

原创 libvirt笔记 存储池

Libvirt通过存储池和卷对物理主机进行存储管理。存储池是由管理员(通常是专门的存储管理员)预留给虚拟机使用的存储数量。存储池由存储管理员或系统管理员将存储池划分为存储卷,存储卷作为块设备分配给虚拟机。例如,负责NFS服务器的存储管理员创建一个共享来存储虚拟机的数据。系统管理员在虚拟化主机上定义一个带有共享详细信息的池(例如,nfs.example.com:/path/to/share应该挂载在/vm_data上)。当池启动时,libvirt在指定的目录上挂载共享,就像系统管理员登录并执行’mount

2021-09-29 17:09:59 574

原创 libvirt笔记 动态改变配置文件

Libvirt提供了一个通用的Block Job方法,可用于初始化和管理属于域的磁盘上的操作。通过调用与所需操作相关联的函数(例如。blockPull)。一旦启动,就以相同的方式管理所有的块作业。它们可以被中止、限制和查询。完成后,将发出一个异步事件来指示最终状态。blockPull()启动指定磁盘的块拉操作。该操作仅对经过特殊配置的磁盘有效。blockPull将用备份映像中的数据填充磁盘映像。一旦从备份映像提取了所有数据,磁盘就不再依赖于备份映像。可以通过blockJobInfo查询磁盘中是否存在活跃

2021-09-29 11:02:10 194

原创 libvirt笔记 PCI设备直通

PCI设备直通功能允许将主机上的物理PCI设备直接分配给来宾机。客户操作系统驱动程序可以直接使用设备硬件,而无需依赖主机操作系统的任何驱动程序功能。在使用PCI设备直通时需要注意一些事项。当将PCI设备直接分配给客户机时,如果不首先从客户机热拔下设备,迁移是不可能的。此外,libvirt并不保证直接设备分配是安全的,将安全策略决策留给底层虚拟化技术。安全PCI设备透传通常需要特殊的硬件功能,例如用于英特尔芯片组的VT-d功能,或用于AMD芯片组的IOMMU功能。PCI设备可以在两种模式下连接,“托管”或

2021-09-29 10:52:34 906

原创 libvirt笔记 获取设备xml信息

获取磁盘信息:import sys​import libvirt​from xml.dom import minidom​​domName = 'Fedora22-x86_64-1'​​conn = None​try:​ conn = libvirt.open("qemu:///system")​except libvirt.libvirtError as e:​ print(repr(e), file=sys.stderr)​ exit(1)​​dom = c

2021-09-29 10:30:52 115

原创 libvirt笔记硬件设备使用率查询

通过BIOS引导可以用于支持完全虚拟化的管理程序。在这种情况下,BIOS有一个引导顺序优先级(floppy、harddisk、cdrom、network),决定从哪里获得/找到引导映像。<domain>​ ...​ <os>​ <type>hvm</type>​ <loader readonly='yes' type='rom'>/usr/lib/xen/boot/hvmloader</loader>​

2021-09-29 09:32:43 208

原创 libvirt笔记 获取XML信息

域在libvirt中是使用xml文件定义的。所有只与域相关的内容,如内存和CPU,都在域XML中定义。域XML格式在http://libvirt.org/formatdomain.html上指定。如果您的系统安装了libvirt-devel包,那么您可以在/usr/share/doc/libvirt- developer -version/目录下进行本地访问。客户域的配置信息可以通过使用XMLDesc方法获取。此方法以XML数据流的形式返回域的当前描述。然后可以对该流进行解析,以获取关于域和组成域的所有部

2021-09-28 17:14:15 350

原创 libvirt笔记 migration

迁移是获取客户域的映像并将其移动到某处的过程,通常是从一个节点上的hypervisor移动到另一个节点上的hypervisor。有两种迁移方法。migrate方法采用已建立的hypervisor连接,并指示域迁移到此连接。migrateToUri方法接受一个指定系统管理程序连接的URI,打开连接,然后指示域迁移到这个连接。可以向这两个方法传递一个参数来指定实时迁移。为了成功地完成迁移,需要在源和目标hypervisor之间共享存储。迁移方法的第一个参数指定要用于迁移目标的连接。为必选参数。migrate

2021-09-28 16:48:51 206

原创 libvirt笔记 关闭domain

一个域可以被使用两种方法停止,shutdown和destroy.shutdown方法是软关机,发送给guest OS信号,立即关闭。而destroy的作用是硬关机如直接拔掉电源。suspend和resume方法是指获取正在运行的客户机并临时保存其内存状态的过程。稍后,可以将来宾程序恢复到最初的运行状态,继续在它停止的地方执行。暂停不会保存客户内存中的持久图像。为此,使用save。save和restore方法是指获取正在运行的客户机并将其内存状态保存到文件的过程。稍后,可以将客户机恢复到最初的运行状态,继

2021-09-28 16:15:52 330

原创 libvirt domin的生命周期控制

libvirt 可以控制域的整个生命周期,域可以在下面几种状态中进行转换:1.undefined.这是基线状态,域没有被定义或创建2.Defined.域被定义了但没有运行,该状态也可以描述为Stopped3.Running,一个正在运行的域被定义并且在一个hypervisor上定义4.Paused.已暂停的客户域处于运行状态的挂起状态。它的内存映像已经被临时存储,并且可以在客户域操作系统不知道它曾经挂起的情况下恢复到Running状态。5.Saved.已保存的域已将其在暂停状态下捕获的内存映像保存

2021-09-28 15:02:16 166

原创 libvirt笔记virDomain的详解

virDomain的实例对象就是一个虚拟机,有三种方法可以查找存在的域,lookupByID,lookupByName,lookupByUUID.每种方法都要域的标识符作为参数,如果没找到则返回None,import sys​import libvirt​​conn = None​try:​ conn = libvirt.open("qemu:///system")​except libvirt.libvirtError as e:​ print(repr(e), file=sy

2021-09-28 11:17:34 1081

原创 libvirt笔记(四)获取主机信息

import sysimport libvirtconn=Nonetry: conn=libvirt.open("qemu:///system")except libvirt.libvirtError as e: print(repr(e),file=sys.stderr) exit(1)host=conn.getHostname()print('Hostname:'+host)vcpu=conn.getMaxVcpus(None)print('Maximum sup

2021-09-27 19:58:30 251

原创 libvirt笔记(三)获取信息方法

可以使用getCapabilities方法调用来获取关于虚拟化主机功能的信息。如果成功,它将返回一个包含XML功能的Python字符串(如下所述)。如果发生错误,则返回None。下面的代码演示了getCapabilities方法的使用:import sys​import libvirt​​conn = None​try:​ conn = libvirt.open("qemu:///system")​except libvirt.libvirtError as e:​ print(

2021-09-27 16:39:48 333

原创 libvirt笔记(二)URI formats

Libvirt使用统一资源标识符(uri)来标识系统管理程序连接。本地和远程管理程序都是由libvirt使用uri来解决的。URI方案和路径定义要连接的管理程序,而URI的主机部分确定它的位置。libvirt 本地URIs有以下的格式driver:///systemdriver:///sessiondriver+unix:///systemdriver+unix:///session支持的drivers如下:Driver Descriptionqemu For managing qemu

2021-09-27 16:11:58 201

原创 libvirt笔记(一)virConnection

为避免专业术语和概念产生歧义,将其定义如下:Domain: 一个运行了操作系统的虚拟机Hypervisor: 虚拟化监视层Node:一台物理服务器,节点可以是任意类型,通常根据用途划分,例如,存储节点,集群节点和数据节点。Storage Pool: 存储媒体的集合,例如物理硬盘,一个存储池可以划分为更小的存储单元为卷,可以被分配给一个或多个域。Volume:存储空间,从存储池中分配,一个卷可以被一个或多个Domain使用,通常再Domain中作为虚拟硬盘1.在libvirt中,连接是系统中每个操

2021-09-27 15:51:30 487

原创 VM Centos7安装KVM

VM Centos7安装KVM首先检查虚拟机是否开启vm-T功能本文主要记录了在VM上安装KVM的步骤。在安装Centos系统的时候可以选择虚拟化和虚拟化平台。此时默认安装了3个包组virtualization-hypervisor 提供虚拟机的环境,主要包含qemu-kvmvirtualization-tools 管理离线虚拟机镜像的工具,主要有libguestfsvirtualization-client 管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-

2021-09-10 14:40:22 260

原创 Sql server数据库批量更新

需要解决的问题:对于数据库中a表中的某个字段,需要通过替换b表中的某个字段中的值来进行更新。解决办法:首先将b表中的字段值赋给a表中。然后利用replace(字段名,‘旧字符串’,‘新字符串’)来更新。update a set 字段1=b.字段2 from b where a.id=b.idupdate a set 字段1=REPLACE(字段1,‘旧字符串’,‘新字符串’)...

2021-04-27 09:27:31 1057

原创 基于VTK的标签图像生成小工具

深度学习标签图像制作工具。1、图片按钮选择文件所在文件夹。图片可以是png或bmp文件2、label按钮开始勾画感兴趣范围。3、accept按钮确认勾画完成4、modify修改勾画区域5、back删除最后一个掩膜6、save保存掩膜图像7、上一张前翻图像8、下一张后翻图像9、当前文件显示图像绝对路径快捷方式w建图像前翻s图像后翻。space建确定勾画完成。举例首先按label按钮进行勾画,勾画完成按accept按钮确定。勾画过程中可以鼠标左键按下出现绿色标记,标记之间用红线连接,

2020-10-07 20:55:34 316 1

原创 vtk体绘制的任意切割

好久没写关于VTK的博客了。最近一直在做这个任意切割体绘制的功能,类似3D slicer的剪刀功能。开始搜集了一些关于此类问题的论文,例如以及知乎上一篇关于vtk体绘制分割的动画讲解vtk体切割动画,这种方法很容易理解,我也实现了一下,可以实现功能,但是这种方法有个问题,对于像素来说,一个一个来比较的话,需要花费大量的时间,以512512512的图像来说,至少需要30S的时间,这对于实时性来说无疑是不满足要求的,为了解决这个问题,可以尝试用GPU并行计算来处理,但是...

2020-08-31 21:14:08 2702 20

原创 C#向SQLserver插入rtf格式文本的方法

写入SqlCommand cmd = new SqlCommand("update [template5] set examDesc=@examDesc WHERE template_id = @template_id"); cmd.Connection = conn; cmd.Parameters.AddWithValue("examDesc", rtfText); cmd.Parameters.AddWithValue("temp

2020-06-02 09:20:39 357

原创 Sqlserver top关键字

Sql Server 不支持MySQL中的limit关键字。但是它支持TOP。为了实现类似Limit的功能,可以进行如下操作。假设要查询结果中第7条到第9条记录。则select top 3 id from 表名 where id not in(select top 6 id from 表名)。此方法给出了一种分页查询的思路。其它的分页查询思路可以参考如下连接:分页查询详解...

2020-06-01 10:02:24 243

原创 c#反射机制

反射是一种机制,通过这种机制我们可以知道一个未知类型的类型信息。比如,有一个对象a,这个对象不是我们定义的,也许是通过网络捕捉到的,也许是使用泛型定义的,但我们想知道这个对象的类型信息,想知道这个对象有哪些方法或者属性什么的。甚至我们想进一步调用这个对象的方法。关键是现在我们只知道它是一个对象,不知道它的类型,自然不会知道它有哪些方法等信息。这时我们该怎么办?反射机制就是解决这么一个问题的。通过反射机制我们可以知道未知类型对象的类型信息。再比如,我们有一个dll文件,我们想调用里面的类,现在假设这个dll文

2020-05-29 16:13:04 149

原创 C#多线程和异步

在讲线程的时候,首先说一下进程,在计算机中可以认为一个程序就是一个进程。每个进程中又有多个线程。cpu在处理多线程任务时,并不是同时处理,也是随机的进行处理,只不过可以交替处理多个线程的任务,但由于CPU的速度很快,造成同时处理的假象。线程(Thread):是进程中的基本执行单元,是操作系统分配CPU时间的基本单位 ,在进程入口执行的第一个线程被视为这个进程的 主线程 。可以分为前台线程和后台线程。只有当前台线程全部结束时,程序才可以退出。多线程能实现的基础:1、CPU运行速度太快,硬件处理速度跟不上

2020-05-25 10:33:24 449

转载 C#中的委托和事件

说起委托和事件,以前也是看了又看,总也搞不清楚,今天看到一篇关于委托和事件的详解,所以来分析一下。详情请看此处原文什么是委托?我们在使用高级语言的时候,都会遇到变量。当定义变量的时候,就会为这个变量指定类型。当调用方法的时候,将变量做为实参传进去,这样就完成了方法的调用。但是当实参是一另一个方法时,怎么用?这里就用到了委托 。因此委托的实际意义就是把方法作为另一个方法的参数。举个例子(详情请点上方连接):public void GreetPeople(string name) { //

2020-05-24 18:24:51 333

原创 C# RICHTEXTBOX取消回车换行添加行号功能

今日,客户要求在写病历时可以像wps或word那样自动添加序号,方便医生使用,但在网上没有找到相关例子,所以自己用比较笨的方法实现了一下。主要用到的是richtextbox的keydown事件和TextChange事件private void richTextBox_examDiagnosis_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) {

2020-05-24 09:31:41 741

原创 FastReport Prepare()出错解决办法

将三个dll删除,重新加载。然后重新编译

2020-05-21 22:41:17 1774

原创 VTK和ITK中的坐标系统

当我们在处理医学图像和应用时,一个问题就是坐标系统之间的不同。在图像应用中通常有三个坐标系,分别是世界坐标系,解剖坐标系和图像坐标系。每种坐标系目的不同,呈现数据的方式也不一样。解剖坐标系由三个平面组成,从侧面看为矢状面,从正面看为冠状面,从上往下看为横截面。当人体结构被看作图像时,其左边和右边刚好反过来,但其前后和上下保持不变。在解剖位置,使用xyz坐标系,X轴从前到后,y轴从左到右,z轴从...

2020-05-07 22:23:17 3289 1

原创 SimpleITK中的图像分割

图像分割filters对图像进行处理,将其分割成有意义的区域,通常输出一个整数图像,其中每个整数代表一个目标,值0通常表示背景,1或255表示前景对象。img_T1 = sitk.ReadImage(fdata("nac-hncma-atlas2013-Slicer4Version/Data/A1_grayT1.nrrd"))img_T2 = sitk.ReadImage(fdata("nac...

2020-04-22 15:49:52 2985

原创 SimpleITK Image 类

有许多方法可以创建一个图像,所有图像的初始值都设置为零。var image=sitk.Image(256,128,64,sitk.sitkInt16);var image_2D=sitk.Image(64,64,sitk.sitkFloat32);var image_2D=sitk.Imgae([32,32],sitk.sitkUInt32);var image_RGB=sitk.Imag...

2020-04-22 10:55:56 1036

原创 vtkInteractorStyleTrackballCamera下移动物体和碰撞检测

最近想要做一个碰撞检测之类的东西,现在做了一个demo,用一个定位线来控制物体的移动和角度,线的一端固定在物体中心,当拖动线时,物体跟着移动,当拖动线的另一端时,物体跟着改变角度。在vtkInteractorStyleTrackCamera下鼠标移动控制的是改变相机从而改变观察角度和方向,两个物体总是保持相对静止,但有时我们希望保持一个物体在空间中保持相对静止,只改变另一个物体的位置,同时有时我们...

2020-03-25 20:56:41 2111 2

vtk二值掩膜生成小工具

png、bmp图像勾画生成二值掩膜图像。读取文件夹,可以修改勾画的区域。有快捷方式和按钮两种方式,具体操作方法可以看我的博客。

2020-10-07

segmmentvolume.rar

采用c#和activiz.net 。用鼠标进行二维勾画,然后进行布尔运算进行运算,功能类似3Dslicer的剪刀功能,目前只能针对dicom序列图像。选择文件夹就可以。

2020-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除