JavaScript快速入门+文档查询【详解】

news2024/11/15 11:09:28

目录

1. js简介

2.js引入方式

3. JS基础语法(ECMAScript)

4. js函数和事件【js的核心】

5.js对象

 6.BOM对象

7.DOM对象        

8.案例全选全消

1. js简介

        1.什么是js

        JavaScript,简称js,是web开发中不可缺少的脚本语言,不需要编译就能运行(解释型语言)。在传统的web开发里,它“寄生”在html体内放在服务器上,随网络传输到客户端,在浏览器里运行

        2.js作用

        监听用户的动作:使用的是js的事件监听机制

        可以操作浏览器的行为:比如让浏览器弹窗、历史记录的前进、后退等等

        可以改变网页的内容:可以修改html标签、标签的属性、标签的样式,然后页面显示的效果就会随之改变

2.js引入方式

         内部js:在html里任意位置添加<script> 在这里写js代码 </script>标签,在标签内部写js代码

        外部js:把js代码写到单独的js文件里,html中使用<script src="js文件路径"></script>引入js文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>引入js</title>
</head>
<body>
    
    
    <!-- 引入方式1. 在html里直接添加script标签,把js代码写在script标签内部 -->
    <script>
        alert("内部js");
    </script>

    <!-- 引入方式2. 把js代码写在单独的js文件里,html中使用script标签引入js文件 -->
    <script src="./js/demo.js"></script>
</body>
</html>

3. JS基础语法(ECMAScript)

        1.基础语法

        区分大小写

        每行结尾的分号可有可无

        注释的写法:

                单行注释:// 注释内容

                多行注释:/* 注释内容 */

        js常用的打印输出语句有:

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js基础语法</title>
</head>
<body>
    hello, javascript

    
    <script>
        //1. js区分大小写
        //2. 每行结尾的分号可写可不写
        //3. 注释的写法和Java一样

        // 使用浏览器弹窗
        window.alert("JavaScript简称js");

        // 把内容输出到页面上
        document.write("JavaScript借鉴了Java,但两者没有关系");

        // 把内容打印到浏览器控制台。
        // 使用浏览器打开此页面后,按F12,找到“Console”或者“控制台”就能看到输出的内容
        console.log("布兰登·艾克用了10多天就创建了JavaScript语言");
    </script>
</body>
</html>

        

        2.变量和常量定义

        在js中,变量的声明和java中还是不同的。首先js中主要通过如下3个关键字来声明变量的:

     命名规范:和Java相似

                组成字符可以是任何字母、数字、下划线(_)或美元符号($)

                数字不能开头

                建议使用驼峰命名

             

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js变量定义</title>
</head>
<body>
    
    <script>
        //js中一切变量定义都使用:let,无论是什么类型的变量
        //  老版本的js(ECMAScript5)中,使用var定义变量。从ECMAScript6开始,建议使用let定义变量
        let v1 = 3;
        let v2 = "hello";
        let v3 = true;
        let v4 = new Date();

        //js中的常量定义使用:const
        //  常量不允许修改值,执行代码时会报错(打开浏览器的F12,控制台里可看到报错信息)
        const PI = 3.14;
        PI = 3.1415;
    </script>
</body>
</html>

        3.数据类型和运算符

        虽然js是弱类型语言,但是也有数据类型,分为 :原始类型 和 引用类型

        

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js的数据类型</title>
</head>
<body>
    
    <script>
        //使用`typeof`函数判断变量的类型
        console.log(typeof 3); //number
        console.log(typeof "3") //string
        console.log(typeof true) //boolean
        console.log(typeof null) //object
        console.log(typeof undefined) //undefined

        let v;
        console.log(typeof v) //undefined。声明变量但未初始化,是undefined
    </script>
</body>
</html>

         js的运算符:绝大多数还是和java中一致

           

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>运算符</title>
</head>
<body>
    
    <script>
        //算术运算符:+, -, *, /, %, ++, --
        //赋值运算符:+=, -=, *=, /=, %=, =
        //比较运算符:>, <, >=, <=, ==, !=, ===, !==
        //逻辑运算符:&&, ||, !
        //三元运算符

        console.log(3 == "3") //结果是true。因为==只比较值,只要值相同,结果就是true
        console.log(3 === "3")//结果是false。因为===比较值和类型,只有两个都相同,结果才是true
    </script>
