当前位置: 首页 > news >正文

EA - 开源工程的编译

文章目录

    • EA - 开源工程的编译
    • 概述
    • 笔记
    • 环境
    • 备注
    • x86版本
    • EABase_x86
    • EAAssert_x86
    • EAThread_x86
      • 修改 eathread_atomic_standalone_msvc.h
        • 原始
        • 修改后
    • EAStdC_x86
    • EASTL_x86
    • EAMain_x86
    • EATest_x86
    • 备注
    • 备注
    • END

EA - 开源工程的编译

概述

EA开源了‘命令与征服’的游戏源码
尝试编译.
首先不是尝试编译游戏本身相关的工程,而是将基础代码编译了。否则游戏本身编译不过,缺东西。

笔记

环境

git bash 命令行
加入gnu make (git的用法整理), 看目录项 ‘为git bash 添加 make命令’
不确定编译时,是否需要make, 但是环境已经修改了,就这么着。
编写 my_git_bash.sh,用来带入cmake环境(用VS2019的CMake)

#!/bin/bash# @file my_git_bash.sh# C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>where cmake
# C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
# export PATH="/c/Program Files/CMake/bin:$PATH"
export PATH="/C/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin:$PATH"# cmake --version
echo "cmake[vs2019] env set ok"
echo "if want to quit the sub shell, input cmd 'exit' to quit"exec bash

进入工程目录
用’git status’查看,是否有不在工程控制内的新文件和目录,有的话就删除。

rm -rf ./out
rm -rf .\build

EA的工程默认是x86的。
用管理员模式运行 git bash.

cd /D/3rd/game_prj
# 引入cmake环境,开sub shell
./my_git_bash.sh

备注

配置工程用的是git bash脚本和命令行,默认生成的工程是x64版本的。
应该是CMake参数要指定是x86还是x64才行。
现在需要编译一个x86的版本出来(EA开放的这些工程都是x86的),必须要在CMake参数中指定生成VS2019x86的工程。
如果不指定c++语言标准,默认都是用最新的实验性标准。
其中有一个工程用最新实验性标准编译不过,必须指定c++语言标准为C++14

cmake .. -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14

如果不是自己手工调用的git bash 脚本命令行,而是用EA工程自己写好的.sh, 那么该.sh中用的CMake命令行,也需要指定VS2019 x86的参数。

x86版本

EABase_x86

迁出工程到本地

git@github.com:electronicarts/EABase.git 

确认在工程源码目录中(如果不在工程目录中,就进入该工程目录)

cd EABase$ pwd
/D/3rd/game_prj/EABase

建立并进入build目录

mkdir ./build && cd ./build# 确认在构建目录中
$ pwd
/D/3rd/game_prj/EABase/build

生成工程文件

cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..

编译工程

cmake --build .

安装工程

# 因为编译出来的工程,默认是以Debug方式编译的,所以下面的命令无效
# 需要自己用VS2019工程编译Debug版,然后自己将东西拷贝到自己的库目录
# 打开 ./build/EABase.sln, 编译ALL_BUILD
# 手工将 D:\3rd\game_prj\prj1_EABase\include\Common\EABase 拷贝到 D:\EA_lib

EAAssert_x86

确认进入了工程源码目录

$ pwd
/D/3rd/game_prj/EAAssert
mkdir ./build && cd ./build
# 将 D:\3rd\game_prj\prj5_EASTL\* 中的内容拷贝到 D:\3rd\game_prj\prj2_EAAssert\test\packages\EASTL
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..
# 打开./build/EAAssert.sln, 为 EAAssert 工程添加头文件包含路径 D:\EA_lib
# 编译工程# 将 D:\3rd\game_prj\prj2_EAAssert\include\EAAssert 拷贝到 D:\EA_lib
# 将 D:\3rd\game_prj\prj2_EAAssert\build\Debug\* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug

EAThread_x86

确认进入了工程源码目录

cd /D/3rd/game_prj/EAThread$ pwd
/D/3rd/game_prj/EAThread
mkdir ./build && cd ./buildcmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..# 打开 ./build/EAThread.sln

