vue.js微商城后台管理系统

一.需要运行的效果

20240701-231456

二.代码(解析)

首先,为项目添加依赖:

 yarn add element-plus --save

 yarn vue-router@4 --save

新建一个项目包,然后命名为商品管理,在components中新建几个vue文件。

新建一个文件包命名为public,将所需要的图片素材放入其中:

(1)我的“登录”界面

登录项目的验证:

a) 用户名和密码是必须输入项目。

b) 用户名和密码的检查: 用户名: '用户名长度为 3~12 个字符'

密码: '密码长度为 6~24 个字符'

登录按钮的功能的实现:

点击【登录】按钮,跳转到后台管理系统的首页 点击【重置】按钮,清空用户名和密码的输入内容

使用导航守卫实现登录页面的功能:

访问后台主页时,需要用户处于登录状态,如果没有登录就跳转到登录页面。 用户在登录页面进行登录操作,若登录成功,则跳转到后台主页;若登录失败,则返回 登录页面。

效果:

Dl.vue代码如下:

<template>
	<el-card class="zon"><!-- el-card白框 -->
		<div class="wei">
			<h2>"微商城"后台管理系统</h2>
			<hr size="1px" color="gainsboro"/>
		</div>
		<el-form :model="form" class="yh" :rules="rules" ref="formRef">
			<el-form-item label="用户名:" prop="loginName">
				<el-input v-model="form.loginName" placeholder="请输入用户名" style="width: 500px; height: 40px;"/>
			</el-form-item>
			<el-form-item label="密&nbsp;&nbsp;&nbsp;码:" prop="pass">
				<el-input show-password v-model="form.pass" placeholder="请输入密码"  style="width: 500px; height: 40px;"/>
			</el-form-item>
			<el-form-item class="deng">
				<el-button type="primary" @click="gologin" style="width: 100px;">登录</el-button>
				<el-button type="info" class="cz" @click="reset" style="width: 100px;">重置</el-button>
			</el-form-item>
		</el-form>
	</el-card>
</template>

<script setup>
	import {
		reactive,
		ref
	} from 'vue';
	const form = reactive({
		loginName: '',
		pass: ''
	})
	const formRef = ref(null)
	import {
		useRouter
	} from 'vue-router'
	import {
		ElMessage
	} from 'element-plus';
	const router = useRouter()
	const rules = {
		loginName: [{
			required: true,
			message: '请输入用户名',
			trigger: 'blur'
		}, {
			min: 3,
			max: 12,
			message: "用户名长度为 3~12 个字符",
			trigger: "blur"
		}],
		pass: [{
			required: true,
			message: "请输入密码",
			trigger: "blur"
		}, {
			min: 2,
			max: 24,
			message: "密码长度为 6~24 个字符",
			trigger: "blur"
		}],
	}
	const gologin = () => {
		if (form.loginName === '苏冷大大' && form.pass === '123456') {
			router.push('/Dh')
			ElMessage.success('提交成功')
			return localStorage.setItem('token', 'Bearer xxx');
		} else {
			ElMessage.error('用户名或密码错误!')
			localStorage.removeItem('token')
			return false;
		}
	}
	const reset = () => {
	
		formRef.value.resetFields();
	};
</script>
<style scoped>
	.zon{
		margin-left: 260px;
		width: 900px;
		height: 400px;
	}

	.wei h2 {
		text-align: center;
		color: darkred;
		size: 28px;
	}
	.yh{
		position: absolute;
		left: 450px;
		top: 150px;
	}
	.deng{
		position: absolute;
		top: 150px;
		left: 90px;

	}

</style>

(2)我的“导航”模块

登录首页分为头部和主体区域,如图 2-1 所示

头部区域:

a) 头部区域分别是导航栏标题和用户信息

b)点击【退出】按钮,跳转到登录页面

主体区域:

a) 主体区域分别是左侧导航栏和右侧内容区域

效果:

Dh.vue代码:

