js基础1

news2024/11/16 3:47:03

一.js中的变量

a.var,let ,const的异同

1.var

var在不进行初始化的条件下的值为undefined,它的作用域是函数作用域,在使用var在函数的内部定义一个变量的时候,意味着该变量在退出前进行销毁。并且它可以进行变量提升。

例子:

function foo(){
conlose.log(age);
var age=26;
}
foo();//undefined
//相当于:
function foo(){
var age;
console.log(age);
age=26;
}
foo();//undefined

2.let

let 在声明变量的时候不需要赋值,作用域为块作用域但是不存在变量提升的情况。

3.const

const相当于一个常量在声明的时候必须初始化变量并且他也是块作用域不存在变量提升

4.重点:异同总结

var和let都不需要初始化变量,但是let是块作用域var是函数作用域,var存在变量提升的情况,并且let在全局作用域中声明的变量不会成为window属性而var会成为。

const与let基本相同但是const在声明变量的时候必须赋值而且不能修改相当于一个常量。

例子:

        function test01(){
            if (true) {
                var name = "Mett";
                console.log(name);//Mett
            }
            console.log(name);//Mett
        }
        test01();
        function test02(){
            if (true) {
                let name = "Jok";
                console.log(name);//Jok
            }
            console.log(name);//没有定义,什么也不输出
        }
        test02();
        var student='Alise';
        console.log(window.student);//Alise
        let age=12
        console.log(window.age);//undefined

注意: f o r 循环中的 l e t 声明 \textcolor{red}{注意:for循环中的let声明} 注意:for循环中的let声明

在let出现之前for循环定义的变量会渗透到循环体的外部,使用var时最常见的问题是对迭代变量奇特声明和修改。

        for(var i=0;i<5;++i){
        
        }
        console.log(i);//5;i++先自增,++i先赋值
        for(let i=0;i<5;++i){
        
        }
        console.log(i);//没有定义,仅限于for循环的内部使用
        
        for(var i=0;i<5;++i){
        setTimeout(()=>{
        console.log(i)
        },0)
        }//输出:5,5,5,5,5;因为在退出循环时迭代变量保存的时循环退出的值:5.在之后执行逻辑时,所有的i都是同一个变量,因此输出的额都是最终值。
        for(let i=0;i<5;++i){
        setTimeout(()=>{
        console.log(i)
        },0)
        }//输出:0,1,2,3,4;因为js后台为每个迭代循环声明了一个新的迭代变量。所以每个setTimeout引用的都是不同的变量实例所以得到的是我们所期望的值。

二.语句

1.for-in语句

for-in语句是一种严格的迭代语句,用于枚举对象中的非符号键属性:

for(const proName in window){
document.write(proname)
}

ES中对象的属性时无序的,因此for-in语句不能保证返回对象属性的顺序。换句话说返回的顺序坑能会因为浏览器的不同而产生不同的结果。

注意:当for-in循环要迭代的变量时null或者undefined时,不执行循环。

2.for-of语句

for-of可以用来遍历可迭代对象的元素

for(const el of [2,4,6,8]){
document.write(el)
}

for-of循环会按照可迭代对象的next()方法产生值的顺序迭代元素。

3.for-in与for-of

共性:

for-in和for-of都可以用来遍历属性

区别:

  • for…in语句用于遍历数组或者对象的属性(对数组或者是对象的属性进行循环遍历)

  • for-in得到对象的key或者数组,字符串的下标;for-of和for-each一样直接得到值

  • for-of不能用于对象

  • for of 不同与 forEach, 它可以与 break、continue和return 配合使用,也就是说 for of 循环可以随时退出循环。

    const obj = {
            a: 1,
            b: 2,
            c: 3
        }
        for (let i in obj) {
            console.log(i)    //输出 : a   b  c
        }
        for (let i of obj) {
            console.log(i)    //输出: Uncaught TypeError: obj is not iterable 报错了
        }
    
       const arr = ['a', 'b', 'c']
       // for in 循环
       for (let i in arr) {
           console.log(i)         //输出  0  1  2
       }
       
       // for of
       for (let i of arr) {
           console.log(i)         //输出  a   b   c
       }
    
    

    三.变量,作用域,内存

    1.变量

    原始值:简单的数据; 引用值:由多个值构成的对象

    2.typeof与instanceof的区别

    typeof :用于判断数据类型,返回值有number,string,boolean,function,undefined,objecat六个,我们可以看到typeof判断null、array、object以及函数的实例(new + 函数)时,它返回的都是object。这就导致在判断这些数据类型的时候得不到真实的数据类型。由此引出instanceof

    instanceof :instance的意思是实例,因此可以知道instanceof的作用就是判断该对象是谁的实例,我们也就知道了instanceof是对象运算符。