修改 eathread_atomic_standalone_msvc.h

将 D:\3rd\game_prj\prj3_EAThread\include\eathread\internal\eathread_atomic_standalone_msvc.h 中的如下代码

原始
	#if defined(EA_PROCESSOR_X86)#define _InterlockedExchange64		_InterlockedExchange64_INLINE#define _InterlockedExchangeAdd64	_InterlockedExchangeAdd64_INLINE#define _InterlockedAnd64			_InterlockedAnd64_INLINE#define _InterlockedOr64			_InterlockedOr64_INLINE#define _InterlockedXor64			_InterlockedXor64_INLINE#endif
修改后
    // 在文件入口处#if defined(EA_PRAGMA_ONCE_SUPPORTED)#pragma once // Some compilers (e.g. VC++) benefit significantly from using this. We've measured 3-4% build speed improvements in apps as a result.#endif#include <windows.h> // add this for InterlockedXXX// ...// 在 EA_PROCESSOR_X86 存在时, 改为如下函数定义#if defined(EA_PROCESSOR_X86)#define _InterlockedExchange64		InterlockedExchange64#define _InterlockedExchangeAdd64	InterlockedExchangeAdd64#define _InterlockedAnd64			InterlockedAnd64#define _InterlockedOr64			InterlockedOr64#define _InterlockedXor64			InterlockedXor64#endif

编译 ALL_BUILD工程
将 D:\3rd\game_prj\prj3_EAThread\build\Debug* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug
将 D:\3rd\game_prj\prj3_EAThread\include\eathread 拷贝到

EAStdC_x86

确认进入了工程源码目录

$ pwd
/D/3rd/game_prj/EAStdC
mkdir ./build && cd ./build
# 将 D:\3rd\game_prj\prj5_EASTL\* 拷贝到 D:\3rd\game_prj\prj4_EAStdC\test\packages\EASTL
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..# 打开 ./build/EAStdC.sln, 
修改EAStdC工程选项 ,添加头文件包含路径 D:\EA_lib
编译ALL_BUILD工程
将D:\3rd\game_prj\prj4_EAStdC\build\Debug\* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug
将 D:\3rd\game_prj\prj4_EAStdC\include\EAStdC 拷贝到 D:\EA_lib

EASTL_x86

这个工程提供了编辑脚本
D:\3rd\game_prj\EASTL\scripts\build.sh
单步不要运行这个脚本,我们只编译x86Debug版本

确认进入了工程源码目录

cd /D/3rd/game_prj/EASTL$ pwd
/D/3rd/game_prj/EASTL
mkdir ./build && cd ./build
# 在 D:\3rd\game_prj\prj5_EASTL\test\packages 目录下,将其他的EA基础工程都拷贝进去(
2025-03-05  14:29    <DIR>          EAAssert
2025-03-05  14:29    <DIR>          EABase
2025-03-05  14:29    <DIR>          EAMain
2025-03-05  14:29    <DIR>          EAStdC
2025-03-05  14:29    <DIR>          EATest
2025-03-05  14:29    <DIR>          EAThread)
# 下面配置工程时,需要联网,好像也没下载啥,可能就是比对子模块的版本啥的,但是不联网不行。
cmake .. -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 -DEASTL_BUILD_TESTS:BOOL=OFF -DEASTL_BUILD_BENCHMARK:BOOL=ON# 用VS2019打开 ./build/EASTL.sln
# 编译ALL_BUILD工程
# 将 D:\3rd\game_prj\prj5_EASTL\build\Debug\* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug
# 将 D:\3rd\game_prj\prj5_EASTL\include\EASTL 拷贝到 D:\EA_lib

EAMain_x86

确认进入了工程源码目录

