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

挑战项目 --- 微服务编程测评系统(在线OJ系统)

一、前言 

1.为什么要做项目

面试官要问项目,考察你到底是理论派还是实战派?

1.希望从你的项目中看到你的真实能力和对知识的灵活运用。

2.展示你在面对问题和需求时的思考方式及解决问题的能力。

3.面试官会就你项目提出一些问题,或扩展需求。以此来评估你如何有效应对和设计解决方案。

 2.常见问题

1.你这里的处理可能会引发 XXXbug,那么你想要怎么处理。有时候答不上来面试官也会做一些引导,看你是否有一些自己的想法。

2.我现在有个 XXX 需求,在你的项目中你要怎么满足我的需求?

3.你的 XX 表结构如何设计的,你的缓存如何设计的,为什么要这么设计,这么设计的话,如果需求发生 XX 变化你要怎么处理?

4.针对你使用的某个组件,问一些问题,例如:你是怎么使用redis的,为什么要用它,缓存一致是怎么保证的,内存维护使用怎样的方案.....

3.误区

有些同学可能认为在项目中使用技术越多,面试成功率越高。

然而在有限的时间内,无法深入学习和理解所有的技术,也无法实现所有想到的功能。当面试官问到你没有涉及过的技术或功能时,你如果之前知识一味的追求学习的数量,此时你一定很难回答出来。 

面试官更关心你的思考和解决问题的能力,如果你能运用所学知识,清晰地解释应对一个你从未接触过的领域,即使不是业界最优解,你也能得到面试官的认可。

不断思考、探索和创新、以提升自己的总和素质和竞争力。

4.总结

项目的作用在于全面展现你的实战能力,问题处理及思考能力,确保面试官对你完成交付任务的能力充满信心。即使遇到挑战,你也能积极应对,推动项目向前发展。 

 二、 项目展示及核心技术介绍

用到的技术及组件

在线OJ(online-judge)系统,在线判题系统,类似于LeetCode这样的刷题网站。

1.题库(题目列表) 

 

2.竞赛(竞赛列表) 

上述两个功能支持游客登录,因此未登录就可以进行查看。

但是如果要答题、要报名比赛需要登录才可以。 

3.手机号验证码进行登录

 

  

4.答题(判断通过还是未通过) 

5.对题目标题和题目内容及难度的搜索 

6.报名/开始答题的按钮提示

7. 答题倒计时(完成竞赛/提交代码按钮)

8. 上一题下一题按钮

 9.历史竞赛

查看排名

10.个人中心 

11.我的比赛/我的消息

12.退出登录 

13.后台管理系统

用户管理 

 

题目管理

竞赛管理 

14. 第三方组件xxl-job管理

三、开发环境

四、安装nodejs

Node.js — Run JavaScript Everywhere

五、安装 VS Code 

Visual Studio Code - Code Editing. Redefined

六、 项目开发步骤

• 立项阶段:项目定义、需求收集与分析、可行性分析、风险评估与规划、项目团队组建、制定项目计划、获取批准与支持。

• 需求评审与分析:

         ◦ 项目团队(包括产品经理、开发人员、测试人员等)共同参与,明确项目的目标、功能需求、 用户体验等。

        ◦ 产出物为《需求规格说明书》或《产品需求文档》。(产品经理最终交付)

• 技术选型与架构设计

        ◦ 根据项目需求,设计系统的整体架构,选择合适的技术栈。

         ◦ 架构师或技术负责⼈进行主导。

•接口定义与文档编写:

        ◦后端开发人员定义API接口,包括接口地址、请求方法、请求参数、响应数据、错误码等。

        ◦编写接口文档,供前端开发人员使用,确保前后端对接口有统一的理解。(一般会组织简短会议讨论,后端主导)

        ◦ 所有接口风格统一,促进效率。

• 后端开发、前端开发:

         ◦ 前端和后端开发⼈员分别根据接口文档和技术选型,进行开发。

         ◦ 这个过程理想情况,前后端是互不干扰独立开发的所以接口文档一定要保证高质量,但是遇到 问题一定是随时沟通。

