自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aty

虽有嘉肴,弗食,不知其旨也;虽有至道,弗学,不知其善也。是故学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 软件设计度量工具structure101学习(六):Project Properties

现在我们看下如何新建一个structure101项目以及Project Properties的设置。项目设置包括如下内容:Project type、breakout、Excludes、Externals、Granularity、Source files和Transformations。配置好这些设置选项之后,我们可以另存为一个.hsp文件,这样下次使用的时候就可以直接打开hsp。配置项包括project type、breakout、Granularity、Externals、Excludes、Source

2015-11-30 13:15:30 1819

原创 软件设计度量工具structure101学习(五):repository的使用

structure101至此2种仓库:local repository和remote repository。远程仓库是structure101官方维护:我们可以将项目的字节码提交到这里,给大家共享,这样别人也能够看。上图可以看到:常见的第三方开源框架如struts2、spring将自己的字节码传给了官方的远程仓库。这样我们按照完structure101后,就可以打开远程仓库下的这些项目,查看这些常见开源项目的度量结果。一般我们还是使用local repository,本地仓库的使用是很容易的,那么它的意义在

2015-11-28 17:20:37 2094

原创 软件设计度量工具structure101学习(四):complexity的使用与计算

度量一个函数(方法)是否复杂,最常用的方法就是计算函数的圈复杂度cyclomatic complexity (CC),也就是“McCabe’s Metric”。业界CC的threshold一般是15,CC>15的函数被认为是非常复杂的。函数是否复杂的度量已经很成熟了,structure101度量函数是否fat,用的也是CC,临界值也设置的是15。structure101扩展了CC的概念,提出了度量class、leaf package、meta package复杂度的方法。meta package也就是上图中

2015-11-28 16:34:46 3100

原创 软件设计度量工具structure101学习(三.1):解决slices视图遗留问题

上一篇博客介绍了slices视图的基本使用,但是遗留了3个问题。经过几天的探索,终于弄懂了这3个遗留问题。1.design level 1~n到底是啥,有什么指导意义,数量又是怎么计算的?2.C的计算公式是啥?3.Groups 和Tangles页签的#Parents是怎么计算的,有什么意义?

2015-11-28 11:33:33 1186 1

原创 软件设计度量工具structure101学习(三):Slices视图

上一篇博客介绍了structure101的Collaboration、Class Hierarchy、Call Graph视图,这3个视图很好理解、很容易使用,在eclipse等IDE中也有类似的功能。本文主要介绍Slices视图。

2015-11-27 14:51:45 2263

原创 软件设计度量工具structure101学习(二):Call Graph、Class Hierarchy、Collaboration、Composition视图

structure101视图之Call graph、Class Hierarchy、Collaboration

2015-11-26 14:27:11 2539

原创 软件设计度量工具structure101学习(一):structure101试用版licence的获取以及众多的structure101系列工具

在java的世界里,静态代码检查工具有很多,比如CheckStyle、PMD、FindBugs、Eclipse Metrics、Eclipse Simian等都是非常实用的工具。静态检查工具主要侧重于代码层面的质量,structure101和inFusion等则是设计层面的度量工具,更加侧重软件架构、设计、依赖等。最近打算重新温习下structure101这个很好用的工具,记录在博客里,我发现网上关于structure101的中文资料很少。

2015-11-26 13:11:45 5954

原创 java静态代码检查工具:JavaNCSS的使用

在学习jDepend的时候,看到了这JavaNCSS静态代码分析工具。jDepend检查java包的稳定性、抽象性、包之间的依赖关系,而JavaNCSS则检查java源文件、类、方法等更细粒度的指标。JavaNCSS统计packages信息、classes信息、functions信息。有几个名词解释下:NCSS:Non Commenting Source Statements,除了注释和空行外的java有效代码行数。CNN函数的圈复杂度。

2015-11-22 16:11:27 8684 2

