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

ChatGPT和Copilot协助Vue火速搭建博客网站

AI 对于开发人员的核心价值

网上会看到很多 AI 的应用介绍或者教程

  • 使用 AI 聊天,咨询问题 —— 代替搜索引擎
  • 使用 AI 写各种的电商文案(淘宝、小红书)
  • 使用 AI 做一个聊天机器人 —— 这最多算猎奇、业余爱好、或者搞个套壳产品来收费

以上这些都不是。AI 对于开发人员的最大价值就是 —— 开发提效

  • 使用 AI 快速生成代码
  • 使用 AI 快速解决 bug
  • 使用 AI 让你一个人顶三个人的工作效率 —— 这才是老板所期望的,同时也是你的竞争力

所以,未来可能让你失业的不是 AI ,而是你身边懂 AI 的同事

直接看成品:

开干:

项目需求和设计

需求:

ChatGPT 提问:

你是互联网行业一名资深的产品经理,现在主导设计一个博客产品的需求,这个产品是面向编程技术人员的,例如简书、博客园、掘金这种网站。要求产品以博客功能为主,不要有其他无关功能。你来写这个产品的需求文档,先列出需求大纲。

ChatGPT 回复了详细的需求大纲,非常专业、全面。

 

技术选型

自己定,没必要交给 ChatGPT

  • 使用 Vue3 Pinia Vue-router
  • 使用 ElementPlus

创建 Vue3 开发环境,参考官网 https://cn.vuejs.org/guide/quick-start.html

  • 使用 Vue Router
  • 使用 Pinia

并安装 ElementPlus https://element-plus.gitee.io/zh-CN/

去掉无用代码

  • 对于 ./assets/main.css ,只保留第一行 base.css ,其他全部注释掉
  • 整理 App.vue AbountView.vue HomeView.vue

为 ChatGPT 切换角色

基于之前的需求和页面,继续提问

你现在是一名资深前端工程师,精通 vue3 技术栈,接下里要根据上面的需求来开发这个项目。 以上需求你能理解吗?

路由设计

提问:

根据以上需求,需要拆分几个页面?以及如何配置 vue3 路由? 需要你写出: 1. 每个页面的名称、介绍、文件目录; 2. 路由配置代码;

PS:路由配置可以不用 import() 语法,直接要求 ChatGPT 重写即可

借助 Copilot 快速写代码

根据 ChatGPT 的分析,写代码

(可以到*🐟等渠道获得  挺便宜的)

其中会用到 Copilot ,写起来很快

API 设计

提问

根据你对以上需求的理解,这个项目需要服务端提供哪些 API 接口? 请写出:1. 接口地址;2.接口描述;3.请求数据格式的示例;4.返回数据格式的示例;

检查这个 API 设计,它可能会遗漏一些,可以继续提问:

你还有一些需求没有考虑到,例如博客分类、搜索博客、删除博客、点赞、收藏、评论等。 请再详细分析上面的需求,重新给出一个 API 列表

PS:设计中尽量保证 API 完善,其他再有遗漏的,可以开发中继续补充

写 API 相关代码

先安装 axios npm i axios --save

提问:

以上接口设计,我想用 axios 进行封装,要求拆分为 blog comment user 三个模块,应该创建哪些 js 文件? 先列出文件名称、目录和说明

ChatGPT 列出了四个文件:blogAPI commentAPI userAPI 和 axiosInstance

继续提问:

根据你的设计,先写出 axiosInstance.js 的代码内容。 请求时要带上 token

PS:重写 response 拦截器,可用 Copilot 生成代码

继续提问:

再根据上面的 API 设计,写出 blogApi.js 的代码内容 (它可能考虑不那么全面,可继续追问:你没有考到了搜索、点赞、收藏。请重新写这份代码。)

根据以上方式,继续提问其他 API 的代码

可以看到效果还行:

路由模板

分析

  • App.vue
  • 顶部栏,包含 Logo 导航 搜索 登录
  • 网页主体,包含 <RouterView />