• 前后端联调:

         ◦ 后端同学开发完一部分接⼝后,可将接口部署到开发环境。和前端同学配合联调 ◦

         联调工作一般由前端同学主导,后端同学配合调整和修改。

        ◦ 联调过程中,后端同学可分出一部分精力完成其它工作。但要确保提供联调接⼝的可靠性。

         ◦ 前后端开发人员配合进行接口联调,确保前后端数据交互无误。

• 测试

        ◦ 前后端同学分别将前后端系统部署到测试环境。

        ◦ 测试团队进行功能测试、性能测试、兼容性测试等,确保系统的质量和稳定性。

• 问题修复与优化:

        ◦ 根据测试结果,修复发现的问题,优化系统性能和用户体验。

        ◦ 可能涉及前后端代码的修改和调整。

• 部署与上线:

         ◦ 将项目部署到⽣产环境,配置服务器、数据库等。

         ◦ 进行上线前的最终测试,确保系统能够稳定运行。

• 维护与迭代:

         ◦ 项目上线后,进行日常的维护和监控,确保系统的安全和稳定运行。

         ◦ 根据用户反馈和市场需求,进行功能迭代和优化。

总结:

这就是软件开发的基本步骤,实际生产开发中有时也会做出调整。在整个开发过程中,前后端开 发⼈员需要保持密切的沟通与协作,确保项目的顺利进行。同时,项目团队也需要定期召开会议,同步项目进度、问题和需求变更,确保项目能够按时交付。

七、需求收集与分析

需求分类

•业务需求:指反映企业或组织对系统的⽬标要求,通常来⾃与企业内部。

•用户需求:描述软件系统的⽤⼾期望和需求,如⽤⼾界⾯、操作⽅式、数据展⽰等

•系统需求:从系统⻆度来说明软件的需求,包括功能需求(系统必须实现的功能)、⾮功能需求(⽐如软件的质量,可维护性,效率等等)和设计约束(交付时的⼀些限制条件,⽐如必须采⽤国有⾃主知识产权的数据库,必须运⾏在某个操作系统下)等等。

需求获取

需求获取的⽅式主要有以下⼏种:

•访谈与调研:直接与⽤⼾或者相关⼈员进⾏交流,然后整理出需求。

•问卷调查:由于对⽤⼾进⾏逐⼀访谈⽐较耗时且⽤⼾时间不⼀定允许及时参与访谈,所以可以预先准备问卷调查表让⽤⼾填写,再根据结果进⾏⼩范围访谈,可以看做是对⽤⼾访谈的⼀种优化。

•查阅⽂档与资料:研究⾏业报告、市场分析报告等,了解⾏业趋势、市场需求和竞争态势。

•原型与概念验证:制作简单的原型或概念模型,向⽤⼾展⽰可能的系统界⾯、操作流程和功能点,收集他们的反馈和建议

• 竞品分析:分析竞争对⼿的产品或服务,了解他们的功能、优缺点以及⽤⼾反馈,从⽽发现⾃⾝产 品的潜在需求和改进点。

• 等等

在获取需求的过程中,需要注意以下⼏点:

        ◦ 保持沟通:与⽤⼾和利益相关者保持持续的沟通,确保及时获取反馈和澄清疑问。

        ◦ 记录与整理:详细记录获取到的需求信息,并进⾏整理和分析,确保信息的准确性和⼀致性。

         ◦ 验证与确认:对获取到的需求进⾏验证和确认,确保它们真正反映了⽤⼾的期望和业务需求。

需求种类         需求内容 (在线OJ系统)

业务需求         题⽬列表、刷题、竞赛的列表、竞赛用户排名、

                        比赛、自动判题、题⽬管理、 竞赛管理。

用户需求         我的竞赛、我的消息、获取⽐赛结果、查看历史竞赛排名

系统需求         用户登录、注册、用户管理

                        安全防护(身份认证、防sql注入、防xss攻击)SEO优化......

 需求确定:

 

八、系统架构(BS与CS架构)

C/S架构

 

常见案例:QQ、微信、网易云音乐、王者荣耀等等 

 

C/S架构优缺点 

B/S架构

B/S架构全称是浏览器 / 服务器(Browser/Server)架构

分为Web浏览器、服务器程序、数据库(也可以是第三方组件服务)服务三部分

常见案例: 比如常见的大型网站站都属于此类。比如:平时使用的学校的官网、CSDN的官网等等 

 B/S架构优缺点 