$ pwd
/D/3rd/game_prj/EAMain
mkdir ./build && cd ./build
# 将 EASTL工程拷贝到 D:\3rd\game_prj\prj6_EAMain\test\packages\EASTL
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..# 用VS2019打开 ./build/EAMain.sln
# 设置 EAMain 工程的头文件包含路径为 D:\EA_lib, 将c++标准改为C++14
# 编译 ALL_BUILD 工程
# 将 D:\3rd\game_prj\prj6_EAMain\build\Debug\* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug
# 将 D:\3rd\game_prj\prj6_EAMain\include\EAMain 拷贝到 D:\EA_lib

EATest_x86

确认进入了工程源码目录

$ pwd
/D/3rd/game_prj/EATest
mkdir ./build && cd ./build
# 将EASTL拷贝到 D:\3rd\game_prj\prj7_EATest\test\packages\EASTL
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_CXX_STANDARD=14 ..
用VS2019打开 ./build/EATest.sln
# 为 EATest 工程添加头文件路径为 D:\EA_lib
# 编译 ALL_BUILD工程
将 D:\3rd\game_prj\prj7_EATest\build\Debug\* 拷贝到 D:\EA_lib\lib_vs2019_x86_debug
将 D:\3rd\game_prj\prj7_EATest\include\EATest 拷贝到 D:\EA_lib

备注

除了 EABase,只有头文件。
其他的EA基础组件,既有头文件,还有.lib

备注

需要确认所有的工程用VS2019编译时,采用的语言标准都是C++14. 否则多种语言标准生成的.lib混用时,可能有不良影响。
此时,就可以继续编译EA开源的游戏工程本身了,有需要EA_lib头和库的时候,包含进去就行。

END

相关文章:

EA - 开源工程的编译

文章目录 EA - 开源工程的编译概述笔记环境备注x86版本EABase_x86EAAssert_x86EAThread_x86修改 eathread_atomic_standalone_msvc.h原始修改后 EAStdC_x86EASTL_x86EAMain_x86EATest_x86备注备注END EA - 开源工程的编译 概述 EA开源了‘命令与征服’的游戏源码 尝试编译. 首…...

springboot3 WebClient

1 介绍 在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端&#xff0c;因此存在一定性能瓶颈。根据 Spring 官…...

【Python项目】基于深度学习的车辆特征分析系统

【Python项目】基于深度学习的车辆特征分析系统 技术简介&#xff1a;采用Python技术、MySQL数据库、卷积神经网络&#xff08;CNN&#xff09;等实现。 系统简介&#xff1a;该系统基于深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;用…...

爬虫不“刑”教程

在大数据时代&#xff0c;信息的获取至关重要&#xff0c;而网络爬虫正是帮助我们从互联网上获取海量数据的重要工具。无论是数据分析、人工智能训练数据&#xff0c;还是商业情报收集&#xff0c;爬虫技术都能发挥重要作用。本篇文章将全面解析 Python 爬虫的各个方面&#xf…...

深入解析 supervision 库:功能、用法与应用案例

1. 引言 在计算机视觉任务中&#xff0c;数据的后处理和可视化是至关重要的环节&#xff0c;尤其是在目标检测、分割、跟踪等任务中。supervision 是一个专门为这些任务提供高效数据处理和可视化支持的 Python 库。本文将深入介绍 supervision 的功能、使用方法&#xff0c;并…...

【橘子golang】从golang来谈闭包

一、简介 闭包&#xff08;Closure&#xff09;是一种编程概念&#xff0c;它允许函数捕获并记住其创建时的上下文环境&#xff08;包括变量&#xff09;。闭包通常用于函数式编程语言&#xff0c;但在许多现代编程语言中也有支持&#xff0c;包括 Go &#xff0c;Js等支持函数…...

盛铂科技PDROUxxxx系列锁相介质振荡器(点频源):高精度信号源

——超低相位噪声、宽频覆盖、灵活集成&#xff0c;赋能下一代射频系统 核心价值&#xff1a;以突破性技术解决行业痛点 在雷达、卫星通信、高速数据采集等高端射频系统中&#xff0c;信号源的相位噪声、频率稳定度及集成灵活性直接决定系统性能上限。盛铂科技PDROUxxxx系列锁…...

Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴

注&#xff1a;本文为 “ Vim 中鼠标右键粘贴、跨系统复制粘贴问题解决方案” 相关文章合辑。 未整理去重。 Linux 入门&#xff1a;vim 鼠标不能右键粘贴、跨系统复制粘贴 foryouslgme 发布时间 2016 - 09 - 28 10:24:16 Vim 基础 命令模式&#xff08;command - mode&…...

仿12306项目(4)

基本预定车票功能的开发 对于乘客购票来说&#xff0c;需要有每一个车次的余票信息&#xff0c;展示给乘客&#xff0c;供乘客选择&#xff0c;因此首个功能是余票的初始化&#xff0c;之后是余票查询&#xff0c;这两个都是控台端。对于会员端的购票&#xff0c;需要有余票查询…...

调研:如何实现智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目录 调研&#xff1a;如何实现智能分析助手&#xff08;Agent&#xff09;&#xff08;AutoCoder、FastGPT、AutoGen、DataCopilot&#xff09;一、交互流程二、数据流程三、架构分类四、开源产品4.1 AutoCoder&#xff08;知识库变体&#xff09;4.2 FastGPT&#xff08;…...

爬虫逆向:脱壳工具Youpk的使用详解

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Youpk 简介1.1 Youpk介绍1.2 Youpk支持场景1.3 Youpk基本流程1.4 使用 Youpk 脱壳步骤1.5 常用的脱壳工具对比2. Youpk 的安装与使用2.1 安装 Youpk2.2 使用 Youpk 脱壳3. 脱壳后的 Dex 文件分析3.1 使用 JADX 反编译…...

Java 大视界 -- Java 大数据在智能政务公共服务资源优化配置中的应用(118)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Java停车平台高并发抢锁技术方案设计 - 慧停宝开源停车管理平台

Java停车平台高并发抢锁技术方案设计 一、业务场景特征 瞬时流量峰值 早晚高峰时段&#xff08;07:30-09:00, 17:30-19:00&#xff09;请求量激增10倍热门商圈停车场每秒并发请求可达5000 QPS 资源竞争特性 单个车位被多人同时抢占&#xff08;超卖风险&#xff09;用户操作链…...

【论文笔记】Attentive Eraser

标题&#xff1a;Attentive Eraser: Unleashing Diffusion Model’s Object Removal Potential via Self-Attention Redirection Guidance Source&#xff1a;https://arxiv.org/pdf/2412.12974 收录&#xff1a;AAAI 25 作者单位&#xff1a;浙工商&#xff0c;字节&#…...

Android Flow操作符分类

Flow操作符分类...

Cursor + IDEA 双开极速交互

相信很多开发者朋友应该和我一样吧&#xff0c;都是Cursor和IDEA双开的开发模式:在Cursor中快速编写和生成代码&#xff0c;然后在IDEA中进行调试和优化 在这个双开模式的开发过程中&#xff0c;我就遇到一个说大不大说小不小的问题&#xff1a; 得在两个编辑器之间来回切换查…...

图像识别-手写数字识别项目

训练模型&#xff1a; 实现神经网络实例 准备数据 导入torchvision.transforms模块&#xff0c;它提供了许多常用的数据预处理操作&#xff0c;如裁剪、旋转、归一化等。 从torch.utils.data模块导入DataLoader类&#xff0c;用于加载数据集并提供批量处理功能。 导入tensorboa…...

推荐几款优秀的PDF转电子画册的软件

当然可以&#xff01;以下是几款优秀的PDF转电子画册的软件推荐&#xff0c;内容简洁易懂&#xff0c;这些软件都具有易用性和互动性&#xff0c;适合不同需求的用户使用。​ ❶ FLBOOK&#xff5c;在线创作平台 支持PDF直接导入生成仿真翻页电子书。提供15主题模板与字体库&a…...

bert模型笔记

1.各预训练模型说明 BERT模型在英文数据集上提供了两种大小的模型&#xff0c;Base和Large。Uncased是意味着输入的词都会转变成小写&#xff0c;cased是意味着输入的词会保存其大写&#xff08;在命名实体识别等项目上需要&#xff09;。Multilingual是支持多语言的&#xff0…...

