【C++风云录】创造视觉奇迹:探索C++图形编程的魅力与可能性
图形与界面:从SFML到Allegro,探索C++图形编程的世界
前言
随着计算机图形技术和界面设计的快速发展,图形编程在软件开发中变得越来越重要。C++作为一种功能强大的编程语言,为开发人员提供了丰富的图形编程工具和库。本文将介绍几个流行的C++图形编程库,包括SFML、Qt、OpenGL、DirectX、wxWidgets和Allegro。通过认识这些库,开发者可以更好地理解和应用图形编程的原理和技术。
欢迎订阅专栏:C++风云录
文章目录
- 图形与界面:从SFML到Allegro,探索C++图形编程的世界
- 前言
- 1. SFML(Simple and Fast Multimedia Library)
- 1.1 概述
- 1.2 主要特点
- 1.3 应用领域
- 2. Qt
- 2.1 概述
- 2.2 跨平台特性
- 2.3 GUI 编程功能
- 2.4 网络编程功能
- 3. OpenGL
- 3.1 概述
- 3.2 主要特点
- 3.3 应用领域
- 4. DirectX
- 4.1 概述
- 4.2 主要特点
- 4.3 应用领域
- 5. wxWidgets
- 5.1 概述
- 5.2 主要特点
- 5.3 应用领域
- 6. Allegro
- 6.1 概述
- 6.2 主要特点
- 6.3 应用领域
- 总结
1. SFML(Simple and Fast Multimedia Library)
1.1 概述
SFML(Simple and Fast Multimedia Library)是一个简单且快速的多媒体库,专注于多媒体功能和游戏开发。它提供了一套简单易用的API,支持2D图形渲染、音频播放、窗口管理等功能。SFML使用现代C++语言编写,可以运行在多个平台上,包括Windows、Mac和Linux。
1.2 主要特点
- 简单易用的API:SFML提供了一套简单易用的API,使得开发者可以快速上手并迅速实现各种功能。
- 跨平台支持:SFML可以在多个平台上运行,包括Windows、Mac和Linux,保证了开发者可以跨平台开发应用程序。
- 丰富的功能支持:SFML支持2D图形渲染、音频播放、输入处理、窗口管理等功能,可以满足多种应用程序和游戏开发的需求。
以下是一个使用SFML绘制一个窗口并显示文本的示例代码:
#include <SFML/Graphics.hpp>int main() {sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Window");sf::Font font;if (!font.loadFromFile("arial.ttf")) {return -1;}sf::Text text;text.setFont(font);text.setString("Hello, SFML!");text.setCharacterSize(24);text.setFillColor(sf::Color::White);text.setPosition(200, 200);while (window.isOpen()) {sf::Event event;while (window.pollEvent(event)) {if (event.type == sf::Event::Closed) {window.close();}}window.clear();window.draw(text);window.display();}return 0;
}
1.3 应用领域
- 游戏开发:由于SFML专注于多媒体功能和游戏开发,因此它在游戏开发领域非常受欢迎。开发者可以利用SFML的图形渲染、音频播放和输入处理功能来创建各种类型的游戏。
- 多媒体应用程序开发:除了游戏开发,SFML还可用于构建其他类型的多媒体应用程序,如音乐播放器、图像编辑器等。SFML提供了实现这些应用程序所需的功能和工具。
2. Qt
2.1 概述
Qt是一个跨平台应用程序开发框架,涵盖了GUI编程、网络编程、数据库访问等功能。它是一个功能强大且易于使用的工具,可以帮助开发人员快速构建现代化的应用程序。Qt使用C++语言进行开发,并提供了丰富的类库和工具,使得开发者可以轻松地创建跨平台的应用程序。
2.2 跨平台特性
Qt有着良好的跨平台支持,可以在多个操作系统上运行,包括Windows、Mac、Linux等。它使用了特定于操作系统的功能和API,以实现对各种平台的完全支持。开发者可以使用相同的代码和工具来构建针对不同平台的应用程序,大大提高了开发效率。
2.3 GUI 编程功能
Qt提供了丰富的GUI编程功能,使得开发者可以轻松地构建各种用户界面。它提供了一系列的GUI控件和布局管理器,可以快速搭建用户界面并实现各种交互功能。Qt还支持图形绘制、动画效果、图像处理等功能,使得界面设计更加丰富多样。
以下是一个使用Qt创建一个简单窗口并添加按钮的示例代码:
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);QMainWindow window;window.setGeometry(100, 100, 400, 300);QPushButton button("Click me", &window);button.setGeometry(10, 10, 80, 30);window.show();return app.exec();
}
2.4 网络编程功能
Qt还提供了网络编程功能,使得开发者可以轻松地实现网络通信和数据传输。Qt提供了一些类和函数,用于处理网络套接字、服务器和客户端的创建和管理。开发者可以使用这些功能来构建各种类型的网络应用程序,如聊天程序、文件传输等。
以上是Qt的一些主要功能和特点,开发者可以根据自己的需求选择合适的功能来构建各种类型的应用程序。Qt的文档和示例代码提供了更详细的信息和使用方法,开发者可以参考官方文档进行深入学习和开发。
3. OpenGL
3.1 概述
OpenGL是一个开放的图形库,用于开发二维和三维图形应用程序。它提供了一组API,可以实现高性能的图形渲染、图像处理和图形效果。OpenGL使用C或C++编写,并且是跨平台的。
3.2 主要特点
- 高性能图形渲染:OpenGL采用基于硬件的图形加速技术,可以实现高性能的图形渲染,能够快速处理大量的图像数据。
- 硬件和平台无关性:OpenGL是一个跨平台的图形库,可以在各种操作系统和硬件平台上运行,包括Windows、Mac、Linux等。
- 开放性和可扩展性:OpenGL是一个开放的标准,支持第三方开发人员进行扩展和定制,开发者可以通过各种扩展来实现特定的图形效果和功能。
3.3 应用领域
- 游戏开发:OpenGL在游戏开发领域得到广泛应用,可以实现各种类型的游戏,包括实时策略游戏、角色扮演游戏等。
- 计算机图形学:OpenGL可以用于实现计算机图形学相关的算法和技术,如光照模型、物体投影等。
- 科学可视化:OpenGL在科学可视化领域也非常有用,可以实现各种科学数据的可视化展示。
对于使用OpenGL开发应用程序,开发者需要了解OpenGL的基本原理和API,以及特定平台的相关知识。可以借助各种OpenGL教程和文档来学习和开发。
OpenGL是一个开放的图形库,用于开发二维和三维图形应用程序。它提供了一组API,可以实现高性能的图形渲染、图像处理和图形效果。OpenGL使用C或C++编写,并且是跨平台的。
以下是一个使用OpenGL绘制一个简单三角形的示例代码:
#include <GL/gl.h>
#include <GL/glut.h>void init() {glClearColor(0.0, 0.0, 0.0, 0.0);
}void display() {glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);glColor3f(1.0, 0.0, 0.0);glVertex2f(-0.6, -0.75);glColor3f(0.0, 1.0, 0.0);glVertex2f(0.6, -0.75);glColor3f(0.0, 0.0, 1.0);glVertex2f(0.0, 0.75);glEnd();glFlush();
}int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(400, 300);glutInitWindowPosition(100, 100);glutCreateWindow("OpenGL Window");init();glutDisplayFunc(display);glutMainLoop();return 0;
}
4. DirectX
4.1 概述
DirectX是一个由微软开发的多媒体和游戏开发API集合。它提供了一组丰富的功能,包括图形渲染、音频处理、输入设备管理等。DirectX使用C++语言进行开发,可以在Windows平台上进行图形和游戏开发。
4.2 主要特点
- 强大的图形渲染功能:DirectX提供了强大的图形渲染功能,包括3D图形渲染、纹理映射、光照等。开发者可以利用这些功能来创建各种逼真的图形效果。
- 音频处理和播放:DirectX提供了音频处理和播放功能,可以实现高质量的音频效果和音乐播放。
- 输入设备管理:DirectX可以管理各种输入设备,如键盘、鼠标、游戏手柄等,方便开发者进行用户输入的处理。
4.3 应用领域
- 游戏开发:DirectX在游戏开发领域得到广泛应用,可以实现各种类型的游戏,包括即时战略游戏、射击游戏等。
- 多媒体应用程序:除了游戏开发,DirectX还可以用于构建其他类型的多媒体应用程序,如视频播放器、音乐编辑器等。
使用DirectX进行应用程序开发需要了解其相关API和功能,以及Windows平台的相关知识。Microsoft提供了完善的文档和示例代码,供开发者学习和参考。
以下是一个使用DirectX绘制一个简单的窗口并显示文本的示例代码:
#include <d3d9.h>LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {switch (msg) {case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hWnd, msg, wParam, lParam);
}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {HWND hWnd;WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, _T("DirectX Window"), NULL };RegisterClassEx(&wc);hWnd = CreateWindow(wc.lpszClassName, _T("DirectX Window"), WS_OVERLAPPEDWINDOW, 100, 100, 800, 600, NULL, NULL, wc.hInstance, NULL);IDirect3D9* pD3D;pD3D = Direct3DCreate9(D3D_SDK_VERSION);D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp, sizeof(d3dpp));d3dpp.Windowed = TRUE;d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;d3dpp.EnableAutoDepthStencil = TRUE;d3dpp.AutoDepthStencilFormat = D3DFMT_D16;IDirect3DDevice9* pd3dDevice;pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pd3dDevice);IDirect3DVertexBuffer9* pVB;pd3dDevice->CreateVertexBuffer(3 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &pVB, NULL);VOID* pVertices;pVB->Lock(0, sizeof(vertices), (void**)&pVertices, 0);memcpy(pVertices, vertices, sizeof(vertices));pVB->Unlock();D3DXMATRIX matWorld;D3DXMatrixIdentity(&matWorld);MSG msg;ZeroMemory(&msg, sizeof(msg));static bool active = true;while (msg.message != WM_QUIT) {if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) {TranslateMessage(&msg);DispatchMessage(&msg);}else {if (active) {pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0);pd3dDevice->BeginScene();pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);pd3dDevice->SetStreamSource(0, pVB, 0, sizeof(CUSTOMVERTEX));pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);pd3dDevice->EndScene();pd3dDevice->Present(NULL, NULL, NULL, NULL);}}}pVB->Release();pd3dDevice->Release();pD3D->Release();UnregisterClass(wc.lpszClassName, wc.hInstance);return 0;
}
以上代码使用DirectX绘制了一个蓝色的三角形,并且使用键盘输入来控制窗口的显示。
请注意,上述代码只是示例,实际使用时,还需要正确设置和初始化相应的库和环境。详细的使用方法和示例可以在各个库的官方文档中找到。
5. wxWidgets
5.1 概述
wxWidgets是一个开源的C++图形用户界面(GUI)库,可以用于跨平台的应用程序开发。它提供了一套丰富的类库和工具,使得开发者能够快速构建跨平台的应用程序,并且具有良好的可移植性。wxWidgets支持各种操作系统,包括Windows、Mac和Linux。
5.2 主要特点
- 跨平台支持:wxWidgets提供了对多个操作系统的支持,开发者可以使用相同的代码和工具来构建适用于不同平台的应用程序。
- 可移植性:wxWidgets具有良好的可移植性,开发者可以在不同的平台上进行开发和部署,而无需进行太多的修改。
- 丰富的控件库:wxWidgets提供了丰富的控件库,包括按钮、文本框、列表框等,使得界面开发变得非常简单。
以下是一个使用wxWidgets创建一个简单窗口并添加按钮的示例代码:
#include <wx/wx.h>class MyFrame : public wxFrame {
public:MyFrame(const wxString& title) : wxFrame(nullptr, wxID_ANY, title, wxDefaultPosition, wxSize(300, 200)) {wxPanel* panel = new wxPanel(this);wxButton* button = new wxButton(panel, wxID_ANY, "Click me", wxPoint(50, 50), wxDefaultSize);Connect(button->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnButtonClick));}void OnButtonClick(wxCommandEvent& event) {wxMessageBox("Button clicked!", "Message");}wxDECLARE_EVENT_TABLE();
};wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)EVT_CLOSE(MyFrame::OnClose)
wxEND_EVENT_TABLE()class MyApp : public wxApp {
public:bool OnInit() override {MyFrame* frame = new MyFrame("wxWidgets Window");frame->Show();return true;}
};wxIMPLEMENT_APP(MyApp);
5.3 应用领域
- 软件开发工具:wxWidgets可以用于开发各种类型的软件开发工具,如集成开发环境(IDE)、配置管理工具等。
- 嵌入式系统:wxWidgets适用于嵌入式系统的开发,可以帮助开发者构建用户友好的界面,并实现与硬件的交互。
- 桌面应用程序:wxWidgets还可用于构建各种类型的桌面应用程序,如文本编辑器、图片浏览器等。
开发者可以根据自己的需求和平台选择合适的GUI库,wxWidgets提供了一套完整和易用的工具和类库,适用于各种类型的应用程序开发。开发者可以参考wxWidgets官方文档和示例代码,深入学习和了解其功能和使用方法。
6. Allegro
6.1 概述
Allegro是一个用于游戏和多媒体应用程序开发的C/C++库。它提供了一系列的函数和类,用于处理图形、声音、输入、定时器等方面的功能。Allegro是开源的,并且可以在多个平台上使用,包括Windows、Mac和Linux。
6.2 主要特点
- 跨平台支持:Allegro可以在多个操作系统上运行,包括Windows、Mac和Linux,开发者可以编写一次代码,在不同平台上进行编译和运行。
- 图形和声音处理:Allegro提供了一套丰富的图形和声音处理功能,可以帮助开发者实现高质量的图形效果和音频效果。
- 输入和响应事件:Allegro支持各种输入设备,包括键盘、鼠标、游戏手柄等,并且提供了响应事件的机制,使得开发者可以方便地处理用户输入。
以下是一个使用Allegro创建一个简单游戏窗口并显示图像的示例代码:
#include <allegro5/allegro5.h>
#include <allegro5/allegro_image.h>int main() {ALLEGRO_DISPLAY *display = NULL;ALLEGRO_BITMAP *image = NULL;if (!al_init()) {return -1;}if (!al_init_image_addon()) {return -1;}display = al_create_display(800, 600);if (!display) {return -1;}image = al_load_bitmap("image.png");if (!image) {return -1;}al_clear_to_color(al_map_rgb(0, 0, 0));al_draw_bitmap(image, 0, 0, 0);al_flip_display();al_rest(5.0);al_destroy_bitmap(image);al_destroy_display(display);return 0;
}
6.3 应用领域
- 游戏开发:Allegro在游戏开发领域得到广泛应用,可以实现各种类型的游戏,包括2D和3D游戏。
- 多媒体应用程序:Allegro可以用于构建其他类型的多媒体应用程序,如音乐播放器、图像编辑器等。
使用Allegro进行应用程序开发需要了解其相关API和功能,以及特定平台的相关知识。官方文档和示例代码提供了更详细的信息和使用方法,开发者可以参考官方文档进行深入学习和开发。
总结
本文介绍了几个常用的C++图形编程库,包括SFML、Qt、OpenGL、DirectX、wxWidgets和Allegro。通过阅读本文,读者可以了解每个库的概述、主要特点和应用领域。本文还提供了详细的C++实例代码,帮助读者快速上手和理解每个库的使用方式。图形编程是现代软件开发中不可或缺的一部分,通过掌握这些库,开发者将能够更好地应用图形编程技术,提升用户体验,开发出更加出色的应用程序。
相关文章:
【C++风云录】创造视觉奇迹:探索C++图形编程的魅力与可能性
图形与界面:从SFML到Allegro,探索C图形编程的世界 前言 随着计算机图形技术和界面设计的快速发展,图形编程在软件开发中变得越来越重要。C作为一种功能强大的编程语言,为开发人员提供了丰富的图形编程工具和库。本文将介绍几个流…...
常见的Nginx+Redis+MQ+DB架构设计
三高,复杂的架构 SQRS CAP 缓存,限流 【Redis,缓存】 cache-aside 缓存cache:数据源的副本 store 1. Read/Write Through Pattern 读写穿透模式 redis:放当前在线用户,热点数据...
vue+elementUI搭建动态表头的表格
前提:以下代码是vue2项目结合elementUi完成的 数据结构 后端传来的数据是两个list,一个表头的list,一个表格内容的list // 表头 headTableAtts: [{ columnLabel: 姓名, columnName: name },{ columnLabel: 年龄, columnName: age },{ colu…...
【ENSP】交换机和交换机之间实现静态路由
1.概念 三层交换机只能在Vlanif逻辑口配置iP地址 2.实现方法 交换机允许对应vlan通行,配置vlanif的ip地址,做静态路由 3.静态路由配置方法 ip route-static 目的网段 子网掩码 下一跳设备 LSW1三层交换机配置 u t m sys vlan batch 10 20 …...
2024.2.18力扣每日一题——N叉树的前序遍历
2024.2.18 题目来源我的题解方法一 深度优先遍历(递归方式)方法二 迭代方式(栈实现) 题目来源 力扣每日一题;题序:589 我的题解 方法一 深度优先遍历(递归方式) 与二叉树的前序遍…...
Taro活动列表中,对某一个活动添加分享按钮
采用data-留下分享链接的拼接参数 1.在item文件中写按钮 openType“share” <ButtonclassName{classes.rowRightShareButton}openType"share"data-share-transfer-id{lastGiftingTransferId}data-share-picture-url{shareUrl}data-share-title{shareTitle}onClic…...
深入理解计算机系统 家庭作业 2.65
/* 异或运算可以把同为1时变成0。 */ #include <stdio.h> #include <stdlib.h> int odd_ones(unsigned x); int main(void) { int x0xF00000016; printf("x的奇数位:%d",odd_ones(x)); return 0; } int odd_ones(unsigned x) { char…...
Java字节码
Java Agent概述 Java Agent是一种特殊类型的软件组件,它允许在Java虚拟机(JVM)运行时修改应用程序的字节码。这种技术通常用于性能监控、日志记录、系统调试等。Java Agent主要分为两类: 1. 启动时加载的Agent(Pre-Ma…...
深入解析大数据体系中的ETL工作原理及常见组件
** 引言 关联阅读博客文章:探讨在大数据体系中API的通信机制与工作原理 关联阅读博客文章:深入理解HDFS工作原理:大数据存储和容错性机制解析 ** 在当今数字化时代,大数据处理已经成为了企业成功的重要组成部分。而在大数据处…...
条件变量的简易C++实现版
条件变量通常与互斥锁一起使用,用于线程间的同步。以下是条件变量常用的一些函数: ①std::condition_variable::wait(lock, pred):线程调用此函数时,会原子性地释放锁并阻塞当前线程,等待另一个线程调用 notify_one 或…...
目标检测评价标准
主要借鉴:https://github.com/rafaelpadilla/Object-Detection-Metrics?tabreadme-ov-file 主要评价指标、术语: Intersection Over Union (IOU):两个检测框交集面积与并集面积的比值 True Positive (TP):IOU大于阈值的检测框…...
C51-- 蓝牙,WIFI模块
HC-08蓝牙模块: 蓝牙 -- 最好用的 串口透传 模块 透传 -- 透明传送,指的是在数据传输的过程中,通过无线的方式这组数据不发生任何形式的改变, 仿佛传输过程是透明的,同时保证传输质量,最终原封不动的传送到接收者手…...
HN热帖|替换Redis的一场赛跑
3 月 21 日, Redis Ltd. 宣布了一项重大决定:Redis “内存数据存储”项目从 Redis 7.4 版本开始将以非自由的、源代码可用的许可证发布。这一消息并不受欢迎,但也并非完全意外。这次的变化的不同寻常之处是市面上已经有了多个 Redis 替代品可…...
Kubernetes(k8s):网络插件之Calico安装与详解
Kubernetes(k8s):网络插件之Calico安装与详解 1、什么是Calico?2、安装和配置Calico(控制节点-master执行)3、配置网络策略4、 Calico 的 yaml 文件部分详解1、ConfigMap配置2、DaemonSet 配置 5、calico-k…...
Chrome base 库详解:工具类和常用类库
Chrome浏览器使用了一个强大的库名为base,它包括了许多工具类和常用类库,以支持Chrome的底层功能和性能优化。在本文中,我们将详细阐述base库中的每个子项,并提供示例代码来展示其用法。 base 库的基本结构 Chrome的base库是一个…...
Nginx开发实战三:替换请求资源中的固定数据
文章目录 1.效果预览2.下载Nginx解压并初始化3.字符串替换模块安装4.修改nginx配置文件并重启 1.效果预览 页面初始效果 页面替换后效果 说明:页面是内网的一个地址,我们通过nginx可以很便捷的将其改为外网访问,但是在外网访问这个地址后,…...
如何在Python中实现多线程和多进程?
如何在Python中实现多线程和多进程? 在Python中,多线程和多进程是实现并发编程的两种主要方式。它们各自有其特点和适用场景。下面将分别介绍如何在Python中实现多线程和多进程,并探讨它们的优缺点。 一、多线程 Python的标准库提供了thre…...
Redis面试题10道
1、什么是 Redis?简述它的优缺点? Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作…...
vue3从精通到入门6:v-memo指令
v-memo是一个用于优化组件渲染性能的指令。它允许你根据某个条件来缓存组件的虚拟 DOM 树,从而在条件没有变化时避免不必要的重新渲染。这对于那些接收大量 props 且渲染成本较高的组件来说非常有用。 用法 v-memo 指令接受一个表达式或一个数组作为参数࿰…...
【算法集训】基础算法:双指针
344. 反转字符串 // 双指针思路 void reverseString(char* s, int sSize) {int i 0,j sSize - 1;while(i < j) {char tmp s[i];s[i] s[j];s[j] tmp;i , j --;} }392. 判断子序列 // 双指针 bool isSubsequence(char* s, char* t) {// 定义s和t的下标指针int i 0, j …...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
