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

vue3 vite或者vue2 百度地图(卫星图)离线使用详细讲解

1、在Windows上下载瓦片,使用的工具为: 全能电子地图下载器3.0最新版(推荐)

下载后解压,然后进入目录"全能电子地图下载器3.0最新版(推荐)\全能电子地图下载器3.0\MapTileDownloader" 在这个目录下双击imaps.exe可打开如下界面

在这里插入图片描述

下载完成后会弹出个框,选择否即可

在这里插入图片描述
进入C:\MapDownload\baidumaps\图片类型\下可以查看到自己所下载的不同类型的瓦片(这里是卫星图的瓦片)
在这里插入图片描述

然后安装一个全局serve, 打开终端并输入npm install -g serve 安装完成后,进入到C:\MapDownload\baidumaps(如果修改瓦片保存路径了,则找到相应位置)然后执行serve并回车,如下所示表示成功

在这里插入图片描述

接下来创建vue3项目:npm create vue,回车并输入名字:vue3_baidu_map_offline,其他一律回车,然后进入项目,并安装所需要的包使使用命令 cnpm i 或者npm i,安装完成后下载百度地图离线工具:

链接: https://pan.baidu.com/s/1_TqfUtVAElsrxB1J3hW-EA 提取码: vw5e

下载并解压 将static目录及其子内容全部复制到src/assets目录下,结构如下:

在这里插入图片描述

修改App.vue的样式:将main.js中的import ‘./assets/main.css’ 注释掉或者删除了。然后查看你下载的瓦片图的后缀类型,比如这里的jpg

在这里插入图片描述

打开map_load.js做响应的路径及格式修改,比如对tiles_dir的修改,如果你的瓦片保存的为"C:\MapDownload\baidumaps\satellite\10\203" 就将这里边的satellite赋值给tiles_dir

在这里插入图片描述

map_load.js中的内容如下:

let bmapcfg = {// 瓦片图的后缀-修改成你的// imgext: '.png',imgext: '.jpg',// 瓦片图的地址,基地址路径(默认名字)// tiles_dir: '/roadmap',tiles_dir: '/satellite',  // 修改成你的// 瓦片图地址-尽量使用127或者localhost-方便断网测试tiles_path: 'http://127.0.0.1:3000/',// 卫星瓦片图的地址-可为空tiles_hybrid: '',//自定义图层的地址-可为空tiles_self: ''
}// 下面可以保持不动
var scripts = document.getElementsByTagName('script')
var JS__FILE__ = scripts[scripts.length - 1].getAttribute('src') //获得当前js文件路径
bmapcfg.home = JS__FILE__.substr(0, JS__FILE__.lastIndexOf('/') + 1) //地图API主目录
;(function () {window.BMap_loadScriptTime = new Date().getTime()//加载地图API主文件document.write('<script type="text/javascript" src="' +bmapcfg.home +'bmap_offline_api_v3.0_min.js"></script>')
})()

在vue项目的index.html中引入static中的三个静态文件,index.html中的内容如下:

<!DOCTYPE html>
<html lang=""><head><meta charset="UTF-8"><link rel="icon" href="/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vite App</title><!--下边这三个script标签 引入的路径要写对--><scripttype="text/javascript"src="/src/assets/static/map_load.js"></script><scripttype="text/javascript"src="/src/assets/static/TextIconOverlay_min.js"></script><scripttype="text/javascript"src="/src/assets/static//MarkerClusterer_min.js"></script></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

App.vue中的内容如下,内包含如何离线使用百度地图api文档:

