新的开始吧

news2024/10/6 18:32:51

项目答辩终于结束了:

学习规划

下面先对自己的目前的情况来说:

学长学姐让我先把vue和boot学完,所以我打算先把vue3和boot学一下,但是每天还要花一点时间在六级的听力和阅读上面,还有就是算法;

下面进行一天的具体安排:

11.15争取晚上十二点学完vue3,然后在他们答辩的时候把boot学一下;周五写试着写一下算法比赛,六级的话完成指定软件上的任务;

学习总结

vue两种风格:

选项式:API(vue2)

组合式:API(vue3)

创建vue项目名称不要用大写;

vue项目文件:

.vscode工具配置文件;

node_modules支持Vue项目运行依赖的文件夹:

public资源文件夹

src源码文件夹

git的忽略文件

index.html文件:入口html文件

package.json信息描述文件

README.md注释文件

vite.config.js vue配置文件

文本插值模板语法(双大括号语法)

可以是很多类型,到最后都可以转为文本:

<template>
 <p>{{ msg }}</p>

</template>

<script>
export default{
  data()
  {
    return {
      msg:"神奇的魔法"
    }
  }
}

</script>

还可以用js表达式,但是是要有返回值的表达式,单纯的语句是不行的;要想插入html标签可以用v-html标签,因为{{}}两个大括号会将传过来的值转换为纯文本,像下面的例子

<template>
 <p>{{ msg }}</p>
 <p v-html="rawHtml"></p>

</template>

<script>
export default{
  data()
  {
    return {
      msg:"神奇的魔法",
      rawHtml:"<a href='https://xinghuo.xfyun.cn/desk'>星火问答模型</a>"
    }
  }
}

</script>


vue属性绑定:

标签里面的属性绑定用v-bind属性:

下面是一个例子以及渲染出来的结果:

<script>
export default{
  data(){
    return{
      dynamicClass:"active"
    }
  }
}

</script>

<template>

<p v-bind:class= dynamicClass>笑死了</p>
</template>

注意:如果这个要绑定的属性是null或者undefined,则不会渲染该属性,当然v-bind也可以省略只留下冒号是他的简写方式;除了字符串类型,布尔类型也是可以的,使用双引号括号起来,可以动态绑定多个属性的js对象,语法是这样的:

<script>
export default{
  data(){
    return{
      dynamicClass:"active",
      objectOfAttrs:{
      id:"appid",
      class:"appClass"
      }

    }
  }
}

</script>

<template>
<!-- 两个class分开写会自动合并也不会报错 -->
<p v-bind:class= dynamicClass v-bind="objectOfAttrs">笑死了</p>
</template>

如果在某个vue文件里面运行但是并没有出现渲染,可能是没有在对应的app.vue里面去引入对应的文件 ;

条件渲染:

v-if,v-else,v-if-else

<template>
    <h3>条件渲染</h3>
    <div v-if="flag">你能看见我吗</div>
    <div v-else>那你还是看看我吧</div>
    <div v-if="type=='A'">A</div>
    <div v-else-if="type=='B'">B</div>
    <div v-else-if="type=='C'">C</div>
    <div v-else>not a/b/c</div>
</template>
<script>
export default {
   
        data () {
            return {
                flag:false,
                type:"D"
            }
        }
    
}
</script>

v-show   VS   v-if:

列表渲染:

<template>
    <h3>列表渲染</h3>
    <p v-for="item in names">{{ item }}</p>
</template>
<script>

      export default{
        data(){ 
            return{
                names:["小麻子","小饺子","小卷卷"]

            }
        }
 
      }
</script>

也可以读取JSON格式的数据,比如下面的代码:

<template>
    <h3>列表渲染</h3>
    <p v-for="item in names">{{ item }}</p>
    <div v-for="item in result">
        <div>{{ item.title }}</div>
        <img :src="item.avatar" >
    </div>
