精华内容
参与话题
问答
  • javaScript学习笔记(一)js基础

    万次阅读 多人点赞 2018-09-21 10:07:18
    JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。 诞生于1995年,当时的主要目的是验证表单的数据是否合法。 Java...

     

                                          公众号  关注一波  不定期分享视频资料

     

                                                                   

    一、简介

    1、概述:

    JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。

    诞生于1995年,当时的主要目的是验证表单的数据是否合法

    JavaScript本来应该叫Livescript,但是在发布前夕,想搭上当时超热的java顺风车,临时把名字改为了JavaScript。(也就是说js跟java没有关系,当时只是想借助java的名气)。

    js组成部分:

    (1)核心(ECMAScript):这一部分主要是js的基本语法。

    (2)BOM:Brower Object Model(浏览器对象模型),主要是获取浏览器信息或操作浏览器的,例如:浏览器的前进与后退、浏览器弹出提示框、浏览器地址栏输入网址跳转等操作等。

    (3)DOM:Document Object Model(文档对象模型),此处的文档暂且理解为html,html加载到浏览器的内存中,可以使用js的DOM技术对内存中的html节点进行修改,用户从浏览器看到的是js动态修改后的页面。(增删改查)

    2、特点:

    1. 交互性(它可以做的就是信息的动态交互)
    2. 安全性(不允许直接访问本地硬盘)
    3. 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)

    3、和Java区别:

    4、作用

    avaScript 被用来改进设计、验证表单、检测浏览器、创建cookies,等等。JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比如: Internet Explorer、 Maxthon、Mozilla、Firefox、Netscape、Chrome和 Opera等。

    在目前学习阶段只要记住最常用的二个:(1)运态修改html及css代码 (2)验证表单

    5、书写位置

    5.1、内嵌式:

    理论上js可以书写在页面的任意位置。

    <script>

    alert("内嵌式")

    </script>

    5.2、外链式:

    首先新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。

    <script src="js文件路径地址">这里不能写js语句</script>

    5.3、行内式:

    直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。     onclick单击事件

    <input type="button" value="点我呀!" onclick="alert('点我干啥!^6^');">
    <button onclick="alert('恭喜你,中 500 万.');">点我呀!</button>
    

    6、注释:

    单行注释:		//	注释语句		快捷键ctrl+/
    多行注释:		/* 注释语句 */    快捷键ctrl+shift+/   
    注意:多行注释相互不能嵌套使用,只能在多行注释里面使用单行注释!
    

    7、数据类型:

    Js中的数据类型:
     

    数值型:number(凡是数字都是数值型,不区分整数和小数)
    字符串:string(凡是引号包裹起来的内容全部都是字符串)
    布尔:boolean(true、false)
    对象类型:object(特殊取值null)
    未定义型:undefined
    

    对比java中的数据类型:

    整数:byte short int long
    小数:float double
    字符:char 
    布尔:boolean
    字符串:String

    8、变量:

    8.1、定义:就是存放数据的、内疗可以存储任意数据

    8.2、声明变量:
     

    var 变量名称 = 存储的数据;   	(variable 变量)

    8.3、变量命名规范:

    1.	只能由字母、数字、_(下划线)、$(美元符号)组成。
    2.	不能以数字开头。
    3.	命名中不能出现-(js会理解成减号进行减法的操作),不能和关键字冲突。
    

    js是弱类型语言,不重视类型的定义,但js会根据为变量赋值的情况自定判断该变量是何种类型:

    数值型:var i = 1;	var d = 2.35;
    字符串:var str = "用心学习";
    布尔型:var b = true;
    

    对比Java:java是强类型的语言,注重类型的定义,Java定义类型如下:

    整型:int i = 1;
    浮点型:double d = 2.35;
    字符串:String str = “用心学习”;
    布尔型:boolean b = true;
    

    总结:js中变量的定义。只要加一个var就行。java则使用什么类型的变量就要定义什么类型的。

    9、检测数据类型:

    typeof(value); 或者typeof value;     返回这个变量的类型. 
    说明 : 同一个变量, 可以进行不同类型的数据赋值.
    
    <script type="text/javascript">
        
        var a;
        alert(typeof a);  // undefined
    
        a = 998;
        alert(typeof a); // number
    
        a = "用心学习";
        alert(typeof a); // string
    
        a = true;
        alert(typeof a); // boolean
        
    </script>
    

    10、算术运算符

    +	-	*	/	%	++	--

    注意:

    1.	由于js中的小数和整数都是number类型,不存在类似整数除以整数还是整数的结论。
    2.	字符串和其他的数据使用+号运算,会连接成一个新的字符串。
    3.	字符串使用除了+以外的运算符:如果字符串本身是一个数字,那么会自动转成number进行运算
    ,否则就会返回一个NaN的结果,表示这不是一个数字。NaN:not a number
    
    <script>
    
        alert(1234 / 1000 * 1000); // 1234
      
        var s = "12";
         s -= 10;
        alert(s);  // 2
     
        var s = "aa";
        s -= 10;
        alert(s);  // NaN       Not a Number 不是一个数字
    
        var s = "12";
        s += 10;
        alert(s);       // 1210 
    
    </script>
    

    11、关系(比较)运算符

    >		>=		<		<=  	!=		
    ==	等于(只比较内容)	===	恒等于(比较内容的同时还要比较数据类型)
    注意:关系运算符返回的结果只有两个:true / false
    
    <script>
    
        // 请问1 : 3 > 5, 结果为 ?
        alert(3 > 5);   // false
    
        // 请问2 : “22” == 22  结果为 ?
        alert("22" == 22); // true  (仅仅判断数值)
    
        // 请问3 : “22” === 22  结果为 ?
        alert("22" === 22);  // false  (恒等于, 数值和类型都要相等)
        
    </script>
    

    12、逻辑运算符

    &&	 	与		true&&false		====>false
    || 		或		true||false			====>true
    ! 		非		!true				====>false
    false(理解):false,  0,  null,  undefined 
    true(理解):true, 非0,  非null,  非undefined
    
    针对 && 顺口溜: 找第一个出现的假值. (一假即假)
    针对 || 顺口溜: 找第一个出现的真值. (一真即真)

    演示一:

    <script>
    
        // 短路与 (一假即假)
        // 口诀 : 找第一个为假的值.
    
        // 请问1 :  8 < 7 && 3 < 4, 结果为 ?
        alert(8 < 7 && 3 < 4);  // false
    
        // 请问2 :  -2 && 6 + 6 && null 结果为 ?
        alert(-2 && 6 + 6 && null); // null
    
        // 请问3 :  1 + 1 && 0 && 5  结果为 ?
        alert(1 + 1 && 0 && 5); // 0
    
    </script>
    

    演示二:

    <script>
    
        // 短路或 : 一真即真.
        // 口诀 : 找第一个为真的值.
    
        // 请问1 :  0 || 23 结果为 ?
        alert(0 || 23); // 23
    
        // 请问2 :  0 || false || true  结果为 ?
        alert(0 || false || true); // true
    
        // 请问3 :  null || 10 < 8 || 10 + 10结果为 ?
        alert(null || 10 < 8 || 10 + 10);  // 20
    
        // 请问4 :  null || 10 < 8 || false结果为 ?
        alert(null || 10 < 8 || false); // false
        
    </script>
    

    13、三元运算符:

    条件?表达式1:表达式2
    如果条件为true,返回表达式1的结果
    如果条件为false,返回表达式2的结果
    

    演示:

    <script>
    
        // 请问1 :  3 ? “aaa” : “bbb” 结果为 ?
        alert(3 ? "aaa" : "bbb");       // aaa
    
        // 请问2 :  0 ? “ccc” : “ddd”  结果为 ?
        alert(0 ? "ccc" : "ddd");       // ddd
        
    </script>
    

    14、if条件语句

    这个和Java中if语句一样。

    演示:

    <script>
    
          var score = 59;
    
          if (score >= 90) {
              alert("优秀");
          } else if (score >= 80) {
              alert("良好");
          } else if (score >= 60) {
              alert("及格");
          } else {
              alert("不及格");
          }
    
      </script>
    

    15、switch分支结构

    这个和java中switch结构一样。只是Java中表达式为:常量 整型(去long)、字符、字符串

    演示:

    <script>
    
          var score = 59;
    
          // 需求 : 将需要一个整型数值, 不想要小数点.
          // window 对象的 parseInt 方法.
          score = window.parseInt(score / 10 + "");
          // alert(score);
    
          switch (score) {
              case 10:
              case 9:
                  alert("优秀!");
                  break;
              case 8:
                  alert("良好!");
                  break;
              case 7:
              case 6:
                  alert("及格!");
                  break;
              default:
                  alert("不及格!");
                  break;
          }
    
      </script>
    

    16、循环结构 while、do-while. for;

    while(循环条件){循环体;}
    do{循环体;}while(循环条件);
    for(循环变量赋初值;循环条件;循环变量增值){循环语句;}
    console.log(...); 以日志的形式在控制台输出结果!
    

    演示:

    <script>
    
        // 需求 : 统计 1~100 之间能够被3和7整除的数字个数
    
        var count = 0;
    
        // 1. 遍历 1~100 之间的所有整型数值
        for (var i = 1; i <= 100; i++) {
    
            // 2. 判断
            if (i % 3 == 0 && i % 7 == 0) {
                // alert(i);
                console.log(i);
                // 3. 累加个数
                count++;
            }
        }
    
        // 4. 查看结果
        // alert(count);
        console.log(count);
    
    

    console.log显示如下:

    17、循环嵌套

    演示案例9*9乘法表

     <style>
            table {
                /* 将 table 表格的线变成了细线 */
                border-collapse: collapse;
                /*color: red;*/
                border-color: red;
            }
        </style>
    
        <script>
    
            // 需求 : 九九乘法口诀表
            document.write("<table border='1px solid red' cellspacing='0' cellpadding='8px'>");
            document.write("<caption>九九乘法口诀表</caption>");
            for (var i = 1; i <= 9; i++) {
                document.write("<tr>");
                for (var j = 1; j <= i; j++) {
                    document.write("<td>");
                    document.write(j + "*" + i + "=" + (j*i) + "&nbsp;&nbsp;&nbsp;&nbsp;");
                    document.write("</td>");
                }
                document.write("</tr>");
            }
            document.write("</table>");
    
        </script>
    
    

    18、自定义函数

    函数是命名的独立的语句段,这个语句段可以被当作一个整体来引用和执行:

    格式:

    function 函数名(形式参数){函数体}
    调用函数:函数名(实际参数);
    

    18.1、函数只有被调用后才会执行

    18.2、如果函数需要返回值、直接使用return 返回、不会像java一样要考虑返回值的类型

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo2() {
            return 666;
        }
    
        // 调用函数 :
        alert(demo2());
    
    </script>
    

    18.3、如果函数需要传递参数、不需要指定参数的类型、直接使用变量即可

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo3(a, b) {
            return a + b;
        }
    
        // 调用函数 :
        alert(demo3(10, 20));//显示30
    
    </script>
    

    18.4、js中出现二个重名的函数名、后者会把前面的覆盖掉

    对比java、java有重载(同名不同参)、重写(同名同参同返回值类型、方法体不一样)

    演示:

    <script type="text/javascript">
    
        // 定义一个函数 : function
        function demo4(a, b) {
            alert("调用1...");
        }
    
       function demo4() {
           alert("调用2...");
       }
    
        demo4(10, 20);
        demo4();
    
    </script>
    

    会显示二次下面的图片:

    19、匿名函数

    匿名函数是没有名字的函数

    function(形式参数){函数体}
    调用方式:将匿名函数赋值给一个变量,通过变量名调用函数
    定义函数并赋值给变量:var fn = function(形式参数){函数体}
    调用函数:fn(实际参数);
    

    演示:

    <script type="text/javascript">
    
        // 匿名函数 : 没有名称的函数
        var func = function(i, u) {
            alert(i + " love " + u);
        }
    
        // 调用函数 :
       func("柳岩", "小白");//显示柳岩love小白
    
    </script>
    

    20、案例-轮播图

    说明1 : script 标签需要放在 body 标签之后.
    
    说明2 : window.setInterval(“字符串函数名称()”, 时间毫秒数);
    
    说明3 : window.setInterval(函数名称, 时间毫秒数);
    
    说明4 : window.setInterval(匿名函数, 时间毫秒数);            推荐使用
    <head>
        <meta charset="UTF-8">
        <title>轮播图</title>
    
        <style>
    
            div {
                width: 80%;
                margin: 50px auto;
            }
    
            img {
                width: 100%;
            }
    
        </style>
    
    </head>
    <body>
        <div class="container">
            <img src="../img/01.jpg" alt="图片">
        </div>
    </body>
    

    实现一:

    <script>
    
        // 需求 : 动态获取页面中的 img 标签, 然后修改 img 标签的 src 属性.
        // 1. 获取 img 标签
        var img = document.getElementById("img");
        // alert(img);
    
        // 定义一个变量
        var count = 1;
    
        // 1.2 定义一个函数
        function changeImageSrc() {
            count++;
            img.src = "../img/0"+count+".jpg";
    
            // 判断
            if (count == 8) {
                count = 0;
            }
        }
    
        // 2. 循环切换图片
        // window.setInterval(函数, 时间毫秒); 在指定的时间毫秒间隔, 不断调用第一个参数传入的函数.
        // 调用方式一 :
        // window.setInterval("changeImageSrc()", 1000);
        // 调用方式二 :
        window.setInterval(changeImageSrc, 1000);
    
    </script>
    

    实现二:

    <script>
    
        // 需求 : 动态获取页面中的 img 标签, 然后修改 img 标签的 src 属性.
        // 1. 获取 img 标签
        var img = document.getElementById("img");
        // alert(img);
    
        // 定义一个变量
        var count = 1;
    
        // 2. 循环切换图片
        // window.setInterval(匿名函数, 时间毫秒); 在指定的时间毫秒间隔, 不断调用第一个参数传入的匿名函数.
        window.setInterval(function() {
            count++;
            img.src = "../img/0"+count+".jpg";
    
            // 判断
            if (count == 8) {
                count = 0;
            }
        }, 1000);
    
    </script>
    

    21、js事件

    21.1、事件概述:

    事件三要素:
    1.	事件源:被监听的html元素(就是这个事件加给谁),就是某个(某些)html标签
    2.	事件类型:某类动作,例如点击事件,移入移除事件,敲击键盘事件等
    3.	执行指令:事件触发后需要执行的代码,一般使用函数进行封装
    语法格式:事件源.事件类型=执行指令
    

    21.2、常用的事件:

    案例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件</title>
    
        <script>
            // 窗口 : window 对象提供了一个事件类型  onload 页面加载完成事件.
            // 事件源 : window    事件类型 : 页面加载完成事件 (onload)  执行指令: 就是赋值的 function 函数.
            window.onload = function () {
    
                // 获取页面的 btn 按钮
                var btn = document.getElementById("btn");
                // alert(btn);
    
                // 给 btn 按钮绑定一个事件 (单击事件 onclick)
                // 事件源 : btn按钮    事件类型 : 单击事件 (onclick)  执行指令: 就是赋值的 function 函数.
                btn.onclick = function () {
                    alert("恭喜你, 中了 500 万!");
                }
            }
    
        </script>
    
    </head>
    <body>
        <button id="btn">按钮</button>
    </body>
    </html>
    

    到此基础结束。

     

    ==============《轮播图图片路径问题》================

     

                                                           =================================

                        公众号  关注一波  (一叶知秋博客)不定期分享视频资料

                                                           

     

     

    展开全文
  • 深度学习笔记(13) Softmax分类

    万次阅读 2019-06-08 09:24:14
    Softmax 回归、练一个Softmax分类器

    深度学习笔记(13) Softmax分类


    1. Softmax 回归

    有一种logistic回归的一般形式,叫做 Softmax回归
    能在试图识别某一分类时做出预测
    或者说是多种分类中的一个,不只是识别两个分类

    假设不单需要识别猫,而是想识别猫,狗和小鸡
    把猫加做类1,狗为类2,小鸡是类3
    如果不属于以上任何一类,就分到“其它”或者说“以上均不符合”这一类,把它叫做类0

    用大写的C来表示输入会被分入的类别总个数
    建立一个神经网络,其输出层有4个,或者说C个输出单元
    因此n,即输出层也就是L层的单元数量,等于4,或者一般而言等于C
    则输出层单元的数字代表这4种类型中每个的概率

    做到这一点的标准模型要用到Softmax层,以及输出层来生成输出
    对于L层,得到的z值
    在这里插入图片描述用这个元素取幂方法来计算 t:
    在这里插入图片描述
    把四个数字加起来得到176.3
    最终 a[l] = t / 176.3
    第一个节点输出 e5/176.3=0.842,也就是概率84.2%

    Softmax激活函数的特殊之处在于
    因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量
    Softmax分类器还可以代表的决策边界


    2. 练一个Softmax分类器

    简单来说就是用临时变量t将它归一化,使总和为1,于是这就变成了a[L]
    注意到向量z中,最大的元素是5
    而最大的概率也就是第一种概率,Softmax把向量z变成这个向量
    在这里插入图片描述
    在Softmax分类中,一般用到的损失函数是来训练这个神经网络
    这就意味着,如果试图将它变小
    因为梯度下降法是用来减少训练集的损失的
    要使它变小的唯一方式就是使 -logy^\widehat{y}1 变小,即需要使 y^\widehat{y}1 尽可能大
    整个训练集的损失
    在这里插入图片描述


    参考:

    《神经网络和深度学习》视频课程


    相关推荐:

    深度学习笔记(12)Batch归一化网络
    深度学习笔记(11)超参数调试
    深度学习笔记(10)优化算法(二)
    深度学习笔记(9) 优化算法(一)
    深度学习笔记(8) 实践层面(三)


    谢谢!

    展开全文
  • 〖TensorFlow2.0笔记23〗TensorFlow2.0学习笔记总结!

    千次阅读 多人点赞 2019-10-02 20:38:15
    Tensorflow2.0全套课程学习笔记! tensorflow2.0笔记1:tensorflow2.0介绍以及安装!(2019-10-1 tensorflow2.0正式版发布) tensorflow2.0笔记2:Numpy—实现线性回归问题! tensorflow2.0笔记3:手写数字问题初...
    TensorFlow2.0学习笔记总结!

    文章目录

    一. 第1部分目录

    1. TensorFlow2.0笔记1:TensorFlow2.0(2019-10-1)正式版介绍和安装+Windows&Linux!

    2. TensorFlow2.0笔记2:手写数字(MNIST)识别问题初体验!

    3. TensorFlow2.0笔记3:Numpy—实现线性回归问题!

    4. TensorFlow2.0笔记4:TensorFlow2.0的基础操作!

    5. TensorFlow2.0笔记5:TensorFlow2.0中的索引和切片!

    6. TensorFlow2.0笔记6:TensorFlow2.0中的维度变换!

    7. TensorFlow2.0笔记7:TensorFlow2.0中的broadcasting!

    8. TensorFlow2.0笔记8:TensorFlow2.0中的前向传播实战+补充关于loss的放缩!

    9. TensorFlow2.0笔记9:TensorFlow2.0的高阶操作汇总!

    二. 第2部分目录

    1. TensorFlow2.0笔记10:TensorFlow2.0中数据集加载,测试,实战以及补充关于数据集下载慢的问题!

    2. TensorFlow2.0笔记11:全连接层和输出方式!

    3. TensorFlow2.0笔记12:误差计算之MSE, Cross Enropy!

    4. TensorFlow2.0笔记13:梯度下降,函数优化实战,手写数字问题实战以及Tensorboard可视化!

    5. TensorFlow2.0笔记14:感知机梯度详细过程,Keras高层API,Keras的自定义网络!

    6. TensorFlow2.0笔记15:模型的保存与加载(非常重要)以及CIFAR10自定义网络实现!

    7. TensorFlow2.0笔记16:卷积神经网络中的梯度求解以及CIFAR100与VGG13实战!

    8. TensorFlow2.0笔记17:ResNet-18和ResNet-34实现CIFAR-100图像分类!

    9. TensorFlow2.0笔记18:自编码器Auto-Encoders以及实战!

    三. 第3部分目录

    1. TensorFlow2.0笔记19:过拟合介绍以及解决方法+补充: 实现GPU按需分配!

    2. TensorFlow2.0笔记20:GoogleNet-Iception实现Fashion mnist图像分类+Batch Normalization讲解!

    3. TensorFlow2.0笔记21:自定义数据集实现分类(宝可精灵数据集)+补充tf.where!

    4. TensorFlow2.0笔记22:使用Numpy在MNIST数据集上实现3层BP神经网络!

    5. TensorFlow2.0笔记23:TensorFlow2.0学习笔记总结!!

    6. TensorFlow2.0笔记24:生成式对抗网络(GAN)原理讲解以及实战!

    7. TensorFlow2.0笔记25:循环神经网络RNN原理讲解以及实战!

    在这里插入图片描述

    四. 第4部分目录

    1.『自己的工作3』梯度下降实现SVM多分类+最详细的数学推导+Python实战(鸢尾花数据集)!

    2.『自己的工作4』TensorFlow2.0自动微分和手工求导的结果对比!

    3.『自己的工作6』MNIST Plus++竞赛(更加困难的mnist数据集竞赛)!

    4.『论文笔记』Convolutional Block Attention Module(注意力机制)+TensorFlow2.0复现!

    在这里插入图片描述

    5.〖TensorFlow2.0笔记23〗(更新版)ResNet-18实现Cifar10(94%)和Cifar100(75%)分类!

    在这里插入图片描述

    6.〖TensorFlow2.0笔记26〗YOLOV2目标检测算法以及实战!

    在这里插入图片描述

    五. 欢迎点赞转发,持续更新中!

    六. 需要全套资料的可以私聊我!

    • 方式1:CSDN私信我!
    • 方式2:QQ邮箱:1115291605@qq.com或者直接加我QQ!
    展开全文
  • zigbee学习笔记(一)之 zigbee简介

    千次阅读 多人点赞 2017-11-30 00:45:00
    zigbee学习笔记(一) zigbee简介 1、什么是zigbee? zigbee是协议,类似于蓝牙、WiFi等等;它是一种标准,该标准定义了短距离、低数据传输速率无线通信的所需要的一系列的通信协议。 2、zigbee无线网络工作的三...

    近期在学习zigbee这一方面的东西,特将自己的学习的一些过程写下来,很多都是一些自己的见解,因为初次接触这一方面,有不对的地方,还请见谅!

    zigbee学习笔记(一) zigbee简介

    1、什么是zigbee?

    zigbee是协议,类似于蓝牙、WiFi等等;它是一种标准,该标准定义了短距离、低数据传输速率无线通信的所需要的一系列的通信协议。

    2、zigbee无线网络工作的三个频率 868MHZ、915MHZ、2.4GHZ

    3、不同的工作频率下有不同的数据传输速率,每个频段由分为若干个信道

    4、zigbee无线网络一共分为5层,分别是:物理层(PHY)、介质访问控制层(MAC)、网络层(NWK)、应用程序支持子层(APS)、应用层(APL)

    其中物理层和介质访问层由IEEE802.15.4规范定义 其余三层由zigbee协议定义。

    5、zigbee协议的特点:高可靠性、低成本、低功耗、高安全性、低数据速率

    6、zigbee协议和z-stack协议栈的关系:z-stack是具体实现zigbee协议的一个软件,也可以把他看成一个封装好了的函数库,他具体实现了zigbee协议。通常的应用开发

    都是基于这个协议栈进行二次开发,通过调用协议栈里面的函数,实现我们具体要实现的功能。

    7、zigbee网络中一共有三种设备:

    ①协调器:负责搭建起zigbee网络,搭建玩之后,他就和普通的路由器一样

    ②路由器:起路由功能

    ③终端节点:只负责和自己的父节点通信

    三种设备其实在硬件上是一样的,只不过是在软件烧写进去得时候,我们配置不一样的软件进去,这个我们会在后面具体介绍,在这里我们只需要有这样一个感性的认识

    就行;

    8、zigbee网络中的三种拓扑结构 分别为星形拓扑结构、树形拓扑结构和网形拓扑结构。

     

    星形拓扑结构

     

    星形网络是ZigBee的最小型网络,由一个协调器和若干个终端构成(星形结构不支持路由器)。优点是结构简单和数据传输速度快,其缺点是网络中的节点数少且通

    信距离短,一般用于构成小型网络。星形网络的最大缺点是对协调器的要求很高,一旦协调器出现故障或掉电,整个网络将瘫痪。

    树形拓扑结构

    树形网络结构是由协调器、路由器(也可承担终端的功能)和终端组成,网络结构比星形结构复杂。其优点是网络的节点数多,可组成大规模ZigBee网络,数据传输

    的速度比网形网络快,而且当网络组建完成后可不再依赖协调器,即使将协调器撤出网络仍可正常运行。其缺点是网络的安全性较差,即当一个路由器出现故障时,该路由器下

    的子节点将无法通信,协调器下的网络节点可以是路由器,也可以是终端,每个路由器下仍可以是路由器或终端,上一级节点和其下一级节点形成父子关系。

    网形拓扑结构

    网形网络结构是由协调器、路由器(也可承担终端的功能)和终端组成,其网络结构比树形网络结构复杂。其缺点是通信速度一般会低于树形网络结构,优点是网络的

    节点多,可组成大规模ZigBee网络,而且当网络组建完成后可不再依赖协调器,即使将协调器撤出,网络仍可正常运行。网形网络结构的最大优点是网络的安全性优于树形网络

    结构,即当一个路由器出现故障时可能不会影响其子节点的通信(条件是该子节点的附近有其它路由器)。

    这三种拓扑结构在网络结构上有一定的区别,特别是在后面的网内地址计算的时候需要注意

    9、zigbee网络的网络号、网内地址、Mac地址

    网络号是只某个zigbee网络的网络号,网内地址是在某个zigbee网内部,用于区分不同设备的地址,称为网络地址,也称为短地址(16位),

    Mac地址是每个芯片的硬件地址,是芯片在制作的时候就固定的全球唯一的64位地址,也称长地址。

     

    展开全文
  • js学习笔记

    万次阅读 2015-12-13 23:11:30
    占位,慢慢总结
  • [js学习笔记]PDF.js专题

    万次阅读 多人点赞 2014-12-22 23:01:01
    PDF.js学习笔记
  • 小甲鱼《零基础入门学习Python》学习笔记

    千次阅读 多人点赞 2018-09-06 23:33:58
    根据老师的建议,现在将第二次复习小甲鱼的《零基础入门学习Python》而做的学习笔记,上传到网上,方便今后复习和保存,因为是手写的,所以做了扫描锐化处理,方便阅读。 ...
  • jsTree学习笔记

    千次阅读 2016-09-12 16:43:50
    以下实现在HTML数据初始化实现 jsTree整行选中状态设置$("#tree").jstree({ "plugins" : [ "wholerow" ] }); #tree是jstree的id,plugins是jstree的参数选项 jsTree搜索实现 $("#tre
  • Fabric.js学习笔记

    万次阅读 2017-09-06 15:17:31
    因为快要毕业设计开题了,大概找的方向需要用到canvas画图,但是画起来real麻烦,就找呀找,发现了Fabric.js,然后就开始学习,发现了胜洪宇老师的教程,做了一下学习笔记,敲了一下代码放在了github上,欢迎大家...
  • Node.js 是什么?Node.js与JavaScript的区别是什么?

    万次阅读 多人点赞 2019-06-06 23:37:49
    node.js是什么?Node.js是一个Javascript运行环境(runtime)。Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行  &...

空空如也

1 2 3 4 5 ... 20
收藏数 2,253,931
精华内容 901,572
关键字:

学习笔记