Vue3基础2

1.Hooks

就是进行数据的封装,同一种类型的 数据 方法 计算属性 ,放在一起

命名规范 use+'功能名称'.ts 或.js

创建一个文件夹 hooks

1.useDog.ts

import { reactive,onMounted } from "vue";
import axios from "axios";export default function () {//数据let dogList = reactive(["https://images.dog.ceo/breeds/pembroke/n02113023_14262.jpg",]);//方法async function addDog() {try {let result = await axios.get("https://dog.ceo/api/breeds/image/random");dogList.unshift(result.data.message);} catch (error) {alert(error.message);}}onMounted(()=>{addDog();})return { dogList, addDog };
}

 2.useSum.ts

import { ref ,onMounted,computed} from "vue";export default function () {//数据let sum = ref(0);let bigSum = computed(()=>{return sum.value*10;})//方法function changeSUM() {sum.value++;}onMounted(()=>{sum.value+=10;})//向外部提供东西return {sum,changeSUM,bigSum}}

3.person.vue

<template><div class="person"><h2>求和为:{{ sum }}  计算出十倍后的数:{{ bigSum }}</h2><button @click="changeSUM">点我sum+1</button><hr /><img v-for="item in dogList" :key="item" :src="item" alt="" /><br /><button @click="addDog">再来一只小狗</button></div>
</template><!-- 会自动暴露出去 -->
<script  lang="ts" setup  name="Person">import useSum from '@/hooks/useSum';import useDog from '@/hooks/useDog';let {sum,changeSUM,bigSum} = useSum();let {dogList,addDog} = useDog();</script><style scoped>
.person {background-color: skyblue;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}
button {margin: 0 5px;
}img {height: 100px;margin-right: 10px;
}
</style>

2.Vue3 的路由

1.安装路由器

npm i vue-router

2.创建文件

3.router.ts

//创建一个路由器,并暴露出去// 第一步:引入createRouter
import {createRouter,createWebHistory} from 'vue-router'//引入一个一个可能要呈现的组件
import Home from '@/components/Home.vue'
import News from '@/components/News.vue'
import About from '@/components/About.vue'//第二步: 创建路由器
const router = createRouter({history:createWebHistory(),//路由器的工作模式(稍后讲解)routes:[{path:'/home',component: Home},{path:'/news',component: News},{path:'/about',component: About}]
})//暴露出去
export default router

4.app.vue

<template><div class="app"><h2 class="title">Vue 路由测试</h2><!-- 导航区 --><div class="navigate"><RouterLink to="/home" active-class="xiaozhupeiqi">首页</RouterLink><RouterLink  to="/news" active-class="xiaozhupeiqi">新闻</RouterLink><RouterLink to="/about" active-class="xiaozhupeiqi">关于</RouterLink></div><!-- 展示区 --><div class="main-content"><RouterView></RouterView></div></div>
</template><script lang="ts" setup name="App">
import { RouterView,RouterLink } from 'vue-router';</script><style scoped>/* App */.title {text-align: center;word-spacing: 5px;margin: 30px 0;height: 70px;line-height: 70px;background-image: linear-gradient(45deg, gray, white);border-radius: 10px;box-shadow: 0 0 2px;font-size: 30px;}.navigate {display: flex;justify-content: space-around;margin: 0 100px;}.navigate a {display: block;text-align: center;width: 90px;height: 40px;line-height: 40px;border-radius: 10px;background-color: gray;text-decoration: none;color: white;font-size: 18px;letter-spacing: 5px;}.navigate a.xiaozhupeiqi {background-color: #64967E;color: #ffc268;font-weight: 900;text-shadow: 0 0 1px black;font-family: 微软雅黑;}.main-content {margin: 0 auto;margin-top: 30px;border-radius: 10px;width: 90%;height: 400px;border: 1px solid;}.active{background-color: #ffc268;}
</style>

5.main.ts

//引入 createApp用于创建应用
import {createApp} from 'vue';
//引入 App 根组件
import App from './App.vue';//引入路由器
import router from './router';//创建一个应用
const app = createApp(App);//使用一个插件
app.use(router);//挂载整个应用到app容器中
app.mount('#app');

6.两个注意点

7.路由器的工作模式

 解决history模式404问题

 

8.to的两种写法

9.嵌套路由

1.Detail.vue

//创建一个路由器,并暴露出去// 第一步:引入createRouter
import {createRouter,createWebHistory,createWebHashHistory} from 'vue-router'//引入一个一个可能要呈现的组件
import Home from '@/pages/Home.vue'
import News from '@/pages/News.vue'
import About from '@/pages/About.vue'
import Detail from '@/pages/Detail.vue'//第二步: 创建路由器
const router = createRouter({history:createWebHistory(),//History模式// history:createWebHashHistory(),//Hash模式routes:[{name: 'zhuye',path:'/home',component: Home},{name:'xinwen',path:'/news',component: News,children:[{path:'detail',component:Detail}]},{name:'guanyu',path:'/about',component: About}]
})//暴露出去
export default router

 2.News.vue

<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><RouterLink :to="{path:'/news/detail'}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div></template><script setup lang="ts" name="News">import { nanoid } from 'nanoid';import { reactive } from 'vue';import { RouterView } from 'vue-router';const newsList = reactive([{id:nanoid(),title:'一种游戏',content:'西兰花'},{id:nanoid(),title:'一种水果',content:'学IT'},{id:nanoid(),title:'如何一夜暴富',content:'明天是周一'},{id:nanoid(),title:'震惊,玩玩没想到',content:'快过年了'},]);</script><style scoped>/* 新闻 */.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;}.news ul {margin-top: 30px;list-style: none;padding-left: 10px;}.news li>a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967E;text-shadow: 0 0 1px rgb(0, 84, 0);}.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;}</style>

10.query参数

<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><!-- 第一种写法 --><!-- <RouterLink :to="`/news/detail?id=${news.id}&title=${news.title}&content=${news.content}`">{{ news.title }}</RouterLink> --><!-- 第二种写法 --><RouterLink :to="{// path: '/news/detail',name: 'xiangqing',query: {id: news.id,title: news.title,content: news.content}}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="News">
import { nanoid } from "nanoid";
import { reactive } from "vue";
import { RouterView } from "vue-router";const newsList = reactive([{ id: nanoid(), title: "一种游戏", content: "西兰花" },{ id: nanoid(), title: "一种水果", content: "学IT" },{ id: nanoid(), title: "如何一夜暴富", content: "明天是周一" },{ id: nanoid(), title: "震惊,玩玩没想到", content: "快过年了" },
]);
</script><style scoped>
/* 新闻 */
.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;
}
.news ul {margin-top: 30px;/* list-style: none; */padding-left: 10px;
}.news li::marker {color: #64967E;}
.news li > a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967e;text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;
}
</style>
<template><ul class="news-list"><li>编号:{{ query.id }}</li><li>标题:{{ query.title }}</li><li>内容:{{ query.content }}</li></ul>
</template><script setup lang="ts" name="Detail">
// 这是一个hooks,向这个组件实例暴露了一个函数
import { useRoute } from "vue-router";
import { toRefs } from "vue";const route = useRoute();const {query} = toRefs(route);
// console.log(route.query);</script><style scoped>
.news-list {list-style: none;padding-left: 20px;
}.news-list > li {line-height: 30px;
}
</style>

11.params参数

<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><!-- 第一种写法 纯字符串  --><!-- <RouterLink :to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{ news.title }}</RouterLink> --><!-- 第二种写法 --><RouterLink:to="{name: 'xiangqing',//params不允许path传参,只能用name  而且参数只能是基本类型params: {id: news.id,title: news.title,// content: news.content,},}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="News">
import { nanoid } from "nanoid";
import { reactive } from "vue";
import { RouterView } from "vue-router";const newsList = reactive([{ id: nanoid(), title: "一种游戏", content: "西兰花" },{ id: nanoid(), title: "一种水果", content: "学IT" },{ id: nanoid(), title: "如何一夜暴富", content: "明天是周一" },{ id: nanoid(), title: "震惊,玩玩没想到", content: "快过年了" },
]);
</script><style scoped>
/* 新闻 */
.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;
}
.news ul {margin-top: 30px;/* list-style: none; */padding-left: 10px;
}.news li::marker {color: #64967e;
}
.news li > a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967e;text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;
}
</style>
<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><!-- 第一种写法 纯字符串  --><!-- <RouterLink :to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{ news.title }}</RouterLink> --><!-- 第二种写法 --><RouterLink:to="{name: 'xiangqing',//params不允许path传参,只能用name  而且参数只能是基本类型params: {id: news.id,title: news.title,// content: news.content,},}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="News">
import { nanoid } from "nanoid";
import { reactive } from "vue";
import { RouterView } from "vue-router";const newsList = reactive([{ id: nanoid(), title: "一种游戏", content: "西兰花" },{ id: nanoid(), title: "一种水果", content: "学IT" },{ id: nanoid(), title: "如何一夜暴富", content: "明天是周一" },{ id: nanoid(), title: "震惊,玩玩没想到", content: "快过年了" },
]);
</script><style scoped>
/* 新闻 */
.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;
}
.news ul {margin-top: 30px;/* list-style: none; */padding-left: 10px;
}.news li::marker {color: #64967e;
}
.news li > a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967e;text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;
}
</style>