</template>
<script>

      export default{
        data(){ 
            return{
                names:["小麻子","小饺子","小卷卷"],
                result:[
                    {"id":21113, "title":"我真的笑死了","avatar":"https://cn.bing.com/images/search?q=%E5%A5%BD%E7%9C%8B%E7%9A%84%E5%9B%BE%E7%89%87%E5%A3%81%E7%BA%B8&FORM=IQFRBA&id=985463A26E79383AD02B13F646EE714A578B2449"},
                    {"id":21121,"title":"我要提升自己,让自己变得很厉害很厉害","avatar":"https://cn.bing.com/images/search?q=%E5%A5%BD%E7%9C%8B%E7%9A%84%E5%9B%BE%E7%89%87%E5%A3%81%E7%BA%B8&FORM=IQFRBA&id=80FEE061772B98718F21F1E8D46994176E042DA1"}

                ]

            }
        }
 
      }
</script>

有可选参数是数组的下标,还有就是in可以用of来替换;

还可以遍历一个对象的所有属性:

<template>
    <h3>列表渲染</h3>
    <p v-for="(item,index) of names">{{ item }}--{{ index }}</p>
    <div v-for="item in result">
        <div>{{ item.title }}</div>
        <img :src="item.avatar" >
    </div>
    <div v-for="(value,key,index) of personInfo">{{ value }}---{{ key }}---{{ index }}</div>
</template>
<script>

      export default{
        data(){ 
            return{
                names:["小麻子","小饺子","小卷卷"],
                result:[
                    {"id":21113, "title":"我真的笑死了","avatar":"https://cn.bing.com/images/search?q=%E5%A5%BD%E7%9C%8B%E7%9A%84%E5%9B%BE%E7%89%87%E5%A3%81%E7%BA%B8&FORM=IQFRBA&id=985463A26E79383AD02B13F646EE714A578B2449"},
                    {"id":21121,"title":"我要提升自己,让自己变得很厉害很厉害","avatar":"https://cn.bing.com/images/search?q=%E5%A5%BD%E7%9C%8B%E7%9A%84%E5%9B%BE%E7%89%87%E5%A3%81%E7%BA%B8&FORM=IQFRBA&id=80FEE061772B98718F21F1E8D46994176E042DA1"}

                ],
                personInfo:
                {
                //对于对象来说上面会有三个属性value,key,index
                  "id":11111,
                  "name":"小饺子",
                  "signature":"我是一只小小小鸟"
                  
                }

            }
        }
 
      }
</script>

小插曲

还有就是两个在实践敲代码出现了两个问题以及解决方案:

第一个问题,在用v-for的时候报错,配置不同表达方式不同,解决方案:

v-for报错及其解决方案

第二个问题:在关于列表渲染的时候如果用了第二个参数但是没有使用的话就会报错,如果不用的话可以不选,可以看看这个博客:

同时解释一下:

vue默认按照就地更新策略:

这样会消耗很大的性能,所以我们可以通过索引的方式来优化,所以还是建议用刚开始带有key的 :

下面是有关的例子:

<template>
    <h3>key属性添加</h3>
    <div v-for=" (item,index) of result" :key="index">{{ item }}</div>
</template>
<script>

   export default{
    data(){
        return{
            result:["小麻子","小饺子","小卷卷"]

        }
    }
   }
</script>

但是在实际工作场景中,我们一般的话就是要将数据的唯一索引作为key,比如这个例子里面是将id作为唯一索引 :

温馨提示:

index第二个可选参数报错及其解决

还有就是穿插一下自己前面几个写代码的时候容易犯的错误还不容易被发现的:

1.总是忘记返回的两个数据之间要用逗号间隔;

2.返回的数据里面数值和布尔值不用双引号;

3.属性都要用概括,而且数组名和数组之间也要用引号

 事件处理:

内联事件处理器:

<template>
    <h3>内联事件处理器</h3>
    <button v-on:click="count++">按钮</button>
    <div>{{ count }}</div>
    
</template>
<script>
export default{
    data()
    {
        return{
            count:0
        }
    }
}

</script>

方法事件处理器:

注意,要将data里面的数据放到方法里面一起用的话,可以在data的同级创建一个methods:{}里面放所有的方法,下面是方法事件处理器的举例:

<template>
    <h3>方法处理器</h3>
    <button @click="myClick">按钮</button>
    <div>{{ count }}</div>
    
</template>
<script>
export default{
    data()
    {
        return{
            count:0
        }
    },
    methods: {
        myClick()
        {
            this.count++;
            

        }
    }
}

</script>

事件传参

vue中的event对象就是原生的js对象;

下面是一个传递参数的demo:

<template>
    <h3>事件传参</h3>
    <button @click="myClick(item)" v-for="(item,index) in names" :key="index">{{ item }}</button>

    <div>{{ count }}</div>
    
</template>
<script>
export default{
    data()
    {
        return{
            count:0,
            names:["haha","hehe","wuyu"]
        }
    },
    methods: {
        myClick(msg)
        {
           console.log(msg)
            

        }
    }
}

</script>

注意:如果传入的函数没有传参,这是就可以在方法上面加上方法本身参数,但是如果传递了参数,还想要传递方法参数,这时候可以通过这种方法来额外获得(加一个$event):

<template>
    <h3>事件传参</h3>
    <button @click="myClick(item,$event)" v-for="(item,index) in names" :key="index">{{ item }}</button>

    <div>{{ count }}</div>
    
</template>
<script>
export default{
    data()
    {
        return{
            count:0,
            names:["haha","hehe","wuyu"]
        }
    },
    methods: {
        myClick(msg,e)
        {
           console.log(msg);
           console.log(e.target);
            

        }
    }
}

</script>

事件修饰符:

.prevent表示阻止默认事件,(比如点击a标签就会跳转到对应的href的默认事件),.stop表示阻止冒泡事件,下面是对应的例子:

<template>
    <h3>事件修饰符</h3>
    <a @click.prevent="myClick" href="https://blog.csdn.net/qq_43617869/article/details/111453185#:~:text=%E5%A6%82%E4%BD%95%E5%9C%A8vscode%E4%B8%AD%E6%94%BE%E5%A4%A7%E7%BC%A9%E5%B0%8F%E4%BB%A3%E7%A0%81%201%20%E4%BE%9D%E6%AC%A1%E7%82%B9%E5%87%BB%E2%80%9C%E6%96%87%E4%BB%B6%E2%80%9D-%E2%80%9C%E9%A6%96%E9%80%89%E9%A1%B9%E2%80%9D-%E2%80%9C%E8%AE%BE%E7%BD%AE%E2%80%9D%E3%80%82%202%20%E7%84%B6%E5%90%8E%E7%82%B9%E5%87%BB%22%E5%9C%A8settings.json%E4%B8%AD%E7%BC%96%E8%BE%91%22%E3%80%82,3%20%E5%9C%A8setting%E6%B7%BB%E5%8A%A0%E5%A6%82%E4%B8%8B%E4%BB%A3%E7%A0%81%EF%BC%8C%E6%B7%BB%E5%8A%A0%E4%B9%8B%E5%90%8E%E8%AE%B0%E5%BE%97%E5%9C%A8%E5%89%8D%E4%B8%80%E5%8F%A5%E7%9A%84%E7%BB%93%E5%B0%BE%E5%A4%84%E5%8A%A0%E4%B8%8A%E8%8B%B1%E6%96%87%E7%9A%84%E9%80%97%E5%8F%B7%22%2C%22%E3%80%82%204%20%22editor.mouseWheelZoom%22%3A%20true">我的博客</a>
   <div @click="myClickCopy"><div @click.stop="myClick"></div></div>
    
</template>
<script>
export default{
    data()
    {
        return{
            count:0,
            names:["haha","hehe","wuyu"]
        }
    },
    methods: {
        myClick(e)
        {
           
           console.log(e.target);
           console.log("small");
            
        },
        myClickCopy()
        {
            console.log("big");
        }

    }
}

</script>

数组变化侦测:

<t<template>
    <!-- 有些方法是可以被识别让ui更新的,但是有些是不可以的 -->
    <h3>数组变化侦听</h3>
    <div v-for="(name,index) in names" :key="index">{{ name }}</div>
    <button @click="addSome">添加</button>
</template>
<script>
    export default{
        data(){
            return{
                  names:["mazi","juanjuan","jiaozi"]
            }
          
        },
        methods: {
            addSome()
            {

                //第一种可以引起UI变化
                //this.names.push("笑哈哈");
                //第二种不可以引起UI变化
                this.names.concat(["笑嘻嘻"]);
                //第二种解决方案,可以认为合并之后的是创建了一个新的数组,而不是原来的
                // this.names=this.names.concat(["笑嘻嘻"]);
                console.log(this.names);


            }
        }
    }
</script>

后面才发现这是vue2的内容,下面才是vue3;

vue3:

认识vue3的文件根目录