<template><div id="container"></div>
</template>
<script setup>
import {onMounted, ref} from "vue";
const map = ref()
const mk = ref()
let BMap = window.BMap
let initMap = () => {// 创建地图必须要给container设置宽高map.value = new BMap.Map('container')// 创建点坐标let Point = new BMap.Point(121.248292,25.081786)// 在地图上添加Markermap.value.addOverlay(new BMap.Marker(new BMap.Point(121.243473,25.079847)))map.value.addOverlay(new BMap.Marker(new BMap.Point(121.243073,25.083847)))// 设置地图中心点,并且中心点放大级别为16级map.value.centerAndZoom(Point, 16)// 设置地图最小能缩放到11级map.value.setMinZoom(11)// 最大16级,这个看你下载的瓦片级数,和瓦片上的数字对应map.value.setMaxZoom(16)//可以让鼠标滚轮放大缩小map.value.enableScrollWheelZoom(true)// 添加控制器map.value.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT,type: BMAP_NAVIGATION_CONTROL_SMALL}))// 此Marker可以拖拽mk.value = new BMap.Marker(Point, { enableDragging: true })map.value.addOverlay(mk.value)// 拖拽点标注事件mk.value.addEventListener('dragend', (e)=> {console.log('执行点位拖拽', e)getAddrByPoint(e.point)})// 地图标注点击事件map.value.addEventListener('click', (e)=> {console.log('点击事件', e)// 清空点标注map.value.clearOverlays()// 点标注map.value.addOverlay(new BMap.Marker(e.point, { enableDragging: true }))let circle = new BMap.Circle(e.point,500,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5}); //创建圆map.value.addOverlay(circle)console.log('e.point', e.point);console.log('e.point.lat', e.point.lat);let random = (Math.random()-0.5)/100map.value.addOverlay(new BMap.Marker(new BMap.Point(e.point.lng+random,e.point.lat+random),{ enableDragging: true }))// that.map.addOverlay(new BMap.Marker(new BMap.Point(e.point.lat,e.point.lng+0.001),{ enableDragging: true }))// 设置地图中心点map.value.panTo(e.point)getAddrByPoint(e.point)})// 从百度地图上复制的信息窗口内容(未改动的)// var opts = {//   width : 200,     // 信息窗口宽度//   height: 100,     // 信息窗口高度//   title : "故宫博物院" , // 信息窗口标题//   message:"这里是故宫"// }// var infoWindow = new BMapGL.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层", opts);  // 创建信息窗口对象// marker.addEventListener("click", function(){//   map.openInfoWindow(infoWindow, point); //开启信息窗口// });// 下边这个是改成符合离线状态且符合vue3格式的信息窗口,点击地图上Point这个点即可显示信息窗口// let opts = {//   width : 200,     // 信息窗口宽度//   height: 100,     // 信息窗口高度//   title : "故宫博物院" , // 信息窗口标题//   message:"这里是故宫"// }// let infoWindow = new BMap.InfoWindow("地址:北京市东城区王府井大街88号乐天银泰百货八层", opts);  // 创建信息窗口对象// mk.value.addEventListener("click", function(){//   map.value.openInfoWindow(infoWindow, Point); //开启信息窗口// });/* 总结通过对比可以发现主要修改的地方为new BMapGL.InfoWindow改成了new BMap.InfoWindow、marker.addEventListener改成了mk.value.addEventListener、map.openInfoWindow改成了map.value.openInfoWindow */}
// 逆地址解析数据暂时做不了
const getAddrByPoint = (Point)=> {let BMap = window.BMapconsole.log('new BMap.Geocoder()', new BMap.Geocoder())// 这个api是不执行的-因为逆地址解析是需要调用地图api的-只有在public/index.html正常引入百度地图时才会生效let geoc = new BMap.Geocoder()geoc.getLocation(Point, rs => {console.log('点击地址-获取信息', rs)})console.log('执行解析完毕')
}
onMounted(()=>{initMap()})</script>
<!--vue2写法--><!--<script>-->
<!--export default {-->
<!--  name: 'HelloWorld',-->
<!--  data () {-->
<!--    return {-->
<!--      // 地图实例-->
<!--      map: null,-->
<!--      // 点实例-->
<!--      mk: null-->
<!--    }-->
<!--  },-->
<!--  created () {-->
<!--    // 加载地图-->
<!--    this.$nextTick(() => {-->
<!--      this.initMap()-->
<!--    })-->
<!--  },-->
<!--  methods: {-->
<!--    // 获取地图-->
<!--    initMap () {-->
<!--      // 内网使用-地图对象-在public/index.html引入文件-->
<!--      let BMap = window.BMap-->
<!--      console.log('window.BMap', window.BMap)-->
<!--      // this指向-->
<!--      const that = this-->
<!--      // 创建Map实例-->
<!--      this.map = new BMap.Map('container')-->
<!--      // 地图中心点-经纬度决定我们加载哪里的地图-->
<!--      var Point = new BMap.Point(121.24451,25.082817)-->
<!--      that.map.addOverlay(new BMap.Marker(new BMap.Point(121.243473,25.079847)))-->
<!--      that.map.addOverlay(new BMap.Marker(new BMap.Point(121.243073,25.083847)))-->
<!--      // 初始化地图中心点和放大级别-->
<!--      this.map.centerAndZoom(Point, 17)-->
<!--      // 限制地图放大等级-为什么限制-->
<!--      // 1.因为内网时我们访问不到公网百度地图数据资源-->
<!--      // 2.同时这里地图放大等级也对应着我们下载的瓦片图资源-->
<!--      this.map.setMinZoom(11)-->
<!--      this.map.setMaxZoom(17)-->
<!--      //开启鼠标滚轮缩放-->
<!--      this.map.enableScrollWheelZoom(true)-->
<!--      // 4、添加(右上角)平移缩放控件-->
<!--      this.map.addControl(-->
<!--          new BMap.NavigationControl({-->
<!--            anchor: BMAP_ANCHOR_TOP_RIGHT,-->
<!--            type: BMAP_NAVIGATION_CONTROL_SMALL-->
<!--          })-->
<!--      )-->
<!--      // 添加中心标注点-->
<!--      this.mk = new BMap.Marker(Point, { enableDragging: true })-->
<!--      this.map.addOverlay(this.mk)-->
<!--      // 拖拽点标注事件-->
<!--      this.mk.addEventListener('dragend', function (e) {-->
<!--        console.log('执行点位拖拽', e)-->
<!--        that.getAddrByPoint(e.point)-->
<!--      })-->
<!--      // 地图标注点击事件-->
<!--      this.map.addEventListener('click', function (e) {-->
<!--        console.log('点击事件', e)-->
<!--        // 清空点标注-->
<!--        that.map.clearOverlays()-->
<!--        // 点标注-->
<!--        that.map.addOverlay(new BMap.Marker(e.point, { enableDragging: true }))-->
<!--        var circle = new BMap.Circle(e.point,500,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5}); //创建圆-->
<!--        that.map.addOverlay(circle)-->
<!--        console.log('e.point', e.point);-->
<!--        console.log('e.point.lat', e.point.lat);-->
<!--        let random = (Math.random()-0.5)/100-->
<!--        that.map.addOverlay(new BMap.Marker(new BMap.Point(e.point.lng+random,e.point.lat+random)))-->
<!--        // that.map.addOverlay(new BMap.Marker(new BMap.Point(e.point.lat,e.point.lng+0.001),{ enableDragging: true }))--><!--        // 设置地图中心点-->
<!--        that.map.panTo(e.point)-->
<!--        that.getAddrByPoint(e.point)-->
<!--      })-->
<!--    },-->
<!--    // 逆地址解析数据-->
<!--    getAddrByPoint (Point) {-->
<!--      // 百度地图的原装api-->
<!--//       var map = new BMapGL.Map("container");-->
<!--//       map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 11);-->
<!--// // 创建地理编码实例-->
<!--//       var myGeo = new BMapGL.Geocoder();-->
<!--// // 根据坐标得到地址描述-->
<!--//       myGeo.getLocation(new BMapGL.Point(116.364, 39.993), function(result){-->
<!--//         if (result){-->
<!--//           alert(result.address);-->
<!--//         }-->
<!--//       });--><!--      //百度地图改装后的api--><!--      // console.log("逆地址解析")-->
<!--      // this.map.centerAndZoom(Point, 11);-->
<!--      // // 创建地理编码实例-->
<!--      // let BMap = window.BMap-->
<!--      // console.log("BMap", BMap)-->
<!--      // var myGeo = new BMap.Geocoder();-->
<!--      // console.log(myGeo)-->
<!--      // // 根据坐标得到地址描述-->
<!--      // myGeo.getLocation(Point, function(result){-->
<!--      //   console.log("result", result)-->
<!--      //   if (result){-->
<!--      //     alert(result.address);-->
<!--      //   }-->
<!--      // });--><!--      // 本项目原先的api-->
<!--      // 从这里可以看出来:将百度地图原先api中的new BMapGL换成window.BMap,其他都不变,-->
<!--      console.log('执行解析', Point)-->
<!--      // 内网使用-地图对象-在public/index.html引入文件-->
<!--      let BMap = window.BMap-->
<!--      console.log('new BMap.Geocoder()', new BMap.Geocoder())-->
<!--      // 这个api是不执行的-因为逆地址解析是需要调用地图api的-只有在public/index.html正常引入百度地图时才会生效-->
<!--      var geoc = new BMap.Geocoder()-->
<!--      geoc.getLocation(Point, rs => {-->
<!--        console.log('点击地址-获取信息', rs)-->
<!--      })-->
<!--      console.log('执行解析完毕')-->
<!--    }-->
<!--  }-->
<!--}-->
<!--// 须知-->
<!--// 1.内网离线情况下我们访问不了百度数据资源,所有只有把数据资源下载在本地启动服务才可以解决这个问题-->
<!--// 2.确实可以满足基本的需求-->
<!--// 3.地图放大,缩小,控件,定位-->
<!--// 4.加载那里的地图我们首先要下载地图瓦片图,然后地图中心点定位在哪里就会加载的地图-->
<!--// 5.地图的放大等级我们要控制起来,因为是下载的瓦片图要对应-->
<!--// 6.瓦片图下载等级最好下载,11-15,刚好铺满全屏,再多就下载很慢-->
<!--// 7.开发时候我们用npm下载serve,把地图资源从本机运行起来(直接serve)-->
<!--// 8.所有地址最好写127.0.0.1和localhost方便测试(因为你后续直接断开网线测试时候,你就只能访问自己)-->
<!--// 瓦片图加载报错-404解决-->
<!--// 1.瓦片图,就是把一个地图区域根据放大等级分割成等额大小图片进行加载-->
<!--// 1.首先确定地图中心点经纬度和下载地图瓦片图是否是一致的-->
<!--// 2.瓦片图下载等级和代码地图限制放大等级是否一样(比如地图放大19级,但是下载地图没有19级图片也会报错)-->
<!--// 3.用serve启动好本地图片资源后-查看map_load.js文件(一般默认不用改)-->
<!--// 4..把404图片路径复制到本机浏览器看是否能访问-->
<!--// 优点-->
<!--// 1.引入项目比较轻便-确实在内网情况下可以使用(不能访问外网情况下-离线)-->
<!--// 缺点-->
<!--// 1.鼠标滚动的时候,会调用百度的api报错,但不影响使用-->
<!--// 2.百度api会失效,比如逆地址解析,没有建立百度资源连接带身份(就是没有在public/index-正常引入百度地图)-->
<!--// 3.如果单纯地图展示看,定位-可以,要使用api不满足-目前还没找到解决方案-->
<!--</script>--><style >
body,html{width: 100%;height: 100%;padding: 0;margin: 0;
}#container {width: 100vw;height: 100vh;
}
</style>

