go benchmark

go benchmark 稳定的测试环境 当我们尝试去优化代码的性能时,首先得知道当前的性能怎么样。Go 语言标准库内置的 testing 测试框架提供了基准测试(benchmark)的能力,能让我们很容易地对某一段代码进行性能测试。 性能测试受环境的影响很大,为了保证测试的可重复性,在进行性能测试时,尽可能地保持测试环境的稳定。 机器处于闲置状态,测试时不要执行其他任务,也不要和其他人共享硬件资源。 机器是否关闭了节能模式,一般笔记本会默认打开这个模式,测试时关闭。 避免使用虚拟机和云主机进行测试,一般情况下,为了尽可能地提高资源的利用率,虚拟机和云主机 CPU 和内存一般会超分配,超分机器的性能表现会非常地不稳定。 超分配是针对硬件资源来说的,商业上对应的就是云主机的超卖。虚拟化技术带来的最大直接收益是服务器整合,通过 CPU、内存、存储、网络的超分配(Overcommitment)技术,最大化服务器的使用率。例如,虚拟化的技能之一就是随心所欲的操控 CPU,例如一台 32U(物理核心)的服务器可能会创建出 128 个 1U(虚拟核心)的虚拟机,当物理服务器资源闲置时,CPU 超分配一般不会对虚拟机上的业务产生明显影响,但如果大部分虚拟机都处于繁忙状态时,那么各个虚拟机为了获得物理服务器的资源就要相互竞争,相互等待。Linux 上专门有一个指标,Steal Time(st),用来衡量被虚拟机监视器(Hypervisor)偷去给其它虚拟机使用的 CPU 时间所占的比例。 # 运行当前 package 内的用例, 只运行 test, 不运行 benchmark # go test 命令默认不运行 benchmark 用例 go test # 只运行 benchmark go test -bench=. -run=none go test -bench . -run none # 运行 test 和 benchmark go test -bench . # -bench 参数支持传入一个正则表达式,匹配到的用例才会得到执行,例如,只运行以 Fib 结尾的 benchmark 用例 go test -bench=Fib$ . go test -bench='Fib$' . https://geektutu.com/post/hpg-benchmark.html ...

2012-05-23 · 2 min · 242 words · -

各种文件系统的文件夹数量与容量限制

各种文件系统的文件夹数量与容量限制 http://blog.csdn.net/leonwei/article/details/3980179 今天写程序时,打算不断的将生成的图片文件放入一个文件夹中,但是每次当放入65534个文件后就无法再存入了,起初一位是程序的bug,后来才发现原来是文件系统对文件数目有限制。经过查阅发现 FAT16 对于FAT16文件系统,可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte);卷的最大体积是4GB;每个卷上最多可以保存的文件数量是65,536个 (2^16);根目录下可以保存的文件和文件夹数量最大值是512个 (如果使用了长文件名,该数字还会减小) 对于FAT32文件系统, 可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte);Windows自带的工具可以创建的卷的最大体积是32GB;每个卷中最多可以保存的文件数量是4,177,920个;一个特定文件夹中最多可以保存的子文件夹和文件的数量是65,534 (如果使用了长文件名,那么该数字会减小) 对于NTFS文件系统,可以保存的文件的大小的最大值,理论上是16EB - 1 KB (2^64 bytes - 1 KB)(1EB=1024PB=1024TB=1024GB) ,实际实现过的最大值是16TB - 64 KB (2^44 bytes - 64 KB);卷的体积最大值,理论上可以达到2^64个簇 - 1个簇,实际实现过的最大值是2^56 TB - 64 KB ( 2^32 个簇 - 1个簇);每个卷可以包含的文件个数的最大值是4,294,967,295个 (2^32 - 1) 其中长文件和短文件名文件是指过去的DOS操作系统下,因为8.3格式的限制,文件主档名超过8字节或扩展名超过3字节的文件名,都被称为"长文件名",一般在Windows下正常的文件名在DOS下会显示不正常。 (如"Program files"资料夹可能会显示成"Progra~1") 在微软的Windows NT3.5出来之后,“长文件名"问题得以解决,现在的Windows XP系统一般可以输入400多个字符作为文件名,或者400个字符扩展名。{fact} 而我用的是FAT32系统,里面最多就允许65534个文件,了解了这些,我就知道了应该对这种大批量的文件系统上的文件存储要适度的建立子文件夹。

2012-05-20 · 1 min · 69 words · -

debian 修改无线网卡的信道

