- 博客(180)
- 资源 (10)
- 收藏
- 关注
原创 python基础14 gRPC的流式(stream)传输(二)
上一章节的内容,描述了使用gRPC完成基础的请求和返回。在很多场景下,我们需要用RPC的方式,传输较大的数据流,如文件的上传和下载。为了满足这些需求,gRPC提供了stream的方式。从字面意思来理解,stream是一种数据流,源源不断或连续的数据推送。适用于服务端和客户端进行较大数据量的传输,如上传和下载大数据量的文件。
2025-04-10 12:32:40
289
原创 python基础13 gRPC的使用(一)
包含一系列名称-值对的信息的逻辑记录。每个项目通常称为字段。记录中必须定义字段类型、字段名称和字段编号。字段编号作为唯一标识符,不应更改。它从 1 开始,1 到 15 范围内的数字需要一个字节来编码。另一方面,16 到 2047 范围内的数字需要两个字节进行编码。在上述示例中,gRPC服务接收两个参数(一个int32类型和一个string类型),并返回一个string类型。代表服务定义。每个服务可以有一个或多个具有自己的请求和响应定义的 rpc。//其他rpc定义。
2025-04-09 16:07:49
652
原创 python基础12 模块/库的引用
在此章节,我们总结了基于同级目录下python模块的简单引用,以及基于__init__.py的高阶使用。通过这两种方式的组合,我们将可以实现项目中的各种模块的引用。
2025-04-07 17:21:23
318
原创 QT/C++ 多线程并发下载实践
为了实现多线性并发,我们需要在队列的take方法中启用QMutexLocker来保证线程安全,并启动QWaitCondition的wait方法以及waitone方法来实现元素阻塞式的访问。public://唤醒等待队列中的一个线程(来自wait)T take()//队列为空,则等待,否则直接返回队列头元素private:该类中,定义下载项目和下载任务对象。并在后续的线程池中,作为参数传递给执行函数。//下载项目bool quit;
2025-04-01 15:32:21
289
原创 python基础11 文件读写
该文件必须已存在。。该文件必须已存在,。如需任意位置写,需移动光标。:表示以二进制方式读取文件。该文件必须已存在。。打开即默认创建一个新文件,(即文件内原始数据会被新写入的数据清空覆盖)。。打开创建新文件并写入数据,如果文件已存在,则覆盖写。:表示以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写。。若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。。打开文件方式与写入方式和'a'一样,但是可以读。
2025-03-25 12:31:11
119
转载 python基础10 多线程、多进程和协程
第九章节的日志部分,已经涉及到了多线程和多进程的概念,所以在此章节单独做一个总结。链接中的文章已经讲的比较清晰,作者转载到此供自我学习使用。对于 I/O 密集型任务,如。多个线程同时修改同一个变量时,可能发生。对于 CPU 密集型任务,可以使用。,充分利用多核 CPU;管理线程池比手动创建。提供更高效的异步处理。
2025-03-20 15:07:10
25
原创 python基础9 日志的使用
前面章节,我们已经可以打印python程序中运行的各种状态信息,并捕获各种异常。在实际应用中,我们需要将这些信息记录到文件中,以备后续浏览。所以在此需要使用python的日志功能。
2025-03-19 15:26:40
646
原创 python基础8 单元测试
通过前面的7个章节,作者学习了python的各项基础知识,也学习了python的编译和执行。但在实际环境上,我们需要验证我们的代码功能符合我们的设计预期,所以需要结合python的单元测试类,编写单元测试代码。Python有一个内置的unittest模块,我们可以使用它来进行单元测试。
2025-03-18 14:56:59
1035
原创 python基础7 异常捕获
Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。python有很多内置的标准异常,列表如下:python处理异常有两种语法结构:try....except...else和try....except...finally。具体示例如下:也可以在一个分支类,处理多个异常类,语法结构如下:try....except...finally语法定义:具体示例:具体示例示例中,testfil
2025-03-18 09:40:00
918
原创 python基础5 __slots__和@property的使用
python是一种类似JavaScript的动态语言,允许对象在运行时自由添加属性。python定义一个特殊的__slots__变量,来限制对象可以添加的属性。__slots__
2025-03-17 14:44:13
112
原创 python基础4 类的继承和多态
当使用多重继承时,Python通过一个称为方法解析顺序(MRO)的规则来确定如何从父类中查找属性和方法。MRO定义了属性和方法搜索的顺序。如果在子类中找不到属性或方法,Python会首先在第一个父类中查找,然后是第二个父类,以此类推,直到找到为止
2025-03-17 12:25:16
157
原创 python基础3 类的定义和使用
在Car类的定义中,如果要把color和number定义为私有属性,不让外界直接访问,那么可以在属性名称前添加两个下划线。在这个章节中,我们学习了python类属性和方法的定义,类的初始化,私有属性和函数的定义。从上面的输出可以看到,添加两个下划线。
2025-03-17 11:07:59
170
原创 python学习1 基础知识
整数的定义和其他语言基本类似,区别如下:python中,整数允许添加分割,和是完全一样的。十六进制也是如此,如0xaa_bb。浮点数可以使用基础的数据类型1.233.141.23x109就是1.23e9;0.000012可以写成1.2e-5。字符串可以使用'和"包围来表示,如'this is string'和"this is string"。转移字符与其他语言类似,使用"\"来进行字符转义,如'I\'m \"OK\"!' 实际表示字符串I'm "OK"!
2025-03-13 15:05:35
144
原创 ubuntu20.04 编译vtk 9.3.1+vtkDicom+GDCM 3.0.24
cmake-gui如下图所示,选择源码目录和build目录:勾选 BUILD_SHARED_LIBS以及VTK_DEBUG_LEAKS。作者喜欢用vtkDicom库,添加了对vtkDicom的使用,所以启用了vtkDicom编译条件VTK_MODULE_ENABLE_VTK_vtkDICOM,添加方式如下:执行configure,在完成后的界面勾选使用gdcm。再次执行configure,提示错误,需要输入GDCM的路径。所以我们进入下一个环节,编译GDCM。
2024-09-12 14:05:39
810
原创 ubuntu20.04 Qt6引用dcmtk库实现dicom文件读取和字符集转换
安装完Qt6,新建Qt/QtQuick CMake工程编译出现如下错误:Found package configuration file: Qt6Config.cmake but it set Qt6 FOUND to FALSE so package "Qt6" is considered to be NOT FOUND.原因:这是因为系统中缺少OpenGL库,可以安装libgl1-mesa-dev解决方法:项目编译成功后运行,如果出现如下错误:qt.qpa.plugin: Could not lo
2024-09-10 15:17:27
544
原创 基于UDP的可靠传输,文件+目录(C++,Qt)
pub.h 定义通用数据类型和转换方法///请求类型定义file,folder///请求定义int type;//reqTypefileReq()///QString转string///string转QStringconfig.h 定义基础配置信息Q_OBJECTpublic:~config();///获取本地存储路径///获取本地服务端口///设置本地存储路径///设置本地服务端口private:///本地存储路径///本地服务端口。
2023-07-21 15:30:10
1556
1
原创 胶片打印、排版、自助打印(二)
灰度图像打印:彩色图像打印:通常情况下RGB类型DICOM图像包含如下的内容:图像的高度图像的宽度图像像素间距,读取Pixel Data的时候不需要,主要用于长度测量。一个像素取样点存储时分配到的位数,一般RGB的图像,每一个颜色通道都使用8位,所以一般取值为8。对于灰度图像,如果是256级灰阶,一般就是8位。如果高于256级灰阶,一般就采用16位。一个像素取样点存储时使用到的位数。比方说示例中CT影像,采用的是4K灰阶,像素值取值范围为0~4095,所以使用到的位数为12位。
2023-05-23 16:36:29
2134
1
原创 flutter Dio插件的使用 (十三)
Dio对象在App请求中一般在单例对象中使用,用来与后端进行普通的网络请求,如POST\GET等。Dio支持使用拦截器对所有的请求进行拦截,从而进行特殊处理,如增加token参数、请求和响应日志记录等。参考代码片段:引用头文件:import 'package:dio/dio.dart';import 'interceptor/http_interceptor.dart';在类的构造中,添加自定义的拦截器:class ThingsboardClient { ///....
2022-04-02 11:23:17
2612
1
原创 flutter 关键字 factory (十二)
最近一直在学习dart语言,以及类的定义和使用。在偶然的机会,看到了factory开头的定义的构造函数。所以查了一些资料来加深学习。 使用factory标识的类的构造函数,类似于设计模式中的单例模式,用来实例化只会创建一次的对象。具体使用参考如下的代码(来源:flutter 中factory(构造方法上的唯一对象) 与单例模式_Mars-xq的博客-优快云博客_flutter工厂函数怎么用):class Manager { // 工厂模式 : 单例公开访问点 factory...
2022-04-02 10:49:40
2198
原创 flutter 日志功能(十一)
如要使用flutter官方的日志类,需要添加对该库的依赖:dependencies: flutter: sdk: flutter logger: ^1.0.0在使用的类中,添加对logger包的引用:import 'package:logger/logger.dart';对logger类的简单使用:var logger = Logger();logger.d("debug messages!");不同级别日志的输出:///详细日志logger.v("V
2022-03-11 11:47:30
5729
原创 Dart语言Future、async、await异步(十)
像其他程序语言一样,dart主程序也是单线程执行的。如下的程序: String Step1() { return "Step1"; } String Step2() { return "Step2"; } String Step3() { return "Step3"; } void testA() { print(Step1()); print(Step2()); print(Step3()); }将按顺序执行
2022-03-10 16:34:34
415
原创 flutter+Dart 类的继承extends with implements (九)
主要涉及到三个关键字 extends、 with、 implements 。extends是类的继承中最普遍的方式,如要结合后面两个关键字使用,根据文档,需要保证操作顺序:extends,mixins,implements。示例如下:class ThingsboardAppState extends State<ThingsboardApp> with TickerProviderStateMixin implements TbMainDashboardHolder
2022-03-10 14:45:05
3291
原创 FLUTTER PUB GET失败(八)
最近在编译某工程项目的时候,提示缺少某些packages。然后执行PUB GET下载包的时候,提示连接到googleapi的URL失败。找到原因如下:Flutter无法访问资源库在国外的源,所以需配置资源度地址为中国源。修改方式如下:1 对于 Linux 和 MacOS添加如下的环境变量,打开~/.bashrc,在文档最后添加export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=htt
2022-03-10 11:47:58
3441
原创 flutter+Dart 类的继承(七)
1 关键字dart类的继承是用 extends关键字。class Person { String name = '张三'; num age = 30; void printInfo() { print('${this.name},${this.age}'); }}class Boy extends Person {}main() { final boy = Boy(); print(boy.name); boy.printInfo();}使用su
2022-03-08 18:06:57
303
原创 C++调用C#Dll
1 创建C# DLL,需要指定应用类型为“类库”,代码:namespace CSLib{ public class Class1 { private string name; public string Name { get {
2022-03-08 17:00:46
2744
原创 flutter StatefulWidget 和StatelessWidget(四)
flutter StatefulWidget 和StatelessWidget
2022-03-08 16:09:13
375
原创 flutter Scaffold布局框架(三)
创建程序的时候,对Scaffold感到特别陌生,所以特地学习了下,总结如下:Scaffold总体上来说,就是一个类似android app的简易框架,借助这个框架,可以很方便的创建顶部导航栏,中间主体,右下角浮动按钮,以及底部按钮工具栏。 home: Scaffold( appBar: AppBar( title: const Text('Flutter layout demo'), ), body: ListView(
2022-03-08 15:52:48
804
原创 dcmtk 将raw文件转换为dicom文件
1. 定义一个DcmFileFormat DcmFileFormat m_fileformat;2. 更新传输协议字段m_fileformat.getDataset()->updateOriginalXfer();3. 填充tag信息 FillInfo(DCM_SpecificCharacterSet, m_charset); FillInfo(DCM_MediaStorageSOPInstanceUID, m_image->SO
2021-04-08 10:38:41
1620
原创 关于4K高清分辨率下,QOpenGLWidget无法完整绘制图像问题的解决
最近使用4K摄像头,并在QT程序中启用了高清显示适配设置:#if (QT_VERSION >= QT_VERSION_CHECK(5,8,0)) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);#endif然后在QOpenGLWidget中进行了绘制:定义:class CQtViewerGl : public QOpenGLWidget, protected QOpenGLFunctions_2_0绘制:
2020-08-07 16:30:10
1886
【可执行程序】基于UDT的文件+目录可靠传输(C++,Qt)
2023-07-21
胶片打印演示程序 提供胶片布局切换,自定义布局,连接dicom打印机 支持纸质打印机和图像保存 支持自助打印方案
2022-11-21
医疗器械计算机软件验证方案模板.zip
2019-11-06
xxx系统__软件项目开发计划.zip
2019-10-15
医疗器械软件描述文档.zip
2019-10-15
c++基础教程,简洁扼要.
2018-05-07
Delphi 气泡对话框 绝对可用
2018-05-07
软件配置管理规范-值得下载
2018-05-07
模仿QQ抓图工具(Delphi版)
2008-11-05
python线程池无法正常执行 和queue.get冲突?
2025-03-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人