【前端开发】实战:课表安排(HTML + JavaScript + Vue3 + Vant)
后端开发
主要定义了三个核心部分:每周周期(WeekDays)、每天节次(TimeLessons) 和 每天节次详情(Details)
- 每周周期(WeekDays)
- 存储了每周的七天(通常是从周一到周五)及其对应的中文名称(如“周一”,“周二”)
- 每天节次(TimeLessons)
- 定义了每天的具体节次安排,分为上午和下午两段时间,分别列出了每节课的时间区间(如“08:10-08:50”)
- 这里的节次数据对每一天进行了时间段划分,将课程表按照上午和下午两部分展示
- 每天节次详情(Details)
- 存储了每一节课的具体内容,其中包含 WeekDay(星期几)、LessonNumber(节次编号)、LessonContent(课程内容)
-这个数据结构是最核心的数据,描述了每一节课的具体信息,包括课程的名称、老师、时间范围等。该数据结构可以支持查询和操作,动态展示每节课的详细信息
- 每周周期
const WeekDays = [{ Number: 1, Name: "周一" },{ Number: 2, Name: "周二" },{ Number: 3, Name: "周三" },{ Number: 4, Name: "周四" },{ Number: 5, Name: "周五" },
]
- 每天节次
const TimeLessons = [{Time: "上午",LessonTitle: [{ Number: 1, Name: "第一节\n08:10-08:50" },{ Number: 2, Name: "第二节\n09:00-09:40" },{ Number: 3, Name: "第三节\n10:00-10:40" },{ Number: 4, Name: "第四节\n10:50-11:30" },],},{Time: "下午",LessonTitle: [{ Number: 5, Name: "第五节\n14:30-15:10" },{ Number: 6, Name: "第六节\n15:25-16:05" },],},
]
- 每天节次详情
const Details = [{WeekDay: 1,LessonNumber: 1,LessonContent: "历史\n(1 - 21)\n王珏",},{WeekDay: 2,LessonNumber: 1,LessonContent: "信息技术\n(1 - 21)\n陈丽华",},......{WeekDay: 1,LessonNumber: 2,LessonContent: "历史\n(1 - 21)\n王珏",},{WeekDay: 2,LessonNumber: 2,LessonContent: "历史\n(1 - 21)\n王珏",},............{WeekDay: 1,LessonNumber: 3,LessonContent: "历史\n(1 - 21)\n王珏",},{WeekDay: 2,LessonNumber: 3,LessonContent: "历史\n(1 - 21)\n王珏",},......
]
前端开发
前端开发思路主要集中在如何利用后端返回的数据来动态渲染课程安排,并提供交互性和用户体验优化。以下是前端开发的思路:
- 获取当前星期几
- 前端首先需要获取当前的星期几,这可以通过 getTodayWeekDay() 函数来完成。这个函数会根据当前日期返回数字 1 到 7(其中 7 代表周日)。前端可以使用这个数字来查询 WeekDays 中对应的星期名称,并将其渲染到页面上。
- 渲染节次时间
- 前端通过 TimeLessons 获取每天的节次安排。每一天的节次信息包含了上午和下午的时间段。通过遍历 TimeLessons,前端可以在页面上展示这些时间段(例如:上午的“第一节”,“第二节”等)。在渲染时,前端可以按时间段划分,显示“上午”或“下午”的课程列表。
- 获取并渲染课程内容
- 前端使用 getLessonContent(weekDay, lessonNumber) 函数来查询某一天某节课的具体内容。通过传递 weekDay 和 lessonNumber,前端可以查询 Details 数据数组,获取对应的课程信息(课程名称、老师等)。
- 前端在显示课程内容时,需要将换行符(\n)转化为 HTML 的
标签,以保证课程内容能正确显示为多行文本。
- 展示完整的课程表
- 前端将通过日期(星期几)和节次(如上午第一节、第二节等)来展示完整的课程表。前端需要根据每一节的时间、课程名称以及老师信息进行展示。
- 动态更新与交互
- 如果需要根据日期或节次动态加载不同的课程安排,前端可能会实现类似分页或切换功能,允许用户查看不同星期或不同节次的课程。这个操作通常会调用后端接口来获取对应的数据,然后更新视图。
- 封装函数方法
// 获取当前周期,并标准化周日为 7
const getTodayWeekDay = () => {const today = new Date();const day = today.getDay(); // 0=周日, ..., 6=周六return day === 0 ? 7 : day; // 将周日(0)转为7
};// 根据周期(weekDay)和节次(lessonNumber)来查找并返回该课程的内容
// 格式化换行符以便于显示
const getLessonContent = (weekDay, lessonNumber) => {const lesson = data.value.detail.Details.find((detail) =>detail.WeekDay === weekDay && detail.LessonNumber === lessonNumber);return lesson? lesson.LessonContent.replace(/(\r\n|\n|\r)/g, "<br>"): "";
};// 根据传入的 dayNumber(周期)筛选出符合该周期的所有课程,并返回过滤后的课程数据
const getFilteredLessons = (dayNumber) => {return data.value.detail.TimeLessons.map((timeLesson) => { // map() 会返回一个新的数组return {...timeLesson, // 保留原始的课程信息LessonTitle: timeLesson.LessonTitle.filter((lesson) => {return data.value.detail.Details.some((detail) =>detail.WeekDay === dayNumber &&detail.LessonNumber === lesson.Number // 判断该课程在指定的星期几和节次是否存在);}),};});
};
- 请求数据
const getSchduleDetail = () => {var formData = {action: "detail"};$.ajax({type: "post",url: handlerURL,async: false,data: formData,success: function (req) {if (req.Status) {const todayWeekDay = getTodayWeekDay();const todayDay = req.Data.WeekDays.find((day) => day.Number === todayWeekDay);// 标签切换周期渲染数据if (todayDay) {data.value.activeTab = todayDay.Number - 1;} else {data.value.activeTab =req.Data.WeekDays[req.Data.WeekDays.length - 1].Number - 1;}getFilteredLessons(data.value.activeTab);}},});
};
完整代码
应用技术:HTML + JavaScript + Vue3 + Vant
- HTML代码
<!DOCTYPE html>
<html lang="en" style="font-size: 50px"><head><meta charset="UTF-8" /><metaname="viewport"content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1"/><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta http-equiv="Expires" content="0" /><meta http-equiv="Pragma" content="no-cache" /><meta http-equiv="Cache-control" content="no-cache" /><meta http-equiv="Cache" content="no-cache" /><title>课表安排</title><link rel="stylesheet" href="css/detail.css" /><link rel="stylesheet" href="css/vant.css" /><script src="js/vue3.global.js"></script><script src="js/vant.min.js"></script></head><body><div id="app" class="wrapper"><template v-if="data.loading"><div class="class-schedule-container"><div class="schedule-title">{{ data.detail.Title }}</div><van-tabs v-model:active="data.activeTab"><van-tabv-for="day in data.detail.WeekDays":title="day.Name":key="day.Number"><table class="timetable"><thead><tr><th class="time-th">时间</th><th class="section-th">节次</th><th class="content-th">课程内容</th></tr></thead><tbody><trv-for="timeLesson in getFilteredLessons(day.Number)":key="timeLesson.Time"><td>{{ timeLesson.Time }}</td><td><divclass="lesson"v-for="lesson in timeLesson.LessonTitle":key="lesson.Number">{{ lesson.Name }}</div></td><td><divclass="lesson"v-for="lesson in timeLesson.LessonTitle":key="lesson.Number"v-html="getLessonContent(day.Number, lesson.Number)"></div></td></tr></tbody></table></van-tab></van-tabs></div></template></div><script type="text/javascript" src="/js/jquery.min.js"></script><script type="text/javascript" src="/js/detail.js"></script></body>
</html>
- CSS代码
* {margin: 0;padding: 0;border: 0;
}*,
*:before,
*:after {max-height: 100000px;
}html,
body {height: 100%;
}body {margin: 0 auto;padding: 0;
}a,
a:focus,
a:hover,
a:link {text-decoration: none;
}.wrapper {font-size: 0.4rem;width: 100%;margin: 0 auto;background-color: #f8f8f8;background-repeat: no-repeat;background-size: contain;max-width: 10rem;min-height: 100%;box-sizing: border-box;padding-bottom: 0.8rem;
}.class-schedule-container .schedule-title {flex: 1;text-align: center;font-size: 0.38rem;line-height: 0.9rem;background-color: #0091ff;color: #fff;position: relative;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;padding: 0 0.2rem;box-shadow: -5px 3px 16.92px 1.08px rgba(0, 97, 180, 0.4);
}.van-tab {font-size: 0.32rem !important;
}.timetable {width: 100%;font-size: 0.34rem;border-collapse: collapse;background-color: #fff;
}.timetable .lesson {text-align: center;min-height: 3rem;display: flex;align-items: center;justify-content: space-around;border-bottom: 1px solid #ddd;padding: 0 0.2rem;white-space: pre-line;
}
.timetable th,
.timetable td {border: 1px solid #ddd;padding: 0.2rem;text-align: center;
}
.timetable .time-th {width: 1rem;
}
.timetable .section-th {width: 2rem;
}
.timetable .content-th {width: 3.5rem;
}.timetable td {padding: 0;
}.timetable .lesson:last-child {border-bottom: none;
}
- JavaScript + Vue3 代码
$(function () {ini();
});function ini() {const { createApp, ref, onMounted, computed } = Vue;createApp({setup() {const data = ref({loading: false,detail: {Title: "",WeekDays: [],TimeLessons: [],Details: [],},activeTab: 4,});const getTodayWeekDay = () => {const today = new Date();const day = today.getDay();return day === 0 ? 7 : day;};const getSchduleDetail = () => {var formData = {action: "detail",};$.ajax({type: "post",url: handlerURL,async: false,data: formData,success: function (req) {if (req.Status) {data.value.detail = req.Data;const todayWeekDay = getTodayWeekDay();const todayDay = data.value.detail.WeekDays.find((day) => day.Number === todayWeekDay);if (todayDay) {data.value.activeTab = todayDay.Number - 1;} else {data.value.activeTab =data.value.detail.WeekDays[data.value.detail.WeekDays.length - 1].Number - 1;}getFilteredLessons(data.value.activeTab);data.value.loading = true;}},});};const getLessonContent = (weekDay, lessonNumber) => {const lesson = data.value.detail.Details.find((detail) =>detail.WeekDay === weekDay && detail.LessonNumber === lessonNumber);return lesson? lesson.LessonContent.replace(/(\r\n|\n|\r)/g, "<br>"): "";};const getFilteredLessons = (dayNumber) => {return data.value.detail.TimeLessons.map((timeLesson) => {return {...timeLesson,LessonTitle: timeLesson.LessonTitle.filter((lesson) => {return data.value.detail.Details.some((detail) =>detail.WeekDay === dayNumber &&detail.LessonNumber === lesson.Number);}),};});};onMounted(() => {getSchduleDetail();});return {data,getLessonContent,getFilteredLessons,};},}).use(vant).mount("#app");
}
相关文章:
【前端开发】实战:课表安排(HTML + JavaScript + Vue3 + Vant)
后端开发 主要定义了三个核心部分:每周周期(WeekDays)、每天节次(TimeLessons) 和 每天节次详情(Details) 每周周期(WeekDays) 存储了每周的七天(通常是从周一…...
nodejs建立TCP服务器端和TCP客户端之间的连接
TCP服务器端,看名字也知道是建立在服务器上面的 //获取模块 const net require(net); //创建server服务器 const servernet.createServer(); //与客户端建立连接 server.on(connection,function(socket){console.log(客户端与服务器连接已经建立);//socket是客户端…...
Pytorch使用手册-What is torch.nn really?(专题九)
我们建议将本教程作为 notebook 而不是脚本运行。要下载 notebook(.ipynb)文件,请点击页面顶部的链接。 PyTorch 提供了精心设计的模块和类,如 torch.nn、torch.optim、Dataset 和 DataLoader,帮助你创建和训练神经网络。为了充分利用这些工具的强大功能并根据你的问题进…...
ADAM优化算法与学习率调度器:深度学习中的关键工具
深度学习模型的训练效果离不开优化算法和学习率的选择。ADAM(Adaptive Moment Estimation)作为深度学习领域中广泛应用的优化算法之一,以其高效性和鲁棒性成为许多任务的默认选择。而学习率调度器则是优化算法的“助推器”,帮助训…...
黑马2024AI+JavaWeb开发入门Day03-Maven-单元测试飞书作业
视频地址:哔哩哔哩 讲义作业飞书地址:飞书 作业比较简单,随便写了写 package org.example;import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.ju…...
TouchGFX设计模式代码实例说明
一)Model - View - Presenter (MVP) 模式在 TouchGFX 中的应用 1)Model(模型): 模型代表应用程序的数据和业务逻辑。例如,在一个简单的计数器应用中,模型可以是一个包含计数器当前值的类。 class CounterModel { pri…...
Docker扩容操作(docker总是空间不足)
Docker扩容操作(docker总是空间不足) 1、df二连,一共也就70g,总是占满93%以上。所以需要移动到其他目录上 查看docker镜像和容器存储目录的空间大小 du -sh /var/lib/docker/2、停止docker服务 systemctl stop docker3、首先创建目录并迁移 # 首先创…...
ELK Fleet JAVA LOG收集与展示教程
目录 elastic-fleet架构 Elastic Agent的优势 Fleet JAVA日志收集流程 1.注册Fleet Sever 2.创建JAVA代理收集策略Agent Policy 3.添加集成 integration 4.调整Java log输出格式 5.添加Elastic Agent 6.添加Ingest 7.创建数据视图 8.其他Policy nginx-policy syst…...
【Python网络爬虫笔记】2-HTTP协议中网络爬虫需要的请求头和响应头内容
1 HTTP 协议整理 HTTP(Hyper Text Transfer Protocol)即超文本传输协议,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议,直白点儿,就是浏览器和服务器之间的数据交互就是通过 HTT…...
TiDB 调度概述
PD 是 TiDB 集群的管理模块,同时也负责集群数据的实时调度。本文档介绍一下 PD 的设计思想和关键概念。 场景描述 TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个 Replica…...
MySQL的Json类型数据操作方法
前言 MySQL在5.7增加了json类型数据,项目中最近有在使用。直接使用JSONObject或者JSONArray类型的时候会报以下的异常。发现需要将Java实体字段设置为String类型,然后需要的时候自己转换为JSONObject或者JSONArray。使用很不方便,经研究发现…...
论文笔记(五十九)A survey of robot manipulation in contact
A survey of robot manipulation in contact 文章概括摘要1. 引言解释柔顺性控制的概念:应用实例: 2. 需要接触操控的任务2.1 环境塑造2.2 工件对齐2.3 关节运动2.4 双臂接触操控 3. 接触操控中的控制3.1 力控制3.2 阻抗控制3.3 顺应控制 4. 接触操控中的…...
基础原型链污染
<aside> 💡 引用类型皆为对象 </aside> 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点: JavaScript中一切引用类型都是对象,对象就是属性的集合。 Array类型、Function类型、Object类型、…...
nginx 升级http 到 http2
同步发布于我的网站 🚀 背景介绍准备工作配置过程遇到的问题及解决方法验证升级总结参考资料 背景介绍 HTTP/2 是 HTTP 协议的最新版本,相比 HTTP/1.1,它带来了多项重要的改进,包括多路复用、头部压缩和服务端推送。这些特性可…...
XPath表达式详解及其在Web开发中的应用
XPath(XML Path Language)是一种强大的查询语言,用于在XML文档中选择节点。由于HTML可以被视为一种特殊的XML,因此XPath同样适用于HTML文档。XPath允许开发者通过元素的层级结构和属性来选择节点或节点集合,这使得它成…...
云服务器进行安全防护的必要性
在当今这个数字化时代,云计算已成为企业运营不可或缺的一部分,而云服务器作为云计算的核心基础设施,承载着数据存储、应用部署、业务运行等多重关键任务。随着企业数字化转型的深入,云服务器上的数据量激增,业务逻辑日…...
win10系统安装docker-desktop
1、开启Hyper-v ———————————————— Hyper-V 是微软提供的一种虚拟化技术,它允许你在同一台物理计算机上运行多个独立的操作系统实例。这种技术主要用于开发、测试、以及服务器虚拟化等领域。 —————————————————————— &#…...
video.js 禁用单击暂停
video.js 默认效果是单击播放区域暂停/播放 需求:要实现单击播放区禁止暂停/播放功能 有其他的点击效果需要实现 会导致俩功能有冲突 作者给出答案:如下 .vjs-tech {pointer-events: none; } 确实管用,想了很多阻止的办法,都没这个来的快...
【二维动态规划:交错字符串】
介绍 编程语言:Java 本篇介绍一道比较经典的二维动态规划题。 交错字符串 主要说明几点: 为什么双指针解不了?为什么是二维动态规划?根据题意分析处转移方程。严格位置依赖和空间压缩优化。 题目介绍 题意有点抽象,…...
如何在CentOS 7上安全地设置Apache网站目录权限
一、概述 在CentOS 7上运行Apache Web服务器时,正确设置文件和目录的权限对于确保网站的安全性和正常运行至关重要。本文将介绍如何为Apache网站目录(例如/var/www/html/)设置合适的权限,以平衡安全性和功能性需求。 二、所有权 …...
Makefile 入门指南:构建自动化编译流程
个人主页:chian-ocean 文章专栏 前言 make 和 Makefile 是编译和构建软件项目时非常常用的工具和文件,它们通常配合使用来自动化项目的编译过程。 make 定义:make 是一个构建自动化工具,用于根据项目文件的依赖关系自动完成编译…...
TransVG 代码配置及一些小细节
TransVG代码配置 File “/home/wyq/TransVG/utils/misc.py”, line 22, in <module> from torchvision.ops import _new_empty_tensor ImportError: cannot import name ‘_new_empty_tensor’ if float(torchvision.__version__[:3]) < 0.7: # torchvision.__version…...
DIY-Tomcat part 3 实现对动态资源的请求
实现ServletRequest package connector;import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i…...
在鲲鹏麒麟服务器上部署MySQL主从集群
因项目需求需要部署主从MySQL集群,继续采用上次的部署的MySQL镜像arm64v8/mysql:latest,版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…...
K8S版本和istio版本的对照关系
版本对照关系 下载地址1 下载地址2...
省级新质生产力数据(蔡湘杰版本)2012-2022年
测算方式:参考《当代经济管理》蔡湘杰(2024)老师研究的做法,本文以劳动者、劳动对象和劳动资料为准则层,从新质生产力“量的积累、质的提升、新的拓展”三维目标出发,构建新质生产力综合评价指标体系&#…...
速盾:介绍一下高防cdn的缓存响应事什么功能?
高防CDN(Content Delivery Network)是一种基于分布式缓存技术的网络加速服务,能够提供强大的缓存响应功能。它的缓存响应功能主要包括缓存加速和智能缓存两个方面。 首先,高防CDN的缓存加速功能是指通过在全球范围内部署大量的缓…...
如何解决服务器扫描出的ASP木马问题
随着互联网的发展,网站安全问题日益凸显。其中,ASP(Active Server Pages)木马因其隐蔽性和危害性成为攻击者常用的手段之一。本文将详细介绍如何检测和清除服务器上的ASP木马,以保障网站的安全。 1. ASP木马概述 ASP…...
CTF之WEB(sqlmap tamper 参数)
apostropheask.py 作用:将单引号替换为UTF-8,用于过滤单引号。 base64encode.py 作用:替换为base64编码。 multiplespaces.py 作用:绕过SQL关键字添加多个空格。 space2plus.py 作用:用号替换…...
小程序-基于java+SpringBoot+Vue的乡村研学旅行平台设计与实现
项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:…...
力扣81:搜索旋转排序数组II
已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k1], ..., nums[n-1], n…...
力扣题库Day4(持续更新中...)
2024/11/29 回文数: 给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 class Solution {public boolean isPalindrome(int x) {if(x &l…...
MySQL数据库表的操作
1、总述 今天我跟大家分享MySQL数据库中表的创建,查看,修改,删除。 2、创建表 create table table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明࿱…...
Java阶段三05
第3章-第5节 一、知识点 动态代理、jdk动态代理、cglib动态代理、AOP、SpringAOP 二、目标 理解什么是动态代理和它的作用 学会使用JAVA进行动态代理 理解什么是AOP 学会使用AOP 理解什么是AOP的切入点 三、内容分析 重点 理解什么是动态代理和它的作用 理解什么是AO…...
【论文复现】LeNet-5
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ LeNet-5 概述LeNet-5网络架构介绍使用 LeNet-5 网络结构创建 MNIST 手写数字识别分类器下载并加载数据,并对数据进行预处理搭建 …...
Python-链表数据结构学习(1)
一、什么是链表数据? 链表是一种通过指针串联在一起的数据结构,每个节点由2部分组成,一个是数据域,一个是指针域(存放下一个节点的指针)。最后一个节点的指针域指向null(空指针的意思࿰…...
nginx安装和负载均衡
1. nginx安装 (1)安装依赖项: yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel(2)下载Nginx源代码: http://nginx.org/en/download.html https://nginx.o…...
Buffered 和 BuffWrite
Buffered和BuffWrite是Java IO包中的两个类,用于提高IO操作的效率。 Buffered是一个缓冲区类,可以将一个InputStream或者一个Reader包装起来,提供了一定的缓冲区大小,可以一次读取多个字节或字符,减少了读取的次数&am…...
第三十八篇——高斯分布:大概率事件意味着什么?
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过高斯分布的公式,我们可以从科学的角度知道很多和我们的直…...
Ubuntu24.04初始化教程(包含基础优化、ros2)
目录 构建系统建立系统备份**Timeshift: 系统快照和备份工具****安装 Timeshift****使用 Timeshift 创建快照****还原快照****自动创建快照** 最基本配置换源 软件配置打开新世界大门 谷歌浏览器星火应用商城更换输入法安装vscode 完全删除snap删除**删除软件****彻底删除**禁止…...
C/C++ 数据结构与算法 【时间复杂度和空间复杂度】【日常学习,考研必备】
一、时间复杂度 定义:时间复杂度描述了算法运行时间随输入大小增长而增长的趋势。它主要关注的是算法中最耗时的部分,并忽略常数因子、低阶项等细节。表示方法:通常使用大O符号(Big O notation)来表示时间复杂度。例如…...
brew安装mongodb和php-mongodb扩展新手教程
1、首先保证macos下成功安装了Homebrew, 在终端输入如下命令: brew search mongodb 搜索是不是有mongodb资源, 演示效果如下: 2、下面来介绍Brew 安装 MongoDB,代码如下: brew tap mongodb/brew brew in…...
使用zabbix监控k8s
一、 参考文献 小阿轩yx-案例:Zabbix监控kubernetes云原生环境 手把手教你实现zabbix对Kubernetes的监控 二、部署经验 关于zabbix监控k8s,总体来说是分为两块内容,一是在k8s集群部署zabbix-agent和zabbix- proxy。二是在zabbix进行配置。…...
Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建
Brain.js 是一个强大且易用的 JavaScript 神经网络库,适用于前端和 Node.js 环境,帮助开发者轻松实现机器学习功能。 在前文Brain.js(一):可以在浏览器运行的、默认GPU加速的神经网络库概要介绍-发展历程和使用场景中&…...
SQL Server管理员sa登录失败原因
文章目录 一、开启混合登录模式二、启用sa三、更改密码四、登录sa一、开启混合登录模式 用Windows身份登录数据库服务。 在连接名上右键→属性。 在安全性选项卡下,选择【SQL Server和Windows身份验证模式】,点击【确定】,提示需要重启服务。 Win+R,输入指令:services.ms…...
怎么样才算得上熟悉高并发编程?
提到并发编程很多人就会头疼了;首先就是一些基础概念:并发,并行,同步,异步,临界区,阻塞,非阻塞还有各种锁全都砸你脸上,随之而来的就是要保证程序运行时关键数据在多线程…...
conan2包管理菜鸟入门之------------------交叉编译和静态编译
在做嵌入式开发时,我们经常需要交叉编译,conan2可以通过新增profile,在profile配置交叉编译工具链,然后在conan build指定profile就可以进行交叉编译,具体步骤如下: 1.首先在profiles下新增目标平台配置,默认情况下是只有default,下面是一个example profile文件: [set…...
Go-MediatR:Go语言中的中介者模式
在Go语言中,确实存在一个与C#中的MediatR类似的组件包,名为Go-MediatR。 Go-MediatR是一个受.NET中MediatR库启发的Go语言实现,它专注于通过中介者模式简化命令查询责任分离(CQRS)模式的处理和在事件驱动架构中的应用…...
双向链表
目录 链表的分类 概念 双向链表的实现 ① 结构 ② 初始化 ③ 打印 ④ 插入数据 ⑤ 删除数据 ⑥ 查找数据 ⑦ 在pos位置之前插入数据 ⑧ 删除pos位置的数据 ⑨ 销毁链表 总结 链表的分类 虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构&…...
Spring Boot使用JDK 21虚拟线程
JDK 21引入的虚拟线程(Virtual Threads)是 Project Loom 的一部分,旨在显著简化并发编程并提高 Java 应用的可扩展性。以下是虚拟线程的主要特点: 1. 概念 虚拟线程是轻量级线程,与传统的操作系统线程不同࿰…...