</body>
</html>

        4.流程控制语句

        js的流程控制语句和Java非常相似,也有:

                if, else, else if:用于条件判断

                for,while,do while:用于循环遍历

        用法也和Java的流程控制语句几乎相同,所以这里只介绍一个特殊情况:if判断

                js里条件判断,通常用于判断boolean值

                js也能对任意类型的值进行if判断:

        数字类型的0,对象类型的null,字符串类型的"",还有undefined判断为false

 

<html>
    <head>
        <title></title>
    </head>
    <body>
        
        <script>
        	if(0){
               console.log("0判断为true")
            }else{
               console.log("0判断为false")
            }
            
            if(""){
                console.log("空字符串判断为true")
            }else{
                console.log("空字符串判断为false")
            }
            
            if(null){
                console.log("null判断为true")
            }else{
                console.log("null判断为false")
            }
            
            if(undefined){
                console.log("undefined判断为true")
            }else{
                console.log("undefined判断为false")
            }
        </script>
    </body>
</html>    

4. js函数和事件【js的核心】

   1.函数名两种:    

        普通函数:有名称的函数,通过函数名来调用函数

        匿名函数:没有名的函数,要么赋值给一个变量然后通过变量名调用,要么把函数直接作为其它函数的实参     

注意:

  • js里没有函数重载,同名函数会覆盖掉

  • js的形参不需要声明类型,直接写形参名称即可

  • js的函数不写返回值类型,如果需要返回,在函数里直接return即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js的函数</title>
</head>
<body>
    
    <script>
        //js的函数:相当于Java里的方法,都是用于复用代码的
        
        //1. 普通函数。不需要写返回值类型;形参不需要写类型;
        function add(a, b){
            return a+b;
        }
        let res = add(3, 5);
        console.log(res)

        //2. 匿名函数。通常赋值给一个变量,通过变量名调用函数;也可以把匿名函数直接作为另外一个函数的实参
        let fn = function(a, b){
            return a * b;
        }
        let res2 = fn(3, 5);
        console.log(res2)
    </script>
</body>
</html>

        2.案例轮播图:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮播图</title>
</head>

<body>

<!--
    轮播图,需求:
        打开页面之后,页面上显示一张图片
        每间隔2秒钟,切换一张图片
    分析:
        1. 无论图片如何切换,必须要显示图片:就必须要使用img标签
        2. 每间隔2秒钟做一些事情:周期性的执行任务,setInterval(函数对象, 2000)
        3. 如何切换图片?只要把img的src属性值修改,就可以切换图片
            需要使用js修改img的src属性值:document.getElementById("image").src = "新值"
-->

<img src="./image/1.jpg" alt="" id="image" width="500px">
<script>
    //1. 把资料里的1.jpg到5.jpg拷贝到 VSCode的image文件夹里
    //2. 创建html页面,实现轮播图
    let image = document.getElementById("image");
    let filename = 1;
    setInterval(function() {
        if(++filename > 5){
            filename = 1;
        }
        image.src = "./image/" + filename + ".jpg";
    }, 2000);
</script>
</body>
</html>

         3.js事件

                事件:用户的一些动作,或者浏览器的一些状态变化。js提供了监听事件的一些属性

                事件源:事件发生在哪。通常是html标签上

                响应行为:事件发生后,要执行的代码、实现的功能

            常见事件:

        绑定语法:        

                普通函数方式绑定,语法:<input type="button" value="按钮" onclick="show()">

                匿名函数方式绑定,纯js方式绑定,

                语法:document.getElementById("事件源标签id").onclick= function(){}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件绑定1</title>
</head>
<body>
<!--
需求:按钮点击时弹窗“点我干嘛”
分析:监听到按钮上发生  “被点击了” 事件时,要弹窗“点我干嘛”
    事件源:按钮
    事件:单击事件,要使用“onclick"监听到
    响应行为: 弹窗“点我干嘛”