typeof 和 instanceof 都是用来判断变量类型的,区别在于:
​ 1、typeof判断所有变量的类型,返回值有number、string、boolean、function、object、undefined。
​ 2、typeof对于丰富的对象实例,只能返回object,导致有时候得不到真实的数据类型。
​ 3、instanceof用来判断对象,代码形式(obj1 instanceof obj2)(判断obj1是否为obj2的实例),obj2必须为对象,否则会报错。返回的是布尔值。
​ 4、instanceof可以对不同的实例对象进行判断,判断方法是根据对象的原型链依次向下查询,如果obj2的原型属性存在于obj1的原型链上,(obj1 instanceof obj2)值为true。

3.执行上下文与作用域

执行上下文:

  • 全局执行上下文

  • 这是默认或基本执行上下文。不在任何函数内的代码都属于全局上下文,一个程序中只能由一个全局执行上下文。他要做的有两件事:

    • 创建一个全局对象,在浏览器中为(window)。
    • this 的值设置为全局对象。
  • 函数执行上下文:每次调用函数时,都会为该函数创建一个全新的执行上下文。每个函数都有自己的执行上下文,但它是在调用函数时创建的,这个上下文可以保护里面的私有变量和外界互不干扰。

  • Eval执行上下文在 eval 函数执行代码也会产生一种特殊的执行上下文,但我们通常不会使用它。

    例子1:

    var foo=0;//全局作用域
    console.log(foo);//0
    var myFunction=(function (){
    var foo=1;//函数作用域
    console.log(foo);//1
    var myNesetFunction=(function(){
    var foo=2;//函数作用域
    console.log(foo);//2
    })();
    })();
    

    例子2:

    //eval()函数会将传入的字符串当作js代码执行也就作用域
    eval('var foo=3;console.log(foo);')//eval()作用域;3
    //let/const 块作用域,变量无法提升
    for( let i=0;i<5;i++){
    setTimeout(function(){
    console.log(i);//0,1,2,3,4
    })
    }
    