结果展示:运行vue项目,npm run dev 回车并在打开浏览器http://localhost:5173,可以看到如下内容:

在这里插入图片描述

鼠标点击任意位置显示如下:

在这里插入图片描述

另外可参考

相关文章:

vue3 vite或者vue2 百度地图(卫星图)离线使用详细讲解

1、在Windows上下载瓦片&#xff0c;使用的工具为: 全能电子地图下载器3.0最新版&#xff08;推荐&#xff09; 下载后解压&#xff0c;然后进入目录"全能电子地图下载器3.0最新版&#xff08;推荐&#xff09;\全能电子地图下载器3.0\MapTileDownloader" 在这个目录…...

《Python实战进阶》No17: 数据库连接与 ORM(SQLAlchemy 实战)

No17: 数据库连接与 ORM&#xff08;SQLAlchemy 实战&#xff09; 摘要 本文深入探讨SQLAlchemy在复杂场景下的高级应用&#xff0c;涵盖四大核心主题&#xff1a; 会话生命周期管理&#xff1a;通过事件钩子实现事务监控与审计追踪混合继承映射&#xff1a;结合单表/连接表继…...

工程化与框架系列(27)--前端音视频处理

前端音视频处理 &#x1f3a5; 引言 前端音视频处理是现代Web应用中的重要组成部分&#xff0c;涉及音频播放、视频处理、流媒体传输等多个方面。本文将深入探讨前端音视频处理的关键技术和最佳实践&#xff0c;帮助开发者构建高质量的多媒体应用。 音视频技术概述 前端音视…...