如何选择

 

十、系统架构-微服务划分01

为什么使用微服务架构

微服务架构带来的挑战 

 

如何划分微服务

微服务划分原则

 

划分在线OJ系统的服务

 按业务划分

按照技术划分

按照实际情况划分

最终的服务架构如下 

总结 

 十一、系统架构---技术选型

后端技术选型

前端技术选型

选择易于上手的Vue3作为前端框架。Vue3作为当前主流的前端框架,备受大型公司如华为、腾讯等的青睐。值得注意的是,Vue2 已在2023年12月31日停止维护,而Vue3在性能、自定义渲染API和组件等方面相较Vue2有了显著的提 升,能够为用户提供更优质的开发体验。因此,我们的项目决定采用最前沿的Vue3作为前端核心框架。

十二、VUE 基础简介

创建vue项目

前置条件

1.熟悉命令行

2.已经安装18.3或更高版本的Node.js

 安装并执行create-vue

npm create vue@latest 

 npm create vue@latest 

这⼀指令将会安装并执⾏create-vue,它是Vue官⽅的项⽬脚⼿架⼯具。你将会看到⼀些诸 如TypeScript和测试⽀持之类的可选功能提⽰(我们暂时都选否): 

根据提示执行这三个命令

  cd vue-project                                                                                                            npm install                                                                                                               npm run dev 

执行结果如下 

 验证成功:第三个命令执⾏成功后,我们可以看到⼀个可访问地址:http://localhost:5173/在浏 览器访问。看到如下页面则说明前端项⽬创建并启动成功。

 

用VS Code打开刚刚创建的项目

安装vue-official插件,

使.vue文件中的代码拥有高亮颜色。便于我们开发

十三、vue基础-目录结构

项目结构

核心目录

 • node_modules:⽀持项⽬运⾏的依赖文件。(后期开发中我们会引⼊多个依赖包)

 • public:存放静态资源和公共资源,如favicon.ico网站图标。

 • src:项⽬开发主要⽂件夹。

 • index.html:⼊⼝的html⽂件。

 • package.json:项⽬的描述⽂件。

 • vite.config.js:项⽬的配置⽂件。

十四、单文件组件

 模板<template>

 

 脚本<script>

<script setup>

 样式<style>

• 通常使⽤CSS或CSS预处理器编写样式。定义了组件的样式和布局,⽤于控制组件的外观和样式。

• 每个*.vue⽂件可以包含多个<style>标签

十五、 vue基础-选项式API&组合式API

API风格

 Vue的组件可以按两种不同的风格书写:选项式 API 和组合式 API。

选项式API

        选项式API是传统的组件开发⽅式。在这种⽅式下,组件的选项(如data、methods、 computed、watch等)被组织在单个对象中,每个选项负责不同的功能。这种⽅式使得组件的结构清 晰,但随着组件的复杂度增加,可能会出现代码难以管理和维护的问题。

 • data: 定义组件的响应式数据。

 • methods: 定义组件的⽅法,它们可以访问组件的data和其他methods。

 • computed: ⽤于定义依赖于其他响应式数据的计算值。

 • watch: ⽤于观察响应式数据的变化,并执⾏异步或者代价较⼤的操作。 

......

官方示例: 

<script>
export default {// data() 返回的属性将会成为响应式的状态// 并且暴露在 `this` 上data() {return {count: 0}},// methods 是一些用来更改状态与触发更新的函数// 它们可以在模板中作为事件处理器绑定methods: {increment() {this.count++}},// 生命周期钩子会在组件生命周期的各个不同阶段被调用// 例如这个函数就会在组件挂载完成后被调用mounted() {console.log(`The initial count is ${this.count}.`)}
}
</script><template><button @click="increment">Count is: {{ count }}</button>
</template>

组合式API

通过组合式API,我们可以使⽤导⼊的 API 函数来描述组件逻辑。在单⽂件组件中,组合式 API 通常会 与<script setup>搭配使⽤。这个 setup attribute是⼀个标识,告诉 Vue 需要在编译时进⾏⼀些处 理,让我们可以更简洁地使⽤组合式API。

总结:组合式API可以使我们更清晰地组织和编写组件的逻辑,这种⻛格使得代码更加易于阅读、测试 和维护,尤其适⽤于⼤型、复杂的Vue应⽤程序。

