2012年10月第3周(10.15-10.21)

本文总结了使用Dojo框架过程中的各种技巧与注意事项,包括解决文本选中问题、JSON对象与字符串相互转换的方法、页面卸载前的操作处理、判断变量是否为数组、小部件的销毁方法、实现具有缓存功能的书签、实现可拖动的小部件等。

1.由于工作需要,需要自己在一个dojo小部件中写一个垂直滚动条,但是发现在我拖动自定义的滑块进行滑动的时候,发现容易选中周围的一些文本,使得被选中的文本变为蓝色,很影响效果,后来发现在div上加上onselectstart="return false"即可,如果还有可能选中body中其他部分的文字,那么就在body上添加此语句即可,这样在鼠标左键按下拖拽的过程中不会选中文本。

2.dojo.toJson()与dojo.fromJson()在名字上容易给人歧义,其实dojo.toJson()应该改名为dojo.toJsonString()最好,就是将一个Json的Object对象转换为相应的字符串;dojo.fromJson()应该改名为dojo.fromJsonString()最好,就是讲一个字符串转换为Json的Object对象。可以通过dojo.toJson()和dojo.fromJson()实现对象之间的深拷贝,很实用的功能。

dojo.toJson({age:1});得到"{"age":1}"
dojo.fromJson(dojo.toJson({age:1}))输出如下信息:
Object
age: 1
__proto__: Object

3.用dojo.addOnUnload在页面关闭之前调用。

4.判断某个变量是不是数组的代码:

isArray:function(o) {
        return Object.prototype.toString.call(o) === '[object Array]';
    }

5.dojo小部件的销毁:
destroy:销毁所有的小部件条目(不包括子小部件)。
destroyRecursive:销毁小部件条目及子小部件。如果小部件包含有内部小部件,那么必须调用此方法。

详见:http://www.ibm.com/developerworks/cn/web/wa-aj-dojotool/

6.如果只设置背景的颜色,尽量不要直接使用background,最好用background-color,这样不会覆盖background-image等其他设置信息。

7.ArcGIS JS API实现具有缓存功能的书签:

window.localStorage.setItem("山东省",dojo.toJson(map.extent.toJson()));//将范围信息以字符串的形式保存到localStorage中
map.setExtent(new esri.geometry.Extent(dojo.fromJson(window.localStorage.getItem("山东省"))));//根据localStorage中保存的范围字符串信息生成Extent对象

8.实现可拖动的dojo小部件:

new dojo.dnd.Moveable(this.domNode,{handle:this.head});

9.for in是用来遍历对象中的属性的,不要用来遍历数组。假设一个数组有三个元素,那么如果用for in进行遍历,会遍历四次,最后一次的元素是一个“constructor”对象,所以遍历数组不能用for in。

10.ctrl+alt+l在WebStorm中格式化js、html、css文件

11. <div style="background:url('../images/btn_menu.jpg')"></div>如果不设置div宽高,那么不可见
<img src="../images/btn_menu.jpg" />则没问题,不用设置宽高也可以

12.通过js代码控制innerHTML实现重dom节点刷新:

var html = dom.innerHTML;
dom.innerHTML = ""; //dojo.empty(dom);
dom.innerHTML = html;

12.在dojo小部件开发中,不要在模板文件中使用名字为title的dojoAttachPoint,如果存在名为title的dojoAttachPoint,那么在解析的时候会与浏览器dom本身的title属性相冲突,导致将鼠标放在小部件上时,显示提示信息[HTML DOM...]之类的。

13.必须设置了width后,margin-left:auto和margin-right:auto才能起到居中的作用。

14.用SVN进行代码管理,每个文件夹下都有一个隐藏的名为.svn的文件夹,有时候不能提交,可以先备份,然后把相应的.svn文件夹删除然后提交。给别人传东西的时候把目录下的隐藏的.svn文件夹删掉,否则会暴露出svn服务器的信息。

15.div高度不设置,那么设置margin-top、margin-bottom不起作用

16.用dojo.dnd.Moveable实现div拖动

 new dojo.dnd.Moveable("drag", { handle: "drag_handle" });
