【Windows7和Windows10下从零搭建Qt+Leaflet开发环境】

Windows7和Windows10下从零搭建Qt+Leaflet开发环境

本文开始编写于2025年1月27日星期一(农历:腊月二十八,苦逼的人,过年了还在忙工作)。

第一章 概述

整个开发环境搭建需要的资源:

  • 操作系统
    Windows7_x64(以下都简称为Win7)或Windows10(以下简称为Win10),我自己是在实际的Win7上安装测试成功的,Win10是在虚拟机下安装测试成功的。
  • C++开发环境
    Qt5.14.2(含Qt Creator)。
  • C++编译、调试环境
    编译环境:MSVC2017(32/64)(以下简称为vs2017),这里说的是vs2017的编译环境,不是Visual Studio 2017 IDE。
    调试环境:Windows10 SDK(以下简称Win10SDK),不要简单认为只是开发包,内含调试器。
  • 地图下载器(下载瓦片地图数据)
    Offline Map Maker 8.329。
  • 地图开发库(JavaScript轻量级地图开发库)
    Leaflet1.9.4。

还有一件事情需要说明,以下介绍的内容都为离线安装,当然在线也不影响安装。下面就按照上面资源的顺序逐一说明如何下载、安装和测试。

第二章 Qt5.14.2

很多人可能想问:为什么要用Qt5.1.4.2呢?因为目前我的笔记本上使用的操作系统是win7,Qt5.14.2是Win7支持的最后一版Qt,所以就选择了。

1. 下载

Qt5.15之前的离线安装包目前在国内已经被墙了,无法下载,只能利用安装包的命名规律直接用迅雷来下载,直接访问下载地址会显示“Download from your IP address is not allowed”。

以下为Qt5.14.2的安装包和源码的下载链接。

  • 安装包:
    https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe
    https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-mac-x64-5.14.2.dmg
    https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-linux-x64-5.14.2.run
    https://download.qt.io/new_archive/qt/5.9/5.9.9/qt-opensource-windows-x86-5.9.9.exe
    https://download.qt.io/new_archive/qt/5.9/5.9.9/qt-opensource-linux-x64-5.9.9.run

  • 源码地址:
    https://download.qt.io/archive/qt/5.14/5.14.2/submodules/qtbase-everywhere-src-5.14.2.tar.xz
    https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz

打开迅雷,新建链接,将地址复制进去就可以直接下载了。
在这里插入图片描述

2. 安装

下载完成后,在下载目录双击“qt-opensource-windows-x86-5.14.2.exe”开始安装。

首先,出现欢迎界面,点击“Next”,如下图。
在这里插入图片描述
点击“下一步”,如下图。
在这里插入图片描述
选择安装目录(安装完成后大概要占用4.98GB的空间),点击“下一步”,如下图。
在这里插入图片描述
如下图勾选,先不要点击“下一步”。这里一定要勾选上“Qt WebEngine”,因为后面需要在Qt中显示网页,并且还要与Leaflet(用JavaScript写的地图轻量级开发库)混合编程。
在这里插入图片描述
如下图勾选,点击“下一步”。
在这里插入图片描述
选择“I have read…”,点击“下一步”,如下图。
在这里插入图片描述
点击“下一步”,如下图。
在这里插入图片描述
点击“安装”,如下图。
在这里插入图片描述
正在安装,如下图。
在这里插入图片描述
安装完成,点击“下一步”,如下图。
在这里插入图片描述
点击“完成”,如下图。到这里,Qt已经完成安装。
在这里插入图片描述
说明:如果在线安装Qt5.14.2的话,在安装过程的前面几步中会有填写Qt官网注册的账号和密码的步骤,需要提前在Qt官网注册账号,离线则没有这一步。

第三章 vs2017+Win10SDK

这里解释一下为什么选择vs2017作为编译器,因为前面选择了QtWebEngine作为混合编程的基础,在Qt5.14.2中自带的mingw编译器不支持编译QtWebEngine模块,而vs2017可以编译。

1. 安装前的准备(Win7)

