<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Grayson Blog]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42417071</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42417071]]></copyright><item><title><![CDATA[如何用 ESP32-CAM 做一个实时视频流服务器]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/145015262</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/145015262</guid><author>qq_42417071</author><pubDate>Wed, 08 Jan 2025 18:47:22 +0800</pubDate><description><![CDATA[ESP32-CAM 的核心是安信可科技（Ai-Thinker）的 ESP32-S 系统级芯片。作为系统级芯片，ESP32-S 芯片在单个芯片上包含微处理器、RAM、存储和外围设备。虽然该芯片的功能令人印象深刻，但 ESP32-CAM 开发板增加了更多功能，下面我们逐一看一下每个组件。]]></description><category></category></item><item><title><![CDATA[如何在 Arduino IDE 中使用 WebSockets 创建 ESP32 Web 服务器]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144829667</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144829667</guid><author>qq_42417071</author><pubDate>Mon, 30 Dec 2024 16:48:56 +0800</pubDate><description><![CDATA[WebSocket 是一种通信协议的名称，它支持客户端和 Web 服务器之间的双向（更准确地说是全双工）通信。简单地说，WebSocket 是一种允许客户端和服务器建立连接的技术，通过该连接，任何一方都可以随时向另一方发送消息。这与常规 HTTP 连接不同，在常规 HTTP 连接中，客户端发起请求，服务器发送响应，然后连接终止。事实上，WebSocket 是一种完全不同的通信协议，当客户端与服务器建立连接时，连接的两端都可以发送和接收数据。因此，就像服务器正在侦听新消息一样，所有连接的客户端也在积极侦听。]]></description><category></category></item><item><title><![CDATA[基于 Arduino IDE 搭建一个轻量的 ESP32 Web 服务器]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144748983</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144748983</guid><author>qq_42417071</author><pubDate>Thu, 26 Dec 2024 17:26:33 +0800</pubDate><description><![CDATA[引入了 WiFi 和 WebServer 库，用于处理 Wi-Fi 连接和 HTTP 请求。定义了 SSID、密码以及静态 IP 配置信息，用来设置 ESP32 作为无线接入点时的网络参数。创建了一个 WebServer 对象，监听端口 80，这是 HTTP 协议默认使用的端口。定义了两个 LED 所连接的 GPIO 引脚编号以及它们的初始状态。setup()]]></description><category></category></item><item><title><![CDATA[关于 C/C++ 可变参数函数的学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144531662</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144531662</guid><author>qq_42417071</author><pubDate>Tue, 17 Dec 2024 12:04:43 +0800</pubDate><description><![CDATA[在编程的世界里，灵活性和效率往往是我们追求的目标。当涉及到函数设计时，能够处理不同数量参数的能力极大地增加了代码的复用性和适应性。C/C++ 语言通过提供可变参数函数（variadic functions）这一特性，允许开发者创建能够接收不定数量参数的函数，从而满足了这一需求。在计算机程序设计，一个可变参数函数是指一个函数拥有不定引数，即是它接受一个可变数目的参数。简单来说，就是函数的参数个数可变，参数类型不定的函数。不同的编程语言对可变参数函数的支持有很大差异。——引用：《]]></description><category></category></item><item><title><![CDATA[Light Emitting Diode (发光二极管)]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144488668</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144488668</guid><author>qq_42417071</author><pubDate>Sun, 15 Dec 2024 16:42:43 +0800</pubDate><description><![CDATA[NOTE]LED 无处不在——在我们的手机、汽车、甚至我们的家中。每当电子设备亮起时，很可能就有一个 LED。LED 就像微型灯泡。低能耗、小尺寸、快速切换和长寿命使它们成为移动设备和其他低功耗应用的理想选择。LED 即。它们是一种将电能转化为光的特殊二极管。它们的电气特性与普通的非常相似。这就是为什么 LED 的符号与普通的 PN 结二极管相似，只是它多了朝向二极管外部的箭头，表示二极管正在发光。]]></description><category></category></item><item><title><![CDATA[The Zener Diode（齐纳二极管/稳压管）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144488554</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144488554</guid><author>qq_42417071</author><pubDate>Sun, 15 Dec 2024 16:36:59 +0800</pubDate><description><![CDATA[.NOTE]普通硅二极管在反向偏置时会阻止任何电流通过，当反向电压过高时会损坏。因此，这些二极管绝不会特意在击穿区工作。然而，稳压二极管（后简称为稳压管）则有所不同。它们专门设计用于在击穿区域无故障运行。因此，稳压管有时被称为。稳压管是稳压器和电路的支柱，尽管线路电压和负载电阻发生很大变化，但仍能保持负载电压几乎恒定。下图为稳压管的原理图符号。在任何一个符号中，线条都类似于“”，代表“]]></description><category></category></item><item><title><![CDATA[The Full-Wave Bridge Rectifier（全波桥式整流器）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144488479</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144488479</guid><author>qq_42417071</author><pubDate>Sun, 15 Dec 2024 16:30:07 +0800</pubDate><description><![CDATA[or simplyNOTE]还有另一种更流行的全波整流器设计，它基于四个二极管桥配置。它被称为或简称为。这种设计相对于中心抽头版本的优势在于它不需要特殊的中心抽头变压器，从而大大降低了其尺寸和成本。此外，这种设计使用整个次级电压作为整流器的输入。给定相同的变压器，使用桥式整流器获得的峰值电压和直流电压是使用中心抽头全波整流器的两倍。这就是桥式整流器比全波整流器使用得多的原因。]]></description><category></category></item><item><title><![CDATA[The Full-Wave Rectifier（全波整流器）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144488391</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144488391</guid><author>qq_42417071</author><pubDate>Sun, 15 Dec 2024 16:26:11 +0800</pubDate><description><![CDATA[NOTE]虽然半波整流器用于一些低功率应用，例如信号和峰值检测器，但它很少用于电源整流。电源整流领域最常用的整流器是。全波整流器比半波整流器更复杂，但它具有一些显着的优点。它使用正弦波的两个半周期，从而产生高于半波整流器的直流输出电压。另一个优点是输出纹波少得多，这使得更容易产生平滑的输出波形。]]></description><category></category></item><item><title><![CDATA[The Half-Wave Rectifier（半波整流器）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144401606</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144401606</guid><author>qq_42417071</author><pubDate>Wed, 11 Dec 2024 15:13:30 +0800</pubDate><description><![CDATA[NOTE]大多数电子系统，如电视、音频系统和计算机等，都需要直流电才能正常工作。由于线路电压是交流电，我们需要将其转换为相对恒定的直流电。将交流电压（AC）转换为连续电压（DC）的电路称为。如你所知，二极管只从阳极到阴极单向传导电流。这一特性使它们成为整流的理想选择。二极管连接在一起形成各种类型的整流电路，例如“半波”、“全波”或“桥式”整流器。所有整流器中最简单的是。]]></description><category></category></item><item><title><![CDATA[PN Junction Diode（PN 结二极管）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144142810</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144142810</guid><author>qq_42417071</author><pubDate>Fri, 29 Nov 2024 17:59:04 +0800</pubDate><description><![CDATA[NOTE]一块 N 型半导体或 P 型半导体就像一个电阻器，用处不大。但是，当制造商将单晶硅的一侧掺杂为 P 型材料，另一侧掺杂为 N 型材料时，就会诞生新的东西——。PN 结是二极管、晶体管、太阳能电池、LED 和集成电路等半导体器件的基本。了解这一点使你能够了解所有设备了。]]></description><category></category></item><item><title><![CDATA[Semiconductor Basics（半导体基础知识）]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/144061805</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/144061805</guid><author>qq_42417071</author><pubDate>Tue, 26 Nov 2024 16:21:17 +0800</pubDate><description><![CDATA[NOTE]要了解二极管、晶体管或任何集成电路的工作原理，你必须首先研究半导体——一种既不是导体也不是绝缘体的材料。在了解半导体之前，让我们先了解是什么使材料成为导体或绝缘体。]]></description><category></category></item><item><title><![CDATA[【数据结构】关于环形队列库的改进办法]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/142901914</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/142901914</guid><author>qq_42417071</author><pubDate>Sun, 13 Oct 2024 18:23:10 +0800</pubDate><description><![CDATA[使用void*来存储任意类型的数据；新增结构体成员，表示队列的每个元素的大小（所占字节数）；除data成员变量外，其余变量的类型全部改为size_t。void *data;// 存储数据的数组// 队头索引// 队尾索引// 队列容量（元素数量）// 每个元素的大小// 当前队列中的元素数量NOTE]关于size_t这个数据类型，我在《【面试题分享】重现 string.h 库常用的函数》的附录部分有提到，感兴趣的可以去看看。]]></description><category></category></item><item><title><![CDATA[【解决方案】关于 UART 接收数据时丢失数据的解决办法——环形缓冲存储区]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/142689022</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/142689022</guid><author>qq_42417071</author><pubDate>Thu, 03 Oct 2024 09:42:58 +0800</pubDate><description><![CDATA[在使用 UART 进行通信时，数据丢失是一个常见的问题。波特率不匹配这是 UART 丢失数据的众多原因中，最好解决的一种情况，只要重新配置设备的波特率即可。缓冲区溢出接收方的缓冲区太小，来不及处理的数据被覆盖，或是缓冲区溢出，超出缓冲区存储空间部分的数据没被保存。硬件中断或干扰外部电磁干扰、电源波动等可能导致信号失真。这属于硬件问题，通常使用屏蔽电缆，确保良好的接地，远离强电磁场源，使用滤波器或稳压器来减少电源波动的影响。软件错误接收代码中的 bug，如未正确读取缓冲区数据、错误处理不当等。]]></description><category></category></item><item><title><![CDATA[【数据结构】环形队列（循环队列）学习笔记总结]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/142618164</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/142618164</guid><author>qq_42417071</author><pubDate>Sat, 28 Sep 2024 17:09:38 +0800</pubDate><description><![CDATA[为充分利用向量空间，克服 “ 假溢出1” 现象的方法是：将向量空间想象为一个首尾相接的圆环，并称这种向量为循环向量。存储在其中的队列称为循环队列（Circular Queue）。循环队列是把顺序队列首尾相连，把存储队列元素的表从逻辑上看成一个环，成为循环队列。——引用至《循环队列_百度百科要理解环形队列，可以先从单个变量的读写开始。以串口收发数据为例，假设某些外设通过串口向主机发送 1 byte 的数据，且每秒发送一次，那么这 1 byte 的数据会先存在主机的接收缓冲存储区中。]]></description><category></category></item><item><title><![CDATA[编译之舞：C/C++ 与 GCC 的协作曲]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140752058</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140752058</guid><author>qq_42417071</author><pubDate>Sun, 28 Jul 2024 16:12:45 +0800</pubDate><description><![CDATA[在现代计算的舞台上，编程语言如同舞者，而编译器则是那幕后默默引导的编舞师，每一次代码的编写都像是一场精心设计的舞蹈。在这个舞台上，C 语言和 GCC（GNU Compiler Collection）是一对经典的搭档。它们共同演绎了一场编译的华美舞蹈，从源代码到可执行文件的华丽蜕变。本文将探索 C 语言与 GCC 之间的这种美妙协作，并深入了解它们是如何共同创造出那些最终运行在计算机上的程序。]]></description><category></category></item><item><title><![CDATA[【小总结分享】Linux 系统结束进程的 Ctrl + c 和 Ctrl + z 有什么区别？]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140591450</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140591450</guid><author>qq_42417071</author><pubDate>Sun, 21 Jul 2024 18:08:01 +0800</pubDate><description><![CDATA[在众多的快捷键组合中， 和  是两个极为常用的组合，它们看似简单，却在管理进程方面扮演着至关重要的角色。然而，对于初学者来说，这两个组合的功能和使用场景往往容易混淆。本文旨在深入探讨  和  在 Linux 系统中的具体作用，以及它们之间的根本差异。


 ——暂停程序


总结如下：信号类型：进程状态：命令恢复：]]></description><category></category></item><item><title><![CDATA[初学 Linux 必知必会的 X 个知识点]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140589267</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140589267</guid><author>qq_42417071</author><pubDate>Sun, 21 Jul 2024 16:02:10 +0800</pubDate><description><![CDATA[（第 6 到第 8 列）表示文件或目录的最后修改时间，包括月份、日期和时间。年份会显示在较旧的文件中。]]></description><category></category></item><item><title><![CDATA[【经验分享】关于静态分析工具排查 Bug 的方法]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140478617</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140478617</guid><author>qq_42417071</author><pubDate>Tue, 16 Jul 2024 22:26:02 +0800</pubDate><description><![CDATA[和。]]></description><category></category></item><item><title><![CDATA[Linux 内核 GPIO 用户空间接口]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140203761</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140203761</guid><author>qq_42417071</author><pubDate>Fri, 05 Jul 2024 11:35:00 +0800</pubDate><description><![CDATA[GPIO（General Purpose Input/Output，通用输入/输出接口），是微控制器或微处理器上的引脚，可以被编程为输入或输出，用于与外部设备进行通信。在 Linux 系统中，通过内核提供的用户空间接口，开发者能够轻松地读取、设置 GPIO 的状态，实现对外部设备的控制和监测。本文将基于 Orangepi ZERO 2开发板，探讨 Linux 内核（kernel 4.8 版本起）基于字符设备的新接口，用于访问和管理用户空间中的 GPIO 线路。]]></description><category></category></item><item><title><![CDATA[浅谈 Linux 中的 core dump 分析方法]]></title><link>https://blog.youkuaiyun.com/qq_42417071/article/details/140147831</link><guid>https://blog.youkuaiyun.com/qq_42417071/article/details/140147831</guid><author>qq_42417071</author><pubDate>Wed, 03 Jul 2024 11:39:28 +0800</pubDate><description><![CDATA[核心转储（core dump），在汉语中有时戏称为吐核，是操作系统在进程收到某些信号而终止运行时，将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。在 UNIX 系统中，常将“主内存称为核心（core），因为在使用半导体作为内存材料之前，便是使用核心（core）。而核心映像（core image）就是 “进程”（process）执行当时的内存内容。]]></description><category></category></item></channel></rss>