debian 修改无线网卡的信道 查看无线网卡支持的信道 sudo iwlist channel #这个是我的thinkpad x60s, !!!不支持channel 12,13,14, #最后面有列出当前信道Current Frequency=xxx lo no frequency information. eth0 no frequency information. wlan0 24 channels in total; available frequencies : Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz Channel 03 : 2.422 GHz Channel 04 : 2.427 GHz Channel 05 : 2.432 GHz Channel 06 : 2.437 GHz Channel 07 : 2.442 GHz Channel 08 : 2.447 GHz Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.462 GHz Channel 36 : 5.18 GHz Channel 40 : 5.2 GHz Channel 44 : 5.22 GHz Channel 48 : 5.24 GHz Channel 52 : 5.26 GHz Channel 56 : 5.28 GHz Channel 60 : 5.3 GHz Channel 64 : 5.32 GHz Channel 149 : 5.745 GHz Channel 153 : 5.765 GHz Channel 157 : 5.785 GHz Channel 161 : 5.805 GHz Channel 165 : 5.825 GHz Current Frequency=2.462 GHz (Channel 11) tap0 no frequency information. 修改当前信道 ...

2012-05-19 · 1 min · 167 words · -

无线WI-FI路由器的信道选择

无线WI-FI路由器的信道选择 http://blog.solrex.org/articles/wifi-channel-choosing.html 很多人从来没有注意过路由器的 wifi 频道,以为只要笔记本电脑能连上,无线路由就没问题。但有个问题是很多移动设备不能支持全频道,其中即有功耗考虑,也有销售目标国家考虑。因此有条件时最好检测一下信噪比,选择一个最适合自己的频道,而不是让路由器启动时自己去选择。 但接着又有朋友说: "求普及..."。参考 Avinash Kaushik 在他的网站统计博客"Occam's Razor"成立 5 周年时的感慨 (这篇文章很值得一读,very inspiring) ,我想即使我不是专家,分享一下自己知道的这点儿事也不错。 切入正题,现在很多家庭都有了自己的无线 Wi-Fi 路由器,也有了各种接入互联网的移动设备: 笔记本、上网本、手机、平板电脑、电纸书、MID (已没落) 。很多移动设备联网时都会出现诡异问题,这篇文章仅仅关注其中一种诡异问题: 错误的信道 (Channel,也译为频道、频段) 配置导致无法联网或者信号较差。 精确的技术知识我就不解释了,感兴趣的同学可以去读 Wikipedia Wi-Fi 或者 IEEE 802.11 等词条。下面主要说明为什么需要配置无线信道以及如何选择无线信道。 为什么需要配置无线信道? 相信大家都使用过收音机。使用收音机时,都有一个选台的问题,无论你是用旋钮、按键或者触摸,你总要选定某个台,才能收听该台的节目。无线路由也一样。你家里的无线路由器会广播一个 SSID (就是你看到的无线连接名) ,点击该连接,就会使你的电脑调制到该连接所在信道进行通信。 但是使用收音机时,可能会有这样的问题: 1. 有些台根本收不到,比如你的收音机不是全波段的;2. 有些台杂音太大听不清,比如某些唢呐电台。同理到你的无线环境上,问题 1 转化为"笔记本电脑 (全波段收音机) 能连接无线路由器,但平板电脑 (非全波段收音机) 却无法连接";问题 2 转化为"能连接到无线路由器,但干扰太多,达不到最大的网速 (这个网速指 Wi-Fi 连接速度,与 ADSL 网速无关) "。 如果没有手动配置过,无线路由器会自动选择一个默认或者随机的信道进行广播和连接建立。在设备没有联网问题和周围没有别人使用时,这是 OK 的。 但如果你周围的人家都有无线设备,且大家用的都是同一款运营商赠送的无线路由器 (或无线猫) 时,那么极有可能所有人都选择了同一个信道进行通信。这就会造成很大的信号干扰,这一般影响不到网速——除非你家用的 ADSL 大于 4M,但会造成家里两台设备之间数据传输速度极慢,例如用豌豆荚往手机上无线发送视频文件时。 如果不巧的是你家无线路由器会随机选择信道,那么它极有可能选择到一个你设备不支持的信道。我就曾经遇到过爱国者某型号 MID 只支持信道 1-9 但无线路由器自己选择了信道 11 的情况,那是死活也连不上啊!移动设备出于降低功耗或其它考虑,不支持某些信道是很正常的;再加上不同国家对无线信道管制情况不同 (参见 List of WLAN Channels) ,其它国家的水货设备到了国内可能也会水土不服。 幸运的是,你不能控制广播电台的波段,却可以控制自家无线路由器的无线信道。修改无线信道的方法请参考各路由器厂商的帮助文档,或者在网上寻求帮助。不过在修改之前,你还面临着,我该改到哪个信道呢? 如何选择无线信道? 首先,要选择自己通信设备都支持的信道。不过在此之前,首先确认所有设备都支持同一协议,比如你移动终端不支持 IEEE 802.11n,你非得在路由器上用 802.11n 协议,这就是找不自在了。这些知识要参考设备的手册,或者自己尝试。在 Linux 系统中,可以用 iwlist channel 列出移动终端支持的所有信道,比如 Kindle 支持的信道就是 (看到这里我基本可以肯定那哥们 Kindle 问题不是因为信道了,除非他用的是日本产路由器) : [root@kindle root]# iwlist channel lo no frequency information. ...

2012-05-19 · 2 min · 245 words · -

