自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 区块链入门:使用JavaScript实现的简易BlockChain

区块链(Blockchain)是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本(Distributed Ledger),且对任何人都完全开放。它有种有趣的性质,就是一旦数据被记录到区块链中,日后就很难被改变。如何做到的?

2024-05-22 13:07:38 528

原创 Node.js后端实战:EV大事件Web后台 API 开发

在模块中,新增更新用户基本信息的路由:// 更新用户的基本信息在模块中,定义并向外共享更新用户基本信息的路由处理函数:// 更新用户基本信息的处理函数在模块中,新增重置密码的路由:// 重置密码的路由在模块中,定义并向外共享重置密码的路由处理函数:// 重置密码的处理函数在模块中,新增更新用户头像的路由:// 更新用户头像的路由在模块中,定义并向外共享更新用户头像的路由处理函数:// 更新用户头像的处理函数在模块中,添加新增文章分类的路由:// 新增文章分类的路由在。

2024-05-13 18:03:34 675

原创 Node.js基础:从入门到实战

先来看一段官方的介绍:为什么是基于 Chrome V8 呢?之前说过,因为它最牛逼。所以使用 V8 来做 Node.js 的引擎用以解析 JavaScript 的代码,这样可以让 JavaScript 跑的更快。所以我们的 Chrome 浏览器和 Node.js 用的是同一款 JavaScript 解析引擎,即 V8;

2024-05-12 21:11:34 680

原创 多目标跟踪入门介绍

近些年来随着深度学习的蓬勃发展,基于深度学习的多目标跟踪算法如雨后春笋般涌现出来,这里主要介绍上图中的三个。首先是 Sort 算法,该算法只包含特征提取和数据关联部分,需要额外的检测器提供目标位置信息,它可以与任意的检测器进行组合,对照上述图片对该算法的流程来进行介绍。首先假设当前在第 t 帧,左图表示 t - 1 帧的跟踪结果,首先通过检测器来检测第 t 帧中的所有检测对象。如中间图片中黑色实线框所示,使用卡尔曼滤波预测,第 t - 1 帧中的跟踪对象在第 t 帧中的位置,如图中黑色虚线框所示。

2024-05-10 22:05:30 735

原创 YoloV5的学习与使用

Yolo V5是一种先进的单阶段目标检测算法,它在 Yolo V4 的基础上添加了一些新的改进思路,使得速度与精度都得到了极大的性能提升。以下是关于 YOLOv5 的详细介绍:网络架构:YOLOv5的目标检测算法可以划分为四个通用的模块,包括输入端、基准网络、Neck网络与Head输出端。输入端负责接收图片,该网络的输入图像大小通常为608*608,会经过图像预处理阶段,如缩放和归一化。

2024-05-08 20:03:17 707

原创 深度学习模型训练套路与验证套路以及如何使用GPU进行模型训练

模板基本就是上面这些了,对于不同的学习任务上面的模板可能需要针对性的稍微的进行一点改动,但大体上都是如此,可以多参考 GitHub 上优秀的项目源码。一定要继续加油嗷!

2024-05-07 14:43:12 679

原创 PyTorch深度学习框架:从入门到实战

实例化SummaryWriter对象首先,你需要创建一个SummaryWriter对象,并指定一个日志目录。记录标量数据使用add_scalar方法记录单个数值,比如损失或准确率。记录图像数据使用add_image方法记录图像。记录直方图数据使用add_histogram方法记录张量的分布直方图。记录文本数据使用add_text方法记录文本信息。记录模型结构图使用add_graph方法记录模型的结构图。关闭SummaryWriter。

2024-05-06 21:42:34 893

原创 目标检测发展概述

传统目标检测方法主要基于人手工设计的特征提取器和机器学习算法。这些方法使用人工定义的特征,如Haar特征和HOG特征等,结合分类器(如支持向量机、AdaBoost等)来检测和分类目标。其中,Haar特征是一种基于像素的特征描述符,最初由Viola和Jones在2001年提出,用于人脸检测。它能够有效地描述图像中的局部区域,因此也可以用于检测其他类型的目标。而HOG特征则是一种描述图像局部梯度信息的方法,通过计算图像局部区域的梯度方向直方图来表示图像特征。

2024-05-01 18:59:40 1374 1

原创 卷积神经网络CNN入门

因为卷积神经网络主要应用场景就是计算机视觉任务,因此有必要简单介绍一下CV领域发展情况:可以发现,在 ImageNet 图像数据集中分析图像的错误率十年间已经被深度学习给降低到了比人类(HuMan)识别错误率还低的地步了(所以后来这比赛就没再往下办了,因为已经达到目的了),说明其发展之迅猛。

2024-04-22 22:37:33 758

原创 深度学习与神经网络入门

