当前位置:  编程技术>WEB前端
本页文章导读:
    ▪使用Spring的注解方式实现AOP      Spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成AOP做一个例子。 首先,为了使用Spring的AOP注解功能,必须导入如下几个包。aspectjrt.jar,aspectjweaver.jar,cglib-nodep.jar. 然后我.........
    ▪【F12一下,看看页面里的第一行】——说说浏览器兼容性模式      面试官:请你谈谈标准(Standards)模式、怪异(Quirks)模式、准标准(Almost Standards)模式,当你打开IE9时候会看见,浏览器模式,文档模式,兼容性视图,这些又是什么?尼玛啊......这些都是什么鸟.........
    ▪Gruntjs入门      Gruntjs是JavaScript项目的构建工具,也是基于node的一个命令行工具。很多开源JS项目都是使用它搭建。如jQuery、Qunit、CanJS等。它有以下作用合并JS文件压缩JS文件单元测试(基于QUnit)一句话:完.........

[1]使用Spring的注解方式实现AOP
    来源: 互联网  发布时间: 2013-11-06

Spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成AOP做一个例子。

首先,为了使用Spring的AOP注解功能,必须导入如下几个包。aspectjrt.jar,aspectjweaver.jar,cglib-nodep.jar.

然后我们写一个接口