官⽅⽰例:

<script setup>
import { ref, onMounted } from 'vue'// 响应式状态
const count = ref(0)// 用来修改状态、触发更新的函数
function increment() {count.value++
}// 生命周期钩子
onMounted(() => {console.log(`The initial count is ${count.value}.`)
})
</script><template><button @click="increment">Count is: {{ count }}</button>
</template>

<script setup> 

 

如何选择?

两种 API ⻛格都能够覆盖⼤部分的应⽤场景。它们只是同⼀个底层系统所提供的两套不同的接⼝。实际上,选项式 API 是在组合式 API 的基础上实现的!关于 Vue 的基础概念和知识在它们之间都 是通⽤的。

选项式api结构清晰,初学者友好。组合式api更加灵活、⾃由、⾼效、更好的复⽤。

综上: 我们的项⽬中将选择使⽤组合式API。

 

相关文章:

挑战项目 --- 微服务编程测评系统(在线OJ系统)

一、前言 1.为什么要做项目 面试官要问项目&#xff0c;考察你到底是理论派还是实战派&#xff1f; 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题&#xff0c;或扩展需求…...

堆(Heap)的原理与C++实现

1. 什么是堆&#xff1f; 堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;通常用于实现优先队列。堆可以分为两种类型&#xff1a; 最大堆&#xff08;Max Heap&#xff09;&#xff1a;每个节点的值都大于或等于其子节点的值。最小堆&#xff08;Min H…...

(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例

&#xff08;1&#xff09; 先介绍下后面的代码里要用到的基础函数&#xff1a; 以及&#xff1a; &#xff08;2&#xff09; 接着给出现代版的 读写 socket 参数的系统函数 &#xff1a; 以及&#xff1a; &#xff08;3&#xff09; 给出 一言的 范例代码&#xff0c;获取…...

linux 进程补充

环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪 里&#xff0c;但是照样可以链接成功&#…...

通过docker安装部署deepseek以及python实现

前提条件 Docker 安装:确保你的系统已经安装并正确配置了 Docker。可以通过运行 docker --version 来验证 Docker 是否安装成功。 网络环境:保证设备有稳定的网络连接,以便拉取 Docker 镜像和模型文件。 步骤一:拉取 Ollama Docker 镜像 Ollama 可以帮助我们更方便地管理…...

vim-plug的自动安装与基本使用介绍

vim-plug介绍 Vim-plug 是一个轻量级的 Vim 插件管理器&#xff0c;它允许你轻松地管理 Vim 插件的安装、更新和卸载。相较于其他插件管理器&#xff0c;vim-plug 的优点是简单易用&#xff0c;速度较快&#xff0c;而且支持懒加载插件&#xff08;即按需加载&#xff09; 自动…...

Python 自学秘籍:开启编程之旅,人生苦短,我用python。

从2009年&#xff0c;用了几次python后就放弃了&#xff0c;一直用的php&#xff0c;现在人工智能时代&#xff0c;完全没php什么事情。必须搞python了&#xff0c;虽然已经40多岁了。死磕python了。让滔滔陪着你一起学python 吧。 开启新世界 在当今人工智能化的时代&#xff…...

DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)

一、引言 1.1 研究背景与意义 在医疗领域的改革进程中&#xff0c; DRG/DIP 2.0 时代&#xff0c;医院成本管理的重要性愈发凸显。新的医保支付方式下&#xff0c;医院的收入不再单纯取决于医疗服务项目的数量&#xff0c;而是与病种的分组、费用标准以及成本控制紧密相关。这…...

swift 专题三 swift 规范一

一、Swift编码命名规范 对类、结构体、枚举和协议等类型的命名应该采用大驼峰法&#xff0c;如 SplitViewController。 文件名采用大驼峰法&#xff0c;如BlockOperation.swift。 对于扩展文件&#xff0c;有时扩展定义在一个独立的文件中&#xff0c;用“原始类型名 扩展名…...

Vue的状态管理:用响应式 API 做简单状态管理、状态管理库(Pinia )

文章目录 引言单向数据流多个组件共享一个共同的状态I 用响应式 API 做简单状态管理使用 reactive()创建一个在多个组件实例间共享的响应式对象使用ref()返回一个全局状态II 状态管理库Pinia枚举状态管理引言 单向数据流 每一个 Vue 组件实例都在“管理”它自己的响应式状态了…...

