【javaweb】学习日记Day2 - JavaScript入门

news2024/11/25 14:56:45

目录

一、引入方式

1、内部脚本

2、外部脚本

二、基础语法 

1、输出语句

2、定义变量类型

3、数据类型

4、运算符

(1)类型转换

5、函数

(1)方法一

(2)方法二

三、对象

1、Array数组

(1)定义

(2)特点

(3)数组常用方法

① length —— 数组长度

② forEach —— 遍历数组中有值的元素

简化版forEach   箭头函数

③ push —— 添加元素到数组末尾

④ splice —— 删除元素

2、String字符串

(1)定义

(2)字符串常用方法

① length —— 字符串长度

② charAt() —— 返回指定位置的字符

③ indexOf() —— 检索字符串下标

④ trim() —— 去除字符串两边空格

⑤ substring(strat,end) —— 提取字符串中两个指定索引间的字符

3、JSON

(1)JS自定义对象

(2)JSON定义

(3)JSON和JS互相转换方法

4、BOM  浏览器对象模型

(1)Window 浏览器窗口对象

① 属性

② 方法

(2)Navigator  浏览器对象

(3)Screen  屏幕对象

(4)History  历史记录对象

(5)Location  地址栏对象

5、DOM  文档对象模型

(1)Document  整个文本对象

① 根据id获取,返回单个Element对象

② 根据标签名获取,返回Element对象数组

③ 根据name属性获取,返回Element对象数组

④ 根据class属性获取,返回Element对象数组

(2)Element  元素对象

(3)Attribute  属性对象

(4)Text  文本对象

(5)Comment  注释对象

(6)DOM案例

四、事件监听

1、事件绑定

(1)通过HTML标签中的事件属性绑定

(2)通过DOM元素属性绑定

2、常见事件

3、案例 

五、Vue 前端框架 - 双向数据绑定

1、vue快速入门

2、Vue常用指令

(1)v-bind   v-model

① v-bind

② v-model

③ 效果演示

(2)v-on

(3)v-if   v-show

① v-if

② v-show

③ 效果演示

(4)v-for

3、Vue案例

4、Vue生命周期


一、引入方式

1、内部脚本

  • 代码必须位于<script></script>标签之间
  • 可以在html文档中放置在任意地方,放置任意数量的<script></script>
  • 一般把脚本置于<body>底部,可改善显示速度
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页</title>

    <script>
        alert('你在找这个框框吗?');
    </script>

</head>
<body>
    
</body>
</html>

2、外部脚本

  • 外部JS文件只包含JS代码,不包含<script>标签
<script src="js/demo.js"></script>

二、基础语法 

1、输出语句

  • 浏览器弹出警告框
alert("Hello World!");
  • 写入html,在浏览器显示
document.write("Hello World!");
  • 写入浏览器控制台
console.log("Hello World!");

2、定义变量类型

  • var:可以存放类型不同的变量,全局变量,可以重复声明
  • let:局部变量,所声明的变量只在let关键字所在的代码块内有效,不允许重复声明
  • const:声明一个只读的常量,值不可改变

3、数据类型

  • number:数字
  • string:字符串,单双引皆可
  • boolean
  • null
  • undefined:当声明的变量未初始化时,该变量的默认值为undefined
  • 使用 typeof 可以获取数据类型

4、运算符

== 会进行类型转换,===不会进行类型转换

var x=10;

