高德地图——轨迹回放和电子围栏

image.png

功能点

  • 地图的初始化
  • 显示电子围栏(先初始化在调接口显示电子围栏)
  • 显示定位
  • 显示轨迹
  • 轨迹回放 (回放速度无法控制是因为高德地图的版本问题,不要设置版本,使用默认的即可生效)
  • 获取当前城市及天气情况
  • 设置地图样式
  • 坐标拾取器

重点

  • 默认当前城市

1710834347993.png

  • 地图加载完成的生命周期
 this.map.on('complete', () => {})
  • 清除地图上所有图形(若不想清除电子围栏,可以全部清除后重新显示电子围栏)
this.map.clearMap();
  • 自动适配到合适视野范围(无参数,默认包括所有覆盖物的情况)
this.map.setFitView();
  • 设置地图中心点
  • 下拉框和时间选择框样式的修改

image.png

image.png

this.map.setCenter([point.longitude, point.latitude]); 
<template><div class="w100 h100 white relative"><!-- 地图区域 --><div id="container" class="w100 h100"></div><!-- 搜索框 --><div class="absolute" style="left: .2rem; top: .5rem;z-index: 9; "><div class="bg-com white pdRem-20 sizeRem-30"><div class="bold w100"><div class="item pdRem-20">正在监测人员:共{{ olderArr.length }}</div><div class="item pdRem-20">护理院<el-select v-model="info.orgId" class="w100 mtRem-20" @change="changeOrgId" :popper-append-to-body="false":teleported="false"><el-option v-for="item in roomArr" :key="item.id" :label="item.label" :value="item.id"></el-option></el-select></div><div class="item pdRem-20">老人姓名<el-select v-model="info.syncUserId" class="w100 mtRem-20" filterable :filter-method="remoteMethod":popper-append-to-body="false" :teleported="false"><el-option v-for="item in olderArr" :key="item.syncUserId" :label="item.userName":value="item.syncUserId"></el-option></el-select></div><div class="item pdRem-20"><div class="mbRem-20">开始时间</div><el-date-picker v-model="info.dateRange" @change="handleDateRange" style="width: 100%;" type="datetimerange"range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" align="right"popper-class="popperClass-my" class="picker" :popper-append-to-body="false"></el-date-picker></div><div class="item pdRem-20"><el-tag class="btn-time" @click="getTime(0)">当天</el-tag><el-tag class="btn-time mlrRem-20" @click="getTime(3)">3</el-tag><el-tag class="btn-time" @click="getTime(7)">7</el-tag></div></div><!-- 按钮 --><div class="center mtRem-80"><el-button size="medium" class="block btn-bg" @click="submit(1)">实时定位</el-button><el-button size="medium" class="block mlRem-40 btn-bg" @click="submit(2)">轨迹回放</el-button></div></div></div><!-- 告警 --><div class="absolute" style="right: 1.5rem; top: .5rem;z-index: 9; "><div v-for="(alarmInfo, index) in alarmList" :key="index" class="item-bg pdRem-30 sizeRem-26"><div class="flex_r"><el-tag type="warning" effect="dark" size="mini">{{ alarmInfo.alarmLevelName }}</el-tag></div><div class="flex1"><div style="width: 90%;"><div class="">{{ alarmInfo.alarmContent }}</div></div><div style="width:10%"><img :src="require('./components/img/alarm-icon.png')" alt="" style="width:0.4rem;height: 0.4rem;"></div></div></div></div></div>
</template><script>
import { selectCompanyList, userInfoList, fenceList, userLocation, trajectory } from './components/js/api'import AMapLoader from '@amap/amap-jsapi-loader';
import redIcon from "./components/img/point-red1.png";
import originIcon from "./components/img/origin.png";
import endIcon from "./components/img/end.png";
import olderManIcon from "./components/img/olderMan.png";
window._AMapSecurityConfig = {securityJsCode: "bc0077d71423eedb1d25df186610f740",
};
export default {props: ['alarmList'], //告警列表data() {return {isOrgId: true, //true是卫健委账号  fase机构账号map: null,trackLineArr: [],fenceArr: [], //电子围栏数据// 搜索框num: 0,info: {orgId: '',syncUserId: '',dateRange: [],},roomArr: [],//护理院-下拉olderArr: [],//老人-下拉olderArrCopy: [],//老人-下拉}},watch: {"info.dateRange"(newVal) {if (newVal == null) {this.info.dateRange = [];}},},mounted() {console.log('mounted', 33333333333)this.isOrgId = localStorage.getItem("isOrgId") == 'true' ? true : false;this.initAMap();},beforeDestroy() {this.map.destroy();},methods: {// 机构改变changeOrgId() {console.log('changeOrgId', this.info.orgId)// 老人下拉userInfoList({orgId: this.info.orgId}).then(res => {this.olderArr = res.data;this.olderArrCopy = res.data;this.$set(this.info, 'syncUserId', res.data.length ? res.data[0].syncUserId : '')})// 电子围栏fenceList({orgId: this.info.orgId}).then(res => {console.log('电子围栏', res.rows)this.fenceArr = res.rows;this.getFenceInfoList(res.rows)})},remoteMethod(query) {if (query) {console.log('query', query)this.olderArr = this.olderArrCopy.filter(item => {console.log(item.userNamePingYin.includes(query), '999', item.userNamePingYin);return item.userNamePingYin.toLowerCase().includes(query.toLowerCase()) || item.userName.includes(query);});} else {this.olderArr = this.olderArrCopy;}},formatDate(date) {const year = date.getFullYear();const month = String(date.getMonth() + 1).padStart(2, '0');const day = String(date.getDate()).padStart(2, '0');const hours = String(date.getHours()).padStart(2, '0');const minutes = String(date.getMinutes()).padStart(2, '0');const seconds = String(date.getSeconds()).padStart(2, '0');return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;},getTime(day) {this.info.dateRange = ['', '']const now = new Date();const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate())this.info.dateRange[1] = now;this.info.dateRange[0] = day == 0 ? startOfDay : new Date(now.getTime() - day * 24 * 60 * 60 * 1000);},// 时间段筛选handleDateRange() {if (this.info.dateRange) {const minDate = new Date(this.info.dateRange[0]).getTime();const maxDate = new Date(this.info.dateRange[1]).getTime();if (maxDate - minDate > 7 * 24 * 60 * 60 * 1000) {this.msgError("选择的时间范围不能超过7天");// 清空日期范围选择器this.info.dateRange = [];}} else {this.info.dateRange = [];}},submit(type) {//1实时定位 2轨迹回放console.log(type, this.info, 999);if (type == 1) {if (!this.info.syncUserId) {this.msgError('请选择老人');} else {userLocation({syncUserId: this.info.syncUserId,}).then(res => {this.createMarker(res.data)})}} else {if (!this.info.syncUserId) {this.msgError('请选择老人');} else if (this.info.dateRange.length == 0) {this.msgError('请选择时间');} else {trajectory({syncUserId: this.info.syncUserId,startTime: this.formatDate(this.info.dateRange[0]),endTime: this.formatDate(this.info.dateRange[1]),}).then(res => {if (res.data.length == 0) {this.msgError('未查询到轨迹数据');} else {this.handleTrack(2, res)// setTimeout(() => {//   this.handleTrack(2, res)// }, 2000)}})}}},// 地图initAMap() {AMapLoader.load({key: "d3e34dd987d36d98958ea35f97303089", // 申请好的Web端开发者Key,首次调用 load 时必填// version: "v1.4.15", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ["AMap.ControlBar","AMap.ToolBar",'AMap.Weather','AMap.CitySearch','AMap.Marker',"AMap.MouseTool","AMap.PolyEditor","AMap.Driving","AMap.Polyline","AMap.Geolocation","AMap.GraspRoad","AMap.Geocoder","AMap.GeometryUtil.ringArea","AMap.DistrictSearch","AMap.MoveAnimation",], // 需要使用的的插件列表,如比例尺'AMap.Scale'等}).then((AMap) => {this.map = new AMap.Map("container", {// 设置地图容器idrotateEnable: true,pitchEnable: true,zoom: 17,pitch: 50,rotation: -15,viewMode: '3D', //开启3D视图,默认为关闭zooms: [2, 20],center: [116.930096, 34.758164],mapStyle: "amap://styles/blue", //设置地图的显示样式});// 工具条var controlBar = new AMap.ControlBar({position: {right: '10px',top: '10px'}});this.map.addControl(controlBar)// var toolBar = new AMap.ToolBar({//   position: {//     right: '40px',//     top: '110px'//   }// });// this.map.addControl(toolBar)this.map.on('complete', () => {let idObj = JSON.parse(localStorage.getItem('formJx'))// 机构下拉selectCompanyList({orgId: this.isOrgId ? '-1' : idObj.orgId,groupId: idObj.groupId,}).then(res => {this.roomArr = res.data;this.$set(this.info, 'orgId', res.data[0].id)this.changeOrgId()})})}).catch((e) => {console.log(e);});},// 获取当前定位城市——获取天气getWeather() {const city = new AMap.CitySearch()city.getLocalCity((status, result) => {if (status === 'complete' && result.info === 'OK') {console.log('当前城市:', result.city);// 天气// 创建天气实例const weather = new AMap.Weather();// 获取指定城市(例如:北京)的实时天气weather.getLive(result.city, (error, data) => {if (error) {console.error('获取天气失败:', error);} else {console.log('实时天气数据:', data, `天气${data.weather} 温度${data.temperature}℃ 风向${data.windDirection}`);this.$emit('getWeather', `天气${data.weather} 温度${data.temperature}℃ 风向${data.windDirection}`)// 数据结构中通常包含如下信息// data.city: 城市名称// data.weather: 天气状况描述// data.temperature: 温度// data.windDirection: 风向// data.windPower: 风力等级等其他气象参数}});} else {console.error('获取当前城市失败:', result.info);}});},// 创建两个点标记createMarker(arr = []) {if (arr.length != 0) {// 清除地图上所有图形this.map.clearMap();this.getFenceInfoList(this.fenceArr)arr.map((item) => {var marker = new AMap.Marker({position: new AMap.LngLat(item.longitude, item.latitude),icon: new AMap.Icon({image: redIcon,imageSize: new AMap.Size(28, 28),}),// offset: new AMap.Pixel(-13, -30),// label: {//   content: "<div class='infos'>张三</div>",//   direction: 'bottom' //文本标注方位 可选值:'top'|'right'|'bottom'|'left'|'center',默认值: 'right'// }});this.map.add(marker);});//自动适配到合适视野范围//无参数,默认包括所有覆盖物的情况this.map.setFitView();} else {this.msgError('未有相关定位消息');}},//获取接口返回的电子围栏数据getFenceInfoList(arr = []) {if (arr.length == 0) {// 清除地图上所有图形this.map.clearMap();// 使用 setCenter 方法将地图中心移动到新的位置let point = this.roomArr.filter(item => item.id == this.info.orgId)[0]console.log(point, this.roomArr, 99999999999)// 设置地图中心点this.map.setCenter([point.longitude, point.latitude]);return;}let arr1 = [];for (let i = 0; i < arr.length; i++) {if (arr[i].fenceType == 0) {if (arr[i].useFence) {arr1.push({radius: arr[i].radius,center: arr[i].point,fillColor: "#16d46b",fillOpacity: 0.35,strokeColor: "#16d46b",strokeOpacity: 0.8,strokeStyle: "solid",zIndex: 10,});} else {arr1.push({radius: arr[i].radius,center: arr[i].point,fillColor: "#1791fc",fillOpacity: 0.5,strokeStyle: "solid",strokeColor: "#FF33FF",strokeOpacity: 0.8,zIndex: 10,});}} else if (arr[i].fenceType == 1) {if (arr[i].useFence) {arr1.push({path: arr[i].optimal,fillColor: "#16d46b",fillOpacity: 0.35,strokeColor: "#16d46b",strokeOpacity: 0.8,strokeStyle: "solid",zIndex: 10,});} else {arr1.push({path: arr[i].optimal,fillColor: "#1791fc",fillOpacity: 0.5,strokeColor: "#FF33FF",strokeOpacity: 0.8,strokeStyle: "solid",zIndex: 10,});}} else {for (let j = 0; j < arr[i].optimal.length; j++) {if (arr[i].useFence) {arr1.push({path: arr[i].optimal[j],fillColor: "#16d46b",fillOpacity: 0.35,strokeColor: "#16d46b",strokeOpacity: 0.8,strokeStyle: "solid",zIndex: 10,});} else {arr1.push({path: arr[i].optimal[j],fillColor: "#1791fc",fillOpacity: 0.5,strokeColor: "#FF33FF",strokeOpacity: 0.8,strokeStyle: "solid",zIndex: 10,});}}}}this.handleDrawPolygon(arr1);},// 获取接口返回的绘制图形handleDrawPolygon(data) {for (let i = 0; i < data.length; i++) {let polygon = null;if (data[i].radius) {polygon = new AMap.Circle(data[i]);} else {polygon = new AMap.Polygon(data[i]);}this.map.add(polygon);// 定位到绘制图形的位置this.map.setFitView();}},// type 1查询轨迹 2轨迹播放handleTrack(type, res) {// 清除地图上所有图形this.map.clearMap();this.getFenceInfoList(this.fenceArr)this.trackLineArr = res.data.map(item => {return {x: parseFloat(item.longitude),y: parseFloat(item.latitude),createTime: item.createTime,address: item.address,sp: 0,ag: 0,tm: 6}});// console.log(444, '接口获取的数据', this.trackLineArr)let lineArr = res.data.map(item => [item.longitude, item.latitude])this.handleGraspRoad(lineArr, type)},// 轨迹纠偏(因为最多只能纠偏500个点,所以只能采用循环方式进行处理)handleGraspRoad(graspArr, type) {// 起点let marker1 = null;marker1 = new AMap.Marker({map: this.map,position: graspArr[0],icon: new AMap.Icon({image: originIcon,size: new AMap.Size(48, 48), //图标大小imageSize: new AMap.Size(32, 32),}),offset: new AMap.Pixel(-13, -26),});marker1.setMap(this.map);// 终点let marker2 = null;marker2 = new AMap.Marker({map: this.map,position: graspArr[graspArr.length - 1],icon: new AMap.Icon({image: endIcon,size: new AMap.Size(48, 48), //图标大小imageSize: new AMap.Size(32, 32),}),offset: new AMap.Pixel(-13, -26),});// 定位到指定位置this.map.setFitView();marker2.setMap(this.map);//查询轨迹if (type == 1) {console.log(666, '轨迹的坐标点', graspArr)// 绘制轨迹(轨迹纠偏)const polyline = new AMap.Polyline({map: this.map,path: graspArr,showDir: true,strokeColor: "red", //线颜色// strokeOpacity: 1,     //线透明度strokeWeight: 6, //线宽});} else {//轨迹播放var markerSign = new AMap.Marker({map: this.map,position: graspArr[0],icon: new AMap.Icon({image: olderManIcon,size: new AMap.Size(48, 48), //图标大小imageSize: new AMap.Size(44, 44),}),// icon: "https://webapi.amap.com/images/car.png",offset: new AMap.Pixel(-13, -26),autoRotation: true,angle: -90,});// 绘制轨迹(轨迹纠偏)const polyline = new AMap.Polyline({map: this.map,path: graspArr,showDir: true,strokeColor: "#28F", //线颜色strokeOpacity: 1,     //线透明度strokeWeight: 6, //线宽});// 轨迹路线样式const passedPolyline = new AMap.Polyline({map: this.map,strokeColor: "#68d068", //线颜色strokeOpacity: 1,     //线透明度strokeWeight: 6, //线宽strokeStyle: "solid"  //线样式});markerSign.on("moving", function (e) {passedPolyline.setPath(e.passedPath);// this.map.setCenter(e.target.getPosition(), true);});this.map.setFitView();setTimeout(() => {markerSign.moveAlong(graspArr, 300);}, 1000);// markerSign.moveAlong(graspArr, {//   // 每一段的时长//   duration: 200, //可根据实际采集时间间隔设置//   // JSAPI2.0 是否延道路自动设置角度在 moveAlong 里设置//   // autoRotation: true,// });}},},
}
</script>
<style lang="scss">
// 修改时间选择框的样式,不能加scoped
.popperClass-my {border: 1px solid #66729b;background-color: rgba(0, 0, 0, 0.7);color: white;.el-date-range-picker__content.is-left,.el-picker-panel__content .el-date-range-picker__content .is-left,.el-picker-panel__content .el-date-range-picker__content .is-right,.el-date-range-picker__time-header,.el-date-range-picker__time-picker-wrap,.el-input__inner,.el-picker-panel__footer,.el-time-panel .el-popper,.el-button,.el-time-spinner,.el-time-spinner__item,.el-time-panel .el-popper {border: 0;}.el-time-spinner,.el-picker-panel__footer,.el-time-spinner__item {background: rgba(0, 0, 0, 0.7);// border: 0;// color: white;}.is-disabled .el-input__inner {background: rgba(0, 20, 38, 1);color: white;}.el-input__inner {background: rgba(0, 20, 38, 1);color: white;// 点日期-时间框}.el-time-panel__footer {background: rgba(0, 20, 38, 1);border: 0;}ul.el-scrollbar_view.el-time-spinner_list::before {background: rgba(0, 20, 38, 1);}// 选中日期.available.in-range div {background-color: black;color: white;}.available.in-range div:hover {background-color: black;color: white;}.el-button,.el-button.is-plain:hover {color: white;background: rgba(0, 20, 38, 1);border: 0;}.el-time-spinner__item:hover:not(.disabled) {//二级下拉框background: rgba(0, 0, 0, 0.7);font-size: medium;color: white;}}
</style><style scoped lang="scss">
@import "./components/css/rem.scss";// 下拉框样式的修改
::v-deep .el-input,
::v-deep .el-input__inner,
::v-deep .btn-bg,
::v-deep .el-range-editor--medium .el-range-input {background: url("./components/img/search1.png") no-repeat center center;background-size: 100% 100%;color: #fff;border: 0px;text-align: center;
}::v-deep .el-select-dropdown,
::v-deep .popperClass .el-date-picker .el-range-input {border: 0;background-image: url("./components/img/search-bg.png");background-position: center;background-repeat: no-repeat;background-size: 100% 100%;.el-select-dropdown__item {color: #fff;}
}.btn-time {background: url("./components/img/search1.png") no-repeat center center;background-size: 100% 100%;color: white;border: 0;
}.picker .el-date-range-picker {background-color: transparent !important;//   border: 0;// background-image: url("./components/img/search-bg.png");// background-position: center;// background-repeat: no-repeat;// background-size: 100% 100%;}::v-deep .amap-marker-label {background-color: transparent !important;color: #ffcd09;border: 0px solid #00f;white-space: nowrap;font-size: 16px;transform: translateX(-50%);font-weight: 700;
}.bg-com {width: 18vw;padding: .375rem;background: url('./components/img/bg-2.png') no-repeat center center;background-size: 100% 100%;z-index: 10;.item {max-width: 26vw;}
}.item-bg {width: 4.125rem;background: url('./components/img/alarm-bg.png') no-repeat center center;background-size: 100% 100%;
}
</style>

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

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

相关文章

【漏洞复现】金和OA IncentivePlanFulfill.aspx SQL注入漏洞

0x01 产品简介 金和OA协同办公管理系统C6软件&#xff08;简称金和OA&#xff09;&#xff0c;本着简单、适用、高效的原则&#xff0c;贴合企事业单位的实际需求&#xff0c;实行通用化、标准化、智能化、人性化的产品设计&#xff0c;充分体现企事业单位规范管理、提高办公效…

黑马现有java课程框架及其功能梳理

目录 高并发相关提高通信效率Netty作用&#xff1a;哪些框架使用它&#xff1a; ChannelChannelHandler 和 ChannelPipelineEventLoop 和 EventLoopGroup**涉及的名词解释&#xff1a;**NIOSocketNginx 高并发相关 主要用来解决IO密集型程序&#xff08;大量文件读写&#xff…

盲盒小程序有什么优势?如何运营获客?

盲盒作为当下的热门行业&#xff0c;已经在国内外成功站稳脚步&#xff0c;市场规模庞大。 线上盲盒小程序也是互联网电商下的新模式&#xff0c;将传统的盲盒模式与线上电商模式相结合&#xff0c;为消费者提供一种新颖额盲盒购买体验&#xff0c;玩家在手机上就可以体验到抽…

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

2024年卫生巾行业市场分析报告(京东天猫淘宝线上卫生巾品类电商数据查询)

最近&#xff0c;相关部门辟谣了一则“十大致癌卫生巾黑名单”的消息。这个榜单是部分博主AI撰写&#xff0c;为博眼球、蹭热度的结果。此次事件势必会对卫生巾行业产生一定影响&#xff0c;加剧行业竞争。 根据鲸参谋电商数据平台显示&#xff0c;2024年1月至2月线上电商平台…

从内存巷弄到指针大道(一)

文章目录 1.内存和地址1.1理解内存地址酒店大堂&#xff1a;内存的入口房间号&#xff1a;内存地址的意义酒店的楼层划分&#xff1a;内存的结构酒店的房间单位&#xff1a;计算机中的常见单位 1.2如何理解编址 2.指针变量和地址2.1取地址操作符&#xff08;&)2.2 指针变量…

二、typescript基础语法

一、条件语句 二、函数 1、有名函数 function add(x:number, y:number):number {return x y;}2、匿名函数 let add function (x:number, y:number):number {return x y;}函数可选参数 function buildName(firstname: string, lastname?:string) {if (lastname) {return fi…

小程序插件引用vant方式

小程序主体项目构建npm包&#xff0c;引入vant 首先要创建插件&#xff0c;不知道的去官网看下&#xff0c;直通链接 构建npm包&#xff0c;直接在小程序打开终端 npm install npm i vant/weapp -S --production记得修改 project.config.json {..."setting": {...…

模式结果和观测的对比

首先对模式的海表温度进行对比 (base) [chengxllogin02 10yearmean]$ ls sst_*.nc sst_2000.nc sst_2002.nc sst_2004.nc sst_2006.nc sst_2008.nc sst_2001.nc sst_2003.nc sst_2005.nc sst_2007.nc sst_2009.nc 首先将观测资料转化为年平均 ls sst.200* |xargs -I{} cdo -b f…

​2024年保护微服务的前10种技术

1*5rY-jEv7qlpa_swi4WMIBw.png 引言 与当前正在使用的任何其他技术或方法一样&#xff0c;微服务也有其自己的一套缺陷和问题。尽管如此&#xff0c;微服务架构的采用率不断增加&#xff0c;预计到2028年将达到1718.2亿美元。 然而&#xff0c;尽管团队使用微服务&#xff0c;但…

如何默认管理员开启CMD

许多朋友使用win10系统的时候经常会用到CMD命令&#xff0c;而且还要以管理员身份运行&#xff0c;那么如何设置默认打开cmd都是以管理员身份运行&#xff0c;设置的方法挺简单&#xff0c;大家跟着下面的步骤操作即可。 Win10怎么默认以管理员身份运行cmd&#xff1f; 1、在开…

解读 Xend Finance:向 RWA 叙事拓展,构建更具包容性的 DeFi 体系

在二十世纪后&#xff0c;非洲地区陆续爆发了主权运动&#xff0c;这也让非洲大陆逐渐摆脱“殖民地”的标签。目前&#xff0c;非洲大陆公有 54 个主权国家&#xff0c;接近 15 亿且仍在飙升的人口规模&#xff0c;其 GDP 已经与印度相当&#xff0c;且仍旧处于飞速的发展进程中…

【机器学习300问】44、P-R曲线是如何权衡精确率和召回率的?

关于精确率和召回率的基础概念我已经写了两篇文章&#xff0c;如果友友还不知道这两个评估指标是什么&#xff0c;可以先移步去看看这两篇文章&#xff1a; 【机器学习300问】25、常见的模型评估指标有哪些&#xff1f;http://t.csdnimg.cn/JtuUO 总结一下这两个概念&a…

SQL Server 文件组详解

数据文件组 SQL Server 数据库最常用的存储文件是数据文件和日志文件。 数据文件用于存储数据&#xff0c;由一个主要数据文件&#xff08;.mdf&#xff09;和若干个次要数据文件&#xff08;.ndf&#xff09;构成&#xff1b;日志文件用于存储事物日志&#xff0c;由.ldf文件…

Java全栈课程之Linux———基本属性

一、看懂文件属性 Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们可以使…

2000元投影仪坚果N1 Air怎么样?对比D5X哪款更好?

投影仪市场&#xff0c;近年来作为家电数码领域的新星&#xff0c;已经引起了广泛的关注。特别是在年轻人群体中&#xff0c;投影仪成为了提升生活品质、享受家庭娱乐时光的重要工具。随着市场的繁荣&#xff0c;各种品牌和型号的投影仪如雨后春笋般涌现&#xff0c;其中&#…

Linux--进程(1)

目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程 3.1基本概念 3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork&#xff1a;创建一个子进程 为什么要创建子进程&#xff1f; fork的原理&#xff1a; 进一步了解fo…

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework PDF: https://arxiv.org/html/2403.13248v1 1 概述 为弥补Sora不开源的缺陷&#xff0c;本文提出多代理框架Mora&#xff0c;整合先进视觉AI代理&#xff0c;复制Sora的全能视频生成能力。Mora能利用…

2024年《期刊引证报告》解读,迎来哪些新调整?

​ 【SciencePub学术】 近日&#xff0c;科睿唯安官方发布了一则关于2024年《期刊引证报告》&#xff1a;为增强透明度和包容性&#xff0c;期刊影响因子学科排名迎来新调整的文章。文章中对今年新调整过的地方做出了详细的解释。 截图来源&#xff1a;科睿唯安公众号 动态一…

#Linux(连接档概念)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;硬链接&#xff08;inode&#xff0c;建立硬链接的文件inode号相同&#xff09; &#xff08;2&#xff09;创建硬链接:ln 文件名1 文件名…