linux mt4

linux mt4 download mt4 https://cn.nordfx.com/MetaTrader_4.html install wine mt4.exe MetaTrader 4平台显示的是哪里的时间 ? MT4服务器显示的是欧洲东部时间 (EET) 。欧洲东部夏令时间比格林尼治时间早3个小时 (GMT+3) ,欧洲东部冬令时间比格林尼治时间早2个小时 (GMT+2) 。 欧洲东部时间 (EET) 于3月最后1个星期日切换至夏令时,于10月最后1个星期日切换至冬令时。 夏令时 GMT: 0 EET: +3 冬令时 GMT: 0 EET: +2 How to install Metatrader 4 under Linux! There is a lot of interest out there in running Metatrader 4 on the Linux platform, however until Metaquotes does a native Linux version, the only option if you want to do it is to run it under WINE emulation. ...

2012-05-17 · 2 min · 274 words · -

jautodoc

jautodoc http://jautodoc.sourceforge.net/update/ ctrl+alt+j

2012-05-15 · 1 min · 3 words · -

java static import

java static import http://blog.csdn.net/ygc87/article/details/7371254 import static (静态导入) 是JDK1.5中的新特性,一般我们导入一个类都用 import com…..ClassName;而静态导入是这样: import static com…..ClassName.*;这里多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名的方式来调用。 例如,你在某个类中定义了一些简便的打印方法: print? package com.ygc.print; public class Print { // 打印,换行 public static void print(Object obj) { System.out.println(obj); } // 换行 public static void print() { System.out.println(); } // 打印 public static void printnb(Object obj) { System.out.print(obj); } } 然后你想在其他的类里面使用这些方法: print? package com.ygc; import static com.ygc.print.Print.*; class Test { public void println(String s) { print(s); } } java static import jdk1.5 static import static import static import就是允许在代码中直接引用别的类的static变量和方法 (当然,在权限许可范围内) ,我们可以简单的把它当成import的延续。 它的语法如下: import static CLASS_NAME.MEMBER_NAME; 或者 import static CLASS_NAME.×; 事实上,Tiger引入static import最主要考虑到两个需要,第一个就是对一些工具性的,常用的静态方法进行直接引用。 比如,java.lang.Math里的一大堆数学方法abs,exp等。 第二个就是对常数变量进行直接引用,其中也包扩对enum的直接引用 (参考上一篇文章Season的例子) [code] //StaticImportTest.java import static java.lang.Math.*; ...

2012-05-14 · 1 min · 174 words · -

Tomcat Port 8009 与AJP13协议

Tomcat Port 8009 与AJP13协议 由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而tomcat和其他服务器的集成,就是通过ajp协议来完成的。 AJP13(Apache JServ Protocol version 1.3)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成 socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请 求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。 一旦WEB服务器打开了一个到SERVLET容器的连接,连接处于下面的状态: ◆ 空闲 这个连接上没有处理的请求。 ◆ 已分派 连接正在处理特定的请求。 一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,它能发回下面的信息给WEB服务器: ◆ SEND_HEADERS 发送一组头到浏览器。 ◆ SEND_BODY_CHUNK 发送一块主体数据到浏览器。 ◆ GET_BODY_CHUNK 从请求获得下一个数据如果还没有全部传输完,如果请求内容的包长度非常大或者长度不确定,这是非常必要的。例如上载文件。注意这和HTTP的块传输没有关联。 ◆ END_RESPONSE 结束请求处理循环。 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.xml中配置了两种连接器: <!- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -> <!- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -> 第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。 第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。 Web客户1直接访问Tomcat服务器上的JSP组件,他访问的URL为http://localhost:8080 /index.jsp。Web客户2通过HTTP服务器访问Tomcat服务器上的JSP组件。假定HTTP服务器使用的HTTP端口为默认的80端口, 那么Web客户2访问的URL为http://localhost:80/index.jsp 或者 http://localhost/index.jsp。 摘自: http://hikin.iteye.com/blog/555682 2.http://bbs.163jsp.com/posts/list/472.html http://tomcat.apache.org/connectors-doc-archive/jk2/common/AJPv13.html

2012-05-13 · 1 min · 66 words · -

tomcat 8005

tomcat 8005 http://www.wellho.net/mouth/837_Tomcat-Shutdown-port.html On a new installation of Tomcat (default config files), you’ll notice that your server.xml file is set up with a shutdown port of 8005, and shutdown=“SHUTDOWN”. What does this mean? It means that anyone who contacts the server locally on port 8005 and send it the words SHUTDOWN can cause Tomcat to close out all its web applications and shut down cleanly. Yikes - is this a security hole of what? It could be. Fortunatly , you'll notice that I said it's a LOCAL connection to the port that causes a shutdown, so it no-one can ssh or telnet in, nor log in from the keyboard unless they're an admin, it might not be a problem .... If your Tomcat server allows anyone except the administrator to log in with a shell, then I strongly suggest you change shutdown="SHUTDOWN" to shutdown="waSS-I41tis" so that at least it won't be a string that any hacker can guess.<del> You might like to change the port number too. Alas, it would be unwise to disable the facility completely, since catalina.sh and shutdown.sh use the port (details read from the config file) as part of their processing. At least server.xml is neither group nor world readable.</del>