alert(a=='10);     //true
alert(a==='10');   //false
alert(a===10);     //true

(1)类型转换

其他类型转换为数字 

alert(parseInt("12"));       //12
alert(parseInt("12ABC"));    //12
alert(parseInt("A12"));      //NaN

5、函数

(1)方法一

function add(a,b)
{
    return a+b;
}

var x=add(10,20);
alert(x);

(2)方法二

var add=function(a,b)
{
    return a+b;
}

var x=add(10,20);
alert(x);

三、对象

1、Array数组

(1)定义

var arr=new Array(1,2,3,4);

var arr=[1,2,3,4];

(2)特点

  • 数组长度可变,类型可变
var arr=new Array(1,2,3,4);
arr[10]=50;

console.log(arr[10]);   //50
console.log(arr[9]);    //undefine

arr[7]=true;
arr[6]="A";

console.log(arr);

(3)数组常用方法

① length —— 数组长度

var arr=new Array(1,2,3,4);
    
for(let i = 0; i< arr.length; i++) 
    console.log(arr[i]+" ");

② forEach —— 遍历数组中有值的元素

var arr=new Array(1,2,3,4);
arr[10]=50;

arr.forEach(function(e) {
    console.log(e);
});

//输出 1 2 3 4 50

for循环遍历所有元素,包括undefine

简化版forEach   箭头函数
arr.forEach((e)=>{ 
    console.log(e);
});

③ push —— 添加元素到数组末尾

    var arr=new Array(1,2,3,4);
    arr[10]=50;

    arr.push(7,8,9,10);
    console.log(arr);

④ splice —— 删除元素

splice(开始删除下标,删除个数)

    var arr=new Array(1,2,3,4);
    arr[10]=50;

    arr.splice(2,2); //删除3和4 splice(开始删除下标,删除个数)
    console.log(arr);

2、String字符串

(1)定义

    var s=new String("baby");

    var s1="consecutive";
    var s2='divine';

(2)字符串常用方法

① length —— 字符串长度

console.log(s.length);

② charAt() —— 返回指定位置的字符

console.log(s.charAt(2));

③ indexOf() —— 检索字符串下标

    var s1="consecutive";
    var s2='divine';

    console.log(s1.indexOf("ns"));  //2

④ trim() —— 去除字符串两边空格

    var s=new String("    baby    ");

    var s1="consecutive";
    var s2='divine';

    var t=s.trim();
    console.log(t);  //baby

⑤ substring(strat,end) —— 提取字符串中两个指定索引间的字符

含头不含尾

    var s=new String("    congratulation!    ");

    var s1="consecutive";
    var s2='divine';

    var t=s.trim();
    console.log(t.substring(1,6));  //ongra

3、JSON

(1)JS自定义对象

    var user={
        name:"Roye",
        age:20,
        gender:"女",
        eat() //括号内填参数列表
        {
            alert("吃饭饭!");
        }
    }

    alert(user.name);
    alert(user.age);
    alert(user.gender);
    user.eat();

(2)JSON定义

JSON就是通过JS对象标记法书写的文本,多用于数据载体,在网络进行数据传输,比如前后端的信息传输

var 变量名='{"key1":value1,"key2":value2}';

var userStr='{"name":"Tom","age":18,"addr":["西安","北京"]}';
value数据类型分为
数据类型形式
数字整数、浮点数
字符串双引号
逻辑值true false
数组方括号
对象花括号
null

(3)JSON和JS互相转换方法

    //将JSON字符串转换为JS对象
    var jsobject=JSON.parse(userStr);

    //将JS对象转换为JSON字符串
    var jsonstr=JSON.stringify(jsobject);
    var userStr='{"name":"Tom","age":18,"addr":["西安","北京"]}';

    //将JSON字符串转换为JS对象
    var obj=JSON.parse(userStr);

    alert(obj.name);
    //将JS对象转换为JSON字符串
    var jsonstr=JSON.stringify(obj);

    alert(jsonstr);

4、BOM  浏览器对象模型

BOM:允许JS与浏览器对话,JS将浏览器的各部分封装为对象

(1)Window 浏览器窗口对象

① 属性

  • history:对History对象的只读引用
  • location:用于窗口或框架的Location对象
    • location.href   获取网页地址
    • 跳转到其他网页 
    •     alert(location.href);
      
          location.href="https://blog.csdn.net/weixin_61639349?type=blog";
  • navigator:对Navigator对象的只读引用(导航仪)

② 方法

  • alert():显示带有一段消息和一个确认按钮的警告框
  • confirm():显示带有一段消息以及确认、取消按钮的对话框
    • 点击确认:true,点击取消:false
    •     var flag=confirm("确认要删除吗?");
          alert(flag);
  • setInterval():按照指定周期(以毫秒计时)来调用函数、计算表达式
    •     var i=0;
          setInterval(() => {
              i++;
              console.log("定时器执行了"+i+"次");
          }, 2000);

  • setTimeout():在指定毫秒数后弹出一次
    setTimeout(() => {
        alert("js");
    },3000);

(2)Navigator  浏览器对象

(3)Screen  屏幕对象

(4)History  历史记录对象

(5)Location  地址栏对象

5、DOM  文档对象模型

DOM:将标记语言的各部分封装为对应的对象

JS通过DOM,可以对HTML进行操作:

  • 改变HTML元素内容
  • 改变HTML元素样式CSS
  • 对HTML DOM事件作出反应
  • 添加和删除HTML元素

(1)Document  整个文本对象

① 根据id获取,返回单个Element对象

var h1=document.getElementById('h1');

② 根据标签名获取,返回Element对象数组

var tag=document.getElementsByTagName('tag');

③ 根据name属性获取,返回Element对象数组

var hobbys=document.getElementsByName('hobby');

④ 根据class属性获取,返回Element对象数组

var clss=document.getElementsByClassName('cls');
<body>
    <div class="cls">深海鳕鱼堡</div><br>
    <div class="cls">双层芝士牛堡</div><br>

    <input type="checkbox" name="food"> 生椰拿铁
    <input type="checkbox" name="food"> 爆浆阿华田奶茶
    <input type="checkbox" name="food"> 椰香咖喱鸡饭
</body>

</html>

<script>
    //将【深海鳕鱼堡】标签更改为【经典意式肉酱面】
    var div=document.getElementsByClassName("cls");
    var t=div[0];

    t.innerHTML="经典意式肉酱面";  //将文本内容更改为新的
</script>

(2)Element  元素对象

(3)Attribute  属性对象

(4)Text  文本对象

(5)Comment  注释对象

(6)DOM案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页</title>

    <style>
        #h1{
            display: block;
            margin: 0 auto;
        }

        .cls{
            text-align: center;
        }
    </style>