说明:win10不需要以下步骤。
(1) 最好不要有比vs2017更高版本的Visual Studio,否则需要联网才能完成安装过程。
(2) 最好有一版不比vs2017版本高的visual studio的完整安装,因为我在虚拟机的win7裸系统中尝试完整个安装过程(第一章介绍的所有资源都安装部署完成)后,测试程序中使用QWebEngineView的load()函数会使程序崩溃,而在装有visual studio 2013(我自己的2个笔记本上都装了)的环境中完成整个安装过程后,测试程序没有任何问题。

2. 下载

这里参考了CSDN博主“闫有尽意无琼”的“qt5.14.2 独立msvc环境搭建(不安装vs)”

原文地址 - https://blog.csdn.net/yanchenyu365/article/details/130105659?ops_request_misc=%257B%2522request%255Fid%2522%253A%252224f424bc4e2297aed1d98c873c9cc584%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=24f424bc4e2297aed1d98

下载链接(阿里云盘分享)- https://www.aliyundrive.com/s/xRnxGiTznH1

3. 安装vs2017

说明:安装前会需要解压,解压目录不要超过80个字符。

下载完成后,找到下载目录的“vs2017_x86_c++生成工具_离线包_自解压文件.exe”,双击开始安装。

点击“Extract”,开始解压,如下图。
在这里插入图片描述
正在解压,如下图。
在这里插入图片描述
解压完后稍等,会自动弹出“Visual Studio Installer”,点击“继续”,如下图。
在这里插入图片描述
接下来会出现如下两图:“正在准备Visual Studio安装程序”和“正在准备”,都不需要操作。
在这里插入图片描述
在这里插入图片描述
到这一步,可以开始正式安装了(如下图),建议保持默认配置,不要修改安装目录,直接点击右下角的“安装”即可(我这里的图有误,“关闭”按钮处应该为“安装”)。
在这里插入图片描述
正在安装,如下图。
在这里插入图片描述
安装完成,点击右上角的“X”,如下图。
在这里插入图片描述
如果安装完毕后提示重启,立刻重启。

4. 安装win10SDK

说明:安装前会需要解压,解压目录不要超过80个字符。

下载完成后,找到下载目录的“17763.132.181022-1834.rs5_release_svc_prod1_WindowsSDK.iso”,先解压,如下图。
在这里插入图片描述
找到解压目录下的“WinSDKSetup.exe”,双击安装。点击“Next”,如下图。
在这里插入图片描述
点击“Next”,如下图。
在这里插入图片描述
点击“Accept”,如下图。
在这里插入图片描述
保持默认选项,点击“Install”,如下图。
在这里插入图片描述
正在安装,如下图。
在这里插入图片描述
安装完成,点击“Close”,如下图。
在这里插入图片描述
如果安装完毕后提示重启,立刻重启。

第四章 配置测试Qt、vs2017和Win10SDK

在上述步骤全部安装完毕后,打开Qt,选择菜单“工具”->“选项”,之后会弹出选项对话框,找到下图位置,点选“Desktop Qt 5.14.2 MSVC 2017 32bit”。
在这里插入图片描述
将下图红框中的内容配置为如下两图其中之一所示(后面测试程序哪个配置没问题用哪个),配置完毕后点击“OK”保存。
说明:一般Qt会自动配置,如果有问题再手动更改为下图之一试试。
在这里插入图片描述
在这里插入图片描述
“Desktop Qt 5.14.2 MSVC 2017 64bit”类似32bit的配置,只不过编译器选择“amd64”结尾的,调试器选择“x64”目录下的。

mingw的32bit和64bit自动配置好的,不用管。

第五章 Offline Map Maker 8.329

1. 简介

Offline Map Maker官方版是一款由Allmapsoft精心打造的出色离线地图制作工具。Offline Map Maker官方版界面直观、功能强大、专业实用,帮助您从Google地图、Yahoo地图,Bing maps、高德、百度等各大地图平台获取脱机瓦片地图数据。所有下载的脱机图像保存在您的磁盘上,您可以用软件自带的地图查看器查看下载地图。