把本文说的东西串起来就是上面这一副图所要展示的内容啦,至此神经网络当中基本的内容都已经介绍完了,接下来我们将介绍深度学习中最经典的神经网络:卷积神经网络CNN。

2024-04-22 14:10:20 1092

原创 关于二级指针void**的一点问题与思考

这两天写一个高并发内存池的项目时,遇到了一个关于二级指针的问题,剖析清楚后发觉有必要记录一下,这让我加深了对于C/C++中指针的理解(果然学到老活到老)。

2024-04-19 20:30:47 990

原创 并行计算基础以及相关C语言API介绍

功能描述:此函数用于初始化MPI环境。它接受两个参数,&argc和&argv,分别表示命令行参数的数量和值。这是开始任何MPI程序的第一步。参数描述:argc:指向命令行参数数量的指针。在MPI_Init调用后,这个值可能会被修改,因此最好传入实际使用的参数数量变量的地址。argv:指向命令行参数数组的指针的指针。这个数组同样可能在MPI_Init调用后被修改。功能描述:此函数表示MPI程序的结束。它是MPI程序的最后一条可执行语句,用于清理和关闭MPI环境。

2024-04-17 11:20:13 766

原创 Shell脚本学习(一):Shell内置命令与Shell运算符

Shell内置命令,就是由Bash Shell自身提供的命令,而不是文件系统中的可执行文件。type 命令演示:对于上述演示的两个命令来说,cd就是内嵌的Shell命令,而ifconfig就是一个可执行文件。通常来说,内置命令会比外部命令执行得更快,执行外部命令时不但会触发磁盘I/O,还需要fork 出一个单独的进程来执行,执行完成后再退出。而执行内置命令相当于调用当前Shell进程的一个函数,还是在当前Shell环境进程内,减少了上下文切换。alias用于给命令创建别名。

2024-04-15 12:37:12 747

原创 Shell脚本学习(一):Shell入门与Shell变量

对于入门,我们需要知道几个概念:1、Shell是什么2、Shell脚本是什么3、为什么要学习Shell脚本,即Shell脚本程序的作用4、Linux系统默认的Shell解析器先来看一个问题:Linux系统是如何操作计算机硬件的?如CPU、内存、磁盘和显示器等?答案:是通过使用Linux的内核来进行计算机硬件的操作的。那么要如何才能使用Linux的内核呢?当然就是通过编写Shell命令来调用Linux内核去执行对计算机硬件操作的啦。

2024-04-12 15:48:59 864

原创 云上配置Hadoop环境

.bashrc后,使用source ~/.bashrc(或者. ~/.bashrc)就可以立刻加载修改后的设置,使之生效。执行时机:/etc/profile:在用户首次登录时执行。~/.bashrc:每次新的bash shell被打开时执行,即每打开一个新的终端窗口,都会执行~/.bashrc。总的来说,/etc/profile和~/.bashrc在Linux系统中都扮演着重要的角色,但它们的级别、范围、内容和执行时机都有所不同。

2024-04-11 13:39:17 1046

原创 C++类定义中的隐式类型转换问题分析

最近看《C++ Primer》这本书时,遇到了一个比较抽象的问题,书上的内容描述的也比较抽象,感觉不好理解。因此我去搜索了一些资料再结合书籍原文大致弄清楚了C++在类定义中的隐式类型转换的问题,文末有书中原文内容截图,建议在看本文分析之前,先去看看这本书对应这一个问题的描述与解释,我就不再赘述,查看原书内容可以直接跳转到文末。

2024-03-22 10:54:26 303

原创 关于C/C++中指针概念与值传递的深入理解

在正式分析刚刚的问题之前,我们需要明白一件非常重要的事情,即到底什么是指针:1、指针其实就是地址,地址也就是指针。2、因为指针本身也是一块内存区域,所以指针本身也有地址。3、指针型变量和我们平常说的 int 型变量、char 型变量什么的是一个意思,只不过指针变量存储的内容是地址值,而如 int 型变量存储的则是 int 类型的数值。4、所谓变量名,也就是声明了一个变量的动作内涵其实就是给一块内存地址空间取一个别名。//a 就是一个整形变量,其值是存储了一个字面值 10。

2024-03-12 15:16:38 1042 1

原创 网络编程难点之select、poll与epoll详解

poll 是 UNIX 系统中的一个系统调用,用于实现 IO 多路复用。IO 多路复用允许单个进程或线程同时监视多个文件描述符(sockets、pipes、files等),并在这些文件描述符中的任何一个变得可读、可写或有异常条件时,获得通知。poll 函数提供了一种机制,使得程序可以在不阻塞的情况下,同时等待多个文件描述符上的事件。参数说明如下:fds:一个指向 pollfd 结构数组的指针,数组中每个元素代表一个要监视的文件描述符。

2024-02-29 22:56:06 1242

原创 C++线程封装与线程池实现