</head>


<body>
    <img id='h1' src="./dpimg/off.gif"><br><br>
    <div class="cls">深海鳕鱼堡</div><br>
    <div class="cls">双层芝士牛堡</div><br>

    <input type="checkbox" name="food"> 生椰拿铁
    <input type="checkbox" name="food"> 爆浆阿华田奶茶
    <input type="checkbox" name="food"> 椰香咖喱鸡饭
</body>

</html>

<script>
    //1、将灯泡点亮
    var img=document.getElementById("h1");
    img.src = "./dpimg/on.gif";

    //2、在所有div标签后加上字体
    var divs=document.getElementsByClassName("cls");
    for (let i = 0;i< divs.length; i++)  
    {
        var t=divs[i];
        if(i==0) t.innerHTML+=" <font color='red'>今日特卖七折起!</font>";
        else t.innerHTML+=" <font color='red'>超人气爆款!</font>";
    }

    //3、使复选框呈现选中状态
    var ins=document.getElementsByName("food");
    for (let i = 0; i < ins.length; i++) {
        const t = ins[i];
        t.checked=true;
    }

</script>

四、事件监听

1、事件绑定

(1)通过HTML标签中的事件属性绑定

<body>
    <input type="button" id="bt1" value="按钮1" onclick="on()">
</body>


<script>
    function on()
    {
        alert("哎呀呀!我被点击啦!");
    }
</script>
</html>

(2)通过DOM元素属性绑定

<body>
    <input type="button" id="bt2" value="按钮2">
</body>


<script>

    var t=document.getElementById("bt2").onclick=function()
    {
        alert("不要点我!痛啊!");
    }
</script>
</html>

2、常见事件

常见事件
事件名说明
onclick鼠标单击事件
onblur元素失去焦点
onfoucs元素获得焦点
onload某个页面或图像加载完成
onsubmit当表单提交时触发
onkeydown键盘某个键被按下
onmouseover鼠标被移到某元素上
onmouseout鼠标从某元素移开