利用 ArcGIS Pro 快速统计省域各市道路长度的实操指南

在地理信息分析与处理的工作中&#xff0c;ArcGIS Pro 是一款功能强大的 GIS 软件&#xff0c;它能够帮助我们高效地完成各种复杂的空间数据分析任务。 现在&#xff0c;就让我们一起深入学习如何借助 ArcGIS Pro 来统计省下面各市的道路长度&#xff0c;这一技能在城市规划、…...

数据库系统概论(一)详细介绍数据库与基本概念

数据库系统概论&#xff08;一&#xff09;介绍数据库与基本概念 前言一、什么数据库1.数据库的基本概念2.数据库的特点 二、数据库的基本概念1. 数据2. 数据库3.数据库管理系统4.数据库系统 三、数据管理技术的产生和发展四、数据库系统的特点1.数据结构化2.数据共享性3.数据冗…...

数字IC后端实现教程| Clock Gating相关clock tree案例解析

今天小编给大家分享几个跟时钟树综合&#xff0c;clock tree相关的典型问题。 数字IC后端设计实现之分段长clock tree经典案例 Q1:星主好&#xff0c;下面的图是通过duplicate icg来解setup违例的示意图。我没看懂这个 duplicate操作在cts阶段是怎么实现的&#xff0c;用什么…...

build gcc

1&#xff0c;下载源码 wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2 wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz git clone --mirror https://github…...

软考架构师笔记-计算机网络

1.9 计算机网络 OSI/RM 七层模型 物理层 二进制传输(中继器、集线器) (typedef) 数据链路层 传送以帧为单位的信息(网桥、交换机、网卡) 网络层 分组传输和路由选择(三层交换机、路由器)ARP/RARP/IGMP/ICMP/IP 传输层 端到端的连接(TCP/UDP)在前向纠错系统中&#xff0c;当接…...

ubuntu打包 qt 程序,不用每次都用linuxdeployqt打包

用linuxdeployqt打包太麻烦&#xff0c;每次程序编译都要用linuxdeployqt打包一次&#xff0c;而且每次都要很长时间&#xff0c;通过研究得出一个新的打包方法 1.用用linuxdeployqt得出依赖的库文件&#xff08;只要没有增加新模块&#xff0c;只要用一次就可以&#xff09; …...

Spark(6)vm与centos虚拟机

&#xff08;一&#xff09;克隆虚拟机 vm软件提供了克隆的功能&#xff0c;它可以允许我们从一台虚拟机上快速克隆出其他的一模一样的主机。 具体的操作步骤如下&#xff1a; 关闭hadoop100这台虚拟机。在它身上右键&#xff0c;并选择管理 → 克隆 命令 在随后的设置中&#…...

人工智能开发面经AI、大数据、算法

以下是一份AI算法开发岗位的面试面经&#xff0c;结合最新行业趋势和经典问题&#xff0c;涵盖技术解析与实战案例&#xff0c;供参考&#xff1a; 一、机器学习基础&#xff08;占比约30%&#xff09; 1. 过拟合与欠拟合的解决方案 问题&#xff1a;如何解决模型过拟合&…...

在 macOS 上使用 CLion 进行 Google Test 单元测试

介绍 Google Test&#xff08;GTest&#xff09;是 Google 开源的 C 单元测试框架&#xff0c;它提供了简单易用的断言、测试夹具&#xff08;Fixtures&#xff09;和测试运行机制&#xff0c;使 C 开发者能够编写高效的单元测试。 本博客将介绍如何在 macOS 上使用 CLion 配…...

NO2.C++语言基础|C++和Java|常量|重载重写重定义|构造函数|强制转换|指针和引用|野指针和悬空指针|const修饰指针|函数指针(C++)