Offline Map Maker软件功能:
(1)可以产您下载的离线地图,支持缩小或放大离线地图。
(2)输出离线地图以BMP,JPG,TIFF,PNG格式图片输出。
(3)输出适用于OziExplorer软件的xxx.map格式文件。
(4)可以创建一个html文件,可以用网页浏览器html文件并查看离线地图。
(5)您还可以选择将离线地图导出到sqlite数据库中,支持mbtiles格式,然后可以在一些移动设备的app中使用,例如RMaps、Oruxmaps等。
(6)在创建mbtiles文件时,可以使用MBTiles Viewer查看mbtiles文件。

说明:“Offline Map Maker 8.329”是写这篇文章时的最新版,以下简称“omm”。

2. 下载

https://www.allmapsoft.com/omm/index.html

3. 安装

下载解压后,找到解压目录的“omm_setup.exe”,双击安装,进入欢迎安装界面,点击”Next”,如下图。
在这里插入图片描述
选择安装目的地,默认的是“c:\allmapsoft\omm”,如需修改点“Browse”,之后点击“Next”,如下图。
在这里插入图片描述
设置开始菜单文件夹,点击“Next”,如下图。
在这里插入图片描述
勾选附加任务,创建桌面图标,点击“Next”,如下图。
在这里插入图片描述
确认omm安装信息,点击“Install”开始安装,如下图。
在这里插入图片描述
正在安装,如下图。
在这里插入图片描述
安装完成,点击“Finish”,如下图。
在这里插入图片描述

4. 试用版

上述安装过程完成后,是试用版。试用版的限制就是地图层级精度只能够到13级,但是我认为够用,级数高了地图数据量程几何级数的增长。

建议使用试用版还有一个原因,就是下面“破解版”章节所说的,具体见下面内容。

5. 破解版

如果想用破解版,可以搜索8.025版本(找带破解的)的软件下载,其中的破解程序可以破解8.329版。破解后确实可以下载更高级数的地图,但是破解版会在运行一小段时间后弹出停止对话框,只要点击就退出程序,不点击就不能继续使用程序,哪怕你在下载地图的过程中,也会终止下载进程。

目前自己没有好的解决办法,可以搜索“python、自动化、offline map maker”关键字找到一篇CSDN博客看看,好像是可以解决上述问题。因花钱我没看完整的内容,感觉不是终极解决办法,可能不好用。

第六章 Leaflet1.9.4

1. 简介

Leaflet 是领先的用于桌面、移动友好交互式地图的轻量级开源 JavaScript 库,它拥有大多数开发者所需要的所有地图功能。

Leaflet 在设计时考虑到了简单性、性能和可用性。它可以在所有主要的桌面和移动平台上高效地工作,可以通过大量的插件进行扩展,拥有一个漂亮的、易于使用的、记录良好的 API,以及一个简单的、可读的源代码。
在这里插入图片描述
Leaflet1.9.4是我写这篇文章时的最新版。

2. 下载

下载网址:https://leafletjs.com/download.html
在这里插入图片描述

3. 安装

不用安装配置,解压即可。

4. 测试例程

测试例程是官方写的一个源码,叫做“Quick Start”,网址是:https://leafletjs.com/examples/quick-start/

因为例程中的地图网址不能显示地图,我这里修改为自己下载的离线地图,同时说明一下如何使用Leaflet库。

将下载的Leaflet库解压到某个目录,解压之后如下图。
在这里插入图片描述
之后在解压目录下新建一个index.html,并将下载的离线地图放置到此目录下,目录结构如下图。双击或拖动html文件到浏览器中,就可以浏览了。(说明:用比较新的浏览器,不然会有显示不出来。)
在这里插入图片描述
index.html代码如下:

<!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Quick Start - Leaflet</title><link rel="stylesheet" href="leaflet.css"/><script src="leaflet.js"></script><style>html, body{height: 100%;margin: 0;}</style></head><body><div id="map" style="width: 100%; height: 100%;"></div><script>const map = L.map('map').setView([29.5, 100.5], 10);const tiles = L.tileLayer('Bing Maps - Background TrafficFlow Chinese (China)/{z}/{x}/{-y}.png', {minZoom: 9,maxZoom: 12,attribution: '&copy; newboy686'}).addTo(map);const marker = L.marker([29.5, 100.5]).addTo(map).bindPopup('<b>Hello world!</b><br />I am a popup.').openPopup();const circle = L.circle([29.508, 100.11], {color: 'red',fillColor: '#f03',fillOpacity: 0.5,radius: 2000}).addTo(map).bindPopup('I am a circle.');const polygon = L.polygon([[29.609, 100.010],[29.503, 100.060],[29.610, 100.080]]).addTo(map).bindPopup('I am a polygon.');const popup = L.popup().setLatLng([29.513, 100.09]).setContent('I am a standalone popup.').openOn(map);function onMapClick(e){popup.setLatLng(e.latlng).setContent(`You clicked the map at ${e.latlng.toString()}`).openOn(map);}map.on('click', onMapClick);</script></body>
</html>

