jQuery 基础入门速成上篇

news2024/11/23 13:50:22

          jQuery 是目前使用最广泛的 javascript 函数库。提到 jQuery 你可能知道这句英文 :

                                                                          ———— Write Less,Do More ( 写的少,做的多 )


引入jQuery

        jQuery是一个函数库,一个 js 文件,页面可以使用 script标签 引入使用:

        提供链接跳转下载文件:jQuery官网 | 直达下载

<script type="text/javascript" src="js/jquery-3.6.4.min.js"></script>

 文档加载完执行

        这里先来简单的体验一下,引入jquery库并且打印 $ ;

        引入成功后,可以看到打印结果,可以知道的是 $ 符号是一个函数。

        在原生js中是如何来获取元素的?以及jquery是如何来获取的?如下:

<!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>Document</title>
    <!-- 引入jquery -->
    <script src="./jquery-3.6.4.min.js"></script>
</head>
<body>
    <div id="box"></div>
    <script>
        // console.log($)
        // 原生js
        window.onload = function(){
            var obox = document.getElementById('box');
            alert("原生JS打印 -" + obox)
        }
        // jQuery
        // $(document).ready(function(){
        $(function(){   // 简写
            var $obox = $('#id')
            alert("jQuery打印 -" + $obox)
        })

        // window.onload = function(){}  -  $(document).ready(function(){})
        // 简写 $(document).ready(function(){})
        // $(function(){})
    </script>   
</body>
</html>

        执行弹窗的是jquery接着才是js,这也间接说明了jquery的速度比js快,这里是否疑惑不是从上往下执行的吗?原生js中的 window.onload 是在页面所用文件加载完成后才执行的。


jQuery入门基础

jQuery 选择器

        jquery选择器可以快速地选择元素,选择规则和css样式相同,使用length属性判断是否选择成功。

$('#box')        // 选择id为box的网页元素
$('.box')        // 选择class为box的网页元素
$('li')          // 选择所用的li元素
$('#box li a')   // 选择id为box元素下所有li下的a元素
$('input[name = first]')    // 选择name为first的input元素

        在原生js中可以来操作获取到的元素的属性,如style,但在jquery当中是没有这些属性的,因此可以这样来操作:

<script>
    // 获取
    var $obox = $('box');
    $obox.css({
        'width':'200px',
        'height':'200px',
        'background':'red'
    })
</script>

对选择集进行过滤