<template>
	<el-menu :default-active="activeIndex" mode="vertical" class="hehe" style="width: 200px;height: 700px;">
		<el-menu-item index="1">
			<router-link to="/Dh/Sy"><el-icon ><HomeFilled/></el-icon>首页</router-link>
		</el-menu-item>
		<el-menu-item index="2">
			<router-link to="/Dh/Xz"><el-icon ><List/></el-icon>新增分类</router-link>
		</el-menu-item>
		<el-menu-item index="3">

			<router-link to="/Dh/Fl"><el-icon ><Briefcase/></el-icon>分类管理</router-link>
		</el-menu-item>
		<el-menu-item index="4">

			<router-link to="/Dh/Sp"><el-icon ><GoodsFilled/></el-icon>商品管理</router-link>
		</el-menu-item>
		<el-menu-item index="5">
			<router-link to="/Dh/Zh"><el-icon ><UserFilled/></el-icon>个人中心</router-link>
		</el-menu-item>
	</el-menu>
</template>

<script setup>
</script>

<style scoped>
	a:link,
	a:visited {
		color: #000;
		text-decoration: none;
	}


	a:hover {
		color: darkred;
	}

</style>

Al.vue代码:

<template>
	<el-container>
		<el-header class="header">
			“微商城”后台管理系统
			<el-button type="primary" @click="goback" class="goback">退出</el-button>
		</el-header>
		<el-container>
			<el-aside width="200px"><Dh/></el-aside>
			<el-main><router-view class="view"></router-view></el-main>
		</el-container>
	</el-container>

</template>

<script setup>
	import {
		useRouter
	} from 'vue-router'
	import Dh from './Dh.vue'
	const router = useRouter()
	const goback = () => {
		localStorage.removeItem('token')
		// 使用localStorage.removeItem()方法删除token这个键名所对应的值
		router.push('/Dl')

	}
</script>

<style scoped>
	  .el-header {
	    background-color: #B3C0D1;
	    color: #333;
	   
	   
	  }
	  
	  .el-aside {
	    background-color: #fff;
	    color: #333;
	   
	  }
	  
	  .el-main {
	    background-color: #E9EEF3;
	    color: #333;
	   
	  }

	.header {
		height: 60px;
		width: 1400px;
		padding-top: 20px;
		padding-left: -10px;
		font-size: 19px;
		font-weight: bold;
		font-family: "楷体";
		color: #fff;
		background-color: darkred;
	}

	.goback {
		position: absolute;
		left: 240px;
		top: 25px;
		font-family: "楷体";
	} 
</style>

 (3)我的“新增分类”模块

新增分类页面 页面中是新增分类的页面,页面中包含分类名称、分类级别(一级分类和二级分类)、 产品大类、供货方式、备注信息和及时生效等项目。页面中有提交按钮和重置按钮。

效果:

Xz.vue代码如下:
 

<template>
	<div class="di">
		<h3 style="text-align: center;">新增分类</h3>
		<el-form :model="categoryForm" :rules="rules" label-width="100px">
			<!-- :model用于保存表单的数据对象,:rules用于对表单数据对象的校验,ref指定表单对象名称 -->
			<el-form-item label="分类名称" prop="name">
				<el-input v-model="categoryForm.name"></el-input>
			</el-form-item>
			<el-form-item label="分类级别" prop="name">
				<el-select v-model="categoryForm.level" placeholder="请选择分类级别">
					<el-option label="一级分类" value="一级"></el-option><!-- el-option下拉绑定 -->
					<el-option label="二级分类" value="二级"></el-option>
				</el-select>
			</el-form-item>
			<el-form-item label="产品大类" prop="name">
				<el-checkbox>潮流服饰</el-checkbox>
				<el-checkbox>食品</el-checkbox>
				<el-checkbox>珠宝配饰</el-checkbox>
				<el-checkbox>日用百货</el-checkbox>
			</el-form-item>
			<el-form-item @click="useRouter" label="供货方式" prop="name">
				 <el-radio-group v-model="categoryForm.remark">
				<el-radio label="线上供货" ></el-radio>
				<el-radio label="线下供货"></el-radio>
				</el-radio-group>
			</el-form-item>
			<el-form-item label="备注信息" prop="prow">
				<el-input v-model="categoryForm.remark"></el-input>
			</el-form-item>
			<el-form-item label="及时生效">
				<el-switch v-model="value1" :active-icon="Check" :inactive-icon="Close"/><!-- el-switch开关 -->
			</el-form-item>
			<el-form-item>
				<el-button type="primary" @click="handleSubmit">提交</el-button>
				<el-button @click="info">重置</el-button>
			</el-form-item>
		</el-form>
	</div>
</template>