5. 注意事项

代码中的如下图的部分需要注意,其实说的就是其中访问本地离线地图的结构,抽象出来就是“path/to/your/tile/image/{z}/{x}/{y}.imagetype”。
在这里插入图片描述

这里有几个点需要注意:

  • imagetype:后缀名同瓦片图片后缀(本文都用png了)。
  • {z}/{x}/{y}.png的存储结构:同瓦片地图的存储结构,可能会有{z}/{x}/{y}/tile.png。
  • {z}/{x}/{y}.png的解析方式:目前我是不懂。常规是{z}/{x}/{y}.png;有{z}/{y}/{x}.png(这个不懂,只是从网上看到,嘱咐小伙伴注意);有{z}/{x}/{-y}.png,如上面代码。因为在解决问题的过程中,发现omm用了Leaflet库来加载显示下载到本地的离线瓦片地图(还有google和openlayer,这也是我推荐omm下载瓦片地图的原因,因为用omm下载了瓦片地图,可以参考其解析方式)。
  • 如何参考omm中Leaflet的解析方式:找到对应下载地图文件夹名的leaflet.html,用网页打开,右键查看源码。如下图。
    在这里插入图片描述
    在这里插入图片描述

第七章 Qt+Leaflet

在上一章中已经说明了,如何使用Leaflet了,这章就只需要介绍Qt和Qt+Leaft的部分了。

1. 建立Qt Widget App

打开Qt,选择菜单“文件”->“新建文件或项目”,之后如下图新建项目。
在这里插入图片描述
中间过程就不详细介绍了,但是在选择编译器的时候需要注意,如下图。应该选择“MSVC2017 32bit”。
在这里插入图片描述

2. 修改pro文件

按照下图,添加对WebEngine和utf-8的支持。
在这里插入图片描述

3. QWebEngineView加载index.html

m_pWebView = new QWebEngineView(this);
m_pWebView->load(QUrl::fromLocalFile("D:/Temp/Qt/qt+leaflet/leaflet-quickstart/index.html"));
m_pWebView->setGeometry(0, 0, 800, 600);
m_pWebView->show();

4. 源码

下载地址:https://download.csdn.net/download/newboy686/90335387?spm=1001.2014.3001.5503

  • CWidget.h
#ifndef CWIDGET_H
#define CWIDGET_H#include <QWidget>
#include <QWebEngineView>QT_BEGIN_NAMESPACE
namespace Ui { class CWidget; }
QT_END_NAMESPACEclass CWidget : public QWidget
{Q_OBJECTpublic:CWidget(QWidget *parent = nullptr);~CWidget();private:Ui::CWidget *       m_pUI;QWebEngineView *    m_pWebView;
};
#endif // CWIDGET_H
  • CWidget.cpp
#include "CWidget.h"
#include "ui_CWidget.h"CWidget::CWidget(QWidget *parent) :QWidget(parent),m_pUI(new Ui::CWidget),m_pWebView(NULL)
{m_pUI->setupUi(this);m_pWebView = new QWebEngineView(this);
m_pWebView->load(QUrl::fromLocalFile(
"D:/Temp/Qt/qt+leaflet/leaflet-quickstart/index.html"));m_pWebView->setGeometry(0, 0, 800, 600);m_pWebView->show();
}CWidget::~CWidget()
{delete m_pUI;
}

5. 运行

在这里插入图片描述

第八章 过程中遇到的问题

1. 中文乱码问题的解决