直接写 顶部栏 代码

ChatGPT 提问:

请用 vue3 和 ElementPlus 写一个顶部导航栏,宽度 100% 。 导航栏分左右两部分。左侧是 logo 和导航菜单。右侧是搜索组件和登录菜单。 导航菜单有三个:前端 java 和 python,使用 vue-router 实现链接。每个菜单前面加上合适的 icon

把代码贴过来测试,效果并不好

  • ChatGPT 按照你的文字要求写出了代码
  • 但这明显不是我们预期的 UI 效果
  • 这不是 ChatGPT 的错误,而是我们无法准确表达自己心理的想法 (人类的语言是抽象的)

所以,遇到复杂的功能、设计,要去拆分任务,一步一步去执行 —— 这和你带团队、带项目是一样的

换一种方式

ChatGPT 提问:

请用 vue3 和 ElementPlus 写一个组件,组件包括两个部分: 第一,顶部导航栏。宽度 100% 。左右结构,左侧是 log ,右侧是“登录”链接。 第二,主体部分。宽度 1000px ,左右居中。主体部分要包含 <RouterView /> 组件。

直接手写

  • 使用 <router-link> 链接到首页
  • 设置样式 text-decoration: none;

修改网页标题

  • 在 index.html 写默认标题 TechBlog
  • 自定义修改标题,可想 ChatGPT 提问,代码参考 hooks/usePageTitle.js

使用 vue3 composition API 写一个 hook ,可以在多个组件中使用,用来修改网页标题

顶部栏

  • 导航
  • 搜索
  • 登录/用户信息

导航组件

ChatGPT 提问

使用 vue3 和 ElementPlus 写一个菜单组件,包含:前端、Java、Python、小程序 要求如下: 1. 每个菜单点击时,都跳转到首页,并加一个 query `?category=xxx` 2. activeMenu 要根据 url query `category` 参数实时变化,默认值是空 3. 使用 vue3 setup script 语法

新建组件 components/NavMenu.vue ,把代码贴上。并增加:

  • menu 样式增加 margin-left: 20px
  • 导航栏,加一个 border-bottom
  • Menu 向下移动 1px ,可向 ChatGPT 提问:

我想把一个 div 的位置仅往下移动 1px (其他方向不变),同时不影响父元素的位置。使用 css 怎么写?

代码

position: relative; margin-bottom: -1px;

最后,把 <NavMenu/> 组件引用到 App.vue

搜索框组件

ChatGPT 提问

使用 vue3 和 ElementPlus 写一个 input search 组件。要求: 1. 搜索时跳转到当前 path ,并加一个 query `?keyword=xxx` ,且保留现有的 url query 2. 实时监听 url query `keyword` 并讲内容显示到 input 中 3. 使用 vue3 setup script 语法

新建组件 components/SearchInput.vue ,把代码贴上。并增加

  • input 加一个后缀按钮,点击触发 handleSearch
  • input 回车事件改为 @keyup.enter

最后,把 <SearchInput/> 组件引用到 App.vue

登录/用户信息

新建组件 components/UserInfo.vue

先写一个“登录”链接,后面再补充用户信息

注册页面

页面

ChatGPT 提问

使用 vue3 和 ElementPlus 写一个注册页面,包含一个标题“注册新用户”和一个表单。要求: 1. 页面内容水平垂直居中 2. 注册表单包含:用户名(必填)、密码(必填)、确认密码、昵称、注册按钮 3. 注册表单要根据 item 数据类型设置校验规则 4. 使用 vue3 setup script 语法

把代码拷贝到 views/UserRegisterView.vue 做如下调整:

  • 调整样式: 1.标题加 margin-bottom; 2.调整 form 宽度; 3.高度太大,有滚动条,改成 80vh
  • 添加登录链接

登录页

关于 JWT

(可画图解释)

  • 登录,传入用户名和密码,服务端校验
  • 校验成功返回 token 加密了用户信息
  • 客户端下次请求带着 token 表明用户信息