实现:
    在事件源标签上加属性onclick,值是js代码“调用一个函数”
-->
<input type="button" value="按钮1" onclick="show()">
<input type="button" value="按钮2" id="btn2">

<script>
    function show(){
        alert("点我干嘛1");
    }
    
    document.getElementById("btn2").onclick = function(){
        alert("点我干嘛2");
    };
</script>
</body>
</html>

        案例:鼠标控制轮播图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮播图</title>
</head>
<body>
<img src="./image/1.jpg" alt="" id="image" width="500px" onmouseenter="stop()" onmouseleave="start()">
<script>
	//定义一个变量,用于存储定时器的id;在清除定时器时要使用
    let timer;
    
    //直接调用一次start方法,页面一打开就开始
    start();

    //开始轮播方法
    function start(){
        let image = document.getElementById("image");
        let filename = 1;
        timer = setInterval(function() {
            if(++filename > 5){
                filename = 1;
            }
            image.src = "./image/" + filename + ".jpg";
        }, 2000);
    }

    //停止轮播方法
    function stop(){
        clearInterval(timer)
    }
</script>
</body>
</html>

5.js对象

        1.Array对象

        js的数组,更加类似于Java的集合,因为js数组的长度可变

        定义数组:

                let 变量名 = new Array(元素1, 元素2, 元素3, ...); 
                let 变量名 = [ 元素1, 元素2, 元素3, ... ]; 

        遍历于存储:

                arr[索引] = 值;
                let v = arr[索引];

常用属性名与方法:     

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js数组</title>
</head>
<body>
    
    <script>
        //1. 定义数组
        //  new Array(元素1,元素2,...)
        let arr1 = new Array("A", 1, true);
        console.log(arr1)
        
        //  [元素1,元素2,...]
        let arr2 = ["B", 2, false];
        console.log(arr2)


        //2. 循环遍历
        let arr = ["A", "B", "C", "D", "E"];
        for (let i = 0; i < arr.length; i++) {
            console.log(arr[i])
        }

        //3. length属性。
        console.log("arr长度:", arr.length); //5
        //  设置数组长度。
        //     如果设置的值小,就截断数组;如果设置的值大,就扩容数组,没有值的元素是undefined
        arr.length = 3;
        console.log("设置arr长度为3后:", arr); // A, B, C

        //4. 常用方法
        //  循环遍历forEach
        arr.forEach(function(value){
            console.log("arr遍历元素值:", value)
        })
        //  尾部添加元素
        arr.push("hello")
        console.log("arr尾部添加元素hello后:", arr); //A, B, C, hello
        //  从索引2开始,删除1个元素
        arr.splice(2, 1)
        console.log("arr删除索引1元素后:", arr) //A, B, hello
    </script>
</body>
</html>

  2.String对象

    定义字符串:

        let 变量名 = new String("hello"); 
        var 变量名 = "hello";

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js字符串</title>
</head>
<body>
    
    <script>
        //定义字符串:
        let str = " hello, world ";

        console.log("str字符串的长度:", str.length)
        console.log("从str中查找wo:", str.indexOf("wo"))
        console.log(str.trim())
        console.log("从str中截取索引3到索引5的子串:", str.substring(3,5))
    </script>
</body>
</html>

        3.JSON对象【重点】

        JSON对象:JavaScript Object Notation,JavaScript对象标记法,是通过JavaScript标记法书写的文本,通常作为数据传输的格式。        

        json使用场景

        可以作为配置文件的格式。例如我们的讲义所用的typora软件,其配置文件就是json格式的

        可以作为前后台交互的数据载体。前后台交互时,我们需要传输数据,为了方便双方解析数据,可以采用json格式

         

json常用方法:

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-JSON</title>
</head>
<body>
    
</body>
<script>
    // json格式的字符串  ==> json对象
    let jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';
    let obj = JSON.parse(jsonstr);
    console.log(obj.name);

    // json对象  ==> json格式的字符串
    console.log(JSON.stringify(obj));
