JavaScript基础知识2

news2025/2/23 22:57:43

求数组的最大值案例

    let arr=[2,6,1,7,400,55,88,100]
    let max=arr[0]
    let min=arr[0]
    for(let i=1;i<arr.length;i++){
      max<arr[i]?max=arr[i]:max
      min>arr[i]?min=arr[i]:min
    }
    console.log(`最大值是:${max}`)
    console.log(`最小值是:${min}`)

操作数组

修改数组里的元素

    let arr=['pink','red','green']
    // 修改
    arr[0]='hotpink'
    // 给数组所有元素后面加上老师
    for(let i=0;i<arr.length;i++){
      arr[i]=arr[i]+'老师'
    }
    console.log(arr)

新增数组元素

数组名.push()方法将一个或者多个元素添加到数组的末尾,并返回该数组的新长度

语法(后追加)

arr.push('deeppink')

前追加

arr.unshift(新增的内容),将一个或多个元素追加到数组最前面,并返回数组的长度

    //在数组后追加元素
    let arr=['pink','hotpink']
    // // arr.push('deeppink')
    // // console.log(arr)
    // // console.log(arr.push('deeppink'))// 返回数组的长度 3
    // arr.push('deepink','lightpink')//添加多个数组元素
    // console.log(arr)
    // 在数组前追加元素
    arr.unshift('red')
    console.log(arr)

数组的筛选

 // 需求:将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素筛选出来,放入新数组
    let arr=[2,0,6,1,77,0,52,0,25,7]
    let newArr=[]
    for(let i=0;i<arr.length;i++){
      if(arr[i]>=10){
        newArr.push(arr[i])
      }
    }
    document.write(newArr)

数组去0案例

    let arr=[2,0,6,1,77,0,52,0,25,7]
    let newArr=[]
    for(let i=0;i<arr.length;i++){
    if(arr[i]!==0)
    newArr.push(arr[i])
    }
    console.log(newArr)

删除数组中的元素

数组.pop()方法从数组中删除最后一个元素并返回该元素的值,一次只能删除一个

数组.shift()方法从数组中删除第一个元素,并返回该元素的值

数组.splice()方法,删除指定元素

arr.splice(起始位置,删除第几个元素)可删除多个元素

    let arr=['red','green','blue']
    // arr.pop()
    // console.log(arr.pop())// 返回删除元素的值
    // console.log(arr)
    // arr.shift()//删除第一个元素,同理,返回删除元素的值
    // splice 删除指定元素
    // arr.splice(1,1)//删除green,从索引号为1的元素开始删,只删除一个
    arr.splice(1)//从green开始删除

根据数据生成柱形图

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    .box {
      display: flex;
      justify-content: space-around;
      width: 500px;
      height: 300px;
      border-left:1px solid pink ;
      border-bottom: 1px solid pink;
      margin: 100px auto;
      align-items: flex-end;
    }
    .box>div {
      width: 65px;
      background-color: pink;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      align-items: center;
    }
    .box>div span {
      margin-top: -20px;
    }
    .box>div h4 {
      margin-bottom: -40px;
    }
  </style>
</head>
<body>
  
  <!-- <div class="box">
    <div style="height: 123px;">
      <span>123</span>
      <h4>第一季度</h4>
    </div>
    <div style="height: 145px;">
      <span>145</span>
      <h4>第二季度</h4>
    </div>
    <div style="height: 256px;">
      <span>256</span>
      <h4>第三季度</h4>
    </div>
    <div style="height: 168px;">
      <span>168</span>
      <h4>第四季度</h4>
    </div>
  </div> -->
  <script>
    // 1.四次弹框效果
    // 声明一个新的数组
    let arr=[]
    for(let i=1;i<=4;i++){
      let num=prompt(`请输入第${i}季度的数据`)//prompt前不用加+号,因为后续会与px拼接
      arr.push(num)
    }
    //打印盒子开头
    document.write(` <div class="box">`)
    // 盒子中间
    for(let i=0;i<arr.length;i++){
      document.write(`
        <div style="height: ${arr[i]}px;">
          <span>${arr[i]}</span>
          <h4>第${i+1}季度</h4>
        </div>
      `)

    }
    //打印盒子结尾
    document.write(` </div>`)

  </script>
</body>
</html>

冒泡排序

    let num=[2,5,6,4,3,1,7]
    for(let i=0;i<num.length-1;i++){
      for(let j=0;j<num.length-i-1;j++){
        if(num[j]>num[j+1]){
          let temp=num[j];
          num[j]=num[j+1]
          num[j+1]=temp
        }
      }
    }
    console.log(num)