这里介绍几个其中的特点:

App.vue

<!-- setup表示组合式API可以在script里面使用 -->
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import TheWelcome from './components/TheWelcome.vue'
</script>

<template>
  <!-- 可以在template里面放置多个根元素 -->
  <header>
    <img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" />

    <div class="wrapper">
      <HelloWorld msg="You did it!" />
    </div>
  </header>

  <main>
    <TheWelcome />
  </main>
</template>

<style scoped>
header {
  line-height: 1.5;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }
}
</style>

main.js

import './assets/main.css'
// 入口文件
// createApp创建应用实例,保证了每个实例的封闭独立性
import { createApp } from 'vue'
import App from './App.vue'
// 提供id是app的挂载点
createApp(App).mount('#app')

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  </head>
  <body>
    <!-- 挂载到id是app的盒子里面 -->
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>

初识setup

1.执行时机,setup比beforeCreate还要早;

2.所以this是undefined,this不利于组合式封装;

3.如果没有在script加上setup,数据和函数需要在最后return才能在模板中应用;

setup原理:语法糖原理

示例代码:

<!-- setup表示组合式API可以在script里面使用 -->
<script setup>
const message = 'this is a message'
const logMessage = ()=>{
  console.log(message);

}

</script>

<template>
<div>{{ message }}</div>
<button @click="logMessage">按钮</button>
</template>

ref和reactive关键字

reactive:接收对象数据的类型参数传入并返回一个响应式对象(随着数值变化,UI自动更新);也就是说,在这里面没有用这个包起来的就不是响应式数据,就不会随着数值的变化而变化

实例:

<!-- setup表示组合式API可以在script里面使用
<script setup>
const message = 'this is a message'
const logMessage = ()=>{
  console.log(message);

}

</script>

<template>
<div>{{ message }}</div>
<button @click="logMessage">按钮</button>
</template>
 -->

<script setup>
import { reactive } from 'vue';
const state=reactive({
  count:100

})
const logCount=()=>
{
  state.count++;
}
</script>
<template>
<h3>reactive关键字</h3>
<div>{{ state.count }}</div>
<button @click="logCount">按钮</button>
</template>

ref:接受简单类型或者对象,然后返回一个响应式对象:

本质上还是在原有传入数据的基础上再包了一层对象,包成了复杂类型;底层还是借助reactive实现,注意在脚本中.value要写上,但是在template中就不需要了;

实例:

<script setup>
import { ref } from 'vue';
const state=ref(100)
const logCount=()=>
{
  state.value++;
}
</script>
<template>
<h3>reactive关键字</h3>
<div>{{ state}}</div>
<button @click="logCount">按钮</button>
</template>

计算属性:

两种方式:

方式一:只读

<script setup>
import { ref } from 'vue';
import{ computed } from 'vue';
const state=ref(100)
const list=ref([1,2,3,4,5,6]);
const addInfo=()=>
{
  list.value.push(state.value);
}
const computedList=computed(()=>{
  return list.value.filter(item=>item>2)
})
</script>
<template>
<h3>computed关键字</h3>
<div>{{ list }}</div>
<div>{{ computedList }}</div>
<button @click="addInfo">按钮</button>
</template>

方式2:可读可写:



<script setup>
import { ref } from 'vue';
import{ computed } from 'vue';
const state=ref(100)
const list=ref([1,2,3,4,5,6]);
const addInfo=()=>
{
  list.value.push(state.value);
}
const computedList=computed({
  get:()=> list.value.filter(item=>item>2),
  set:(val)=>list.value.push(val+1)
})
</script>
<template>
<h3>computed关键字</h3>
<div>{{ list }}</div>
<div>{{ computedList }}</div>
<button @click="addInfo">按钮</button>
</template>

 具体可写属性调用可以参考:Vue Computed中get 和set讲解_computed get set-CSDN博客

watch:

watch(ref对象,(newValue,oldValue)=>{...})单个对象

<!-- setup表示组合式API可以在script里面使用
<script setup>
const message = 'this is a message'
const logMessage = ()=>{
  console.log(message);

}

</script>

<template>
<div>{{ message }}</div>
<button @click="logMessage">按钮</button>
</template>
 -->
