自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 收藏
  • 关注

原创 如何在Ubuntu中查看编辑lvgl的demo和examples?

在lvgl的github主页面有50多个仓库,找到lv_port_pc_eclipse这个仓库,点进去。仓库网址:https://github.com/lvgl/lv_port_pc_eclipse。安装完环境后,进入到仓库中,创建一个build文件夹,并且进入到当前文件夹中。如何在 Ubuntu系统中运行查看lvgl。拉取仓库代码和子仓库代码。

2024-03-17 10:05:31 407

原创 什么是事件冒泡?Littlevgl中的事件冒泡是怎么样的?

事件冒泡(Event Bubbling)是指当一个元素上的事件被触发时,该事件会从最底层的元素开始逐级向上传播,直到最顶层的元素(通常是文档对象)被触发。​ 例如我们点击一个按钮时,就会产生一个click事件,但这个按钮本身可能不能处理这个事件,事件必须从这个按钮传播出去,从而到达能够处理这个事件的代码中,或者按钮的父级绑定有事件函数,当该点击事件发生在按钮上,按钮本身并无处理事件函数,则传播到父级去处理。使用事件冒泡,首先要开启当前对象的事件冒泡,即。

2024-03-14 09:27:11 369

原创 Ubuntu安装Docker

默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。Docker在Ubuntu上依赖一些软件包。但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的。ubuntu下自带了docker的库,不需要添加新的源。添加当前用户到docker用户组。添加Docker官方GPG密钥。切换用户或注销重启使配置生效。添加Docker软件源。添加docker用户组。安装docker依赖。

2024-03-12 09:37:02 386

原创 C语言多线程学习

*线程(Thread)是程序执行的最小单元,是操作系统进行调度和执行的基本单位。**一个线程可以看作是一个轻量级的进程,它独立地执行特定的任务或代码段,并拥有自己的程序计数器、寄存器集合和栈空间。线程是操作系统提供的一种并发执行的机制,它允许在同一个程序中同时执行多个线程,每个线程都有自己的执行流和上下文信息。相对于多进程编程,多线程编程更加轻量级,线程之间的切换开销更小。一个程序通常至少有一个主线程(Main Thread),它是程序的执行入口。主线程会按照顺序执行程序中的指令,可以创建和管理其他线程。

2024-03-12 09:11:08 463

原创 安装cuda、cudnn、pytorch-gpu

k //要传输的块(数据包)数-i //要读取或写入的缓冲区的长度。TCP 的默认值为 128 KB,UDP 的默认值为 8 KB-r //分别进行双向测试-P //大写字母P,要运行的并行客户端流的数量​-d 同时进行双向传输测试-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000-r 单独进行双向传输测试-t 测试时间,默认10秒,eg:iperf -c 222.35.11.23 -t 5-F 指定需要传输的文件-T 指定ttl值bash。

2024-03-04 19:31:22 490

原创 使用gcc编译源文件时,-L、-l和-I的介绍和使用方法

参数后面可以跟着一个目录路径,该路径是库文件的存放位置。当编译器在链接过程中需要解析某个函数或符号的引用时,它会按照指定的顺序在这些路径下查找对应的库文件。参数可以让编译器在编译过程中更加严格地检查代码,提醒开发者潜在的问题。该参数后面跟着一个目录路径,编译器在编译源文件时会在指定的目录中查找头文件。它启用了一组警告,帮助开发者在编译代码时捕捉潜在的问题和不规范的代码。是用于编译和链接时指定库文件路径和库文件名称的选项。用于指定编译器在链接过程中搜索库文件的路径。选项指定库文件的搜索路径,使用。

2024-02-27 22:12:39 634

原创 【网络编程】实现服务器端和客户端的通讯的简单程序