数组排序

数组.sort() 方法可以排序

    let arr=[2,4,5,1,3]
    //升序
    // arr.sort(function(a,b){
    //     return a-b
    // })
    //降序
    arr.sort(function(a,b){
         return b-a
     })

函数

可实现代码的复用

function,是被设计为执行特定任务的代码块

    function 函数名(){
      函数体
    }

函数名命名规范

  • 和变量名基本一致
  • 尽量小驼峰命名法
  • 前缀应该为动词
  • 命名建议:常用动词约定

函数的调用及封装

语法:函数名()

    // 1.求两个数的和
    // function getSum(){
    //   let num1=+prompt('请输入第一个数')
    //   let num2=+prompt('请输入第二个数')
    //   console.log(num1+num2)
    // }
    // getSum()
    // function getSum(){
    //   let sum =0
    //   for(let i=1;i<=100;i++){
    //     sum+=i
    //   }
    //   console.log(sum)
    // }
    // getSum()

函数的传参

    function getSum(start,end){//形参,形式上的参数
      let sum =0
      for(let i=start;i<=end;i++){
        sum+=i
      }
      console.log(sum)
    }
    getSum(1,50)//实参,实际的参数

函数调用时,小括号里面的是实参,实际的参数,函数声明时,小括号里面的是形参,形式上的参数

当有形式参数时,但调用时并未传递实际参数,则默认为形式参数类型为undefined,执行运算操作时,返回值为NaN,所以为了避免这种情况,可以给形参设置默认值,可以默认为0,这样使程序更严谨,只有未传递形参时才会使用默认值,若传递实参,则不会使用默认值

    function getSum(x=0,y=0){
      documenr.write(x+y)
    }

 函数封装数组案例

    function getArrSum(arr=[]){
      let sum=0
      for(let i=0;i<arr.length;i++){
        sum+=arr[i]
      }
      console.log(sum)
    }
    getArrSum([1,2,3,4,5,6])
    getArrSum([11,22,33])
    getArrSum()//为了防止什么都不传入而导致计算undefined的长度,形参要表示为数组形式,若没有传参,则直接返回空数组

求n到m的累加和

    //求n到m的累加和
    function getSum(n,m){
      let sum=0
      for(let i=n;i<=m;i++){
        sum+=i
      }
      console.log(sum)
    }
    let num1=+prompt('请输入起始值')
    let num2=+prompt('请输入结束值')
    getSum(num1,num2)

函数的返回值

  • 具备返回值的函数:prompt,parserInt等等
  • 没有返回值的函数:alert
  • 函数返回值用return返回
  • return不能换行

当函数要返回多个返回值时,直接用中括号包裹(中间用逗号隔开),相当于返回数组

调试时,F10不进函数体,F11进函数体

    //   return x>y?x:y
    // }
    // let max=getMax(2,3)
    // console.log(max)
    //求任意数组的最大值,并返回
    function getArrMax(arr=[]){
      //先准备一个max变量存放数组的第一个值
      let max=arr[0]
      let min=arr[0]
      for(let i=1;i< arr.length;i++){
        arr[i]>max?max=arr[i]:max
        arr[i]<min?min=arr[i]:min 
      }
      return [max,min]
    }
    let arr=getArrMax([2,3,4,5,6,76])

    console.log(`数组的最大值是${arr[0]}`)
    console.log(`数组的最小值是${arr[1]}`)

 

细节

  •  函数名相同,后面覆盖前面
  • 如果实参多于形参,从左到右一一对应之后,剩下的传参无效
  • 形参多于实参,剩余的形参直接默认为undefined,若参与运算,结果直接为NaN

作用域

全局作用域:全局有效,整个script标签内部或者一个独立的js文件

局部作用域:作用于函数内的代码环境,跟函数有关系,所以也叫函数作用域

若局部变量没有声明,函数之外也可以使用(不推荐)

    let num=10
    function fn(){
      num=10
    }
    fn()
    console.log(num)

变量的访问原则

在能够访问到的情况下,先局部,局部没有再找全局

匿名函数

没有名字的函数,无法直接使用,并且必须先声明,后使用

    let fn=function(x,y){
      console.log('我是函数表达式')
      console,log(x+y)
    }
    fn(1,2)

具名表达式:函数可以先调用再声明,调用函数可以写到任意位置

立即执行函数