17.自己写了个dojo小部件BookMark,代码如下:

var bookMark = new gistech.widgets.bookMark.BookMark({map:map});
 之后立即去获取bookMark.domNode的clientWidth和clintHeight都是0,后来将其domNode的设置为overflow:hidden,然后再获取,发现还是0,
 后来发现必须将其插入到dojo.body()中才能获取可见数值。

18.ArcGIS JS API 2.8中,可以通过esri.geometry.geographicToWebMercator(geometry)在客户端将经纬度转换为1984 WebMercator投影坐标系。

19.clientHeight与height不一样,那么clientHeight = borderTop+paddingTop+height+paddingBottom+borderBottom,注意,不包括margin

20.dojo.style(setStudyArea.domNode, "position", "absolute");//注意是对domNode操作style,而不是对小部件直接操作style

21.在用dojo.style读取height、marginTop、paddingTop之类的和数字相关的style时,返回值是数字,不包括“px”;用dojo.style设置height、marginTop、paddingTop之类的和数字相关的style时,将“10px”这样作为参数进行传递,不能只是数字,需要包括“px”。

dojo.style(dojo.byId("slideBlockContainer"),"top")
10
dojo.style(dojo.byId("slideBlockContainer"),"top","30px")
"30px"

22.

dojo.style(this.contentBody,"height","auto");
"auto"
dojo.style(this.contentBody,"height");
521
this.contentBody.style.height
"auto"
this.contentBody.clientHeight
521
如果当前设置的height为auto,那么用dojo.style方式取出的height为clientHeight,是一个具体数字,用dom.style.height取出的为auto,
如果想获取原生的高度信息,先保存,然后再还原回去的话,应避免用dojo.style进行存取,而应该用后者进行。

23.<div class="slideBlockContainer" onclick="onMouseDown(event)"> 要有括号,括号里必须写event,如果没写参数或者参数写的不是event(比如写了evt),那么也无法传递事件参数。

24.想获取borderTop的宽度,用dojo.style(this.content,"borderTop")获取,结果得到"3px solid rgb(0, 58, 106)",然后分别用js原生方式和dojo.style方式去获取borderTopWidth的值,结果如下:

this.content.style.borderTopWidth
""
dojo.style(LMC.content,"borderTopWidth")
3
发现原生方式返回“”,而dojo.style能够返回正确的结果。

25.dojo小部件开发过程中,有时候需要动态创建一些复杂的dom节点,此时可以使用dojo.create("div",{innerHTML:"Some InerHTML",className:"someClass",style:{}}),但是如果要创建的dom节点非常复杂,那么dojo.create中innerHTML的字符串就很长,而且要弄成一行的形式,很长也很麻烦,也不便于后期修改。如果遇到这样的情况,可以将innerHTML的dom节点写到一个单独的html页面中,然后利用dojo.cache("模块名","模板文件名")的方式获取innerHTML,这样以后我们在修改的时候直接对那个模板中的html页面做修改就可以了。