3、案例 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页</title>

    <style>
        #h1{
            display: block;
            margin: 0 auto;
        }

        .cls{
            text-align: center;
        }

        .center{
            text-align: center;
        }
    </style>
</head>


<body>
    <img id='h1' src="./dpimg/off.gif"><br><br>
    <input type="button" value="点亮" onclick="on()" id="h1"><br>
    <input type="button" value="熄灭" onclick="off()" id="h1"><br>    
    
    <input type="text" id="h1" name="area" value="ROYE HAPPY" onfocus="lower()" onblur="upper()"><br>

    <div class="cls">深海鳕鱼堡</div><br>
    <div class="cls">双层芝士牛堡</div><br>

    <div class="center">
        <input type="checkbox" name="food"> 生椰拿铁
        <input type="checkbox" name="food"> 爆浆阿华田奶茶
        <input type="checkbox" name="food"> 椰香咖喱鸡饭<br><br>
    </div>

    <div class="center">
        <input type="button" value="全选" onclick="checkAll()" >
        <input type="button" value="反选" onclick="checkNull()">
    </div>
</body>

</html>

<script>
    //1、通过按钮控制灯泡亮暗
    function on()
    {
        var img=document.getElementById("h1"); //获取灯泡图片
        img.src="./dpimg/on.gif";

    }
    function off()
    {
        var img=document.getElementById("h1");
        img.src="./dpimg/off.gif";
    }

    //2、输入框聚焦后,显示小写;离焦后,显示大写
    function lower()
    {
        var txt=document.getElementsByName("area");
        txt[0].value=txt[0].value.toLowerCase();
    }

    function upper()
    {
        var txt=document.getElementsByName("area");  // 注意用name获取对象,获取的是数组!
        txt[0].value=txt[0].value.toUpperCase(); 
    }

    //3、在所有div标签后加上字体
    var divs=document.getElementsByClassName("cls");
    for (let i = 0;i< divs.length; i++)  
    {
        var t=divs[i];
        if(i==0) t.innerHTML+=" <font color='red'>今日特卖七折起!</font>";
        else t.innerHTML+=" <font color='red'>超人气爆款!</font>";
    }

    //4、全选:全部打勾;反选:全部取消
    var ck=document.getElementsByName("food");

    function checkAll()
    {
        for (let i = 0; i < ck.length; i++) {
            const e = ck[i];
            e.checked=true;
        }
    }

    function checkNull()
    {
        for (let i = 0; i<ck.length; i++) {
            const e = ck[i];
            e.checked=false;
        }
    }

</script>

五、Vue 前端框架 - 双向数据绑定

1、vue快速入门

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>



<body>
    <!-- 编写视图层展示 -->
    <div id="app">
        <input type="text" v-model="message">
         {{message}}    <!-- 插值表达式 -->

    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            message:"Hello Vue"
        }
    })
</script>
</html>

2、Vue常用指令

指令作用
v-bind为HTML标签绑定属性值,如设置href,css样式
v-model表单元素上创建双向数据绑定
v-on为HTML标签绑定事件
v-if条件性渲染某元素,判定为true渲染,否则不渲染
v-else-if
v-else
v-show根据条件展示某元素,区别在于切换的是display属性的值
v-for列表渲染,遍历

(1)v-bind   v-model

① v-bind

为 HTML标签 绑定属性值,如设置href,css样式

<a v-bind:href="url"> 容也同学 </a>

<a :href="url"> 容也同学 </a>

② v-model

在 表单 元素上创建双向数据绑定

<input type="text" v-model="url">

③ 效果演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>

<body>
    <!-- 编写视图层 -->
    <div id="app">
        <a :href="url">Roye的csdn博客</a><br>
        <a v-bind:href="url">神秘链接</a><br>

        <input type="text" v-model="url">
        
    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            url:"https://blog.csdn.net/weixin_61639349?spm=1000.2115.3001.5343"
        }
    })
