北京总部

中软国际教育:javascript错误处理与调试

中软国际教育:javascript错误处理与调试

2017-02-20

本文主要介绍javascript中一些常见的错误,以及一些用于调试和处理错误的基础,以帮助我们提高javascript代码的质量. 先说下javascript中常见的7种错误: 1.变量未定义 下面的语句将隐式的创建一个新的变量abc,并将值123赋给该变量: [javascript] view plaincopy "font-size:24px;">abc = 123;   严格的讲,应该显式的定义该变量: [javascript] view plaincopy "font-size:24px;">var abc = 123;   (实际上,是否使用var关键字与变量的作用域有关,因此最好在定义变量时都加上var关键字) 但是,如果使用一个未定义的变量,将产生错误.例如,如果变量abc事先没有显式或隐式的定义,下面语句将产生错误: [javascript] view plaincopy "font-size:24px;">alert(abc);   2.大小写敏感 大小写错误是最常见的错误之一,但有时是很难发现的.例如,找出下面语句的三处错误: [javascript] view plaincopy "font-size:24px;">var myName ="Paul";  

更多>
如何通过手机破解无线密码-中软国际教育

如何通过手机破解无线密码-中软国际教育

2017-02-20

这篇文章主要分享了,如何通过手机破解无线密码,主要是通过WIFI万能钥匙,然后再查看密码,这样电脑也可以看通过密码上网了 由于网络的普及,现在用无线路由器的朋友越来越多,大家用无线路由器的安全意识也强了不少,今天闲得无事,把原来用的无线网卡插在自己的台式机上,搜索到N+个无线信号。就想试试看能不能连接上别人的无线路由,好让自己的电脑使用有线网络+无线网络增加网速,但一看搜索到的无线信号全是加了密的,尝试用弱密码连接了几个,密码不正确连接不了。 最后想到手机不是有个WIFI万能钥匙吗,果断用手机下载,启动软件用WIFI万能钥匙连接搜索到的信号,靠,连接成功。进入手机的设置-wlan-查看连接上的无线信号的详细信息,看到自己手机获取到的IP是192.168.1.101,那么网关就可能是192.168.1.1了。用手机的浏览器输入打看成功,要求输入无线路由器的用户名和密码,果断输入用户名admin 密码admin 登录成功(在这里说一下,很多朋友设置了无线路由信号的的安全密码后,很少更改无线路由器的管理密码,基本都是默认的密码。可以查看: 路由器默认密码表。)打开无线路由器设置 无线设置-无线安全设置,就看到无线路由器的安全密码了。用电脑连接刚刚的到密码的无线路由器,连接成功。哈哈双线模式,本来5M的有线现在下载东西达到了900K+看来刚连上的那个无线路由器家里开的4M的宽带。 另外一种方法,也是安装wifi万能钥匙后,直接用手机查看密码前提是你的手机是安卓系统。 1、手机必须取得root权限。2、用RE管理器或es文件浏览器进入data/misc/wifi,里面有个nf或是nf的文件,用文本查看器打开,所有记住的wifi密码都在这里。 打开 nf文件就可以看到以下内容: network={ ssid="xxxxxxxxx" (网络名) psk="xxxxxxxxxxxx" (密码) key_mgmt=WPA-PSK priority=10 } ①、ssid=后面的就是你连接的WIFI网络名。  ②、psk=后面的就是此WIFI网络的密码。  ③、 key_mgmt=后面内容为加密类型。

更多>
中软国际教育:大学毕业生应如何选择IT培训机构

中软国际教育:大学毕业生应如何选择IT培训机构

2017-02-20