<think> 我们正在分析iperf3指令:`iperf3 -c 192.85.10.15 -p 2000 -t 100 -i 10 -A 4 -T s1 -Z &` 根据引用中提供的参数说明,以及iperf3的官方文档,我们来逐一解释每个参数: 1. `-c 192.85.10.15`: 表示以客户端模式运行,并连接到服务器地址192.85.10.15[^1][^2]。 2. `-p 2000`: 指定服务器监听的端口号为2000[^1][^2][^4](引用[4]特别说明了-p参数的作用)。 3. `-t 100`: 设置测试时间为100秒(引用[1]提到-t表示测试时间,单位秒)[^1]。 4. `-i 10`: 设置报告间隔,每10秒输出一次测试结果(引用[2]中提到的常规选项,但引用中没有直接出现,但根据常规知识,-i是interval的意思)。 5. `-A 4`: 设置CPU亲和性(将进程绑定到特定的CPU核心)。根据iperf3的文档,`-A`参数用于设置CPU亲和性,后面的数字4表示绑定到CPU核心4(注意:核心编号从0开始)。引用中没有直接提到,但这是iperf3的一个标准参数。 6. `-T s1`: 设置测试标题为&#39;s1&#39;(引用[2]中提到-T是设置标题,但具体说明可能需要参考官方文档)。在官方文档中,`-T`参数用于设置一个标题,这样在报告中可以识别不同的测试。 7. `-Z`: 启用零拷贝模式(Zero-copy),这可以减少数据拷贝次数,提高性能(引用中没有提到,但这是iperf3的一个参数)。 8. `&`: 表示在后台运行该命令(这是shell的特性,不是iperf3的参数)。 因此,整个命令的含义是:作为客户端连接到地址为192.85.10.15的服务器,使用端口2000,测试持续100秒,每10秒报告一次结果,将进程绑定到CPU核心4,设置测试标题为&#39;s1&#39;,启用零拷贝模式,并在后台运行。 注意:由于引用中没有完全覆盖所有参数(如-A, -T, -Z),我们结合了iperf3的标准文档进行解释。 下面给出一个参数分解表: | 参数 | 含义 | 引用来源 | |------------|--------------------------------------------|---------------| | -c | 客户端模式,后接服务器IP地址 | [^1][^2] | | -p | 指定服务器端口号 | [^1][^2][^4] | | -t | 测试时间(秒) | [^1] | | -i | 报告间隔(秒) | (通用知识) | | -A | 设置CPU亲和性(绑定到指定核心) | (官方文档) | | -T | 设置测试标题 | (官方文档) | | -Z | 启用零拷贝模式 | (官方文档) | | & | 在后台运行 | (shell特性) | 注意:由于引用[2]提到有常规选项、服务器特定选项、客户端特定选项,而这里使用的参数大部分都是客户端选项。 为了确保回答的准确性,我们建议用户在使用这些参数前查阅iperf3的官方文档或使用`iperf3 --help`查看帮助。 生成相关问题: </think> ### `iperf3 -c 192.85.10.15 -p 2000 -t 100 -i 10 -A 4 -T s1 -Z &` 指令详解 该指令是用于网络性能测试的客户端命令,各参数含义如下: #### 参数分解表 | **参数** | **含义** | **引用依据** | |----------|--------------------------------------------------------------------------|-------------| | `-c 192.85.10.15` | 客户端模式,连接目标服务器IP地址 | [^1][^3] | | `-p 2000` | 指定服务器监听端口号为2000(默认5201) | [^1][^2][^4] | | `-t 100` | 测试持续时间为100秒 | [^1] | | `-i 10` | 每10秒输出一次带宽报告 | [^2] | | `-A 4` | 设置CPU亲和性,绑定进程到4号CPU核心 | - | | `-T s1` | 设置测试标题为`s1`(用于结果标识) | [^2] | | `-Z` | 启用零拷贝(Zero-copy)模式,减少数据复制提升性能 | - | | `&` | 后台运行命令(Linux特性) | - | #### 完整命令解析: 1. **连接目标** 客户端连接服务器 `192.85.10.15` 的 `2000` 端口[^1][^4] 2. **测试配置** - 持续运行 `100` 秒[^1] - 每 `10` 秒输出一次带宽报告[^2] - 测试标题标记为 `s1`(便于多测试区分)[^2] 3. **高级优化** - `-A 4`:绑定进程到CPU核心4(避免上下文切换开销) - `-Z`:启用零拷贝技术(内核态直接访问数据缓冲区) - `&`:后台执行(释放终端) #### 典型应用场景 ```bash # 在服务器192.85.10.15上启动服务端: iperf3 -s -p 2000 # 在客户端执行该命令: iperf3 -c 192.85.10.15 -p 2000 -t 100 -i 10 -A 4 -T s1 -Z & ``` 此配置适合: 1. 长时间网络稳定性测试(`-t 100`) 2. 多核服务器性能优化(`-A 4`) 3. 高吞吐场景(`-Z`零拷贝) 4. 自动化测试脚本(`&`后台运行) > ⚠️ 注意: > - `-A` 和 `-Z` 需服务器/客户端同时支持 > - 端口 `2000` 需确保未被防火墙拦截[^4] --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值