switch部分笔记

合集下载

Java学习笔记之switch循环语句

Java学习笔记之switch循环语句

Java学习笔记之switch循环语句0x00 概述本篇内容包括switch语句,for循环,while循环,random函数。

0x01 switch语句1.1 switch语句结构格式switch(表达式) {case 1:语句体1;break;case 2:语句体2;break;...default:语句体n+1;break;}执⾏流程/*1. ⾸先计算出表达式的值2. 其次,和case依次⽐较,⼀旦有对应的值,就会执⾏相应的语句,在执⾏过程中,遇到break就会结束3. 最后,如果所有的case都和表达式的值不匹配,就会执⾏default语句体部分,然后程序结束*//*switch语句格式:switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;…default:语句体n+1;[break;]}格式说明:表达式:取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String。

case:后⾯跟的是要和表达式进⾏⽐较的值。

break:表⽰中断,结束的意思,⽤来结束switch语句。

default:表⽰所有情况都不匹配的时候,就执⾏该处的内容,和if语句的else相似。

执⾏流程:⾸先计算表达式的值。

依次和case后⾯的值进⾏⽐较,如果有对应的值,就会执⾏相应的语句,在执⾏的过程中,遇到break就会结束。

如果所有的case后⾯的值和表达式的值都不匹配,就会执⾏default⾥⾯的语句体,然后程序结束掉。

*/import java.util.Scanner;public class SwitchDemo {public static void main(String[] args) {System.out.println("开始");//需求:键盘录⼊⼀个星期数(1,2,...7),输出对应的星期⼀,星期⼆,...星期⽇Scanner sc = new Scanner(System.in);System.out.println("请输⼊⼀个星期数(1-7):");int week = sc.nextInt();switch(week) {case 1:System.out.println("星期⼀");break;case 2:System.out.println("星期⼆");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期⽇");break;default:System.out.println("你输⼊的星期数有误");break;}System.out.println("结束");}}1.2 switch语句联系-春夏秋冬需求:⼀年有12个⽉,分属于春夏秋冬4个季节,键盘录⼊⽉份,请⽤程序实现判断该⽉份属于哪个季节,并输出。

Switch中文详尽学习笔记

Switch中文详尽学习笔记

第一章园区网概述园区网特点1. 在一个固定地理区域内的一个公司或一个公司的一部分。

2. 拥有该园区网的公司通常也拥有该园区内所用的物理线路。

传统园区网的主要问题1. 可用性2. 性能在传统园区网中,通常用多端口网桥将一个局域网分段成隔离的碰撞域。

这样可解决两个问题:1. 冲突域(Collision Domain)2. 距离限制网络中通信的三种形式:单播(Unitcast)、组播(Multicast)、广播(Broadcast)。

1. 多点广播实例:Cisco IP/TV分发多媒体数据、定位IP服务上的Novell 5。

2. 提出请求的广播:IP的地址解析协议(ARP)、NetBIOS的名字请求、网间包交换协议(IPX)寻找最近服务器(Get Nearest Server,GNS)请求。

3. 发布通告的广播:IPX服务通告协议(SAP)数据包、路由信息协议(RIP)、内部网关路由选择协议(IGRP)。

遏制广播的两种方法:1. 使用路由器生成多个子网;2. 利用交换机实施VLAN。

当前园区网由两部分组成:1. 局域网交换机2. 路由器传统的80/20规则和新的20/80规则1. 80/20规则:在设计恰当地网络环境中,一个给定网段上80%的流量是本地的,不超过20%的网络流量需要通过主干。

2. 20/80规则:只有20%的流量是到本地工作组局域网的,而80%的流量需要流出本地网络。

导致流量模式的改变有两个因素:1. 基于Web应用的计算普遍,很多PC既是信息的接受者,也是信息的发布者;2. 企业部署集中式的服务器群(既降低成本、提高安全、便于管理)。

新的园区网模型中的3类服务1. 本地服务:本地数据流不进入网络主干或通过路由器2. 远程服务:远程服务数据流穿过广播域边界,但可能也可不通过网络主干3. 企业级服务:放在距离网络主干很近的一个独立的子网上与OSI分层相应的PDU和设备类型模型层PDU类型设备类型数据链路层(第2层) 数据帧交换机/网桥网络层(第3层) 数据包路由器传输层(第4层) TCP数据分段TCP端多层交换机多层交换基于单独的流,MLS-SE为MLS流维护一个缓存条目并为每个流存储统计信息。

FreeSWITCH学习笔记(一)

FreeSWITCH学习笔记(一)

FreeSWITCH学习笔记(⼀)【1】FreeSWITCH学习笔记1、Windows安装包下载地址:2、源码下载地址:3、FreeSWITCH后台模式启动命令:freeswitch -nc(即No Console)后台模式没有控制台4、windows平台默认密码已修改为:liu12345、windows平台客户端分别为:X-Lite 和 EyeBeam6、freeswitch默认使⽤UDP的5060端⼝。

如果先启动客户端,会占⽤这个端⼝,所以,建议先启动freeswitch,再启动客户端。

7、如果运⾏freeswitch出现以下错误,是因为端⼝被占⽤了。

Cannot lock pid file /usr/local/freeswitch/run/freeswitch.pid.8、如果输⼊fs_cli,提⽰如下类似错误:[ERROR] fs_cli.c:1610 main() Error Connecting [Socket Connection Error]说明FreeSWITCH没有启动或 mod_event_socket没有正确加载,请检查TCP的8021端⼝是否处于监听状态或被其他进程占⽤。

9、freeswitch -nonatfreeSWITCH启动时默认会启⽤uPnP(或NAT_PMP)协议试图查找你的路由器是否⽀持并在你的路由器上“打洞”,如果你的路由器不⽀持该协议,这⼀步可能耗时⽐较长,因⽽影响启动速度。

所以,如果你只是在内⽹测试并且⼀天启动很多次的话,建议关掉这个选项。

组合参数(后台模式启动),启动命令:freeswitch -nc -nonat10、修改配置XML⽂件后,必须先使⽤命令使之⽣效:reloadxml11、客户端注册错误:(1)提⽰408:Request Timeout⼀般都是由于防⽕墙引起的。

关闭防⽕墙(本地CentOS系统):临时关闭:service iptables stop永久关闭:chkconfig iptables off(2)提⽰408:forbidden⼀般都是由于账号密码配置错误,鉴权没有通过⽽被禁⽌注册。

switch的用法和短语

switch的用法和短语

switch的用法和短语概述:在英语中,Switch是一个非常常用的动词,它有着多种不同的用法和短语。

本文将介绍Switch的几种用法,并提供相关短语的例句和解释。

一、交换或转变(Transfer or Change)1. Switch (from...) to..."Switch (from...) to..." 是指从一种状态或行为转变到另外一种状态或行为。

例如:- I decided to switch from a vegetarian diet to a vegan diet for ethical reasons.- She switched from ballet to hip-hop dance.2. Switch (sth) with..."Switch something with..." 表示与某物进行交换。

例如:- Can I switch seats with you so that I can sit next to my friend?- He switched his old phone with the latest model.3. Switch on/off"Switch on/off" 是打开或关闭某个设备或电器时使用的短语。

例如:- Don't forget to switch off the lights when you leave the room.- She switched on her computer and started working on her assignment.4. Switch between..."Switch between..." 意味着在两个或多个选项之间进行切换。

例如:- You can switch between different languages on this website.- He likes to switch between coffee and tea depending on his mood.二、改变观点(Change Perspective)1. Switch sides/positions/roles"Switch sides/positions/roles" 意味着改变立场、职位或角色。

OpenFlow Switch学习笔记三Flow Tables

OpenFlow Switch学习笔记三Flow Tables

OpenFlow Switch学习笔记(三)——Flow Tables/CasonChan/p/4620652.html 这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow T ables,以了解其内部的 matching 以及 action handling 机制。

下文将会分为几个部分来逐步详述OpenFlow Switch内部数据包的流转机制。

1、Pipeline Processing 遵循OpenFlow Switch规范的OpenFlow交换机大致分为OpenFlow-only 和OpenFlow-hybrid 两类。

OpenFlow- only交换机仅仅只支持OpenFlow规范定义的操作,所有经过该类交换机的数据包仅仅只能被 OpenFlow Pipeline 处理,而不能被其他方式处理。

而OpenFlow-hybrid 交换机既支持OpenFlow规范定义的操作,又支持传统交换机规定的操作,比如传统的L2交换、VLAN隔离、L3路由、ACL以及QoS处理等。

该类交换机必须要提供一种除OpenFlow Switch规范约定的能将经过它的数据包转发到OpenFlow Pipeline处理,也能转发到Normal Pipeline处理特性之外的分类机制,比如交换机可以根据数据包的VLAN tag或者ingress port来决定使用某个Pipeline来处理,或者可能将所有的数据包直接转发到OpenFlow Pipeline处理。

OpenFlow-hybrid 交换机也可能将来自于 OpenFlow Pipeline 处理后的数据包通过NORMAL 或者 FLOOD Reserved Port 转发到 Normal Pipeline 继续处理。

OpenFlow Pipeline由多个Flow T ables组成,而每个Flow T able又包含有多个Flow Entries。

根本的switching部份中文笔记

根本的switching部份中文笔记
桥只能有一个spanning tree,switching可以有很多个
桥只能有16个port,但是switching可以有上百个
switch三大功能
address learning: 交换机能记得来源硬件地址和接口并输入到MAC数据库,
forward/filter decisions:当一个接口接收到帧,交换机会寻找它的目标硬件地址和寻找退出接口
transparent: 不参与VTP域,但是转递VTP通告通过trunk link,VTP transparent 交换机可以增加和删除VLANs好像交换机使用它自己的数据库和不和其它交换机分享,透明是只考虑本地性有意义的。
四种spanning tree prot 状态
blocking: 不转递帧,只倾听BPUDs,所有的ports缺省是blocking,
listening:倾听BPDUs确定在转递数据前没有回路发生。
leaning: 学习MAC地址并建立过滤表但不转递数据包
forwarding:传送和接收所有数据
cut-through: 只接收目标MAC地址,查询MAC过滤表
fragmentfree:在转递前检查开始的帧的64 bytes(collision window)有没有碎块
VTP
server: 所有交换机缺省为server,你最小需要一台server在你的VTP域中作为传播VLAN信息贯穿域。
收敛
当桥和交换机在转变状态过渡时,没有数据能流动,收敛就是确定所有的设备都有相同的数据库。
三种LAN交换机类型
store and forward:接收所有数据帧到交换机缓冲,运行CRC,如果它太短:小于64bytes,或者太大:大于1518bytes,将被丢弃。然后查询MAC过滤表目标地址。

switch语句总结笔记

switch语句总结笔记

switch语句总结笔记1.switch 语句语法:switch(expression){case value1 : statement1;break;case value2 : statement2;break;case value3 : statement3;break;default: statement4;}注意:expression必须是byte、short、int、char类型的,value必须与expression类型兼容的⼀个常量,⽽且不能重复。

⼀定不要望了每个判断后添加break,否则计算机回默认执⾏为真后⾯所有的statement;default语句可以出现在任意位置;statement、break、default都可以不写。

2.switch⽆breakint a=2;switch(a){case 1 :System.out.println(1);case 2 : System.out.println(2);case 3 :System.out.println(3);break;default:System.out.println(4);}运⾏结果:23代码解析:case 2 语句后没有break,程序继续向下执⾏,遇到case 3 语句后的break结束switch语句,故default语句不会执⾏。

4.case后⽆statement语句public class sd {public static void main(String[] args) {int month=2;switch(month){case 12 :case 1 :case 2 :System.out.println("冬季");break;case 3 :case 4 :case 5 :System.out.println("春季");break;case 6 :case 7 :case 8 :System.out.println("夏季");break;case 9 :case 10 :case 11 :System.out.println("秋季");break;default:System.out.println("输⼊错误");}}}5.default 不在末尾public class A {public static void main(String[] args) {int a=2;switch(a){default: System.out.println("no");case 0: System.out.println(0);case 1: System.out.println(1);}}}运⾏结果:no1public class A {public static void main(String[] args) {int a=0;switch(a){default: System.out.println("no");case 0: System.out.println(0);case 1: System.out.println(1);}}}运⾏结果:1switch 语句的执⾏逻辑:先找experssion对应的value值,如果存在执⾏对应语句向下执⾏直到遇到break;如果不存在则执⾏default语句再向下执⾏,遇到break停⽌。

ccnp详细笔记-switch总结

ccnp详细笔记-switch总结

ccnp详细笔记-switch总结.docCCNP详细笔记 - SWITCH前言CCNP(Cisco Certified Network Professional)是思科认证网络专业人士的简称,是网络领域内高度认可的专业资格认证。

SWITCH是CCNP认证考试的一部分,主要涉及园区网交换和LAN交换技术。

本文档将提供SWITCH考试的详细笔记,帮助考生全面复习和准备。

第一部分:园区网交换概念VLAN(虚拟局域网)定义:VLAN是一种在交换机上创建不同广播域的技术,用于隔离网络流量。

配置:通过vlan database模式创建VLAN,并使用vlan id命令分配ID。

Trunking定义:Trunking是一种允许多个VLAN通过单个物理链路传输的技术。

配置:使用switchport mode trunk命令在端口上启用Trunking。

EtherChannels定义:EtherChannel允许将多个物理链路捆绑成一个逻辑通道,增加吞吐量和冗余。

配置:使用channel-group命令创建EtherChannel。

STP(生成树协议)定义:STP用于防止网络中的环路,通过选择活动路径和备用路径来管理网络拓扑。

配置:可以通过spanning-tree命令配置STP参数。

第二部分:LAN交换技术端口安全定义:端口安全用于限制连接到特定交换机端口的设备数量,防止MAC 地址泛滥。

配置:使用switchport port-security命令设置端口安全。

QoS(服务质量)定义:QoS用于管理网络流量,确保关键应用的性能。

配置:通过分类、标记、队列和调度等技术实现QoS。

ACL(访问控制列表)定义:ACL用于过滤网络流量,控制对网络资源的访问。

配置:使用ip access-group命令应用ACL。

无线LAN集成定义:无线LAN集成允许将无线接入点与有线网络无缝集成。

配置:涉及WAP(无线接入点)的配置和无线控制器的管理。

C语言学习笔记之switch有无break差别

C语言学习笔记之switch有无break差别
当我switch的英文就是开关的意思我们把a当作一把钥匙当我们a2时相当于插入钥匙孔case2这时候相当于switch开关打开所有的case都无作用全部都被打开则没有break时也不会受到前面case影响仍然会执行下面的语句这是我个人见解
C语言学习笔记之 switch有无 break差别
今天复习到了switch语句,我们正常的写法中,是经常把switcheak去掉呢
可以看到,我们选择2时,的确会到case 2里面执行语句,可是没有break还是会输出下的语句直到switch结束。 按照我个人的理解,可以想象为以下图片
当我switch的英文就是开关的意思,我们把a当作一把钥匙,当我们a=2时,相当于插入钥匙孔case 2,这时候相当于switch开关打开,所 有的case都无作用,全部都被打开,则没有break时也不会受到前面case影响,仍然会执行下面的语句,这是我个人见解。

switch教程

switch教程

switch教程1. 了解开关(Switch)的基本概念开关是一种常见的电气元件,用于控制电路中的电气信号通断。

它通常有两个状态:打开和关闭,通过切换开关的位置来切换这两种状态。

2. 开关的分类开关可以根据不同的特点进行分类。

常见的开关分类有以下几种:- 常开(normally open)开关:在打开状态下才允许电流通过。

- 常闭(normally closed)开关:在关闭状态下才允许电流通过。

- 切换(toggle)开关:在每次切换时,开关会保持在打开或关闭状态,直到下一次切换。

3. 开关的符号表示在电路图中,开关通常用特定的符号进行表示。

常见的开关符号有以下几种:- 常开开关的符号表示为一个直线和一个连接点,表示在打开状态下电流能够通过。

- 常闭开关的符号表示为一个连接的环,表示在关闭状态下电流能够通过。

- 切换开关的符号表示为一个直线和一个连接点,通常伴有一个箭头表示切换的位置。

4. 开关的连接方式开关可以根据不同的连接方式来实现不同的控制功能。

常见的开关连接方式有以下几种:- 单极单 throw(SPST):这是一种简单的开关连接方式,只有一个输入和一个输出。

它只能实现通断控制。

- 单极双 throw(SPDT):这种开关连接方式有一个输入和两个输出。

它可以实现两个电路中的通断控制。

- 双极双 throw(DPDT):这种开关连接方式有两个输入和两个输出,可以实现更复杂的电路控制。

5. 开关的使用场景开关被广泛应用于各种电路和设备中。

一些常见的开关使用场景包括:- 家庭电路:用于控制灯光和电器设备的通断。

- 电子设备:用于控制电源和功能开关。

- 自动化系统:用于控制机器人和自动化生产线等设备。

6. 开关的安装和维护在安装和维护开关时,需要注意以下几点:- 确保正确连接开关的输入和输出线路。

- 确保开关固定牢固,以防止松动或掉落。

- 定期检查开关的工作状态,及时更换损坏或老化的开关。

以上就是关于开关(Switch)的基本介绍和使用指南。

switch的用法和短语 (2)

switch的用法和短语 (2)

switch的用法和短语一、Switch的用法解析在英语学习中,switch是一个重要而常用的单词,它有多个意思和用法。

本文将着重介绍switch作为动词和名词的用法,并深入讨论与switch相关的常见短语。

二、Switch作为动词的用法1. 转换/切换Switch作为动词最常见的意思是“转换”或“切换”。

例如,我们可以使用switch来描述在两个选项之间进行转变。

比如: "She switched from studying chemistry to physics."(她从学习化学转换到了物理)2. 打开/关闭另一种常见的用法是指“打开”或“关闭”。

这通常与电力、灯光、设备等相关。

例如: "Don't forget to switch off the lights when you leave." (离开时别忘了关灯)3. 让渡/交接除此之外,switch也可表示“让渡”或“交易”。

这通常用于商业或管理场景。

例如: "He plans to switch his responsibilities to his colleagues while he's on vacation."(他计划在休假期间将职责让给同事)4. 变更/改变还有一种含义是指“变更”或“改变”,主要涉及行为、立场、观点等方面。

例如:"She switched her major from engineering to literature." (她改变了主修专业,从工程转向文学)三、Switch常见短语解析1. Switch on/offSwitch on和switch off分别表示“打开”和“关闭”,主要用于电力或设备相关的情景。

例如: "I always switch off my phone during meetings to avoid distractions."(我在会议期间总是关掉手机以避免分散注意力)2. Switch between/toSwitch between和switch to都指“在两个选项之间切换”,只是to后通常接一个具体的选项。

使用switch语句的注意事项

使用switch语句的注意事项

使用switch语句的注意事项
哎呀呀,朋友们!说到使用switch 语句,这里面的注意事项可重要啦!
首先呢,可别在条件表达式里搞些太复杂的东西哟!就像走路别走歪歪扭扭的小道,不然容易迷路的呀!条件应该简单明了,这样才能一眼就看出逻辑走向。

嘿,还有呀,每个case 后面的语句得完整结束,千万别漏了break 呀,不然就像脱缰的野马,控制不住程序的运行啦!这可不是闹着玩的。

哇塞,default 分支也不能少哇!万一条件都不匹配,没有default 来兜底,那程序不就傻眼啦。

另外啊,case 标签的值不能重复,这就跟每个人的身份证号一样,得独一无二才行呀!
你想想看,switch 语句虽然好用,但用的时候不注意这些,那不就像拿着好工具却不会用,浪费啦!
总之啊,使用switch 语句的注意事项一定要牢记哟,别等程序出错了才后悔。

要认真对待这些编程技巧呀!。

freeswitch1.6.19使用笔记

freeswitch1.6.19使用笔记

Freeswitch1.6或者1.9笔记1.编译/downloads/libs/差包下载地址(补救安装`make mod_say_zh-install` )lua anzhuang apt-get install libreadline-dev apt-get install lua5.2 lua5.2-doc liblua5.2-dev(apt-cache search)1apt-get install -y autoconf git libtool g++ zlib1g-dev libjpeg-dev libsqlite3-devlibcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libssl-dev pkg-config yasm liblua50-dev libopus-dev libsndfile1-dev libpq-dev2git clone https:///stash/scm/sd/libav.gitcd libavCFLAGS="-fPIC" ./configure --enable-pic --enable-sharedmake CXXFLAGS="-fPIC"make install/lzpong/p/6740188.html libpng参考3.git clone https:///stash/scm/fs/freeswitch.git4../bootstrap.sh -jbootstrap: libtool not found. You need libtool version 1.5.14 or newer to build FreeSWITCH from source.dpkg -L libtool发现没有/usr/bin/libtooldpkg -l libtoollibtool 是2.4.6-0.1版本的在ubuntu只有libtoolize,修改bootstrap.sh,libtool=${LIBTOOL:-`${LIBDIR}/apr/build/PrintPath glibtool libtool libtool22 libtool15 libtool14 libtoolize`}5.vim mod_av say_zh./configure --enable-core-pgsql-support(apt-cache search libtiff-level --> apt install libtiff5 libtiff5-dev)rm -rf /usr/bin/luamake:发现两个问题问题1:mod_lua.cpp:37:17: fatal error: lua.h: No such file or directory#include “lua.h”//找不到lua.h头文件解决:将lua中的头文件拷贝到freeswitch/src/mod/languages/mod_lua/ 中问题2:/’seems to be moved/usr/bin/ld: cannot find -lluacollect2: error: ld returned 1 exit status//找不到lua库(找到liblua5.2.so位置)解决:1、之前在1-1中已经安装了liblua50-dev,为什么找不到lua库呢?2、使用ls -l liblua*可以看到其中确实没有liblua.so的库3、做一个软连接ln -s liblua50.so liblua.so 再次make编译即可)6.:make install声源:可选make hd-sounds-installmake hd-moh-installmake cd-sounds-installmake cd-moh-installmake samplesKernel SettingsAdd the following lines to /etc/sysctl.d/vid.conf:/etc/sysctl.d/vid.confecho "net.core.rmem_max = 16777216"> /etc/sysctl.d/vid.confecho "net.core.wmem_max = 16777216">> /etc/sysctl.d/vid.confecho "kernel.core_pattern = core.%p">> /etc/sysctl.d/vid.confActivate the changes, running:Kernel Settingssysctl -w net.core.rmem_max=16777216sysctl -w net.core.wmem_max=16777216sysctl -w kernel.core_pattern=core.%p7.视频conf/vars.xml 下设置<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G722,PCMU,PCMA,GSM,H263,H264,VP8"/><X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,GSM,H263,H264,VP8"/> 在conf/autoload_configs/modules.conf.xml 最后面添加<!-- av modules --><load module="mod_av"/>后台启动freeswitchfreeswitch -nc停止shtdown fs_cli -x “”(netstat -npl查pid kill -9 pid)打开命令行窗口fs_cli -H 127.0.0.1 -P 8021显示注册用户show registrations显示sofia状态sofia status profile internal显示注册用户sofia status profile internal reg#更改日志级别console loglevel debug/info/...ssl1,编辑sip_profiles/internal.xml打开name="ws-binding" value=":5066"注释打开name="wss-binding" value=":7443" 注释2.编辑vars.xml 找到下面的设置并更改[plain] view plain copydata="internal_ssl_enable=true"data="external_ssl_enable=true"创建wss.pem[plain] view plain copywget /downloads/ssl.ca-0.1.tar.gztar zxfv ssl.ca-0.1.tar.gzcd ssl.ca-0.1/perl -i -pe 's/md5/sha256/g' *.shperl -i -pe 's/1024/4096/g' *.sh./new-root-ca.sh./new-server-cert.sh ./sign-server-cert.sh cat .crt .key > /usr/local/freeswitch/certs/wss.pem \\\vertoAllow live array sync for Verto(上面位置在这个说明)FreeSWITCH源代码里有个html5/verto/verto_communicator 目录,安装vertocd html5/verto/verto_communicator./debian8-install.sh执行完比后将生成dist目录。

switch语句的注意事项

switch语句的注意事项

switch语句的注意事项
别让代码太混乱。

写switch语句时,别一股脑儿塞太多逻辑进去。

每个case都应该有自己明确的任务,别让它们搅在一起。

这样你的代码不仅看起来更清晰,维护起来也更容易。

考虑所有可能性。

用switch语句时,别忘了检查所有可能的情况。

别漏掉任何一个case,否则程序可能会遇到未知情况而崩溃。

同时,记得加上default选项,以防万一。

⚡️速度也很重要。

虽然switch语句方便,但有时候它可能不是最快的选择。

特别是当你有大量的case时,可能需要考虑其他数据结构来优化性能。

别忘了在追求清晰代码的同时,也要关注程序的效率。

保持可维护性。

写代码时,想想未来的你或同事怎么维护它。

复杂的switch语句可能让人头疼,所以尽量保持简洁,避免过度嵌套。

这样,当需求变化时,你就能更轻松地修改代码了。

遵循团队规范。

在团队项目中,大家都遵循相同的代码规范是很重要的。

如果团队里其他人用switch语句,那你也应该保持一致。

这样,整个项目的代码风格就会更加统一,可读性也会更强。

.Net基础篇_学习笔记_第四天_switch-case

.Net基础篇_学习笔记_第四天_switch-case

.Net基础篇_学习笔记_第四天_switch-caseswith-case⽤来处理多条件的定值的判断。

语法:switch(变量或者表达式的值){case 值1:要执⾏的代码;break;case 值2:要执⾏的代码;break;case 值3:要执⾏的代码;break;......default:要执⾏的代码;break;}执⾏过程:程序执⾏到switch处,⾸先将括号中的变量或者表达式的值计算出来,然后拿着这个值依次跟每个case后⾯所带的值进⾏匹配,⼀旦匹配成功,则执⾏。

该case所带的代码,执⾏完成后,遇到break。

跳出switch-case结构。

default,如果有default,则执⾏default中的语句。

如果没有,什么也不做。

default类似于else。

1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;67namespace第五天_流程控制8 {9class Program10 {11static void Main(string[] args)12 {13bool b = true;1415 Console.WriteLine("请输⼊原始数据");16int number = Convert.ToInt32(Console.ReadLine());17 Console.WriteLine("选项a/b/c? a:增加15、b:增加20、c:增加50");18string s= Console.ReadLine();19switch (s)20 {21case"a":22 number += 15;23break;24case"b":25 number += 20;26break;27case"c":28 number += 50;29break;30default:Console.WriteLine("输出有误");31 b = false;32break;33 }34if (b)35 {36 Console.WriteLine("您选择的奖励将是:{0}", number);37 }38 Console.ReadKey();39 }40 }41 }case后值的类型要与switch后的值和表达式的类型相同。

element-uiswitch组件源码分析整理笔记(二)

element-uiswitch组件源码分析整理笔记(二)

element-uiswitch组件源码分析整理笔记(⼆)源码如下:<template><divclass="el-switch":class="{ 'is-disabled': switchDisabled, 'is-checked': checked }"role="switch":aria-checked="checked":aria-disabled="switchDisabled"@click="switchValue"><inputclass="el-switch__input"type="checkbox"@change="handleChange"ref="input":id="id":name="name":true-value="activeValue":false-value="inactiveValue":disabled="switchDisabled"@keydown.enter="switchValue"><span:class="['el-switch__label', 'el-switch__label--left', !checked ? 'is-active' : '']"v-if="inactiveIconClass || inactiveText"><i :class="[inactiveIconClass]" v-if="inactiveIconClass"></i><span v-if="!inactiveIconClass && inactiveText" :aria-hidden="checked">{{ inactiveText }}</span></span><span class="el-switch__core" ref="core" :style="{ 'width': coreWidth + 'px' }"></span><span:class="['el-switch__label', 'el-switch__label--right', checked ? 'is-active' : '']"v-if="activeIconClass || activeText"><i :class="[activeIconClass]" v-if="activeIconClass"></i><span v-if="!activeIconClass && activeText" :aria-hidden="!checked">{{ activeText }}</span></span></div></template><script>import Focus from 'element-ui/src/mixins/focus';import Migrating from 'element-ui/src/mixins/migrating';export default {name: 'ElSwitch',mixins: [Focus('input'), Migrating],// 注⼊elForm对象,防⽌不和el-form使⽤时对象不存在的问题。

switch的用法总结大全

switch的用法总结大全

switch的用法总结大全(学习版)编制人:__________________审核人:__________________审批人:__________________编制学校:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如英语单词、英语语法、英语听力、英语知识点、语文知识点、文言文、数学公式、数学知识点、作文大全、其他资料等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor.I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, this shop provides various types of classic sample essays, such as English words, English grammar, English listening, English knowledge points, Chinese knowledge points, classical Chinese, mathematical formulas, mathematics knowledge points, composition books, other materials, etc. Learn about the different formats and writing styles of sample essays, so stay tuned!switch的用法总结大全switch的意思n. 开关,转换,转换器,软鞭子,[信]接线台vt.& vi. 转变,改变,转换,关闭电流,鞭打vt. 转换,挥动(棍棒、鞭子等),迅速转动,鞭打vi. 交换,调换变形:过去式: switched;现在分词:switching;过去分词:switched;switch用法switch可以用作动词switch用作名词时意思是“开关”“转换”,用作动词时意思是“拧开关”“转变”“转换”,指通过某种措施或办法使某事物改变或改换其原有的位置、名称或运行方式等,引申可表示“挥动某物打某人”“打开”。

freeswitch笔记(8)-esloutbound填坑笔记

freeswitch笔记(8)-esloutbound填坑笔记

freeswitch笔记(8)-esloutbound填坑笔记github上的已经N年未更新了,上⾯有⼀堆bug,记录⼀下:⼀、内存泄露org.freeswitch.esl.client.transport.message.EslFrameDecoder 这个类,使⽤了netty的ByteBuf,对netty有了解的同学应该知道,netty底层⼤量使⽤了堆外内存,建议开发⼈员及时⼿动释放。

参考下图,⼿动加上释放处理即可⼆、线程池优化org.freeswitch.esl.client.outbound.OutboundChannelInitializer 这个类,每次freeswitch有来电时,会以outbound外联模式,通过tcp连接到esl client,初始化channel。

callbackExector是⼀个单线程池,正常情况下问题倒不⼤,但是jdk源码:public static ExecutorService newSingleThreadExecutor() {return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L, LISECONDS,new LinkedBlockingQueue<Runnable>()));}LinkedBlockingQueue默认是⼀个⽆界队列:public LinkedBlockingQueue() {this(Integer.MAX_VALUE);}有点风险,改成下⾯这样更安全点:private ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("outbound-pool-%d").build();public ExecutorService callbackExecutor = new ThreadPoolExecutor(1, 1,0L, LISECONDS,new LinkedBlockingQueue<>(10000), namedThreadFactory);这个单线程池的⽤法也顺带研究了下,它真正使⽤的地⽅在于org.freeswitch.esl.client.outbound.OutboundClientHandler,⽤于处理freeswitch发过来的事件@Overrideprotected void handleEslEvent(final ChannelHandlerContext ctx, final EslEvent event) {callbackExecutor.execute(() -> clientHandler.onEslEvent(new Context(ctx.channel(), OutboundClientHandler.this), event));}⼤家知道Netty本⾝就有2个线程池:bossGroup,workerGroup,默认⼤⼩在ty.channel.MultithreadEventLoopGroup中static {DEFAULT_EVENT_LOOP_THREADS = Math.max(1, SystemPropertyUtil.getInt("ty.eventLoopThreads", NettyRuntime.availableProcessors() * 2));if (logger.isDebugEnabled()) {logger.debug("ty.eventLoopThreads: {}", DEFAULT_EVENT_LOOP_THREADS);}}即:核数*2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Switching
Switching 技术笔记
红茶三杯 CCIE 学习文档
文档版本: 文档作者: 文档备注:
2.0 红茶三杯 请关注文档版本及更新时间
更新时间: 文档地址:
2013-04-26
1 以太网
1.1 基础知识
1. About Ethernet Ethernet (以太网) 于 20 世纪 70 年代中期, 由 Xerox 公司分部 Palo Alto 研究中心 (PARC) 开发的。 Xerox 最早发明的是一个 2Mbps 的以太网 , 后来又和 Intel 和 DEC 合作开发了出了 10Mbps 的以太网 , 俗称 (Ethernet II 或 Ethernet DIX).后来 IEEE 通过 802 委员会(802 Committee)把 Ethernet 标准化为 IEEE 802.3。 它和 Ethernet II 十分相似。 在 TCP/IP 中, 以太网的 IP 数据报文的封装格式由 RFC 894 定义, IEEE802.3 网络的 IP 数据报文封装由 RFC 1042 定义。当今最常使用的封装格式是 RFC894 定义的格式,通常称为 Ethernet II 或者 Ethernet DIX。 2. 管理 MAC 表 show mac address-table clear mac address-table 绑定一个 mac 地址到一个接口 Switch(config)# mac address-table static 机器的 mac 要取消用 no mac address-static …… 接口 vlan vlan 号
2 二层交换
2.1 VLAN
2.1.1 VLAN 基本概念
学习 沉淀 成长 分享 – 网络工程师成长之路
by 红茶三杯
5
Switching

一个 VLAN 中所有设备都是在同一广播域内,不同的 VLAN 为不同的广播域 VLAN 之间互相隔离,广播不能跨越 VLAN 传播,因此不同 VLAN 之间的设备一般无法互访,不同 VLAN 间 需通过三层设备实现相互通信
5. 6.
A 的 MAC 子层加上 MAC 地址和 LENGTH 字段之后,发送到数据链路上。 B 的 MAC 子层接收到该数据帧之后,提交给 LLC 子层,LLC 子层根据 DSAP 字段判断出该数据帧属于 的连接。
7. 8.
B 根据该连接的类型进行相应的校验和确认,通过这些校验和确认后,才向上层发送。 数据传输完毕之后,A 给 B 发送一个数据帧来告诉 B 拆除连接,通信结束。

1.
提供物理链路的访问。 链路级的站点标识:在数据链路层识别网络上的各个站点。 也就是说,在该层次保留了一个站点地址,即 MAC 地址,来标识网络上的唯一一个站点。 链路级的数据传输:从 LLC 子层接收数据,附加上 MAC 地址和控制信息后把数据发送到物理链路上; 在这个过程中提供校验等功能。
半双工和全双工是物理层的概念,而针对物理层的双工模式提供不同访问方式则是数据链路层的概念,这样就形 成了以太网的一个重要特点:数据链路层和物理层是相关的。 由于以太网的物理层和数据链路层是相关的,针对物理层的不同工作模式,需要提供特定的数据链路层来访问。 这给设计和应用带来了一些不便。 为此, 一些组织和厂家提出把数据链路层再进行分层, 分为逻辑链路控制子层 (LLC) 和媒体访问控制子层 (MAC) 。 这样不同的物理层对应不同的 MAC 子层,LLC 子层则可以完全独立。如图 1-4 所示。 MAC 子层 MAC 子层负责如下任务:
学习 沉淀 成长 分享 – 网络工程师成长之路
by 红茶三杯
2
Switching
高位是 individual/group 位,当它的值为 0 时,就可以认为这个地址实际上是设备的 MAC 地址。当它的值为 1 时,就可以认为这个地址表示以太网中的广播地址或组播地址,或者表示 TR 和 FDDI 中的广播地址或功能 地址。下一位是 G/L 位(也称为 U/L,这里的 U 表示全局) 。当这一位设置为 0 时,就表示一个全局管理地址 (由 IEEE 分配) ,当这一位为 1 时,就表示一个在管理上局部本地的地址(就像在 DECnet 中一样) 。以太 网一直使用全局唯一地址。 以太网帧格式
by 红茶三杯
4
Switching
下面通过一个例子来说明 SSAP 和 DSAP 的应用。假设终端系统 A 和终端系统 B 要使用面向连接的可 靠的数据传输服务,这时候会发生如下过程:
1. 2.
A 给 B 发送一个数据帧,请求建立一个面向连接的可靠连接。 B 接收到以后, 判断自己的资源是否够用 (即是否建立了太多的连接) , 如果够用, 则返回一个确认信息, 该确认信息中包含了识别该连接的 SAP 值。
3
Switching
Length LLC
Length 字段定义了 Data 字段包含的字节数。 LLC (Logical Link Control) 由目的服务访问点 DSAP (Destination Service Access Point) 、源服务访问点 SSAP(Source Service Access Point)和 Control 字段组成。
学习 沉淀 成长 分享 – 网络工程师成长之路
by 红茶三杯
1
Switching
1.2 以太网的数据链路层
在以太网中,针对不同的双工模式,提供不同的介质访问方法:

在半双工模式下采用的是 CSMA/CD 的访问方式。 而在全双工模式下则可以直接进行收发,不用预先判断链路的忙闲状态。
PS:在以太网中,由于冲突的存在,共享介质上两台主机同时发 frame,将产生冲突。根据特定的算法,以 太网中,frame 的最小长度为 64 字节。 PS:目前我们所使用到的以太网帧基本都是 Ethernet II 帧
学习 沉淀 成长 分享 – 网络工程师成长之路
by 红茶三杯


无连接的数据包传输服务 目前的以太网实现就是这种服务。 面向连接的可靠的数据传输服务 预先建立连接再传输数据,数据在传输过程中可靠性得到保证。 无连接的带确认的数据传输服务。 该类型的数据传输服务不需要建立连接,但它在数据的传输中增加了确认机制,使可靠性大大增加。


学习 沉淀 成长 分享 – 网络工程师成长之路
3) 4)
二层交换机根据帧的目的 MAC 地址和 VLAN ID 查找 VLAN 配置信息,决定从哪个端口把帧发送出去。 交换机根据查到的出接口发送数据帧。