12.Props路由配置

//创建一个路由器,并暴露出去// 第一步:引入createRouter
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'//引入一个一个可能要呈现的组件
import Home from '@/pages/Home.vue'
import News from '@/pages/News.vue'
import About from '@/pages/About.vue'
import Detail from '@/pages/Detail.vue'//第二步: 创建路由器
const router = createRouter({history: createWebHistory(),//History模式// history:createWebHashHistory(),//Hash模式routes: [{name: 'zhuye',path: '/home',component: Home},{name: 'xinwen',path: '/news',component: News,children: [{name: 'xiangqing',path: 'detail',//问号代表可传可不传component: Detail,//第一种写法,将路由收到的所有params参数作为props传给路由组件// props:true //params参数全部变成 params //第二种写法 函数写法 可以自己决定将什么作为props给路由组件props(route){// console.log(route)return route.query}//第三种写法 写死了 // props: {//     a: 100,//     b: 200// }}]},{name: 'guanyu',path: '/about',component: About}]
})//暴露出去
export default router
<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><!-- 第一种写法 纯字符串  --><!-- <RouterLink :to="`/news/detail/${news.id}/${news.title}/${news.content}`">{{ news.title }}</RouterLink> --><!-- 第二种写法 --><RouterLink:to="{name: 'xiangqing',//params不允许path传参,只能用name  而且参数只能是基本类型query: {id: news.id,title: news.title,content: news.content,},}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="News">
import { nanoid } from "nanoid";
import { reactive } from "vue";
import { RouterView } from "vue-router";const newsList = reactive([{ id: nanoid(), title: "一种游戏", content: "西兰花" },{ id: nanoid(), title: "一种水果", content: "学IT" },{ id: nanoid(), title: "如何一夜暴富", content: "明天是周一" },{ id: nanoid(), title: "震惊,玩玩没想到", content: "快过年了" },
]);
</script><style scoped>
/* 新闻 */
.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;
}
.news ul {margin-top: 30px;/* list-style: none; */padding-left: 10px;
}.news li::marker {color: #64967e;
}
.news li > a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967e;text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;
}
</style>
<template><ul class="news-list"><li>编号:{{ id }}</li><li>标题:{{ title }}</li><li>内容:{{ content }}</li></ul>
</template><script setup lang="ts" name="Detail">
// import { useRoute } from 'vue-router';
// import { toRefs } from 'vue';
// const route = useRoute();
// const {params} =toRefs(route);defineProps(["id", "title", "content"]);
</script><style scoped>
.news-list {list-style: none;padding-left: 20px;
}.news-list > li {line-height: 30px;
}
</style>