<script setup>
	import {
		ref
	} from 'vue';
	import {
		useRouter
	} from 'vue-router'
	const value1 = ref(true)
	// 使用 ref 创建响应式数据
	const categoryForm = ref({
		name: '',
		level: '',
		category: '',
		supply: '',
		remark: ''
	});
	const handleSubmit = () => {
		router.push('/Fl');
	}

	// 重置表单数据
	const info = () => {
		categoryForm.value = {
			name: '',
			level: '',
			category: '',
			supply: '',
			remark: ''
		};
	};
	const router = useRouter()
	const rules = {
		name: [{
			required: true,
			message: '请输入分类名称',
			trigger: 'blur'
		}],
		prow: [{
			required: true,
			message: '请输入备注信息',
			trigger: 'blur'
		}],
	}
</script>

<style scoped>

	
</style>

(4)我的“分类管理”页面

a) 页面采用表单布局的方式,页面中展示关于分类的相关信息,包含分类名称、分类级 别(一级分类和二级分类)、产品大类、供货方式、备注信息等项目。

b) 单击页面中的【新增分类】按钮,可以新增分类信息,跳转到新增分类页面。 

效果:

Fl.vue代码如下:

<template>
	
  <div>
	  <div class="ya">
    <el-button type="primary" @click="fenlei" class="oo">新增分类</el-button>
	</div>
	<div class="ti">
    <el-table :data="categories"  stripe border style="width: 100%">
      <el-table-column  label="分类名称"></el-table-column>
      <el-table-column  label="分类级别"></el-table-column>
      <el-table-column label="产品大类"></el-table-column>
      <el-table-column label="供货方式"></el-table-column>
      <el-table-column label="备注信息"></el-table-column>
    </el-table>
	</div>
  </div>

</template>

<script setup>
import {
		ref
	} from 'vue';
	import {
		useRouter
	} from 'vue-router';
	const router = useRouter();
const fenlei = () => {
		router.push('/dh/xz');
	}
</script>

<style scoped>
	.oo{
		margin-left: 500px;
	}
	.ti{
		margin-top: 20px;
	}
	
</style>

 (5)我的“商品管理”界面

商品管理页面中展示关于商品的相关信息,包含商品编号、商品名称、商品价格、 商品分类、商品库存、商品简介和商品图片等项目。

单击“后退”按钮,跳转到后台管理系统首页页面。

点击“详情”按钮,跳转到商品详情信息页面。

效果:

Sp.vue代码如下:

<template>
	<div >
		<div class="yio">
			<el-button @click="goBack" class="h">后退</el-button>
			<div class="pl">
		<el-table :data="products" stripe border style="width: 1500px" height="850px">
			<el-table-column prop="id" label="商品编号"></el-table-column>
			<!-- prop属性绑定字段名 -->
			<el-table-column prop="name" label="商品名称"></el-table-column>
			<el-table-column prop="price" label="商品价格"></el-table-column>
			<el-table-column prop="stock" label="商品库存"></el-table-column>
			<el-table-column prop="description" label="商品简介"></el-table-column>
			<el-table-column prop="image" label="商品图片">
				<template #default="scope">
					<img :src="scope.row.image" alt="商品图片" width="120px" height="120px">
				</template>
			</el-table-column>
			<el-table-column label="操作">
				<template #default="scope">
					<el-button @click="handleDetail(scope.row)" style="background-color: orange;color: white; margin-left: 30px;">详情</el-button>
					
				</template>
			</el-table-column>
		</el-table>
		</div>
		</div>
	</div>
</template>