当数据帧从 Access 端口发出时,交换机先剥离帧的 VLAN Tag,然后再发送出去。 当数据帧从 Trunk 端口发出时,直接发送帧。 当数据帧从 Hybrid 端口发出时, 交换机判断 VLAN 在本端口的属性是 Untag 还是 Tag。 如果是 Untag, 先剥离帧的 VLAN Tag,再发送;如果是 Tag,直接发送帧。

DSAP 和 SSAP 其他的取值均为纯 IEEE802.3 帧。
3.
LLC 子层 在前文的介绍中提到了 MAC 子层形成的帧结构,包括 IEEE802.3 的帧和 ETHERNET_II 帧。 在 ETHERNET_II 帧中,由 Type 字段区分上层协议,这时候就没有必要实现 LLC 子层,仅包含一个 MAC 子 层。而 IEEE802.3 帧中的 LLC 子层除了定义传统的链路层服务之外,还增加了一些其他有用的特性。这些特 性都由 DSAP、SSAP 和 Control 字段提供。 例如以下三种类型的点到点传输服务:

一个 VLAN 一般为一个逻辑子网,由被配置为此 VLAN 成员的设备组成 VLAN 中成员多基于交换机的端口分配,划分 VLAN 就是对交换机的接口划分 VLAN 工作于 OSI 参考模型的第二层 VLAN 是二层交换机的一个非常根本的工作机制
2.1.2 VLAN 基本通信原理
为了提高处理效率,交换机内部的数据帧一律都带有 VLAN Tag,以统一方式处理。当一个数据帧进入交换机端口 时, 如果没有带 VLAN Tag, 且该端口上配置了 PVID (Port VLAN ID) , 那么, 该数据帧就会被标记上端口的 PVID。 如果数据帧已经带有 VLAN Tag,那么,即使端口已经配置了 PVID,交换机不会再给数据帧标记 VLAN Tag。 PVID 是“端口缺省 VLAN ID”的意思,即一个端口缺省属于的 VLAN。 由于端口类型不同,交换机对帧的处理过程也不同。下面根据不同的端口类型分别介绍。
2.
前导(PreambIe)
包括 7 个字节的前导码(一串 1、0 间隔,用于信号同步)及 1 个字节的 帧起始定界符(10101011) 802.3 使用长度字段,但 Ethernet 帧使用类型字段来识别网络层的协议。 在 EthernetII 帧中,两字节的类型字段用于标识数据字段中包含的高层协 议,也就是说,该字段告诉接收设备如何解释数据字段。 在以太网中,多种协议可以在局域网中同时共存。因此,在 Ethernet II 的 类型字段中设置相应的十六进制值提供了在局域网中支持多协议传输的机
IEEE802.3 帧根据 DSAP 和 SSAP 字段的取值又可分为以下几类:

当 DSAP 和 SSAP 都取特定值 0xff 时,802.3 帧就变成了 Netware-ETHERNET 帧,用来承载 NetWare 类型的数据。

当 DSAP 和 SSAP 都取特定值 0xaa 时,802.3 帧就变成了 ETHERNET_SNAP 帧。 ETHERNET_SNAP 帧可以用于传输多种协议。因此,SNAP 可以被看作一种扩展,它允许厂商创建自 己的以太网传输协议。 ETHERNET_SNAP 标准由 IEEE802.1 委员会制定, 以保证 IEEE802.3 局域网和以太网之间的互操作性。
相关文档
最新文档