即将毕业的大学生们都在寻求最好的职业发展空间,就业环境较好、薪酬水平较高的IT行业自然极具吸引力。如何理性地选择IT培训机构,获得自己预期的理想效果呢?我们不妨听听中软卓越IT培训专家们的建议! 1.选择口碑好的培训机构 中软卓越IT培训专家认为,从目前市场状况看,大学毕业生先镀金再就业、理性选择培训机构已成为主要趋势。选择好的培训机构才是学到真本事。在选择培训机构时要注意: 第一,注意品牌、口碑。 第二,注意师资质量。在选择IT培训老师时,要注意其理论知识和实践技能都要强。 第三,机构的自身管理能力。在挑选培训机构时还要注意其自身管理能力。如果培训机构的工作人员,尤其是讲师流动过快,对学员的影响是很大的。 2.坚持终身学习 IT领域是一个需要终身学习的行业。IT行业的最大特征就是更新速度极快,对新技术的掌握程度也要求很高。进入这个行业就需要不停充电。这里所说的“充电”,还不仅是IT专业知识方面的补充。现在的行业都要求是复合型人才,除了IT知识外,英语等其他方面的素质能力也要注意培养。

更多>
架构师速成-如何高效编程

架构师速成-如何高效编程

2017-02-17

引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境。那枪浑身上下,若舞梨花;遍体纷纷,如飘瑞雪。 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手。为什么? 其实古时打仗也是一门技术活,需要有勇有谋,跟it没有什么太大的区别。打仗要修身、修技、修器才能左冲右突,如入无人之境,同样做it也要修身、修技、修器,才能高效编程,如入无人之境。 高效编程的修炼 何谓修身、修技、修器? 修身,古今都是修炼自己的体魄和思维,使自己体魄强健,思维敏捷 修技,古代修炼自己的武艺和兵法,如今修炼自己的设计方法、模式及设计技能 修器,子龙左手青釭剑,右手亮银枪,跨下白龙马,一身白盔白甲,帅到爆炸!如今我们左手xmind,右手eclipse,uml在脚下,也是无比潇(ku)洒(bi)。 待修到山花烂漫时,需求丛中过,片叶不粘身。 修身 修身是一个很大的话题,要讲个几天几夜了,所以我们就先略过。当然修身之后,可以从思维的高度上确定大的方向,但是大家的看了题目也不太会关心如何修身,so pass!后面省略十万字,我可真够高产的(稿费不要省略啊,我不怕麻烦)。 修技 古时修技都是有秘笈,而且必须有独门功法历尽千辛万苦才能修炼成功。如今好了,有很多书和视频,还有我这种让人醍(提)醐(壶)灌顶的好教程,所以你只需要少吃一点苦就可以练成了,我算算啊——-你大概历尽999辛9999苦就可以了,看少了1点吧。 不明真相群众:揍他,揍他小舅子 作者:亚美蝶,揍我不行,揍我小舅子可以。 作者:哎呀,轻点 作者:呀,轻点 作者:轻点 作者:点 不明真相群众:KO 作者:请让我讲完,55555 修技大概分为: 面向对象、面向过程设计方法(心法) uml设计语言(秘笈) 设计模式、重构、xx最佳实践(先辈实战经验) 单元测试(对打练习) 等修炼到10成功力,才可以继续修炼终极秘笈架构模式,否则会走火入魔、oom。 不明真相群众:等一下,我们在讨论高效编程,你跟我们讲什么面向对象,你疯了吧!揍他,揍他小舅子 此处同上,省略100字。 作者:请让我讲完,55555 其实看到题目我首先想到的也是编程工具的使用,以及快捷键的使用。后来我发现那只占我浪费时间的5%-10%,真正浪费我们时间的是: 老板说:哎呀,我们方向错了,我们重新搞一个方向吧!(产品、码农、测试心中下起了大雪,好冷,好累,我要屎了,砍死他…….看在钱的份上,先饶你一条狗命) 产品说:哎呀,需求不是这个样子的,我们应该改成这样………(码农心中一万只草泥马跑过) 测试说:哎呀,这么多bug,快来改(测试心中鄙视的看着你,菜鸟,切!) 码农说:哎呀,这样地方设计不合理,我们需要重构。哎呀,这样地方if else好多,我晕了。哎呀,这地方出异常了。哎呀,…..(哎你妈个头啊!你有完没完啊!)  不明真相群众:好像很有道理的样子,先饶你一条狗命 作者:谢谢大侠 其实我们看看这些问题怎么来解决: 老板的问题,我先不解释了,老板最英明!(老板在后面看着呢)。《精益创业》《精益创业实战》,好像有点修身的味道。 产品的问题,有些错误的地方,你在设计时会感觉不对,那就问题所在。但是有些就是方向性的问题,这可以归结到第一个问题。(产品说:这个锅甩的好)《head first 面向对象分析与设计》《领域驱动设计》 测试的问题,单元测试起码保证最基础的代码的正确性,上面集成测试,功能测试,系统测试才有可能正确。《单元测试之道》《测试驱动开发》 码农的问题,先辈的经验先学会,你就不会有那么多需要哎呀的地方。《重构》《Head first 设计模式》《代码大全》,《Effective java》《代码整洁之道》 秘笈已经放在后面了,请大家笑纳! 不明真相群众:好像还不错,看在秘笈的份上先饶你一条狗命 作者:谢谢大侠 不明真相群众:等等,终极秘笈没有给 作者:sorry,各位大哥,《企业架构模式》,《大型网站技术架构》 修器 有小说讲到高手已经不需要好的武器,一片叶子,一根枯枝,都可以分分钟秒掉一片人。还有人谣传,最牛逼的开发人员只使用文本编辑器,巴拉巴拉,一个操作系统开发出来了。 我只问一个问题,你用不用电器,你开不开车? 如果用,那就继续,如果不用,那就闪开,骗子,你怎们看到我的文章的。 人活着的目的就是为了让更多人的获得更多的自由,时间自由,财务自由,人身自由。开发工具的目的是为了,让你更快的完成一些重复的繁琐的事情,让你有时间去享用你的自由。所以尽情的使用工具,工欲善其事,必先利其器。 不明真相群众:好伟大 作者:我只是说说而已,不要打我。 要高效,必须把最常用的工具修炼到极致: 操作系统,尽量选择苹果、Ubuntu,window次之,当你用命令行爽呆的时候就明白了。当然如果用windows,尽量使用快捷键操作。 开发工具,eclipse 快捷键,统一的格式,重构功能 ,findbug,checkstyle 自动化编译发布,使用hudson进行定时自动化打包发布 其他工具,xmind 快捷键 时间管理,番茄工作法 控制时间 好的框架,定义好一个好的框架,可以节省大量开发时间。具体内容详见我前面讲到的框架。 代码生成器,输入uml设计的类图,自动生成相关的类,对于需要持久化的对象,可以实现从前到后的增删改查的代码。 实战 产品获得了一个用户需求给到我,我通常是这样做的: 分析需求的合理性,并不是所有需求都是合理的,需要积极发现其中问题。发现的问题跟产品讨论,如果所有问题都解决掉,才进行下一步。如果后面的开发建立在一个错误的需求上,所有开发都是然并卵。 进行分析设计,至少形成uml的用例图和类图。对于关键复杂逻辑,确定是否可以通过设计模式解决。复杂流程需要画出流程图,如果状态变化较多,还需要画出状态图。在uml设计时,仍然会发现需求的问题,此时仍需要跟产品确定,直至所有问题解决掉,才进行一步。 编码实现,根据类图自动生成相关代码,省去了自己一个个再敲一遍的时间,前后端增删改查等重复逻辑都已经有了,只需要写具体的业务就ok了。 编写单元测试,对于自定义代码,必须编写单元测试。这样后期修改代码或者进行集成测试时,才会比较顺畅。 进行findbug,checkstyle自动检查,系统自动化发布,如果出现问题邮件通知。 自测,自己实现功能后,先按照需求自测一般,保证正确性。 提交测试,发现bug及时修改,基本做到日结。 自动化发布上线。 当然中间会尽量节省各种时间: 快捷键操作 番茄工作法,设置不被打扰时间,全神贯注的投入编码 3次以上重复的事情,就考虑实现自动化,比如 发布,代码检查,代码生成 代码规范严格遵守,最优实践严格遵守 团队高效 其实编码不是一个人的事情,团队协作是必不可少的。团队尽量采用如下管理方式: 需求、设计集体参与,不需要再每人讲解 设计后进行分工,如果有新人就采取新老结合的结对编程,对复杂的代码也采取结对编程。 推行结果导向,从产品,需求,设计,开发等,不要白白浪费时间做无结果的事情 代码规范严格遵守,最优实践严格遵守 规范流程,不断磨合各个环节人员,达到丝般顺滑 人员互备,不会出现单点 祝福 上面是我做软件以来的一些感悟,当然一千个人眼中有一千零一个哈姆雷特,每个都会有最适合自己的方法,希望大家都早日修成自己的高效编程之道。 每天的努力的汗水,是成功追寻的痕迹。 中软国际教育集团官网,这里有你需要的编程知识