作用域

  • 什么是作用域?

    在js中,我们可以在任意的位置声明变量,但是不同的位置会影响变量的可用范围,这个范围被称为作用域。简单的来说,作用域就是程序中定义变量的区域,它决定了当前执行代码对变量的访问权限。

  • 作用域的分类

    作用域可以大致分为两种类型,分别是全局作用域和局部作用域。但是由于es6的推行又引入了一个新的作用域:块级作用域

    • 全局作用域

      全局作用域为程序的最外层作用域,一直存在。

      一般情况下属于全局作用域变量具有的以下特征:

      • 最外层的函数和在最外层函数外面定义的变量拥有全局作用域;

        例子:

                // 所有具有全局作用域的变量都会被绑定到 window 对象中,成为 window 对象的一个属性
                // 1.最外层的函数和在最外层函数外面定义的变量拥有全局作用域;
                // 3.所有 window 对象的属性拥有全局作用域。如:window.name。
                var n = 2;//全局作用域
                function fn() {
                    var a = 1;//函数作用域
                    return a;
                }
                window.name='jack'
                console.log(fn());//1
                console.log(n);//2
                console.log('添加到window上的属性',window.fn());//1
                console.log('添加到window上的属性',window.n);
                console.log('添加到window上的属性',window.a);//因为a不属于全局作用域变量,所以window上没有该属性,返回undefined
                console.log("window自带属性",window.name);
                // console.log(a);//报错:a is not defined
        
      • 所有未定义直接赋值的变量拥有全局作用域

         // 2.所有未定义直接赋值的变量拥有全局作用域。
                var n=2
                function fn(){
                    a=1;
                    return a;
                }
                fn()
                console.log(n);//2
                console.log(a);//1//如果没有使用fn()哪呢相当于没有fn()同道,没有进行编译,那么就不存在将a放在全局变量中。
                console.log('添加到window上的属性',window.n);//添加到window上的属性 2
                console.log('添加到window上的属性',window.a);//添加到window上的属性 1
        

        总结

        	根据上方一,二可以发现虽然只是var的写与不写就对结果残生了很大的影响。从而可以引出对变量声明的思考。这两个均属于使用var的函数作用域声明一类。
        	在使用var声明变量时,变量会被自动添加到最接近的上下文。在函数中,最接近上下文的就是函数的局部上下文。在with语句中,最接近上下文也是函数上下文。如果变量未经声明就被初始化了,那么它就会被自动添加到全局上下文中。但是在严格模式下,未经声明就初始化变量会报错。
        
      • 所有 window 对象的属性拥有全局作用域,例如 window.name、window.location、window.top 等。

      • 注意:所有具有全局作用域的变量都会被绑定到 window 对象中,成为 window 对象的一个属性

    • 局部作用域

      和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所以在一些地方会把这种作用域成为函数作用域。

      var n =2;
      
      function fn(){
          var a = 1;
          return a;
      }
      
      console.log(fn()); // 1
      console.log(n); // 2
      console.log(a); // 报错error
      

    注意:在函数内定义的局部变量只有在函数被调用时才会生成,当函数执行完毕后会被立即销毁。

  • 块级作用域

    定义:花括号{...}内部的区域就是块级作用域区域。在es6之前都是用var来声明变量,而js只有全局作用域和块级作用域.但es6新增的let和const可以声明块级作用域的变量。变量的声明应该距离使用的地方越近越好。并最大限度的本地化。

    例子:

            for (var j = 0; j < 10; j++) {
                console.log('var',j);
            }
    
            for (let i = 0; i < 10; i++) {
                console.log('let',i);
            }
            console.log(j);//10
            console.log(i); // ReferenceError: i is not defined
    

    通过上面的例子可以知道在let出现以前我们使用的都是var,这个时候for循环定义的迭代变量会偷盗循环体的外部,并且迭代变量保存的是导致循环退出的值。在改成使用let之后这个问题就消失了,因为此时的迭代变量作用域仅限于for循环内部,并且js引擎在后台回味每隔迭代循环声明一个新的迭代变量,实现了了块级作用域。

    例子:

            function fun() {
                var x=10;
                var i=5;//var没有块级作用域,把外面的内容污染,解决方法一:利用let 二:利用匿名函数
                for(var i=0;i<x;i++){
                document.writeln(i)
                }
                document.writeln(i)
            }
            fun();
    //方式一:
             function fun() {
               var x=10;
                var i=5;//var没有块级作用域,把外面的内容污染,解决方法里利用let
                 for(let i=0;i<x;i++){
              document.writeln(i)
                }
                 document.writeln(i)
             }
            fun();
            //方式二:
            function fun() {
                var x = 10;
                var i = 5;//var没有块级作用域,把外面的内容污染,解决方法里利用let
                (function () {
                    for (let i = 0; i < x; i++) {
                        document.writeln(i)
                    }
                })()
                document.writeln(i)
            }
            fun();
    
  • 作用域链:js中的作用域链静态作用域即词法作用域

    定义:当声明一个函数时,局部作用域一级一级向上扣起来,就是作用域链。

    作用:从定义不难得出作用域链决定了各级上下文中代码在访问变量和函数时的顺序。

    执行流程:

    • 当执行函数时,总是先从函数内部寻找变量,即局部作用域开始。

    • 如果内部找不到(函数的局部作用域没有),则会向创建函数的作用域(声明函数的作用域)寻找,依次向上。

      例子:

              var a = 1;//全局作用域变量
              function f3() {
                  console.log('f3',a);
              }
              function fn() {
                  var a = 2;//函数作用域变量
                  function f1() {
                      var a = 3;//函数作用域变量
                      console.log('f1',a);
                  }
                  //因为f2()定义在函数内部属于函数内部的所以输出的2
                  function f2() {
                      console.log('f2',a);
                  }
                  f1()//3
                  f2()//2
                  //因为f3定义在全局,所以它属于全局变量,因此它向上找到的a为1
                  f3()//1
              }
              fn();//3,2
              console.log(a);//1
      
              var color = 'blue'
              function chageColor() {
                  let athercolor = 'red'
                  console.log('color1', color);
                  console.log('athercolor1', athercolor);
                  function swapColors() {
                      let tempColor = athercolor;
                      color = tempColor;
                      console.log('color2', color);
                      console.log('athercolor2', athercolor);
                      console.log('tempColor2', tempColor);
                      //可以访问到color,athercolor,tempColor
                  }
                  //可以访问到color,athercolor,不可以访问到tempColor
                  swapColors();
              }
      //可以访问到color
              chageColor()//'color1'bulue;  'athercolor1'red;  'color2'red;  'athercolor2'red; 'tempColor2'red   
              console.log('color3', color);//'color1'red; 
              console.log('athercolor3', athercolor);//报错
              console.log('tempColor3', tempColor);//报错
      

    此例子的作用域链:
    在这里插入图片描述

  • 词法作用域

    作用域的内部可以划分成五个阶段(了解):编译,执行,查询,嵌套,异常。

    作用域又可以分为静态作用域和动态作用域。而js语言所采用的的就是静态作用域(又可以说成是词法作用域)规则的。这是否与上方我们常说的全局作用域,局部作用域,块级作用域冲突呢?其实它们并不冲突。因为JavaScript 语言采用的是词法作用域,是语言层面的,而全局作用域等是被包含的。

    定义:所谓的词法作用域,就是代码在编写过程就体现出来的作用范围。代码一旦写好,不用执行, 作用范围就已经确定好了,这个就是所谓的词法作用域。

    词法作用域的规则:

    1. 函数允许访问函数外的数据 (也有就近原则)

    2. 整个代码结构中只有函数可以限定作用域

    3. 作用域内首先使用变量提升分析

    4. 如果当前作用域找到所需变量,则停止查找

      例子:

      var value = 1;
      
      function foo() {
          console.log(value);
      }
      
      function bar() {
          var value = 2;
          console.log(value);
          foo();
      }
      
      bar(); //2, 1
      

      解析:

      执行 foo 函数,先从 foo 函数内部查找是否有局部变量 value,如果没有,就根据书写的位置,查找上面一层的代码,也就是 value 等于 1,所以结果会打印 1。