如上图所示,所谓的生产者和消费者都是一个线程,生产者与消费者之间需要进行交互,生产者生产数据往缓冲区内放,生产一个放一个,消费者则会从仓库里面拿数据,此时这个缓冲区就是一个共享资源。生产者与消费者在进行对缓冲区的访问时,为了使得线程同步所以需要获得锁才可以,获得了锁的线程才能进行访问,访问完之后再释放掉锁等其它线程竞争获取。那为什么还需要条件变量呢?来看这么个情况,如果消费者竞争到了锁,然后进入了缓冲区,但此时缓冲区内并没有数据(这是一个没有意义的操作),是不是就造成了锁资源的浪费?

2024-01-20 16:50:33 823

原创 C++深入之虚函数、虚继承与带虚函数的多基派生问题

在讲解带虚函数的多基派生问题时,我们要先弄清楚不带虚函数的多基派生存在什么样的问题,这样才好弄明白带虚函数的多基派生问题。

2024-01-19 22:37:03 866

原创 自定义vector的实现

其实根据vector的源码可以大概实现上面的效果,真正复杂的位置是空间配置器类alloc的实现,上述代码中我们是直接调用的该类的各种API。如果有时间的话其实可以好好研读一下alloc的源码,看它是如何为我们的容器分配空间和回收空间的,最好是读一读《STL源码剖析》这本书,会对STL有更深刻的体会。

2024-01-15 22:16:48 504 1

原创 C++深入学习之STL:2、适配器、迭代器与算法部分

迭代器是一种设计模式,用于遍历容器中的元素而不需要知道容器的底层表示方式。C++标准模板库(STL)中的迭代器允许程序员通过迭代器来访问和操作容器中的元素,而不是直接使用指针。迭代器具有以下特性:1、双向访问:迭代器允许你通过++和–运算符向前或向后遍历容器中的元素。2、随机访问:某些迭代器(如std::vector::iterator)还允许你通过索引操作符([])直接访问特定位置的元素。3、关联容器:关联容器(如std::map和std::set)的迭代器通常也支持基于键的访问。

2024-01-15 17:46:26 1031

原创 C++深入学习之STL:1、容器部分

主要由六大基本组件组成:容器、迭代器、算法、适配器、函数对象(仿函数)以及空间配置器。容器:就是用来存数据的,也称为数据结构。本文要详述的是容器主要如下:序列式容器:vector、list关联式容器:set、map无序关联式容器:unordered_set、unordered_map迭代器:行为类似于指针,具有指针的功能,我们使用迭代器来连接容器与算法。算法:就是用来操作数据的。

2024-01-14 17:12:54 927

原创 C++深入学习之模板

可以看到重复率很高,代码很冗余。如果此时可以有一种通用的符号可以代替上述各种类型的话,那这么多的函数我们不就可以用一个函数来代替了吗?这就是模板出现的原因,它的出现可以简化代码,让程序员少写代码。还可以解决严格性与灵活性的冲突:这是因为C++是强类型语言,其声明变量时需要有严格的类型声明,如 int a = 10;这很严格,却丧失了一种灵活性(如上面说的多个不同类型变量是否可以通过一套模板来完成的例子)。

2024-01-08 20:26:27 885

原创 标准库中string的底层实现方式介绍

以上三种方式,都不能解决所有可能遇到的字符串的情况,各有所长,又各有缺陷。综合考虑所有情况之后,facebook开源的folly库中,实现了一个fbstring, 它根据字符串的不同长度使用不同的拷贝策略,最终每个fbstring对象占据的空间大小都是24字节。很短的(0~22)字符串用SSO,23字节表示字符串(包括’\0’),1字节表示长度中等长度的(23~255)字符串用eager copy,8字节字符串指针,8字节size,8字节capacity.

2024-01-02 21:09:40 828

原创 Linux系统编程总结:进程间通信之网络编程

这一块内容放在进程间通信也没有问题,因为进程间通信研究的就是进程之间如何进行协同操作、如何交换数据进行对话的过程,上一篇文章介绍的几种机制都是用在一台机器上的进程互相进行通信的,而网络套接字这种机制则是用来为两台不同机器上的进程进行通信而设置的。

2023-12-14 15:00:40 942

原创 Linux系统编程:进程间通信总结

在Linux中,管道是一种进程间通信方式,它允许一个进程(写入端)将其输出直接连接到另一个进程(读取端)的输入。从本质上说,管道也是一种文件,但它又和一般的文件有所不同。具体来说,管道有两种类型:无名管道和有名管道。无名管道是指以匿名管道的方式连接两个进程,只能在具有亲缘关系的进程之间使用,例如父子进程。有名管道则是一种文件类型,允许无关进程之间的通信,即可以在非亲缘关系的进程之间使用。

2023-12-10 19:07:41 923