<script setup>
	import {
		ref
	} from 'vue';
	import {
		useRouter
	} from 'vue-router';
	const router = useRouter();
	const products = ref([{
			id: '1',
			name: '葡萄柚',
			price: '10.00',
			stock: '10',
			description: '葡萄柚含有丰富的蛋白质、维生素、叶酸、无机盐、纤维素等等。',
			image: '../images/grapefruit.png'
		},
		{
			id: '2',
			name: '葡萄',
			price: '10.00',
			stock: '20',
			description: '葡萄含有大量的维生素C,丰富的矿物质,日常食用,可以抗氧化、起到美容养作用,并且还能提高机体抵抗力、辅助降血压、降血糖、预防心脑血管疾病。',
			image: '../images/grape.png'
		},
		{
			id: '3',
			name: '西红柿',
			price: '3.00',
			stock: '10',
			description: '西红柿属于常见的水果,不仅美味,还营养丰富,具有美容养颜、保护视力等习生菜可生食,脆嫩爽口,略甜,具有改善睡眠、减肥瘦身、保护视力等功效',
			image: '../images/tomatoes.png'
		},
		{
			id: '4',
			name: '生菜',
			price: '6.00',
			stock: '50',
			description: '生菜可生食,脆嫩爽口,略甜,具有改善睡眠、减肥瘦身、保护视力等功效。',
			image: '../images/lettuce.png'
		},
		{
			id: '5',
			name: '葡萄柚',
			price: '10.00',
			stock: '10',
			description: '葡萄柚含有丰富的蛋白质、维生素、叶酸、无机盐、纤维素等等。',
			image: '../images/tomatoes.png'
		},
		{
			id: '6',
			name: '葡萄柚',
			price: '10.00',
			stock: '10',
			description: '葡萄柚含有丰富的蛋白质、维生素、叶酸、无机盐、纤维素等等。',
			image: '../images/grape.png'
		},
		{
			id: '7',
			name: '葡萄柚',
			price: '10.00',
			stock: '10',
			description: '葡萄柚含有丰富的蛋白质、维生素、叶酸、无机盐、纤维素等等。',
			image: '../images/grapefruit.png'
		},
	]);

	const handleDetail = (product) => {
		alert("确定要跳转吗?")
		router.push('/Tc/:id')
		return localStorage.setItem('token', 'Bearer xxx');
		
		
		// 跳转到详情页逻辑,可以在此处添加路由跳转逻辑
	};
// import request from './axios/request.js'
const goBack = () => {
	router.push('/Dh');
	};
</script>

<style scoped>
	.pl{
		margin-top: 20px;
	}
   .h{
	   background-color: blue; 
	   color: aliceblue;
	   margin-left: 470px;
   }
</style>


 (6)我的“个人账户”界面

个人中心页面是对个人账户信息进行修改,可以对用户名和密码进行修改,单击【提交】 按钮,可以完成对用户名和密码的修改,单击页面中的【重置】按钮,可以清空页面中需要 修改的用户名和密码。

效果:

Zh.vue代码如下:

<template>
	<el-card class="w">
	<div >
		<div class="mm">
			
			<h2>个人中心</h2>
			<hr size="1px" color="gainsboro"/>
		</div>
		<el-form :model="userForm" label-width="100px">
			<el-form-item label="用户名:">
				<span>刘丽珍</span>
			</el-form-item>
			<el-form-item label="原密码">
				<el-input type="password" v-model="userForm.pass"></el-input>
			</el-form-item>
			<el-form-item label="新密码">
				<el-input type="password" v-model="userForm.word"></el-input>
			</el-form-item>
			<el-form-item label="再次输入密码">
				<el-input type="  " v-model="userForm.vue"></el-input>
			</el-form-item>
			<el-form-item>
				<el-button type="primary" @click="handleSubmit">提交</el-button>
				<el-button @click="resetForm">重置</el-button>
			</el-form-item>
		</el-form>
	</div>
	</el-card>
</template>

<script setup>
	import {
		ref
	} from 'vue';
	import {
		useRouter
	} from 'vue-router';
	const router = useRouter();
	// 定义响应式数据
	const userForm = ref({
		pass: '',
		word: '',
		vue:'',
		password: ''
	});

	// 重置表单的方法
	const resetForm = () => {
		userForm.value = {
			password: ''
		};
	};
	const handleSubmit = () => {
		alert("提交成功")
		router.push('/Tc/:id');
	}
	
</script>

<style scoped>
	.mm h2 {
		text-align: center;
	}

</style>

最后,要新建一个router.js路由进行界面的跳转实现

router.js代码:

 