页面

ChatGPT 提问

使用 vue3 和 ElementPlus 写一个登录页面,包含一个标题“用户登录”和一个表单。要求: 1. 页面内容水平垂直居中。标题和表单之前有 20px 间隔 2. 登录表单包含:用户名(必填)、密码(必填)、登录按钮。登录按钮后加一个链接“新用户请注册”,点击跳转到注册页 3. 登录表单要根据 item 数据类型设置校验规则 4. 使用 vue3 setup script 语法

遇到问题再继续修改,例如 以上代码有两个问题:1. form 的 label 宽度没有固定;2.页面内容没有垂直居中;

把代码拷贝到 views/UserLoginView.vue 并做如下调整:

  • 高度太大,有滚动条,改成 80vh
  • form 加一个属性 label-width="100px"

获取用户信息

  • 在 App.vue 中请求用户信息,并存储到 Pinia
  • 在登录、注册页获取用户信息,并判断跳转
  • 在 components/UserInfo.vue 获取用户信息

介绍 Pinia

简介 | Pinia

  • Vue3 状态管理库,vue-cli 默认推荐
  • 比 Vuex 更加简洁,如去掉了 mutation module 等
  • 能更好的使用 Vue3 Composition API

使用 Copilot 写 Pinia 代码

参考当前的 stores/counter.js 来写即可

首页请求用户信息

先写 mock-server

再写代码,参考 App.vue

登录、注册页

使用 watchEffect 监测变化,并跳转 —— 可抽离单独的 Hook useNavToLogin.js