</script>
</html>

 6.BOM对象

        BOM:Broswer Object Model,浏览器对象模型。BOM对象提供了操作浏览器的方法,我们通过BOM对象可以让浏览器弹窗、切换历史记录等等。

        1.window对象

        window对象是所有bom对象的顶级对象,可以通过window.来获取其它4个bom对象,只是window.通常省略不写

        

        2.location对象

        location是指代浏览器的地址栏对象,常用于获取或者设置浏览器的地址信息:

<html>	
    <head>
        <title>location对象 </title>
    </head>
    <body>
        
        <script>
        	//获取浏览器地址栏信息
            alert(location.href);
            //设置浏览器地址栏信息
            location.href = "https://www.itcast.cn";
        </script>
    </body>
</html>

7.DOM对象        

1.DOM:Document Object Model 文档对象模型。JavaScript 将 HTML 文档的各个组成部分封装为对象,通过这些对象我们可以操作HTML的标签、属性、样式等等。

  • Document:整个文档对象

  • Element:元素对象

  • Attribute:属性对象

  • Text:文本对象

  • Comment:注释对象

2.DOM操作的API 

要想通过DOM操作网页,主要有两个步骤:

  • 想操作哪个标签,就获取哪个标签对象:Element

  • 通过Element对象,操作标签的属性、内容、或样式

操作标签的属性

操作标签的属性很简单,通常是:

  • 获取属性值:let v = 标签对象.属性名

  • 设置属性值:标签对象.属性名 = 值

操作标签的内容

所谓标签的内容,就是开始标签和结束标签中间的部分。例如:<div> 这里是标签的内容 </div>

  • 获取标签内容:let v = 标签对象.innerHTML

  • 设置标签内容:标签对象.innerHTML = "新内容",会把标签里旧内容覆盖掉

<html>
    <head>
        <title>获取标签</title>
    </head>
    <body>
        帐号:<input type="text" name="username" id="username" class="item"> <br>
        密码:<input type="password" name="password" class="item"> <br>
        性别:<input type="radio" name="gender" value="male">男
             <input type="radio" name="gender" value="female">女 <br>
        
        <script>
        	//根据id获取标签:
            let usernameInput = document.getElementById("username");
            console.log(usernameInput);
            
            //根据tagName获取标签:
            let inputArray = document.getElementsByTagName("input");
            console.log(inputArray);
            
            //根据name属性值获取标签:
            let genderRadios = document.getElementsByName("gender");
            console.log(genderRadios);
            
            //根据class属性值获取标签:
            let items = document.getElementsByClassName("item");
            console.log(items);
        </script>
    </body>
</html>


--------------------
<html>
    <head>
        <title>操作属性</title>
    </head>
    <body>
        <input type="password" id="pwd"> 
        <input type="button" value="查看密码" onmousedown="showPwd()" onmouseup="hidePwd()">
        
        <script>
        	function showPwd(){
                document.getElementById("pwd").type="text";
            }
            function hidePwd(){
                document.getElementById("pwd").type="password";
            }
        </script>
    </body>
</html>


----------------------
<html>
    <head>
        <title>操作标签内容</title>
    </head>
    <body>
        <div id="d1">
            hello
        </div>
        
        <script>
        	let d1 = document.getElementById("d1");
            console.log(d1.innerHTML);
            
            d1.innerHTML = "JavaScript";
        </script>
    </body>
</html>

8.案例全选全消

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        table {
            width: 500px;
            margin: 0 auto;
            border-collapse: collapse;
        }

        td, th {
            border: 1px solid blue;
            text-align: center;
        }

    </style>
</head>
<body>
<table>
    <tr>
        <th style="width:100px;">
            <input type="checkbox" id="checkall" title="全选/全消" onclick="check()" />
            <input type="button" value="反选" onclick="inverse()">
        </th>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>1</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>2</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>3</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>4</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>5</td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" class="item"/>
        </td>
        <td>6</td>
        <td></td>
        <td></td>
    </tr>
</table>

<!--
需求:
    点击checkall的时候,如果checkall是选中状态,设置所有的item都设置为选中状态;
    点击checkall的时候,如果checkall是未选中状态,设置所有的item都设置为未选中状态;
