vue3:八、登錄界面實現-頁面初始搭建、基礎實現

一、初始工作

1、創建登錄文件

在src/views中創建文件LoginView.vue文件

2、創建路由

在router/index.js中增加登錄的信息

代碼

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [//將子項全部存入一個大的路由中layout/index.vue,頁面剛進入時調用的時layout/index.vue,在為導航條,默認顯示頁面/home的內容{path: '/',name: 'main',component: () => import('@/layout/index.vue'),children: [{path: '/home',name: 'home',component: HomeView,},{path: '/about',name: 'about',component: () => import('../views/AboutView.vue'),},]},//登錄{path: '/login',name: 'login',component: () => import('@/views/LoginView.vue'),meta: {title: '登錄'}},//404{path: '/:pathMatch(.*)*',name: 'not-found',component: () => import('@/views/NotFoundView.vue'),meta: {title: '頁面未找到'}},],
})
export default router

二、搭建登錄頁面

1、實現效果

2、組件

LoginView.vue

實現底色為紫色,中間為白色卡片的登錄效果,白色卡片左側為圖片效果,右側為表單登錄組件

<template><div class="page_all flex flex-center"><div class="login_all flex flex-between"><div class="login_left flex flex-center"><img src="/svg/login.png"></div><div class="login_right flex flex-center flex-column"><div class="form flex flex-center flex-column"><div class="title flex flex-center">CMS管理系統</div><el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" class="el-form demo-ruleForm":size="formSize" status-icon><el-form-item prop="username"><el-input v-model="ruleForm.username" placeholder="請輸入賬號" /></el-form-item><el-form-item prop="password"><el-input v-model="ruleForm.password" show-password placeholder="請輸入密碼" /></el-form-item><el-form-item class="btn-group"><el-button type="primary" @click="submitForm(ruleFormRef)">登錄</el-button><el-button @click="resetForm(ruleFormRef)">重置</el-button></el-form-item></el-form></div></div></div></div>
</template>

代碼解析?

表單實現?

參考路徑:Form 表單 | Element Plus

①.?<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" class="el-form demo-ruleForm" :size="formSize" status-icon>

  • ref="ruleFormRef":
    給表單組件設置一個引用名?ruleFormRef,方便在 Vue 組件中通過?this.$refs.ruleFormRef?訪問表單實例。

  • ?:model="ruleForm":
    將表單數據綁定到?ruleForm?對象,ruleForm?是一個 Vue 組件的 data 屬性,通常用于存儲表單字段的值。

  • ?:rules="rules":
    綁定表單驗證規則,rules?是一個 Vue 組件的 data 屬性,定義了表單字段的驗證邏輯。

  • ?class="el-form demo-ruleForm":
    給表單添加 CSS 類名,用于樣式控制。

  • ?:size="formSize":
    動態設置表單的尺寸(如?largemediumsmall),formSize?是一個 Vue 組件的 data 屬性。

  • ?status-icon:
    在表單驗證時顯示驗證狀態圖標(如成功、失敗)。


②.?<el-form-item prop="username">

  • ?**prop="username"**:
    指定該表單項綁定的字段名?username,用于表單驗證和數據綁定。


③.?<el-input v-model="ruleForm.username" placeholder="請輸入賬號" />

  • ?**v-model="ruleForm.username"**:
    將輸入框的值雙向綁定到?ruleForm.username,用戶輸入的內容會實時更新到?ruleForm.username

  • ?**placeholder="請輸入賬號"**:
    設置輸入框的占位符文本,提示用戶輸入賬號。


④.?<el-form-item prop="password">

  • ?**prop="password"**:
    指定該表單項綁定的字段名?password,用于表單驗證和數據綁定。