更多>
单一功能原则丨长方形的例子

单一功能原则丨长方形的例子

2017-02-17

让我们先来看图,我们应该感谢制作这张图的人,因为它们真的太有趣了 单一功能原则图 它的意思是:“如果你可以在一个设备中实现所有的功能,你却不能这样做”。为什么呢?因为从长远来看它增加了很多的可管理性问题。 从面向对象角度解释是:"导致类变化的因素永远不要多于一个。" 或者换个说法:"一个类有且只有一个职责"。 同学:可以解释一下么? 小卓:当然,这个原则是说,如果有多于一个原因会导致你的类改变(或者它的职责多余一个),你就需要根据其职责把这个类拆分为多个类。 同学:嗯...这是不是意味着在一个类里不能有多个方法? 小卓:当然不是。你当然可以在一个类中包含多个方法。问题是,他们都是为了一个目的。那么,为什么拆分很重要? 那是因为: · 每个职责都是轴向变化; · 如果类包含多个职责,代码会变得耦合; 同学:给个例子呗? 小卓:木有问题啊,瞅瞅下面类的结构。其实,这个例子是 Bob 叔叔那儿来的,得谢谢他。 违反SRP原则的类层次结构 这里,Rectangle 类干了下面两件事: · 计算矩形面积; · 在界面上绘制矩形;   而且,有两个程序使用了 Rectangle 类: · 计算几何应用程序用这个类计算面积; · 图形程序用这个类在界面上绘制矩形; 这违反了SRP原则(单一职责原则)! 同学:肿么回事? 小卓:你瞅瞅,Rectangle 类干了俩不相干的事。一个方法它计算了面积,另外一个它返回一个表示矩形的 GUI 资源。这问题就有点乐了: · 在计算几何应用程序里咱得包着 GUI。就是说,写几何应用代码,咱也得引用 GUI 库; · 要是为了图形应用所改变 Rectangle 类,计算几何应用也可能跟着变,然后还得编译,还得测试,另一边也是; 同学:是很乐。就是说,咱得根据类的职责分开写呗? 小卓:必须滴。猜猜怎么干? 同学:我想想,我寻思这得这么办: 我瞅着得按职责拆成两个类: · Rectangle:这个类定义 Area() 方法; · RectangleUI:这个把 Rectangle 类继承过来,定义 Draw() 方法。 小卓:很好。这么个,计算几何应用使 Rectangle 类,图形应用使 RectangleUI 类。咱还可以把这俩类分到俩单独的 DLL 中,然后改的时候就不用管另一个了。 同学:谢了,我大概明白 SRP 原则了一句话:SPR 就是把东西分到不能再分了,再集中化管理和复用。囔,在方法层面上,咱不也得用 SPR 原则?我是说,咱写的方法里有很多干不同事儿的代码,这也不符合 SPR原则吧。 小卓:你说得不错。方法也得分开,一个方法干一个活。这么着你复用方法,要是改了,也不用改太多。 下一篇文章,我们将讨论“面向对象之开闭原则” 出处:开源中国 译者:K6F, 凡程子, 叫我蝴蝶吧, 王薇, 人头马没面, 铂金小龟, 风子, nikeff1108, sigai 链接:http://www.oschina.net/translate/how-i-explained-ood-to-my-wife?lang=chs&page=4# 了解更多编程知识欢迎访问中软国际教育集团官网www.zretc.com!