</script>
</html>

当更改文本框的链接内容时,前两个链接地址也会跟着改变

       

 跟浏览器网站的搜索框是不是很像!

(2)v-on

为HTML标签绑定事件

<input type="button" value="按钮1" v-on:click="handle()">
<input type="button" value="按钮2" @click="handle()">
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>

<body>
    <!-- 编写视图层 -->
    <div id="app">
        <input type="button" value="按钮1" v-on:click="handle()">
        <input type="button" value="按钮2" @click="handle()">        
    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            url:"https://blog.csdn.net/weixin_61639349?spm=1000.2115.3001.5343"
        },
        methods:{
            handle:function(){
                alert('坚持就会胜利!');
            }
        }

    })
</script>
</html>

(3)v-if   v-show

① v-if

按条件渲染

<span v-if="age<=35">年轻人</span>       
<span v-else-if="age>35 && age<60">中年人</span>
<span v-else>老年人</span>

② v-show

按条件展示

<span v-show="age<=35">年轻人</span>

③ 效果演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>

<body>
    <!-- 编写视图层 -->
    <div id="app">
        年龄<input type="text" v-model="age">经判定,为:
        <span v-if="age<=35">年轻人</span>       
        <span v-else-if="age>35 && age<60">中年人</span>
        <span v-else>老年人</span>
        <br><br>

        年龄<input type="text" v-model="age">经判定,为:
        <span v-show="age<=35">年轻人</span>
        <span v-show="age>35 && age<60">中年人</span>
        <span v-show="age>=60">老年人</span>
    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            age:20,
        },
        methods:{

        }

    })
</script>
</html>

  

(4)v-for

<div v-for="(元素变量名-自定义 , 下标-从0开始) in 定义的数组"> {{显示的视图}}</div>

<div v-for="x in addr">{{x}}</div><br><br>

<div v-for="(x,i) in addr">{{i+1}}:{{x}}</div>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>

<body>
    <!-- 编写视图层 -->
    <div id="app">
        <div v-for="x in addr">{{x}}</div><br><br>

        <div v-for="(x,i) in addr">{{i+1}}:{{x}}</div>
    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            addr:["西安","北京","上海","福建"]
        },
        methods:{

        }
    })
</script>
</html>

 

3、Vue案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>

     <script src="./vue.js"></script> <!-- 引入js vue文件 -->
</head>

<body>
    <!-- 编写视图层 -->
    <div id="app">
        <table border="1" cellspacing="0" width="800px">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
                <th>等级</th>
            </tr>
             <tr align="center" v-for="(x,i) in users">   <!--遍历展示data的数据 -->
                <td>{{i+1}}</td>
                <td>{{x.name}}</td>
                <td>{{x.age}}</td>
                <td>
                    <span v-if="x.gender==1">男</span>
                    <span v-else>女</span>
                </td>
                <td>{{x.score}}</td>
                <td>
                    <span v-if="x.score>=90">优秀</span>
                    <span v-else-if="x.score<90 && x.score>=60">及格</span>
                    <span v-else style="color: red;">不及格</span>
                </td>
            </tr>
        </table>
    </div>
</body>

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{
            users:[
                {
                    name:"张曼",
                    age:42,
                    gender:2,
                    score:78
                },
                {
                    name:"百雀羚",
                    age:28,
                    gender:2,
                    score:59
                },{
                    name:"张晓军",
                    age:60,
                    gender:1,
                    score:45
                },{
                    name:"容宝",
                    age:20,
                    gender:2,
                    score:100
                }
            ]
        },
        methods:{

        }
    })
</script>
</html>

4、Vue生命周期

状态阶段周期
beforeCreate创建前
created创建后
beforeMount载入前
mounted挂载完成
beforeUpdate更新前
update更新后
beforeDestory销毁前
destoryed销毁后

每触发一个生命周期,会自动执行一个生命周期的方法