避免全局变量之间的污染,立即执行函数后面必须加分号,写完之后会立刻运行,不需要额外调用

    //立即执行函数
    (function(){
      console.log(11)
    })();//第二个小括号本质上是调用函数
    (function(x,y){
      console.log(x+y)
    })(1,2);
    //第二种写法
    (function(x,y){
      console.log(x+y)
    }(1,3));

转换时间案例

    let second=prompt('请输入秒数:')
    function getTime(t){
        let h=parseInt(t/60/60%24)
        let m=parseInt(t/60%60)
        let s=parseInt(t%60)
        h=h<10?'0'+h:h
        m=m<10?'0'+m:m
        s=s<10?'0'+s:s
        return `转换完毕之后是${h}小时${m}分${s}秒`
    }
  let str=  getTime(second)
  document.write(str)

逻辑中断

1.逻辑运算符中的短路

  • 短路:只存在于&&和||中,当满足一定条件时,会让右边的代码不执行
  • &&:若前面已经判断为假,则不执行后面的语句
  • ||:若前面的语句已经判断为真,则不执行后面的语句
  • undefined在逻辑运算符中当假看
    function fn(x=0,y=0){
      x=x||0
      y=y||0
      console.log(x+y)//0
    }
    console.log(11&&22)//都是真 返回最后一个真值
    console.log(11||22)// 输出第一个真值
    fn()

转换为boolean型

显式转换

1.boolean(内容)

''(空字符串)、0、undefined、null、false、NaN转化为布尔值之后都是false,其余则为true 

    console.log(undefined&&20)//undefined   && 若前一项为假,则直接返回前一项的元素,不返回false
    console.log(null&&20)//null

隐式转换

    console.log(undefined&&20)//undefined   && 若前一项为假,则直接返回前一项的元素,不返回false
    console.log(null&&20)//null
  • 有字符串的加法""+1,结果是”1“
  • 减法-(像大多数数学运算一样)只能用于数字,它会使空字符串""转换为0
  • null经过数字转换之后·会变为0
  • undefined经过数字转换之后会变为NaN
  • null==undefined 正确(值相同)
  • null===undefined 错误(数据类型不同)

对象

  • 对象(object):JavaScript里的一种数据类型
  • 可以理解为是一种无序的数据集合,注意数组是有序的数据集合
  • 用来描述某个事务,例如描述一个人
  • 人有姓名年龄性别等信息,还有吃饭睡觉敲代码等功能
  • 如果使用多个变量保存则比较松散,用对象比较统一

对象的使用

1.对象声明语法

    let 对象名={}
    let 对象名=new Object()
    let person={}

2.对象由属性和方法组成

属性
  • 信息或叫特征(名词)。比如手机尺寸、颜色、重量等...
  • 数据描述性的信息称为属性,如人的姓名,身高,年龄,性别等,一般是名词性的
  • 属性都是成对出现的,包括属性名和值,他们之间用英文:分隔
  • 多个属性之间使用英文,分隔
  • 属性就是依附在对象上的变量(外面是变量,对象内是属性)
  • 属性名可以使用""或’‘,一般情况下省略,除非名称遇到特殊符号如空格、中横线等
    let obj={
      'goods-name':'小米10 PLUS'
      uname:'pink老师',
      age:18,
      gender:'女'
    }
    //查的另外一种属性
    console.log(obj['goods-name'])//中括号里要有引号

 

 简单案例

 

    let goods={
      name:'小米10青春版',
      num:'10001122122',
      weight:'0.05kg',
      address:'中国·大陆'
    }
  •  声明对象,并添加了若干属性后,可以使用,获得对象中属性对应的值,称之为属性访问
  • 语法:对象名.属性名
  • 简单理解就是获得对象里面的属性值。
属性·查
    let goods={
      name:'小米10青春版',
      num:'10001122122',
      weight:'0.05kg',
      address:'中国·大陆'
    }
    // 使用属性查 对象名.属性名
    console.log(goods.address)
    console.log(goods.name)
属性·改
goods.weight='0.06kg'
属性·增
    // 增
    // 语法:对象名.新属性=新值
    goods.price='10000'
 属性·删
    // 删
    // 语法:delete 对象名.属性
    delete goods.price
方法

功能或叫行为(动词)。比如手机打电话、发短信、玩游戏...