排序算法--希尔排序

希尔排序是插入排序的改进版本&#xff0c;适合中等规模数据排序&#xff0c;性能优于简单插入排序。 // 希尔排序函数 void shellSort(int arr[], int n) {// 初始间隔&#xff08;gap&#xff09;为数组长度的一半&#xff0c;逐步缩小for (int gap n / 2; gap > 0; gap …...

HAL库 Systick定时器 基于STM32F103EZT6 野火霸道,可做参考

目录 1.时钟选择(这里选择高速外部时钟) ​编辑 2.调试模式和时基源选择: 3.LED的GPIO配置 这里用板子的红灯PB5 4.工程配置 5.1ms的systick中断实现led闪烁 源码: 6.修改systick的中断频率 7.systick定时原理 SysTick 定时器的工作原理 中断触发机制 HAL_SYSTICK_Co…...

ESXI虚拟机中部署docker会降低服务器性能

在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析 在 ESXi 虚拟机中运行 Docker 容器时&#xff0c;性能影响主要来自以下几个方面&#xff1a; 虚拟化开销&#xff1a;ESXi 虚拟化层和 Docker 容器化层的叠加。资源竞争&#xff1a;虚拟机与容器之间对 CPU、内存、…...

前端 | JavaScript中的reduce方法

1. 什么是reduce reduce 方法是 JavaScript 中数组的重要方法之一&#xff0c;用于对数组中的元素进行累积计算。它接收一个回调函数作为参数&#xff0c;并返回一个最终计算结果。reduce 在许多场景下都非常有用&#xff0c;比如求和、数组扁平化、对象计数、数据转换等。 2…...

基于联合概率密度与深度优化的反潜航空深弹命中概率模型研究摘要

前言:项目题材来自数学建模2024年的D题,文章内容为笔者和队友原创,提供一个思路。 摘要 随着现代军事技术的发展,深水炸弹在特定场景下的反潜作战效能日益凸显,如何最大化的发挥深弹威力也成为重要研究课题。本文针对评估深弹投掷落点对命中潜艇概率的影响进行分析,综合利…...

将OneDrive上的文件定期备份到移动硬盘

背景&#xff1a; 我在oneDrive上存了很多文件&#xff0c;分布在多个文件夹中&#xff0c;也有套了好几层文件夹的情况。我希望每隔一段时间&#xff0c;将oneDrive上的所有文件向移动硬盘上拷贝一份&#xff0c;但是我只想将距离上一次向移动硬盘拷贝的文件相比&#xff0c;发…...

01vue3实战-----前言

01vue3实战-----前言 1.大前端时代2.技术栈3.项目大致展示4.创建Vue项目4.1Vue CLI4.2create-vue 5.参考资料 1.大前端时代 前端移动端iOS/android开发桌面端 window/mac 常用的electron框架来开发其它平台:穿戴设备、车载系统(智能汽车)、VR、AR…web3方向 2.技术栈 开发工…...

SQL 秒变三线表 sql导出三线表

&#x1f3af;SQL 秒变三线表&#xff0c;校园小助手超神啦 宝子们&#xff0c;搞数据分析、写论文的时候&#xff0c;从 SQL 里导出数据做成三线表是不是特别让人头疼&#x1f629; 手动调整格式&#xff0c;不仅繁琐&#xff0c;还容易出错&#xff0c;分分钟把人逼疯&#…...

C_位运算符及其在单片机寄存器的操作

C语言的位运算符用于直接操作二进制位&#xff0c;本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符&#xff08;&&#xff09; 功能&#xff1a;按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…...

Rust错误处理:从灭火器到核按钮的生存指南

开篇&#xff1a;错误处理的生存哲学 在Rust的平行宇宙里&#xff0c;错误分为两种人格&#xff1a; panic! → 核按钮&#x1f4a3;&#xff08;不可恢复&#xff0c;全系统警报&#xff09;Result → 灭火器&#x1f9ef;&#xff08;可控制&#xff0c;局部处理&#xff0…...

YK人工智能(六)——万字长文学会基于Torch模型网络可视化