【注意】这里没有使用导航守卫,有问题 (代码参考 router/index.js

  • 使用 <router-link> 跳转,没问题
  • 但直接访问 /login ,无法第一时间获取到 pinia store

显示用户信息

修改 components/UserInfo.vue 代码

ChatGPT 提问:

使用 vue3 和 ElementPlus 写一个下拉菜单,标题是 `nickname` 下拉菜单有两个: 1. 创建博客,点击跳转到 `/create-edit-blog` 2. 我的博客,点击跳转到 `/my-blogs` 3. 注销,点击执行一个函数

ChatGPT 写的不好,再用 Copilot 提问 使用 element-plus 实现一个下拉菜单 ,也写的不好

最后不得已从官网拷贝 Dropdown 下拉菜单 | Element Plus

另外,ElementPlus 的 icon 需要单独安装和注册,参考 main.js

完善代码(结合 Copilot)

  • 使用 v-if v-else 判断显示内容
  • 跳转到“我的博客”页面
  • 注销,清空 store 内容,清空 token

首页

梳理需求

  • 博客列表:分类,搜索,分页
  • 单个博客:显示博客信息,点击进入详情页

mock

获取博客列表的接口 /api/blogs

ChatGPT 提问

生成 10 条博客数据,JSON 格式,用于 mock 服务。 编程技术类博客,如前端、Java、Python、小程序等,内容要贴近真实的技术博客内容。 每条博客内容如下: - id (唯一,不可重复) - 标题 - 简介(50-100字) - 分类(随机选择:前端, java, python, 小程序)要和标题、简介对应好 - 作者 - 点赞数量 - 收藏数量 - 评论数量 - 创建时间 - 更新时间

PS:ChatGPT 可能会使用 JS 函数生成,直接停止,并要求 不要使用 JS 函数,直接生成静态 JSON 数据格式

考虑到分页,返回的 data 应该改为 { list: [], total: 100 }

最后,分页后 id 也不能重复,所以使用 MockJS 来随机生成 id ,使用 Random.id()

渲染博客列表

需要考虑的条件:

  • 分类 category
  • 搜索 keyword
  • 分页 page pageSize

第一,需要改造一下 blogApi.js 中的 getBlogList ,增加参数

第二,在首页 HomeView.vue 中请求数据。使用 Copilot 生成代码。

第三,渲染博客列表,使用 Copilot 生成代码 <!-- 遍历显示 blogList 的内容,每个 item 使用 div -->

博客卡片组件

ChatGPT 提问

用 vue3 和 ElementPlus 写一个博客卡片组件(BlogCard.vue),用于在博客列表中显示单个博客信息 该组件接受一个属性 blog ,是一个 js 对象 该组件的 UI 分为上中下三层结构: - 上层显示:博客作者(blog.author)并在前面加 icon ,分类(blog.category),时间(blog.updatedAt) - 中层显示:博客标题(blog.title),博客简介(blog.summary),且点击标题跳转到 `/blog/:id` - 下层显示:点赞数量(blog.likes),收藏数量(blog.favorites)、评论数量(blog.comments)。每个使用合适的 icon 来表示 还要求: - 当鼠标 hover 卡片,设置浅灰色背景 - 点击卡片跳转到 `/blog/:id` - CSS 样式要美观,可参考当前博客网站的样式 - 使用 vue3 setup script 语法

新建组件 components/BlogCard.vue 并粘贴相应代码

样式有点问题,继续调整一下:

你给出的代码非常好。不过有几个样式的地方需要优化: 1. 内容和边框的间距太大了,再小一些 2. 上层显示的三个信息,全部靠左显示,中间要有间隙。 3. 上层显示的三个信息,“时间”和“分类”使用灰色

代码进行如下调整

  • 卡片之间增加间隙,在 HomeView.vue 中增加 margin-bottom
  • 修改 icon 未显示的问题(代码生成的是老旧写法)

处理时间格式,新建 utils/date.js ,然后用 Copilot 快速生成

分页

ChatGPT 提问

使用 vue3 和 ElementPlus 写一个分页组件,水平居中显示 可用的变量有 total page pageSize 使用 vue3 setup script

然后用 Copilot 快速生成 handleCurrentChange 函数代码

博客详情页

梳理需求

  • 展示博客信息
  • 点赞、收藏
  • 评论 (单独讲)

mock

获取博客详情接口 /api/blogs/${id}

用 ChatGPT 生成博客内容

用 JSON 格式写一个真实的编程技术博客,博客包括: - id - 标题 - 内容,要求:使用 markdown 格式,包含标题、文本、列表、代码块,1000 字左右 - 作者 - 分类(随机选择:前端, java, python, 小程序)要和标题、简介对应好 - 点赞数量 - 是否点赞 - 收藏数量 - 是否收藏 - 评论数量 - 创建时间

然后借助 Copilot 在 mock-server 中完善接口

其他接口:

  • 点赞
  • 取消点赞
  • 收藏
  • 取消收藏

展示博客内容

根据 id 获取博客数据 —— 使用 Copilot 可快速完成

使用 useTitle 修改博客标题

显示博客信息:标题,作者,时间,内容

  • 使用 Copilot 生成 <!-- 显示 title author createdAt content ,中间留 margin -->
  • 优化 css 样式
  • 修改时间格式

转换 markdown

使用 ChatGPT 提问

用 js 把 markdown 格式转换为 html 格式?有没有第三方库可以使用?

  • 选择 markdown-it
  • 并需要传入字符串格式 toRaw(blogInfo.content)
  • 优化代码块样式,使用 Copilot /* 优化 pre code 样式 */

点赞和收藏

使用 Copilot 生成模板 <!-- 生成一个 div ,用于点赞和收藏,水平居中显示 -->

优化代码

  • icon
  • 显示数量

根据 isLiked 和 isFavorited 判断,显示按钮 active 状态。手写即可

添加点击事件,执行 点赞/取消点赞,收藏/取消收藏。可使用 Copilot 生成代码

  • // 点赞或取消点赞
  • // 收藏或取消收藏

评论

梳理需求

  • 评论列表展示
  • 删除自己的评论
  • 发表评论

mock

评论列表接口 (不考虑分页)

ChatGPT 提问:

使用 JSON 格式,生成一个编程技术博客的评论列表,一共 5 条。评论内容要真实。 每条评论包含: - id - 评论内容 - 创建时间 - 作者用户名 - 作者昵称

然后配合 Copilot 编写 mock 代码

其他接口

使用 Copilot 生成

  • 删除评论
  • 发表评论

评论列表

新建一个 views/subviews/CommentView.vue ,并引入到 views/BlogDetailView.vue

获取博客列表数据,直接使用 Copilot 生成

显示评论列表,直接用 Copilot 生成 <!-- 评论列表 -->
CSS 也可自动生成,且样式很好看

最后,再加用户名前面加一个 icon

删除自己的评论

前提:该一下 mock 数据,让一条数据是自己的

获取当年用户名:从 pinia store 中引入

删除评论 —— 直接使用 Copilot 生成

  • 显示按钮(和样式)<!-- 如果 comment.username 等于 userInfo.username ,则显示一个“删除”按钮,点击执行删除 --> CSS 也可以生成
  • 删除的方法 // 删除一条评论

发表评论

使用 Copilot 生成

  • UI <!-- 发表评论。左右结构,一个输入框,一个按钮 --> (以及 CSS)
  • 方法 // 发表评论

我的博客列表

需求分析

  • 我的博客列表
  • 删除一条博客
  • 修改一条博客
  • 创建博客(后面讲)

通用功能

  • 修改标题
  • 未登录,跳转到登录页(参考登录页) —— 可使用 Copilot

PS:在此生成“创建博客”按钮

mock

mock 增加:删除博客。使用 Copilot

在 blogApi.js 获取博客列表,加一个 opt my 默认 false
参数传给服务端,让服务端处理

博客列表

获取博客列表数据,使用 Copilot 生成,参考代码的注释
【注意】加上 my: true 表示“我的博客”

显示列表和操作

  • Copilot 生成模板 <!--用 table 显示博客列表,包括 title category likes favorites comments createdAt,再加两个操作按钮“编辑” “删除”-->
  • Copilot 生成编辑代码 // 跳转到编辑页
  • Copilot 生成删除代码 // 删除博客

分页

分页:可以把“首页”分页,单独抽离一个组件

需要改动

  • 接受两个属性 pageSize total
  • 去掉 path: '/' ,不要只考虑首页

创建按钮

使用 Copilot 生成代码,在 table 上面写 <!-- 左右结构,左侧标题“我的博客”,右侧“创建”按钮 -->

创建编辑博客

需求梳理

  • 编辑博客内容
  • 新建博客

mock

使用 Copilot 生成

  • 创建博客 post
  • 更新博客 put

前提

如果用户未登录,则跳转到登录页。参考“我的博客”页 —— 可抽离单独的 Hook useNavToLogin.js

判断 创建/更新

使用 Coplit 根据注释生成

第一,// 获取 url params id

第二,根据 id 获取博客数据。先引入 api ,再写 // onMounted 根据 id 获取博客详情页,id 为空则不获取

第三,修改标题。先引入 hook ,再写 // 定义标题,有 id 则为编辑,否则为创建 和 // 设置网页标题

渲染 UI

第一,标题栏(和“提交”按钮),ChatGPT 生成

使用 vue3 和 ElementPlus 写一个 div ,左右结构 左侧是 `title` ,右侧是“提交”按钮,点击执行一个事件 使用 vue3 setup script 语法

第二,博客标题和类型,ChatGPT 生成

使用 vue3 和 ElementPlus 写一个 div ,左右结构 左侧:一个文字“标题”,一个 input ,v-model 对应 `blogDetails.title` 右侧:一个文字“类型”(可选:前端、Java、Python、小程序),v-model 对应 `blogDetails.category` 中间要有间隔 使用 vue3 setup script 语法

第三,内容 textarea ,回车使用 Copilot 直接生成

提交数据

第一,confirm 确认是否提交

  • Copilot 一开始给出的代码不好
  • 参考“我的博客”,引入 ElMessageBox 以后(并修改为 async 函数),Copilot 给出的答案就好了

第二,验证 title content category 是否为空 —— 使用 Copilot 即可

第三,(先引入 api)然后使用 Copilot 生成代码 // 如果没有 id ,则创建博客。没有 id 则更新博客

项目开发 - 总结

目标回顾

使用 ChatGPT 和 Copilot 快速生成代码,完成项目开发

内容回顾

  • 路由模板和顶部栏
  • 登录和注册,获取用户信息
  • 首页(博客列表)
  • 博客详情页,评论
  • 我的博客,新建,编辑

注意事项

  • ChatGPT 和 Copolit 配合使用,用于不同场景
  • 注意 AI 工具的提问技巧,能更高效、准确的生成代码
  • AI 工具生成的代码可能还需要自己验证和调试

相关文章:

ChatGPT和Copilot协助Vue火速搭建博客网站

AI 对于开发人员的核心价值 网上会看到很多 AI 的应用介绍或者教程 使用 AI 聊天&#xff0c;咨询问题 —— 代替搜索引擎使用 AI 写各种的电商文案&#xff08;淘宝、小红书&#xff09;使用 AI 做一个聊天机器人 —— 这最多算猎奇、业余爱好、或者搞个套壳产品来收费 以上…...

javaEE -8(9000字详解网络编程)

一&#xff1a;网络编程基础 1.1 网络资源 所谓的网络资源&#xff0c;其实就是在网络中可以获取的各种数据资源&#xff0c;而所有的网络资源&#xff0c;都是通过网络编程来进行数据传输的。 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff…...

FPGA从入门到精通(二十)SignalTapII

这一篇将介绍SignalTapII。 之前的工程我们是做仿真&#xff0c;设置激励&#xff0c;观察输出波形去判断代码没有问题&#xff0c;但事实上我们真实的需求是综合后的代码下载到FPGA芯片中能够符合预期。 其中可能出现问题的原因有&#xff1a; 1、我们是写testbench设置激励…...

RHCE---shell 条件测试

文章目录 目录 文章目录 前言 一.条件测试 概述&#xff1a; 文件测试 整数测试&#xff1a; 总结 前言 当我们完成某一命令的编写时&#xff0c;除了观察输出的内容&#xff0c;我们又如何得知命令是否执行成功呢&#xff1f; 这里&#xff0c;我们需要用到条件测试 一.条…...

Linux下QT打开文件选择对话框时,程序报错退出

系统&#xff1a;Ubuntu QString fileName QFileDialog::getOpenFileName(this, "open", "./", "document Files (*.pdf)"); 调用该语句弹出文件对话框时&#xff0c;程序崩溃退出 错误提示&#xff1a; (Widget:5272): Gtk-WARNING **: 14…...

PyTorch中的intrusive_ptr

PyTorch中的intrusive_ptr 前言 intrusive_ptr與unique_ptr&#xff0c;shared_ptr等一樣&#xff0c;都是smart pointer。但是intrusive_ptr比較特別&#xff0c;它所指向的物件類型必須繼承自intrusive_ptr_target&#xff0c;而intrusive_ptr_target必須實現引用計數相關的…...

webrtc-stream编译报错记录

磁盘空间不足错误 错误信息 677.2 fatal: cannot create directory at blink/web_tests/external/wpt: No space left on device说明&#xff1a;这个错误是由于本地在配置docker资源时所给磁盘空间太小导致&#xff0c;直接根据镜像大小合理分配资源大小即可 pushd和popd执…...

什么是Docker CLI

Docker CLI&#xff08;命令行界面&#xff09;是一个工具&#xff0c;允许用户通过命令行或终端与Docker进行交互。Docker是一个开源平台&#xff0c;用于开发、运送和运行应用程序。Docker使用容器化技术来打包应用程序及其依赖项&#xff0c;以确保在不同环境中的一致性和隔…...

Java项目_家庭记账(简易版)

文章目录 简介代码实现 简介 该项目主要用来练习&#xff0c;Java的变量&#xff0c;运算符&#xff0c;分支结构和循环结构的知识点。 程序界面如下&#xff1a; 登记收入 登记支出 收支明细 程序退出 代码实现 package project;import java.util.Scanner;import sta…...

vscode json文件添加注释报错

在vscode中创建json文件&#xff0c;想要注释一波时&#xff0c;发现报了个错&#xff1a;Comments are not permitted in JSON. (521)&#xff0c;意思是JSON中不允许注释 以下为解决方法&#xff1a; 在vscode的右下角中找到这个&#xff0c;点击 在出现的弹窗中输入json wit…...

vue3移动端嵌入pdf的两种办法

1.使用embed嵌入 好处&#xff1a;简单&#xff0c;代码量少&#xff0c;功能齐全 缺点&#xff1a;有固定样式&#xff0c;难以修改&#xff0c;不可定制 <embed class"embedPdf" :src"pdfurl" type"application/pdf">2.使用vue-pdf-e…...

中文编程开发语言工具系统化教程初级1上线

中文编程系统化教程初级1 学习编程捷径&#xff1a;&#xff08;不论是正在学习编程的大学生&#xff0c;还是IT人士或者是编程爱好者&#xff0c;在学习编程的过程中用正确的学习方法 可以达到事半功倍的效果。对于初学者&#xff0c;可以通过下面的方法学习编程&#xff0c;…...

零售数据分析模板分享(通用型)

零售数据来源多&#xff0c;数据量大&#xff0c;导致数据的清洗整理工作量大&#xff0c;由于零售的特殊性&#xff0c;其指标计算组合更是多变&#xff0c;进一步导致了零售数据分析工作量激增&#xff0c;往往很难及时分析数据&#xff0c;发现问题。那怎么办&#xff1f;可…...

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务&#xff1a;从字面上理解即&#xff1a;微小的服务&#xff1b; 微小&#xff1a;微服务体积小&#xff0c;复杂度低&#xff0c;一个微服…...

Linux命令(104)之date

linux命令之date 1.date介绍 linux命令date用来设置和显示系统日期和时间 2.date用法 date [参数] date参数 参数说明-s修改并设置时间-d可以显示以前和未来的时间%H小时%M分钟%S秒%X等价于%H %M %S%F显示当前所有时间属性%Y完整年份%m月%d日%A星期的全称 3.实例 3.1.当前…...

微信小程序投票管理系统:打造智能、便捷的投票体验

前言 随着社交网络的兴起和移动互联网的普及&#xff0c;人们对于参与和表达意见的需求越来越强烈。在这个背景下&#xff0c;微信小程序投票管理系统应运而生。它为用户提供了一个智能、便捷的投票平台&#xff0c;使用户可以轻松创建和参与各种类型的投票活动。本文将详细介…...

【算法训练-动态规划 五】【二维DP问题】编辑距离

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【动态规划】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

Windows电脑如何录制电脑桌面?

如果你使用的电脑是Windows系统&#xff0c;那你是不是想知道如何在Windows电脑上录制电脑桌面&#xff1f; 本文以win10为例&#xff0c;好消息是&#xff0c;Windows 10电脑自带录屏工具&#xff0c;你可以直接使用此录屏工具轻松录制视频&#xff0c;而无需下载其他第三方软…...

ubuntu18.04双系统安装(2023最新最详细)以及解决重启后发现进不了Ubuntu问题

目录 一.简介 二.安装教程 1.首先确定了电脑的引导格式是UEFIGPT还是BIOSMBR 2. 使用Windows磁盘管理划分足够的磁盘空间 3. 开始安装 三.重启后发现自动进入WIN10系统了&#xff0c;进不了Ubuntu&#xff1f; 一.简介 Linux是一种自由和开放源代码的操作系统内核&#x…...

Springboot + screw 数据库快速开发文档

1、方式1 引入依赖 <dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency> /*** 文档生成 Springboot2.X screw数据库快速开发文档&#xff08;74&…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...