数据行为性的信息称为方法,如跑步,唱歌等,一般是动词性的,其本质是函数

  1. 方法由方法名和函数两部分构成,他们之间使用:分隔
  2. 多个属性之间使用英文,分隔
  3. 方法是依附在对象中的函数
  4. 方法名可以使用""或'',一般情况下省略,除非名称遇到特殊符号如空格.中横线等
    let obj={
      uname:'刘德华',
      //方法
      song:function(x,y){
        // console.log('冰雨')
        console.log(x+y)
      },
      dance:function(x,y){
        // console.log('tr')
        console.log(x-y)
      }
    }
    //方法的调用 对象名.方法名
    obj.song(1,2)
    obj.dance(2,3)

遍历对象

    // let arr=['pink','red','blue']
    // //for in 很少遍历数组,因为得到的数组下标为字符形式
    // for(let k in arr){
    //   console.log(k)//打印数组的下标 索引号 但是输出下标为字符串'0'
    //   console.log(arr[k])
    // }
    //推荐用for in 来遍历对象
    let obj={
      uname:'小明',
      age:'18',
      gender:'男'
    }
    for (let k in obj){
      console.log(k)// 属性名 'uname' 'age'  k默认的属性名已经加上了引号
      console.log(obj[k])
    }

遍历数组对象

    let students=[
      {name:'小明',age:'18',gender:'男',hometown:'河北省'},
      {name:'小红',age:'18',gender:'女',hometown:'河南省'},
      {name:'小刚',age:'18',gender:'男',hometown:'山西省'},
      {name:'小丽',age:'18',gender:'女',hometown:'山东省'}
    ]
    for(let i=0;i<students.length;i++){
      for(let j in students[i]){
        console.log(students[i][j])
      }
    }

学生信息表格渲染案例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    table {
      width: 600px;
      height: 250px;
      text-align: center;
    }
    table,th,tr,td{
      border: 1px solid #ccc;
      border-collapse: collapse;
      cursor: pointer;
    }
    table tr:nth-child(1){
      font-size: 18px;
      font-weight: 700;
      background-color:#ccc;
    }
    table tr:nth-child(n+2):hover{
      background-color: #eee;
    }
  </style>
</head>
<body>
  <h2>学生信息</h2>
  <p>将数据渲染到页面中...</p>
  <table>
    <caption>学生列表</caption>
    <tr>
      <th>序号</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>家乡</th>
    </tr>
    <script>
      //1. 数据准备
    let students=[
      {name:'小明',age:'18',gender:'男',hometown:'河北省'},
      {name:'小红',age:'18',gender:'女',hometown:'河南省'},
      {name:'小刚',age:'18',gender:'男',hometown:'山西省'},
      {name:'小丽',age:'18',gender:'女',hometown:'山东省'}
    ]
    //2. 渲染页面
    for(let i=0;i<students.length;i++){
      document.write(`
      <tr>
        <td>${i+1}</td>
        <td>${students[i].name}</td>
        <td>${students[i].age}</td>
        <td>${students[i].gender}</td>
        <td>${students[i].hometown}</td>
      </tr>
      `)
    }
    </script>
  </table>
</body>
</html>

内置对象

Math

介绍:Math对象是JavaScript提供的一个“数字”对象

作用:提供了一系列做数学运算的方法

Math对象包含的方法有:

  • random:生成0-1之间的随机数(包括0不包括1)
  • ceil:向上取整
  • floor:向下取整
  • max:找最大数
  • min:找最小数
  • pow:幂运算
  • abs:绝对值
  • round:四舍五入
   console.log(Math.PI);
    console.log(Math.ceil(1.1))//2 天花板向上取整
    console.log(Math.floor(1.1))//1 向下取整
    console.log(Math.round(1.1))//1 
    console.log(Math.round(1.5))//2
    console.log(Math.round(-1.5))//-1,出现.5选大的
    console.log(Math.round(-1.51))//-2 //距离谁最近就是谁
    parseInt('12px')//也是取整函数,只不过功能更强大,可将字符串取整,而floor不行
    console.log(Math.max(1,2,3,4,5,6))
    console.log(Math.abs(-1))
    console.log(Math.pow(4,2))//4的2次方
    console.log(Math.sqrt(16))//16的平方根

内置对象-生成任意范围内的随机数

Math.random()随机数函数,返回一个0-1之间,并且包括0不包括1的随机小数[0, 1)

生成0-10之间的随机数(整数)

 console.log(Math.floor(Math.random()*(10+1)))//[0,1)*11=[0,10]

生成N-M之间的随机数

    function getRandom(N,M){
      return Math.floor(Math.random()*(M-N+1))+N
    }
    console.log(getRandom(3,6))