<!-- 
<script setup>
import { reactive } from 'vue';
const state=reactive({
  count:100

})
const logCount=()=>
{
  state.count++;
}
</script>
<template>
<h3>reactive关键字</h3>
<div>{{ state.count }}</div>
<button @click="logCount">按钮</button>
</template> -->

<!-- 
<script setup>
import { ref } from 'vue';
const state=ref(100)
const logCount=()=>
{
  state.value++;
}
</script>
<template>
<h3>reactive关键字</h3>
<div>{{ state}}</div>
<button @click="logCount">按钮</button>
</template> -->

<!-- 
<script setup>
import { ref } from 'vue';
import{ computed } from 'vue';
const state=ref(100)
const list=ref([1,2,3,4,5,6]);
const addInfo=()=>
{
  list.value.push(state.value);
}
const computedList=computed({
  get:()=> list.value.filter(item=>item>2),
  set:(val)=>list.value.push(val+1)
})
</script>
<template>
<h3>computed关键字</h3>
<div>{{ list }}</div>
<div>{{ computedList }}</div>
<button @click="addInfo">按钮</button>
</template> -->

<script setup>
import { ref,watch} from 'vue';

const count=ref(1);
const nickName=ref("张三");
const setCount=()=>
{
  count.value=2;

}
const setNickName=()=>
{
  nickName.value="利斯";
}

watch(count,(newValue,oldValue)=>{
console.log(newValue,oldValue);
});

</script>

<template>
  <div>{{ count }}</div>
  <button @click="setCount">改数字</button>
  <div>{{ nickName }}</div>
  <button @click="setNickName">改昵称</button>

</template>

watch([ref对象1,ref对象2],(newValue,oldValue)=>{...})


<script setup>
import { ref,watch} from 'vue';

const count=ref(1);
const nickName=ref("张三");
const setCount=()=>
{
  count.value=2;

}
const setNickName=()=>
{
  nickName.value="利斯";
}

watch([count,nickName],(newValues,oldValues)=>{
console.log(newValues,oldValues);
});

</script>

<template>
  <div>{{ count }}</div>
  <button @click="setCount">改数字</button>
  <div>{{ nickName }}</div>
  <button @click="setNickName">改昵称</button>

</template>

可以额外配置立刻触发回调:(也就是一进页面就触发一次),


<script setup>
import { ref,watch} from 'vue';

const count=ref(1);
const nickName=ref("张三");
const setCount=()=>
{
  count.value=2;

}
const setNickName=()=>
{
  nickName.value="利斯";
}

watch([count,nickName],(newValues,oldValues)=>{
console.log(newValues,oldValues);
},
{
  immediate:true
});

</script>

<template>
  <div>{{ count }}</div>
  <button @click="setCount">改数字</button>
  <div>{{ nickName }}</div>
  <button @click="setNickName">改昵称</button>

</template>

对于ref来说,只能浅层监视,也就是只有出现新的对象的时候才会被发现,二reactive默认的是强制开启了深层监视,里面的成员值变化也可以看见;但是对象的话无法正确获取旧的值:


<script setup>
import { ref,watch} from 'vue';
const userInfo=ref({
   age:18,
   nickName:"zhangsan"
})
const setUserInfo=()=>{
  userInfo.value.age++;
}

watch(userInfo,(newValues,oldValues)=>{
console.log(newValues,oldValues);
},
{
    deep:true
});

</script>

<template>
  <button @click="setUserInfo">改信息</button>
  <div>{{ userInfo}}</div>
</template>

精确侦听对象的某个属性:

<script setup>
import { ref,watch} from 'vue';
const userInfo=ref({
   age:18,
   nickName:"zhangsan"
})
const setUserInfo=()=>{
  userInfo.value.nickName="笑死";
}

watch(()=>userInfo.value.age,(newValues,oldValues)=>{
console.log(newValues,oldValues);
},
{
    deep:true
});

</script>

<template>
  <button @click="setUserInfo">改信息</button>
  <div>{{ userInfo}}</div>
</template> 

生命周期函数 

<script setup>
// beforeCreate 和created的相关代码
// 一律放在setup中执行
// 一进入页面的请求

import { onMounted } from 'vue';

// 如果有些代码需要在mounted生命周期中执行
onMounted(()=>
{

})
</script>

还有一些还没来的及写总结,但是这一周的执行力是真的不高,什么都没有真正完成,新的一周要加油啊?然后就是看到一段特别有感触的话,虽然已经不适合我这个年龄了,但是性质还是差不多的:

作者:
链接:https://www.zhihu.com/question/336477952/answer/1124121900
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本人今年高二,家里最大的一个孩子。我给你讲个事儿,我的壁纸是我自己写的便签,上面写着明天和意外,你永远不知道哪个先来。在3月21日,这一天我和往常一样咸鱼,桌上放着堆着的作业,不想写,不会写,放着吧,想着等到要交的时候我再写。然后,我妈突然在房间喊我和我妹,声音是颤抖的。我跑过去,就看见我妈躺在床上不得动弹,捂着心脏。我顿时就慌了神,也不知道该怎么办,只能去拼命去喊住在我们家对面的小婶。当时是真的很害怕。后来我小婶过来了,我妈当时就靠着我小婶哭了,说她难受,说她冷,明明她还盖着一层很厚的被子。后来,我爸回来了,载着我妈和我小婶去医院急诊。那一晚,我整夜没有合眼。而我小婶也是半夜三四点才回家。我就在窗边听她说。她说,我妈就坐在急诊室门口,心率从九十多飚到一百6,一百七,忽上忽下。又说,医生说:如果,我妈不乖乖住院的话,他也不敢保证我妈会怎样。还说,我爸当时去交钱的时候,全身上面只有几百块钱,钱也不够。还有我妈当时和她说,怎么办,家里欠着别人债没还,孩子也还没养大。怎么办,我也不知道,但那一次确确实实意识到,如果,意外来了,我什么也干不了。幸好,后来我妈康复出院了,检查最后的结果是没有什么大问题。真的,对于一个普通家庭来说,目前最快速的方法就是高考。不是说其他方法不行,但谁能保证意外在你准备好的时候就来呢?你能做的只有在意外来临之前,让自己更强。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

换根dp学习笔记

最近模拟赛经常做到&#xff0c;于是我就学习了一下。 算法原理 换根 d p dp dp的题一般都会给出一个无根树&#xff0c;因为以不同的点为根时&#xff0c;问题的答案不一样&#xff0c;所以它会让你输出答案的最大或最小值。 暴力去做这种题&#xff0c;就是以每个点为根然…

HarmonyOS 学习记录

时光荏苒,岁月如梭,韶华不负,未来可期。转眼间已经30岁了&#xff0c;学习的重要性不言而喻&#xff0c;在接下来的日子里记录下自己学习HarmonyOS的过程。增加一下知识储备&#xff0c;防患于未然嘛 不得不说华为的开发文档写的不错&#xff0c;开发工具直接安装后自动配置环境…

RLHF讲解

RLHF包含了两个至关重要的步骤&#xff1a; 训练Reward Model用Reward Model和SFT Model构造Reward Function&#xff0c;基于PPO算法来训练LLM frozen RMfrozen SFT ModelActor π Φ R L \pi_{\Phi}^{R L} πΦRL​ initialized from SFT ModelCritic V η V_\eta Vη​ i…

基于springboot实现结合疫情情况的婚恋系统【项目源码】

基于springboot实现结合疫情情况的婚恋系统演示 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计&#xff0c;其不仅继承了Spring框架原来有的优秀特性&#xff0c;而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原…

头歌答案HTML——基础

目录 HTML——基础 第1关&#xff1a;初识HTML&#xff1a;简单的Hello World网页制作 任务描述 第2关&#xff1a;HTML结构&#xff1a;自我简介网页 任务描述 HTML——基本标签 第1关&#xff1a;创建第一个 HTML 标签 任务描述 第2关&#xff1a;创建 任务描述 …

【Liunx】服务器解决 跨域问题

首先打开后端的站点 在站点设置内打开 "配置文件" 然后在 “server_name 本机ip ”下方添加跨域配置,添加成功后重启nginx即可 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, POST, OPTIONS, PUT, DELETE; add_header A…

使用Python分析时序数据集中的缺失数据

大家好&#xff0c;时间序列数据几乎每秒都会从多种来源收集&#xff0c;因此经常会出现一些数据质量问题&#xff0c;其中之一是缺失数据。 在序列数据的背景下&#xff0c;缺失信息可能由多种原因引起&#xff0c;包括采集系统的错误&#xff08;例如传感器故障&#xff09;…