原创 Linux系统编程:高级IO总结

高级IO核心就一个概念:非阻塞IO。与该概念相对的,就是我们之前学习过的阻塞IO。非阻塞IO(Non-blocking I/O)是一种IO模型,用于实现异步IO操作,使应用程序能够在等待IO操作完成的同时继续执行其他任务。非阻塞IO主要解决的是阻塞IO模型中,当数据未准备好或设备不可用时,应用程序会挂起等待的问题。在非阻塞IO模型中,当数据未准备好或设备不可用时,应用程序会立即返回一个错误,而不是挂起等待。这样,应用程序可以继续执行其他任务,而不是等待IO操作完成。

2023-12-09 15:21:50 975

原创 Linux系统编程:线程总结

所谓线程,通俗的说就是一个正在运行的函数。在Linux系统中,线程是程序运行的最小单位,也被视为进程内部的控制序列。同一进程下的多个线程共享进程的所有资源,包括进程环境变量、打开的文件描述符、信号量、虚拟地址空间、代码、数据等。线程也有自己的程序计数器、栈空间和寄存器等。更具体的,线程是进程中的一个执行流程,一个进程至少包含一个执行线程。在Linux系统中,通过进程虚拟地址空间可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。

2023-12-07 20:19:22 887

原创 Linux系统编程:并发与信号总结

并发是指两个或多个同时独立进行的活动。在计算机系统中,并发指的是同一个系统中多个独立活动同时进行,而非依次进行。并发在计算机系统中的表现:一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。虽然每个任务的部分操作在时间上重叠,但从微观上看,这些任务是交替执行的。任务切换对使用者和应用软件自身都制造出并发的表象。总之,并发是一种同时进行的概念,可以存在于计算机系统的不同层面。

2023-12-05 17:43:26 994

原创 Linux系统编程:进程总结

这一章主要为进程的基本内容作一个总结,为后面的多进程多线程并发作一个铺垫。

2023-11-30 19:31:54 896

原创 Linux系统编程:文件系统总结

获取文件属性有如下的系统调用,下面逐个来分析。

2023-11-27 22:17:38 1285

原创 C语言进阶

定义格式:[存储类型] 数据类型 数组名标识符[下标];下面分模块来介绍一下数组的定义部分的内容。1、初始化和元素引用:可以看到数组是连续存储的,然后因为每个int都是四个字节,所以存储结构一目了然。2、 数组名的本质与数组越界异常从上面的程序例子中我们可以看到,我们在打印数组名的时候使用的是%p的格式来打印,这表示arr实际上是数组的起始地址。怎么理解呢?

2023-11-12 21:02:31 314

原创 C语言基础

这个其实就是最好是在声明char类型变量的时候就显式的写上有无符号类型,因为不显式声明char类型的话实际上其默认表现为unsigned char还是signed char是由具体的编译器决定的,这就有可能引发意想不到的错误,所以最好显式的写上。表达式和语句的区别:由变量和运算符组成的内容就叫表达式,加了分号就称为语句。

2023-11-06 19:53:27 187

原创 Linux系统编程:IO系统总结

标准IO都是一些C语言的函数,注意与文件IO的系统调用函数区别开。

2023-11-02 18:23:45 119

原创 Linux网络编程

略,因为科班都学过的哈哈哈哈哈。

2023-10-28 09:45:00 447

原创 Linux系统编程:线程

想要在主子线程之间共享数据就用指针类型,想要值传递的话就使用 long 类型。另外多线程中的栈区是相对独立的,所以一个线程可以通过地址去访问另一个线程的栈区。注意取消点函数调用前会终止线程,而终止线程会导致一个问题:异步终止线程导致资源泄露。

2023-10-24 17:27:37 165

原创 Linux系统编程:进程part_2(信号相关)

这一节内容我没怎么认真写,就是纯当草草过了一遍,这部分不是很重要当然能掌握肯定更好。更多的是有个印象然后知道遇到这样的问题能回想起来知道怎么解决即可(虽然不太可能遇到)。

2023-10-21 19:24:45 136

原创 Linux系统编程:进程part_1

进程以概念为主,知道是怎么回事就行,工作一般都操作线程。

2023-10-20 15:07:05 108

原创 Linux系统编程:文件描述符以及IO多路复用

书接上回,我们之前学习的文件系统编程都是在内存空间中的文件流(用户态文件缓冲区)内进行操作的,比如使用的fopen、fclose、fread和fwrite等等都是库函数,并没有用到内核态的功能(实际上库函数中调用的是内核态的功能,库函数是内核调用的封装),而库函数间接调用内核功能的话就会造成性能的损失,所以我们考虑直接在内核态调用内核功能,即不带缓冲的文件IO操作。

2023-10-15 22:48:06 452

空空如也

空空如也

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

TA关注的人

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