芋道打包时报错:缺失@unocss插件

在遇到打包时&#xff0c;报这个错误&#xff0c;提示构建失败是因为 ESLint 在加载 unocss 插件时&#xff0c;找不到 unocss/eslint-plugin 模块 解决办法&#xff1a;安装缺失的依赖&#xff1a;保证unocss/eslint-plugin已经被正确安装&#xff0c; 使用以下命令安装&…...

PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。

PY32MD320单片机是普冉半导体的一款电机专用MCU&#xff0c;芯片采用了高性能的 32 位 ARM Cortex-M0 内核&#xff0c;主要用于电机控制。PY32MD320嵌入高达 64 KB Flash 和 8 KB SRAM 存储器&#xff0c;最高工作频率 48 MHz。PY32MD320单片机的工作温度范围为 -40 ~ 105 ℃&…...

深入解析 configService.addListener 使用中的注意事项

在使用 Nacos 的 configService.addListener 方法进行配置监听时&#xff0c;为了确保程序的稳定性、可靠性以及高效性&#xff0c;有诸多注意事项需要我们关注。下面将对这些关键要点进行详细阐述。 一、连接稳定性 1.1 网络连接问题 Nacos 客户端与服务端通过网络进行通信&…...

Windows控制台函数:控制台读取输入函数ReadConsoleA()