更多>
依赖倒置原则丨组装汽车的例子

依赖倒置原则丨组装汽车的例子

2017-02-17

依赖倒置原则是SOLID原则中最后的原则。图示如下: 依赖倒置原则图示 它的意思是: “高层次的模块不应该依赖于低层次的模块,而是,都应该依赖于抽象。”我们用一个现实的例子来理解。你的汽车是用很多部件组成,比如发动机,车轮,空调和其他的部件,是吧? 同学:是啊,当然是这样! 小卓:你看,它们并没有严格的构建在一个部件里;就是说,它们都是“插件”,要是引擎或着车轮出了问题,你可以单独修理它,甚至换一个用。 替换时,你只需要保证沉沦符合汽车的设计(汽车能使用任何1500CC的引擎或任何18寸的车轮)。 当然,你可以在1500CC 的位置上安装2000 CC的引擎,对某些制造商都一样(丰田汽车)。 可如果你的汽车部件不是“可拔插”的呢? 同学:那太可怕了!这样的话,要是汽车引擎故障,你得整车修理,或者买一辆新车! 小卓:是的,那么怎么做到"可插拔"呢? 同学:关键是“抽象”,是吧? 小卓:对。现实世界中,汽车是高层级的模块/实体,它依赖于底层级的模块/实体,例如引擎和轮子。 相较于直接依赖于实体的引擎或轮子,汽车应该依赖于抽象的引擎或轮子的规格,这样只要是符合这个抽象规格的引擎或轮子,都可以装到车里跑。 来看看下面的图: 依赖倒置原则的类层次结构 小卓:注意上面的 Car类,它有两个属性,且都是抽象类型(接口)而非实体的。 引擎和车轮是可插拔的,这样汽车能接受任何实现了声明接口的对象,且 Car 类无需任何改动。 同学:所以,如果代码不遵循依赖倒置,就有下面的风险: · 使用低层级类会破环高层级代码; · 当低层级的类变化时,需要太多时间和代价来修改高层级代码; · 代码可复用性不高 小卓:你说到点子上了! 简单总结一下 小卓:除 SOLID 原则外还有很多别的面向对象原则。比如: 其他面向对象的原则: · “组合替代继承”:是说“用组合比用继承好”; · “笛米特法则”:是说“类对其它类知道的越少越好”; · “共同封闭原则”:是说“相关类应该一起打包”; · “稳定抽象原则”:这是说"类越稳定,就越应该是抽象类"; 同学:我得学习这些原则吗? 小卓:当然了。你可以Google 它,学习它,理解它。有问题就找我。 同学:我听说还有些根据设计原则编写的设计模式。   小卓:对的。设计模式不过就是针对一些经常出现的场景的一些通用的设计建议。主要的想法还是面向对象原则。你可以认为设计模式是“框架”,OOD 原则是“规范”。 同学:那么之后我将学习设计模式是吧?   小卓:是的。 同学:应该会很有意思。   小卓:必须地! 出处:开源中国 译者:K6F, 凡程子, 叫我蝴蝶吧, 王薇, 人头马没面, 铂金小龟, 风子, nikeff1108, sigai 链接:http://www.oschina.net/translate/how-i-explained-ood-to-my-wife?lang=chs&page=4# 了解更多编程知识欢迎访问中软国际教育集团官网!