<script>
    //定义vue对象
    new Vue({
        el:"#app",  //vue接管的区域
        data:{

        },
        methods:{

        },
        mounted()
        {
            alert("挂载完成!");
        }
    })
</script>

mounted:挂载完成,vue初始化成功,html页面渲染成功。(发送请求到服务端,加载数据)

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

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

相关文章

自学stm32,需要会到什么程度能找到一份工作?

学STM32&#xff0c;想要找到一份工作&#xff0c;需要具备以下基本条件和技能&#xff1a;掌握新建工程和调试工程的基本操作&#xff0c;熟悉使用官方的STM32CubeIDE等开发工具。熟悉C语言编程&#xff0c;理解基本的语法和编程概念&#xff0c;对汇编语言有一定了解。熟悉ST…

国产商业漫画:题材、趋势与作者分析

国产商业漫画分析 本文是关于当前国产商业漫画市场的小研究&#xff0c;分析所用数据都是从漫画网站上直接爬取的。这里我选择的数据来源有两个&#xff0c;一个是当前收录商业化国漫最多的快看漫画&#xff0c;另一个是使用用户最多、以日漫为主的动漫之家。 在这篇分析里&a…

搭建openGauss 5.0 一主一从复制集群

openGauss是一款支持SQL2003标准语法&#xff0c;支持主备部署的高可用关系型国产数据库。 多种存储模式支持复合业务场景&#xff0c;新引入提供原地更新存储引擎。NUMA化数据结构支持高性能。Paxos一致性日志复制协议&#xff0c;主备模式&#xff0c;CRC校验支持高可用。支…

【Altium Designer】AD封装库+3D模型(2.95G)

【Altium Designer】AD封装库3D模型(2.95G) 如何添加3D封装库 https://blog.csdn.net/qq_42057393/article/details/115558858 组成 常用芯片封装 电阻 电容 电感 常用芯片 74系列芯片STC系列芯片ST系列芯片电源芯片通讯系列芯片未分类IC 晶体管 二极管三极管MOS管整流…

sql-libs靶场-----0x00、环境准备

文章目录 一、PhPstudy下载、安装二、Sqli-libs下载、搭建三、启用Sqli-libs phpstudy地址&#xff1a;https://www.xp.cn/ sqli-libs地址&#xff1a;https://github.com/Audi-1/sqli-labs 一、PhPstudy下载、安装 1、下载–解压–安装&#xff0c;安装完成如下图 2、更换php…

JS 删除的是最后一页的最后一条,页码设置逻辑

删除的场景&#xff1a; 解决思路&#xff1a; 1、计算操作后的总页数 2、删除成功之后的总页数与当前总页数进行比较 3、如果删除成功之后的总页数比小于当前总页数&#xff0c;需要把当前页码减去1&#xff1b;否则&#xff0c;直接进行列表数据的请求 代码实现 /*总条数…

IOS开发-XCode14介绍与入门

IOS开发-XCode14介绍与入门 1. XCODE14的小吐槽2. XCODE的功能bar一览3. XCODE项目配置一览4. XCODE更改DEBUG/RELEASE模式5. XCODE单元测试 1. XCODE14的小吐槽 iOS开发工具一直有个毛病&#xff0c;就是新版本的开发工具的总会有一些奇奇怪怪的bug。比如在我的Mac-Pro&#…

vuex学习总结

一、vuex工作原理 工作流程&#xff1a;需求&#xff1a;改变组件count的sun变量的值&#xff0c;先调用dispatch函数传入jia函数和要改变的值给actions&#xff08;这个actions里面必须有jia这个函数&#xff09;&#xff1b;actions收到后调用commit函数将jia方法和值传给mut…

【CTF-MISC】这是一张单纯的图片

题目链接&#xff1a;https://ctf.bugku.com/challenges/detail/id/2.html 下载图片&#xff0c;使用010 Editor打开&#xff1a; 在文件末尾可以看到疑似HTML实体的内容&#xff0c;将其解码即可得到答案。

数据结构笔记--前缀树的实现

