首页 > 数据库 >基于Spring Boot+MySQL的物流智能化管理系统设计与实现

基于Spring Boot+MySQL的物流智能化管理系统设计与实现

时间:2024-05-29 13:03:48浏览次数:28  
标签:tableName color Spring Boot ruleForm && MySQL message border

目录
1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 2
2.1 MYSQL数据库 2
2.2 B/S结构 3
2.3 Spring Boot框架简介 4
3系统分析 4
3.1可行性分析 4
3.1.1技术可行性 4
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 5
3.2.1 系统安全性 5
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 7
4系统概要设计 8
4.1概述 8
4.2系统结构 9
4.3.数据库设计 9
4.3.1数据库实体 9
4.3.2数据库设计表 11
5系统详细实现 15
5.1 管理员模块的实现 15
5.1.1 顾客信息管理 15
5.1.2 员工信息管理 15
5.2 店主模块的实现 16
5.2.1 员工信息管理 16
5.2.1 门店信息管理 16
5.2 员工模块的实现 17
5.2.2 门店信息管理 17
5.2.3 订单信息管理 18
6系统测试 18
6.1概念和意义 18
6.2特性 19
6.3重要性 19
6.4测试方法 19
6.5 功能测试 20
6.6可用性测试 20
6.7性能测试 21
6.8测试分析 21
6.9测试结果分析 22
结论 22
致谢语 22
参考文献 23
1.3系统设计思想
一个成功的网站应明确建设网站的目的,确定网站的功能,确定网站规模、投入费用,进行必要的市场分析等。只有详细的策划,才能避免在网站建设中出现的很多问题,使网站建设能顺利进行。同时,一个大型的计算机网站系统,必须有一个正确的设计指导思想,通过合理选择数据结构、网络结构、操作系统以及开发环境,构成一个完善的网络体系结构,才能充分发挥计算机信息管理的优势。根据现实生活中网民的实际需求,本系统的设计按照下述原则进行。
1.有效性:实际上这里的有效性包括两个方面的意思:有用性和可用性。有用性是指站点潜在的能满足用户需求的功能,而可用性是指能够通过站点的操作实现特定的目标。可以看出一个站点如果不能恰当运行或设计得非常槽糕就不是一个好站点。可用站点的效益应该非常高,并易于学习,在实现用户目标时令人满意而不出错。
2.高可靠性:一个实用的网站同时必须是可靠的,本设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证网站的可靠性与容错性。
3.高安全性:在设计中,将充分利用网络软、硬件提供的各种安全措施,既可以保证用户共享资源,充分考虑系统及数据资源的容灾、备份、恢复的要求。为系统提供强大的数据库备份工具。可以保证关键数据的安全性。操作权限级,设置不同的角色确保每一步的操作权限,可以由管理员进行设置。
4.先进性:采用目前国际上最先进的开发技术,使用JSP开发技术,MYSQL作为网站后台数据库。采用这些技术降低了以后的系统运营成本,提高了系统的稳定性和易维护性。
5.采用标准技术:本网站的所有设计遵循国际上现行的标准进行,以提高系统的开放性。
6.外观和技术平衡:系统采用Web风格的界面设计,界面友好、美观,使用方便,易学易用。网站设计的关键问题是外观和技术的平衡。外现不好的网站令人厌烦,站点可以运行很好,但却不能带动用户积极性,相反,如果外观非常有表现力,但技术有限,用户则会感到非常失望。在外观与技术之间需要确定一个清晰而连续的关系,即外观与站点的意图相关,对不同类型的网站处理方法不同。