⑤.?<el-input v-model="ruleForm.password" show-password placeholder="請輸入密碼" />

  • ?**v-model="ruleForm.password"**:
    將輸入框的值雙向綁定到?ruleForm.password,用戶輸入的內容會實時更新到?ruleForm.password

  • ?**show-password**:
    啟用密碼顯示/隱藏切換功能,用戶可以通過點擊圖標切換密碼的可見性。

  • ?**placeholder="請輸入密碼"**:
    設置輸入框的占位符文本,提示用戶輸入密碼。

⑥.?<el-form-item class="btn-group">

  • ?**class="btn-group"**:
    給表單項添加 CSS 類名,用于樣式控制。


⑦.?<el-button type="primary" @click="submitForm(ruleFormRef)">登錄</el-button>

  • ?**type="primary"**:
    設置按鈕的類型為“主按鈕”,通常顯示為藍色。

  • ?**@click="submitForm(ruleFormRef)"**:
    點擊事件,調用?submitForm?方法并傳入表單實例?ruleFormRef,用于提交表單。


⑧.?<el-button @click="resetForm(ruleFormRef)">重置</el-button>

  • ?**@click="resetForm(ruleFormRef)"**:
    點擊事件,調用?resetForm?方法并傳入表單實例?ruleFormRef,用于重置表單。


⑨.?</el-form>

  • 關閉表單組件。

3、樣式

LoginView.vue - css

大體使用flex布局實現

<style>
.page_all {width: 100%;height: 100vh;background-color: #808cdd;
}.login_all {width: 50%;height: 60%;background-color: white;
}.login_left {width: 50%;height: 98%;
}.login_left img {width: 95%;height: 80%;object-fit: contain;
}.login_right {width: 50%;height: 100%;
}.title {font-size: 25px;color: #646cff;letter-spacing: 3px;height: 20%;
}.form {flex: 1;width: 90%;
}.el-form {width: 60%;
}.el-input__inner {font-size: 12px;
}.btn-group {width: 100%;margin-top: 30px;
}.btn-group button {width: 45%;
}.el-form-item__content {justify-content: space-between;
}
</style>

②base.css

修改主體顏色

/* color palette from <https://github.com/vuejs/theme> */
:root {--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, 0.29);--vt-c-divider-light-2: rgba(60, 60, 60, 0.12);--vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);--vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, 0.66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, 0.64);--el-color-primary: #646cff;--el-button-hover-bg-color: #868bf7;--el-color-primary-light-3: #868bf7;--el-color-primary-light-5:#b4b7ef;--el-color-primary-light-9:#e5e6f7;--el-color-primary-light-7:#c6c8fa;
}

③main.js?

@import './base.css';.flex {display: flex;
}.flex-between {justify-content: space-between;align-items: center;
}.flex-around {justify-content: space-around;align-items: center;
}.flex-center {justify-content: center;align-items: center;
}.flex-column {flex-direction: column;
}

三、js功能實現

1、引入方法

import { reactive, ref } from 'vue' //引入vue響應式
import { login } from '@/api/logininfo' //引入登錄接口
import { useRouter } from 'vue-router'  //引入路由
import { ElMessage } from 'element-plus' //引入提示框
import { setToken } from '@/utils/token' //引入token設置

2、設置基本表單數據

//設置表單大小
const formSize = ref('default')
//設置表單數據
const ruleFormRef = ref()
const ruleForm = reactive({username: '',//賬號password: '',//密碼
})

3、設置驗證規則

新加的驗證規則可以使用validator也可使用pattern直接使用正則取限制