因此,如果需要非阻塞地发起连接,可以使用非阻塞的套接字操作或者使用多线程/多进程技术。如果连接成功,客户端将会与服务器建立起连接,可以进行数据交换。初始化为一个特定的值,以便后续在代码中使用该地址结构绑定到服务器套接字上,从而指定服务器监听的地址和端口。给出了服务器地址结构的大小,即要连接的地址结构的字节数。函数,用于接受客户端的连接请求,并创建一个新的套接字。是客户端套接字,即客户端用于与服务器通信的套接字。是指向服务器地址结构的指针,即服务器的地址信息。函数创建一个新的套接字,并将其赋值给变量。

2024-02-27 16:06:44 82

原创 网络编程中的常用的头文件

位于 POSIX 标准库中,用于网络编程。它包含了一些函数原型和定义,用于处理 IP 地址的转换和操作。 头文件提供了以下函数:IP 地址转换函数:、、、、、、、。1、原型为转换互联网主机地址从数字和点符号在CP转换成网络字节顺序的二进制数据。2、原型为返回Internet地址的本地主机地址部分。3、原型为将网络号NET与本地地址host结合,使Internet主机地址按网络字节顺序排列。4、原型为返回Internet地址IN的网络号部分。5、原型为从CP开始的以数字和点表示的地址中按网络字节顺序

2024-02-26 23:01:03 123

原创 什么是消息队列

消息队列(Message Queue)是一种用于进程间通信(IPC)的机制,它允许多个进程通过共享消息队列来交换数据。在消息队列中,发送方将消息写入队列,接收方则从队列中读取消息,从而实现了进程间的通信。

2024-02-26 22:59:44 321

原创 sendto和recvfrom使用方法介绍

是一个用于创建 UDP 套接字的系统调用。AF_INETSOCK_DGRAM0SOCK_DGRAMsendto函数 和 recvfrom 函数一般用于UDP协议中,但是如果在 TCP 中 connect 函数调用后也可以用。sendto() 和recvfrom() --------> 利用数据报文方式进行数据传输。在无连接的数据报socket方式下,由于本地socket并没有与远端机器建立连接,所以在发送数据时应指明目的地址,该函数比send()函数多了两个参数,to表示目地机的IP地址和端口号信息,而。

2024-02-25 10:25:06 421

原创 darknet使用介绍

darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式。前言:为什么选择darknet?相比于TensorFlow来说,darknet并没有那么强大,但这也成了darknet的优势:darknet完全由C语言实现,没有任何依赖项,当然可以使用OpenCV,但只是用其来显示图片、为了更好的可视化;

2024-02-25 10:22:32 733

原创 Cmake基础使用方法

​ 动态库。:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。:将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。windows中,静态库名字。windows中,动态库名字。Linux中,静态库名字分为三部分,:要链接的其它静态库的名字。:指定要链接的静态库名字。)去尾(.a)之后的名字。

2024-02-24 09:25:59 357

原创 常用Shell命令介绍

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。(2〉等号两侧不能有空格(3)在 bash中,变量默认类型都是字符串类型,无法直接进行数值运算,需要**(())** 或[]。4)变量的值如果有经格,需要使用双引号或单引号括起来。c$* 代表命令行中所有的参数,$*把所有的参数看成一个整体$@ 代表命令行中所有的参数,$@把每个的参数分别看待shell脚本的$的含义$0: 脚本自身的名称;$1: 传入脚本的第一个参数;$2: 传入脚本的第二个参数;

2024-02-24 09:18:50 311

原创 docker使用方法

创建容器镜像,需要用到 Dockerfile 文件。Dockerfile 只是一个基于文本的文件,没有文件扩展名。Dockerfile 中包含 Docker 用来创建容器映像的指令脚本。-d 表示在后台运行容器,-p 表示创建容器和本机的端口映射,端口映射是必须的,不然无法对容器中的程序进行访问。-it 目录 使用交互方式运行,进入容器查看内容。删除指定的容器,不能删除运行的容器。-p 指定容器端口 80:80。-p ip:主机端口:容器端口。-p 主机端口:容器端口。-q 只显示容器的编号。