更多>
嵌入式开发:嵌入式技术在物联网中的应用

嵌入式开发:嵌入式技术在物联网中的应用

2017-02-16

随着IT技术飞速发展,互联网已经进入了“物联网”时代。如果说,之前互联网上大量存在的设备主要是以通用计算机(像大型机、小型机、个人电脑等等)的形式出现,“物联网”的目的则是让所有的物品都具有计算机的智能但并不以通用计算机的形式出现,并把这些“聪明”了的物品与网络连接在一起,这就需要嵌入式技术的支持。嵌入式技术是计算机技术的一种应用,该技术主要针对具体的应用特点设计专用的计算机系统——嵌入式系统。嵌入式系统是以应用为中心,以计算机技术为基础的,并且软硬件可量身订做,它适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统通常嵌入在更大的物理设备当中而不被人们所察觉,如手机、PDA、甚至空调、微波炉、冰箱中的控制部件都属于嵌入式系统,如下面联接在互联网上的设备中就都有一个嵌入式计算机系统,但平时我们可能根本没有注意到这些计算机系统的存在。 嵌入式技术和通用计算机技术有所不同,我们知道通用计算机多用来和人进行交互并根据人发出的指令进行工作;而嵌入式系统大多数情况下可能根据自己“感知”到的事件自主地进行处理,所以它对时间性,可靠性要求更高。一般来说,嵌入式系统应该具有以下一些特征:专用性、可封装性、实时性、可靠性。专用性是指嵌入式系统用于特定设备完成特定任务,而不像通用计算机系统可以完成各种不同任务。可封装性指嵌入式系统一般隐藏于目标系统内部而不被操作者察觉。实时性指与外部实际事件的发生频率相比,嵌入式系统能够在可预知的时间内对事件或用户的干预做出响应。可靠性是指嵌入式系统隐藏在系统或设备中,一旦开始工作,可能长时间没有操作人员的监测和维护,因此要求它能够可靠运行。 像通用计算机系统一样,嵌入式系统也包括硬件和软件两部分。硬件包括处理器/微处理器(就是我们平时所说的CPU)、存储器及外设器件和输入输出端口、图形控制器等。软件部分包括操作系统软件和专门解决某类问题的应用软件,有时设计人员把这两种软件组合在一起,应用程序控制着系统的运作和行为,而操作系统控制着应用程序编程与硬件的交互作用。 嵌入式计算机系统同通用计算机系统相比具有以下特点: 1、嵌入式系统通常是面向特定应用的,嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有功耗低、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计小型化,移动能力大大增强,跟网络的耦合也越来越紧密。 2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 3、嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除不需要的多余功能,力争在更小的硅片面积上实现同样的性能,这样才能在具体应用中更具有竞争力。 4、嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 5、为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中。 6、嵌入式系统本身不具备自主开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套与通用计算机系统连接的开发工具和环境才能进行开发。 信息时代、数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景,同时也对嵌入式生产厂商提出了新的挑战,从中我们可以看出未来嵌入式系统的几大发展趋势: 1、嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持,以方便用户以最低的成本、最短的时间推出自己的产品。 目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP),而WindowCE在主推系统时也提供Embedded VC++作为开发工具,还有Vxworks的Tonado开发环境,DeltaOS的Limda编译环境等等都是这一趋势的典型体现。当然,这也是市场竞争的结果。 2、网络化、信息化的要求随着互联网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。 这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位芯片或信号处理器DSP增强处理能力,同时增加功能接口,如USB,扩展总线类型,如CAN总线,加强对多媒体、图形等的处理,逐步实施片上系统(SOC,就是把所需功能都集中在一个芯片上)的概念。软件方面采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。 3、网络互联成为必然趋势。 未来的嵌入式设备为了适应网络互联的要求,必然要求硬件上提供各种网络通信接口。传统的单片机对于网络支持不足,而新一代的嵌入式处理器已经开始内嵌网络接口,除了支持TCP/IP协议,还有的支持IEEE1394、USB、CAN、Bluetooth、RFID或IrDA通信接口中的一种或者几种,同时也需要提供相应的通信组网协议软件和物理层驱动软件。软件方面,系统内核支持网络模块,以实现嵌入式设备随时随地以各种方式联入互联网。 4、精简系统内核、算法,降低功耗和软硬件成本。 未来的嵌入式产品是软硬件紧密结合的设备,为了减低功耗和成本,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能,这就要求设计者选用最佳的编程模型和不断改进算法,优化编译器性能。因此,既要软件人员有丰富的硬件知识,又需要发展先进嵌入式软件技术,如Java、Web和WAP等。 5、提供友好的多媒体人机界面 嵌入式设备要能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。图形界面、灵活的控制方式,使得人们感觉嵌入式设备就象是一个熟悉的老朋友。这方面的要求使得嵌入式软件设计者要在图形界面,语音交互、以及其他多媒体技术上痛下苦功。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。 总之,如果说其他技术涉及到的是物联网的某个特定方面,如感知、计算、通信等,嵌入式技术则是物联网中各种物品的表现形式,在这些嵌入式设备中综合运用了其他各项技术。