6. C 和 Java 区别&#xff08;语⾔特性&#xff0c;垃圾回收&#xff0c;应⽤场景等&#xff09; 指针&#xff1a; Java 语⾔让程序员没法找到指针来直接访问内存&#xff0c;没有指针的概念&#xff0c;并有内存的⾃动管理功能&#xff0c;从⽽有效的防⽌了 C 语⾔中的指针…...

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期&#xff0c;我们邀请到了中原银行金融科技部数据团队负责人&#xff0c;吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家&#xff0c;从传统制造企业、IT企业、甲骨文公司到中原银行&#xff0c;他在数据库技术与运维管理…...

自注意力机制的演进-从Transformer架构到DeepSeek-R1模型的深度语义理解革新

2025年&#xff0c;我国发布了开创性且高性价比的大语言模型-DeepSeek-R1&#xff0c;推动了AI领域的重大变革。本章节回顾了LLM的发展历程&#xff0c;其起点可追溯至2017年Transformer架构的提出&#xff0c;该架构通过自注意力机制(Self-Attention)彻底革新了自然语言处理技…...

数据结构拓展:详解realloc(C++)

前言 在C中&#xff0c;realloc 是C标准库提供的一个内存管理函数&#xff0c;用于动态调整已分配内存块的大小。尽管C更推荐使用 new/delete 或智能指针&#xff0c;但在某些场景&#xff08;如与C代码交互或底层内存操作&#xff09;中仍可能用到 realloc。以下是详细分析&a…...

计算机网络数据传输探秘:包裹如何在数字世界旅行?

计算机网络数据传输探秘:包裹如何在数字世界旅行? 一、从快递网络看数据传输本质 想象你网购了一件商品: 打包:商家用纸箱包装,贴上地址标签(数据封装)运输:包裹经过网点→分拣中心→运输车(网络节点与链路)签收:快递员核对信息后交付(数据校验与接收)数据的网络…...

十二、OSG学习笔记-Control

上一章节&#xff1a; 十一、OSG学习笔记-操作系统接口-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145891502 本章节代码&#xff1a; OsgStudy/Controls CuiQingCheng/OsgStudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/osg-study/tree/ma…...

DevOps全流程

DevOps全流程 面试速记 DevOps 是一种融合开与运维的软件研发实践方法&#xff0c;规划从需求调研到开发&#xff0c;测试&#xff0c;部署等全流程&#xff0c;通过Jenkins 和Kubernetes 等自动化工具集成部署实现从代码编写到部署的无缝衔接&#xff0c;加速软件交付周期。我…...

ARM Linux LCD上实时预览摄像头画面

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…...

NL2SQL-基于Dify+阿里通义千问大模型,实现自然语音自动生产SQL语句

本文基于Dify阿里通义千问大模型&#xff0c;实现自然语音自动生产SQL语句功能&#xff0c;话不多说直接上效果图 我们可以试着问他几个问题 查询每个部门的员工数量SELECT d.dept_name, COUNT(e.emp_no) AS employee_count FROM employees e JOIN dept_emp de ON e.emp_no d…...

centos8更换阿里云yum源

1.centos8更换为阿里云yum源 2.更换阿里云Yum-centos8源 mv /etc/yum.repos.d/CentOS-Stream-BaseOS.repo /etc/yum.repos.d/CentOS-Stream-BaseOS.repo.backupcurl -o /etc/yum.repos.d/CentOS-Stream-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-8.repowget -O /et…...

在命令的轨迹中:创建、删除与查看普通用户,Linux用户管理的风华与深邃

文章目录 引言一、创建普通用户二、测试是否创建成功三、查看普通用户四、更改密码五、赋予普通用户root权限六、删除普通用户小结 引言 在浩瀚如海的Linux系统中&#xff0c;每一位用户都是一颗独立的星辰&#xff0c;散发着属于自己的光芒。在这片数字的星空中&#xff0c;用…...

年后寒假总结及计划安排

年后寒假总结 年后主要学习了微服务&#xff0c;nacos (服务注册中心)&#xff0c;feign&#xff08;远程调用&#xff09;&#xff0c;网关&#xff0c;双token&#xff08;相较于之前更加规范&#xff0c;更加符合企业级&#xff09;&#xff0c;配置管理 &#xff0c;mybati…...