// 导入相关函数
import {
	createRouter,
	createWebHashHistory
} from "vue-router"
// 导入需要的组件
import Al from "./components/Al.vue";
import Dl from "./components/Dl.vue";
import Fl from "./components/Fl.vue";
import Sp from "./components/Sp.vue";
import Sy from "./components/Sy.vue";
import Xz from "./components/Xz.vue";
import Tc from "./components/Tc.vue";
import Bt from "./components/Bt.vue";
import Zh from "./components/Zh.vue";
// 创建路由对象router
const router=createRouter({
	// 指定路由工作模式
	history:createWebHashHistory(),
	// 声明路由规则
	routes:[
		// 路由重定向
		{path:'/',redirect:'/dl'},
		// 路由匹配规则
		{path:'/dl',component:Dl},
		{path:'/dh',component: Al,
		children:[
			{path:'fl',component:Fl},
			{path:'sp',component:Sp},
			{path:'sy',component:Sy},
			{path:'xz',component:Xz},
			{path:'zh',component:Zh},
			{path:'/Tc/:id',component:Tc, props:true},
			{path:'/Bt/:id',component:Bt, props:true}
		]}
	]
})
// 全局前置导航守卫
router.beforeEach((to,from,next)=>{
	if(to.path!='/dl'){
		const token=localStorage.getItem('token')
		if(token){
			next()
		}else{
			next('/dl')
		}
	}else{
		next()
	}
})
// 导出实例对象router
export default router;

今天就分享到此,感谢预览~ 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全新UI自助图文打印系统小程序源码 PHP后端 附教程

最新自助图文打印系统和证件照云打印小程序源码PHP后端&#xff0c;为用户用户自助打印的服务&#xff0c;包括但不限于文档、图片、表格等多种格式的文件。此外&#xff0c;它们还提供了诸如美颜、换装、文档打印等功能&#xff0c;以及后台管理系统&#xff0c;方便管理员对打…

TreeMap、HashMap 和 LinkedHashMap 的区别

TreeMap、HashMap 和 LinkedHashMap 的区别 1、HashMap2、LinkedHashMap3、TreeMap4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在 Java 中&#xff0c;TreeMap、HashMap 和 LinkedHashMap 是三种常用的集合类&#xff0c;它们在…

Ubuntu配置GitHub(第一次clone/push)

文章目录 1. 安装Git&检查连接2. 注册GitHub3. 生成&GitHub添加SSH3.1. 检查&删除已有id_rsa3.2. 生成SSH3.3. GitHub添加id_rsa.pub SSH3.4. 检查SSH 4. 继续开发可以参考参考 1. 安装Git&检查连接 安装 sudo apt-get install git检查SSH连接 ssh -T gitgi…

Qt 基础组件速学 事件过滤器

学习目标&#xff1a;理解事件过滤器 前置环境 运行环境:qt creator 4.12 学习内容和效果演示&#xff1a; Qt 提供了事件过滤器的机制,允许我们在事件到达目标对象之前对事件进行拦截和处理。这在以下情况下非常有用: 全局事件处理: 我们可以在应用程序级别安装一个事件过…

数据结构——(双)链表

文章目录 1. 定义 2. 双链表和单链表的区别 3. 代码示例 3.1 双链表节点和结构定义 3.2 初始化双链表 3.3 返回双链表的长度 3.4 在指定位置插入元素 3.5 在末尾插入元素 3.6 删除指定位置的元素并返回被删除的元素 3.7 删除末尾元素 3.8 获取指定位置的元素 3.9 修…

【IT领域新生必看】探索Java中的对象创建:深入理解`new`与`clone`的对比

文章目录 引言什么是new关键字&#xff1f;使用new关键字的基本语法示例&#xff1a; 什么是clone方法&#xff1f;使用clone方法的基本语法示例&#xff1a; new与clone的区别内存分配与初始化调用方式适用场景性能 new关键字的优缺点优点缺点 clone方法的优缺点优点缺点 深入…

机器学习---线性回归

1、线性回归 例如&#xff1a;对于一个房子的价格&#xff0c;其影响因素有很多&#xff0c;例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi​表示&#xff0c;那么房价 y y y可以用如下公式表示&#xff1a; y …

【贪心 堆 优先队列】502. IPO

本文涉及知识点 贪心 堆 优先队列 LeetCode502. IPO 假设 力扣&#xff08;LeetCode&#xff09;即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司&#xff0c;力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限&#xff0c;它只能在 IPO 之前完成最多 k…

评价ChatGPT与强人工智能的未来

在人工智能领域&#xff0c;ChatGPT的出现无疑是一个里程碑事件。它不仅展示了自然语言处理技术的巨大进步&#xff0c;也引发了人们对于强人工智能&#xff08;AGI&#xff09;的无限遐想。本文将从多个角度评价ChatGPT&#xff0c;并探讨强人工智能距离我们还有多远。 ChatGP…

【Leetcode笔记】406.根据身高重建队列