4.垃圾回收

a.垃圾回收的原理:

​ 通过自动内存管库实现内存分配和闲置资源回收。基本思路:确定哪个变量不会再使用,然后释放它占用的内存,这个过程是周期性的,即垃圾回收程序每隔一段时间就会自动运行。

b.标记策略

​ 从上方的原理中我们知道要通过标记变量进行跟踪记录变量是否还会使用。因此出现了标记策略。

​ 在浏览器的发展史上,用到过的两种主要的标记策略分别是标记清理和引用计数

5.js提升

什么是js提升?

定义: JavaScript 中的提升是一种在声明之前可以使用函数或变量的行为

在js中提升可以分为两种分别是变量提升和函数提升。

变量提升

就变量和常量而言,关键字 var 被提升,let 和 const 不允许提升。

例子:

console.log(a);//undefined
var a = 5; 

在编译阶段,只有声明被移动到内存中。因此,变量 a 的值是 undefined,因为 a 是在未初始化的情况下打印的。注意:当变量在函数内部使用时,变量仅被提升到函数的顶部。

如果变量与 let (const)关键字一起使用,则不会提升该变量.

例子:

a = 5;
console.log(a);// error
let a; 

换一种角度说,变量与let(const)关键字一起使用,变量被提升到暂时性死区(TDZ)中,直到程序执行到该变量的let(const)声明语句的时候才从TDZ中被释放。

暂时死区:在代码块内,使用let和const命令声明变量之前,该变量都是不可用的,语法上被称为暂时性死区。

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

函数提升