ROS基础知识复习

【置顶】感谢参考&#xff1a;https://zhuanlan.zhihu.com/p/662074088 0.背景 工作一年多没有做 ROS 相关的开发了&#xff0c;最近找工作想做回这一块来&#xff0c;根据参考内容&#xff0c;抽时间给这边的基础知识敲一遍复习一下 1.环境检查 打开了之前的笔记本&#x…

AOMedia发布免版税沉浸音频规范IAMF

11月10日&#xff0c;开放媒体联盟&#xff08;AOMedia&#xff09;发布了旗下首个沉浸式音频规范IAMF&#xff08;https://aomediacodec.github.io/iamf/&#xff09;&#xff0c;IAMF是一种编解码器无关的容器规范&#xff0c;可以携带回放时间渲染算法和音频混音的信息&…

git分支与tag标签的介绍与使用)

git分支与tag标签的介绍与使用 一.什么是分支与标签1.2.开发环境分层 二git分支介绍2.1分支操作2.2.IDEA中操作分支 三、Git标签的讲解3.1.GitBashHere操作标签3.2. IDEA中操作标签 一.什么是分支与标签 分支&#xff08;Branches&#xff09;&#xff1a; 功能开发&#xff…

html菜单的基本制作

前面写过一点网页菜单的博文&#xff1b;下面再复习一些技术要点&#xff1b; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…

GetSimple CMS忘记密码

GetSimple CMS是一个超简单的 CMS&#xff0c;适合建立个人网站等只需要极少数页面的网站。在站上百科上&#xff0c;是这么说的&#xff1a; GetSimple是一款基于XML存储数据的开源内容管理系统&#xff0c;且易于安装和定制&#xff0c;无需MySQL支持。提供撤销保护和备份功能…

RK3399平台开发系列讲解(应用篇)文件属性 stat 函数

🚀返回专栏总目录 文章目录 一、struct stat 结构体二、st_mode 变量三、struct timespec 结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux 下可以使用 stat 命令查看文件的属性,其实这个命令内部就是通过调用 stat()函数来获取文件属性的,stat 函数是 …

详解Java:抽象类和接口

前言&#xff1a;在前文中我们学习认知到了多态的使用和相关知识&#xff0c;算是打开了Java世界的大门&#xff0c;而本次要分享的抽象类和接口则是我们在面向对象编程中最常用的编程结构之一 目录 一.抽象类 abstract 抽象类特性 二.接口 语法规则 接口使用 接口特…

[笔记]深入解析Windows操作系统《番外》windows关键进程解释

文章目录 前言一、Linux起源与发展二、什么是shell1.什么是Shell 总结 前言 一、Linux起源与发展 二、什么是shell 1.什么是Shell 总结 以上就是今天要讲的内容&#xff0c;本文仅仅简单介绍了linux命令行的使用。 参考&#xff1a; shells 概念 centOS7中的几个Ctrl组合…

原型模式 rust和java的实现

文章目录 原型模式介绍优点缺点使用场景 实现java 实现rust 实现 rust代码仓库 原型模式 原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当…

Spring-ProxyFactory

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定是使用JDK动态代理还是CGLIB技术&#xff1a; public class DefaultAopProxyFactory implements AopProxyFactory, Serializable {Overridepublic AopProxy createAopProxy(AdvisedSupport co…

59基于matlab的爬行动物搜索算法(Reptile search algorithm, RSA)

基于matlab的爬行动物搜索算法&#xff08;Reptile search algorithm, RSA&#xff09;一种新型智能优化算法。该算法主要模拟鳄鱼的捕食行为&#xff0c;来实现寻优求解&#xff0c;具有收敛速度快&#xff0c;寻优能力强的特点。程序已调通&#xff0c;可直接运行。 59matlab…

案例续集留言板

前端没有保存数据的功能,后端把数据保存下来(内存,数据库等等......) 前端代码如下 : <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

Centos, RockyLinux 常用软件安装汇总

一、基本指令&#xff1a; 命令作用clear清屏pwd显示当前路径cat / more显示文本文档uname -a查看当前版本hostnamectl查看当前版本cat /etc/redhat-release查看当前版本free查看剩余内存df -h[查看磁盘剩余空间]du -sh 查看文件夹名"dir"占用的空间lsof -i:8080查看…