牛客网题目(三)

HTML5新增加的标签 <article>标签定义外部的内容(结构元素) <aside>定义页面内容之外的内容。 aside的内容与article的内容相关。(结构元素) <figure>定义一组媒介内容的分组,以及它们的标题。(结构元素) <section>标签定义文档中的节(section,区段)。比如章节,页眉,页脚或文档中的其他部分(结构元素) <meter>定义预定义范围内的度量。仅用于已知最大和最小值的度量(内联元素) <progress>定义任何类型的任务的进度。可以使用<progress>标签来显示javascript中耗费时间的函数的进度(内联元素) <time>定义一个日期/时间 (内联元素) <audio>定义声音内容。(内嵌元素) audio 元素允许多个 source 元素。source 元素可以链接不同的音频文件。浏览器将使用第一个可识别的格式 <video>定义视频。(内嵌元素) Ogg支持firefox3.5,opera10.5,chrome3.0 Mpeg 4 支持chrome3.0,safsri3.0 Video也支持多个source元素,链接到不同的视频文件,浏览器将使用第一个可识别的格式 属性值: autoplay=”autoplay”就绪后马上播放 loop=“loop”播放完再次播放 <command>定义命令按钮 (交互元素) <datalist>定义下拉列表,与input元素配合使用该元素,定义input可能出现的值,datalist的选项不会被显示出来,它仅仅是合法的输入值列表(交互元素) <details>定义元素的细节 (交互元素) <canvas>定义图形,绘制路径,矩形,圆形,字符以及添加图像的方法 Canvas元素本身没有绘图能力,所有的绘制工作必须在javascript内部完成 渐变 <dialog>定义对话(会话)dialog元素表示几个人之间的对话。HTML5dt元素可以表示讲话者,HTML5dd元素可以表示讲话内容。(结构元素) <embed>定义外部交互内容或插件 <event-source>为服务器发送的事件定义目标 <footer>定义 section 或 page 的页脚 <figcaption> 标签定义 figure 元素的标题。 <hgroup> 标签用于对网页或区段(section)的标题进行组合。 对网页或区段的标题进行组合 <keygen>标签提供一种验证用户的可靠方法。keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。 <header>定义 section 或 page 的页眉(介绍信息) <mark> 标签定义带有记号的文本。请在需要突出显示文本时使用 <m> 标签。 <nav>定义导航链接。 <output>定义输出的一些类型。 <source>定义媒体资源 Ogg支持firefox3.5,opera10.5,chrome3.0 Mpeg 4 支持chrome3.0,safsri3.0 Video也支持多个source元素,链接到不同的视频文件,浏览器将使用第一个可识别的格式 属性值: autoplay=”autoplay”就绪后马上播放 loop=“loop”播放完再次播放 <ruby> 标签定义 ruby 注释(中文注音或字符)在东亚使用;

angularjs1中的服务实质上是:单例对象;
有关maven和ant的描述:

Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码;Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里;Ant构建文件默认命名为build.xml,Maven默认构建文件为pom.xml;
Ant和Maven都是基于Java的构建(build)工具。理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。Ant是软件构建工具,Maven的定位是软件项目管理和理解工具;
Ant特点 : 没有一个约定的目录结构 ›必须明确让ant做什么,什么时候做,然后编译,打包 ›没有生命周期,必须定义目标及其实现的任务序列 ›没有集成依赖管理 ;
Maven特点 : 拥有约定,知道你的代码在哪里,放到哪里去 ›拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程 ›只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情 ›拥有依赖管理,仓库管理;

有关struts1和struts2的区别:

Struts1要求Action类继承一个抽象基类。Struts 2 Action类可以实现一个Action接口;
Struts1 Action 依赖于Servlet API,Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试;
Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL
Struts1和Struts2的区别和对比:
Action 类:   
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口。   
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。  
线程模式:   
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。  
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)  
Servlet 依赖:   
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。  
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。  
可测性:   
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。  
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。   
捕获输入:   
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。  
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。  
表达式语言:   
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。   
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL). 

String s1= "abc" + "def" ; //1
String s2= new String(s1); //2
if (s1.equals(s2)) //3
System.out.println( ".equals succeeded" ); //4
if (s1==s2) //5
System.out.println( "==succeeded" ); //6
行4执行,行6不执行;equals()比较的是字符串的内容,==比较的是内存地址值;

问:String s1="abc"; s2="abc"; s3= new String("abc");为啥s1和s2的地址值一样而s1和s3的就不一样呢?也就是,为什么 s1==s2但s1!=s3呢?
答:先是在内存里创建了一个abc字符串,然后s1指向abc,s2要指向abc,内存中已经有abc,所以s1和s2地址相同,s3指向的是新字符串abc的地址,所以s1与s3不同,s1==s2但s1!=s3,因为s1,s2,s3是引用,比较的是地址而不是内容,所以有这个结果,比较值是否相同应该用.equal函数而不能直接用==;
若需给子scope发送消息,需使用哪个方法:$broadcast();

Angular 的知识,没有$send.
  • $emit只能向parent controller传递event与data
  • $broadcast只能向child controller传递event与data
  • $on用于接收event与data
$emit() 是向上冒泡; $broadcast() 是向下传播事件 ;

发送消息: $scope.$emit(name, data) 或者 $scope.$broadcast(name, data);

接收消息: $scope.on(name,function(event,data){ });

区别: $emit 广播给父controller   $broadcast 广播给子controller

broadcast 是从发送者向他的子scope广播一个事件。

$emit 广播给父controller,父controller 是可以收到消息;

$on 有两个参数function(event,msg)  第一个参数是事件对象,第二个参数是接收到消息信息;

< ul >
< li > </ li >
</ ul >

< ol >
< li > </ li >
</ ol >
 
< dl >
< dt > </ dt >
< dd > </ dd >
</ dl >

关于btn标签的说法:btn-group能将按钮组成按钮组;btn-toolbar能将btn做成复杂组件;btn-group可以嵌套使用;可以使用btn-group-lg,btn-group-sm来调整按钮大小;
用作javascript异步模式的编程:回调函数,这是异步编程最基本的方法。事件监听,另一种思路是采用事件驱动模式。任务的执行不取决于代码的顺序,而取决于某个事件是否发生。发布/订阅,上一节的"事件",完全可以理解成"信号"。Promises对象,Promises 对象是CommonJS 工作组提出的一种规范,目的是为异步编程提供统一接口。

1.回调函数
f1();
f2();
function f1(callback){
setTimeout(function () {
// f1的任务代码
callback();
}, 1000);
}
f1(f2);
2.事件监听
f1.on('done', f2);
function f1(){
setTimeout(function () {
// f1的任务代码
f1.trigger('done');
}, 1000);
}
3.发布/订阅
jQuery.subscribe("done", f2);
function f1(){
setTimeout(function () {
// f1的任务代码
jQuery.publish("done");
}, 1000);
}
jQuery.unsubscribe("done", f2);
4.Promises对象
f1().then(f2);
function f1(){
var dfd = $.Deferred();
setTimeout(function () {
// f1的任务代码
dfd.resolve();
}, 500);
return dfd.promise;
}
指定多个回调函数:
f1().then(f2).then(f3);
指定发生错误时的回调函数:
f1().then(f2).fail(f3);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值