[java] view plaincopyprint?
  • package com.bird.service;  
  •   
  • public interface PersonServer {  
  •   
  •     public void save(String name);  
  •     public void update(String name, Integer id);  
  •     public String getPersonName(Integer id);  
  •       
  • }  
  • package com.bird.service;
    
    public interface PersonServer {
    
    	public void save(String name);
    	public void update(String name, Integer id);
    	public String getPersonName(Integer id);
    	
    }

    和一个接口实现类

    [java] view plaincopyprint?
  • package com.bird.service.impl;  
  •   
  • import com.bird.service.PersonServer;  
  •   
  • public class PersonServiceBean implements PersonServer{  
  •       
  •     @Override  
  •     public void save(String name) {  
  •           
  •         System.out.println("我是save方法");  
  •     //  throw new RuntimeException();   
  •     }  
  •   
  •     @Override  
  •     public void update(String name, Integer id) {  
  •           
  •         System.out.println("我是update()方法");  
  •     }  
  •   
  •     @Override  
  •     public String getPersonName(Integer id) {  
  •           
  •         System.out.println("我是getPersonName()方法");  
  •         return "xxx";  
  •     }  
  •   
  • }  
  • package com.bird.service.impl;
    
    import com.bird.service.PersonServer;
    
    public class PersonServiceBean implements PersonServer{
    	
    	@Override
    	public void save(String name) {
    		
    		System.out.println("我是save方法");
    	//	throw new RuntimeException();
    	}
    
    	@Override
    	public void update(String name, Integer id) {
    		
    		System.out.println("我是update()方法");
    	}
    
    	@Override
    	public String getPersonName(Integer id) {
    		
    		System.out.println("我是getPersonName()方法");
    		return "xxx";
    	}
    
    }
    

    下面使用Spring注解方式对这个Bean进行方法拦截

    [java] view plaincopyprint?
  • package com.bird.service;  
  •   
  • import org.aspectj.lang.ProceedingJoinPoint;  
  • import org.aspectj.lang.annotation.After;  
  • import org.aspectj.lang.annotation.AfterReturning;  
  • import org.aspectj.lang.annotation.AfterThrowing;  
  • import org.aspectj.lang.annotation.Around;  
  • import org.aspectj.lang.annotation.Aspect;  
  • import org.aspectj.lang.annotation.Before;  
  • import org.aspectj.lang.annotation.Pointcut;  
  •   
  • /** 
  •  * 切面 
  •  * @author Bird 
  •  * 
  •  */  
  • @Aspect  
  • public class MyInterceptor {  
  •     @Pointcut("execution(* com.bird.service.impl.PersonServiceBean.*(..))")  
  •     private void anyMethod(){}//定义一个切入点   
  •       
  •     @Before("anyMethod() && args(name)")  
  •     public void doAccessCheck(String name){  
  •         System.out.println(name);  
  •         System.out.println("前置通知");  
  •    &
        
  • [2]【F12一下,看看页面里的第一行】——说说浏览器兼容性模式
        来源:    发布时间: 2013-11-06

    面试官:请你谈谈标准(Standards)模式、怪异(Quirks)模式、准标准(Almost Standards)模式,当你打开IE9时候会看见,浏览器模式,文档模式,兼容性视图,这些又是什么?

    尼玛啊......这些都是什么鸟东西......

    好吧,一点点来:先明白一个词DTD(文档类型定义),也就是你F12后,页面里第一行的一串东西,即doctype声明。

    这一串东西就是告诉浏览器你要用何种模式来渲染页面,说白了就是让浏览器用何种标准的CSS进行页面布局。

    有三种模式供你选择:

  • 标准模式(Standards Mode)
  • 准标准模式(Almost Standards Mode)
  • 怪癖模式(Quirks Mode)
  • 官方定义:

    • 标准模式(Standards Mode)

       标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。

    • 准标准模式(Almost Standards Mode)

         它按照传统的做法来实现表格单元格的垂直尺寸而不是严格的遵照CSS2规范,更接近Mozilla的准标准模式而不是Mozilla的标准模式。

    • 怪癖模式(Quirks Mode)

         怪癖模式中,为了避免“破坏”那些根据在20世纪90年代末流行的实践创作的页面,浏览器违反了现代的Web格式规范。不同的浏览器实现了不同的怪癖行为。IE6、7和8中,怪癖模式有效地冻结在IE5.5 。其他浏览器中,怪癖模式是对准标准模式的少量偏移。

     

    自定义:

    • 标准模式(Standards Mode)

         官方规定,你跟着照做就行了。

    • 准标准模式(Almost Standards Mode)

         在设置line-height,某些情况下的height,这两种效果会无法正确执行,其他和标准一样(当前新浏览器已经放弃了此模式)

    • 怪癖模式(Quirks Mode)

         一种非主流模式,由于当年IE6灰常NB,当时所有的页面都要符合他的渲染标准,但由于标准的出现,大量的页面都无法适应新标准,而IE为了包容这些站点,所以保留了这种模式,也就是不规范的CSS算法,主要体现在盒子模型上。

     

    触发方式:

    • 标准模式
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- 严格执行 -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- 兼容XHTML废弃的标签 -->
    • 准标准模式
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN">
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
    •  怪癖模式

          第一行不写,或写错DOCTYPE就能触发

    • 一统江湖式
    <!DOCTYPE html> <!-- HTML5 -->

     

    想以后侃倒面试官的请阅读:

    外国某大神的:Activating Browser Modes with Doctype;国内谋神翻译版:《用doctype激活浏览器模式》

    各种模式详细触发:DOCTYPE声明问题 (PS:包含各种变态的IE模式)

    准标准模式相关:Gecko's "Almost Standards" Mode

            Almost Target

     

     

    本文链接


        
    [3]Gruntjs入门
        来源:    发布时间: 2013-11-06

    Gruntjs是JavaScript项目的构建工具,也是基于node的一个命令行工具。很多开源JS项目都是使用它搭建。如jQuery、Qunit、CanJS等。它有以下作用

    • 合并JS文件
    • 压缩JS文件
    • 单元测试(基于QUnit)
    • 一句话:完全自动化(automation)

     

    以下是它的安装过程。

     

    一、安装node

    参考nodejs入门 (最新的node会自动安装npm)

     

    二、安装grunt命令行工具grunt-cli

    使用-g全局安装,这样可以在任何一个目录里使用了。命令: npm install -g grunt-cli

     

    需要注意的是在linux或mac下有时会报没有权限的错误,这时须在前面加一个sudo,

    安装后,可以查看改工具的版本。命令: grunt -version

     

    三、安装grunt及其插件

    进入到某项目根目录,使用命令: npm install grunt --save-dev

     

    此时,再查看grunt版本会多了一个4.0,如下

     

    至此,安装完毕。

     

    本文链接


        
    最新技术文章:
    ▪css white-space:nowrap属性用法(可以强制文字不...
    ▪IE里button设置border:none属性无效解决方法
    ▪border:none与border:0使用区别
    ▪html清除浮动的6种方法示例
    ▪三个不常见的 HTML5 实用新特性简介
    ▪css代码优化的12个技巧
    ▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
    ▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
    ▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
    ▪小技巧处理div内容溢出
    ▪html小技巧之td,div标签里内容不换行
    ▪纯CSS实现鼠标放上去改变文字内容
    ▪li中插入img图片间有空隙的解决方案
    ▪CSS3中Transition属性详解以及示例分享
    ▪父div高度不能自适应子div高度的解决方案
    ▪告别AJAX实现无刷新提交表单
    ▪从零学CSS系列之文本属性
    ▪HTML 标签
    ▪CSS3+Js实现响应式导航条
    ▪CSS3实例分享之多重背景的实现(Multiple background...
    ▪用css截取字符的几种方法详解(css排版隐藏溢...
    ▪页面遮罩层,并且阻止页面body滚动。bootstrap...
    ▪CSS可以做的几个令你叹为观止的实例分享
    ▪详细分析css float 属性以及position:absolute 的区...
    ▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
    ▪CSS小例子(只显示下划线的文本框,像文字一...
    ▪可以给img元素设置背景图
    ▪不通过JavaScript实现的自动滚动视差效果
    ▪div+CSS 兼容小摘
    ▪CSS的inherit与auto使用分析
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3