2012-05-13 · 1 min · 204 words · -

当装了两个tomcat后,修改tomcat端口

当装了两个tomcat后,修改tomcat端口 http://zfsn.iteye.com/blog/669901 修改Tomcat的端口号: 在默认情况下,tomcat的端口是8080,如果出现8080端口号冲突,用如下方法可以修改Tomcat的端口号: 首先: 在Tomcat的根 (安装) 目录下,有一个conf文件夹,双击进入conf文件夹,在里面找到Server.xml文件,打开该文件。 其次: 在文件中找到如下文本: 也有可能是这样的: 等等; 最后: 将port=“8080"改为其它的就可以了。如port=“8081"等。 保存server.xml文件,重新启动Tomcat服务器,Tomcat就可以使用8081端口了。 注意,有的时候要使用两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作。 修改了上面的以后,还要修改两处: (1) 将 的8009改为其它的端口。 (2) 继续将<Server port="8005" shutdown="SHUTDOWN" debug="0">的8005改为其它的端口。 经过以上3个修改,应该就可以了。 8443

2012-05-13 · 1 min · 27 words · -

Tomcat basic

Tomcat basic archlinux sudo pacman -S tomcat8 http://baike.baidu.com/view/10166.htm tomcat 7 https://archive.apache.org/dist/tomcat/tomcat-7 Tomcat是Apache 软件基金会 (Apache Software Foundation) 的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。 Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。 Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你 运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为7.0.27 Released。 名称的由来 Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O’Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat (英语公猫或其他雄性猫科动物) 。而O’Reilly出版的介绍Tomcat的书籍 (ISBN 0-596-00318-8) 1的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。 版本差异 (主要版本) Apache Tomcat 7.x 是目前的开发焦点。它在汲取了Tomcat 6.0.x优点的基础上,实现了对于Servlet 3.0、JSP 2.2和EL 2.2等特性的支持。除此以外的改进列表如下: · Web应用内存溢出侦测和预防 · 增强了管理程序和服务器管理程序的安全性 · 一般 CSRF保护 ...

2012-05-13 · 2 min · 396 words · -

SCADA