-->
<script>
    function check(){
        //checked是一个true或fasle状态,v是true或false
        //1. 先获取checkall的状态:选中、取消
        let v = document.getElementById("checkall").checked;

        //2. 把checkall的状态设置给所有的item
        let items = document.getElementsByClassName("item");
        for(let i=0; i<items.length; i++){
            items[i].checked = v;
        }
    }

    /**
     * 反选:
     *  思路1:获取所有的item,循环遍历每一个,获取选中状态取反
     *  思路2:获取所有的item,循环遍历每一个,模拟一次点击操作
     */
    function inverse(){
        let items = document.getElementsByClassName("item");
        for(let i=0; i<items.length; i++){
            items[i].checked = !items[i].checked;
        }
    }
</script>
</body>
</html>

  9.JS对象手册

   我们这是学入门和一些常用的属性,很多还是用要查  

        我们可以打开W3school在线学习文档,来到首页,在左侧栏找到浏览器脚本下的JavaScript,如下图所示:

        

                       

        

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

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

相关文章

Spring Test 常见错误

前面我们介绍了许多 Spring 常用知识点上的常见应用错误。当然或许这些所谓的常用&#xff0c;你仍然没有使用&#xff0c;例如对于 Spring Data 的使用&#xff0c;&#xff0c;有的项目确实用不到。那么这一讲&#xff0c;我们聊聊 Spring Test&#xff0c;相信你肯定绕不开对…

IDEA自动导入provided的依赖

最近在学习flink 流程序&#xff0c;在写demo程序的时候依赖flink依赖&#xff0c;依赖的包在flink集群里面是自己已经提供了的&#xff0c;在导入的时候配置为provided&#xff0c;像下面这样&#xff0c;以使打包的时候不用打到最终的程序包里面。 <dependency><gro…

STM32USART串口数据包

文章目录 前言一、介绍部分数据包两种包装方式&#xff08;分割数据&#xff09;HEX数据包文本数据包 数据包的收发流程数据包的发送数据包的接收固定包长的hex数据包接收可变包长的文本数据包接收 二、实例部分固定包长的hex数据包接收连接线路代码实现 可变包长的文本数据包接…

AWS的RDS数据库开启慢查询日志

#开启慢日志两个参数 slow_query_log 1 设置为1&#xff0c;来启用慢查询日志 long_query_time 5 &#xff08;单位秒&#xff09; sql执行多长时间被定义为慢日志1. 点击RDS然后点击参数组&#xff0c;选择slow_query_log&#xff0c;设置为1【表示开启慢日志】点击保存…

[cg] Games 202 - NPR 非真实感渲染

NPR特性&#xff08;基于真实感渲染&#xff09; 真实感--》翻译成非真实感的过程 NPR风格 需要转换为渲染中的操作 1.描边 B-->普通边界&#xff08;不是下面几种的&#xff09; C-->折痕 M-->材质边界 S-->需要在物体外面一圈上&#xff0c;并且是多个面共享…

使用GitHub API 查询开源项目信息

一、GitHub API介绍 GitHub API 是一组 RESTful API 接口&#xff0c;用于与 GitHub 平台进行交互。通过使用 GitHub API&#xff0c;开发人员可以访问和操作 GitHub 平台上的各种资源&#xff0c;如仓库、提交记录、问题等。 GitHub API 提供了多种功能和端点&#xff0c;以…

gin gorm学习笔记

代码仓库 https://gitee.com/zhupeng911/go-advanced.git https://gitee.com/zhupeng911/go-project.git 1. gin介绍 Gin 是使用纯 Golang 语言实现的 HTTP Web框架&#xff0c;Gin接口设计简洁&#xff0c;提供类似Martini的API&#xff0c;性能极高&#xff0c;现在被广泛使用…

SpringBoot接口防抖(防重复提交)的一些实现方案

前言 啥是防抖 思路解析 分布式部署下如何做接口防抖&#xff1f; 具体实现 请求锁 唯一key生成 重复提交判断 前言 作为一名老码农&#xff0c;在开发后端Java业务系统&#xff0c;包括各种管理后台和小程序等。在这些项目中&#xff0c;我设计过单/多租户体系系统&a…

