- 博客(211)
- 收藏
- 关注
原创 【Go语言快速上手】第二部分:Go语言进阶
同时,Go 的 Web 框架和 ORM 框架也大大简化了 Web 应用和数据库交互的开发工作。GORM 是 Go 语言中最常用的 ORM 框架之一,它支持 MySQL、PostgreSQL、SQLite 和 SQL Server 等数据库,并且提供了丰富的功能,包括模型映射、关联查询、事务管理等。它并不会执行程序,而是检查代码中的常见问题,比如未使用的变量、不必要的类型转换等。Go 语言提供了强大的网络编程能力,支持 TCP/UDP 协议的开发、HTTP 服务的构建,以及 WebSocket 协议的支持。
2025-02-07 22:01:11
1111
1
原创 【Shell编程 / 7】定时任务:Cron和at命令的设置与应用
是 Unix 和类 Unix 系统中的定时任务管理工具,它可以用来在指定的时间间隔内定期执行任务。在日常的运维和自动化管理中,经常需要执行定期任务。通过这些工具,用户可以在特定时间或周期性地自动执行命令或脚本,减少人工干预,提高工作效率。用于执行一次性的任务,而非定期任务。这将任务安排在 2025 年 12 月 25 日下午 2 点执行。这将打开默认编辑器,你可以在里面添加或修改定时任务。这将任务安排在当前时间的 1 小时后执行。是另一个用于执行定时任务的工具,但与。,它定义了任务的执行时间和执行内容。
2025-02-06 21:52:23
691
原创 【Go语言快速上手】第一部分:Go 语言基础
为了解决这些问题,Google 的三位资深工程师——Robert Griesemer、Rob Pike 和 Ken Thompson(Unix 和 C 语言的共同创始人)——于 2007 年开始设计一门新的编程语言,这就是 Go 语言的雏形。Go 语言的设计哲学是“少即是多”,它摒弃了复杂的语法和冗余的特性,致力于提供一种简单而强大的编程体验。指针接收者是指方法接收的是类型的指针,这使得方法可以直接修改原对象的字段值。值接收者是指方法接收的是该类型的副本,这意味着方法中修改的只是副本,而不会影响原对象。
2025-02-06 21:45:57
744
原创 【Shell编程 / 8】脚本优化与高级功能:提高效率与自动化管理
在编写 Shell 脚本时,常常会遇到需要重复使用的功能或工具。为了提高脚本的复用性和可维护性,我们可以将这些常用的函数封装到脚本库中。这样,多个脚本就可以共享同一组功能,提高开发效率。创建脚本库假设我们有一个需要经常使用的函数库文件,可以将常用的函数存储在这个文件中:thenelsefi在脚本中引用库在主脚本中,通过source或命令引入库文件,从而可以使用库中定义的函数:脚本库的目录结构组织脚本库的目录结构是非常重要的。
2025-02-02 18:31:22
937
原创 【Pytest】基础到高级功能的理解使用
pytest是一个功能强大的 Python 测试框架,专为编写简单、可扩展的测试而设计。它是 Python 中最受欢迎的测试工具之一,广泛应用于单元测试、集成测试以及功能测试等领域。pytest提供了清晰易懂的语法,并且可以轻松与其他测试框架(如unittest)兼容使用。pytest的夹具是用来在测试运行之前或之后执行某些准备工作和清理工作的。通过夹具,可以实现数据库连接、文件创建等操作,并在多个测试之间共享这些资源。
2025-01-21 21:50:24
769
原创 【Sanic 框架 / 2】进阶与实战:高级功能与项目开发
Sanic 支持插件的开发,允许我们为应用程序扩展功能。可以通过定义插件类来实现自定义插件。插件类需要继承自类,并实现方法以在应用启动时进行初始化。")"})app.run()此插件会在应用启动时输出日志。可以为后台任务定义定时器或周期性任务,Huey")该任务将每分钟执行一次。
2025-01-20 21:29:45
881
原创 【Sanic 框架 / 1】深入学习:从入门到进阶
Sanic是一个基于Python的异步Web框架,它使用Python的asyncio库实现高效的异步请求处理,适合高并发环境下的Web应用开发。Sanic的设计理念是轻量级且高性能,特别适用于需要处理大量并发请求的应用,比如实时聊天、推送通知、API服务等。与传统的同步Web框架相比,Sanic利用异步特性,通过async和await语法大幅提升了Web服务的响应能力,能够同时处理多个I/O密集型任务,而不会阻塞服务器的主线程。
2025-01-19 20:03:14
684
原创 【Tortoise-ORM】 高级特性与实战
假设我们正在开发一个简单的任务管理应用,用户可以创建任务、查看任务列表、更新任务状态以及删除任务。我们的任务模型包括任务的标题、描述、状态(待办、进行中、已完成)和创建时间。设计数据库模型。使用Tortoise-ORM进行数据库操作。在FastAPI中应用这些操作,处理前端请求。通过这个实战项目,我们学会了如何在实际应用中应用Tortoise-ORM,设计数据库模型,并将这些操作与FastAPI集成。
2025-01-19 17:38:29
1124
原创 【Python 基础学习 / 1】变量、数据类型与流程控制
在 Python 中,变量用来存储数据。与其他编程语言不同,Python 是动态类型语言,即在定义变量时不需要显式声明其类型。Python 会根据赋给变量的值来自动推断变量的类型。x = 10x存储一个整数10。name存储一个字符串"Alice"。is_active存储一个布尔值True。运算符是执行特定操作的符号,可以操作数据类型并返回结果。Python 提供了多种不同类型的运算符,包括算术运算符、比较运算符、逻辑运算符等。
2025-01-16 20:41:25
957
原创 【Shell编程 / 6】正则表达式与模式匹配(grep、sed、awk)
正则表达式(Regular Expression,即Regex)用于匹配字符串中的特定模式。扩展正则表达式(Extended Regular Expression, ERE)比基本正则表达式功能更强大,支持更多的元字符和模式。基本正则表达式(Basic Regular Expression, BRE)是一种较为简单的正则表达式形式,主要用于匹配基本的字符串模式。是一个强大的文本处理工具,可以基于正则表达式对文本进行模式匹配和操作。是一种强大的文本搜索工具,支持基本和扩展正则表达式。参数可以使用扩展正则。
2025-01-16 20:23:48
946
原创 【Tortoise-ORM】 基础与数据库操作
ORM(Object-Relational Mapping)是一种用于将对象模型与关系型数据库表格之间进行映射的技术。简单来说,ORM 允许开发者以面向对象的方式操作数据库,而不必直接编写 SQL 查询语句。传统的关系型数据库(如 MySQL、PostgreSQL)使用表格来存储数据,而对象导向编程语言(如 Python)使用对象来表示数据。ORM 通过创建数据库表与类之间的映射关系,简化了数据存取的操作,并在底层自动生成 SQL 语句,从而提高开发效率,减少了开发者与数据库的直接交互。
2025-01-16 20:20:50
945
原创 【Shell编程 / 5】文件操作、进程控制与错误处理技巧
在 Linux 系统中,进程管理是非常重要的,尤其是在进行系统监控、脚本编写或开发后台服务时,理解如何管理进程能帮助你更好地掌控系统资源、优化程序运行。在 Shell 中,重定向和管道是非常有用的工具,可以将命令的输出传递给文件或另一个命令,进而实现更复杂的数据处理。我们可以使用不同的命令来查看系统中正在运行的进程,并获取有关每个进程的信息。通过检查退出状态码,我们可以在脚本中做出不同的反应,确保在出现错误时能够做出相应的处理。是一个简单的命令,用于统计文件的行数、字数和字符数,常用于文本文件的基本分析。
2025-01-06 08:52:42
775
原创 【Shell编程 / 4】函数定义、脚本执行与输入输出操作
Shell 允许 在脚本中定义函数,以便将常用的功能模块化,从而使得代码更加简洁易懂。# 函数体# 执行操作我们也可以使用function# 函数体# 执行操作。
2025-01-05 09:46:15
544
原创 【Shell编程-3】流程控制:条件判断与循环结构详解(if、for、while、case)
在 Shell 脚本中,流程控制语句是用来根据不同的条件或需求执行不同操作的关键。流程控制包括条件判断、循环结构以及选择语句,它们为脚本的逻辑构建提供了灵活性。掌握这些控制结构,可以使你编写出更复杂、功能更强大的脚本。条件判断用于根据表达式的结果(真或假)来决定是否执行某个代码块。循环结构用于反复执行某段代码,直到满足某个条件为止。循环用于遍历一组值,通常用于数组或范围内的值迭代。是 Shell 中的基本条件判断结构,用来执行不同的代码块,基于一个条件的真假。循环中的判断条件反过来使用。
2025-01-05 09:33:32
403
原创 【Shell编程-2】算术运算、字符串与文件操作精通
之前我们学习了 Shell的历史与其基本命令,以及Shell的变量与常量,接下来学习其基本运算。
2025-01-05 09:19:43
306
原创 【Shell编程-1】Shell的历史发展与基础命令、变量、常量
Shell是一种命令行界面(CLI),用来与操作系统交互,它提供了一种与计算机系统进行通信的方式。Shell 是操作系统的命令解释器,负责接收用户输入的命令并将其传递给操作系统内核执行。它的主要作用是通过命令行控制操作系统和应用程序。Shell最早起源于 Unix 系统,它为用户提供了一个便捷的接口,使用户能够执行各种操作,如文件管理、程序执行、系统监控等。Bash(Bourne Again Shell):是最常用的 Shell,尤其是在 Linux 和 macOS 系统中。
2025-01-05 09:14:15
756
原创 【Linux】资源控制机制 — cgroups 详解
Cgroups(控制组)是 Linux 内核提供的一项功能,旨在对一组进程进行资源分配、限制、优先级调整和监控。通过 Cgroups,系统管理员可以将进程组织成多个组,并对这些组的资源使用情况进行控制和管理。Cgroups 允许用户对 CPU、内存、磁盘 I/O、网络带宽等资源进行细粒度的管理,能够限制、优先分配或监控这些资源,确保系统资源在多个进程或容器之间合理分配。
2024-12-23 15:15:33
1431
原创 【Linux】资源隔离机制 — 命名空间(Namespace)详解
Namespace(命名空间)是 Linux 内核提供的一种资源隔离机制。它允许将系统资源分隔成多个虚拟的“空间”,每个命名空间内的进程只能访问该命名空间下的资源,而不能访问其他命名空间中的资源。通过namespace,不同的进程可以在同一个操作系统内共享硬件资源,但又能感知到各自独立的环境。具体来说,namespace可以将一个或多个进程的资源隔离到同一个命名空间中,确保这些进程只能看到和操作该命名空间内的资源。
2024-12-23 10:28:46
1587
原创 深入解析 MySQL 语句:从基础操作到高级优化
MySQL 是一个流行的关系型数据库管理系统,广泛应用于网站开发、数据存储和企业级应用。下面我们将详细介绍 MySQL 常用的 SQL 语句,包括数据库和表的操作、数据查询、数据更新、索引管理等内容,并结合实际示例进行说明。
2024-12-16 16:16:46
825
原创 深入探讨 C++ 中的“缺省”特性与机制
double y;MyClass() : x(0), y(0.0) {} // 自定义缺省构造函数public:int x;double y;如果类中有指针成员或动态分配的资源,可能需要自定义赋值操作符,避免浅拷贝(浅拷贝会导致资源泄漏)。if (this!= &other) { // 防止自赋值C++中的“缺省”机制,通过自动化、简化或提供默认行为来提升开发效率。缺省构造函数:编译器自动生成构造函数,初始化对象。
2024-12-16 11:12:05
926
原创 深入理解C++仿函数:概念、应用与实例
在 C++ 中,仿函数(Functor)是一个可以像函数一样被调用的对象。换句话说,仿函数是一个重载了operator()运算符的类或结构体对象,因此可以像函数一样使用该对象进行调用。仿函数的核心思想是将函数的行为封装到对象中,从而使得函数不仅能够存储状态,还能像普通函数一样被调用。这种机制在许多高级编程技术中非常有用,尤其是在 STL(标准模板库)中,广泛用于排序、查找等操作。
2024-12-16 10:50:48
693
原创 深入理解 MySQL 索引:原理、类型与优化实践
索引是数据库管理系统(DBMS)中用来提高查询效率的重要工具。下面我们将详细介绍 MySQL 索引的原理、类型、创建和管理方法,以及如何根据实际需求进行索引优化。索引是数据库中用于加速数据检索的一种数据结构。类似于书籍的目录,可以快速定位到数据的位置,而不需要逐行扫描整个表。通过索引,MySQL 可以大大提高查询效率,尤其是在处理大数据量时。
2024-12-12 10:10:29
950
原创 【数据结构】B树家族解析:B树、B+树与B*树的理论与B树插入实现(C++)
B+树的孩子与关键字的数量相等所有数据都存储在叶子节点上,方便遍历查找所有值通过对三种树的了解,做一个总结:B树:有序数组+平衡多叉树;B+树:有序数组链表+平衡多叉树;B*树:一棵更丰满的,空间利用率更高的B+树。InnoDB 存储引擎要求每个表必须有一个 唯一的主键,并且主键索引是 B+树结构,保证数据行的唯一性、顺序存储和高效查询。MyISAM 存储引擎并不强制要求每个表必须有主键。MyISAM 表可以没有主键,而且其索引结构与 InnoDB 略有不同,通常为 非聚集索引。
2024-12-11 08:25:00
1375
原创 深入理解 C++ 异常处理机制
C++ 中,异常(Exception)指程序运行过程中发生的异常情况,可能导致程序流程的中断。**异常处理机制允许程序在出现错误时采取适当的行动,而不需要完全依赖于错误代码或中断程序的正常流。**异常处理不仅提高了程序的健壮性,也使得错误处理更加结构化和易于维护。在程序执行过程中,某些不可预见的状况可能会导致程序无法继续正常运行。逻辑错误:如数组越界、空指针解引用等。运行时错误:如文件未找到、网络连接中断、内存分配失败等。C++ 异常处理机制的核心思想。
2024-12-08 15:05:30
808
原创 Muduo 网络库 入门详解
Muduo 是一个现代化、高性能的 开源 C++ 网络库。主要目标:帮助开发者快速构建高性能的网络服务器。设计理念:基于事件驱动(Reactor 模式),充分利用 C++11 的特性(如智能指针、多线程)。应用场景:高并发场景,如聊天服务器、Web 服务、RPC 系统、实时通信等。高性能:采用多线程和 epoll 技术优化 I/O 性能。易用性:屏蔽底层细节,提供简单直观的 API。模块化:核心模块职责清晰,方便扩展和维护。
2024-12-06 08:22:45
1221
原创 《深入浅出 Linux 基础 I/O 操作:从标准库到文件系统》
Linux 操作系统以其高效、灵活的 I/O 机制闻名,它不仅为开发者提供了丰富的接口,还在底层设计上注重性能与可靠性。下面我们将从多角度解析 Linux 的基础 I/O,涵盖从文件读写到文件描述符、重定向、缓冲区管理以及异步 I/O 的方方面面,理清基础 I/O 在 Linux 中的全貌。
2024-12-05 10:08:31
1043
原创 【C++11】线程库解析:高效并发与线程安全
线程库是一种支持多线程编程的工具集合,它为开发者提供了管理和控制线程的API(应用程序接口)。线程库可以简化线程的创建、同步、通信和管理,使得程序员能够更加高效地进行多线程开发。C++11及以上版本的线程库为多线程编程提供了强大的支持。通过std::mutexstd::async等组件,开发者可以更容易地实现多线程任务的创建、同步、通信和管理。线程库的合理使用可以显著提升程序的性能,尤其在现代多核处理器环境下,实现并发任务将更具优势。
2024-11-29 09:08:50
912
原创 【C++11】类型推导 与 范围for循环
这使得代码更加简洁,避免了显式地指定类型,尤其在处理复杂类型时(如模板类型、容器类型等),类型推导提供了极大的便利。让编译器自动推导元素的类型,这样可以避免手动指定类型,特别是对于复杂的容器类型或模板类型来说非常方便。是C++11引入的一个关键字,用于查询表达式的类型,并且可以将其作为变量类型。是C++中最常用的类型推导方式,它允许编译器根据变量的初始化表达式来推导出变量的类型。当容器中的元素较大(如复杂的对象、结构体等)时,使用引用可以避免不必要的拷贝,提高效率。可以避免我们直接显式的写出较长的类型名。
2024-11-28 10:41:54
781
原创 【C++11】列表初始化详解:统一、安全的初始化方式
当使用列表初始化时,类成员或对象的初始化顺序与声明顺序一致。这与传统构造函数初始化列表的顺序一致。),这可能会丢失数据。为了避免这种潜在的错误,列表初始化在遇到窄化转换时会生成编译错误。来初始化变量的方法。它是C++11引入的特性,提供了更加统一且类型安全的初始化方式。(List Initialization)是一种通过使用大括号。列表初始化禁止了窄化(Narrowing)转换,是指将一个较大的类型(如。)转换为较小的类型(如。
2024-11-27 17:56:50
1267
原创 《深入理解C++模板:从泛型函数到特化/偏特化与分离编译》
泛型编程(Generic Programming)是一种编程范式,它使得程序可以使用类型参数来操作数据,而无需指定具体的数据类型。模板是 C++ 中的一种代码生成机制,它允许我们编写泛型函数和类。模板并不直接生成代码,而是在编译时根据实际的类型参数进行代码实例化,从而生成与特定类型相对应的函数或类的代码。函数模板(Function Template):定义了一个泛型函数,允许传入不同类型的参数。类模板(Class Template):定义了一个泛型类,可以通过不同的类型参数创建类的实例。
2024-11-27 16:56:50
827
原创 《深入理解C++中的封装与类:访问控制、作用域与实例化》
首先我们不妨思考一下,我们知道:C语言是面向过程的语言,而C++是面向对象的语言,那么面向对象与面向过程有什么区别呢?C++ 内存布局与字节序详解:类大小、结构体对齐、大小端与字节序转换。
2024-11-27 08:06:24
637
原创 C++ 内存布局与字节序详解:类大小、结构体对齐、大小端与字节序转换
内存对齐(Memory Alignment)是指将数据按照其数据类型的要求存储在内存中的方式。由于不同的数据类型对内存存储有不同的要求,内存对齐旨在提高访问效率,确保数据按正确的边界存储,从而避免性能损失或者硬件异常。对于第二问,上面的内容以及进行了解释。大小端是指在多字节数据类型(如intfloatdouble等)在内存中的存储顺序。它决定了数据的各个字节在内存中是如何排列的。大端(Big-endian):高位字节存储在低地址,低位字节存储在高地址。小端(Little-endian)
2024-11-26 14:45:38
1189
1
原创 深入解析 C++ 命名空间:概念、应用与最佳实践
当我们从C语言转向C++时,通常会在编写第一个 “Hello, World!这是什么语句呢?有什么作用呢?下面我们来了解C++中的一个重要概念——命名空间。C++中的命名空间(namespace)是用来组织代码的一种方式,它可以帮助程序员避免命名冲突、提高代码的可读性和可维护性。在大型程序中,不同的模块、库和函数可能会使用相同的名字,导致名称冲突。命名空间通过将这些名称分隔开来,避免了这种冲突。命名空间通常通过namespace关键字来定义。// 使用命名空间中的函数。
2024-11-25 11:16:17
763
原创 理解HTTP中的Cookie与Session:机制、安全性与报头响应
对于一般的信息,可以使用Cookie,但对于一些私密性较高的数据,比如用户密码, 浏览痕迹等,如果使用Cookie保存在客户端,很容易被窃取造成泄露,为了避免这一情况,我们引入了Session的概念。需要注意的是,set-Cookie 的时间格式必须遵守 RFC 1123 标准, 具体格式样例: Tue, 01 Jan 2030 12:34:56GMT 或者 UTC。根据上面的内容,我们知道Cookie是存储在客户端中的,存在被篡改或窃取的风险;是在客户端和服务器之间传递的, 因此也存在被窃取的风险。
2024-11-13 09:14:37
1280
1
原创 HTTPS详解:加密机制、工作流程、CA证书与中间人攻击防护
同HTTP协议,HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层;HTTP 协议内容都是按照文本的方式明文传输的,就导致在传输过程中可能会出现被篡改的情况;加密就是把 明文(要传输的信息)进行一系列变换,生成密文;解密就是把 密文 再进行一系列变换, 还原出 明文;在这个加密和解密的过程中, 通常需要一个/多个 中间数据,辅助进行该过程,这个数据被称为密钥路由器、Wi-Fi 热点、通信服务运营商、代理服务器在传输过程中,如果信息被劫持,传输的内容就会完全暴露。
2024-11-11 11:12:22
1710
原创 【Linux多线程】理解自旋锁的原理以及代码使用
在需要快速加锁和解锁的场景下,自旋锁相较于其他锁机制(如互斥锁)更适合。例如,在某些高性能计算的场景中,线程快速执行短小的任务,而这些任务之间需要极少的共享资源,使用自旋锁会带来明显的性能优势。在某些实时系统中,自旋锁可以避免线程阻塞,从而更快地响应事件。比如,硬件中断处理程序中,时间至关重要,此时自旋锁可以在特定条件下提供更低的延迟。在多个线程申请锁时, 会持续自旋(在循环中持续检查锁是否可用) ,而不会立刻进入休眠状态等待锁释放。这种机制减少了线程切换的开销,适用于短时间内锁竞争的情况。
2024-11-11 10:54:58
805
原创 【Linux】从内核角度理解 TCP 的 全连接队列(以及什么是 TCP 抓包)
当服务器来不及进行accept时,底层的TCP listen sock依然允许建立三次握手,建立连接成功,但这个建立连接的数量是有限的:backlog + 1,这个长度就是全连接队列的长度。另外,pcap 后缀的文件与 PCAP(Packet Capture) 文件格式相关,即用于捕获网络数据包的文件格式。使用 -w 选项可以将捕获的数据包保存到文件中, 以便后续分析。上面的图片基本揭示了当创建一个文件描述符后,是如何建立连接读取数据的。是一款强大的网络分析工具, 主要用于捕获和分析网络上传输的数据包。
2024-10-31 16:35:37
1048
原创 【Linux】守护进程与作业控制:进程组、会话与控制终端
本文深入探讨了守护进程的概念及其在 UNIX/Linux 系统中的重要性。守护进程作为后台运行的进程,承担着系统管理和资源监控的任务。首先介绍了进程组和会话的基本定义,阐明了它们在进程管理中的作用。接着,详细解释了控制终端的功能及其与会话的关系,以及如何通过作业控制实现对进程的管理和调度。此外,文章还讨论了中断信号和挂断信号的机制,帮助读者理解这些概念如何影响进程的运行状态。通过对这些基本概念的深入分析,读者将能够更好地掌握守护进程及其在操作系统中的应用。
2024-10-24 10:21:26
704
原创 探索brpc:特性、使用场景与同步异步调用与封装示例
brpc 是用 c++语言编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统RPC(Remote Procedure Call,远程过程调用)框架指用于在网络中实现进程间通信的技术,使得程序能够调用远程计算机上的程序或服务,就像调用本地程序一样。
2024-10-17 18:03:54
872
原创 深入解析etcd服务器:概念、接口及管理类封装实现(C++)
etcd 是一个开源的分布式键值存储系统,主要用于存储和管理配置信息、服务发现以及协调分布式系统中的数据。由 CoreOS 开发,基于 Raft 共识算法,确保了高可用性和一致性。
2024-10-16 14:43:12
956
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人