- 博客(772)
- 资源 (22)
- 收藏
- 关注
原创 OpenGL学习资料
本文汇总了OpenGL学习资源,包括视频教程、函数手册和系列教程。视频教程推荐TheCherno的OpenGL入门教程,详细讲解测试框架和UI实现。函数手册推荐docs.gl网站,提供OpenGL函数说明和示例。教程资源包括learnopengl.com的中英文版本和opengl-tutorial.org的17个教程,涵盖从基础窗口创建到高级阴影映射等内容。这些资源适合OpenGL初学者和进阶学习者参考使用。
2026-04-20 00:17:12
82
原创 MacOS中编译构建GLFW源代码
本文介绍了在MacOS系统上编译构建GLFW(OpenGL框架库)源代码的过程。主要内容包括:1)GLFW简介及其获取方式(官网下载或Git克隆);2)所需工具准备(CMake和Clang);3)详细编译步骤:创建build目录,运行cmake生成构建文件,使用make命令完成编译。编译过程会生成静态库libglfw3.a和示例程序。文章提供了完整的命令行操作流程和关键输出信息,帮助开发者在MacOS环境下成功构建GLFW库。
2026-04-18 11:42:48
364
原创 Windows11上使用VS2026和CMake 4.2.1编译构建GLFW源代码
本文介绍了在Windows11系统上使用VS2026编译构建GLFW开源库的完整过程。主要内容包括:1) GLFW简介及其源代码获取方式;2) 编译环境准备(Visual Studio和CMake);3) 详细步骤:使用CMake GUI配置项目、生成VS工程文件、编译构建;4) 测试编译生成的示例程序;5) 介绍官方预编译库的使用方法。文章提供了详细的图文指导,帮助开发者快速搭建GLFW开发环境,既支持从源码编译,也可直接使用预编译库。
2026-04-18 01:09:23
515
原创 Hazel游戏引擎结构分析
Hazel游戏引擎是一个开源的2D/3D引擎,基于C++和OpenGL实现。文章分析了其核心架构,包括8个主要子系统:核心系统、渲染系统、场景系统、资源管理系统、脚本系统、物理系统、音频系统和编辑器系统。各子系统通过分层设计和事件驱动机制保持松耦合,核心系统作为基础支撑其他模块。文章详细阐述了子系统间的依赖关系和调用链,并提供了架构图和模块依赖图,展示了引擎如何通过UUID资源引用和事件总线实现高效协作。该架构设计为学习游戏引擎开发提供了有价值的参考。
2026-04-11 16:35:22
505
原创 evpp-现代化C++11高性能的Reactor模式的C++网络库
摘要:evpp是一个基于libevent开发的现代化C++11高性能网络库,支持TCP/UDP/HTTP等协议的异步非阻塞服务器和客户端。主要特性包括C++11接口、多线程安全、跨平台支持等,已用于生产环境处理数万亿次网络通信。文章详细介绍了在Windows11上使用VS2026和vcpkg编译evpp的步骤,包括安装依赖库、构建项目和运行示例程序。示例展示了TCP服务器和客户端的实现,演示了消息收发和连接状态回调功能。该库还提供memcached和NSQ客户端等扩展功能。
2026-04-04 19:56:24
441
原创 OpenHarmony 电源管理模块状态转换分析
OpenHarmony电源管理服务组件提供系统电源状态管理功能,包括重启系统、休眠运行锁管理和电源状态查询。该组件采用分层架构设计,包含NAPI层、Native层、服务层和测试框架,支持从用户活动触发状态转换(如亮屏/灭屏)到系统级电源管理(如合盖睡眠、强制睡眠)。主要状态包括AWAKE(亮屏)、INACTIVE(灭屏)和SLEEP(S3休眠),通过超时机制和事件驱动实现状态自动切换,同时支持运行锁机制保持设备唤醒。该组件是OpenHarmony电源管理子系统的重要组成部分,与显示管理、电池管理等模块协同工
2026-03-25 23:10:28
463
原创 SDL3库实现的贪吃蛇小游戏,不到400行代码
SDL3库官方示例中提供了一个简洁的贪吃蛇游戏实现,仅用397行C代码就完成了核心功能。该示例展示了SDL3库的基本使用方法,包括窗口创建、渲染、输入处理和游戏逻辑实现。游戏具有标准贪吃蛇玩法:蛇身随方向键移动,吃到食物后增长,碰到边界会循环。代码结构清晰,将游戏状态、渲染和输入处理分离,可作为SDL3初学者学习游戏开发的入门参考。官方还提供了在线演示版本,方便开发者快速体验效果。
2026-03-17 21:56:05
97
原创 sdl3-sample-简明教程,指导如何在包括移动和 Web 在内的各种平台上构建和使用 SDL3
SDL3跨平台开发简明教程 摘要:sdl3-sample项目提供了一个跨平台SDL3开发的最小示例,支持macOS、iOS、Windows、Linux、Android和Web等平台。项目包含SDL3核心库及SDL_mixer、SDL_Image和SDL_ttf等扩展模块的集成使用示例。开发者可通过简单的CMake命令快速构建项目,支持Xcode、Visual Studio等多种生成器。项目采用子模块方式管理SDL库,便于更新维护。官网提供在线演示,用户也可在本地通过git克隆后使用CMake构建运行,实测在
2026-02-12 23:32:48
844
原创 MacOS下源码安装SDL3并运行hello.c示例程序
本文介绍了在MacOS系统中从源码安装SDL3并运行hello.c示例程序的过程。首先通过git克隆SDL最新源代码或下载zip包,然后在MacOS中通过创建build目录、运行cmake、make和sudo make install命令完成编译安装。安装完成后,默认路径为/usr/local,可通过pkg-config工具查看安装的头文件和库文件位置。文章还展示了SDL3的库文件路径和pkgconfig文件内容,为后续使用SDL3开发多媒体应用程序奠定了基础。
2026-02-11 23:14:39
762
原创 C++17中的结构化绑定
摘要: C++17引入的结构化绑定(Structured Bindings)允许将对象成员或容器元素解构为独立变量,提升代码简洁性。支持数组、std::pair/tuple、std::map键值对及自定义结构体(需实现tuple_size和get特化)。示例展示了如何解构数组、pair、map遍历、tuple以及deque/list等容器,并提供了自定义结构体的实现方法。结构化绑定通过避免手动解包减少冗余,但需注意其创建的是新变量而非引用。该特性使代码更现代化且易读,适用于多种标准容器和数据结构场景。
2026-02-09 23:47:09
402
原创 MacOS中运行Next.js项目注册新用户时MongoDB报错MongoServerError
摘要:本文记录了在MacOS上运行Next.js项目时遇到的MongoDB报错问题及解决方法。作者安装MongoDB 8.0社区版后,运行Next.js项目时出现"Transaction numbers are only allowed on a replica set member or mongos"错误。解决方案是将单节点MongoDB配置为Replica Set模式,包括修改配置文件、初始化Replica Set等步骤。此外还提供了使用非事务操作或MongoDB Atlas的替代
2026-02-01 20:02:35
782
原创 C++17中使用inline修饰类的静态成员变量
摘要:C++17引入的inline static允许在类内直接初始化静态成员变量,而C++11不支持此特性,需在类外定义和初始化。使用场景包括单例模式、共享资源管理和延迟初始化。inline static简化代码、提高可读性并避免链接错误。C++11中替代方案是在类外定义静态变量,并通过静态方法初始化。升级到C++17可直接使用inline static使代码更简洁。
2026-01-28 21:10:27
639
原创 C++实现ATM状态机
摘要:本文展示了一个使用C++实现的ATM状态机系统,采用面向对象设计。程序模拟了ATM的基本功能,包括用户登录、余额查询、存款、取款和退出操作。通过ATMState基类和具体状态类(IdleState、MenuState)实现状态模式,使用ATM类管理用户数据和状态切换。系统采用动态分配状态对象的方式,支持灵活的状态转换。文章还提供了代码说明、运行示例,并建议了可能的扩展功能,如增加更多状态、持久化存储和安全性改进。
2026-01-25 11:32:02
185
原创 Python中连接Redis数据库并存储数据
本文介绍了如何在Python中使用redis库连接Redis数据库并进行数据存储和读取。主要内容包括:安装redis库(pip install redis),建立Redis连接(redis.StrictRedis),存储键值数据(set方法),读取数据(get方法),以及存储和读取字典数据(hset和hgetall方法)。示例代码演示了完整的操作流程,包含异常处理,并展示了如何存储字符串和字典类型的数据。运行结果验证了连接成功、数据存储和读取的功能实现。该方案适用于需要高效键值存储的场景,为Python应用
2026-01-12 22:36:19
492
原创 Windows11上安装Redis服务和Redis可视化客户端
本文介绍了在Windows11系统上安装Redis服务及其可视化客户端的完整流程。主要内容包括:通过GitHub下载Windows版Redis安装包;详细讲解临时服务和永久服务的配置方法,包括服务注册、启动及环境变量设置;推荐了三款Redis可视化客户端软件(Redis Desktop Manager、Tiny RDM和Another Redis Desktop Manager),重点推荐后两款开源工具。文章提供了图文并茂的详细步骤,涵盖服务端和客户端的安装配置全过程,并总结了常用的Redis服务管理命令,
2026-01-11 23:33:50
3364
原创 环保HJ212-2017协议Node.js代码解析实现
由于是做环保相关的,有时需要对212协议进行拆包和解包。HJ212协议是一种字符串协议,数据传输通讯包主要由包头、数据段长度、数据段、CRC校验、包尾组成,其中“数据段”内容包括请求编码、系统编码、命令编码、密码、设备唯一标识、总包数、包号、指令参数。请求编码为请求的时间戳,系统编码ST统一规定为22,命令编码CN为该数据包的时间类型,访问密码、设备唯一标识在对接时由平台提供,指令参数为数据内容。通讯协议的数据结构如图4所示。图4 通讯协议的数据结构6.1.1通讯包结构组成名称类型长度描述。
2026-01-11 17:49:08
88
原创 Node.js中使用node-redis库连接redis服务端并存储数据
本文介绍了在Node.js中使用node-redis库连接Redis服务端并存储数据的方法。主要内容包括:node-redis库的简介与安装方式(npm或docker),基本连接示例代码(包含错误处理和配置选项),以及一个完整的实用示例(连接本地Redis服务端并测试读写操作)。文章还提供了相关配置指南和参考资料的链接,帮助开发者快速上手使用node-redis客户端与Redis服务端进行交互。示例展示了如何设置键值对、读取数据以及验证连接状态,适用于Node.js项目中需要集成Redis的场景。
2026-01-11 17:06:18
574
原创 MacOS中安装并配置Redis
摘要:本文介绍了在MacOS上安装和配置Redis的详细步骤。首先通过Homebrew安装Redis,修改redis.conf配置文件(包括设置守护进程模式和密码)。然后启动Redis服务并验证运行状态。接着使用Homebrew安装Another-Redis-Desktop-Manager可视化客户端工具,详细说明了连接本地Redis服务的方法(包括主机地址、端口号和密码配置)。最后展示了通过可视化工具查看Redis配置的效果,并提供了相关参考资料链接。
2026-01-11 12:02:41
1794
原创 环保HJ212-2017协议Python代码解析实现
由于是做环保相关的,有时需要对212协议进行拆包和解包。HJ212协议是一种字符串协议,数据传输通讯包主要由包头、数据段长度、数据段、CRC校验、包尾组成,其中“数据段”内容包括请求编码、系统编码、命令编码、密码、设备唯一标识、总包数、包号、指令参数。请求编码为请求的时间戳,系统编码ST统一规定为22,命令编码CN为该数据包的时间类型,访问密码、设备唯一标识在对接时由平台提供,指令参数为数据内容。通讯协议的数据结构如图4所示。图4 通讯协议的数据结构6.1.1通讯包结构组成名称类型长度描述。
2026-01-11 10:37:12
300
原创 环保HJ212-2017协议CRC校验码计算
HJ212-2017协议CRC校验码计算摘要: 本文介绍了环保HJ212-2017协议中的CRC16校验算法实现。该协议采用ANSI CRC16校验方式,通过特定步骤计算数据段的校验码。文章详细说明了CRC16算法步骤,包括初始化寄存器、逐字节异或运算、移位处理等过程,并提供了C语言、Python和Java三种语言的实现代码示例。通过实际数据段"QN=20160801085857223..."的校验计算,验证了算法正确性,输出结果1C80与预期一致。该CRC校验方法可有效检测数据传输过程
2026-01-11 10:11:18
409
原创 使用Python库获取网页时报HTTP 403错误(禁止访问)的解决办法
摘要:本文介绍了解决Python爬取维基百科页面时遇到HTTP 403错误的方法。当使用urllib.request.urlopen直接请求页面时,维基百科服务器会拒绝脚本请求。解决方案是通过Request对象添加浏览器User-Agent头部信息(如Mozilla/5.0),伪装成浏览器访问。修改后的代码能成功获取页面内容并提取链接。关键点包括使用Request对象、设置User-Agent头部以及保持原有解析逻辑不变。
2025-12-30 23:12:09
501
原创 常见的空气质量和天气网站汇总
本文汇总了获取中国空气质量数据的官方及第三方平台资源。官方渠道包括中国环境监测总站官网及其空气质量实时发布系统,提供权威监测数据。第三方平台推荐和风天气,其开发者文档详细介绍了API调用方法,可获取实时空气质量及监测站数据。此外还收录了空气质量历史数据查询平台AQI Study。这些资源为科研、环保及数据分析工作者提供了便捷的数据获取途径,有助于开展空气质量相关研究和应用开发。
2025-12-28 11:33:28
418
原创 macOS系统上或首次使用Python的urllib模块时出现 ssl.SSLCertVerificationError 错误
在macOS系统上使用Python的urllib模块时出现ssl.SSLCertVerificationError错误,提示证书验证失败。该问题仅出现在macOS环境,相同的代码在Windows11上运行正常。错误信息显示无法获取本地颁发者证书(_ssl.c:1028),导致HTTPS请求失败。这表明macOS系统中Python的SSL证书验证机制存在问题,可能是缺少必要的根证书或证书链配置不当所致。
2025-12-24 23:11:11
336
原创 怎么将.ts文件转换成.js文件?
要将.ts文件转换为.js文件,可以使用TypeScript编译器(tsc)。首先安装TypeScript(npm install -g typescript),然后通过命令tsc example.ts编译单个文件,或使用tsconfig.json配置文件管理整个项目。编译后的.js文件可直接在Node.js或浏览器中运行。
2025-12-20 22:26:28
526
原创 Windows11中VS2026使用C++ 现代化json库nlohmann::json的3种方式
本文介绍了在Windows11系统下使用VS2016集成现代化JSON库nlohmann的两种方法:一是直接引入头文件方式,下载源代码后将include目录拷贝到项目中使用;二是通过NuGet包管理器安装nlohmann.json库。文章详细展示了两种方式的实现步骤,包括项目配置、代码示例和运行结果。第一种方式需要手动管理头文件,第二种方式则通过包管理器自动处理依赖关系。两种方法都能有效实现JSON的序列化和反序列化功能,NuGet方式更为简便。文中还提及vcpkg作为第三种可选方案。
2025-12-18 23:52:42
862
原创 nlohmann::json库对象和json结构体转换的新方式
nlohmann::json库从3.9.0版本开始提供了6个宏来简化自定义类型与JSON的转换,不再需要手动定义to_json/from_json函数。这些宏分为侵入式(需在类内定义)和非侵入式(可在类外定义)两类,支持最多64个成员变量。其中包含常规版本、带默认值版本和仅序列化版本,为开发者提供了更灵活的JSON转换方式选择。
2025-12-18 23:22:35
1418
原创 Windows11中使用VS2022编译运行libevent网络库
本文介绍了在Windows11系统中使用VS2022和CMake编译运行libevent事件通知网络库的完整过程。主要内容包括:1) libevent库的功能简介;2) 从GitHub获取源代码的方法;3) 使用CMake配置VS2022工程的具体命令;4) 编译过程的关键步骤和注意事项;5) 在VS2022中运行hello-world示例项目。文章详细说明了Visual Studio版本与CMake生成器参数的对应关系,并展示了编译后的目录结构和项目文件。
2025-12-13 21:55:56
1199
原创 macOS中使用cJSON解析库解析JSON
本文介绍了在macOS系统中使用cJSON解析库的两种方法。cJSON是一个轻量级的ANSI C JSON解析器,采用MIT开源协议。第一种方法是通过下载cJSON源代码,使用CMake编译生成库文件后引入项目;第二种是直接拷贝cJSON.h和cJSON.c文件到项目中。文章详细说明了第一种方法的步骤:安装pkg-config、下载源码、使用CMake编译安装,并展示了编译过程的输出日志。cJSON具有超轻便、可移植和单文件特点,适合在C++项目中处理JSON数据。
2025-12-10 21:34:08
1127
原创 完整的后端课程 | NodeJS、ExpressJS、JWT、Prisma、PostgreSQL
这篇文章介绍了一个完整的后端开发课程,使用NodeJS、ExpressJS、JWT、Prisma和PostgreSQL技术栈构建RESTful API。课程内容包括用户认证系统、电影管理API和观看列表功能,涵盖CRUD操作、JWT认证、数据库管理等现代后端开发实践。项目采用Prisma ORM v6(注意升级到v7会有破坏性变更),提供完整的API端点、数据库模式和部署指南。适合想掌握后端开发、API设计和认证实现的开发者。课程视频和源代码均可在提供的链接中获取。
2025-12-06 22:56:56
1288
原创 C++中编写UT单元测试用例时如何mock非虚函数?
摘要: 在C++单元测试中,使用GoogleTest的GMock通常只能mock虚函数。针对非虚函数的mock,官方推荐通过模板参数实现依赖注入。此外,开源项目cpp-stub提供了更灵活的解决方案,支持对各类函数(包括非虚成员函数、静态函数、构造函数等)进行mock。该工具通过获取函数地址并替换为桩函数实现mock,支持多种平台和编译器,但无法mock纯虚函数、lambda和部分系统调用。使用时需注意编译选项优化和代码覆盖率收集方法。
2025-11-25 22:11:40
1284
原创 C++ 11 中的move赋值运算符
C++11中的移动赋值运算符通过转移而非复制资源提升性能。文章展示了标准库vector和自定义类的移动赋值实现方式,重点说明了其避免复制、减少内存占用的优势。通过MyString类的例子,详细演示了移动构造函数和移动赋值运算符的实现方法,包括资源所有权的转移和原对象状态的清空。最后通过示例程序验证了移动语义的高效性,输出结果显示移动后的源对象变为空状态,而目标对象成功接管资源。
2025-11-14 23:38:44
587
原创 Java实现快速排序算法
本文介绍了Java实现的快速排序算法,这是一种基于分治思想的高效排序方法。算法通过选取基准值(pivot)将数组分为三部分,并递归排序子数组。文章提供了完整的Java代码实现,包括分区(partition)和交换(swap)操作,并对随机生成的数组进行排序演示。快速排序的平均时间复杂度为O(nlogn),适合大规模数据排序。示例展示了排序前(无序)和排序后(升序)的数组对比结果。
2025-11-06 23:38:23
284
原创 Typescript语言中通过get请求获取api.open-meteo.com网站的天气数据
摘要:本文介绍了如何使用TypeScript通过GET请求获取api.open-meteo.com网站的天气数据。示例代码使用node-fetch模块发送HTTP请求,包含设置经纬度参数、处理响应数据和错误捕获。文章详细说明了项目初始化、代码编译和运行步骤,并展示了预期的JSON格式输出结果。该方法可为TypeScript开发者提供一个简单有效的气象API调用解决方案,适用于Node.js环境。
2025-11-02 14:20:21
1202
原创 Go语言中通过get请求获取api.open-meteo.com网站的天气数据
本文介绍了使用Go语言通过HTTP GET请求获取api.open-meteo.com网站天气数据的方法。代码示例展示了如何构建请求URL、发送GET请求、处理响应状态码、读取响应数据并解析JSON格式的天气信息。文章还提供了错误处理机制、运行步骤和注意事项,并演示了如何访问具体的天气字段数据。该实现仅使用Go标准库的net/http和encoding/json包,无需额外依赖,适合快速获取天气API数据的基本需求。
2025-11-01 22:13:26
1396
原创 C#中通过get请求获取api.open-meteo.com网站的天气数据
本文介绍了使用C#发送HTTP GET请求获取api.open-meteo.com天气数据的方法。示例代码展示了如何通过HttpClient类异步发送请求,包含查询参数(latitude,longitude等)的设置和响应处理。文章提供了完整的代码示例、运行步骤和预期输出结果,并提示了JSON解析的扩展方案。相比之前发布的C++、Node.js、Java和Python实现版本,本文补充了C#语言的实现方案,为开发者提供了跨语言获取天气数据的参考。
2025-11-01 22:08:14
472
原创 Python中通过get请求获取api.open-meteo.com网站的天气数据
本文介绍了如何使用 Python 的 requests 模块通过 GET 请求获取 api.open-meteo.com 网站的天气数据。代码示例演示了如何构建带参数的请求(包含纬度、经度等),处理200响应及异常情况,并解析返回的JSON格式天气数据(如温度、风速等)。文章还提供了安装依赖、运行脚本的具体步骤以及示例输出,适用于需要获取天气数据的Python开发者。
2025-11-01 21:42:43
1240
原创 使用Java通过get请求获取api.open-meteo.com网站的天气数据
本文介绍了使用Java发送HTTP GET请求获取api.open-meteo.com网站天气数据的方法。示例代码展示了如何通过HttpURLConnection类实现GET请求,包括URL构建、请求发送、响应处理和异常捕获。文章还提供了代码编译运行步骤、示例输出结果,并提及了JSON解析库的使用建议。对比作者先前用C++和Node.js实现的同功能文章,本文完整呈现了Java版本的具体实现过程,注意事项包括网络连接检查和POST请求的扩展方法。
2025-11-01 21:15:56
588
原创 Nodejs通过get请求获取api.open-meteo.com网站的天气数据
本文介绍了使用Node.js的http模块获取天气数据的方法。通过GET和POST请求调用api.open-meteo.com天气API,演示了请求配置、数据处理和错误处理的具体实现。GET请求通过URL参数传递经纬度信息获取天气数据;POST请求则通过请求体发送JSON数据。文中提供了完整的代码示例,并指出当API不支持POST请求时会返回错误信息,同时建议对复杂HTTP需求可使用axios等高级库。运行示例代码后,GET请求成功返回包含温度、风速等详情的天气数据。
2025-11-01 20:43:00
653
《你必须知道的495个C语言问题》
2010-03-20
HJ 212-2017协议文档以及C++解析类封装
2020-10-23
FFMpeg相关资料.zip
2020-07-19
OpenGL教程电子书(chm格式)中文版
2010-03-23
浙江大学计算机专业历年考研真题
2010-05-19
Acm程序设计比赛资料
2010-05-31
设计模式资料
2012-12-04
C++标准教程----C++初学者的入门资料
2009-12-11
cocos2d-x_2.1.1_EN_API
2013-06-30
VC++6游戏编程 chm格式
2009-12-28
TC-2.0函数查询软件
2010-07-27
系统地介绍了C语言中的指针,指针的概念及指针的使用
2009-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