自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [2024_08_12日志]ONNX Runtime的使用

Segmentation 错误。在 C++ API 上使用自定义 onnx 模型运行。模型在 Python 上按预期工作,但在 C++ API 上运行相同的模型时,会收到一个分段错误

2024-08-13 11:46:29 300

原创 Docker Network

Docker 容器网络是为应用程序所创造的虚拟环境的一部分,其能让应用从宿主机操作系统的网络环境中独立出来,形成容器自有的网络设备、IP 协议栈、端口套接字、IP 路由表、防火墙等等与网络相关的模块Docker 为实现容器网络,主要采用的架构由三部分组成:CNM、Libnetwork 和驱动。

2024-08-07 11:59:28 769

原创 Docker Volume(存储卷)

存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这意味着,在容器中的这个目录下写入数据时,容器会将内容直接写入到宿主机上与此容器建立了绑定关系的目录在宿主机上的这个与容器形成绑定关系的目录被称为存储卷。卷的本质是文件或者目录,其可以绕过默认的联合文件系统,直接以文件或目录的形式存在于宿主机上。

2024-08-06 17:39:50 876

原创 Docker Container(容器)

容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。虽然容器的本质是主机上运行的一个进程,但是容器有自己独立的命名空间隔离和资源限制。也就是说,在容器内部,无法看到主机上的进程、环境变量、网络等信息,这是容器与直接运行在主机上进程的本质区别。容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。

2024-08-04 20:33:27 981

原创 Docker Image(镜像)

Docker Image 本质上是一个 read-only 只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必须的文件可以将 Docker Image 理解成一个模板, 可以通过这个模板实例化出来很多容器image 里面是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。

2024-07-29 11:43:41 720

原创 Docker Registry(镜像仓库)