如果在编码过程中使用中文时碰见乱码问题,尤其是由使用mingw编译的工程移植过来的项目,首先应参考上一章“修改pro文件”中添加如下代码。

win32-msvc* {QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}

之后,在出现问题的文件中右键菜单,选择“Delete UTF-8 BOM on Save”(如下图),然后在文件中加个空格什么的,再删除,再保存文件,这样才生效。
在这里插入图片描述
如果没有这个选项的话,就需要先选择“Add UTF-8 BOM on Save”(如下图),再选择“Delete UTF-8 BOM on Save”,然后在文件中加个空格什么的,再删除,再保存文件,这样才生效。
在这里插入图片描述
最后,再编译一遍,中文乱码问题就解决了。

第九章 总结

这是我在工作中需要用Qt开发离线地图时,查了很多资料,尝试过高德离线API+vue的(技术门槛比较高),也看了QGis,也试用了QGeoView,在跟我大学同宿舍老六打电话求助时,偶然发现了leaflet(当时边打电话边在网上查资料,忽然看见了leaflet),然后一路摸索尝试,蹚出了这样的一条技术路线,也算是不易了。

望:能够帮助到看到此文的小伙伴们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熵采样在分类任务中的应用

熵采样在分类任务中的应用 在机器学习的分类任务里,数据的标注成本常常制约着模型性能的提升。主动学习中的熵采样策略,为解决这一难题提供了新的思路。本文将带你深入了解熵采样在分类任务中的原理、应用及优势。 一、熵采样的原理(优化版) 熵,源于信息论,是对不确定…

WordPress自定义.js文件排序实现方法

在WordPress中&#xff0c;要将插件引用的.js文件放到所有.js文件之后加载&#xff0c;可以通过以下方法实现&#xff1a; 方法一&#xff1a;调整wp_enqueue_script的加载顺序 在插件的主文件中&#xff0c;使用wp_enqueue_script函数加载.js文件时&#xff0c;将$in_footer…

mysql 学习7 DCL语句,用来管理数据库用户,控制数据库的访问权限

DCL data control language 数据控制语言&#xff1a; 用来管理数据库用户&#xff0c;控制数据库的访问权限 有两个功能&#xff1a; 一&#xff0c;用户管理的SQL 语句&#xff0c;添加用户&#xff0c;删除用户&#xff0c;修改用户 查询用户 在mysql 中&#xff0c;用户…

8-登录流程

在AppStartInitFinish_CreateLoginUI.初始化后&#xff0c;执行Login界面的初始化 登录面板逻辑&#xff1a;UILoginComponentSystem,针对组件UILoginComponent创建的System 登录面板逻辑&#xff1a;UILoginComponent 逻辑层: LoginHelper中的clientSenderComponent.LoginA…

【远程控制】安装虚拟显示器

todesk远程发现没显示器的机器有问题 电脑如果不外接一个显示器那么会默认为1024 768 分辨率需要安装虚拟显示器参考 竟然是一个隐私屏幕的解决方案。 虚拟显示器 Parsec-vdd 项目地址 Parsec-vdd 最大的优点是&#xff1a;支持 4K 高刷、可添加多个虚拟屏、 H-Cursor&#…

【数据采集】基于Selenium采集豆瓣电影Top250的详细数据

基于Selenium采集豆瓣电影Top250的详细数据 Selenium官网:https://www.selenium.dev/blog/ 豆瓣电影Top250官网:https://movie.douban.com/top250 写在前面 实验目标:基于Selenium框架采集豆瓣电影Top250的详细数据。 电脑系统:Windows 使用软件:PyCharm、Navicat 技术需求…

安全实验作业

一 拓扑图 二 要求 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用共有IP 2、R3-R5-R6-R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 4、所有设备均可访问R4的环回&#x…

响应式编程_02基本概念:背压机制 Backpressure

文章目录 Pre流流的处理模型拉模式推模式 流量控制产者生产数据的速率小于消费者的场景生产者生产数据的速率大于消费者消费数据无界队列有界丢弃队列有界阻塞队列 背压机制响应式流规范响应式流的核心接口PublisherSubscriberSubscription 响应式流的技术生态圈 小结 Pre 响应…

Android 进程间通信

