小卒子灬 里昂李维斯
关注数: 14 粉丝数: 683 发帖数: 1,942 关注贴吧数: 81
html5都有哪些优势? 从HTML4.0、XHTML到HTML5,从某种意义上讲,这是HTML描述性标记语言的一种更加规范的过程。因此,HTML5并没有给开发者带来多大的冲击。但HTML5增加了很多非常实用的新功能和新特性,下面具体介绍HTML5的一些优势。 1、 解决了跨浏览器问题 在HTML5之前,各大浏览器厂商为了争夺市场占有率,会在各自的浏览器中增加各种各样的功能,并且不具有统一的标准。使用不同的浏览器,常常看到不同的页面效果。在HTML5中,纳入了所有合理的扩展功能,具备良好的跨平台性能。针对不支持新标签的老式IE浏览器,只需简单地添加JavaScript代码就可以使用新的元素。 2、新增了多个新特性 HTML语言从1.0到5.0经历了巨大的变化,从单一的文本显示功能到图文并茂的多媒体显示功能,许多特性经过多年的完善,已经发展成为一种非常重要的标记语言。HTML5新增的特性如下。 ● 新的特殊内容元素,比如header、nav、section、article、footer。 ● 新的表单控件,比如calendar、date、time、email、url、search。 ● 用于绘画的canvas元素。 ● 用于媒介回放的video和audio元素。 ● 对本地离线存储的更好支持。 ● 地理位置、拖曳、摄像头等API。 3.用户优先的原则 HTML5标准的制定是以用户优先为原则的,一旦遇到无法解决的冲突时,规范会把用户放在第一位。另外,为了增强HTML5的使用体验,还加强了以下两方面的设计。 ● 安全机制的设计 为确保HTML5的安全,在设计HTML5时做了很多针对安全的设计。HTML5引入了一种新的基于来源的安全模型,该模型不仅易用,而且对不同的API(Application Programming Interface,应用程序编程接口)都通用。使用这个安全模型,不需要借助于任何不安全的hack就能跨域进行安全对话。 ● 表现和内容分离 表现和内容分离是HTML5设计中的另一个重要内容。实际上,表现和内容的分离早在HTML4.0中就有设计,但是分离的并不彻底。为了避免可访问性差、代码高复杂度、文件过大等问题,HTML5规范中更细致、清晰地分离了表现和内容。但是考虑到HTML5的兼容性问题,一些陈旧的表现和内容的代码还是可以兼容使用的。 4.化繁为简的优势 作为当下流行的通用标记语言,HTML5尽可能地简化,严格遵循了“简单至上”的原则,主要体现在这几个方面: ● 新的简化的字符集声明; ● 新的简化的DOCTYPE; ● 简单而强大的HTML5 API; ● 以浏览器原生能力替代复杂的JavaScript代码。 为了实现这些简化操作,HTML5规范需要比以前更加细致、精确。为了避免造成误解,HTML5对每一个细节都有着非常明确的规范说明,不允许有任何的歧义和模糊出现。
对于自学人员的几点建议,希望大家可以借鉴借鉴。 1、制定一个系统的学习计划。HTML5虽然难度不大,但是内容却比较多,在学习的过程中要循序渐进,一个比较常见的计划就是依次学习HTML5、CSS和JavaScript,JavaScript是学习的一个重点。一个好的学习计划,能够让自己在学习的时候更加专注,每完成一天的任务,都会有一种成就感,久而久之,对于编程语言的学习就会更有兴趣和动力。而且一个良好的学习计划,会让自己的效率提高不少。 2、实战编写能力是重中之重。实践是学习HTML5的重要环节,由于HTML5的细节比较多,要想详细的掌握这些内容一定是通过自己不断写代码来加深印象和查缺补漏的。切记编程语言是一门技术,如果没有大量的实践练习,是很难将HTML5中的知识点掌握的,如果了解了各个知识点的内容而不去练习,不用多久就会将这些知识点给忘记,到时候再去返工复习,平白会浪费不少自己的宝贵时间和精力。 3、技术想要进步,交流是很关键的一种途径。交流的方式也有很多种,不一定是要和同行们通过聊天工具才算是交流。现在因为互联网的发展和进步,我们能够在各个搜索引擎上找到我们想要的知识点,这些知识点就是这个行业的前辈们,将他们的学习思维或是工作时编写程序的技巧等分享给我们。现在前端开发的技术更新速度还是比较快的,几乎每隔一段时间就会有新的框架,我们如果不去和其他人交流,只是闭门造车的话,进步只会越来越慢,甚至还会退步。
HTML5能替代flash吗? 从长远来看,HTML5会挤占Flash大部分的市场,但Flash主要是在游戏开发方面还是会有一块生存空间。 功能上:现代浏览器正在迅速地拓展javascript的应用范围: 原生的视频/音频API,2D绘图有Canvas,3D有WebGL,即时通信有WebSockets,还有Local Storage。正在讨论并有可能会在将来加入标准的API还有Geolocation(地理位置),File API(更强大的上/下传),WebStorage(加强版cookie),甚至还有本地文件处理能力等。Flash现阶段在功能已经没有太大优势可言,作为流媒体解决方案暂时还有一席之地,但浏览器原生API普及之后被取代是迟早的事情。在数据存储和本地操作方面,由于是一个插件,更是受到各种安全性的制约。 (这里基于web,不讨论Air) 性能上:曾经Flash在整体性能上具有明显优势,AS3是编译语言,在虚拟机上运行效率比当年的javascript要快很多。但是现在各大浏览器都注重了javascript引擎的优化,尤其是Chrome的V8,单纯在代码运行的效率上已经和AS3并驾齐驱。但是在2D动画上,Flash的优势依然明显,即使是在Chrome上,平均fps依然要比canvas高出一截。另外Flash本身的IDE对矢量图的支持也是Canvas所不具备的。从这一点来看,Flash在依赖大量2D图像的游戏上仍然保持着绝对优势。3D方面,Flash Player通过Molehill API获得了GPU支持,而WebGL也是直接调用GPU的,性能上没有太大差别,主要是开发上API和第三方3D引擎的比较,这方面Flash显然更为成熟,但js正迎头赶上。 语言上:AS3本身是从ECMAScript(也就是javascript的ISO标准的正式名称)拓展出来的,但是提供了更完善的类型支持,风格上变得更接近于java,在复杂的OO项目上要比js更容易管理。Javascript本身是一个很独特的语言,兼具OOP, imperative和functional的风格,但是对类型的支持很弱(prototype-based),这使得用js开发复杂的项目比较麻烦,但是近来随着js的升温,各种针对js的design pattern和模块化js库相继出现,借助它们也可以有效的加强js代码的结构性。另外需要指出的是js现在的应用范围已经远远超越了浏览器内部,Node.js提供了一个基于V8引擎的js运行环境,使得js可以用来作为服务器语言,也可以用来写各种命令行工具。其他也有如MongoDB就是使用js的数据库。javascript的未来应用前景要比AS3广泛的多。 平台支持上:Flash是嵌入型的,只要能运行,那么在它本身的虚拟机内就不存在兼容性的问题,只存在版本的问题;而Flash Player的版本更新adopt rate向来是非常高的。这一点上对开发者而言少了很多麻烦。HTML5最令人头痛的就是参差不齐的浏览器兼容性,这也是现阶段HTML5最大的硬伤。但是HTML5在平台上也有一个明显优势,那就是越来越重要的移动平台上,HTML5的支持情况要好很多很多(iOS支持几乎所有的HTML5 API和CSS3属性,而大多数移动浏览器都是HTML5支持良好的webkit内核),相比之下Flash在iOS上直接出局,也是一个硬伤。从长远来看,HTML5还是绝对赢家,因为浏览器支持度只会越来越好,而移动平台上Flash已经没有竞争力,Adobe最近已经宣布停止了移动平台上Flash Player的继续开发。 额外一点:在相当多的大型企业内部,都有很多昂贵的内部专用的网络应用,因为开发年代久远,都是针对IE6开发的,一旦不用IE6就要出问题。更新浏览器意味着要替换这些应用,耗费会很大,加上这些企业的管理层不懂技术,往往不愿意这么做。而开发新应用的时候,开发者就必须要针对IE6开发,这就给了Flex应用一个独特的生存空间:在IE6里也可以提供丰富的界面和复杂的功能要求。不过这一点随着时间的推移,迟早也是要不成立的。
简单的来说一下什么是SpringAOP AOP(Aspect Orient Programming),面向切面编程,是面向对象编程 OOP 的一种补充。面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程。 AOP 底层,就是采用动态代理模式实现的。采用了两种代理:JDK 的动态代理,与 CGLIB 的动态代理。 AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 面向切面编程,就是将交叉业务逻辑封装成切面,利用 AOP 容器的功能将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的、与主业务逻辑无关的代码,如安全检查、事务、日志、缓存等。 若不使用 AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使主业务逻辑变的混杂不清。 例如,转账,在真正转账业务逻辑前后,需要权限控制、日志记录、加载事务、结束事务等交叉业务逻辑,而这些业务逻辑与主业务逻辑间并无直接关系。但,它们的代码量所占比重能达到总代码量的一半甚至还多。它们的存在,不仅产生了大量的“冗余”代码,还大大干扰了主业务逻辑---转账。
Spring动态代理你了解吗? 动态代理作用:功能增强和控制访问 JDK动态代理 动态代理是指,程序在整个运行过程中根本就不存在目标类的代理类,目标对象的代理对象只是由代理生成工具(不是真实定义的类)在程序运行时由 JVM 根据反射等机制动态生成的。代理对象与目标对象的代理关系在程序运行时才确立。 对比静态代理,静态代理是指在程序运行前就已经定义好了目标类的代理类。代理类与目标类的代理关系在程序运行之前就确立了。 动态代理的实现方式常用的有两种:使用 JDK 的 Proxy,与通过 CGLIB 生成代理。 Jdk 的动态要求目标对象必须实现接口,这是 java 设计上的要求。 从 jdk1.3 以来,java 语言通过 java.lang.reflect 包提供三个类支持代理模式 Proxy, Method和 InovcationHandler。 ● 通过 JDK 的 java.lang.reflect.Proxy 类实现动态代理,会使用其静态方法 newProxyInstance(),依据目标对象、业务接口及调用处理器三者,自动生成一个动态代理对象。 public static newProxyInstance ( ClassLoaderloader, Class[]interfaces, InvocationHandlerhandler) loader:目标类的类加载器,通过目标对象的反射可获取 interfaces:目标类实现的接口数组,通过目标对象的反射可获取 handler:调用处理器。 ● InvocationHandler 是个接口,其具体介绍如下: 实现了 InvocationHandler 接口的类用于加强目标类的主业务逻辑。这个接口中有一个方法 invoke(),具体加强的代码逻辑就是定义在该方法中的。程序调用主业务逻辑时,会自动调用 invoke()方法。 //Object proxy:代理对象 //Method m :调用的方法 //Object [] args: 调用方法的参数 public Object invoke(Object proxy, Method m, Object[] args) ● Method 类对象,该类有一个方法也叫 invoke(),可以调用目标类的目标方法。 这两个 invoke()方法,虽然同名,但无关。 public Object invoke ( Object obj, Object... args) obj:表示目标对象args:表示目标方法参数,就是其上一层 invoke 方法的第三个参数CGLIB动态代理 CGLIB(Code Generation Library)是一个开源项目。是一个强大的,高性能,高质量的 Code生成类库,它可以在运行期扩展 Java 类与实现 Java 接口。它广泛的被许多 AOP 的框架使用,例如 Spring AOP。 使用 JDK 的 Proxy 实现代理,要求目标类与代理类实现相同的接口。若目标类不存在接口,则无法使用该方式实现。但对于无接口的类,要为其创建动态代理,就要使用 CGLIB来实现。 CGLIB 代理的生成原理是生成目标类的子类,而子类是增强过的,这个子类对象就是代理对象。所以,使用 CGLIB 生成动态代理,要求目标类必须能够被继承,即不能是 final 的类。 CGLIB 经常被应用在框架中,例如 Spring ,Hibernate 等。cglib 的代理效率高于 Jdk。 项目中直接使用动态代理的地方不多。一般都使用框架提供的功能。 ● 导入 jar● 定义目标类 SomeSerivce.java ,有 String doSome()方法 ● 定义调用处理器,实现 MethodInterceptor 接口● 定义代理工厂类,创建代理对象● 定义客户端类
Spring IOC控制反转怎么做?你必须要了解。 控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代 码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的装配和管理。 IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式是依赖 注入。应用广泛。 依赖:classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA 对 classB 有依赖。 IOC的实现 ● 依赖查找:DL ( Dependency Lookup ), 容器提供回调接口和上下文环境给组件。 ● 依赖注入:DI (Dependency Injection),程序代码不做定位查询,这些工作由容器自 行完成。 依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。 Spring的依赖注入对调用者与被调用者几乎没有任何要求,完全支持 POJO 之间依赖关系的管理。 依赖注入是目前最优秀的解耦方式。依赖注入让 Spring 的 Bean 之间以配置文件的方式 组织在一起,而不是以硬编码的方式耦合在一起的。 Spring框架使用依赖注入(DI)实现IoC。 Spring容器是一个超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean。Spring容器管理着容器中Bean之间的依赖关系,Spring使用“依赖注入”的方式来管理Bean之间的依赖关系。使用IoC实现对象之间的解耦和。 开发工具准备 开发工具:idea2017以上 依赖管理:maven3以上 jdk:1.8以上 需要设置maven本机仓库:
Spring IOC控制反转。 控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代 码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的装配和管理。 IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式是依赖 注入。应用广泛。 依赖:classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA 对 classB 有依赖。 IOC的实现 ● 依赖查找:DL ( Dependency Lookup ), 容器提供回调接口和上下文环境给组件。 ● 依赖注入:DI (Dependency Injection),程序代码不做定位查询,这些工作由容器自 行完成。 依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。 Spring的依赖注入对调用者与被调用者几乎没有任何要求,完全支持 POJO 之间依赖关系的管理。 依赖注入是目前最优秀的解耦方式。依赖注入让 Spring 的 Bean 之间以配置文件的方式 组织在一起,而不是以硬编码的方式耦合在一起的。 Spring框架使用依赖注入(DI)实现IoC。 Spring容器是一个超级大工厂,负责创建、管理所有的Java对象,这些Java对象被称为Bean。Spring容器管理着容器中Bean之间的依赖关系,Spring使用“依赖注入”的方式来管理Bean之间的依赖关系。使用IoC实现对象之间的解耦和。 开发工具准备 开发工具:idea2017以上 依赖管理:maven3以上 jdk:1.8以上 需要设置maven本机仓库:
简答的来说说什么是Spring AOP。 AOP(Aspect Orient Programming),面向切面编程,是面向对象编程 OOP 的一种补充。面向对象编程是从静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程。 AOP 底层,就是采用动态代理模式实现的。采用了两种代理:JDK 的动态代理,与 CGLIB 的动态代理。 AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 面向切面编程,就是将交叉业务逻辑封装成切面,利用 AOP 容器的功能将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的、与主业务逻辑无关的代码,如安全检查、事务、日志、缓存等。 若不使用 AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使主业务逻辑变的混杂不清。 例如,转账,在真正转账业务逻辑前后,需要权限控制、日志记录、加载事务、结束事务等交叉业务逻辑,而这些业务逻辑与主业务逻辑间并无直接关系。但,它们的代码量所占比重能达到总代码量的一半甚至还多。它们的存在,不仅产生了大量的“冗余”代码,还大大干扰了主业务逻辑---转账。 AOP编程术语 ● 切面(Aspect) 切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知(Advice)。实际就是对主业务逻辑的一种增强。 ● 织入(Weaving) 织入是指将切面代码插入到目标对象的过程。上例中MyInvocationHandler类中的invoke() 方法完成的工作,就可以称为织入。 ● 连接点(JoinPoint) 连接点指可以被切面织入的具体方法。通常业务接口中的方法均为连接点。 ● 切入点(Pointcut) 切入点指声明的一个或多个连接点的集合。通过切入点指定一组方法。 被标记为 final 的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。 ● 目标对象(Target) 目标对象指将要被增强的对象。即包含主业务逻辑的类的对象。上例中的StudentServiceImpl的对象若被增强,则该类称为目标类,该类对象称为目标对象。当然,不被增强,也就无所谓目标不目标了。 ● 通知(Advice) 通知是切面的一种实现,可以完成简单织入功能(织入功能就是在这里完成的)。上例中的 MyInvocationHandler 就可以理解为是一种通知。换个角度来说,通知定义了增强代码切入到目标代码的时间点,是目标方法执行之前执行,还是之后执行等。通知类型不同,切入时间不同。 切入点定义切入的位置,通知定义切入的时间。
简单的来说一下spring框架有什么优点。 Spring是一个框架,是一个半成品的软件。有20个模块组成。它是一个容器管理对象,容器是装东西的,Spring容器不装文本,数字。装的是对象。Spring是存储对象的容器。 轻量 Spring框架使用的jar都比较小,一般在1M以下或者几百kb。Spring核心功能的所需的jar总共在3M左右。 Spring框架运行占用的资源少,运行效率高。不依赖其他jar。 针对接口编程,解耦合 Spring提供了Ioc控制反转,由容器管理对象,对象的依赖关系。原来在程序代码中的对象创建方式,现在由容器完成。对象之间的依赖解耦合。 AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。 在Spring中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,相反Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、MyBatis)等的直接支持。简化框架的使用。 Spring像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把这个插头放入插线板。不需要可以轻易的移除。 非侵入式 所谓非侵入式是指,Spring框架的 API不会在业务逻辑上出现,由于业务逻辑中没有Spring的 API,所以业务逻辑可以从 Spring框架快速的移植到其他框架,即与环境无关。 容器 Spring作为一个容器,可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件,来定义对象,以及设置与其他对象的依赖关系。
软件开发培训机构那个好?别再踩坑了 要说比较好的软件开发培训机构还是有很多的,但是不好的也是有很多,这就需要大家在选择时擦亮双眼,多选择几家进行比较了,软件开发培训机构的好坏,不能一概而论,需要进行多方面的比较和考察进行选择。1.想要找一个靠谱的软件开发培训机构,首先就必须要查清楚你选择的培训机构是否具有合格办学资质,不具有合格的办学资质的培训机构就不要考虑了,即使他在优惠,说的再好,也是没有用的,具有合格的教学资质对你和培训机构都会有一个很好的保障 2.现在是网络时代,可以到各大网站上搜索一下该机构,看看大家对该机构的评级如何,好的机构不管在哪里肯定都是好评一致,但是如果有的机构,有人说好有人说不好,那你就要慎重了,因为这家机构可能会有一些地方是不靠谱的,所以在选择时要慎重!慎重!再慎重!不要急于选择,要考虑好各方面都适合才是最重要的 3.还要知道机构中的讲师是否专业,俗话说“和优秀的人在一起你也会变得优秀”,有专业的人带你,你也可以变得和他一样,所以说培训机构中具有专业的讲师,是很重要的,这是你在培训机构中学习到专业知识的关键 4.要知道软件开发培训课程是否合理,并且是否与招聘企业的要求高度相似,如果你学习的知识与各大招聘企业所需要的人才要求差很多,那么你也没有学习的必要了,即使你学习了,你未来也不会找到想要的对口工作 5.你需要了解一些培训机构是否具有很好的就业保障,这关系到你在培训机构学习完出来以后,能否找到一份体面又高薪的工作;
JavaScript常用事件及事件句柄你知道吗? 1、click事件 鼠标单击事件,事件句柄:onclick 2、dblclick事件 鼠标双击事件,事件句柄:ondblclick 3、blur事件 失去焦点事件,事件句柄:onblur 4、change事件 当文本框、文本域中的文本内容或者下拉列表选中项发生改变时,该事件发生,事件句柄:onchange 5、focus事件 获得焦点事件,事件句柄:onfocus 6、load事件 网页加载完毕后发生,事件句柄:onload,通常编写在body标签当中。 7、keydown事件 键盘按键被按下时发生,可以捕获所有键,除“prt sc sysrq”键之外。事件句柄:onkeydown 8、keypress事件 键盘按键被按下时发生,主要用来捕获数字、字母、小键盘,其它键无法捕获,但是在FF浏览器当中可以捕获所有键。事件句柄:onkeypress 9、keyup事件 键盘按键弹起时发生,事件句柄:onkeyup 10、mousedown事件 鼠标按下事件,事件句柄:onmousedown 11、mousemove事件 鼠标在某控件上移动时发生,事件句柄:onmousemove 12、mouseover事件 鼠标经过某控件时发生,事件句柄:onmouseover 13、mouseout事件 鼠标离开某控件时发生,事件句柄:onmouseout 14、mouseup事件 鼠标按键释放时发生,事件句柄:onmouseup 15、reset事件 表单数据被重置的时候发生,事件句柄:onreset 16、submit事件 表单数据被提交时发生,事件句柄:onsubmit 17、select事件 当文本框、文本域中的内容被选中时发生,事件句柄:onselect 18、abort事件 图像的加载被中断时发生,事件句柄:onabort 19、error事件 加载图像或文档出错时发生,事件句柄:onerror 20、resize事件 窗口或框架被重新调整大小时发生,事件句柄:onresize 21、unload事件 用户退出当前页面时发生,事件句柄:onunload
1 下一页