原创 面向对象包的设计原则ADP/SDP/SAP与包的设计度量工具jDepend

Robert C. Martin名著《敏捷软件开发:原则、模式与实践》一书第20章“包的设计原则”提到了几个很重要的设计原则。这篇文章主要看下涉及包的依赖性和稳定性的3个设计原则ADP/SDP/SAP。熟悉这3个设计原则之后,我们再看下度量工具jDepend的使用。

2015-11-22 13:54:23 2074

原创 javascript正则表达式:非捕获分组的一个使用例子

最近在看JsonSQL的时候,通过源码中的一段正则表达式,了解到了什么是非捕获分组以及它的使用场景。在js中,正常的捕获分组格式是(XX),非捕获分组格式为(?:XX)。我们先从正则表达式数量词说起,如果我们要求字符b至少出现一次,可以使用正则/b+/;如果要求ab至少出现一次,那么必需使用/(ab)+/,不能用/ab+/。也就是说,如果想对多个字符使用数量词,必需要用圆括号。可以看出捕获分组和非捕获分组的区别了吧:非捕获分组,只是用来匹配,并不会提取分组内容。也就是说,如果我们只想用圆括号将一些字符用数量

2015-11-21 10:20:24 3129

原创 eval()、window.eval()和with

eval()和window.eval()都可以用来动态执行javascript代码,能给js编程带来很大的灵活性,两者唯一的差别在于执行上下文不同。可以看到:window.eval()的执行上下文是“全局对象”,而eval()的执行上下文则是“调用eval的上下文环境”。IE6/7/8中,eval和window.eval一样,写在自定义函数内是局部闭包,否则是全局闭包。IE9/Firefox/Safari/Chrome/Opera中,eval同以上IE6/7/8,window.eval即使写在自定义函数内使

2015-11-20 10:27:03 4117 1

原创 Java NIO学习:缓冲区

使用InputStream读取文件内容的时候,我们都是用字节数组进行批量读取的,而不是一个一个字节的读。NIO中的缓冲区其实就和传统IO中的字节数组一样,都是为了提高IO性能。NIO里面为每种基本数据类型都提供了对应的缓冲区对象,如ByteBuffer、ShortBuffer、CharBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer。这几种缓冲区对象使用方式基本是一样的,这里以ByteBuffer为例学习下NIO中的缓冲区。

2015-11-15 13:52:30 825

原创 java socket编程中backlog的含义

服务端socket处理客户端socket连接是需要一定时间的。ServerSocket有一个队列,存放还没有来得及处理的客户端Socket,这个队列的容量就是backlog的含义。如果队列已经被客户端socket占满了,如果还有新的连接过来,那么ServerSocket会拒绝新的连接。也就是说backlog提供了容量限制功能,避免太多的客户端socket占用太多服务器资源。客户端每次创建一个Socket对象,服务端的队列长度就会增加1个。服务端每次accept(),就会从队列中取出一个元素。

2015-11-05 14:40:11 12899 4

原创 java网络编程(一):java传统的阻塞IO以及多线程解决方案

最近在看一些IO模型相关的东西,被同步IO、异步IO、阻塞IO、非阻塞IO概念弄的有点晕,后面再慢慢学习和领悟。我们以socket IO编程为例子,我用的是JDK1.7.0_80,测试工具用的是SocketTest。我们先学习下最简单、最原始的IO模型,在《Unix网络编程卷》中被称为:blocking IO。了解并发编程都知道:这种为每个客户端分配一个线程的方案,在高并发的场景下仍然不行。因为创建线程是要消耗系统资源的,不能无限制的创建线程,而且线程太多会导致频繁的上下文切换,这些都会影响性能。我们可以使

2015-11-04 16:09:02 3431

eclipse最常用的快捷键

这是我个人从网上整理出来的快捷键,日常很常用的列在这里。而且比较清晰,欢迎大家下载。在eclipse提高开发效率

2012-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除