<template>
  <div>
    <div class="container">
      <div class="login-form" style="backgroundColor:rgba(229, 238, 229, 0.07);borderRadius:10px">
        <h1 class="h1" style="color:rgba(24, 103, 228, 1);fontSize:28px;">智能物流管理系统注册</h1>
		<el-form ref="rgsForm" class="rgs-form" :model="rgsForm" label-width="120px">
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">账号</div>
			   <div class="input-container">
			     <input v-model="ruleForm.zhanghao" class="input" type="text" placeholder="账号">
			   </div>
			 </div> -->
			<el-form-item label="账号" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.zhanghao" autocomplete="off" placeholder="账号"  />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">密码</div>
			   <div class="input-container">
			     <input v-model="ruleForm.mima" class="input" type="text" placeholder="密码">
			   </div>
			 </div> -->
			<el-form-item label="密码" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.mima" autocomplete="off" placeholder="密码" type="password"#elsetype="text" />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">顾客姓名</div>
			   <div class="input-container">
			     <input v-model="ruleForm.gukexingming" class="input" type="text" placeholder="顾客姓名">
			   </div>
			 </div> -->
			<el-form-item label="顾客姓名" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.gukexingming" autocomplete="off" placeholder="顾客姓名"  />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">手机</div>
			   <div class="input-container">
			     <input v-model="ruleForm.shouji" class="input" type="text" placeholder="手机">
			   </div>
			 </div> -->
			<el-form-item label="手机" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.shouji" autocomplete="off" placeholder="手机"  />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">邮箱</div>
			   <div class="input-container">
			     <input v-model="ruleForm.youxiang" class="input" type="text" placeholder="邮箱">
			   </div>
			 </div> -->
			<el-form-item label="邮箱" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.youxiang" autocomplete="off" placeholder="邮箱"  />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">身份证</div>
			   <div class="input-container">
			     <input v-model="ruleForm.shenfenzheng" class="input" type="text" placeholder="身份证">
			   </div>
			 </div> -->
			<el-form-item label="身份证" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.shenfenzheng" autocomplete="off" placeholder="身份证"  />
			</el-form-item>
			<!-- <div v-if="tableName=='guke'" class="input-group">
			   <div class="label">地址</div>
			   <div class="input-container">
			     <input v-model="ruleForm.dizhi" class="input" type="text" placeholder="地址">
			   </div>
			 </div> -->
			<el-form-item label="地址" class="input" v-if="tableName=='guke'">
			  <el-input v-model="ruleForm.dizhi" autocomplete="off" placeholder="地址"  />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">工号</div>
			   <div class="input-container">
			     <input v-model="ruleForm.gonghao" class="input" type="text" placeholder="工号">
			   </div>
			 </div> -->
			<el-form-item label="工号" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.gonghao" autocomplete="off" placeholder="工号"  />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">密码</div>
			   <div class="input-container">
			     <input v-model="ruleForm.mima" class="input" type="text" placeholder="密码">
			   </div>
			 </div> -->
			<el-form-item label="密码" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.mima" autocomplete="off" placeholder="密码" type="password"#elsetype="text" />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">员工姓名</div>
			   <div class="input-container">
			     <input v-model="ruleForm.yuangongxingming" class="input" type="text" placeholder="员工姓名">
			   </div>
			 </div> -->
			<el-form-item label="员工姓名" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.yuangongxingming" autocomplete="off" placeholder="员工姓名"  />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">门店名称</div>
			   <div class="input-container">
			     <input v-model="ruleForm.mendianmingcheng" class="input" type="text" placeholder="门店名称">
			   </div>
			 </div> -->
			<el-form-item label="门店名称" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.mendianmingcheng" autocomplete="off" placeholder="门店名称"  />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">手机</div>
			   <div class="input-container">
			     <input v-model="ruleForm.shouji" class="input" type="text" placeholder="手机">
			   </div>
			 </div> -->
			<el-form-item label="手机" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.shouji" autocomplete="off" placeholder="手机"  />
			</el-form-item>
			<!-- <div v-if="tableName=='yuangong'" class="input-group">
			   <div class="label">身份证</div>
			   <div class="input-container">
			     <input v-model="ruleForm.shenfenzheng" class="input" type="text" placeholder="身份证">
			   </div>
			 </div> -->
			<el-form-item label="身份证" class="input" v-if="tableName=='yuangong'">
			  <el-input v-model="ruleForm.shenfenzheng" autocomplete="off" placeholder="身份证"  />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">店主账号</div>
			   <div class="input-container">
			     <input v-model="ruleForm.dianzhuzhanghao" class="input" type="text" placeholder="店主账号">
			   </div>
			 </div> -->
			<el-form-item label="店主账号" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.dianzhuzhanghao" autocomplete="off" placeholder="店主账号"  />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">密码</div>
			   <div class="input-container">
			     <input v-model="ruleForm.mima" class="input" type="text" placeholder="密码">
			   </div>
			 </div> -->
			<el-form-item label="密码" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.mima" autocomplete="off" placeholder="密码" type="password"#elsetype="text" />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">店主姓名</div>
			   <div class="input-container">
			     <input v-model="ruleForm.dianzhuxingming" class="input" type="text" placeholder="店主姓名">
			   </div>
			 </div> -->
			<el-form-item label="店主姓名" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.dianzhuxingming" autocomplete="off" placeholder="店主姓名"  />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">联系电话</div>
			   <div class="input-container">
			     <input v-model="ruleForm.lianxidianhua" class="input" type="text" placeholder="联系电话">
			   </div>
			 </div> -->
			<el-form-item label="联系电话" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.lianxidianhua" autocomplete="off" placeholder="联系电话"  />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">邮箱</div>
			   <div class="input-container">
			     <input v-model="ruleForm.youxiang" class="input" type="text" placeholder="邮箱">
			   </div>
			 </div> -->
			<el-form-item label="邮箱" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.youxiang" autocomplete="off" placeholder="邮箱"  />
			</el-form-item>
			<!-- <div v-if="tableName=='dianzhu'" class="input-group">
			   <div class="label">身份证</div>
			   <div class="input-container">
			     <input v-model="ruleForm.shenfenzheng" class="input" type="text" placeholder="身份证">
			   </div>
			 </div> -->
			<el-form-item label="身份证" class="input" v-if="tableName=='dianzhu'">
			  <el-input v-model="ruleForm.shenfenzheng" autocomplete="off" placeholder="身份证"  />
			</el-form-item>
			<div style="display: flex;flex-wrap: wrap;width: 100%;justify-content: center;">
				<el-button class="btn" type="primary" @click="login()">注册</el-button>
				<el-button class="btn close" type="primary" @click="close()">取消</el-button>
			</div>
		</el-form>
      </div>
      <!-- <div class="nk-navigation">
        <a href="#">
          <div @click="login()">注册</div>
        </a>
      </div> -->
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      ruleForm: {
      },
      tableName:"",
      rules: {}
    };
  },
  mounted(){
    let table = this.$storage.get("loginTable");
    this.tableName = table;
  },
  methods: {
    // 获取uuid
    getUUID () {
      return new Date().getTime();
    },
    close(){
	this.$router.push({ path: "/login" });
    },
    // 注册
    login() {
      if((!this.ruleForm.zhanghao) && `guke` == this.tableName){
        this.$message.error(`账号不能为空`);
        return
      }
      if((!this.ruleForm.mima) && `guke` == this.tableName){
        this.$message.error(`密码不能为空`);
        return
      }
      if((!this.ruleForm.gukexingming) && `guke` == this.tableName){
        this.$message.error(`顾客姓名不能为空`);
        return
      }
      if(`guke` == this.tableName && this.ruleForm.shouji&&(!this.$validate.isMobile(this.ruleForm.shouji))){
        this.$message.error(`手机应输入手机格式`);
        return
      }
      if(`guke` == this.tableName && this.ruleForm.youxiang&&(!this.$validate.isEmail(this.ruleForm.youxiang))){
        this.$message.error(`邮箱应输入邮件格式`);
        return
      }
      if(`guke` == this.tableName && this.ruleForm.shenfenzheng&&(!this.$validate.checkIdCard(this.ruleForm.shenfenzheng))){
        this.$message.error(`身份证应输入身份证格式`);
        return
      }
      if((!this.ruleForm.gonghao) && `yuangong` == this.tableName){
        this.$message.error(`工号不能为空`);
        return
      }
      if((!this.ruleForm.mima) && `yuangong` == this.tableName){
        this.$message.error(`密码不能为空`);
        return
      }
      if((!this.ruleForm.yuangongxingming) && `yuangong` == this.tableName){
        this.$message.error(`员工姓名不能为空`);
        return
      }
      if(`yuangong` == this.tableName && this.ruleForm.bumen&&(!this.$validate.isEmail(this.ruleForm.bumen))){
        this.$message.error(`部门应输入邮件格式`);
        return
      }
      if(`yuangong` == this.tableName && this.ruleForm.shouji&&(!this.$validate.isMobile(this.ruleForm.shouji))){
        this.$message.error(`手机应输入手机格式`);
        return
      }
      if(`yuangong` == this.tableName && this.ruleForm.shenfenzheng&&(!this.$validate.checkIdCard(this.ruleForm.shenfenzheng))){
        this.$message.error(`身份证应输入身份证格式`);
        return
      }
      if((!this.ruleForm.dianzhuzhanghao) && `dianzhu` == this.tableName){
        this.$message.error(`店主账号不能为空`);
        return
      }
      if((!this.ruleForm.mima) && `dianzhu` == this.tableName){
        this.$message.error(`密码不能为空`);
        return
      }
      if((!this.ruleForm.dianzhuxingming) && `dianzhu` == this.tableName){
        this.$message.error(`店主姓名不能为空`);
        return
      }
      if(`dianzhu` == this.tableName && this.ruleForm.lianxidianhua&&(!this.$validate.isMobile(this.ruleForm.lianxidianhua))){
        this.$message.error(`联系电话应输入手机格式`);
        return
      }
      if(`dianzhu` == this.tableName && this.ruleForm.youxiang&&(!this.$validate.isEmail(this.ruleForm.youxiang))){
        this.$message.error(`邮箱应输入邮件格式`);
        return
      }
      if(`dianzhu` == this.tableName && this.ruleForm.shenfenzheng&&(!this.$validate.checkIdCard(this.ruleForm.shenfenzheng))){
        this.$message.error(`身份证应输入身份证格式`);
        return
      }
      this.$http({
        url: `${this.tableName}/register`,
        method: "post",
        data:this.ruleForm
      }).then(({ data }) => {
        if (data && data.code === 0) {
          this.$message({
            message: "注册成功",
            type: "success",
            duration: 1500,
            onClose: () => {
              this.$router.replace({ path: "/login" });
            }
          });
        } else {
          this.$message.error(data.msg);
        }
      });
    }
  }
};
</script>
<style lang="scss" scoped>
	.el-radio__input.is-checked .el-radio__inner {
		border-color: #00c292;
		background: #00c292;
	}

	.el-radio__input.is-checked .el-radio__inner {
		border-color: #00c292;
		background: #00c292;
	}

	.el-radio__input.is-checked .el-radio__inner {
		border-color: #00c292;
		background: #00c292;
	}

	.el-radio__input.is-checked+.el-radio__label {
		color: #00c292;
	}

	.el-radio__input.is-checked+.el-radio__label {
		color: #00c292;
	}

	.el-radio__input.is-checked+.el-radio__label {
		color: #00c292;
	}

	.h1 {
		margin-top: 10px;
	}

	body {
		padding: 0;
		margin: 0;
	}

	// .container {
 //    min-height: 100vh;
 //    text-align: center;
 //    // background-color: #00c292;
 //    padding-top: 20vh;
 //    background-image: url(../assets/img/bg.jpg);
 //    background-size: 100% 100%;
 //    opacity: 0.9;
 //  }

	// .login-form:before {
	// 	vertical-align: middle;
	// 	display: inline-block;
	// }

	// .login-form {
	// 	max-width: 500px;
	// 	padding: 20px 0;
	// 	width: 80%;
	// 	position: relative;
	// 	margin: 0 auto;

	// 	.label {
	// 		min-width: 60px;
	// 	}

	// 	.input-group {
	// 		max-width: 500px;
	// 		padding: 20px 0;
	// 		width: 80%;
	// 		position: relative;
	// 		margin: 0 auto;
	// 		display: flex;
	// 		align-items: center;

	// 		.input-container {
	// 			display: inline-block;
	// 			width: 100%;
	// 			text-align: left;
	// 			margin-left: 10px;
	// 		}

	// 		.icon {
	// 			width: 30px;
	// 			height: 30px;
	// 		}

	// 		.input {
	// 			position: relative;
	// 			z-index: 2;
	// 			float: left;
	// 			width: 100%;
	// 			margin-bottom: 0;
	// 			box-shadow: none;
	// 			border-top: 0px solid #ccc;
	// 			border-left: 0px solid #ccc;
	// 			border-right: 0px solid #ccc;
	// 			border-bottom: 1px solid #ccc;
	// 			padding: 0px;
	// 			resize: none;
	// 			border-radius: 0px;
	// 			display: block;
	// 			width: 100%;
	// 			height: 34px;
	// 			padding: 6px 12px;
	// 			font-size: 14px;
	// 			line-height: 1.42857143;
	// 			color: #555;
	// 			background-color: #fff;
	// 		}

	// 	}
	// }

	.nk-navigation {
		margin-top: 15px;

		a {
			display: inline-block;
			color: #fff;
			background: rgba(255, 255, 255, .2);
			width: 100px;
			height: 50px;
			border-radius: 30px;
			text-align: center;
			display: flex;
			align-items: center;
			margin: 0 auto;
			justify-content: center;
			padding: 0 20px;
		}

		.icon {
			margin-left: 10px;
			width: 30px;
			height: 30px;
		}
	}

	.register-container {
		margin-top: 10px;

		a {
			display: inline-block;
			color: #fff;
			max-width: 500px;
			height: 50px;
			border-radius: 30px;
			text-align: center;
			display: flex;
			align-items: center;
			margin: 0 auto;
			justify-content: center;
			padding: 0 20px;

			div {
				margin-left: 10px;
			}
		}
	}
	
	.container {
		background-image: url("http://codegen.caihongy.cn/20201110/8f9e1d94bb6243aba9de49b67bc3b5a7.jpg");
		height: 100vh;
		background-position: center center;
		background-size: cover;
		background-repeat: no-repeat;
	
		.login-form {
			right: 50%;
			top: 50%;
			height: auto;
			transform: translate3d(50%, -50%, 0);
			border-radius: 10px;
			background-color: rgba(255,255,255,.5);
			width: 420px;
			padding: 30px 30px 40px 30px;
			font-size: 14px;
			font-weight: 500;
			
			.h1 {
				margin: 0;
				text-align: center;
				line-height: 54px;
			    font-size: 24px;
			    color: #000;
			}
				
			.rgs-form {
				display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
				
				.input {
					width: 100%;
					
					& /deep/ .el-form-item__label {
						line-height: 40px;
						color: rgba(30, 144, 255, 1);
						font-size: #606266;
					}
					
					& /deep/ .el-input__inner {
						height: 40px;
						color: rgba(42, 102, 221, 1);
						font-size: 14px;
						border-width: 1px;
						border-style: solid;
						border-color: #606266;
						border-radius: 4px;
						background-color: #fff;
					}
				}
				
				.btn {
					margin: 0 10px;
					width: 88px;
					height: 45px;
					color: #fff;
					font-size: 14px;
					border-width: 0px;
					border-style: solid;
					border-color: #409EFF;
					border-radius: 4px;
					background-color: rgba(24, 144, 255, 1);
				}

				.close {
					margin: 0 10px;
					width: 88px;
					height: 44px;
					color: #409EFF;
					font-size: 14px;
					border-width: 1px;
					border-style: solid;
					border-color: #409EFF;
					border-radius: 4px;
					background-color: #FFF;
				}

			}
		}
	}