SCADA http://baike.baidu.com/view/51065.htm SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监视控制系统。SCADA系统的应用领域很广,它可以应用于电力系统、给水系统、石油、化工等领域的数据采集与监视控制以及过程控制等诸多领域。在电力系统以及电气化铁道上又称远动系统。SCADA系统是以计算机为基础的生产过程控制与调度自动化系统。它可以对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。由于各个应用领域对SCADA的要求不同,所以不同应用领域的SCADA系统发展也不完全相同。 电力系统应用 在电力系统中,SCADA系统应用最为广泛,技术发展也最为成熟。它作为能量管理系统 (EMS系统) 的一个最主要的子系统,有着信息完整、提高效率、正确掌握系统运行状态、加快决策、能帮助快速诊断出系统故障状态等优势,现已经成为电力调度不可缺少的工具。它对提高电网运行的可靠性、安全性与经济效益,减轻调度员的负担,实现电力调度自动化与现代化,提高调度的效率和水平中方面有着不可替代的作用。 SCADA在铁道电气化远动系统上的应用较早,在保证电气化铁路的安全可靠供电,提高铁路运输的调度管理水平起到了很大的作用。在铁道电气化SCADA系统的发展过程中,随着计算机的发展,不同时期有不同的产品,同时我国也从国外引进了大量的SCADA产品与设备,这些都带动了铁道电气化远动系统向更高的目标发展。 SCADA在石油管道工程中占有重要的地位,如用在系统管理石油管道的顺序控制输送、设备监控、数据同步传输记录,监控管道沿线及各站控系统运行状况等。各站场的站控系统作为管道自动控制系统的现场控制单元,除完成对所处站场的监控任务外,同时负责将有关信息传送给调度控制中心并接受和执行其下达的命令,并将所有的数据记录储存。除此之外的基本功能,现在的SCADA管道系统还具备泄露检测、系统模拟、水击提前保护等新功能。 石油方面应用 目前,国外已广泛采用SCADA系统来实现对城市燃气管道的自动监控和自动保护,并已发展成为燃气管道自动控制系统的基本模式。SCADA系统的工作原理是: 根据数据采集系统获得的系统运行工况参数与设计工况参数的比较结果,然后通过由调节阀和与之配套的电动、气动、电液联动或气液联动执行机构以及检测被调参数的仪表等组成的自动调节系统对某些偏离设计工况的运行参数进行自动纠偏调节。 发展历程 SCADA (Supervisory Control and Data Acquisition) 系统,全名为数据采集与监视控制系统。SCADA系统自诞生之日起就与计算机技术的发展紧密相关。SCADA系统发展到今天已经经历了三代。 第一代是基于专用计算机和专用操作系统的SCADA系统,如电力自动化研究院为华北电网开发的SD176系统以及在日本日立公司为我国铁道电气化远动系统所设计的H-80M系统。这一阶段是从计算机运用到SCADA系统时开始到70年代。 第二代是80年代基于通用计算机的SCADA系统,在第二代中,广泛采用VAX等其它计算机以及其它通用工作站,操作系统一般是通用的UNIX操作系统。在这一阶段,SCADA系统在电网调度自动化中与经济运行分析,自动发电控制 (AGC) 以及网络分析结合到一起构成了EMS系统 (能量管理系统) 。第一代与第二代SCADA系统的共同特点是基于集中式计算机系统,并且系统不具有开放性,因而系统维护,升级以及与其它联网构成很大困难。 90年代按照开放的原则,基于分布式计算机网络以及关系数据库技术的能够实现大范围联网的EMS/SCADA系统称为第三代。这一阶段是我国SCADA/EMS系统发展最快的阶段,各种最新的计算机技术都汇集进SCADA/EMS系统中。这一阶段也是我国对电力系统自动化以及电网建设投资最大的时期,国家计划未来三年内投资2700亿元改造城乡电网可见国家对电力系统自动化以及电网建设的重视程度。 第四代SCADA/EMS系统的基础条件已经或即将具备,预计将与21世纪初诞生。该系统的主要特征是采用Internet技术、面向对象技术、神经网络技术以及JAVA技术等技术,继续扩大SCADA/EMS系统与其它系统的集成,综合安全经济运行以及商业化运营的需要。 SCADA系统在电气化铁道远动系统的应用技术上已经取得突破性进展,应用上也有迅猛的发展。由于电气化铁道与电力系统有着不同的特点,在SCADA系统的发展上与电力系统的道路并不完全一样。在电气化铁道远动系统上已经成熟的产品有由我所自行研制开发的HY200微机远动系统以及由西南交通大学开发的DWY微机远动系统等。这些系统性能可靠、功能强大,在保证电气化铁道供电安全,提高供电质量上起到了重要的作用,对SCADA系统在铁道电气化上的应用功不可没。 发展瞻望 SCADA系统在不断完善,不断发展,其技术进步一刻也没有停止过。当今,随着电力系统以及铁道电气化系统对SCADA系统需求的提高以及计算机技术的发展,为SCADA系统提出新的要求,概括地说,有以下几点: 1.SCADA/EMS系统与其它系统的广泛集成 SCADA系统是电力系统自动化的实时数据源,为EMS系统提供大量的实时数据。同时在模拟培训系统,MIS系统等系统中都需要用到电网实时数据,而没有这个电网实时数据信息,所有其它系统都成为"无源之水"。所以在这今十年来,SCADA系统如何与其它非实时系统的连接成为SCADA研究的重要课题;现在在SCADA系统已经成功地实现与DTS (调度员模拟培训系统) 、 企业MIS系统的连接。SCADA系统与电能量计量系统,地理信息系统、水调度自动化系统、调度生产自动化系统以及办公自动化系统的集成成为SCADA系统的一个发展方向。 2.变电所综合自动化 以RTU、微机保护装置为核心,将变电所的控制、信号、测量、计费等回路纳入计算机系统,取代传统的控制保护屏,能够降低变电所的占地面积和设备投资,提高二次系统的可靠性。变电所的综合自动化已经成为有关方面的研究课题,我国东方电子等公司已经推出相应的产品,但在铁道电气化上还处于研究阶段。 3.新技术研究与应用 专家系统、模糊决策、神经网络等新技术研究与应用 利用这些新技术模拟电网的各种运行状态,并开发出调度辅助软件和管理决策软件,由专家系统根据不同的实际情况推理出最优化的运行方式或出来故障的方法,以达到合理、经济地进行电网电力调度,提高运输效率的目的。 4.面向对象、Internet、及JAVA的应用 面向对象技术 (OOT) 是网络数据库设计、市场模型设计和电力系统分析软件设计的合适工具,将面向对象技术 (OOT) 运用于SCADA/EMS系统是发展趋势。 随着Internet技术的发展,浏览器界面已经成为计算机桌面的基本平台,将浏览器技术运用于SCADA/EMS系统,将浏览器界面作为电网调度自动化系统的人机界面,对扩大实时系统的应用范围,减少维护工作量非常有利;在新一代的SCADA/EMS系统中,传统的MMI界面将保留,主要供调度员使用,新增设的Web服务器供非实时用户浏览,以后将逐渐统一为一种人机界面。 JAVA语言综合了面向对象技术和Internet技术,将编译和解释有机结合,严格实现了面向对象的四大特性: 封装性、多态性、继承性、动态联编,并在多线程支持和安全性上优于C++,以及其它诸多特性,JAVA技术将导致EMS/SCADA系统的一场革命。 5.3D scada 3D组态软件,全称3D组态监控软件系统软件。英文简写3DSCADA (3D Supervisory Control and Data Acquisition(三维数据采集与监视控制),它处于自动化控制系统的最高一级平台,一般包括开发环境和应用环境两部分。3D组态能够以灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的组态软件工具。3D组态软件通过三维立体监控设备达到用户如身临其景的感觉,使得人机界面控制更加逼真,更具人性化。3D组态软件的应用领域很广,可以应用于电力系统、给水系统、石油、化工、冶金等领域的数据采集与监视控制以及过程控制等诸多领域。 态神3DSCADA 也将更多的应用在各个领域! 随着工业自动化水平的迅速提高, 传统的组态软件已经日益不能满足人们的需求,程序员和操作员期待更先进的自动化软件出现,3D是这个时代产物,3D被应用在组态软件领域也就顺利成章。 3D利用DirectX/OpenGL开发,程序员可以通过简单的方法组态3D立体画面,将所有需要监测的部位放置于3D画面上,达到多方位立体监测的功能。 泄漏监测系统 SCADA泄漏监测系统 (以一条管线为例) 由变送器,服务器,远程客户端,通信网络等部分组成,如图A 所示。目前安装在长输管线上的变送器主要有压力变送器、温度变送器和流量变送器几种。需要指出的是,国内大部分管线两端都未安装流量变送器。 通信网络是系统内部信息传输的物理途径。F9G与上层服务器进行通信及数据传输、远程客户端对服务器数据库的访问以及对服务器的0') 访问均是通过通信网络进行的。该系统可基于局域网、光纤及电话线、微波等不同类型的通信方式,具有良好的适应能力。此外,系统提供了0') 访问功能,使得任何一台与服务器建立了网络连接并且安装有ST 或其他网络浏览器的计算机均可成为系统的0') 客户。 该系统应用在某油田输油管线上取得了显著的成效,系统的使用大大提高了油田生产和管理的自动化水平,为油田创造了明显的经济效益和社会效益。