1. 可视化网络结构 随着深度神经网络做的的发展&#xff0c;网络的结构越来越复杂&#xff0c;我们也很难确定每一层的输入结构&#xff0c;输出结构以及参数等信息&#xff0c;这样导致我们很难在短时间内完成debug。因此掌握一个可以用来可视化网络结构的工具是十分有必要的…...

对象的实例化、内存布局与访问定位

一、创建对象的方式 二、创建对象的步骤: 一、判断对象对应的类是否加载、链接、初始化: 虚拟机遇到一条new指令&#xff0c;首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已经被加载、解析和初始化…...

Java面试题2025-并发编程进阶(线程池和并发容器类)

线程池 一、什么是线程池 为什么要使用线程池 在开发中&#xff0c;为了提升效率的操作&#xff0c;我们需要将一些业务采用多线程的方式去执行。 比如有一个比较大的任务&#xff0c;可以将任务分成几块&#xff0c;分别交给几个线程去执行&#xff0c;最终做一个汇总就可…...

Vue Router 客户端路由解决方案:axios 响应拦截(跳转到登录页面)

文章目录 引言客户端路由 vs. 服务端路由简单的路由案例术语I Vue Router 提供的组件RouterLinkRouterViewII 创建路由器实例调用 createRouter() 函数创建路由选项III 注册路由器插件通过调用 use() 来完成注册路由器插件的职责对于组合式 API,Vue Router 给我们提供了一些组…...

Redis的通用命令

⭐️前言⭐️ 本文主要介绍Redis的通用命令 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主日常练习代码均已上传GitHub &#x1f4cd;内容导…...

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…...

SpringBoot使用 easy-captcha 实现验证码登录功能

文章目录 一、 环境准备1. 解决思路2. 接口文档3. redis下载 二、后端实现1. 引入依赖2. 添加配置3. 后端代码实现4. 前端代码实现 在前后端分离的项目中&#xff0c;登录功能是必不可少的。为了提高安全性&#xff0c;通常会加入验证码验证。 easy-captcha 是一个简单易用的验…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者&#xff1a;闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式&#xff08;Simple Queue&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布/订阅模式&#xff08;Publish/Subscribe&#xff…...

Unity中的虚拟相机(Cinemachine)

Unity Cinemachine详解 什么是Cinemachine Cinemachine是Unity官方推出的智能相机系统&#xff0c;它提供了一套完整的工具来创建复杂的相机运动和行为&#xff0c;而无需编写大量代码。它能够大大简化相机管理&#xff0c;提高游戏开发效率。 Cinemachine的主要组件 1. Vi…...

响应式编程_04Spring 5 中的响应式编程技术栈_WebFlux 和 Spring Data Reactive

文章目录 概述响应式Web框架Spring WebFlux响应式数据访问Spring Data Reactive 概述 https://spring.io/reactive 2017 年&#xff0c;Spring 发布了新版本 Spring 5&#xff0c; Spring 5 引入了很多核心功能&#xff0c;这其中重要的就是全面拥抱了响应式编程的设计思想和实…...

网络设备的安全加固

设备的安全始终是信息网络安全的一个重要方面&#xff0c;攻击者往往通过控制网络中设备来破坏系统和信息&#xff0c;或扩大已有的破坏。网络设备包括主机&#xff08;服务器、工作站、PC&#xff09;和网络设施&#xff08;交换机、路由器等&#xff09;。 一般说来&#xff…...

OpenCV:特征检测总结

目录 一、什么是特征检测&#xff1f; 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT&#xff08;尺度不变特征变换&#xff09; 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…...

Java高频面试之SE-17

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; Java缓冲区溢出&#xff0c;如何解决&#xff1f; 在 Java 中&#xff0c;缓冲区溢出 (Buffer Overflow) 虽然不是像 C/C 中那样直接可见…...

移动机器人规划控制入门与实践:基于navigation2 学习笔记(一)

课程实践: (1)手写A*代码并且调试,总结优缺点 (2)基于Gazebo仿真,完成给定机器人在给定地图中的导航调试 (3)使用Groot设计自己的导航行为树 掌握一门技术 规划控制概述 常见移动机器人...

每日一题洛谷P5721 【深基4.例6】数字直角三角形c++