</style>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标签:tableName,color,Spring,Boot,ruleForm,&&,MySQL,message,border
From: https://blog.csdn.net/newlw/article/details/139156022

相关文章

  • MySQL--主从复制
    目录一、主从复制原理1.简要原理2.涉及到的文件3.涉及到的线程4.主从复制执行步骤(重点)二、主从复制搭建1.准备两台以上的数据库实例,要求数据库版本一致2.区分不同角色3.主库开启二进制日志4.主库创建专用复制用户,赋予权限5.备份主库数据,恢复从库6.开启从库复制功能......
  • mysql优化
    一、硬件层面优化1.0硬件选配DELL、HP、IBM、华为、浪潮。CPU:I、E内存:ECCIO:SAS、pci-eSSD、Nvmeflashraid卡:Raid10网卡:单卡单口云服务器:ECS、RDS、PolarDB、TDSQL1.1关闭NUMAa.bios级别:在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性......
  • Mysql(3)
    20240529约束条件:限制表中的数据,保证数据的准确,可靠的规则notnull/nullunsignedzerofillunique:唯一数据primarykey:主键,便于查询=notnull+unique主键约束:添加的约束规则主键字段:添加了主键约束的字段主键值:主键字段的值主键的作用:自动添加索引-index......
  • Springboot配置文件中账号密码等敏感信息的加解密
    说明:使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性比较低。打开application.properties或application.yml,比如MySQL登录密码,Redis登录密码以及第三方的密钥等等一览无余。这里介绍一个加解密组件jasypt,用以提高配置文件中敏感配置数据的......
  • 使用MySQL主主复制加Keepalived实现高可用
    目录资源列表基础环境关闭防火墙关闭内核安全机制修改主机名时间同步一、安装MySQL准备yum源清理mariadb相关的包安装启动二、MySQL主主复制两个节点授权用户两个节点使用授权用户进行连接启动同步三、安装keepalived安装修改配置文件启动服务验证  ......
  • 在mysql上构建soctt库
    --1.创建部门表createtabledept(deptnoint(2)unsignedprimarykey,dnamevarchar(14),locvarchar(13));--2.添加部门数据insertintodept(deptno,dname,loc)values(10,'ACCOUNTING','NEWYORK'),(20,'RESEARCH','DALLAS')......
  • Spring常用Maven配置
    基于Spring6的常用Mavenpom文件依赖配置(包含父工程设置以及SpringBoot及其相关项目依赖):<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version&......
  • MySQL并发事务是怎么处理的?
    在数据库系统中,并发事务处理是一个至关重要的概念。特别是在MySQL这样的关系型数据库中,当多个事务同时尝试访问或修改相同的数据时,就需要有一种机制来确保数据的一致性和完整性。本文将深入探讨MySQL如何处理并发事务,并通过Java代码示例来进一步说明。1.事务的ACID属性在......
  • SpringBoot如何使用日志Logback,及日志等级详解
    SpringBoot默认已经集成了SLF4J(SimpleLoggingFacadeforJava)作为日志的接口,以及Logback作为日志的实现。这意味着在大多数情况下,你无需做额外的配置即可开始记录日志。下面是一个简要的指南,包括如何在SpringBoot应用中使用SLF4J和Logback,以及一些实际的代码示例。默......
  • 高性能MySQL实战(一):表结构
    最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题,以此来学习和巩固这些知识。1.实战我使用的MySQL版本是5.7,建表DDL语句如下所示:根据需......