随机点名案例

需求:请把['赵云','黄忠','关羽','张飞','马超','刘备','曹操']随机显示一个名字到页面中,但是不允许重复显示

    let arr=['赵云','黄忠','关羽','张飞','马超','刘备','曹操']
    // 1.得到一个随机数,取值范围是0-6
    let random=Math.floor(Math.random()*arr.length)
    document.write(arr[random])
    //splice(起始位置(下标),删除几个元素)
    arr.splice(random,1)
    console.log(arr)

猜数字游戏

需求:程序随机生成1-10之间的一个数字,用户输入一个数字

  1. 如果大于该数字,就提示,数字猜大了,继续猜
  2. 如果小于该数字,就提示,数字猜小了,继续猜
  3. 如果猜对了,就提示猜对了,程序结束
    function Random(){
      return random=Math.floor(Math.random()*11)
    }
    let dom=Random()
    while(true){
      let num=+prompt('请输入你猜的数字')
      if(num>dom){
        alert('猜大了')
      }
      else if(num<dom){
        alert('猜小了')
      }
      else{
        alert('恭喜你,猜对了')
        break
      }
    }

规定猜测次数

    function Random(){
      return random=Math.floor(Math.random()*11)
    }
    let dom=Random()
    let i=0
    for(;i<=3;i++){
      let num=+prompt('请输入你猜的数字')
      if(num>dom){
        alert('猜大了')
      }
      else if(num<dom){
        alert('猜小了')
      }
      else{
        alert('恭喜你,猜对了')
        break
      }
    }
    if(i===4){
      alert('次数已经用完')
    }

生成随机颜色

需求:该函数接受一个布尔型参数,表示颜色的格式是十六进制还是rgb格式。

  • 如果参数传递的是true或者无参数,则输出一个随机十六进制的颜色
  • 如果参数传递的是false,则输出一个随机rgb的颜色
    // 1.自定义一个随机颜色函数
    function getRandomcolor(flag=true){
      if(flag){
        let str='#'
        let arr=['0','1' ,'2','3','4','5','6','7','8','9','a','b','c','d','e','f']
        //利用for循环循环六次,累加到str里面
        for(let i=1;i<=6;i++){
          let Random=Math.floor(Math.random()*arr.length)
          str+=arr[Random]
        }
        return str
      }
      else{
        let r=Math.floor(Math.random()*256)
        let g=Math.floor(Math.random()*256)
        let b=Math.floor(Math.random()*256)
        return `rgb(${r},${g},${b})`
      }
    }
    console.log(getRandomcolor(false))
    console.log(getRandomcolor(true))
    console.log(getRandomcolor())

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

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

相关文章

企业专业化管理金字塔:技能进阶与案例分析

在纷繁复杂的企业管理领域中&#xff0c;一套行之有效的管理技能体系对于企业的稳健发展至关重要。本文将深入探讨企业专业化管理金字塔的五个层次&#xff1a;基本的管理技能、业务操作管理技能、组织管理技能、组织开发技能以及管理转变技能&#xff0c;并结合实际案例&#…

Java后端八股------设计模式

Coffee可以设计成接口。 b

代码随想录算法训练营第27天|93.复原IP地址、78.子集、90.子集二

目录 一、力扣93.复原IP地址1.1 题目1.2 思路1.3 代码1.4 总结 二、力扣78.子集2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣90.子集二3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣93.复原IP地址 &#xff08;比较困难&#xff0c;做起来很吃力&#xff09; 1.1 题目 1.2 思路 …

30.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据搜索功能

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;29.数据推测功能…

解决MySQL “Lock wait timeout exceeded; try restarting transaction“ 错误

在处理MySQL数据库时&#xff0c;我们偶尔会遇到一个棘手的错误消息&#xff1a;“Lock wait timeout exceeded; try restarting transaction”。这通常表明我们的一个事务在尝试获取资源时被阻塞了太长时间。在并发环境中&#xff0c;多个事务同时竞争相同的资源可能会导致这种…

前端 - 基础 表单标签 -- 表单元素( input - type属性) 文本框和密码框

表单元素 &#xff1a; 在表单域中可以定义各种表单元素&#xff0c;这些表单元素就是允许用户在表单中输入或选择 的内容控件。 表单元素的外观也各不一样&#xff0c;有小圆圈&#xff0c;有正方形&#xff0c;也有方框&#xff0c;乱七八糟的&#xff0c;各种各样&#xf…

关系数据库:关系数据结构基础与概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