目录 什么是 ReadConsoleA&#xff1f; 它长什么样&#xff1f; 怎么用它&#xff1f; 它跟 std::cin 有什么不一样&#xff1f; 注意事项 什么是 ReadConsoleA&#xff1f; ReadConsoleA 是一个 Windows API 函数&#xff0c;用来从控制台读取用户输入。想象一下&#…...

奇安信 2025 年护网蓝队初选笔试题(附答案解析)

&#x1f525; 爆款 CSDN 题库 | 超全护网蓝队笔试真题 | 含详细答案解析 &#x1f525; 熬夜为大家整理了 奇安信 2025 年护网蓝队初选笔试题&#xff0c;&#xff08;关注我我会持续更新&#xff09;涵盖 SQL 注入、Web 安全、渗透测试、二进制安全 等核心知识点&#xff0c;…...

国产编辑器EverEdit - Web预览设置

1 设置-高级-Web预览 1.1 设置说明 选择主菜单工具 -> 设置 -> 常规&#xff0c;在弹出的选项窗口中选择Web预览分类&#xff0c;如下图所示&#xff1a; 1.1.1 本地浏览HTML文件 如果用户只是在本地浏览HTML文件&#xff0c;即直接用浏览器打开HTML文件&#xff0c;确…...

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!

P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 题目 并查集解析代码【并查集解】 Set 解法解析lower_bound代码 题目 并查集解析 首先先让所有的f&#xff08;i&#xff09;i&#xff0c;即每个人最开始的祖先都是自己&#xff0c;然后就每一次都让轮到那个数的父亲1&#xff08…...

HTML 编辑器推荐与 VS Code 使用教程

在进行 HTML 编程时&#xff0c;选择一款合适的 HTML 编辑器能极大地提高开发效率。以下为大家推荐几款常用且功能强大的 HTML 编辑器&#xff0c;同时详细介绍如何使用 VS Code 创建和预览 HTML 文件。 一、HTML 编辑器推荐 VS Code&#xff1a;由微软开发&#xff0c;是一款…...

MyBatis增删改查:静态与动态SQL语句拼接及SQL注入问题解析

MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。本文将深入探讨 MyBatis 中的增删改查操作&#xff0c;重点讲解静态与动态 SQL 语句的拼接&#xff0c;并分析 S…...

在运维工作中,Lvs、nginx、haproxy工作原理分别是什么?

在运维工作中&#xff0c;LVS、NGINX和HAProxy都是常用的负载均衡和反向代理工具&#xff0c;它们在高可用性和负载均衡场景中发挥重要作用。以下是其原理和应用场景详解&#xff1a; LVS&#xff08;Linux Virtual Server&#xff09; 工作原理 LVS是基于Linux内核的负载均…...

linux学习(五)(服务器审查,正常运行时间负载,身份验证日志,正在运行的服务,评估可用内存)

服务器审查 在 Linux 中审查服务器的过程包括评估服务器的性能、安全性和配置&#xff0c;以确定需要改进的领域或任何潜在问题。审查的范围可以包括检查安全增强功能、检查日志文件、审查用户帐户、分析服务器的网络配置以及检查其软件版本。 Linux 以其稳定性和安全性而闻名…...

Java在小米SU7 Ultra汽车中的技术赋能

目录 一、智能驾驶“大脑”与实时数据 场景一&#xff1a;海量数据的分布式计算 场景二&#xff1a;实时决策的毫秒级响应 场景三&#xff1a;弹性扩展与容错机制 技术隐喻&#xff1a; 二、车载信息系统&#xff08;IVI&#xff09;的交互 场景一&#xff1a;Android Automo…...

开发环境搭建-02.后端环境搭建-熟悉项目结构

一.后端环境搭建...

js实现pdf文件路径预览和下载