文章目录 1. 题目要求2.解题思路 注意3.ACM模式代码 1. 题目要求 2.解题思路 首先&#xff0c;按照每个人的身高属性&#xff08;即people[i][0]&#xff09;来排队&#xff0c;顺序是从大到小降序排列&#xff0c;如果遇到同身高的&#xff0c;按照另一个属性&#xff08;即p…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥导入介绍及算法规格】

密钥导入介绍及算法规格 如果业务在HUKS外部生成密钥&#xff08;比如应用间协商生成、服务器端生成&#xff09;&#xff0c;业务可以将密钥导入到HUKS中由HUKS进行管理。密钥一旦导入到HUKS中&#xff0c;在密钥的生命周期内&#xff0c;其明文仅在安全环境中进行访问操作&a…

类继承-多继承虚继承

#include<iostream> using namespace std; class A1 { public:int a 10;}; class A2 { public:int b 20; }; class B :public A1, public A2 { public:int c 30; }; int main(){B b;cout << b.a << b.b << b.c << endl;return 0; } 如果基类…

十五、小型电脑没有数字键及insert,怎么解决IDEA快速插入getset构造这些方法

&#x1f33b;&#x1f33b;目录 一、小型电脑没有数字键及insert&#xff0c;怎么解决IDEA快速插入getset构造这些方法 一、小型电脑没有数字键及insert&#xff0c;怎么解决IDEA快速插入getset构造这些方法 解决&#xff1a; 1.winR打开搜索 2.osk回车 屏幕就出现了这样的一…

windows USB 设备驱动开发- 不同模型下的控制传输

在不同的模型下&#xff0c;USB控制传输会有不同的特点&#xff0c;但是任何控制传输的目标都始终是默认端点。 接收者是设备的实体&#xff0c;其信息&#xff08;描述符、状态等&#xff09;是主机感兴趣的。请求可进一步分为&#xff1a;配置请求、功能请求和状态请求。 发…

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 &#xff0c;用递减单调栈&#xff0c;就可以确定在栈里面的每个比当前元素i小的元素&#xff0c;下一个更大的就是这个i&#xff0c;然后弹出并记录&#xff1b;然后当前元素i入栈&#xff0c;仍然满足递减…

基于.NET开源游戏框架MonoGame实现的开源项目合集

前言 今天分享一些基于.NET开源游戏框架MonoGame实现的开源项目合集。 MonoGame项目介绍 MonoGame是一个简单而强大的.NET框架&#xff0c;使用C#编程语言可以创建桌面PC、视频游戏机和移动设备游戏。它已成功用于创建《怒之铁拳4》、《食肉者》、《超凡蜘蛛侠》、《星露谷物…

linux之管道重定向

管道与重定向 一、重定向 将原输出结果存储到其他位置的过程 标准输入、标准正确输出、标准错误输出 ​ 进程在运行的过程中根据需要会打开多个文件&#xff0c;每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件&#xff08;FD--…

【Dell R730 折腾记录】风扇调速--在 Ubuntu 系统上开机自启动并每隔30分钟执行一次风扇定速脚本

前段时间升级了一下机柜里的服务器&#xff0c;替换掉了一台旧的 Dell 服务器&#xff0c;换上了这台 R730。但是无奈于噪音的袭扰&#xff0c;搁置了一段时间。我在这台机器上目前安装了一块 Intel Xeon E5-2630v3 芯片以及一张改过散热的 NVIDIA Tesla P4 计算卡。结果就是散…

电脑硬盘分区的基本步骤(2个实用的硬盘分区方法)

在现代计算机中&#xff0c;硬盘分区是非常重要的一步。无论是新硬盘的初始化&#xff0c;还是重新组织现有硬盘&#xff0c;分区都是必不可少的操作。本文将详细介绍电脑硬盘分区的基本步骤&#xff0c;帮助您更好地管理和利用硬盘空间。 文章开始&#xff0c;我们先简单说一…

【C++】类和对象3.0

浅浅介绍最近所学&#xff0c;希望有兴趣的读者老爷垂阅&#xff01; 目录 1.再谈构造函数 1.1.构造函数体赋值 1.2.初始化列表 1.3.构造函数的小知识 2. explicit关键字 3.static成员 3.1.static成员概念 3.2.static成员特性 4.友元 4.1.友元函数 4.2.友元类 5…