什么是IPC&#xff1f; Android 进程间通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;是Android操作系统中不同进程间交换数据和资源的一种机制。由于Android是多任务操作系统&#xff0c;每个应用通常运行在自己的进程中&#xff0c;以提高安全性和…

【人工智能】掌握图像风格迁移:使用Python实现艺术风格的自动化迁移

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 图像风格迁移(Image Style Transfer)是一种基于深度学习的计算机视觉技术,通过将一张图像的内容与另一张图像的艺术风格结合,生成一幅具…

Macos给brew安装的neo4j配置apoc插件

文章目录 打开并查看neo4j版本下载apoc插件安装apoc插件修改conf配置文件验证成果 打开并查看neo4j版本 open /usr/local/Cellar/neo4j下载apoc插件 apoc插件下载界面&#xff0c;选择与neo4j兼容的apoc版本apoc与neo4j版本对应表 安装apoc插件 将下载的apoc jar包&#…

回顾生化之父三上真司的游戏思想

1. 放养式野蛮成长路线&#xff0c;开创生存恐怖类型 三上进入capcom后&#xff0c;没有培训&#xff0c;没有师傅手把手的指导&#xff0c;而是每天摸索写策划书&#xff0c;老员工给出不行的评语后&#xff0c;扔掉旧的重写新的。 然后突然就成为游戏总监&#xff0c;进入开…

Go语言的转义字符

文章目录 1. Go语言的转义字符(escapechar)2. 小结和提示 1. Go语言的转义字符(escapechar) 说明:常用的转义字符有如下: \t : 表示一个制表符&#xff0c;通常使用它可以排版\n &#xff1a;换行符\\ &#xff1a;一个\\" &#xff1a;一个"\r &#xff1a;一个回…

Django框架丨从零开始的Django入门学习

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架&#xff0c;Django是一个高度模块化的框架&#xff0c;使用 Django&#xff0c;只要很少的代码&#xff0c;Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容&#xff0c;并进一步开发出全功能…

《Kettle保姆级教学-核心概念解析》

目录 一、什么是ETL&#xff1f;1、ETL 的三个主要阶段2、ETL 的应用场景3、ETL 工具 二、什么是Kettle&#xff1f;1、Kettle 的核心功能2、Kettle 的主要组件3、Kettle 的优点4、Kettle 的应用场景 三、Kettle核心概念1. 转换&#xff08;Transformation&#xff09;2. 作业&…

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek&#xff1a;全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权&#xff1a;从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…

https是如何保证安全的,又是如何保证不被中间人攻击的?

HTTPS如何保证安全&#xff0c;以及如何防止中间人攻击 保护用户隐私和数据安全已经成为了一个不可忽视的问题。随着网络攻击的不断升级&#xff0c;HTTPS&#xff08;超文本传输安全协议&#xff09;成为了我们在网络上交流时的一道重要防线。以下是HTTPS是如何保证安全的&am…

Linux设备树(DTS)入门学习

前言&#xff1a; Linux设备树(DTS)入门学习&#xff0c;资料搜集。从零开始入门学习Linux设备树 Device Tree (DTS)&#xff0c;建议的学习流程如下&#xff1a; 1. 讯为电子在哔站上的-Linux设备树视频教程&#xff08;嵌入式学习之Linux驱动&#xff08;第七期_设备树_全新…

Node.js学习指南

一、模块化规范 nodejs使用的模块化规范 叫做 common.js 规范: 每一个模块都有独立的作用域 代码在各自模块中执行 不会造成全局污染 每一个模块都是一个独立的文件&#xff08;module对象&#xff09; 模块可以被多次加载&#xff08;module.exports 属性&#xff09; 但是仅…

98.2 AI量化开发:基于DeepSeek打造个人专属金融消息面-AI量化分析师(理论+全套Python代码)

目录 0. 承前1. 金融工程结构图2. Why is DeepSeek3. 项目实现代码3.1 导入python库3.2 参数设置3.3 获取数据3.4 数据处理3.5 AI人设提示词3.6 Messages构建3.7 AI Agent3.8 response格式处理3.9 汇总函数3.10 运行案例 4. 总结4.1 系统优点4.2 系统缺点4.3 可提升方向 0. 承前…