IvorySQL v4 逻辑复制槽同步功能解析:高可用场景下的数据连续性保障

功能简介 IvorySQL v4 基于 PostgreSQL 17&#xff0c;引入了逻辑复制槽同步至热备份数据库的功能。这一改进有效解决了旧版本中主数据库与备份数据库切换后逻辑复制中断的问题。对于那些追求数据高可用性和业务连续性的数据库来说&#xff0c;这无疑是一个重大的利好消息。它…...

GitLab常用操作

git init //初始化一个git的本地仓库git rm -r --cached //清除缓存&#xff0c;比如修改了.gitignore文件&#xff0c;可以先清缓存再进行下边的操作git add README.md //增加一个文件 //git add 文件夹/ //增加文件夹内的所有文件 //git add --all //增加当前项目…...

【运维笔记】docker 中 MySQL从5.7版本升级到8.0版本 - 平滑升级

在Docker环境中&#xff0c;将MySQL从5.7版本升级到8.0版本时&#xff0c;数据确实需要迁移。虽然不能直接通过docker-compose命令简单地进行版本升级并保留所有数据&#xff0c;但可以通过一系列步骤来实现平滑升级和数据迁移。以下是详细的迁移步骤&#xff1a; 一、准备阶段…...

NUMA架构介绍

NUMA 架构详解 NUMA&#xff08;Non-Uniform Memory Access&#xff0c;非统一内存访问&#xff09; 是一种多处理器系统的内存设计架构&#xff0c;旨在解决多处理器系统中内存访问延迟不一致的问题。与传统的 UMA&#xff08;Uniform Memory Access&#xff0c;统一内存访问…...

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了&#xff0c;下面创建多模块&#xff1a; 填好之后点击create 不删了&#xff0c;直接改包名&#xff0c;看自己喜欢 修改包名和启动类名&#xff1a; 打开ServiceApplication启动类&#xff0c;修改如下&#xff1a; …...

【哇! C++】类和对象(三) - 构造函数和析构函数

目录 一、构造函数 1.1 构造函数的引入 1.2 构造函数的定义和语法 1.2.1 无参构造函数&#xff1a; 1.2.2 带参构造函数 1.3 构造函数的特性 1.4 默认构造函数 二、析构函数 2.1 析构函数的概念 2.2 特性 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中…...

单片机项目复刻需要的准备工作

一、前言 复刻单片机的项目的时候&#xff0c;有些模块是需要焊接的。很多同学对焊接没有概念。 这里说一下做项目的基本工具。 比如&#xff1a;像这种模块&#xff0c;都需要自己焊接了排针才可以链接的。 二、基本模块 2.1 单排排针 一些模块买回来是没有焊接的&#x…...

Nginx负载均衡配置详解:轻松实现高可用与高性能

在现代Web应用中&#xff0c;负载均衡是确保系统高可用性和高性能的关键技术之一。Nginx作为一款高性能的HTTP服务器和反向代理服务器&#xff0c;其负载均衡功能被广泛应用于各种场景。本文将详细介绍如何使用Nginx实现负载均衡配置&#xff0c;帮助开发者轻松应对高并发和大流…...

SQLAlchemy系列教程:集成Pydantic增强数据处理能力

本教程介绍如何将Pydantic用于数据验证&#xff0c;SQLAlchemy用于数据库操作&#xff0c;从而通过强大的数据处理能力增强Python应用程序。 介绍 在现代web开发中&#xff0c;确保数据的有效性和完整性至关重要。Pydantic和SQLAlchemy是两个功能强大的Python库&#xff0c;可…...

Linux下AWK命令使用方法

文章目录 **一、AWK 基本语法****二、核心概念****1. 内置变量****2. 分隔符****3. BEGIN 和 END 块** **三、常见用法示例****1. 基础打印****2. 条件过滤****3. 计算与统计****4. 字符串操作****5. 处理 CSV 文件** **四、高级用法****1. 使用数组统计****2. 多条件分支&…...