一、套接字概述网络编程就是编写程序,使两台联网的计算机互相交换数据。计算机操作系统会提供名为套接字(Socket)的部件,套接字是网络数据传输用的软件设备,即使对网络数据传输原理不太熟悉,我们也能通过套接字完成数据传输。
网络套接字(Socket)是计算机通信的基石,它抽象了网络中不同主机上应用进程之间的双向通信端点。简单来说,套接字就像两个设备间的“虚拟管道”——应用程序通过它向网络协议栈发送数据,再经由物理设备传输到目标主机。
核心功能:
端点标识:通过“IP地址+端口号”唯一标识通信双方(例如 192.168.1.100:10000)
协议抽象:屏蔽底层网络协议细节,开发者只需关注数据收发逻辑
多协议支持:适配TCP、UDP等不同传输层协议,满足可靠传输或高效传输需求
二、文件描述符文件描述符(File Descriptor)是Linux系统中用于访问文件或I/O资源的核心概念,其本质是一个非负整数,由内核动态分配并维护。在Linux中,一切皆文件(包括设备、管道、网络套接字),文件描述符为这些资源的访问提供了统一的接口。当进程打开文件、创建套接字或设备时,内核返回 ...
本项目使用HC-SR505人体检测模块传感器检测运动的人体,触发树莓派摄像头拍摄图像,并通过邮件系统进行警报。
欢迎进入我的哔哩哔哩频道进行学习!
一、项目相关设备硬件设备:
Raspberry Pi 4B
HC-SR505人体感应模块
OV5647摄像头模块
杜邦线(若干)
软件应用服务:
网易邮箱账户(至少两个)
smtplib
picamera2
RPi.GPIO
二、项目描述随着社会的发展和技术的进步,隐私及安全问题愈发需要重视,家庭安全面临的挑战也在不断增加,因此采用先进的技术手段来提升家庭安全水平变得至关重要。我们自己动手打造一个安全监控系统,用来保障了我们的家庭安全。
本项目通过使用树莓派4B作为主控系统,实现一个小型安全监控系统,应用Python脚本来控制树莓派的运行。首先,当有人接近我们家的时候,通过使用HC-SR505人体感应模块传感器,会立刻侦测到并向树莓派发送信号。第二步当树莓派检测到HC-SR505人体感应模块信号后,会立即调用摄像头捕获当前实时画面。最后,通过邮件系统将警告信息和实时画面发送到指定邮箱。
本项目可根据个人需求,自己打造一个家庭安全监控 ...
在 C++ 中,移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment Operator)是管理资源转移的关键工具,旨在避免不必要的深拷贝,提升程序性能。文章将详细介绍它们的应用场景。
欢迎进入我的哔哩哔哩频道进行学习!
我们可以通过一个自定义的类来详细说明拷贝构造函数、拷贝赋值运算符、移动构造函数和移动赋值运算符的用法。这次我们用一个简单的 Buffer类来管理动态分配的数组。
1. 移动构造函数作用移动构造函数用于将资源从一个对象转移到另一个对象,或者理解为将资源从一个临时对象(右值)转移到新对象,避免不必要的深拷贝。
语法ClassName(ClassName&& other) noexcept;
实现要点
参数:右值引用 ClassName&&,通常来自临时对象或 std::move。
资源转移:直接接管原对象的资源(如指针、文件句柄)。
原对象状态:将原对象的资源指针置空,确保析构时不会重复释放。
异常安全:标记为 noexcept,以便在容器操作中优化性能。
示例代码#include < ...
在 C++ 中,拷贝构造函数(Copy Constructor)和 拷贝赋值运算符(Copy Assignment Operator)是两个重要的特殊成员函数,用于控制对象的拷贝行为,文章将详细介绍它们的应用场景。
欢迎进入我的哔哩哔哩频道进行学习!
我们可以通过一个自定义的类来详细说明拷贝构造函数、拷贝赋值运算符、移动构造函数和移动赋值运算符的用法。这次我们用一个简单的 Buffer类来管理动态分配的数组。
1. 拷贝构造函数如果一个类的构造函数的第一个参数是所属的类类型引用,若有额外的参数,那么这些额外的参数都有默认值。该构造函数的默认参数必须放在函数声明中,除非该构造函数没有函数声明,那么这个构造函数就叫拷贝构造函数。这个拷贝构造函数会在一定的时机被系统自动调用。
拷贝构造函数用于创建一个新对象,并将其初始化为另一个同类型对象的副本。它会深拷贝资源。
定义拷贝构造函数用于通过同类型的另一个对象初始化新对象,其形式为:
复制代码
ClassName(const ClassName& other);
调用场景拷贝构造函数会在以下情况下被调用:
显式初始化新对象:
复 ...
这一节是本课程的第一课,主要从概念上让大家了解什么是GPU、什么是CUDA。从今天开始,大家和我一起探索CUDA编程,一起学习努力、一起进步!!:muscle::muscle::muscle:
一、GPU硬件平台1、什么是GPUGPU 意为图形处理器,也常被称为显卡,GPU最早主要是进行图形处理的。如今深度学习大火,GPU高效的并行计算能力充分被发掘,GPU在AI应用上大放异彩。GPU拥有更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算,与GPU对应的一个概念是CPU,但CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务,CPU更擅长数据缓存和流程控制。
2、GPU性能主要GPU性能指标:
核心数量:为GPU提供计算能力的硬件单元,核心数量越多,可并行运算的线程越多,计算的峰值越高;
GPU显存容量:显存容量决定着显存临时存储数据的多少,大显存能减少读取数据的次数,降低延迟,可类比CPU的内存;
GPU计算峰值:每块显卡都会给出显卡的GPU计算峰值,这是一个理论值,代表GPU的最大计算能力,一般实际运行是达不到这个数值的;
显 ...
本教程从零开始搭建基于Hexo主题的个人博客,使用Nginx框架部署到云服务器,并演示如何免费配置SSL证书。欢迎进入我的哔哩哔哩频道进行学习!
一、环境配置Hexo配置可以在windows系统,也可以在linux系统,接下来我们会介绍两种系统的安装方式。
1.1 Ubuntu22.04环境配置1.1.1 安装Node.js首先,我们是在虚拟机Ubuntu22.04系统中配置Hexo环境。
下载Node.js,选择预构建二进制文件,系统选择linux,x64,版本选择v20.17.0(LTS)。
点击下载Node.jsv20.17.0 即可下载二进制文件包node-v20.17.0-linux-x64.tar.xz。
在虚拟机Ubuntu22.04系统中创建文件夹~/web/tool/,将node-v20.17.0-linux-x64 .tar.xz拷贝到虚拟机Ubuntu22.04系统~/web/tool/文件夹下(可以使用FileZilla进行数据交互,这里不进行介绍,读者自行查阅相关内容)。
#创建~/web/tool/文件夹mkdir -p ~/web/tool/
解 ...