$('div').has('p)            // 选择包含p标签的div元素
$('div').not('.myclass')    // 选择除了类名为myclass的div元素
$('div').eq(5)              // 选择第6个div元素(从0起)

选择集转移 

$('#box').prev()            // 选择id是box的元素前面紧挨的同辈元素
$('#box').prevAll()         // 选择id是box的元素之前所有的同辈元素
$('#box').next()            // 选择id是box的元素后面紧挨的同辈元素
$('#box').nextAll()         // 选择id是box的元素后面所有的同辈元素
$('#box').parent()          // 选择id是box的元素的父元素
$('#box').children()        // 选择id是box的元素的所有子元素
$('#box').siblings()        // 选择id是box的元素的同辈元素
$('#box').find('.mycalss')  // 选择id是box的元素内的class等于myclass的元素

判断是否选择到了元素

        jquery有容错机制,即使没有找到元素,也不会出错,可以用 length 属性来判断是否找到了元素,length等于0,就是没有找到元素,length大于0,则选择到元素。

<div id="div1"></div>

var $box1 = $('#div1');
var $box2 = $('#div2')

alert($box1.length)    // 1
alert($box2.length)    // 0

        对于以上的这些jquery选择器需要自己操作来一遍才能了解它到底是怎么一回事!


jQuery动画参数

        第一个参数:要做动画的样式属性,写成字典的形式

        第二个参数:动画持续的时间,默认是400ms

        第三个参数:动画曲线,默认为 swing,缓冲运动,字符串(linear 匀速 )

<!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>Document</title>
    <!-- 引入jquery -->
    <script src="./jquery-3.6.4.min.js"></script>
    <style>
        #box{width: 100px;height: 200px;background: red;}
        #boxs{width: 100px;height: 200px;background: yellow;}
    </style>
</head>
<body>
    <button id="btn">动画开始</button>
    <div id="box"></div>
    <div id="boxs"></div>
    <script>
        var $obox = $('#box');
        var $oboxs = $('#boxs');
        var $btn = $('#btn');

        $btn.click(function(){
            // $obox.css({ 'width' : '400px' })
            
            // 参数1(样式)-参数2(时间)-参数3(动画曲线)-参数4(回调)
            $obox.animate({'width':'400px'},2000,'swing',function(){ console.log('box') });
            $oboxs.animate({'width':'400px'},2000,'linear',function(){ console.log('boxs') });
        }) 
    </script>   
</body>
</html>

jQuery特殊效果

        一些特殊的过渡动画效果需要比较处理的比较平滑可以使用如下这些:

fadeOut()        淡出
fadeToggle()     切出淡入淡出
hide()           隐藏元素
show()           显示元素
toggle()         切换元素的可见状态
slideDown()      向下展开
slideUp()        向上卷起
slideToggle()    依次展开或卷起某个元素

制作显示隐藏
$obox.hide()
$obox.show()
$obox.toggle()   css - display:none测试

制作淡入和淡出
$obox.fadeIn()
$obox.fadeOut()
$obox.fadeToggle()   css -display:none测试

制作向下展开和向上卷起的动画
$obox.slideUp();
$obox.slideToggle();  css -display:none测试

停止
$obox.stop().slideToggle()  停止之前的动画,保留最后的动画

jQuery链式调用

        jquery对象的方式会在执行完后返回这个jquery对象,所有jquery对象方法可以连起来写:

$('#box')                     // id为box的元素
$('#box').children('ul')      // 该元素下面的ul子元素
$('#box').slideDown('fast')   // 高度从0到实际高低来显示ul元素
$('#box').parent()            // 跳到ul的父元素,也就是id为box的元素 

jQuery属性操作

html() —— 取出或设置html内容

// 获取html内容
$('#obox').html()

// 设置html内容
$('#obox').html('<p>一个段落</p>')

 prop() —— 取出或设置某个属性的值

// 取出图片地址
$('#imgs').prop('src')

// 设置图片的地址和alt属性
$('#imgs').prop({ src:'01.jpg', alt:'图片' })

案例 —— 聊天框

小白解析思路:这个与之前原生js中的一个案例很相似,通过prop来获取属性值,而在原生js中是用的getAttribute获取;这里要获取input框中的数据,可以使用prop来获取input的value值,但可以直接来使用封装的方法val(),为这个"发送"做点击事件,将"发言人"和输入框的内容进行整合成元素插入到对应节点中,可以使用html()方法插入节点!】 

<!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>Document</title>
    <script src="./jquery-3.6.4.min.js"></script>
    <style> 
        .talk_con{width: 600px;height: 500px;border: 1px solid #666;margin: 50px auto 0;background: #f9f9f9;}
        .talk_show{width: 580px;height: 420px;border: 1px solid #666;background: #fff;margin: 10px auto 0;overflow: auto;}
        .talk_input{width: 580px;margin: 10px auto 0;}
        .whotalk{width: 80px;height: 30px;float: left;outline: none;}
        .talk_work{width: 420px;height: 26px;padding: 0;float: left;margin-left: 10px;outline: none;text-indent: 10px;}
        .talk_sub{width: 56px;height: 30px;float: left;margin-left: 10px;}
        .atalk{margin: 10px;}
        .atalk span{display: inline-block;background: #0181cc;border-radius: 10px;color: #fff;padding: 5px 10px;}
        .btalk{margin: 10px;text-align: right;}
        .btalk span{display: inline-block;background: #ef8201;border-radius: 10px;color: #fff;padding: 5px 10px;}
    </style>
</head>
<body>
    <div class="talk_con">
        <div class="talk_show" id="words">
            <div class="atalk"><span>A说:在吗?</span></div>
            <div class="btalk"><span>B说:在的</span></div>
        </div>
        <div class="talk_input">
            <select class="whotalk" id="who">
                <option value="0">A 发言 :</option>
                <option value="1">B 发言 :</option>
            </select>
            <input type="text" class="talk_work" id="talkwords">
            <input type="button" value="发送" class="talk_sub" id="talksub">
        </div>
    </div>
    <script>
        $(function(){
            var $words = $('#words'),
                $who = $('#who'),
                $talk = $('#talkwords'),
                $btn = $('#talksub'),
                $words = $('#words')

            $btn.click(function(){
                var hVal1 = $who.prop('value')
                // 获取input框数据
                // var hVal2 = $talk.prop('value')
                var hVal2 = $talk.val()
                

                // 清空输入框
                $talk.prop({value:''})

                // 判断input框为空
                if(hVal2 == ''){
                    alert('无法发送空内容')
                    return;
                }

                var temp = ''

                if(hVal1 == 0){
                    temp = '<div class="atalk"><span>A说:'+ hVal2 +'</span></div>'
                }else{
                    temp = '<div class="btalk"><span>B说:'+ hVal2 +'</span></div>'
                }

                // 插入节点
                $words.html($words.html() + temp)

            })
        })
    </script>
</body>
</html>

jQuery样式操作

        上面的jquery操作更趋向于设置属性,即写,那么在这块的内容主要是它的读和写,也就是可以拿到这个元素它的属性值同时也可以进行一个赋值。

操作行间样式

// 获取div的样式 - 读
$("div").css("width");
$("div").css("color");

// 设置div的样式 - 写
$("div").css("width","200px");
$("div").css("height","200px");
$("div").css({fontSize:"20px",color:"red"});

选择器在获取多个元素时,获取信息获取的是第一个div的width;


操作样式类名

$("#box").addClass("boxx")    // 为id为box的对象追加样式 boxx
$("#box").removeClass("boxx")     // 移除id为的对象的class类名为boxx的样式
$("#div").removeClass("boxx","boss")    // 移除多个样式
$("#div").toggleClass("anotherClass")    // 重复切换anotherClass样式
// 追加样式 - addClass
$('.a').addClass('red')
$('.b').addClass('blue')
$('.c').addClass('green')

// 移除样式 - removeClass
$('.a').removeClass('red')

// 移除多个样式 
$('.a').removeClass('red fosi uline')

// toggleClass 结合 click 事件讲

绑定click事件

        给元素绑定事件的操作:

<button id="btn">按钮</button>

$('#btn').click(function(){
    // 内部this指的是原生对象
    console.log(this);
    // 使用jquery对象用$(this)
    console.log($(this))
})

index()方法 —— 获取索引值 

<ul class="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>

// 获取元素索引值 - index()获取
var indexval =  $('.list li').eq(1).index()
console.log(indexval)    // 输出:1
<ul class="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>

// 结合点击事件
$('.list li').click(function(){
    // 修改样式 - this原生
    // this.style.color = 'red';

    // 修改样式 - $(this)
    $(this).css({ color:'red' });

    // 获取当前点击的索引值
    var nowVal = $(this).index()
    alert(nowVal)
})

案例 —— 选项卡

        结合以上的内容下面来完成这个选项卡案例,通过选项的方式来切换到对应的选项卡内容

小白解析思路:获取选项元素,选中为其添加class样式(addClass方法),同时选择其同辈的元素(siblings()方法)无论是否有删除掉对应的样式 (removeClass方法),这样就完成了选项选择的切换,那么内容的切换,需要知道当前切换的选项是哪一项,可以通过索引值来获取(index()方法获取),通过进行元素选择(eq()方法),同理为其添加样式,以及同辈元素的样式删除即可】 

<!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>Document</title>
    <script src="././jquery-3.6.4.min.js"></script>
    <style>
        .tab_con{ width: 500px;height: 350px;margin: 50px auto 0px; }
        .tab_btns{ height: 50px; }
        .tab_btns input{ width: 100px;height: 50px;background: #ddd;border: none;outline: none; }
        .tab_btns .active{ background: skyblue; }
        .tab_cons{ height: 300px;background: skyblue; }
        .tab_cons div{ height: 300px;line-height: 300px;text-align: center;display: none;font-size: 30px; }
        .tab_cons .current{ display: block; }
    </style>
</head>
<body>

<div class="tab_con">
    <!-- 选择 -->
    <div class="tab_btns">
        <input type="button" value="选项一" class="active">
        <input type="button" value="选项二" />
        <input type="button" value="选项三" />
    </div>
    <!-- 内容 -->
    <div class="tab_cons">
        <div class="current">选项一内容</div>
        <div>选项二内容</div>
        <div>选项三内容</div>
    </div>
</div>

<script>
    $(function(){
        // 获取元素
        var $btn = $('.tab_btns input');
        var $crt = $('.tab_cons div');

        // 选择触发点击事件
        $btn.click(function(){
            // 切换选择
            // $(this).addClass('active');      // 选中效果,除去siblings选择同辈元素的样式
            $(this).addClass('active').siblings().removeClass('active');

            // 切换内容
            // alert($(this).index());    // 根据选项的索引切换内容     
            var indexVal = $(this).index();
            $crt.eq(indexVal).addClass('current').siblings().removeClass('current');
        })
    })
</script>

</body>
</html>

原生JS —— 选项卡

        附上原文章:原生JS写选项卡代码 

<!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>Document</title>
    <style>
        .tab_box{width:600px;margin:30px auto;}
        .label_box{padding-left:30px;font-size:0;}
        .label_box li{display:inline-block;line-height:30px;height:30px;padding:0 10px;margin:0 5px;font-size:14px;border:1px solid #2d9aff;border-bottom:none;border-top-left-radius:4px;border-top-right-radius:4px;cursor:pointer;}
        .label_box li.active{background:#2d9aff;color:#fff;}
        .content_box{padding:20px;border:1px solid #2d9aff;border-radius:4px;box-shadow:0px 0px 6px #aaa;}
        .content_box .content{display:none;height:300px;}
    </style>
</head>
<body>

    <div id="tabBox" class="tab_box">
        <ul class="label_box">
          <li>选项一</li>
          <li>选项二</li>
          <li>选项三</li>
        </ul>
        <div class="content_box">
          <div class="content">内容一</div>
          <div class="content">内容二</div>
          <div class="content">内容三</div>
        </div>
      </div>

<script type="text/javascript">

    window.onload = function(){
        var hTab = document.getElementById('tabBox');
        var hLable = hTab.getElementsByClassName('label_box')[0];
        var hli = hLable.getElementsByTagName('li');
        var hContent = document.getElementsByClassName('content_box');
        var hContdiv = document.getElementsByClassName('content');

        // 默认
        hli[0].className = 'active';
        hContdiv[0].style.display = 'block'

        // 变量
        for(let i = 0; i<hli.length; i++){
            // li添加onclick事件
            hli[i].onclick = function(){
                for(let j = 0; j<hli.length; j++){
                    hli[j].className = ''
                    hContdiv[j].style.display = 'none'
                }
                // console.log(this)
                this.className = 'active'
                hContdiv[i].style.display = 'block'
            }
        }
    }
</script>

</body>
</html>

 jQuery表单事件

blur()         元素失去焦点
focus()        元素获取焦点
click()        鼠标单击
mouseover()    鼠标进入(进入子元素也触发)
mouseout()     鼠标离开(离开子元素也触发)
mouseenter()   鼠标进入(进入子元素不会触发)
mouseleave()   鼠标离开(离开子元素不会触发)
hover()        同时为mouseenter和mouseleave事件指定处理函数
ready()        DOM元素加载
submit()       用户提交表单
<body>
    <form action="">
        <input type="text" id="inVal" />
        <input type="submit" />
    </form>
    <script>
        $(function(){
            // 获取焦点focus
            $('#inVal').focus();

            // 失去焦点blur
            $('#inVal').blur(function(){
                alert($(this).val())
            });
            // 提交submit
            $("form").submit(function(){
                alert("提交了");
            });
        })
    </script>
</body>

表单验证

正则表达式的写法

var rule = new RegExp('规则','可选参数');
var rule = /规则/参数;
// 待测
var num = '123'
var str = '123abc'
// 匹配数字
var rule = /\d+/    // + 一个或多个
console.log(rule.test(num));    // 输出:true
console.log(rule.test(str));    // 输出:true
// str 中不止有数字还有字母 test()方法是一个懒惰匹配的函数,str中有数字那么就会返回true

// 限制开头(^)结尾($)
var strRule = /^\d+$/;  // 从头到尾是数字
console.log(strRule.test(str));     // 输出:false

 规则中的字符

1 )普通字符匹配

如:/a/匹配字符 'a' ,/a,b/匹配字符'a,b'

2 )转义字符匹配

\d 匹配一个数字,即0-9

\D 匹配一个非数字,即0-9

\w 匹配一个单词字符(字母、数字、下划线)

\W 匹配任何非单词字符,等价于([^A-Za-z0-9_])

\s 匹配一个空白符

\S 匹配一个非空白符

\b 匹配单词边界

\B 匹配非单词边界

. 匹配一个任意字符

3 ) 量词:对左边的匹配字符定义个数

? 出现0次或1次(最多出现1次)
+ 出现0次或多次(至少出现1次)
* 出现0次或多次(任意次)
{n} 出现n次
{n,m} 出现n到m次
{n} 至少出现n次

4 )任意一个或范围

[abc123]匹配abc123中的任意一个字符
[a-z0-9]匹配a-z或0-9中的任意一个字符

5 )限制开头和结尾

^ 以紧挨的元素开头
$ 以紧挨的元素结尾

6 )修饰参数

g : global 全文搜索,默认搜索到第一个结果接停止
i : ingore case 忽略大小写,默认大小写敏感

7 )常用函数

test —— 正则.test()        成功true , 失败false

8 )  常用真正规则

// 用户名验证(数字字母下划线6-20位)
var userRule = /^\w(6,20)$/;

// 邮箱验证
var emailRule = /^[a-z0-9][\w\.\-]*@[a-z0-9]+(\.[a-z]{2,5}){1,2}$/i;

// 密码验证
var pwdRule = /^[\w!@#$%^&*]{6,20}/;

// 手机号验证
var phoneRule = /^1[34578]\d{9}$/;

案例 —— 用户表单验证

        完成如下案例,对表单填写的信息进行验证,不能为空以及格式错误的提示信息

【小白思路解析:当用户输完失去焦点(blur)的时候可以进行一个判断,判断输入框的数据是否为空,可以使用prop获取属性值,但这里直接用val()来获取就好了,通过正则来进行验证表单填写的数据,为这五项内容分别设置状态,设置为错误的状态,在未输入和做判断之前状态是一个状态,当输入的内容合法再转化状态,当点击提交的时候需要这个五项都要去满足对应的状态才能够进行一个提交】 

<!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>Document</title>
    <script src="./jquery-3.6.4.min.js"></script>
    <style>
        form{width: 240px;margin: auto;}
        form p{ font-size: small;color: gray; }
        form p:nth-child(7){ text-align: center; }
        form p>span{ display:none;color: red; }
    </style>
</head>
<body>
    <form action="">
        <h3>用户注册</h3>
        <p>用户名称:<input type="text" id="username"><span class="errMsg">提示信息</span></p>
        <p>用户密码:<input type="text" id="password"><span class="errMsg">提示信息</span></p>
        <p>确认密码:<input type="text" id="cpassword"><span class="errMsg">提示信息</span></p>
        <p>用户邮箱:<input type="text" id="useremail"><span class="errMsg">提示信息</span></p>
        <p><input type="checkbox" id="checkform" />同意网站用户使用协议<br><span class="errMsg">提示信息</span></p>
        <p><input type="submit" /></p>
    </form>

    <script>
        $(function(){
            // 默认
            var err_user = true,    
                 err_pwd = true,
                err_cpwd = true,
               err_email = true,
               err_check = false    // 默认同意协议

            var $username = $('#username'),
                $password = $('#password'),
                $cpassword = $('#cpassword'),
                $useremail = $('#useremail'),
                $checkform = $('#checkform')
            
            $username.blur(function(){
                // 检测用户名
                check_username()
            }).click(function(){
                $(this).next().hide()
            })
            
            $password.blur(function(){
                // 检测密码
                check_password()
            }).click(function(){
                $(this).next().hide()
            })

            $cpassword.blur(function(){
                // 确认密码
                check_cpassword()
            }).click(function(){
                $(this).next().hide()
            })

            $useremail.blur(function(){
                //  检测邮箱
                check_useremail()
            }).click(function(){
                $(this).next().hide()
            })

            // 同意协议
            $checkform.click(function(){
                if($(this).is(':checked')){
                    err_check = false
                    $(this).siblings('span').hide()
                }else{
                    err_check = true
                    $(this).siblings('span').html('请阅读勾选同意用户使用协议')
                    $(this).siblings('span').show()
                }

            })

            // 提交
            // 提交之前判断 4项 内容是否填写 和 1项打勾
            $('form').submit(function(){
                if(err_user == false && err_pwd == false && err_cpwd == false && err_email == false && err_check == false){
                    return true
                }else{
                    return false
                }
            })


            // 检测邮箱
            function check_useremail(){
                var emailVal = $useremail.val()

                if( emailVal == '' ){
                    err_email = true
                    $useremail.next().html('邮箱不能为空').show()
                    return
                }
                
                var emailRule = /^[a-z0-9][\w\.\-]*@[a-z0-9]+(\.[a-z]{2,5}){1,2}$/i;
                if( emailRule.test(emailVal) ){
                    err_email = false
                    $useremail.next().hide()
                }else{
                    err_email = true
                    $useremail.next().html('邮箱格式错误').show()
                }
            }

            // 确认密码
            function check_cpassword(){
                var cpwdVal = $cpassword.val()

                if( cpwdVal == '' ){
                    err_check = true
                    $cpassword.next().html('确认密码不能为空').show()
                    return
                }
                var pwdVal = $password.val()
                
                if(pwdVal === cpwdVal){
                    err_check = false
                    $cpassword.next().hide()
                }else{
                    err_check = true
                    $cpassword.next().html('两次密码不一致').show()
                }
            }

            // 检测密码
            function check_password(){
                var pwdVal = $password.val()

                if( pwdVal == '' ){
                    err_pwd = true
                    $password.next().html('密码不能为空').show()
                    return
                }
                var pwdRule = /^[\w!@#$%^&*]{6,12}/
                if( pwdRule.test(pwdVal) ){
                    err_pwd = false
                    $password.next().hide()
                }else{
                    err_pwd = true
                    $password.next().html('密码格式错误').show()
                }
            }


            // 检测用户名
            function check_username(){
                var nameVal = $username.val()
                if(nameVal == ''){
                    err_user = true
                    $username.next().html('用户名不能为空').show()
                    return
                }
                var nameRule = /^\w{6,12}/
                if( nameRule.test(nameVal) ){
                    err_user = false
                    $username.next().hide()
                }else{
                    err_user = true
                    $username.next().html('用户名格式错误').show()
                }
            }
        })
    </script>
</body>
</html>

        以上就是jQuery基础入门的内容的篇目,那么在下一篇继续讲jQuery的其他内容,如在DOM上的操作这些,如果觉得感兴趣的读者可以关注一下,感谢大家的支持!!!


附 : JavaScript 基础入门速成上下篇

        1 .   JavaScript 基础入门速成上篇

        2 .   JavaScript 基础入门速成下篇

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

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

相关文章

JVM 类加载器

文章目录1 类加载器1.1 类加载器介绍1.2 类加载器的加载规则1.2 类加载器类型总结2 双亲委派模型2.1 双亲委派模型介绍2.2 双亲委派模型的执行流程2.3 双亲委派模型的好处回顾一下类加载过程&#xff1a;加载->连接->初始化。 其中连接又分为&#xff1a;验证->准备-&…

指针太难?手把手教你理解指针(传参、函数指针)

目录 前言 一、数组和指针的参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 二、函数指针 1.函数的地址 2.函数指针的形式 3.函数指针的使用 三、加深理解&#xff0c;两段有趣的代码 前言 之前的一篇文章讲到了指针的概念、指针和数组的关系&am…

【机器学习】随机森林预测泰坦尼克号生还概率

目录 前言&#xff1a; 【一】数据清洗及可视化 介绍 知识点 环境准备 数据特征介绍 检查数据 相关系数 缺失值 偏态分布 数值化和标准化 离群点 实验总结一 【二】分类模型训练及评价 介绍 环境准备 模型评估 模型选择 性能度量 实验总结二 【三】随机森…

机器学习入门(全连接神经网络-1)

机器学习入门(全连接神经网络-1) 目录 机器学习入门(全连接神经网络-1)一、神经元简介1.概念2.例子二、常见的激活函数从神经元开始进行讲述,从零开始搭建全连接神经网络。 一、神经元简介 1.概念 神经元是神经网络的基本组成单位。 神经元接受输入,对它们进行一些数学运…

自主机器人运动规划|地图相关概念总结

自主机器人运动规划|地图相关概念总结地图表示占用栅格地图八叉树地图&#xff08;Octo-map&#xff09;Voxel hashing(哈希表地图)点云地图TSDF mapESDF map地图表示 地图分成两个模块&#xff1a; 地图装在数据的数据结构地图信息融合方法 占用栅格地图 使用最为广范的是 …

用PyTorch训练模型识别captcha库生成的验证码

目录 制作训练数据集 用Dataloader加载自定义的Dataset 训练模型 识别验证码 总结与提高 源码下载 在本节&#xff0c;我们将使用深度学习框架PyTorch来训练模型去识别一种难度稍大一点的数字字母混合验证码&#xff08;我们可以使用第三方库captcha生成这种验证码&#…

4.2 换元积分法

思维导图&#xff1a; 学习目标&#xff1a; 学习换元积分法时&#xff0c;可以遵循以下几个步骤&#xff1a; 理解换元积分法的基本思想&#xff1a;将一个复杂的积分变成一个简单的积分&#xff0c;通过引入一个新的变量来实现。 掌握换元积分法的基本公式&#xff1a;如果…

reviewSpringBoot

1.springboot简介说明 Springboot简化新Spring应用的初始搭建以及开发过程 SpringBoot是基于Spring的框架&#xff0c;该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 SpringBoot集成了绝大部分目前流行的开发框架&#xff0c;就像…

FISCO-BCOS链节点黑名单对共识的影响

目录一、前言二、测试过程三、PBFT一、前言 目的&#xff1a;在fisco-bcos&#xff08;v2.8.0&#xff09;环境下&#xff0c;测试黑名单对节点共识的影响。 部署搭建四节点的链&#xff0c;并部署console&#xff1a; https://fisco-bcos-documentation.readthedocs.io/zh_…

3 个自定义防抖 Hooks 的实现原理

前言— 本文通过实现 useDebounceFn、useDebounce、useDebounceEffect 3 种自定义防抖 Hooks&#xff0c;来介绍在日常开发过程中自定义 Hooks 的思路及实现&#xff0c;帮助大家完成通用 Hooks 来提高开发效率。 防抖— 防抖的概念已经司空见惯了&#xff0c;这里稍作简单介…

00后也太卷了吧!进厂起薪18K,原来面试时候都说了这些......

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该牛的还是牛。 这不&#xff0c;前段时间公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽起薪18K。本来还以为是个年少有为的技术大牛呢&#xff0c;结果相处一个月下来发现技术也就那样。 问起他是如何做到和老…

Java Web学习路线

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Java Web ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&a…

(四)栈—中缀表达式转后缀表达式

一、基本介绍 二、应用实例 将中缀表达式"1((23)x4)-5" 转换为 后缀表达式"1 2 3 4 x 5 -" 思路&#xff1a; 1.初始化两个栈&#xff1a;运算符栈s1和存储中间结果的栈s2&#xff1b; 2.从左至右扫描中缀表达式&#x…

【c++初阶】第九篇:vector(常用接口的使用 + 模拟实现)

文章目录vector介绍vector的使用vector的定义vector iterator(迭代器) 的使用begin和endrbegin和rendvector 空间增长问题size和capacityreserve和resize&#xff08;重点&#xff09;测试vector的默认扩容机制emptyvector的增删查改push_back和pop_backinsert和erasefindswapo…

GPT-4创造者:第二次改变AI浪潮的方向

OneFlow编译 翻译&#xff5c;贾川、杨婷、徐佳渝 编辑&#xff5c;王金许 一朝成名天下知。ChatGPT/GPT-4相关的新闻接二连三刷屏朋友圈&#xff0c;如今&#xff0c;这些模型背后的公司OpenAI的知名度不亚于任何科技巨头。 不过&#xff0c;就在ChatGPT问世前&#xff0c;Ope…

Verilog Tutorial(10)如何实现可复用的设计?

写在前面在自己准备写verilog教程之前&#xff0c;参考了许多资料----FPGA Tutorial网站的这套verilog教程即是其一。这套教程写得不错&#xff0c;只是没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加了自己的理解&#xff09;分享给大家。这是网站原文&#xff1a;h…

【敬伟ps教程】平移、缩放、移动、选区

文章目录平移抓手工具旋转抓手缩放工具移动工具详解选区选区工具详解平移 抓手工具 当打开一张大图时&#xff0c;可以通过修改底部的百分比或使用抓手工具&#xff08;H或在任何时候按住空格键来使用抓手工具&#xff09;来查看更多细节 使用抓手工具时滚动所有打开的文档&…

几何的显式表示 - 曲线和曲面

点云&#xff1a;list of points&#xff08;x, y, z&#xff09; 将点云变成多边形的面&#xff0c;从而在计算机中输出多边形网格&#xff1a;Polygon Mesh 就是 拆成小三角 贝塞尔曲线 定义曲线只要满足起止点即可&#xff0c;P1&#xff0c;P2决定了它要往哪个方向弯 de Ca…

STM32 HAL库PID控制电机 第三章 PID控制双电机

STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚定时器通道PA0TIM2_CH1PA1TIM2_CH2PB6TIM4_CH1PB7TIM4_CH2因此需要把TIM2、TIM4配置为编码器模式。在STM32CubeMX中…

如何在react中处理报错

本文为 360 奇舞团前端工程师翻译 原文地址&#xff1a;https://www.developerway.com/posts/how-to-handle-errors-in-react我们都希望我们的应用能稳定、完美运行&#xff0c;并且能够考虑到每一个边缘情况。但是现实情况是&#xff0c;我们是人&#xff0c;是人就会犯错&…