KalosAner Blog

「山穷水复疑无路,柳暗花明又一村。」

github actions 使用教程——使用 GitHub Actions 部署 react 项目到 GitHub Pages 上

GitHub Actions 是 GitHub 2019年 7 月份左右推出的一套 CI/CD 平台,它可以自动化软件开发流程,简化代码提交、构建、测试和部署步骤,通过简单配置实现自动化。 在使用时只需要简单的配置,GitHub 就可以自动化工作流。 1、创建仓库并点击菜单栏的 Actions 按钮,可以看到下边有很多现成的配置可以使用。 2、点击 Simple workflow ...

DeepSeek 使用技巧

一、一图胜千言 在问问题时可以让 DS 以 mermaid 或者表格的形式进行展示。 二、AI 原住民 在有无法解决的问题时要第一时间想到使用 AI。 三、倒反天罡 可以让 AI 问自己问题。 如果对什么有一些困惑可以把自己的现状输入给 AI 让它对自己提出一些问题进行引导。 在学习一个东西时可以让 AI 提出一些问题以检测自己的学习情况。 在看完一个电影或者书...

Linux 进程之会话、进程组和控制终端

一、引言 进程组、会话 和 控制终端 是 Linux 系统进程管理和作业控制的核心概念。 会话与进程组之间的关系就像是公司与部门之间的关系。 二、进程组 概念 进程组是由一个或多个相关联的进程组成的集合,主要用于统一管理和控制这些进程。每个进程都有一个进程组 ID(PGID),用于标识其所属的进程组。进程组一般由组长进程创建,进程组 ID 就是组长进程 ID。 进程组有前台进...

IOCP:Windows下性能最好的 I/O 模型

一、引言 如果已经了解 重叠 IO 的话再理解 IOCP(Input Output Completion Port)就会容易很多。IOCP 的基本流程就是第一步创建一个 IOCP 对象,该对象可以连接很多网络套接字;第二步就是把需要进行 I/O 的套接字连接到刚创建好的 IOCP 对象上,这样传输到这些网络套接字的数据都会进入一个缓冲区队列中;第三步就是创建多个线程,每个线程都通过 Get...

Windows 下的重叠 IO

一、引言 同一个线程内部向多个目标发送(或者从多个目标接收)数据引起的 IO 重叠现象称为“重叠 IO”。为了完成这项任务,调用的 IO 函数应立即返回,只有这样才能发送后续数据。 该功能可以实现类似于 Linux 下的分散读写。 二、重叠 IO 使用 创建重叠 IO 套接字 使用重叠 IO 需要创建适用于重叠 IO 的套接字,通过如下函数完成: 1 2 3 #include...

Windows 下的异步通知 IO

一、异步通知 IO 同步 IO 就是调用 IO 函数会阻塞直到数据完成发送或者完成接收,IO 函数才返回结果。 异步 IO 就是调用 IO 函数的同时立马返回,此时数据可能还在缓冲区进行发送或者接收。也就是说在进行 IO 的同时,CPU可以执行其他任务。 通知 IO 是“通知输入缓冲收到数据并需要读取数据,以及输出缓冲为空故可以发送数据”。典型的通知 IO 模型是 select 方式。...

Windows 线程的创建和销毁

一、引言 要想掌握 Windows 平台下的线程,应首先理解“内核对象”(Kernel Objects)的概念。 操作系统创建的资源(Resource)有很多种,如进程、线程、文件和即将介绍的信号量、互斥量等。其中大部分都是通过程序员的请求创建的,虽然文请求方式不同(请求中使用的函数)各不相同,但是它们都是由 Windows 操作系统创建并管理的资源。操作系统为了记录相关信息的方式以管理...

Windows 线程同步

一、引言 线程同步类似线程锁,主要用来安全地访问临界资源。Windows 下有两种线程同步的方式,一种是用户模式下的线程同步,一种是内核模式下的线程同步。 二、用户模式 用户模式下的线程同步由于不需要切换内核模式所以性能相对较高,但是功能没有内核模式强大。 用户模式下的线程同步主要使用 CRITICAL_SECTION 对象。 函数原型: 1 2 3 4 5 6 7 #inclu...

Linux 线程使用方法

一、引言 多进程在使用时有很多不方便,比如: 创建进程开销较大 进程间数据交换需要特殊的 IPC 技术 进程切换需要 CPU 频繁的“上下文切换”,造成极大的开销 因此衍生出了线程技术,线程和进程一样都有一个唯一标识符。 在 Linux 上使用线程,在编译链接时需要对线程库进行链接:g++ demo.cpp -o demo -lpthread。 线程是系统调度的最小...

Linux 信号量使用方法

一、引言 在多线程编程中,经常会使用信号量来控制访问临界资源。 二、线程级信号量 初始化信号量 1 2 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); sem:信号量对象指针 pshared:共享标志(0 表示线程间共享,非 0 表示进程间共享) v...