由于函数声明和变量声明都会被提升,函数会先被提升,然后才是变量,并且后面的函数声明会覆盖前面的。 代码示例:

   <script>
        //例一:引导
        /* foo();
        function foo() {
            console.log(a); // undefined
            var a = 2;
        }
        //等价于
        function foo() {
            var a;
            console.log(a); // undefined
            a = 2;
        }
        foo(); */
        //例二:错点
        /* foo();
        bar();
        var foo = function bar() {
            console.log(a); // undefined
            var a = 2;
        }
        //等价于
        var foo;
        foo()
        bar()
        foo = function bar() {
            console.log(a); // undefined
            var a = 2;
        } */
        /*
        总结: 函数声明会被提升,但是函数表达式却不会被提升。
            函数表达式不用提升,函数表达式就是把一个函数赋值给一个变量,
            既然都是赋值,那么自然不会提升,只有声明才会提升。
            即使是具名的函数表达式,名称标识符在赋值之前也无法在所在作用域中使用。
        */

        //-----------------函数声明和变量声明同时存在--------------------
        /*  foo(); 
         var foo;
         function foo() {
             console.log(1);
         }
         foo = function () {
             console.log(2);
         };
         foo();
         //等价于
         function foo() {
              console.log(1);
          }
          foo();//1
          var foo
          foo = function () {
              console.log(2);
          };
          foo()//2 */
        /* 
        总结:函数声明和变量声明都会被提升。但是函数会首先被提升,然后才是变量
        */

        /* foo();
        function foo() {
            console.log(1);
        }
        var foo = function () {
            console.log(2);
        };
        function foo() {
            console.log(3);
        }
        // foo()//附加
        //等价于
        function foo(){
        console.log(1);
        }
        function foo() {
            console.log(3);
        }
        var foo
        foo()
        foo = function () {
            console.log(2);
        };
        // foo()//附加 */
        /* 
        总结:函数声明还是可以覆盖
        */

        /* 
        总结:总结 声明本身会被提升,而包括函数表达式的赋值在内的赋值操作并不会提升。
        */


	function a(){}
	var a;
	console.log(a);
	var b;
	function b(){}
	console.log(b)
	var c=1;
	function c(){}
	console.log(c);
	function d(){}
	var d=1;
	console.log(d);

上面代码开始分别定义了名为a、b的函数和变量,由于定义变量a、b时并未指定其初始值,因此不管这些变量放在同名的函数名之前还是之后,变量都会被函数覆盖;代码接下来定义了名为c、d的函数和变量,由于定义变量时为c、d变量指定了初始值,因此不管这些变量放在同名的函数名之前还是之后,变量都会覆盖函数。

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

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

相关文章

操作系统概述(一、并发)

系列文章目录 文章目录 系列文章目录前言定义 一、操作系统发展史1940s的程序1950s的计算机1960s的计算机1970s 基本和现代一样了 others 二、程序状态模型从不同视角看程序&#xff1a; 操作系统上的程序 三、线程库四、程序并发五、自旋锁与互斥锁的实现自旋锁的使用场景 六、…

21 brk 的初始化

前言 这个问题是 衍生自 malloc 的问题的调试 malloc 虚拟内存分配的调试(1) malloc 虚拟内存分配的调试(2) 假设我们使用 gdb 或者 gdbserver 启动调试的该测试用例对应的可执行程序 我们可以观察到的现象是 p1, p2, p3 的地址是固定的, 均是类似于 elf 中最大的虚拟地…

基于vue3+pinia2仿ChatGPT聊天实例|vite4.x仿chatgpt界面

使用vue3pinia2开发仿制chatgpt界面聊天实例Vue3-Chatgpt 基于Vue3.xPinia2VueRouterVue3-Markdown等技术构建仿ChatGPT网页端聊天程序。支持经典分栏界面布局、light/dark模式、全屏半屏显示、Markdown语法解析、侧边栏隐藏等功能。 技术框架 编辑工具&#xff1a;Cursor框架…

精炼计算机网络——物理层(二)

文章目录 前言2.4信道复用技术2.4.1 频分复用、时分复用和统计时分复用2.4.2 波分复用2.4.3 码分复用 2.5 数字传输系统2.6 带宽接入技术2.6.1 ADSL技术2.6.2 光纤同轴混合网&#xff08;HFC网&#xff09;2.6.3 FTTx技术 总结 前言 上篇文章&#xff0c;我们初步了解了物理层…

国考省考结构化面试:应急应变事件处理,宏观全面把控,措施有效具体,着眼当前放眼未来,标本兼治

国考省考结构化面试&#xff1a; 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点 遇到寒…

idea 创建java项目,引入第三方jar,打包jar包

目录 一、新建并运行项目二、下载第三方Jar三、引入第三方Jar四、将项目打成Jar包 一、新建并运行项目 前提&#xff1a;已安装好JDK&#xff0c;并且配置好了JDK环境变量。 直接点击create创建即可 刚创建完的项目可能是没有out目录的&#xff0c;当我们执行一次main方法&…