2024/03/19总结

算法&#xff1a; 简单的一个dfs就能过 ac: #include "iostream" #include "algorithm" #include "cstring" #include "queue" using std::cin; using std::cout; using std::endl; #define N 110 char a[N][N]; int abook[N][N]; i…

算法|基础算法|二分和双指针

数学与数论|二分 1.基础二分 2.双指针 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&#xff0c;希望有朝一日我们积累的滴水可以击穿顽石。 基础二分 模板 bool check(int x){/*...*/} …

spring suite搭建springboot操作

一、前言 有时候久了没开新项目了&#xff0c;重新开发一个新项目&#xff0c;搭建springboot的过程都有点淡忘了&#xff0c;所有温故知新。 二、搭建步骤 从0开始搭建springboot 1&#xff0e;创建work空间。步骤FileNewJava Working Set。 2.选择Java Working Set。 3.自…

Java八股文(RabbitMQ)

Java八股文のRabbitMQ RabbitMQ RabbitMQ RabbitMQ 是什么&#xff1f;它解决了哪些问题&#xff1f; RabbitMQ 是一个开源的消息代理中间件&#xff0c;用于在应用程序之间进行可靠的异步消息传递。 它解决了应用程序间解耦、消息传递、负载均衡、故障恢复等问题。 RabbitMQ …

SpringCloud Bus 消息总线

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第八篇&#xff0c;即介绍 Bus 消息总线。 二、概述 2.1 遗留的问题 在上一篇文章的最后&#xff0c;我…

Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)

目录 一、前置说明 二、Gradle 启动&#xff01; 2.1、安装 2.2、初始化项目 2.3、gradle 项目目录介绍 2.4、Gradle 项目下载慢&#xff1f;&#xff08;万能解决办法&#xff09; 2.5、Gradle 常用命令 2.6、项目构建流程 2.7、设置文件&#xff08;settings.gradle.…

15|BabyAGI:根据气候变化自动制定鲜花存储策略

一种新型的代理——Autonomous Agents&#xff08;自治代 理或自主代理&#xff09;&#xff0c; 在 LangChain 的代理、工具和记忆这些组件的支持下&#xff0c;它们能够在无需外部干预的情况下自主 运行&#xff0c;这在真实世界的应用中具有巨大的价值。 AutoGPT 它的主要…

晶圆制造过程中常用载具的类型

晶圆载具用于硅片生产、晶圆制造以及工厂之间晶圆的储存、传送、运输以及防护。晶圆载具种类很多,如FOUP用于晶圆制造工厂中晶圆的传送;FOSB用于硅片生产与晶圆制造工厂之间的运输;CASSETTE载具可用于工序间运送以及配合工艺使用。 OPEN CASSETTE OPEN CASSETTE主要在晶圆…

机器视觉系统选型-镜头基础知识

广角镜头&#xff1a;焦距小于标准焦距50mm的。例如&#xff1a;16mm 景深大&#xff0c;聚焦距离更近 远距照像镜头&#xff1a;焦距大于标准焦距50mm的。例如&#xff1a;75mm 景深浅&#xff0c;放大远距离物体 变焦镜头&#xff1a;镜头焦距可调节&#xff0c;焦距有范围&a…

JWT(跨域身份验证解决方案)

Json web token (JWT), 跨域身份验证解决方案,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于…

学习总结!

最近主要学习了java&#xff0c;题目的话就写了两道。 这道题目运用三维的bfs&#xff0c;第一次做时无从下手&#xff0c;原来可以利用三维数组&#xff08;第一次用三维数组&#xff09;可以解决这类问题&#xff0c;然后套bfs模板即可。 #include<iostream> #include…

Pandas:如何让你的代码性能飙升

在数据分析相关的工作中&#xff0c;Pandas无疑是一个强大的工具&#xff0c;它的易用性和灵活性广受青睐。然而&#xff0c;随着数据量的不断增长和计算需求的日益复杂&#xff0c;Pandas代码的性能问题也逐渐浮出水面。如何让Pandas代码运行得更快、更高效&#xff0c;成为了…

电子科技大学链时代工作室招新题C语言部分---题号G

1. 题目 问题的第一段也是非常逆天&#xff0c;说实话&#xff0c;你编不出问题背景可以不编。 这道题的大概意思就是&#xff0c; Pia要去坐飞机&#xff0c;那么行李就有限重。这时Pia想到自己带了个硬盘&#xff0c;众所周知&#xff0c;硬盘上存储的数据就是0和1的二进制序…