学完javase后学什么语言培训哪里学比较放心?

Java培训学校哪里好_百度知道
Java培训学校哪里好
我有更好的答案
锻炼初步的设计能力.2、芯学苑培训,就业支持,在短时间内就达到了初级水平。一、关于自学需要掌握的知识有、坦克大战单机版/图片版/网络版这三个项目通过大家喜闻乐见的小游戏的形式来锻炼大家对于JavaSE综合运用的能力、Hibernate4.xHibernate基本开发流程; ORM简介; 模拟SQL语句的自动生成; hibernate的检索; 性能优化 一级缓存 二级缓存 查询缓存 事务与并发悲观锁、乐观锁3.6、Spring4.x简单工厂模式 ;抽象工厂; 工厂方法模式; Spring3简介; Spring的基本开发流程; IOC、DI; Bean的配置;SSH框架的整合;Spring的注解开发; Spring AOP开发 代理模式 静态代理、动态代理、CGLIB;3.7、MybatisMybatis简介; Mybatis的开发流程; 配置文件 ;映射文件; 面向接口的Mybatis开发;3.8、手工编写实战开发 struts2.x框架亲自动手开发struts2.x框架,融入设计模式,让大家的对struts的核心机制烂熟于胸!3.9、手工编写实战开发 Hibernate4.x框架芯学苑名师亲自带领你开发hibernate框架,让你真正将ORM框架理解透彻!3.10、手工编写实战开发mybatis框架完成另一个ORM框架mybatis的开发工作!3.11、手工编写实战开发 Spring 4.x框架Spring是最著名的框架之一!也是业界应用范围非常广泛的框架!是否对其核心机制有透彻了解,往往是高薪的关键!因此,芯学苑名师带领你完成spring框架核心机制的开发。当别人还在探讨如何使用spring时,你已经更上层楼!3.12、项目实战《基于struts2+spring+mybatis的电子政务系统》、《基于spring MVC+hibernate的在线考试系统》二、去培训机构要注意的有:现在IT行业的培训机构越来越多,鱼龙混杂,那么,应该如何擦亮眼睛,选择一家货真价值的机构来学习呢?如果你是刚毕业的大学生,或者已经在社会上工作过的有志之士,想在软件行业道路上发展,最重要的是你要有技术。现在,企业需求的是有IT技术的人才最吃香,如果你没有技术,是不是应该与时俱进努力学习新时代所需求的知识呢?那你就需要提升一下自身的综合实力和竞争力,就是学习技术,技术是在社会竞争中最核心的实力,其次就是自身的综合能力。学技术就要选择靠谱的机构,不能说看到那种广告的宣传,我们要看真正受到实惠的学生,也就是口碑,这是最实在,也是最真实的。西安芯学苑教你几招如何练出火眼金睛:1.需要实地考察,选择适合你的学习方式;2.教学方式:技术必须面对面的传授,有问题及时的解决,拒绝视频教学;3.试听,这个也是考量教学师资的部分;4.口碑:一个培训机构的好坏和学员的口碑宣传也有一定的关系的;5.就业:是不是真的能保障学员就业,而不是直接给学生随意的推送一家就不管事了(谨慎小心选择);6环境:环境可以带给大家愉悦的学习环境(好的氛围才能带动更好的学习),遇到问题各位找、线程的运用等方面的能力; JavaScript 语言;JS常用模版;Struts2的验证框架; Struts2的多模块配置。1; F JS操作CSS; JS操作DOM; CSS &amp.5、AJAX技术AJAX技术基础; AJAX技术框架; AJAX技术调试技巧;2.13、项目实战《基于servlet/JSP技术的电子商务网站》、《基于AJax和Jquery的BBS论坛系统》、《基于Apache CommonsFileUpload的网络硬盘系统》三.1; HTML + CSS + JS; JSP + Servlet + JavaB FileUploading、链表等常用数据结构实战1.3、正则表达式正则表达式基本语法;CAST技术(XML数据和对象互转);2.12;Jquery使用插件;2.6、Http协议深入使用HttpWatcher深入理解协议内部机制;2.7、JSTL标签库JSTL核心标签库;Firefox和firebug调试技术;数据备份与移植,并且能够初步运用面向对象的编程理念、SpringMVCspringmvc概述; springmvc的开发流程;springmvc基本配置; springmvc的注解开发; 常用注解;service,control,FileUploading、JDBC技术JDBC基础; 连接池技术;XML数据解析.6、主流框架技术及项目实战3.1、流行Web 框架简介Struts2/spring4.x/hibernate4; 报表系统、JSTL格式化标签库,JSTL之XML解析标签库、自定义标签技术;2.8、JSP &SVN简介;3; L ServletServlet 技术;JSP 技术; :一、JavaSE基础1.1、J2SEJAVA 开发基础知识 | Eclipse 开发环境 | J2SE 5.0 API | J2SE 8;js基于对象编程;拦截器; JSTL Tag Library 技术; Filter&Listener技术,reques+mapping,responseboby等3;2.10、Java Web实战演练综合运用所学知识、Bootstrap前端css框架,让我们的学生不会美工也能做出漂亮的页面;2.5、JqueryJquery基本技术;使用设计模式开发连接池.0新特性 | 多线程技术 | Socket 网络技术|Regular Expression | Java反射技术 | Properties技术 | 各种实战设计模式| Java Debug技术 |面向对象设计原则详解 | 实例解决面向对象设计 | 面试题内部详解 | 面试答题技巧详解 | AWT/SWING技术1;多表连接难题详解;嵌入式数据库应用,费时费力2.x/spring mvc / WebWork /mybatis等简介3;触发器.3;action类的三种实现方法; XML配置的几种方法; Struts2国际化支持; Struts2异常处理,JSTL函数标签库;数据库表的设计范式.4不知道你在哪里如果你想学习Java编程,有两个方面建议:一是自学;详细扩展与测试池效率;2.3、HTML4 &amp。二;2;servlet监听器;2.9、SCM技术CVS初步、Java Web开发2.xStruts2的基本开发流程、Struts2;ECMAS JS操作DIV:需要自己的搜集资料学习。 JAVA操作正则表达式Matcher/Pattern1.4、反射机制JAVA的动态性;2;后台管理模版; DOM.2.4; JavaScriptHTML 语言;CSS 语言、实战数据结构数据结构实战训练 | 数组、MVC 模式Model View Controller 模式深入3,二是去培训机构1、自学、存储过程;MySQL,SQLServer简介;业界常见问题设计、Reflection技术、JVM类加载器、Class对象、Method等。1.5、CHAT项目Chat项目通过完成一个模拟的在线聊天系统,主要锻炼大家对于TCP/IP;数据校验; MVC初步、数据库技术Oracle 基础管理;SQL 语言PL/SQL语言、Socket编程、C/S模式的编程;2,并基本掌握多线程的编程; Tomcat 服务器技术:学习系统规划学习时间,课程安排; XML应用详解;XQUERY技术.11、XML 技术XML + XSL + DTD/Schema.2、断言、分组; 分页技术;servlet 过滤器和AOP编程。预搜索
采纳率:81%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。学Java编程语言培训班和学习方法哪个更重要?
  学Java编程语言培训班和学习方法哪个更重要?
  互联网发展了,IT行业带动了各个行业,传统企业也不在保守了,纷纷走向互联网,趁机捞取一桶金,Java编程语言作为IT软件开发行业的重要技术之一,Java编程开发工程师需求的剧增使得人才市场出现大量缺口,由此可见,Java编程工程师的就业行情非常好,2018年将继续火爆。如今人们的眼光越来越犀利,只有真正过硬的技术才能让人信服。如今,北京的Java培训学校也有不少,让人眼花缭乱,想要选择一个最适合自己的学校并不容易,那么如何选择Java培训学校呢?
  大家学习Java编程语言,目的自然是期望能够立足于这一行业,找到一个好工作,那么就业服务也就成为了挑选Java培训机构的一项重要指标。为了让学员们能够高质量就业,很多专业的Java培训机构都建立了就业推荐机制,这也是学员选择Java培训机构的一个选择标准!
  实地的去考察一下,观察培训机构的学习环境、教学设施、生活环境等,尽量让自己在学习的过程中无后顾之忧,全身心投入学习中。
  不要一味的贪便宜或者盲目跟风,建议大家先从网上了解你想学习的课程,多找几家学校多做对比,网上查询相关培训机构的信息,了解清楚学校的培训方向,是否是可以值得信赖的Java编程技术人才的机构。
  去学校进行免费试听,看老师的讲课方式及内容自己能否接受,找到真正适合自己的学习,适合自己是最重要的;同时也可以真正了解老师的教学水平,这与未来就业紧密相连。学习一门技术,自然少不了专业讲师的引导。在选择Java培训机构时,一定要从教师的授课资质,讲课经验,项目开发经验,从业经历等方面来判断该机构的师资力量。可以亲自试听一番,准确判断自己是否适合这里的Java编程语言学习氛围。
  建议选择面授教学,面授教学互动性更强,指导性也更高,你更容易学到知识。
  在这里为大家推荐动力节点Java培训机构,动力节点近多年专攻Java技术,具备比较成熟的教学方法,有经验实力的Java培训培训出来的学生更能受用人单位的认可。已经有大量的学员通过Java培训成功进入了IT名企,毕业学员平均薪资已在1万元左右,期待高薪吗?来动力节点,你就是下一个高薪金领,即使你是零基础也能学到Java技能。通过大量全真企业项目,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!关注(微信公众号:动力节点Java学院)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。学习java是自学还是上Java培训班好?_百度知道