2024-02-23 17:08:12 726

原创 网络性能测试工具iperf3介绍及常规使用方法

iperf3是一个网络性能测试工具(iperf3下载地址iperf3 是一个用于测量网络带宽的开源工具,它是 iperf 工具的第三个版本。它主要用于评估网络的性能,包括带宽、延迟和数据包丢失率等。iperf3 使用客户端-服务器模型进行带宽测试。用户可以在一台计算机上运行 iperf3 服务器,并在另一台计算机上运行 iperf3 客户端,通过网络连接进行通信。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。

2024-02-23 16:51:43 615

原创 GIT中对子仓库的使用方法介绍

【代码】GIT中对子仓库的使用方法介绍。

2024-02-22 10:28:32 633

原创 在C语言中,设置Linux系统时间

命令用于将系统时钟的当前时间写入硬件时钟(Real Time Clock,RTC)。这在某些情况下很有用,例如在系统关机或重启之前,将当前准确的时间保存到硬件时钟中,以便下次启动系统时能够使用准确的时间。是C语言中用于表示日期和时间的结构体,通常用于在程序中操作和处理日期时间信息。结构体中的时间信息是正确的,否则可能会导致不准确的时间转换。这两个函数通常用于转换时间结构体和设置系统时间。这通常用于同步操作系统时间和硬件时钟的时间。函数通常用于转换时间结构体和设置系统时间。处理之前,需要先获取当前的时间戳。

2024-02-22 09:24:09 543

原创 C语言中,设置Linux中系统时间

这在某些情况下很有用,例如在系统关机或重启之前,将当前准确的时间保存到硬件时钟中,以便下次启动系统时能够使用准确的时间。结构体表示的时间转换为从 Epoch(1970-01-01 00:00:00 UTC)开始计算的秒数。结构体表示的时间转换为从 Epoch(1970-01-01 00:00:00 UTC)开始计算的秒数。结构体中的时间信息是正确的,否则可能会导致不准确的时间转换。函数用于设置系统时间为给定的秒数,即将系统时钟设置为指定的时间。结构体的指针,包含了年、月、日、时、分、秒等时间信息。

2024-02-22 09:00:56 1179

原创 C语言函数指针

在C语言进行编译时,每一个函数都有一个入口地址,该入口地址就是函数指针。函数指针初始化:函数指针变量=函数名//函数名即函数入口地址。返回类型说明符为函数指针所指向的函数的返回类型。参数列表为函数指针所指向函数的形参列表。通过函数指针可以调用它所指向的函数。

2023-08-16 15:28:50 108

原创 git 常见问题总结

在刚开始使用 git 时,会不熟悉 git 的命令,从而会出现各种各各样的问题,所以总结了一下目前使用 git 遇到的问题

2023-07-17 14:11:11 596

原创 windows中vscode配置C/C++环境

创建完成后会自动生成.vscode文件,里面包含了c_cpp_properties.json,launch.json,settings.json文件。2、在launch.json文件中添加"preLaunchTask"项,其值与tasks.json中的label项相同,这样按F5就会直接编译运行。点击箭头所指,在.vscode里边会生成tasks.json文件,生成的tasks.json文件如下。这个文件可以自动生成,按下Ctrl+Shift+P,在输入框中输入Tasks,会出现提示,选择。

2023-04-27 10:00:23 714 1

原创 Ubuntu22.04 vscode C++配置

miDebuggerPath:调试器的路径。program:调试入口文件的地址。cwd:程序启动调试的目录。

2023-03-02 17:00:21 763

原创 【Python】求矩阵的模长及单位向量

求矩阵的模长可以使用np.linalg.norm函数,默认是求二范数,也就是Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方。下边是求axis=0时的单位向量:import numpy as npa = np.array([[3, 9, 6, 5, 3], [9, 3, 8, 4, 0], [6, 8, 9, 2, 2]])print(a)a_x, a_y = np.gradient(a)p

2022-05-10 10:59:49 6375

原创 【学习笔记】python之对路径操作

1、os.listdir()读取某个路径文件夹下所有文件os.listdir('文件路径')返回包含目录中文件名称的列表。

2022-04-12 08:51:33 166

原创 【医学图像分割】CT医学图像的预处理(重采样)

CT图像中存在两个基本概念,窗口(window width)和窗位(window center),用于选取感兴趣的CT值范围,因为人体各组织结构不同,对X线吸收程度各异,形成不同的CT值,因此可以利用CT值来鉴别组织的性质。CT值的单位为HounsfieldHounsfield单位(HU)是计算机断层扫描(CT)中普遍使用的无量纲单位,用于标准、便捷的表达CT数值。Hounsfield单位是通过对测量得到的衰减系数进行线性变换得到的。这种转换是基于空气和的密度,其中纯水被定义为0 Hounsfield

2022-04-11 14:50:43 15949 8

原创 【LeetCode】盛最多水的容器

官方的题解已经很好了。class Solution {public: int maxArea(vector<int>& height) { int i = 0; int j = height.size() - 1; int len = height.size(); int res = 0; while(i < j && i < len && j &g

2022-04-01 18:54:34 374 1

原创 【代码】将dcm和nii.gz文件转为h5文件

import pydicomimport matplotlib.pyplot as pltimport numpy as npimport osimport timeimport nibabel as nibimport h5pydef show_image(image1): plt.figure(figsize=(10, 5)) plt.subplot(1, 1, 1) plt.axis('off') plt.imshow(image1) pl.

2022-03-31 21:52:45 1697 1

原创 【学习笔记】医学图像文件存储的格式及Python中的读取方式

1、nii和nii.gz格式2、dicom格式

2022-03-29 22:27:52 1747 2

原创 Python中计算二重积分

本文使用SciPy库中的积分计算方法。SciPy 介绍:SciPy 是一个开源的 Python 算法库和数学工具包。其中计算二重积分的函数在scipy.integrate中,名字为dblquad介绍:dblquad函数原型:def dblquad(func, a, b, gfun, hfun, args=(), epsabs=1.49e-8, epsrel=1.49e-8):参数解释:func:包含至少两个变量的Python函数或方法:y必须是第一个参数,x必须是第二个参数。

2022-03-14 10:37:35 5497 3

原创 【Python】matplotlib.pyplot显示图片

import matplotlib.pyplot as pltplt.axis("off") # 不显示刻度1.figure语法及操作(1)figure语法说明figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)num:图像编号或名称,数字为编号 ,字符串为名称figsize:指定figure的宽和高,单位为英寸;dpi:参数指定绘图对象的分辨率,即每英寸多少个像素.

2022-03-13 08:41:37 9588 6

原创 numpy中transpose()使用方法

函数原型numpy.transpose(a, axes=None)函数作用:反转或置换数组的轴; 返回修改后的数组。对于具有两个轴的数组 a,transpose(a) 是矩阵转置。参数解释:a:输入数组。axes:元组或整数列表,可选如果指定,它必须是包含 [0,1,..,N-1] 排列的元组或列表,其中 N 是 a 的轴数。 返回数组的第 i 个轴将对应于输入的轴编号 axes[i]。 如果未指定,则默认为 range(a.ndim)[::-1],它会反转轴的顺序。例子:a

2022-03-11 20:03:13 2075

原创 tmux使用方法

1、创建一个新的tmux会话tmux new -s name2、查看所有tmuxtmux ls3、离开 session有时候我们需要离开终端,操作其他的任务,需要离开该任务,但是又想该任务继续在后台执行,这时候我们需要在 tmux 的任何一个窗格中输入如下命令:tmux detach4、进入 session离开 session 之后,有时候我们还需要对某个 session 进行操作,这时候可以通过如下的操作:tmux attach -t <sess...

2022-03-10 10:39:40 1016 3

原创 ubuntu解决OpenCV安装的问题libGL.so.1和libgthread-2.0.so.0

E: Unable to locate package libgl1-mesa-glx这个报错是清华源的问题,换用阿里云的就没有了,用vim打开/etc/apt/sources.list这个文件,把里面的东西都删掉,复制阿里云源进去,保存就好了,后边的安装就正常。#添加阿里源deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb-src http://mirrors.aliyun.c.

2022-03-10 10:05:01 8804

原创 Git的配置

1、 配置用户名git config --global user.name "username" //( "username"是自己的账户名,)2、 配置邮箱git config --global user.email "[email protected]" //("[email protected]"注册账号时用的邮箱)以上命令执行结束后,可用git config --global --list 命令查看配置是否OK3、配置密钥ssh-keyge...

2022-01-04 13:06:55 360

原创 python显示磁共振图像(MRI)(pydicom)

介绍:MRI是多参数成像,其成像参数主要包括T1 、T2和质子密度等。在MRI检查中,可分别获取同一解剖部位或层面的T1WI、T2WI、PDWI等多种图像,从而有利于显示正常组织与病变组织。而包括CT在内的X线成像,只有密度一个参数,仅能获得密度对比一种图像。在MRI中,T1加权图像(T1WI)上的影像对比主要反映的是组织问T1的差别;T2加图像(T2WI)上的影像对比主要反映的是组织间T2的差别;PDWI上的影像对比主要反映的是组织间质子密度的差别。这种多参数成像有利于组织性质的确定。例如,在CT图像中,

2021-09-27 17:27:41 3420

原创 解决NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

在ubuntu20.04中文环境下安装nvidia驱动,肯定会报错,真是个巨坑,一定要在英文环境下装nvidia驱动:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.剩下的正常安装就没问题了,我是在中文环境下装不上驱动,重装了系统,再装驱动,接着就装上了。...

2021-09-13 17:11:52 542

原创 ubuntu20.04设置截图

点击右上角的几个图标,点击设置。找到设置中的键盘快捷键,往下翻就能找到截图,设置一下自己习惯用的截图快捷键,用惯了windows的qq的截图,所以我就 设置了复制选区截图到剪贴板为Ctrl+Alt+A。...

2021-09-13 16:06:13 537

原创 解决conda: command not found

按 ctrl + alt + t 打开终端,在终端中输入下边命令,会弹出一个框。gedit ~/.bashrc在框最后边一行加上下边的话,export 的作用是让全局都知道后边的路径是哪个export PATH=$PATH:/home/kunsir/anaconda3/bin后边的路径是你自己安装的anaconda的路径,修改完保存后退出然后重新执行一下./bashrc文件source ~/.bashrc最后输入conda list验证一下有没有配置好。...

2021-09-13 13:55:41 376

原创 ubuntu20.04安装百度网盘

去官网下载百度网盘,选择deb格式,然后进入文件所在的地方,打开终端,输入命令:sudo dpkg -i baidunetdisk_3.5.0_amd64.deb别忘了把文件名改成自己安装的版本

2021-09-12 21:48:51 5066 1

原创 python中numpy的setdiff1d()的用法

查看numpy.setdiff1d()函数原型:setdiff1d(ar1, ar2, assume_unique=False)函数作用:setdiff1d的作用是求两个数组的集合差。返回' ar1 '中不在' ar2 '中的唯一值。参数:ar1:输入数组ar2:输入比较数组assume_unique:如果为True,则假设输入数组的元素都是惟一的,可以加快计算速度,不会去掉数组ar1中重复的元素,也不进行排序。如果为False,函数进行去重操作,还会对元素排序,将会降低程序效

2021-09-11 22:31:55 3602

空空如也

空空如也

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

TA关注的人

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