2012-05-10 · 1 min · 79 words · -

set command

set command set 命令 作用主要是显示系统中已经存在的shell变量 (是变量, 不是环境变量),以及设置shell变量的新变量值。使用 set 更改 shell 特性时,符号"+“和”-“的作用分别是打开和关闭指定的模式。set 命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare 命令以变量名=值 的格式进行定义即可。 使用declare命令定义一个新的环境变量"mylove”,并且将其值设置为"Visual C++",输入如下命令: #定义新环境变量, 注意: 值必须带引号 declare foo='bar' 再使用set命令将新定义的变量输出为环境变量,输入如下命令: #设置为环境变量 set -a foo 执行该命令后,将会新添加对应的环境变量。用户可以使用env命令和grep命令分别显示和搜索环境变量"mylove",输入命令如下: #显示环境变量值 env | grep foo 此时,该命令执行后,将输出查询到的环境变量值。 选项 -a:标示已修改的变量,以供输出至环境变量。 -b:使被中止的后台程序立刻回报执行状态。 -C:转向所产生的文件无法覆盖已存在的文件。 -d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 -e:若指令传回值不等于0,则立即退出shell。 -f:取消使用通配符。 -h:自动记录函数的所在位置。 -H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。 -k:指令所给的参数都会被视为此指令的环境变量。 -l:记录for循环的变量名称。 -m:使用监视模式。 -n:只读取指令,而不实际执行。 -p:启动优先顺序模式。 -P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 -t:执行完随后的指令,即退出shell。 -u:当执行时使用到未定义过的变量,则显示错误信息。 -v:显示shell所读取的输入值。 -x:执行指令后,会先显示该指令及所下的参数。 -e 若指令传回值不等于 0,则立即退出 shell。 ...

2012-05-10 · 1 min · 193 words · -

SOA