预览 直接浏览器窗口打开默认就是预览 window.open(文件路径)下载 function downloadPDF(url, filename) {fetch(url).then(response > response.blob()).then(blob > {const link document.createElement(a);link.href URL.createObjectURL(blob);link.download fi…...

【RAG】基于向量检索的 RAG (BGE示例)

RAG机器人 结构体 文本向量化: 使用 BGE 模型将文档和查询编码为向量。 &#xff08;BGE 是专为检索任务优化的开源 Embedding 模型&#xff0c;除了本文API调用&#xff0c;也可以通过Hugging Face 本地部署BGE 开源模型&#xff09; 向量检索: 从数据库中找到与查询相关的文…...

Vue源码解析之mustache模板引擎

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

python: DDD using postgeSQL and SQL Server

postgreSQL 注意&#xff1a; # psycopg 2 驱动的连接字符串 #engine create_engine(postgresql://post:geovindulocalhost:5433/TechnologyGame) #Session sessionmaker(bindengine)# 使用 psycopg3 驱动的连接字符串 #engine create_engine(postgresqlpsycopg://user:g…...

Python实例:PyMuPDF实现PDF翻译,英文翻译为中文,并按段落创建中文PDF

基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践 一 、功能预览:将英文翻译为中文后创建的PDF 二、完整代码 from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle...

IntelliJ IDEA 2021版创建springboot项目的五种方式

第一种方式&#xff0c;通过https://start.spring.io作为spring Initializr的url来创建项目。 第二种方式&#xff0c;通过https://start.spring.io官网来直接创建springboot项目压缩包&#xff0c;然后导入至我们的idea中。 点击generate后&#xff0c;即可生成压缩包&#xf…...

c#面试题整理6

1.String类能否被继承&#xff0c;为什么 可以看到String类的修饰符是sealed&#xff0c;即是密封类&#xff0c;故不可被继承 2.一个对象的方法是否只能由一个线程访问 不是&#xff0c;但是可通过同步机制&#xff0c;确保同一个时间只有一个线程访问 3.计算2*8&#xff…...

跟着 Lua 5.1 官方参考文档学习 Lua (12)

文章目录 5.7 – Input and Output Facilities补充内容io.input ([file])io.read ()io.write ()io.output ([file])io.lines ([filename])io.flush ()io.close ([file])io.open (filename [, mode])io.popen (prog [, mode])io.tmpfile ()io.type (ob)file:read ()file:lines (…...

大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究

在LLama等大规模Transformer架构的语言模型中&#xff0c;归一化模块是构建网络稳定性的关键组件。本文将系统分析归一化技术的必要性&#xff0c;并详细阐述为何原始Transformer架构中的LayerNorm在LLama模型中被RMSNorm所替代的技术原理。 归一化技术的基础原理 归一化的核…...

nodejs使用WebSocket实现聊天效果

在nodejs中使用WebSocket实现聊天效果&#xff08;简易实现&#xff09; 安装 npm i ws 实现 创建 server.js /*** 创建一个 WebSocket 服务器&#xff0c;监听指定端口&#xff0c;并处理客户端连接和消息。** param {Object} WebSocket - 引入的 WebSocket 模块&#xff0c…...

【仿muduo库one thread one loop式并发服务器实现】

文章目录 一、项目介绍1-1、项目总体简介1-2、项目开发环境1-3、项目核心技术1-4、项目开发流程1-5、项目如何使用 二、框架设计2-1、功能模块划分2-1-1、SERVER模块2-1-2、协议模块 2-2、项目蓝图2-2-1、整体图2-2-2、模块关系图2-2-2-1、Connection 模块关系图2-2-2-2、Accep…...

10.2 继承与多态

文章目录 继承多态 继承 继承的作用是代码复用。派生类自动获得基类的除私有成员外的一切。基类描述一般特性&#xff0c;派生类提供更丰富的属性和行为。在构造派生类时&#xff0c;其基类构造函数先被调用&#xff0c;然后是派生类构造函数。在析构时顺序刚好相反。 // 基类…...

Go红队开发—格式导出

文章目录 输出功能CSV输出CSV 转 结构体结构体 转 CSV端口扫描结果使用CSV格式导出 HTML输出Sqlite输出nmap扫描 JSONmap转json结构体转jsonjson写入文件json编解码json转结构体json转mapjson转string练习&#xff1a;nmap扫描结果导出json格式 输出功能 在我们使用安全工具的…...

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…...