该问题可能描述不清,建议你
学习java是自学还是上Java培训班好?
我有更好的答案
培训班会更好吧,老师同学间可以交流,还能参与项目实践,自学必须自律、有时间、坚持,要不会很枯燥,最课程建议
java往往是靠自己在大学教育之外学习的实践技能。目前,又显得太快。这是个比较靠谱的学习方式,大部分人都能成功结业,学好了java会很简单,通过视频学习应学会慢慢的培养自己独立思考的能力,貌似都可以成功,同时对特定的知识点可以重点重复看,重复做思考,这种学习方式类似与跟人做技术沟通,上&#92,还有就在通过自己一段的学习后,自我感觉良好,从最基础的东西开始教,然后带着你不断做项目,c++基础的话;,那个挺贵的,一般都上万的学费。  还有,如果有C语言,对于JAVA技术类电脑编程语言的学习方式选择,主要有上Java培训班进行课堂学习和通过视频自学方式学习JAVA语言两种,可在应聘或实际应用中确发现自己一问三不知的情况,一个是学生比较多,周期和学习的课比较固定,对于有些学习效率高的人来说,可能进度有些慢,对学习比较慢的人:  上培训班进行的好处是少走弯路,跟着班走。  每个人肯定是基于自己观察的情况给出的,条条大路通罗马。至于是自学还是上培训机构。但,有学习环境和氛围,有同学可以交流,也有老师指导。但缺点在于,还有一点就是学习时间会更长一些、C++,学完过后比较容易\。关键看你自己更适合哪一个了,无法有更深的体会和把握,不过其各有优点缺点,其优点在于,缺少老师指点,对于不会的和重要的知识点,不可能满足每一个人的需求。同时,学四五个月。 原文链接。  如果选择视频\的方式,相对来说可以减少记忆压力,我们先看一下这二种JAVA语言学习方式,要有时间想。最关键之处是不能自律,学着学着就放弃了;班往往也有一些弊处,\的收费都挺高的。  有经济基础的话可以考虑去&#92 现在想从事Java编程的人越来越多
本回答被提问者采纳
时间多,不着急就业,可以考虑自学如果着急转行成功找工作,培训是一个非常快捷的方式。先自学,看看自己是否真的有兴趣,然后选择适合自己的培训班。
自己有基础,先自学,不花钱能学好,干嘛还要花钱去培训呢。逻辑思维 数学 英语 你对java印象反感不,自己自学能力 时间 学习安排。java课程网上都有,你先学java基础 基础打牢 学 sql数据库 框架 等 每个阶段都要自己做小项目,练习,如果你自学好,完全比得上培训,而且还剩很大一部分钱。你要是自学很多不同,又理解不透,那就去培训机构,毕竟有老师教,学的快,要实地考察,能听懂,讲得好,环境好,暑假有空调,课程新,出来能直接上班,而不是老旧课程,企业5年前都不用的技术在教。一定要对比第一。实地考察,看学习环境,看机构的资深讲师讲学水平怎么样。看学习环境怎么样,学费贵不贵,就业率怎么样,等等你需要实地考察。第二。不要去一直看视频的地方去学习。看视频是最Low的方式,很慢,很低效。第三。不要去没有项目实践的培训机构去学习。什么叫做项目实践,不是拿项目去练手,而是去做一个真正的项目,真正能上线的东西,。就业签订入职协议,是否有真实项目或者像众恒peixun本身就是开发的。第四。不要去不管你的个人能力,不管你的个人基础,只告诉你毕业之后前景很好的培训机构去学习。本身对你需要有个测试,看你是否适合java。第五。不要去进了官网满屏都是老师的QQ在闪的培训机构去学习,这些人早就被猪油蒙了眼。第六, 你更需要关心你能学什么,去看一下,记得不要带钱,只看,最后,人需要有自学能力,更需要没事动手做项目实践,不过众恒目前1W多学费,本身做开发的。
这个要看自己,个人感觉培训班收费比较贵,而且有的老师并不行,很多都是自己才刚学完出去工作没多久,又被学校聘回来当老师,选择培训班一定要慎重。如果自学能力强的话,可以选择在网上听课程。各有个的好处,适合自己的就是最好的。另外在培训班会有同学互帮互助
自学还是上培训班很多人都在问这个问题,这个决定完全在于你自己。你的自学能力和你的耐心怎么样?Java也不是一个很简单的语言,在没有人教的情况下必定会遇到很多难点,对很多名词不理解。自学需要的时间也要很长,要有足够耐心。如果是培训的话,老师会给你一些案例来帮你理解。老师也会带你少走很多的弯路,避过一些坑。从经验方面考虑,自学可能缺少一些实战经验,毕竟学的都是一些理论知识。培训的话有项目实战的课程,为你进入企业打下基础。就业方面,自学的话去就找工作,可能会有一点难度。培训机构现在都有一些自己的合作企业,只要平常好好学,毕业进名企也不是不可能的。我只能给你这么多建议了。光环Java在业内做的是非常不错的,有兴趣可以去考察一下。
有一定的自学能力和自控能力,有一套完整的教程资料,熟练使用stackoverflower,segmentfault等站点解决技术性的问题,自学起来难度不会太大。反之,自学能力和自控能力弱一些,容易受环境影响,还是报个培训班学习吧,身边的同学都在努力学习,也可以带动自己的学习热情。投入时间和精力,以兴趣来驱动学习。不管是视频学习还是看书学习,在整个的学习过程中贯穿着代码实战。看的代码是别人的,动手写出来的是自己的。自己动手写代码,记忆更加深刻,效率更高。分阶段的进行学习:1、看视频(零掌握,系统的学习和了解),2、看书(对编程有了一定的掌握,作为补充和提高),3、看博客帖子(取长补短)。
其他14条回答
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。成为Java开发高手在哪里学习比较好
Java从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多媒体()相关产品类方面。Java为何有如此这么大的魅力?有人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计算机(PC)的关系。
1.Java何时开始发展?
最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品( Electronics),所使用的语言是C、C++、及Oak (为Java语言的前身),后因语言本身和市场的问题,使得消费性电子产品的发展无法达到当初预期的目标,再加上网络的兴起,绿色计划也因此而改变发展的方向,这已是1994 年了。
高效能的(High Performance):Java位元码迅速地能被转换成机器码(Machine Code),从位元码转换到机器码的效能几乎与C与C++没有分别。多线程的(Multi threaded):Java语言具有多线程的功能,这对于交互回应能力及即时执行行为是有帮助的。动态的(Dynamic):Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。
2. "Java语言容易学习和使用,不像C、C++和其它程序语言"
Java是一种编程语言。Java容易学吗?Java或许是比C或C++容易学,但仍是一种编程语言,而不是一种描述语言。
3. "Java码是可移植的,但C及C++不是"
Java原代码(Source Code)是比C语言来得可移植一点,差别在于Java的目标码。Java码在一种机器上进行编译,而能在所有的机器上执行,只要那部机器上有Java解释器。
4. "Java能被拓展而在机器上执行任何事情"
理论上,Java Applet (Java小应用程序)能做任何事情,如模拟3D VRML模型、播放电影、产生音频....等。但事实上,一个小应用程序(Applet)仅能在那一页上被执行,而无法在那一页之外执行。同时,Java亦受限于程序库的功能。
5. "Java是适合于建立大型的应用程序"
如果Java适合于大型程序,则Java就不适合应用于Web浏览器了。第一个商业性的Java Applets (Applix's Java-Based Spreadsheet) 并不是全然使用Java,它只使用Java作为用户接口,而所有的处理工作,是用CGI码。
达内多模式的教学方法、优质的教育产品和规范化的教学管理让学员成为专业型、实用型人才。按达内的品牌服务要求、实施教学场所全新理念,我们以一流的设备、一流的环境、一流的服务,迎接你的到来,欢迎你们----21世纪的网络精英!
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
0基础120天精通编程语言,Adobe公司官方指定UI培训机构,0元试学!
达内电脑培训班,先就业后付款,美国上市培训机构,名师授课,学会只需四个月!
今日搜狐热点位置:北京多迪教育& &
java培训学校哪家好
为什么程序员独爱Java?
JAVA ADVANTAGE
与平台无关与平台无关是Java语言最大的优势。其它语言编写的程序面临的一个主要问题是操作系统的变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。Java的虚拟机成功地解决了这个问题,Java编写的程序可以在任何安装了Java虚拟机JVM的计算机上正确的运行,Sun公司实现了自己的目标&一次写成,处处运行&。
抢鲜免费体验七天!
请选择城市北京上海成都杭州广州长沙重庆石家庄武汉深圳太原昆明南昌西安青岛郑州南宁
苦学16周,开启人生逆袭之旅
科学的职业生涯晋升规划,你每一次阶段性的进步都会得到相应的汇报!
百单网项目实战四个月,量身定制的实战项目,&
业精于勤荒于嬉,通过百单网接单,阶段项目实战源源不断,精细讲解+实战强化
到多迪学JAVA,七大细微贴心服务
七大贴心服务,多迪教育只为确保学员轻松无忧学习!
多迪本着&以人为本&的教育情怀,为了确保学员能够轻松无忧学习,
多迪教育从学习、生活、就业等多方面入手,多举措并施,
为学员提供七大贴心服务,确保所有学员都能轻松无忧地学习!
品质创新,多迪教育八大特色优势
多迪教育一直致力于IT教育创新,15年专注提高教学品质,使我们在人才培养模式上紧跟行业需求。
不断升级课程体系,在教学服务与管理上不断突破,形成以人为本,专业创新的多迪情怀教育。
举办多迪杯,开展国际合作,研发科技教学产品等,用先进理念打造专业、创新、综合素质高的人才,成就更具教育情怀的培训品牌!
多迪教育线下整合实训公司人才资源及网络公司企业资源,线上运营&无忧网才&求职招聘网站,充分发挥线上线下的独家优势,打造中国互联网人才求职招聘第一平台,长期为国内各大互联网的用人企业提供人才推荐服务、猎头服务、人才外派服务及网站会员套餐服务,并为多迪教育实训生提供终生高薪就业服务。
第一阶段:web前端课程
java课程易学习,门槛低,不看工作经验,
适合对未来职业发展有梦想、肯努力、够踏实有志靴子,0基础、18周岁,梦想从多迪起航!
纽曼项目&PS入门
HTML标签及规范
HTML标签、CSS基础
CSS浮动布局&盒模型
纽曼官网实现
CSS定位布局
jQuery基础
jQuery动画及事件
jQuery实战
jQuery插件
CSS3新特性学习
纽曼移动端微官网实战
CSS3基础属性
第二阶段: Java初级
&Java语法基础
Java面向对象
Java常用API
Java高级API,泛型,异常
Java语法基础
Java多线程
Java网络编程
WEB开发基础
WEB开发基础与数据库
结合掌握的知识完善项目
项目总结和高效开发技能
第三阶段:Java中级
项目演示&MySQL深入介绍
MySQL数据库进阶
MySQL数据库设计
JDBC深入介绍
JDBC深入介绍和HTTP协议
Servlet进阶
JSP介绍XML和JSON
SpringMVC框架
Freemarker框架
Mybatis3框架
后台功能实现
前端功能实现
集成支付宝el
第四阶段: Java高级
知彼-初探篇
利器-工具使用篇
修炼-内功篇
实战-框架搭建
实战-系统说明
实战-用户管理
实战-机构管理
实战-区域管理、菜单管理、角色管理
实战-字典管理、操作日志、连接池
工作流引擎1、2、3
Nginx、redis
Jenkins、shiro
实战型Java大牛,所有经验倾囊相授
多迪教育不惜重金打造豪华教育团队,他们比你更清楚你需要学什么才能赢得大企业的青睐!
Java高级讲师--张圣
近10年IT从业经验,担任过高级Java开发工程师以及Java高级讲师 ,曾参加和主导过多个大型商业项目,精通Javase,servlet,jsp,struts、Hibernate、spring,springmvc,mybatis等J2EE架构体系设计和开发。
Java高级讲师--沈侯瑞
后端开发出身,基础扎实,深入原理。具有多年Java项目开发经验,对JavaEE技术体系结构、JavaWeb原理有深刻理解,精通多种主流框架;精通Oracle, MySQL, SQL server等关系型数据库;精通Android,HTML5,JavaScript、C#、C/C++等多种开发语言。
Java总监级讲师--张建
精通JavaOOP编程以及SSM,SSH等J2EE架构体系设计和开发,对html5、css3、js、ExtJS、EasyUI、Bootstrap等JavaWeb开发技术有深入研究,熟悉NIO,Netty,Dubbo,Restful等技术并深入了解Linux系统。
真实市场就业数据 震撼你的小心脏
Java革命开启,各行各业应用广泛,未来10年就业前景巨大,掌握热门语言,开启互联网&薪&时代
Java本身就可以用来编写游戏脚本,目前也有例如beanshellgroovy等脚本语言可以方便的无缝的和Java语言进行交互,这些都极大的方便了Java游戏编程。国内游戏专业人才的需求一直存在缺口。目前国内游戏企业的大多数从业人员往往没有受过专业化培训,属于自学成才,远远不能适应玩家的游戏理念和游戏技能的升级换代。
应用领域广泛 就业口径宽广
OPPORTUNITIES(机会)
多迪教育就业服务完善,学员技术过硬
30000多家雇主企业喊你来上班!
多迪教育与30000多家企业联合共建,定向输出Java高端人才;每月有专场招聘会、就业指导和就业推荐等一站式完善的就业服务。
舒适的教学环境 多迪教育给你全方位安心保障
多迪教学大楼,Hold住你的挑剔。多迪教育在全国一二线城市拥有29家校区,
校区环境优雅舒适,确保学员能在一个静谧舒适的环境中全身心投入到学习中!
详情请进入
查看,文章来源:
开班时间: 滚动开班
课程费用:咨询
咨询电话: 咨询QQ:
介绍前,先说下背景。在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(其核心就是绑定mousemove),这种事件有一个特点,就是用户不必特地捣乱,他在一个正常的操作中,都有可能在一个短的时间内触发非常多次事件绑定程序。而大家知道,DOM操作时很消耗性能的,这个时候,如果你为这些事件绑定一些操作DOM节点的操作的话,那就会引发大量的计算,在用户看来,页面可能就一时间没有响应,这个页面一下子变卡了变慢了。甚至在IE下,如果你绑定的resize事件进行较多DOM操作,其高频率可能直接就使得浏览器崩溃。
怎么解决?函数节流就是一种办法。话说第一次接触函数节流(throttle),还是在看impress源代码的时候,impress在播放的时候,如果窗口大小发生改变(resize),它会对整体进行缩放(scale),使得每一帧都完整显示在屏幕上:
稍微留心,你会发现,当你改变窗体大小的时候,不管你怎么拉,怎么拽,都没有立刻生效,而是在你改变完大小后的一会儿,它的内容才进行缩放适应。看了源代码,它用的就是函数节流的方法。
函数节流,简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过了你规定的时间间隔,才能进行下一次该函数的调用。以impress上面的例子讲,就是让缩放内容的操作在你不断改变窗口大小的时候不会执行,只有你停下来一会儿,才会开始执行。
函数节流的原理挺简单的,估计大家都想到了,那就是定时器。当我触发一个时间时,先setTimout让这个事件延迟一会再执行,如果在这个时间间隔内又触发了事件,那我们就clear掉原来的定时器,再setTimeout一个新的定时器延迟一会执行,就这样。
明白了原理,那就可以在代码里用上了,但每次都要手动去新建清除定时器毕竟麻烦,于是需要封装。在《JavaScript高级程序设计》一书有介绍函数节流,里面封装了这样一个函数节流函数:
它把定时器ID存为函数的一个属性(==个人的世界观不喜欢这种写法)。而调用的时候就直接写
这样两次函数调用之间至少间隔100ms。
而impress用的是另一个封装函数:
它使用闭包的方法形成一个私有的作用域来存放定时器变量timer。而调用方法为
两种方法各有优劣,前一个封装函数的优势在把上下文变量当做函数参数,直接可以定制执行函数的this变量;后一个函数优势在于把延迟时间当做变量(当然,前一个函数很容易做这个拓展),而且个人觉得使用闭包代码结构会更优,且易于拓展定制其他私有变量,缺点就是虽然使用apply把调用throttle时的this上下文传给执行函数,但毕竟不够灵活。
接下来就讨论怎么更好地封装?这多没意思啊,接下来讨论下怎样拓展深化函数节流。
函数节流让一个函数只有在你不断触发后停下来歇会才开始执行,中间你操作得太快它直接无视你。这样做就有点太绝了。resize一般还好,但假如你写一个拖拽元素位置的程序,然后直接使用函数节流,那恭喜你,你会发现你拖动时元素是不动的,你拖完了,它直接闪到终点去。
其实函数节流的出发点,就是让一个函数不要执行得太频繁,减少一些过快的调用来节流。当你改变浏览器大小,浏览器触发resize事件的时间间隔是多少?我不清楚,个人猜测是16ms(每秒64次),反正跟mousemove一样非常太频繁,一个很小的时间段内必定执行,这是浏览器设好的,你无法直接改。而真正的节流应该是在可接受的范围内尽量延长这个调用时间,也就是我们自己控制这个执行频率,让函数减少调用以达到减少计算、提升性能的目的。假如原来是16ms执行一次,我们如果发现resize时每50ms一次也可以接受,那肯定用50ms做时间间隔好一点。
而上面介绍的函数节流,它这个频率就不是50ms之类的,它就是无穷大,只要你能不间断resize,刷个几年它也一次都不执行处理函数。我们可以对上面的节流函数做拓展:
在这个拓展后的节流函数升级版,我们可以设置第三个参数,即必然触发执行的时间间隔。如果用下面的方法调用
则意味着,50ms的间隔内连续触发的调用,后一个调用会把前一个调用的等待处理掉,但每隔100ms至少执行一次。原理也很简单,打时间tag,一开始记录第一次调用的时间戳,然后每次调用函数都去拿最新的时间跟记录时间比,超出给定的时间就执行一次,更新记录时间。
狠击这里查看测试页面
到现在为止呢,当我们在开发中遇到类似的问题,一个函数可能非常频繁地调用,我们有了几个选择:一呢,还是用原来的写法,频繁执行就频繁执行吧,哥的电脑好;二是用原始的函数节流;三则是用函数节流升级版。不是说第一种就不好,这要看实际项目的要求,有些就是对实时性要求高。而如果要求没那么苛刻,我们可以视具体情况使用第二种或第三种方法,理论上第二种方法执行的函数调用最少,性能应该节省最多,而第三种方法则更加地灵活,你可以在性能与体验上探索一个平衡点。
(原谅我,写得有点长==,文章主体还剩最后这一节。)
我们经常说我优化了代码了,现在的代码更高效了,但貌似很少有人去测试,性能是否真的提升了,提升了多少。当然,前端性能测试的不完善、不够体系化也是原因之一,但我们也要有一种严谨的态度。上面介绍了三种方法,理论上来说呢,第一种方法执行的运算最多,性能理应最差(运算过多过频,内存、cpu占用高,页面变卡),而第二种应该是性能最好,第三种就是一种居中的方案。
为了给读者一个更确切的分析,于是我对三种方法做了一次蛋疼的性能测试。。。我选择的是拖拽一个页面元素位置的应用场景,为了让性能优化更明显一点,拖拽的是一个iframe,iframe里面加载的是腾讯首页(一般门户网站的首页都够重量级的),这样在拖拽的过程中会不断触发浏览器的重绘。至于怎么看性能,我打开的是chrome的调试面板的时间线标签,里面有memory监视。对于性能的评价标准,我选的是内存占用。
于是长达两三个小时的性能测试开始了。。。
很快我就发现,chrome的性能优化得太好了,我的第一种测试方案三种方法之间有性能差异,但这个差异实在不明显,而且每一轮的测试都有波动,而且每次测试还很难保证测试的背景条件(如开始时的内存占用情况),第一组测试结果如下:
第一种方法:
第二种方法:
第三种方法:
可以发现,这些小差异很难判定哪种方法更好。
于是有了新一轮测试。不够重量化?好吧,我每次mousemove的处理函数中,都触发iframe的重新加载;测试数据有瞬时波动?这次我一个测试测60秒,看一分钟的总体情况;测试条件不够统一?我规定在60秒里面mouse up 6次,其他时间各种move。
于是有了第二组图片(其实做了很多组图片,这里只选出比较有代表性的一组,其他几组类似)
第一种方法:
第二种方法:
第三种方法:
看错了?我一开始也这么认为,但测试了几次都发现,第一种方法正如预料中的占资源,第二种方法竟然不是理论上的性能最优,最优的是第三种方法!
仔细分析。第一种方法由于不断地mousemove,不断更新位置的同时重新加载iframe的内容,所以内存占用不断增加。第二种方法,即原始的函数节流,可以从截图看出内存占用有多处平坦区域,这是因为在mousemove的过程中,由于时间间隔短,不触发处理函数,所以内存也就有一段平滑期,几乎没有增长,但在mouseup的时候就出现小高峰。第三种方法呢,由于代码写了每200ms必须执行一次,于是就有很明显的高峰周期。
为什么第三种方法会比第二种方法占用内存更小呢?个人认为,这跟内存回收有关,有可能chrmoe在这方面真的优化得太多(。。。)。不断地每隔一个小时间段地新建定时器,使得内存一直得不到释放。而使用第三种方法,从代码结构可以看出,当到了指定的mustRunDelay必须执行处理函数的时候,是不执行新建定时器的,即是说在立即执行之后,有那么一小段时间空隙,定时器是被clear的,只有在下一次进入函数的时候才会重新设置。而chrome呢,就趁这段时间间隙回收垃圾,于是每一个小高峰后面都有一段瞬时的“下坡”。
当然,这只是我的推测,期待读者有更独到的看法。
重度测试页面(个人测试的时候是没有切换器的,每次代码选了一种模式,然后就关闭浏览器,重新打开页面来测试,以保证运行时不受到别的模式的影响。这里提供的测试页面仅供参考)
(这是后语,不算正文的小节)
上面就是我对函数节流的认识和探索了,时间有限,探索得不够深也写得不够好。个人建议,在实际项目开发中,如果要用到函数节流来优化代码的话,函数节流升级版更加地灵活,且在一些情况下内存占用具有明显的优势(我只试了chrome,只试了两三个钟,不敢妄言)。
最后我们可以整合了第二、三种方法,封装成一个函数,其实第二种方法也就是第三种方法的特例而已。还可以以hash对象封装参数:执行函数、上下文、延迟、必须执行的时间间隔。这比较简单就不在这里贴出来了。
校区分布Related schools
师资介绍|教学环境|学员评论
教学点: 1个
教学点: 1个
教学点: 1个
教学点: 1个

我要回帖

更多关于 javase要学多久 的文章

 

随机推荐