SOA 面向服务的体系结构 (Service-Oriented Architecture,SOA) 是一个组件模型,它将应用程序的不同功能单元 (称为服务) 通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。 SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML/Web Service技术之后的自然延伸。 SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。 面向服务的体系结构 松耦合的系统 这种具有中立的接口定义 (没有强制绑定到特定的实现上) 的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。 对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需 (On demand) 业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。 虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构 (Common Object Request Broker Architecture,CORBA) ,它已经出现很长时间了,其定义的概念与 SOA 相似。 然而,现在的 SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言 (eXtensible Markup Language,XML) 为基础的。通过使用基于 XML 的语言 (称为 Web 服务描述语言 (Web Services Definition Language,WSDL) ) 来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前 CORBA 中的接口描述语言 (Interface Definition Language,IDL) 可比了。 Web 服务并不是实现 SOA 的惟一方式。前面刚讲的 CORBA 是另一种方式,这样就有了面向消息的中间件 (Message-Oriented Middleware) 系统,比如 IBM 的 MQseries。但是为了建立体系结构模型,您所需要的并不只是服务描述。您需要定义整个应用程序如何在服务之间执行其工作流。您尤其需要找到业务的操作和业务中所使用的软件的操作之间的转换点。因此,SOA 应该能够将业务的商业流程与它们的技术流程联系起来,并且映射这两者之间的关系。例如,给供应商付款的操作是商业流程,而更新您的零件数据库,以包括进新供应的货物却是技术流程。因而,工作流还可以在 SOA 的设计中扮演重要的角色。 此外,动态业务的工作流不仅可以包括部门之间的操作,甚至还可以包括与不为您控制的外部合作伙伴进行的操作。因此,为了提高效率,您需要定义应该如何得知服务之间的关系的策略,这种策略常常采用服务级协定和操作策略的形式。 最后,所有这些都必须处于一个信任和可靠的环境之中,以同预期的一样根据约定的条款来执行流程。因此,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的作用。 体系结构作用 我可以用面向服务的体系结构做什么? 对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。 下面举一个具体的例子。一个服装零售组织拥有 500 家国际连锁店,它们常常需要更改设计来赶上时尚的潮流。这可能意味着不仅需要更改样式和颜色,甚至还可能需要更换布料、制造商和可交付的产品。如果零售商和制造商之间的系统不兼容,那么从一个供应商到另一个供应商的更换可能就是一个非常复杂的软件流程。通过利用 WSDL 接口在操作方面的灵活性,每个公司都可以将它们的现有系统保持现状,而仅仅匹配 WSDL 接口并制订新的服务级协定,这样就不必完全重构它们的软件系统了。这是业务的水平改变,也就是说,它们改变的是合作伙伴,而所有的业务操作基本上都保持不变。这里,业务接口可以作少许改变,而内部操作却不需要改变,之所以这样做,仅仅是为了能够与外部合作伙伴一起工作。 另一种形式是内部改变,在这种改变中,零售组织现在决定它还将把连锁零售商店内的一些地方出租给专卖流行衣服的小商店,这可以看作是采用店中店 (store-in-store) 的业务模型。这里,虽然公司的大多数业务操作都保持不变,但是它们现在需要新的内部软件来处理这样的出租安排。尽管在内部软件系统可以承受全面的检修,但是它们需要在这样做的同时不会对与现有的供应商系统的交互产生大的影响。在这种情况下,SOA 模型保持原封不动,而内部实现却发生了变化。虽然可以将新的方面添加到 SOA 模型中来加入新的出租安排的职责,但是正常的零售管理系统继续如往常一样。 为了延续内部改变的观念,IT 经理可能会发现,软件的新配置还可以以另外的一种方式加以使用,比如出租粘贴海报的地方以供广告之用。这里,新的业务提议是通过在新的设计中重用灵活的 SOA 模型得出的。这是来自 SOA 模型的新成果,并且还是一个新的机会,而这样的新机会在以前可能是不会有的。 垂直改变也是可能的,在这种改变中,零售商从销售他们自己的服装完全转变到专门通过店中店模型出租地方。如果垂直改变完全从最底层开始的话,就会带来 SOA 模型结构的显著改变,与之一起改变的还可能有新的系统、软件、流程以及关系。在这种情况下,SOA 模型的好处是它从业务操作和流程的角度考虑问题而不是从应用程序和程序的角度考虑问题,这使得业务管理可以根据业务的操作清楚地确定什么需要添加、修改或删除。然后可以将软件系统构造为适合业务处理的方式,而不是在许多现有的软件平台上常常看到的其他方式。 正如您可以看到的,在这里,改变和 SOA 系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对 SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义的功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起,它已经有十多年的历史了,通常用统一建模语言 (Universal Modeling Language,UML) ,并且描述成模型驱动的体系结构 (Model-Driven Architecture,MDA) 。 对于面向同步和异步应用的,基于请求/响应模式的分布式计算来说,SOA是一场革命。一个应用程序的业务逻辑 (business logic) 或某些单独的功能被模块化并作为服务呈现给消费者或客户端。这些服务的关键是他们的松耦合特性。例如,服务的接口和实现相独立。应用开发人员或者系统集成者可以通过组合一个或多个服务来构建应用,而无须理解服务的底层实现。举例来说,一个服务可以用.NET或J2EE来实现,而使用该服务的应用程序可以在不同的平台之上,使用的语言也可以不同。 SOA与互联网 Service-Oriented Device Architecture (SODA),即"面向服务的设备架构",是一个由IBM和美国Florida大学发起的倡议(Initiative)和联盟(Alliance),通过引入基于服务 (SOA) 的编程模型,以规范和简化智能设备 (Devices) 与企业应用的集成。SODA致力于充分利用嵌入式系统和IT领域已有的标准,为智能设备与SOA技术的融合提供一个标准平台。 SODA的目标是让软件开发者能够像用SOA技术实现IT业务集成那样在诸如远程医疗、军事、以及RFID等物联网系统中实现与传感器和执行器的集成[1]。 具体来说,SODA提供标准接口,把硬件设备功能转换成与硬件无关的可调用的软件服务,实现如下目标: 1. 实现应用集成商与设备和传感器制造商的无缝对接; 2. Integrate once, deploy everywhere, 使用户专注于整体应用方案而不是陷于设备连接工作; 3. 在应用和众多 (泛在) 设备协议之间建立一个通用接口和DDL,形成统一数据交换标准; 4. 作为一个中间件平台,为众多行业应用提供应用支持。 SODA架构 ...

