随笔分类 - 编程语言
摘要:This is my first English tutorial; I hope I can help you to learn VIM. Any question send email to me. Thank you for watching!1. Install-------------------------(YouTube)(优酷)2. Move----------------------------(YouTube)(优酷)3. Basic editing operations--------(YouTube)(优酷)4. Common commands-------------
阅读全文
摘要:执行一个catch代码块和抛出一个异常花费是很高的,这个过程中的性能损耗主要是由于当创建一个异常时要获得线程栈的一个快照。抛出异常首先要创建一个新的对象Throwable类的构造函数调用名为fillInStackTrace的方法,fillInStackTrace方法检查堆栈,收集调用跟踪信息。由于在处理过程中创建了一个新的对象,所以说只要有异常被抛出,JVM就必须调整调用堆栈,系统资源开销也就增大了。1、使编译器和运行时最优化,将几个方法调用放在一个try/catch块中,而不是为每个方法调用各自使用try/catch块 try{ Some.method1(); }catch(met...
阅读全文
摘要:在系统性能优化的时候循环和字符串处理一直是非常值得注意的地方。从心态上我们一定不能把自己的眼界放在十次或者是百次循环的层次上,也不能把自己要处理的字符串当做是有十个二十个字符。每次遇到循环都要假定这个循环是上万次的,每次要处理的字符串的时候一定要告诉自己这个字符串将来有可能是很大的。不要等到数据量真的达到十万、百万的级别之后再采取处理,那样的话成本的消耗就太大了。本文将介绍关于Java代码中循环和字符串的优化方法,希望对读者有用。关于循环嵌套for循环中次数多的放在内侧,次数少的放在外侧。众所周知for循环需要定义一个循环变量来遍历每一个需要循环的对象,那么如果循环次数多的循环放在外侧那么无疑
阅读全文
摘要:Path类在JDK7帮助文档中的解释是定位一个文件或者指明一个路径。说白了就是可以代表一个带有路径的文件定位也可以表示一个路径。其实用起来还是很简单的如下代码所示import java.io.IOException;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main { public static void main(String[] args) throws IOException { Path path=Paths.g...
阅读全文
摘要:上一篇文章已经介绍了如何使用JDK的三个标准Annotation,本文将介绍Annotation的原理,以及如何自定义Annotation,并利用Annotation来完成一些实际的功能。定义Annotation定义新的Annotation类型使用@interface关键字,这从一定意义上说明Annotation和接口的定义是有相似之处的。如下代码定义了一个Annotation //使用DK的元数据Annotation:Retention @Retention(RetentionPolicy.RUNTIME) //使用JDK的元数据Annotation:Target @Target(El...
阅读全文
摘要:Annotation简介从JDK5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解,也有地方称之为注释),其实说白了就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Annotation提供了一条为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些
阅读全文
摘要:根据前面介绍的Proxy和InvocationHandler,实在很难看出这种动态代理的优势,下面介绍一种更实用的动态代理机制.只要我们开发一个实际使用的软件系统,总会出现相同代码重复出现的情形,在这种情形下,最常见的做法是:选中那些代码一路“复制”、“粘贴”立即实现系统的功能,如果仅仅从软件功能上来看,他们确实已经完成了软件的开发。对于采用上述方法实现的系统,在软件开发期间可能会觉得无所谓,但如果有一天需要修改程序的公共部分,那意味着打开多份源代码进行修改。如果有100个地方,甚至是1000个地方使用了这段深色代码段,那修改维护这段代码的工作量将变成噩梦。在这种情况下大部分少有经验的开发这都
阅读全文
摘要:在Java的Java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成JDK动态代理类或动态代理对象.Proxy提供用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类.如果我们在程序中为一个或多个接口动态地生成实现类,就可以使用Proxy来创建动态代理类:如果需要为一个或多个接口动态的创建实例,也可以使用Proxy类创建动态代理实例.Proxy提供了如下两个方法来创建动态代理类和动态代理实例:1. staticClass<?>getProxyClass(ClassLoader loader,
阅读全文
摘要:上一篇文章中所提到在Model2模型里是利用Servlet控制器或者过滤器来接收来自用户输入并控制模型和视图部分做出相应的变化,其中核心部分是对URI进行处理,然后做出一系列的动作,最终将内容显示在浏览器上。下面的两段代码分别展示了用Servlet和过滤器来充当Model2当中的控制器。Servlet控制器的核心代码package struts2_01; import java.io.IOException; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax..
阅读全文
摘要:依赖注入(Dependencyinjection)在Java的流行框架中得到了广泛的应用,比如Struts,Spring等等。(Martin Fowler写过一篇这个模式的精彩文章,感兴趣的童鞋可以去度娘)在Fowler最先提出依赖注入这个术语之前,人们经常用“控制反转”(inversion ofcontrol)这个词来描述同样的事情。其实IOC的范围比依赖注入的范围更大,IOC包括依赖注入和依赖查找,本文主要介绍依赖注入。首先看一个情形,有两个类我们姑且叫他们为A类和B类,并且A类依赖于B类,也就是说A类中需要调用B类中资源(方法或者属性)。大致的代码如下public class A{ p.
阅读全文
摘要:Servlet的出现Servlet技术和JSP技术是利用Java语言开发Web应用程序的两个主要技术,1996年Sun公司首次推出Servlet技术来解决Web程序当中的性能问题。Servlet在首次被用户请求的时候加载到内存当中,之后将一直驻留在内存里,对同一个servlet的后续请求将不用再对这个servlet的类进行实例化,这种机制大大提高了Web应用程序的相应速度。可是Servlet并不是那么完美,当人们在编写Servlet的时候发现所有HTML输出代码都封装在String对象里,然后再用out对象的print方法向用户展示出来,这不免增加了编码的难度,而且维护起来也十分麻烦,即使稍微
阅读全文
摘要:技术只有落实到工程当中才显得那么有血有肉,之前学J2SE的时候运算符这块没有多在意,前一段时间实现权限管理模块的时候才发觉位运算符内有乾坤。笔者在这里进行简单总结,希望对读者有用。Java支持的位运算符:&:按位与。|:按位或。~:按位非。^:按位异或。<<:左位移运算符。>>:右位移运算符。<<<:无符号右移运算符。这四个运算符比较常见,也比较简单总结如下表所示: 第一个运算符 第二个运算符 按位与 按位或 按位异或 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 PS:对于异或运算符大家可能...
阅读全文
摘要:在编程时,常常需要集中存放多个数据,例如权限管理里面对角色所具有的权值进行遍历然后返回。当然我们可以使用数组来保存多个对象,数组存放数据的好处就是查找简单,通过数组的下标可以准确的进行定位。但是数组也有其自身的缺陷,其长度不可变化,也就是说一旦初始化数组时指定了数组长度,则这个数组长度是不可变的。所以如果需要保存个数变化的数据,数组就无能为力了。还有一点就是而且数组无法保存具有映射关系的数据(例如记录学生成绩的键值对)。俗话说工欲善其事必先利其器,这时候就轮到集合类上场了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象
阅读全文
摘要:在JS当中一个变量的作用域(scope)是程序中定义这个变量的区域。变量分为两类:全局(global)的和局部的。其中全局变量的作用域是全局性的,即在JavaScript代码中,它处处都有定义。而在函数之内声明的变量,就只在函数体内部有定义。它们是局部变量,作用域是局部性的。函数的参数也是局部变量,它们只在函数体内部有定义。我们可以借助JavaScript的作用域链(scope chain)更好地了解变量的作用域。每个JavaScript执行环境都有一个和它关联在一起的作用域链。这个作用域链是一个对象列表或对象链。当JavaScript代码需要查询变量x的值时(这个过程叫做变量解析(varia
阅读全文
摘要:JSTL自带的标签功能非常强大,但是仅仅有这些标签并不能完全满足实际开发中的需要,必要的时候我们可以自己动手写自己的标签,甚至于构建自己的标签库。开发自定义标签,首先需要开发标签所对应的类,其次要编写标签的描述文件tld,并把这个文件放在WEB-INFO目录下(其实可以放在别的目录下,只不过需要在Web.xml中配置而已,为了方便使用我们一般默认放在WEB-INF目录下)。最后在JSP页面上标记tld文件的位置,根据tld文件中的描述进而找到处理标签的类。一幅图胜过千言万语下面的这个例子就是使用自定义的标签实现在页面上输出当前时间。具体实现代码如下标签处理类:package taglibs;
阅读全文
摘要:JSTL的全名为JavaServerPages Standard Tag Library,即JSP标准标签库(网上下载完成后的包为jakarta-taglibs-standard-current.zip),其主要功能是为JSP Web开发人员提供一个标准通用的标签库。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。JSTL简介JSTL标签是基于JSP页面的,这些标签可以插入JSP代码中,在本质上JSTL也就是提前定义好的一组标签。这些标签封装了不同的功能,当在页面上调用这个标签的时候,等于就是调用了封装起来的功能,这些标签可以在页面上输出内容、
阅读全文
摘要:活到老学到老是我们常常说的一句话,但是真正在工作中学习的时候就没有那么轻松了。一般人面对工作中的新知识往往先是恐惧然后抱怨进而不自信最后逃之夭夭,末了还得出结论:自己不是这块儿料。其实不然,智力上人们之间差不了多少,缺少的就是那么一点点的方法和信心而已。这次外包中遇到了自己从未接触过的新知识,在此分享一下学习的感受或者说是对待新知识的方法,希望在读者以后的工作中能起到帮助作用。看帮助文档还记得当年大明湖畔我们看的帮助么?:b有什么不懂的先看帮助啊!学了这么多年是不是已经把在提高班第一天学习的东西丢掉了呢?无论是学习框架还是学习软件,帮助都是我们应该第一个想到的巨人,其实框架或者是软件的作者们已
阅读全文
摘要:目录发展历史XML和HTML对比之可扩展XML和HTML对比之语法细节XML验证之DTDXML名称空间XML语法结构DOM4J读写配置文件关于SLTXML名称空间一个XML文档中可以包含许多元素与属性,当我们使用他人的XML文档或者使用多个校验文件(DTD或者Schema)时很有可能出现相同的元素或属性名称,而这些元素或属性的意义是不一样的,类似于java当中很多类的类名是相同的而这些类的具体作用却是不尽相同的,于是在Java领域人们就引入了包的概念,不同包下的相同名称的类的作用是不一样的,这样就有效的区分了同名的类。相类似的在XML中引入名称空间也是为了解决名称重复的问题。先看下面的例子&l
阅读全文
摘要:JS的位置题目当中那些和JS有关的人们中自己就是其中之一,因为这次外包的主要任务就是用JS调用人家已经写好的框架来实现功能。以往学JS的时候没觉得这门语言怎么样,就是一般的脚本语言嘛。负责和用户打交道,再具体一点就是做一些基本的数据验证而已。所以一般说起JS都要和DIV+CSS一起说,毕竟他们都是关于用户体验的技术。但是最近的这个项目让我看到了JS背后的东西。从软工说起因为软件工程的特点,项目如果从零开始开发就会有太多的不可预见性,要想顺利开发出复杂的软件太困难了。很有可能出现的情况就是开发团队每个人都在基本的操作上浪费很多的时间。自己写代码的时候有重复的代码就是坏味道,那么团队中就更要杜绝重
阅读全文
摘要:目录发展历史XML和HTML对比之可扩展XML和HTML对比之语法细节XML验证之DTDXML名称空间XML语法结构XML验证之SchemaDOM4J读写配置文件关于SLTXML验证之Schema就像前面的文章所说的,通过DTD我们可以很容易的判断要验证的XML是否符合我们所定义的规范(元素之间的关系,属性的取值是否正确)但是如果要验证元素的内容DTD就无能为力了,于是人们研究了新的验证方法——Schema。除了上面的优势之外Schema相对于DTD而言更令人兴奋的是其自身就是一个良好形式的XML文档,这样一来编写Schema就非常容易了。相对于自己有一套独立的语法的DTD而言,无论是编写还是
阅读全文

浙公网安备 33010602011771号