#include<iostream> using namespace std; int main() {int n;cin >> n;int t 1;for (int i 0; i < n; i) {for (int j 0; j < n - i; j) {printf("%02d",t);t;}cout << endl;}return 0; }...

RTMP 和 WebRTC

WebRTC(Web Real-Time Communication)和 RTMP(Real-Time Messaging Protocol)是两种完全不同的流媒体协议,设计目标、协议栈、交互流程和应用场景均有显著差异。以下是两者的详细对比,涵盖协议字段、交互流程及核心设计思想。 一、协议栈与设计目标对比 特性RTMPWebRTC传…...

数据库技术基础

1 数据库系统概述 1.1 数据库的4个概念 &#xff08;1&#xff09;数据&#xff08;信息&#xff09; 数据&#xff1a;指已记录或可获取的事实&#xff0c;是数据库存储的最小单元。除文本、数字外&#xff0c;还有图形、图像、声音等。 数据由于能为用户利用才被记录和保…...

如何获取sql数据中时间的月份、年份(类型为date)

可用自带的函数month来实现 如&#xff1a; 创建表及插入数据&#xff1a; create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份&#xff1a; select MONTH(begindate)…...

每日Attention学习18——Grouped Attention Gate

模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…...

分析用户请求K8S里ingress-nginx提供的ingress流量路径

前言 本文是个人的小小见解&#xff0c;欢迎大佬指出我文章的问题&#xff0c;一起讨论进步~ 我个人的疑问点 进入的流量是如何自动判断进入iptables的四表&#xff1f;k8s nodeport模式的原理&#xff1f; 一 本机环境介绍 节点名节点IPK8S版本CNI插件Master192.168.44.1…...

TensorFlow是个啥玩意?

TensorFlow是一个开源的机器学习框架&#xff0c;由Google开发。它可以帮助开发者构建和训练各种机器学习模型&#xff0c;包括神经网络和深度学习模型。TensorFlow的设计理念是使用数据流图来表示计算过程&#xff0c;其中节点表示数学运算&#xff0c;边表示数据流动。 Tens…...

初识C语言、C语言的学习方向总述与入门

目录 1. 什么是C语言&#xff1f; 2. 第一个C语言程序 3. 数据类型 4. 变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的作用域和生命周期 4.5 常量 5. 字符串转义字符注释 5.1 字符串 5.2 转义字符 6. 注释 7. 选择语句 8. 循环语句 …...

零基础学习书生.浦语大模型-入门岛

第一关&#xff1a;Linux基础知识 任务一&#xff1a;Cursor连接SSH运行代码 使用Remote - SSH插件即可 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno 注&#xff1a;46561&a…...

【R语言】获取数据

R语言自带2种数据存储格式&#xff1a;*.RData和*.rds。 这两者的区别是&#xff1a;前者既可以存储数据&#xff0c;也可以存储当前工作空间中的所有变量&#xff0c;属于非标准化存储&#xff1b;后者仅用于存储单个R对象&#xff0c;且存储时可以创建标准化档案&#xff0c…...

MongoDB学习笔记-解析jsonCommand内容

如果需要屏蔽其他项目对MongoDB的直接访问操作&#xff0c;统一由一个入口访问操作MongoDB&#xff0c;可以考虑直接传入jsonCommand语句解析执行。 相关依赖包 <!-- SpringBootDataMongodb依赖包 --> <dependency><groupId>org.springframework.boot</…...

国产编辑器EverEdit - 工具栏说明

1 工具栏 1.1 应用场景 当用户想显示/隐藏界面的标签栏、工具栏、状态栏、主菜单等界面元素时&#xff0c;可以通过EverEdit的菜单选项进行设置。 1.2 使用方法 选择菜单查看 -> 工具栏&#xff0c;在工具栏的子菜单中选择勾选或去掉勾选对应的选项。 标签栏&#xff1…...

linux 函数 sem_init () 信号量、sem_destroy()

&#xff08;1&#xff09; &#xff08;2&#xff09; 代码举例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...

制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模

目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...

密码学的数学基础1-素数和RSA加密

数学公式推导是密码学的基础, 故开一个新的课题 – 密码学的数学基础系列 素数 / 质数 质数又称素数。 一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则称为合数&#xff08;规定1既不是质数也不是合数&#xff0…...

C++ Primer 算术运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...