如何制作一个分销商城小程序_揭秘分销商城小程序的制作秘籍

打造赚钱神器&#xff01;揭秘分销商城小程序的制作秘籍 在这个数字化高速发展的时代&#xff0c;拥有一个属于自己的分销商城小程序&#xff0c;已成为众多商家和创业者的必备利器。它不仅能够快速搭建起自己的在线销售渠道&#xff0c;还能够利用分销模式&#xff0c;迅速裂…

机器学习专项课程03:Unsupervised Learning, Recommenders, Reinforcement Learning笔记 Week02

Week 02 of Unsupervised Learning, Recommenders, Reinforcement Learning 课程地址&#xff1a; https://www.coursera.org/learn/unsupervised-learning-recommenders-reinforcement-learning 本笔记包含字幕&#xff0c;quiz的答案以及作业的代码&#xff0c;仅供个人学习…

无人机遥感在农林信息提取中的实现方法与GIS融合应用

在新一轮互联网信息技术大发展的现今&#xff0c;无人机、大数据、人工智能、物联网等新兴技术在各行各业都处于大爆发的前夜。为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节&#xff0c;逐步摆脱人力依赖&#xff1b;在施肥灌溉环节构建智慧节能系统&a…

centos7安装kafka、zookeeper

安装jdk 安装jdk8 安装zookeeper 在指定目录执行下载命令 我是在/newdisk/zookeeper目录下 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz --no-check-certificate下载好后并解压 tar -zxvf apache-zookeeper-3.5…

Kali Linux 2024.1

Kali Linux 2024.1刚刚发布&#xff0c;标志着这个备受欢迎的安全重点Linux发行版在今年的首次重大更新。以其先进的渗透测试和安全审计功能而闻名&#xff0c;它是安全专业人员和爱好者的首选工具。 Kali 2024.1 亮点 本次发布由 Linux 内核 6.6 提供支持&#xff0c;突出了…

Git分布式管理-头歌实验本地版本库

一、本地版本库创建 任务描述 本地Git操作三部曲是“修改-添加-提交”&#xff0c;即先要在本地仓库进行添加、删除或编辑等修改&#xff0c;然后将本地所做的修改添加至暂存区。添加至暂存区的这些本地修改&#xff0c;并未提交到本地仓库&#xff0c;需要执行提交命令才能将暂…

详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法

集合的概念 当我们需要保存一组一样&#xff08;类型相同&#xff09;的元素的时候&#xff0c;我们应该使用一个容器来存储&#xff0c;数组就是这样一个容器。 ● 数组的特点&#xff1a; 数组是一组数据类型相同的元素集合&#xff1b; 创建数组时&#xff0c;必须给定…

【CSP试题回顾】202212-1-现值计算

CSP-202212-1-现值计算 解题代码 #include <iostream> #include <vector> #include <cmath> using namespace std;int main() {int n;double k, sumPrice 0;cin >> n >> k;vector<double>priceList(n 1);for (int i 0; i < n; i){…

分享7款前端动画特效(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 canvas彩色画树特效 基于canvas实现的画树特效 同时还可选择树枝的初始数目进行彩色树生成 以下效果…

用docker部署后端项目

一、搭建局域网 1.1、介绍前后端项目搭建 需要4台服务器&#xff0c;在同一个局域网中 1.2、操作 # 搭建net-ry局域网&#xff0c;用于部署若依项目 net-ry&#xff1a;名字 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1#查看 docker network ls…

【力扣精选算法100道】——存在重复元素 1 or 2 (哈希)

目录 &#x1f6a9;存在重复元素1 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f388;实现代码 &#x1f6a9;存在重复元素2 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f388;代码实现 217. 存在重复元素 - 力扣&#xff08;LeetCode&#xff09; …

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;前导&#xff09; Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09; 五、实验目的 本次实验使用电脑上的网络调试助手&#xff0c;将命令帧通过以太网芯片RTL8211&#xff08;RGMII接口…