1--前缀树的实现 前缀树的每一个节点拥有三个成员变量&#xff0c;pass表示有多少个字符串经过该节点&#xff0c;end表示有多少个字符串以该节点结尾&#xff0c;nexts表示该字符串可以走向哪些节点&#xff1b; #include <iostream> #include <unordered_map>str…

【Sklearn】基于支持向量机算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于支持向量机算法的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理1.1 数学模型1.2 模型原理 2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&…

【从零学习python 】20. Python列表操作技巧及实例

文章目录 列表推导式练习 列表的复制列表的copy方法copy模块的使用浅拷贝深拷贝 切片 进阶案例 列表推导式 所谓的列表推导式&#xff0c;就是指的轻量级循环创建列表 基本的方式 在循环的过程中使用if 2个for循环 3个for循环 练习 请写出一段 Python 代码实现分组一…

WebDAV之π-Disk·派盘+Commander One

Commander one是一款为Mac用户设计的双窗格文件管理器,Commander One专业版在原先的版本功能拥有较大的提升。Commander One PRO可以帮助大家将文件从一个地方复制到另一个地方,支持多标签浏览、搜索、自定义热键设置、显示隐藏文件等功能。 π-Disk派盘 – 知识管理专家 派…

VLLM推理流程梳理

0x0. 前言 本文在对VLLM进行解析时只关注单卡情况&#xff0c;忽略基于ray做分布式推理的所有代码。 0x1. 运行流程梳理 先从使用VLLM调用opt-125M模型进行推理的脚本看起&#xff1a; from vllm import LLM, SamplingParams# Sample prompts. prompts ["Hello, my n…

Dedecms V110最新版RCE---Tricks

前言 刚发现Dedecms更新了发布版本&#xff0c;顺便测试一下之前的day有没有修复&#xff0c;突然想到了新的tricks去实现RCE。 文章发布的时候估计比较晚了&#xff0c;一直没时间写了。 利用 /uploads/dede/article_string_mix.php /uploads/dede/article_template_rand.…

ansible入门

ansible入门 一.ansible 背景介绍 Ansible 是一个广受欢迎的 IT 自动化系统。可以用来处理配置管理、应用自动化部署、云资源配给、网络 自动化和多借点部署等任务。其也可以使得复杂的变更如带负载均衡的零停机滚动更新更加容易。Ansible.com 1.1 自动化运维概念 1.1.1 运维…

AMEYA360:DNB1101大唐恩智浦工规级电池管理芯片

大唐恩智浦作为全球领先的半导体供应商&#xff0c;一直致力于为全球客户提供高质量的解决方案。在电池管理芯片领域&#xff0c;大唐恩智浦推出的DNB1101可谓是一款工规级的电池管理芯片&#xff0c;其卓越的性能和可靠性成为市场上备受全球领先的半导体供应商&#xff0c;一直…

背上大书包准备面试之CSS篇

目录 H5 新特性 css3新特性&#xff1f; 为什么要初始化css样式&#xff1f; 浏览器兼容性问题&#xff1f; css sprites&#xff08;css精灵图&#xff09;&#xff1f; css盒模型是什么样的&#xff1f; 页面中一个块元素的宽度包含了盒模型中的哪些部分&#xff1f;…

SpringBoot复习:(48)RedisAutoConfiguration自动配置类

RedisAutoConfiguration类代码如下&#xff1a; 可以看到在这个类中配置了2个bean: redisTemplate和stringRedisTemplate. 而它通过EnableConfigurationProperties(RedisProperties.class)注解&#xff0c;把配置文件中配置的Redis相关的信息引入进来了&#xff0c;RedisPrope…

EB配置------PORT(一)

今天学习了PortPinInputPullResistor 这个配置。 虽然它配置为输出后显示不可更改&#xff0c;但是它默认的配置依然有效。 该参数允许为所选端口引脚配置内部拉电阻[向上/向下]。 注意&#xff1a;此参数的默认值设置为相应SFR的重置值。 PORT_PIN_IN_NO_PULL&#xff1a;…