2012-05-10 · 3 min · 505 words · -

Maven OutOfMemory

Maven OutOfMemory http://juvenshun.iteye.com/blog/240257 当Maven项目很大,或者你运行诸如 mvn site 这样的命令的时候,maven运行需要很大的内存,在默认配置下,就可能遇到java的堆溢出。如: [INFO] Building jar: /home/dl9pf/svn/mindquarry/mindquarry-jcr/mindquarry-jcr-changes/target/mindquarry-migration-with-dependencies.jar [INFO] ———————— [ERROR] FATAL ERROR [INFO] ———————— [INFO] Java heap space [INFO] ———————— [INFO] Trace java.lang.OutOfMemoryError: Java heap space at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:99) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:518) … at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) [INFO] ———————— [INFO] Total time: 7 minutes 14 seconds [INFO] Finished at: Wed Sep 05 07:44:55 CEST 2007 [INFO] Final Memory: 37M/63M [INFO] ———————— 解决的方法是调整java的堆大小的值。 Windows环境中 找到文件%M2_HOME%binmvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为: @REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE... 它的意思是你可以设置一些Maven参数,我们就在注释下面加入一行: set MAVEN_OPTS= -Xms128m -Xmx512m 之后,当你运行Maven命令如 mvn -version 的时候,你会看到如下的输出: E:test>mvn -versionE:test>set MAVEN_OPTS= -Xms128m -Xmx512m Maven version: 2.0.9 Java version: 1.6.0_07 OS name: “windows 2003” version: “5.2” arch: “x86” Family: “windows” ...

2012-05-08 · 1 min · 148 words · -

Java 运算符

Java 运算符 三目运算符(又称条件运算符) 三元运算符一般用的很少,因为它在程序段中的可读性很差,所以笔者建议不要经常使用三元运算符,但很少使用并不代表不使用,所以还是要掌握好它的用法,三元运算符的表达形式如下: 布尔表达式?值 0 : 值 1 它的运算过程是: 如果布尔表达式的结果是 true,就返回值 0,如果布尔表达式的结果是 false,就返回值 1,例如下面的程序段。 public class data21{ public static void main(String[] args){ int a=10; int b=20; System.out.println(“此三元运算式结果是: “+((a>b)?‘A’:‘B’)); } } 分析上面程序段: 因为"a"是小于"b”,所以"a>b"这个关系运算符的结果是"false”,既然是"false",那么选择值 1,即这个三元运算符的结果是"B"。 总结: 条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。 variable x = (expression) ? value if true : value if false 实例 public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( “Value of b is : " + b ); ...

2012-05-03 · 1 min · 180 words · -

webUI test

webUI test Selenium WebDriver, Watir, Sahi, cpress

2012-05-03 · 1 min · 7 words · -

linux Benchmark Tools

linux Benchmark Tools Benchmark Tools Phoronix Test Suite Comprehensive testing and benchmarking platform IOzone Filesystem benchmark tool that measures a wide variety of file operations netperf A network performance benchmark LLCbench Low Level Architectural Characterization Benchmark Suite HardInfo System Profiler and Benchmark GtkPerf GTK+ performance benchmark

2012-05-02 · 1 min · 46 words · -

Linux Testdisk

Linux Testdisk linux下超帅的分区表修复软件.以前用过n多的windows的分区表修复软件,没想到linux中有这么好用这么方便的修复软件,速度那叫一个快啊。。没有见到这个分区表修复软件以前我都白活了。。。。。 好了,这个软件叫testdisk.很帅的。。 如果你是使用修复光碟,就下载一个这个软件到电脑中,如果是恢复usb的disk直接 #sudo apt-get install testdisk 使用的话先sudo testdisk 1.选择Create来进行分析 Use arrow keys to select, then press Enter key: [ Create ] Create a new log file [ Append ] Append information to log file [ No Log ] Don’t record anything 2.然后选择testdisk中你要修复的硬盘,回车 Select a media (use Arrow keys, then press Enter): Disk /dev/sda - 160 GB / 149 GiB - ATA HITACHI HTS54251 Disk /dev/sdb - 3272 MB / 3121 MiB - SM324BC USB DISK 3.选择testdisk修复的平台,我们是Intel的,所以选择他 ...

2012-05-01 · 2 min · 331 words · -

debian wine frozen throne

debian wine frozen throne download source from http://www.winehq.org/download/ sudo apt-get install flex sudo apt-get install bison ./tools wine “Frozen Throne.exe” -opengl

2012-04-29 · 1 min · 21 words · -