镜像仓库(Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。镜像仓库管理多个Repository, Repository通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分一个容器镜像包含了两个部分,一个是元数据,其实就是由 dockerfile 构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,其checksum这些信息都会记录下来。

2024-07-29 10:51:42 1128

原创 docker初识

实际的服务器或者计算机。相对于虚拟机而言的,对实体计算机的称呼。物理机给虚拟机提供硬件环境,有时也称为"寄主"或"宿主"是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

2024-07-26 17:22:39 566

原创 【Qt】界面优化

选择器示例说明全局选择器选择所有的widget类型选择器(type selector)选择所有的QPushButton和其子类的控件类选择器选择所有的QPushButton,不会选择子类ID选择器选择objectName为pushButton_2的控件后代选择器选择QDialog的所有后代中的QPushButton(子控件、孙子控件等)子选择器选择QDialog的所有子控件中的QPushButton并集选择器选择QPushButton、QLineEdit这两种控件属性选择器。

2024-04-13 00:16:47 1239

原创 【Qt】网络

在进行网络编程之前,需要在项目中的 .pro 文件中添加 network 模块有时添加之后要手动编译一下项目,使 Qt Creator 能够加载对应模块的头文件。

2024-04-09 15:55:53 908

原创 【Qt】多线程

在Qt中,多线程的处理一般是通过QThread类来实现QThread代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。QThread对象管理程序中的一个控制线程。

2024-04-07 17:00:20 846

原创 【Qt】文件与音视频

文件操作是应用程序必不可少的部分。Qt作为一个通用开发库,提供了跨平台的文件操作能力。Qt提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。

2024-04-05 18:07:37 1053

原创 【Qt】事件

事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制时,都会发出一个相应的事件。一些事件是在用户操作时发出,如键盘事件、鼠标事件等,另一些事件则是由系统本身自动发出,如定时器事件。

2024-04-04 11:04:22 1532

原创 【Qt】QDialog对话框

对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。

2024-03-27 20:50:21 1568

原创 【Qt】QMainWindow

QMainWindow包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、一个状态栏(status bar)和一个中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。它是一个可移动的组件,它的元素可以是各种窗口组件,它的元素通常以图标按钮的方式存在。一种是在创建工具栏的同时指定停靠的位置,另一种是通过QToolBar类提供的setAllowedAreas()函数来设置。

2024-03-26 22:22:06 1228

原创 【Qt】常用控件

Widget是Qt中的核心概念,英文原义是"小部件",此处将其翻译为"控件"。控件是构成一个图形化界面的基本要素,如按钮、列表视图、树形视图、单行输入框、多行输入框、滚动条、下拉框等都可以称为"控件"Qt作为一个成熟的GUI开发框架,内置了大量的常用控件。Qt也提供了"自定义控件"的能力,可以在现有控件不能满足需求时,对现有控件做出扩展,或者自定义出新的控件控件体系的发展完全没有控件。此时需要通过一些绘图API手动的绘制出按钮或者输入框等内容,代码编写繁琐。如文曲星的Lava平台开发。

2024-03-20 22:57:19 2240

原创 【Qt】QWidget的常见属性

在Qt中使用Qwidget类表示"控件",如按钮、视图、输入框、滚动条等具体的控件类,都是继承自Qwidget。可以认为Qwidget中包含了Qt整个控件体系中的通用部分位置和尺寸,包含x、y、width、height四个部分其中坐标是以父元素为参考进行设置的字体相关属性涉及到字体家族、字体大小、粗体、斜体、下划线该widget如何获取到焦点该部件是否接受拖放操作若设置为true,那么该部件就可以接收来自其他部件的拖放操作。

2024-03-05 22:38:36 1910

原创 skiplist(高阶数据结构)

skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文skiplist本质上是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。skiplist是一个list,是在有序链表的基础上发展起来的。若是一个有序的链表,查找数据的时间复杂度是William Pugh开始的优化思路。

2024-02-28 21:36:36 1075

原创 B-树(高阶数据结构)

若树为空,直接插入新结点,该结点为树的根结点树非空,找待插入关键字在树中的插入位置(找到的插入结点位置一定是叶子结点)检测是否找到插入位置(假设树中的key唯一,即该元素已经存在时则不插入)按照插入排序的思想将该关键字插入到找到的结点中检测该结点关键字数量是否满足B-树的性质:即该节点中的元素个数是否等于M,若小于则满足,插入结束若插入后结点不满足B树的性质,需要对该结点进行分裂:申请新的兄弟结点找到该结点的中间位置将该结点中间位置右侧的元素以及其孩子搬移到新结点中。

2024-02-25 10:17:35 1611 1

原创 【Qt】信号和槽机制

早期的Qt版本要求槽函数必须写到"public slots"下,但是现在高级版本的Qt允许写到类的"public"作用域中或者全局下返回值为void,需要声明,也需要实现可以有参数,可以发生重载代码编写槽函数widget.h:Q_OBJECTpublic:~Widget();//槽函数声明private:widget.cppQPushButton* btn = new QPushButton("按钮", this);delete ui;//槽函数定义。

2024-02-20 18:01:29 1639

原创 【Qt】环境安装与初识

什么是Qt?Qt是⼀个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展。Qt为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用C++语言进行高级开发指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分Qt支持的平台Qt的版本。

2024-02-15 21:55:39 2433

原创 LRU Cache

LRU是Least Recently Used的缩写,意思是最近最少使用,是一种Cache替换算法狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也有Cache,乃至在硬盘与网络之间也有某种意义上的Cache── 称为Internet临时文件夹或网络内容缓存等。

2024-02-13 11:32:50 973

原创 图(高阶数据结构)

若所给图不是一个连通图,那么从一个顶点开始进行深度优先遍历,无法遍历完图中的所有顶点。这时可以遍历标记数组,查看哪些顶点还没有被访问过,对于没有被访问过的顶点,则从该顶点处继续进行深度优先遍历,直到图中所有的顶点都被访问过。在每一轮松弛过程中,后面路径的更新可能会影响到前面已经更新过的路径,比如使得前面已经更新过的路径的长度可以变得更短,或者使得某些源顶点之前不可达的顶点变得可达,但每一轮松弛至少能确定最短路径中的一条边,若图中有。图的遍历指的是遍历图中的顶点,主要有广度优先遍历和深度优先遍历两种方式。

2024-02-11 22:15:18 1896 2

原创 技术架构的演进之路

架构学习

2024-02-04 22:58:38 1171 1

原创 并查集(高阶数据结构)

虽然利用其他数据结构也能完成不相交集合的合并及查询,但在数据量极大的情况下,其耗费的时间和空间极大。

2024-02-01 21:31:17 1174

原创 深入浅出继承

在继承中,父类也称为基类,子类是由基类派生而来的,所以子类又称为派生类。

2023-11-06 18:06:25 188

原创 一致性哈希算法

假设现在线上部署了三台缓存服务器,分别为0号、1号、2号。现有3万张图片需要缓存,最佳情况下希望图片被均匀的分配到3台缓存服务器上,即每台机器1万张左右可采用普通哈希算法进行操作,对缓存项的键进行哈希,将hash后的结果对缓存服务器的数量进行取模操作,通过取模后的结果,决定缓存项将会缓存在哪一台服务器上hash(图片名称) % 机器数量下面假设图片名称是不重复的。对同一个图片名称进行hash得到的结果是不变的,假设有3台服务器,将hash后的结果对3进行求余,那么余数一定是0、1或者2。

2023-10-28 21:54:24 353 5

原创 Linux环境基础开发工具的使用

对同一份源代码分别生成其release版本和debug版本的可执行程序,并通过ll指令可以看到,debug版本发布的可执行程序的大小比release版本发布的可执行程序的大小要大一点,其原因就是以debug版本发布的可执行程序当中包含了更多的调试信息。在每次重新生成可执行程序前,都应该将上一次生成可执行程序时生成的一系列文件进行清理,但每次都手动执行一系列指令进行清理工作的话,有些麻烦,因为每次清理时执行的都是相同的清理指令,所以可以将项目清理的指令也加入到Makefile文件中。

2023-10-25 21:22:21 278 2

原创 函数栈帧的创建与销毁剖析

寄存器名称功能eax累加器,是多数加法乘法指令的缺省寄存器ebx基地址寄存器,在内存寻址时存放基地址ecx计数寄存器,用于循环操作,比如重复的字符存储操作,或者数字统计edx作为eax的溢出寄存器,总是被用来放整数除法产生的余数esi源变址寄存器,主要用于存放存储单元在段内的偏移量通常在内存操作指令中作为“源地址指针”使用edi目的变址寄存器,主要用于存放存储单元在段内的偏移量eip控制寄存器,存储CPU下次所执行的指令地址(存放指令偏移地址)esp。

2023-10-10 15:10:44 144

原创 初识ProtoBuf

消息(message):定义的结构化对象,可以给这个结构化对象中定义其对应的属性内容为什么要定义消息?在网络传输中,需要为传输双方定制协议。定制协议本质就是定义结构体或者结构化数据,如:tcp,udp报文就是结构化的将数据持久化存储到数据库时,会将一系列元数据统一用对象组织起来,再进行存储ProtoBuf就是以message的方式来支持定制协议字段,后期帮助形成类和方法来使用message 消息类型名 {//...//消息命名规范:驼峰命名法,首字母大写。

2023-07-25 22:39:54 544 1

原创 【项目设计】基于负载均衡的在线oj平台

该项目是基于负载均衡的在线oj,模拟平时刷题网站(leetcode和牛客)写的一个在线判题系统编译运行模块:基于httplib库搭建的代码处理服务器,对用户提交的代码进行测试业务逻辑模块:基于httplib库并结合MVC模式框架搭建oj服务器,负责题目获取,网页渲染以及负载均衡地将用户提交代码发送给代码处理服务器进行处理数据管理模块:基于MySQL数据库对用户的数据、题目数据进行管理会话模块:基于cookie和session针对登录用户创建唯一的会话ID,通过cookie返回给浏览器。

2023-07-23 10:29:45 966

原创 ptmalloc底层原理剖析

ptmalloc是开源 GNU C Library (glibc) 默认的内存管理器,当前大部分Linux服务端程序使用的是ptmalloc提供的malloc/free系列函数,而其在性能上远差于Meta的jemalloc和Google的tcmalloc服务端程序调用ptmalloc提供的malloc/free函数申请和释放内存,ptmalloc提供对内存的集中管理,以尽可能达到:用户申请和释放内存更加高效,避免多线程申请内存并发和加锁。

2023-07-18 10:12:46 1027 2

原创 类和对象(三)

在创建对象时,编译器会通过调用构造函数,给对象中的各个成员变量一个合适的初始值虽然通过调用上述的构造函数后,对象中的每个成员变量都有了一个初始值,但是构造函数中的语句只能将其称为赋初值,不能称为初始化。因为初始化只能初始化一次,而构造函数体内可以进行多次赋值。

2023-07-15 18:28:52 420

原创 类和对象(二)

既然在不写的情况下,编译器会自动生成一个构造函数,那就没有必要写构造函数了吗?这个想法是。

2023-07-14 22:02:53 500

原创 类和对象(一)

在C语言中,结构体中只能定义变量,但在C++中,结构体内不仅可以定义变量,还可以定义函数//成员变量int a;double b;//成员函数但在C++中,更喜欢使用class来代替struct//类体:由成员变量和成员函数组成//注意后面的分号定义方式一声明和定义全部放在类体中。成员函数若在类中定义,编译器可能会将其当成内联函数处理定义方式二声明放在头文件(.h)中,定义放在源文件(.cpp)中。

2023-07-14 16:07:06 350

原创 Shell运行原理以及Linux中的权限问题

Windows以图形化界面为交互方式,而Linux以命令行界面为交互方式。Windows和Linux的交互方式虽然不同,但本质上是一样的,图形化界面和命令行界面都是为了让用户进行相关操作,而图形化界面和命令行界面即"外壳程序"Linux严格意义上说是一个操作系统内核,被称为"核心(kernel)",但一般用户不能直接使用kernel,而是通过kernel的"外壳程序",即Shell,来与kernel沟通Shell即"

2023-07-14 09:38:59 669

原创 使用C语言连接MySQL

要使用C语言连接MySQL,需使用MySQL官网提供的库上传到云服务器下载完毕后将其上传到云服务器即可。下面将下载的库文件解压后存放在一个名为makeuse的目录中进入解压后的目录中,可以看到有一个include子目录和一个lib子目录include目录下存放的是一批头文件bin目录下存放的是动静态库。

2023-07-13 10:16:21 4786 3

原创 MySQL用户管理

此时该用户查看数据库时,就能查看到test数据库了(创建用户后默认只能看到information_schema数据库,该数据库中保存的是MySQL服务器所维护的所有其他数据库的信息)MySQL中可以存在同名的用户,只要同名用户对应的登录主机不同即可,因为user表中的主键是复合主键,由user列和host列共同承担。但该用户目前只能查看表中的信息,而不能对表中的数据进行修改,因为只授予了该用户select权限。删除用户时若不指明待用户的登录地址,则默认删除的是登录地址为%的用户。

2023-07-12 18:06:51 607 1

原创 MySQL视图特性

下面用员工表和部门表作为测试表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。部门表中的dname代表的是部门名,deptno代表的是部门的部门号。根本原因就是因为视图和基表使用的是同一份数据,将视图中CLARK所在部门的部门名改为HR后,部门表中10号部门的部门名也变成HR了。当要查询每个员工及其对应的部门名称时,需使用员工表和部门表进行多表查询,并筛选出员工的部门号等于部门的部门号的记录。通过查询员工表,可以看到员工CLARK所在部门的部门号为10。

2023-07-11 17:00:47 328 1

原创 MySQL事务管理

隔离级别越严格,安全性越高,但数据库的并发性能也就越低,在选择隔离级别时需在两者之间找一个平衡点表中只写出了各种隔离级别下进行读操作时是否需要加锁,因为无论哪种隔离级别,只要需进行写操作就一定要加锁。

2023-07-11 16:15:34 2387 4

原创 MySQL索引特性

而MySQL的Buffer Pool和磁盘实际并不是直接交互的,所谓的MySQL与磁盘交互的基本单位是16KB,指的是MySQL的Buffer Pool与内核缓冲区之间是以16KB为单位进行交互的。数据库文件就是保存在磁盘中的一个个扇区中的,因此找到一个文件本质,即在磁盘上找到保存该文件的所有扇区。若两次IO是在同一时刻发出的,但其请求的扇区地址相差很大,那也只能称为随机访问,因为连续访问中的连续指的是访问的扇区地址的连续,而不是访问时间的连续,由于连续访问不需要过多的定位,因此效率较高。

2023-07-08 18:51:35 328 4

空空如也

空空如也

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

TA关注的人

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