//設置驗證規則
const rules = reactive({username: [{ required: true, message: '請輸入賬號', trigger: 'blur' },{ min: 3, max: 10, message: '長度請在3-10之間', trigger: 'blur' },],password: [{ required: true, message: '請輸入密碼', trigger: 'blur' },{ min: 6, max: 20, message: '長度請在6-20之間', trigger: 'blur' },{validator: (rule, value, callback) => {const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/;if (!passwordPattern.test(value)) {callback(new Error('密碼必須包含大寫字母、小寫字母、數字和特殊字符'));} else {callback();}}, trigger: 'blur'},// 或者// {pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/, message: '密碼必須包含大寫字母、小寫字母、數字和特殊字符', trigger: 'blur'}],
})

4、引入路由

//設置路由
const router = useRouter();

5、封裝接口

①新建api接口方法

新建api接口方法,用于管理用戶登錄時需要請求的方法

②方法實現

api/logininfo.js

引入request中的post和get方法,封裝login方法執行登錄的請求

import { post, get } from '@/utils/request'
// 登錄
export function login(data) {return post({url: '/user/login',data})
}

6、表單提交

提交表單:

發送登錄請求

  • 請求成功->提示成功消息->請求成功會返回一個token值,將這個token值存入本地緩存->跳轉到主頁面
  • 請求失敗->提示失敗消息
//表單提交
const submitForm = async (formEl) => {if (!formEl) returnawait formEl.validate((valid, fields) => {if (valid) {console.log('submit!');// 1、請求登錄接口進行登錄// 參數為ruleFormconsole.log(ruleForm)// 2、請求登錄接口進行登錄login( ruleForm ).then(res => {console.log('res:', res)if (res.code == 1) {// 3、提示成功信息ElMessage.success(res.msg || '登錄成功')//存入該賬號的tokensetToken(res.data.token)// 4、跳轉頁面router.push('/')}else {ElMessage.error(res.msg || '登錄失敗')}})} else {console.log('error submit!', fields)}})
}

7、重置表單

//重置表單
const resetForm = (formEl) => {if (!formEl) returnformEl.resetFields()
}

注:這里使用的request.js的請求方法是拼接方法

export const get = (obj) => {obj.method = 'GET'if (obj.data) {obj.url += '?' + Object.keys(obj.data).map(key => key + '=' + obj.data[key]).join('&')}return request(obj)
}
export const post = (obj) => {obj.method = 'POST'return request(obj)
}

四、接口實現

1、建立新接口

建立接口/user/login

設置請求參數username和password

2、設置期望?

登錄成功

登錄失敗

五、測試是否成功

1、頁面樣式

2、測試文本框

①登錄文本框

必填測試

長度測試

②密碼文本框

必填測試

長度測試

規范測試

③登錄失敗

根據apifox設置的期望,輸入賬號不等于test時,登錄失敗

④登錄成功

在登錄前查看本地緩存

登錄成功后頁面跳轉,本地緩存中存入返回的token

六、完整代碼

1、LoginView.vue

<template><div class="page_all flex flex-center"><div class="login_all flex flex-between"><div class="login_left flex flex-center"><img src="/svg/login.png"></div><div class="login_right flex flex-center flex-column"><div class="form flex flex-center flex-column"><div class="title flex flex-center">CMS管理系統</div><el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" class="el-form demo-ruleForm":size="formSize" status-icon><el-form-item prop="username"><el-input v-model="ruleForm.username" placeholder="請輸入賬號" /></el-form-item><el-form-item prop="password"><el-input v-model="ruleForm.password" show-password placeholder="請輸入密碼" /></el-form-item><el-form-item class="btn-group"><el-button type="primary" @click="submitForm(ruleFormRef)">登錄</el-button><el-button @click="resetForm(ruleFormRef)">重置</el-button></el-form-item></el-form></div></div></div></div> 
</template>
<script setup>
//引入方法
import { reactive, ref } from 'vue' //引入vue響應式
import { login } from '@/api/logininfo' //引入登錄接口
import { useRouter } from 'vue-router'  //引入路由
import { ElMessage } from 'element-plus' //引入提示框
import { setToken } from '@/utils/token' //引入token設置//設置表單大小
const formSize = ref('default')
//設置表單數據
const ruleFormRef = ref()
const ruleForm = reactive({username: '',password: '',
})//設置路由
const router = useRouter();
//設置驗證規則
const rules = reactive({username: [{ required: true, message: '請輸入賬號', trigger: 'blur' },{ min: 3, max: 10, message: '長度請在3-10之間', trigger: 'blur' },],password: [{ required: true, message: '請輸入密碼', trigger: 'blur' },{ min: 6, max: 20, message: '長度請在6-20之間', trigger: 'blur' },{validator: (rule, value, callback) => {const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/;if (!passwordPattern.test(value)) {callback(new Error('密碼必須包含大寫字母、小寫字母、數字和特殊字符'));} else {callback();}}, trigger: 'blur'},// 或者// {pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/, message: '密碼必須包含大寫字母、小寫字母、數字和特殊字符', trigger: 'blur'}],
})//表單提交
const submitForm = async (formEl) => {if (!formEl) returnawait formEl.validate((valid, fields) => {if (valid) {console.log('submit!');// 1、請求登錄接口進行登錄// 參數為ruleFormconsole.log(ruleForm)// 2、請求登錄接口進行登錄login( ruleForm ).then(res => {console.log('res:', res)if (res.code == 1) {// 3、提示成功信息ElMessage.success(res.msg || '登錄成功')//存入該賬號的tokensetToken(res.data.token)// 4、跳轉頁面router.push('/')}else {ElMessage.error(res.msg || '登錄失敗')}})} else {console.log('error submit!', fields)}})
}
//重置表單
const resetForm = (formEl) => {if (!formEl) returnformEl.resetFields()
}</script>
<style>
.page_all {width: 100%;height: 100vh;background-color: #808cdd;
}.login_all {width: 50%;height: 60%;background-color: white;
}.login_left {width: 50%;height: 98%;
}.login_left img {width: 95%;height: 80%;object-fit: contain;
}.login_right {width: 50%;height: 100%;
}.title {font-size: 25px;color: #646cff;letter-spacing: 3px;height: 20%;
}.form {flex: 1;width: 90%;
}.el-form {width: 60%;
}.el-input__inner {font-size: 12px;
}.btn-group {width: 100%;margin-top: 30px;
}.btn-group button {width: 45%;
}.el-form-item__content {justify-content: space-between;
}
</style>

2、main.css

@import './base.css';.flex {display: flex;
}.flex-between {/*將彈性容器內的子元素沿主軸 均勻分布,第一個子元素位于主軸起點,最后一個元素位于主軸終點,中間的元素之間等距相等*/justify-content: space-between;align-items: center;
}/* 水平軸上對齊 */
.flex-around {/*項目在主軸上均勻分布,每個項目兩側間距相等,第一個項目和最后一個項目距離容器邊緣的艱苦是其他項目之間間距的一半*/justify-content: space-around;align-items: center;
}.flex-center {justify-content: center;align-items: center;
}
/* 隱藏底部的按鈕 */
.vue-devtools__panel[data-v-e9063f7b]{display: none;
}
.flex-column {flex-direction: column;
}
/* 設置表單寬度 */
.el-form{width:100% !important;
}

3、base.css

/* color palette from <https://github.com/vuejs/theme> */
:root {--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, 0.29);--vt-c-divider-light-2: rgba(60, 60, 60, 0.12);--vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);--vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, 0.66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, 0.64);--el-color-primary: #646cff;--el-button-hover-bg-color: #868bf7;--el-color-primary-light-3: #868bf7;--el-color-primary-light-5:#b4b7ef;--el-color-primary-light-9:#e5e6f7;--el-color-primary-light-7:#c6c8fa;
}/* semantic color variables for this project */
:root {--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px;
}/* 
@media (prefers-color-scheme: dark) {:root {--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2);}
} *//* *,
*::before,
*::after {box-sizing: border-box;margin: 0;font-weight: normal;
} */body {min-height: 100vh;color: var(--color-text);background: var(--color-background);transition:color 0.5s,background-color 0.5s;line-height: 1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',sans-serif;font-size: 15px;text-rendering: optimizeLegibility;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;margin: 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73333.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

結構型模式之適配器模式:讓不兼容的接口兼容

在軟件開發中&#xff0c;經常會遇到這樣一種情況&#xff1a;系統的不同部分需要進行交互&#xff0c;但由于接口不兼容&#xff0c;導致無法直接使用。這時&#xff0c;適配器模式&#xff08;Adapter Pattern&#xff09;就能派上用場。適配器模式是設計模式中的結構型模式&…

Qt從入門到入土(十) -數據庫操作--SQLITE

認識 數據庫是用于存儲、管理和檢索數據的系統化集合。它是一種按照特定結構組織數據的存儲方式&#xff0c;通過軟件&#xff08;數據庫管理系統&#xff0c;DBMS&#xff09;來實現數據的高效存儲、查詢、更新和管理。通過文件存儲數據適用于少量的數據&#xff0c;而當擁有…

Django REST Framework中的序列化器類和視圖類

序列化器類 一、Serializer序列化類 Serializer是DRF的序列化器基類&#xff0c;提供基本功能&#xff0c;使用Serializer類需要自己定義字段名稱和類型。 BookSerializer(Serializer):name serializers.CharField()price serlializers.IntegerField()date serlializers.…

圖像分類數據集

《動手學深度學習》-3.5-學習筆記 # 通過ToTensor實例將圖像數據從PIL類型變換成32位浮點數格式&#xff0c; # 并除以255使得所有像素的數值均在0&#xff5e;1之間 trans transforms.ToTensor()#用于將圖像數據從 PIL 圖像格式&#xff08;Python Imaging Library&#xff…

架構師面試(十五):熔斷設計

問題 某電商平臺經常需要在大促運營活動中暫停評論、退款等業務&#xff0c;基于服務治理的設計理念&#xff0c;我們需要對該電商平臺微服務系統的【服務熔斷】進行設計&#xff0c;對此下面描述中說法正確的有哪幾項呢&#xff1f; A. 服務管控系統管理著平臺中所有服務之間…

Ubuntu20.04安裝運行DynaSLAM

目錄 一、安裝Anaconda 二、相關依賴庫安裝 1、boost安裝 2、Eigen 3安裝 3、opencv安裝 4、Pangolin安裝 三、配置Mask_RCNN環境 四、DynaSLAM編譯 五、DynaSLAM運行 一、安裝Anaconda 打開以下鏈接&#xff1a; Index of / 下載和自己系統匹配的安裝包。這里下…

X86 RouterOS 7.18 設置筆記三:防火墻設置(IPV4)

X86 j4125 4網口小主機折騰筆記五&#xff1a;PVE安裝ROS RouterOS X86 RouterOS 7.18 設置筆記一&#xff1a;基礎設置 X86 RouterOS 7.18 設置筆記二&#xff1a;網絡基礎設置(IPV4) X86 RouterOS 7.18 設置筆記三&#xff1a;防火墻設置(IPV4) X86 RouterOS 7.18 設置筆記四…

從 YOLOv1 到 YOLOv2:目標檢測的進化之路

引言 你有沒有想過&#xff0c;當你用手機拍一張照片&#xff0c;里面的人、車、狗是怎么被自動識別出來的&#xff1f;這背后靠的就是目標檢測技術。目標檢測是計算機視覺中的一個重要領域&#xff0c;它不僅要回答“圖片里有什么”&#xff0c;還要告訴你“這些東西在哪里”…

數據的存儲---整型、浮點型

目錄 一、整型在內存中的存儲 1. 原碼、反碼、補碼 2. 大端與小端 二、浮點數在內存中的存儲 1.浮點數的存 2. 浮點數的取 3. 題目解析 一個變量的創建需要在內存中開辟空間&#xff0c;而開辟的空間大小是由數據類型決定的。下面我們就來討論一下整型、浮點型在內存中的…

Java 大視界 -- Java 大數據在智能教育虛擬實驗室建設與實驗數據分析中的應用(132)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

??Jolt -- 通過JSON配置來處理復雜數據轉換的工具

簡介&#xff1a;一個能夠通過JSON配置&#xff08;特定的語法&#xff09;來處理復雜數據轉換的工具。 比如將API響應轉換為內部系統所需的格式&#xff0c;或者處理來自不同來源的數據結構差異。例如&#xff0c;將嵌套的JSON結構扁平化&#xff0c;或者重命名字段&#xff0…

47.全排列 II

47.全排列 II 力扣題目鏈接 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,2] 輸出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 輸入&#xff1a;nums [1,2,3] 輸出…

centos沒有ll

vi /etc/bashrc alias ll‘ls -l’ source /etc/bashrc

04 1個路由器配置一個子網的dhcp服務

前言 這是最近一個朋友的 ensp 相關的問題, 這里來大致了解一下 ensp, 計算機網絡拓撲 相關基礎知識 這里一系列文章, 主要是參照了這位博主的 ensp 專欄 這里 我只是做了一個記錄, 自己實際操作了一遍, 增強了一些 自己的理解 當然 這里僅僅是一個 簡單的示例, 實際場景…

網絡空間安全(31)安全巡檢

一、定義與目的 定義&#xff1a; 安全巡檢是指由專業人員或特定部門負責&#xff0c;對各類設施、設備、環境等進行全面或重點檢查&#xff0c;及時發現潛在的安全隱患或問題。 目的&#xff1a; 預防事故發生&#xff1a;通過定期的安全巡檢&#xff0c;及時發現并解決潛在的…

在IGH ethercat主站中Domain和Entry之間的關系

在 IGH EtherCAT 主站中&#xff0c;“domain”&#xff08;域&#xff09;和 “entry”&#xff08;條目&#xff09;存在著緊密的關系&#xff0c;具體如下&#xff1a; 數據組織與管理方面&#xff1a;“domain” 是 EtherCAT 主站中用于管理和處理從站配置、數據映射和數據…

信息學奧賽一本通 1449:【例題2】魔板

題目 1449&#xff1a;【例題2】魔板 分析 首先注意&#xff1a;輸入是按順時針給出的&#xff0c;但我們處理時需要按正常順序排&#xff0c;可以用以下代碼讀入 string s(8, 0); // 初始化全零字符串 cin>>s[0]>>s[1]>>s[2]>>s[3]; cin>>…

Unity開發的抖音小游戲接入抖音開放平臺中的流量主(抖音小游戲接入廣告)

前言:作者在進行小游戲審核版本的過程中,碰到了下列問題,所以對這個抖音小游戲接入廣告研究了下。 還有就是作者的TTSDK版本號是6.2.6,使用的Unity版本是Unity2022.3.29f1,最好和作者的兩個版本號保持一致,因為我發現TTSDK舊版的很多函數在新版中就已經無法正常使用了,必…

【xv6操作系統】系統調用與traps機制解析及實驗設計

【xv6操作系統】系統調用與traps機制解析及實驗設計 系統調用相關理論系統調用追溯系統調用實驗設計Sysinfo&#x1f6a9;系統調用總結&#xff08;結合trap機制&#xff09; traptrap機制trap代碼流程Backtrace實驗alarm實驗 系統調用 相關理論 隔離性&#xff08;isolation)…

Docker文件夾上傳秘籍Windows下的高效傳輸之道

哈嘍,大家好,我是木頭左! 一、理解Docker容器與Windows文件系統的差異 在深入探討如何從 Windows 系統將文件夾及遞歸文件夾和文件上傳到 Docker 容器之前,有必要先明晰 Docker 容器與 Windows 文件系統之間存在的本質差異。 (一)Docker 容器的文件系統特性 Docker 容…