更多>
JAVA入门:关于Java内存管理的几个小技巧

JAVA入门:关于Java内存管理的几个小技巧

2017-02-16

这里将介绍几则Java内存管理的小技巧,让你告别陋习,为Java程序提速。有不少人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测试报告来证明这一点。其实从理论上来讲Java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么多理由来证明它确实占内存呢?两个字,陋习。 1、用StringBuffer代替字符串相加。 这个我就不多讲了,因为已经被 人讲过N次了。我只想将一个不是笑话的笑话,我在看国内某“著名”java开发的WEB系统的源码中,竟然发现其中大量的使用字符串相加,一个拼装SQL 语句的方法中竟然最多构造了将近100个string实例。无语中! 2、别用new Integer。 和Boolean类似,java开发中使用Integer封装int的场合也非常 多,并且通常用int表示的数值通常都非常小。SUN SDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用 Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。如果您的系统要在不同的SDK(比如IBM SDK)中使用的话,那么可以自己做了工具类封装一下,比如IntegerUtils.valueOf(),这样就可以在任何SDK中都可以使用这种特性。 3、别用new Boolean()。 在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装boolean类型的,比如: 以下是引用片段: ps.setBoolean(“isClosed”,new Boolean(true)); ps.setBoolean(“isClosed”,new Boolean(isClosed)); ps.setBoolean(“isClosed”,new Boolean(i==3)); 通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。 Boolean类提供两了个静态变量: 以下是引用片段: public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); 因为valueOf的内部实现是:return (b ? TRUE : FALSE); 所以可以节省大量内存。相信如果Java规范直接把Boolean的构造函数规定成private,就再也不会出现这种情况了。 4、过滥使用哈希表 有一定开发经验的开发人员经常会使用hash表(hash 表在JDK中的一个实现就是HashMap)来缓存一些数据,从而提高系统的运行速度。比如使用HashMap缓存一些物料信息、人员信息等基础资料,这 在提高系统速度的同时也加大了系统的内存占用,特别是当缓存的资料比较多的时候。其实我们可以使用操作系统中的缓存的概念来解决这个问题,也就是给被缓存的分配一个一定大小的缓存容器,按照一定的算法淘汰不需要继续缓存的对象,这样一方面会因为进行了对象缓存而提高了系统的运行效率,同时由于缓存容器不是无限制扩大,从而也减少了系统的内存占用。现在有很多开源的缓存实现项目,比如ehcache、 oscache等,这些项目都实现了FIFO、MRU等常见的缓存算法。 5、避免过深的类层次结构和过深的方法调用。 因为这两者都是非常占用内存的(特别是方法调用更是堆栈空间的消耗大户)。 6、对频繁使用的对象采用对象池技术。 7、尽量避免使用static变量,类内私有常量可以用final来代替。 8、变量只有在用到它的时候才定义和实例化。 9、保证每个IO操作,connection及时关闭。 做好以下几点,确保Java良好编程习惯的形成。  了解更多Java入门知识欢迎访问中软国际教育集团官网www.zretc.com!

更多>

推荐阅读

更多

中软卓越java培训地址:北京市海淀区科学院南路2号融科资讯中心C座北楼12层 联系电话:400-666-3775 邮箱账号:etc-marketing@chinasofti.com

©2008-2016 北京中软国际教育科技股份有限公司 京ICP备14058756号-2