Gradio的web界面演示与交互机器学习模型,安装和使用《1》

如何快速地将机器学习模型&#xff0c;给创建和分享出去&#xff0c;让更多的人来体验&#xff1f;Gradio就是一种快速搭建web界面来演示机器学习模型的方式&#xff0c;任何人都可以在任何地方使用它。 官网地址&#xff1a;https://gradio.app/ 1、安装Gradio 前提条件:Gra…

YOLOv5:图解common.py常用模块

YOLOv5&#xff1a;图解common.py常用模块 前言前提条件相关介绍common.py基本模块ConvBottleneckBottleneckCSPC3SPPSPPFFocus未完待续 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入YOLO系列专栏或我的个…

jieba分词(1):入门案例

1 场景介绍 大数据量的查询问题 假设我们要从商品的表里面查询一个商品 我们的数据库里面肯定有个t_goods的表&#xff0c;我们现在利用商品的名称做模糊查询 1.1 对于数据库的查询的 select * from t_goods where goodsName like “%手机%” ; 问题&#xff1a; 这个查询…

CSDN | 好久不见,甚是想念

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

JavaScript实现在键盘输入按键,浏览器进行显示的代码

以下为实现在键盘输入按键&#xff0c;浏览器进行显示的代码和运行截图 目录 前言 一、在键盘输入按键&#xff0c;浏览器进行显示 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行快速查找&#xf…

《灰盒模型在非侵入式体外估计糖化血红蛋白百分比和数字脉搏波形的推导和验证》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…

84.python input输入函数知识拓展

文章目录 1. input函数知识回顾2. input常犯错误解析3. 用函数转换从终端输入的数据3.1 输入的数为整数&#xff0c;则用int转换为整数3.2 输入的数为浮点数&#xff0c;则用float转换为浮点数3.3 不考虑输入的数据类型&#xff0c;则用eval函数转换 4. 变量的多种赋值方式4.1 …

OpenCV教程——OpenCV环境配置及第一个测试代码

1.OpenCV简介 OpenCV是一个计算机视觉的开源库。英文全称是&#xff1a;Open Source Computer Vision Library。 常用的OpenCV的核心模块&#xff1a; Image ProcessCamera Calibration and 3D ReconstructionVideo AnalysisObject DetectionMachine LearningDeep LearningG…

【Linux】Linux安装Git(图文解说详细版)

文章目录 前言第一步&#xff0c;官网下载安装包第二步&#xff0c;解压安装包第三步&#xff0c;安装编译环境第四步&#xff0c;编译源码第五步&#xff0c;安装git第六步&#xff0c;配置环境变量 前言 服务器版本&#xff1a;CentOS7.8 git官网&#xff1a;https://git-sc…

汽车出租系统【纯控制台】(Java课设)

系统类型 纯控制台类型&#xff08;没有用到数据库&#xff09; 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87753364 更多系统…

Qt5.14.2安装教程

之所以选择安装Qt5.14.2&#xff0c;是因为从5.15.0起&#xff0c;对于开源用户&#xff0c;Qt官方不再提供独立安装文件&#xff0c;源码安装听说很繁琐&#xff0c;并且还要激活码。 官网下载链接&#xff1a;https://download.qt.io/archive/qt/5.14/5.14.2/ 1、Windows用户…

智能优化算法:基于驾驶训练的优化算法-附代码

智能优化算法&#xff1a;基于驾驶训练的优化算法 文章目录 智能优化算法&#xff1a;基于驾驶训练的优化算法1. 基于驾驶训练优化算法1.1 初始化1.2 阶段一&#xff1a;驾驶教练培训&#xff08;探索阶段&#xff09;1.3 阶段二&#xff1a;学员学习&#xff08;探索阶段&…

Jupyter notebook 如何设定默认的保存目录?

前言&#xff1a; 做智能车的时候&#xff0c;Jupter Notebook的默认保存在可怜的C盘&#xff0c;本来就很紧张的C肯定受不了&#xff0c;要改到别的地方&#xff0c;网上找了一些参考&#xff0c;说变更一下配置地址就可以了&#xff0c;照着做&#xff0c;99%的博客说&#x…

Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130534343 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…