13.replace属性

<template><div class="app"><h2 class="title">Vue 路由测试</h2><!-- 导航区 --><div class="navigate"><!-- 对象写法 路径跳转 --><RouterLink :to="{path:'/home'}" active-class="active" replace>首页</RouterLink><!-- 对象写法 名字跳转 --> <RouterLink  :to="{name:'xinwen'}" active-class="active" replace>新闻</RouterLink><!-- 字符串写法 --><RouterLink to="/about" active-class="active" replace>关于</RouterLink></div><!-- 展示区 --><div class="main-content"><RouterView></RouterView></div></div>
</template><script lang="ts" setup name="App">
import { RouterView,RouterLink } from 'vue-router';</script><style scoped>/* App */.title {text-align: center;word-spacing: 5px;margin: 30px 0;height: 70px;line-height: 70px;background-image: linear-gradient(45deg, gray, white);border-radius: 10px;box-shadow: 0 0 2px;font-size: 30px;}.navigate {display: flex;justify-content: space-around;margin: 0 100px;}.navigate a {display: block;text-align: center;width: 90px;height: 40px;line-height: 40px;border-radius: 10px;background-color: gray;text-decoration: none;color: white;font-size: 18px;letter-spacing: 5px;}.navigate a.active {background-color: #64967E;color: #ffc268;font-weight: 900;text-shadow: 0 0 1px black;font-family: 微软雅黑;}.main-content {margin: 0 auto;margin-top: 30px;border-radius: 10px;width: 90%;height: 400px;border: 1px solid;}.active{background-color: #ffc268;}
</style>

14.编程式路由导航

脱离<RouterLink> 实现路由跳转

<template><div class="news"><!-- 导航区 --><ul><li v-for="news in newsList" :key="news.id"><button @click="showNewsDetail(news)">查看新闻</button><!-- 第二种写法 --><RouterLink:to="{name: 'xiangqing',//params不允许path传参,只能用name  而且参数只能是基本类型query: {id: news.id,title: news.title,content: news.content,},}">{{ news.title }}</RouterLink></li></ul><!-- 展示取 --><div class="news-content"><RouterView></RouterView></div></div>
</template><script setup lang="ts" name="News">
import { nanoid } from "nanoid";
import { reactive } from "vue";
import { RouterView,useRouter } from "vue-router";const newsList = reactive([{ id: nanoid(), title: "一种游戏", content: "西兰花" },{ id: nanoid(), title: "一种水果", content: "学IT" },{ id: nanoid(), title: "如何一夜暴富", content: "明天是周一" },{ id: nanoid(), title: "震惊,玩玩没想到", content: "快过年了" },
]);const router = useRouter();function showNewsDetail(news){
//对象写法 和 to同理router.push({name:'xiangqing',query:{...news}})// router.replace({//   name:'xiangqing',//   query:{//    ...news//   }// })
}</script><style scoped>
/* 新闻 */
.news {padding: 0 20px;display: flex;justify-content: space-between;height: 100%;
}
.news ul {margin-top: 30px;/* list-style: none; */padding-left: 10px;
}.news li::marker {color: #64967e;
}
.news li > a {font-size: 18px;line-height: 40px;text-decoration: none;color: #64967e;text-shadow: 0 0 1px rgb(0, 84, 0);
}
.news-content {width: 70%;height: 90%;border: 1px solid;margin-top: 20px;border-radius: 10px;
}
</style>

15.重定向

//创建一个路由器,并暴露出去// 第一步:引入createRouter
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'//引入一个一个可能要呈现的组件
import Home from '@/pages/Home.vue'
import News from '@/pages/News.vue'
import About from '@/pages/About.vue'
import Detail from '@/pages/Detail.vue'//第二步: 创建路由器
const router = createRouter({history: createWebHistory(),//History模式// history:createWebHashHistory(),//Hash模式routes: [{name: 'zhuye',path: '/home',component: Home},{name: 'xinwen',path: '/news',component: News,children: [{name: 'xiangqing',path: 'detail',//问号代表可传可不传component: Detail,//第一种写法,将路由收到的所有params参数作为props传给路由组件// props:true //params参数全部变成 params //第二种写法 函数写法 可以自己决定将什么作为props给路由组件props(route){// console.log(route)return route.query}//第三种写法 写死了 // props: {//     a: 100,//     b: 200// }}]},{name: 'guanyu',path: '/about',component: About},{path:'/',//重定向redirect:'/home'}]
})//暴露出去
export default router

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

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

相关文章

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;19069 标注数量(xml文件个数)&#xff1a;19069 标注数量(txt文件个数)&#xff1a;19069 标…

SQL AI 工具:颠覆数据库管理与分析的创新力量

一、SQL AI 工具的兴起与发展 在当今数字化的时代&#xff0c;数据量呈现爆炸式增长&#xff0c;企业和个人对于高效管理和分析数据的需求日益迫切。传统的数据库管理和查询方式&#xff0c;对于非技术人员来说存在较高的门槛&#xff0c;操作复杂且耗时。这一背景为 SQL AI 工…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘&#xff1a; 阿里云盘分享 提取码: l7y1 2. 新建虚拟机向导 选择自定义&#xff0c;然后下一步。 默认配置&#xff0c;下一步。 选择稍后安装操作系统&#xff0c;下一步。 选择操作系统Linux&#xff0c;版本Ubuntu64位&#xff0c;下一…

OCC笔记:Windows下OCC的编译

一、源码下载 进OCC官网下载https://dev.opencascade.org/release即可&#xff0c;或直接Clone它的Git库https://dev.opencascade.org/resources/git_repository&#xff0c;本文用的源码库版本为7.4.0&#xff08;我本机安装的VS2013&#xff0c;我又想用到AIS_ViewCube&…

AList嵌入动态验证码实现动态校验

前言 晓杰利用ALists创建了个网盘资源站&#xff0c;想着如何增加个动态验证码进行验证后才能进行访问下载&#xff0c;刚开始利用了固定的验证码&#xff0c;用户可以通过JS代码中进行绕过或直接拿到验证码&#xff0c;经过晓杰多次优化&#xff0c;最终版本支持动态获取验证…

Linux(面试篇)

目录 什么是Linux 什么是Linux内核&#xff1f; Linux的基本组件是什么&#xff1f; Bash和Dos之间基本区别是什么&#xff1f; 什么是Root账户 什么是Bash? 什么时CLI? Linux的目录结构时怎样的&#xff1f; 什么是硬链接和软链接&#xff1f; 什么叫CC攻击&#…

Ajax-04

一.同步代码和异步代码 同步代码&#xff1a;浏览器按照我们书写代码的顺序一行一行地执行程序的。在上一行完成后会执行下一行。 同步代码&#xff1a;逐行执行&#xff0c;需原地等待结果&#xff0c;才继续向下执行 异步代码&#xff1a;可以在执行一个可能长期运行的任务…

docker容器图形化管理之Portainer

docker容器轻量级图形页面管理之Portainer 1、查看portainer镜像 [rootlocalhost ~]# docker search portainer 2、下载portainer镜像 [rootlocalhost ~]# docker pull portainer/portainer #选择喜欢的portainer风格镜像下载 3、启动dockerui容器 [rootlocalhost ~]# doc…

昂科烧录器支持Melexis迈来芯的位置传感器MLX90365KDC

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Melexis迈来芯的位置传感器MLX90365KDC已经被昂科的通用烧录平台AP8000所支持。 MLX90365KDC是第II代Triaxis位置传感器IC。 这款单片器件可凭借其表面的集磁点(IMC)&#xf…

游戏服务器架构:基于匿名函数的高性能异步定时器系统

作者&#xff1a;码客&#xff08;ygluu 卢益贵&#xff09; 关键词&#xff1a;游戏服务器架构、匿名函数、高性能、异步定时器。 一、前言 本文主要介绍适用于MMO/RPG游戏服务端的、基于匿名函数做定时器回调函数的、高性能异步触发的定时器系统的设计方案&#xff0c;以解决…

vue3模拟生成并渲染10万条数据,并实现本地数据el-table表格分页

效果图&#xff1a; 一点都不卡 话不多说&#xff0c;直接上码 <template><div class"container"><h3 class"table-title">el表格 分页</h3><el-table :data"tableList.slice((currentPage-1)*pageSize, currentPage*p…

Python测试框架Pytest的使用

pytest基础功能 pytset功能及使用示例1.assert断言2.参数化3.运行参数4.生成测试报告5.获取帮助6.控制用例的执行7.多进程运行用例8.通过标记表达式执行用例9.重新运行失败的用例10.setup和teardown函数 pytset功能及使用示例 1.assert断言 借助python的运算符号和关键字实现不…

Azure OpenAI citations with message correlation

题意&#xff1a;“Azure OpenAI 引用与消息关联” 问题背景&#xff1a; I am trying out Azure OpenAI with my own data. The data is uploaded to Azure Blob Storage and indexed for use with Azure AI search “我正在尝试使用自己的数据进行 Azure OpenAI。数据已上传…

ubuntu系统在线安装下载firefox-esr流览器

1、在线firefox流览器 Firefox ESR(Extended Support Release)是火狐浏览器的长期支持版本&#xff0c;针对同一个主版本提供一年左右的安全性与稳定性支持。如果您因为火狐浏览器改版而导致有原本能用的功能变得不能使用的话(例如Firefox 64.0把RSS订阅的功能拿掉了)&#xf…

VBA之正则表达式(46)-- 解析业务逻辑公式

实例需求&#xff1a;某业务系统的逻辑公式如下所示&#xff08;单行文本&#xff09;&#xff0c;保存在活动工作表的A1单元格中。 "DSO_90Day"->"FA_NoFunc"->"FCCS_No Intercompany"->"FCCS_Data Input"->"FCCS_…

泛微E9如何更新缓存

泛微E9如何更新缓存 在E9中&#xff0c;是默认开启了数据缓存的&#xff0c;如果直接操作数据库是会存在缓存不更新的问题&#xff0c;E9系统提供以下几种方式进行缓存清空的方式。 注&#xff1a;原则上禁止通过非程序渠道直接修改OA数据库数据&#xff0c;可以直接在页面进行…

Linux云计算 |【第二阶段】SECURITY-DAY3

主要内容&#xff1a; Prometheus监控服务器、Prometheus被监控端、Grafana监控可视化 补充&#xff1a;Zabbix监控软件不自带LNMP和DB数据库&#xff0c;需要自行手动安装配置&#xff1b;Prometheus监控软件自带WEB页面和DB数据库&#xff1b;Prometheus数据库为时序数据库&…

JVM 运行时内存结构简介

JVM 运行时内存结构简介 一、前言二、JVM 运行时内存结构2.1 线程隔离数据区&#xff1a;2.2 线程共享数据区&#xff1a; 三、JVM 内存区域划分1. 程序计数器&#xff08;PC&#xff09;2. 虚拟机栈3. 本地方法栈4. Java 堆5. 方法区6. 运行时常量池 附录 一、前言 JVM&#…

手撕C++类和对象(中)

1.类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类&#xff0c;我 们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最 后两个取地址重载不…

Linux 内核源码分析---IPv6 数据包

IPv6是英文“Internet Protocol Version 6”&#xff08;互联网协议第6版&#xff09;的缩写&#xff0c;是互联网工程任务组&#xff08;IETF&#xff09;设计的用于替代IPv4的下一代IP协议&#xff0c;其地址数量号称可以为全世界的每一粒沙子编上一个地址。 由于IPv4最大的…