自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(195)
  • 收藏
  • 关注

修改第三方源码并重新打包

[b]1.场景[/b]很多时候需要下载第三方源码修改并重新编译打包,比如mybatis-generator-core-1.3.2.jar需要修改其中的org.mybatis.generator.internal.DefaultCommentGenerator.java。[b]2. 步骤[/b][b]2.1 抽源码并修改[/b]我们可以从jar包里反编译源码(可能跟源码会有些不一...

2017-02-14 17:05:03 4158 2

内部类引发的cglib创建失败

[b]1. 问题描述[/b]使用cglib库进行动态生成代理类时调用了默认改造方法,enhancer.create(),为了省事,把目标类写成了内部类,导致错误:[code="java"]java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given ...

2016-11-22 14:48:15 1451 2

原创 super用在了匿名内部类里

[b]1.问题描述[/b]本来是重构时在父类里增加了一个protected方法(这个方法在子类中多处出现),然后在子类里使用这个方法的地方都用super来调用这个方法,结果编译始终不对。编译器提示super下面没有这个方法。[b]2. 问题分析[/b]对比后发现有些地方能用,有些地方不能用。原来根本原因在于有些子类的方法里使用了[color=red]匿名内部类[/color],在内...

2016-07-06 09:47:04 590

原创 名词解释: CGI(Common Gateway Interface) 与servlet

[b]CGI(Common Gateway Interface),通用网关接口[/b]通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。因为每个进程都会占有很多服务器的资源和时间,这就...

2016-03-13 17:09:24 1318

原创 名词解释: 负载均衡load balance

[color=red]负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。[/color]使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性(HA)。负载均衡服务通常是由专用软件和硬件来完成。[b]...

2016-03-13 16:59:01 619

观察者模式vs事件监听模式

GOF设计模式中有一种叫做观察者模式(Observer),属于行为型模式。又叫发布-订阅(Publish/Subscribe)模式、模型-视图 (Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个 主题对象在状态上发生变化时,会通知所有观察者对象,使它们...

2016-03-05 11:04:19 903

<spring-expected at least 1 matching bean> 缺少bean定义

[b]1. 问题描述[/b]...Error creating bean with name 'A': Injection of resource fields failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type...

2016-03-04 10:37:28 961

小技巧--快速获取页面元素绑定的事件/方法

从前端同事那学到的小技巧,以前通过页面查找元素调用的哪些方法时都是先在工程里找到对应的页面,然后再找绑定的方法,有时候页面都要找半天。现在好了,直接就能找到绑定的事件调用的哪些方法,直接到工程里搜就可以了。[b]1. 选择要查看的元素[/b][img]http://dl2.iteye.com/upload/attachment/0115/3102/056698a9-351c-37a4-...

2016-02-26 09:50:41 309

jvm 烂笔头

[b]1. 设置自定义系统属性java命令行-D[/b]在java命令行指定:java -D= // set a system property 设置系统属性。[url]http://www.tuicool.com/articles/MnEBNjm[/url][url]http://blog.sina.com.cn/s/blog_605f5b4f0100hlt9.html[/u...

2016-01-26 16:21:34 97

maven烂笔头

[b]1. pom的继承依赖[/b]如果父pom中使用的是....方式,则子pom会自动使用pom中的jar包,如果父pom使用....方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,无需给出version [b]2. 依赖管理[/b]maven的生命周期,[url]http://www.cnblogs.c...

2015-12-08 11:36:17 106

js/jquery 烂笔头

[b]1. function的参数以字符串形式传入另一个function[/b]下面是一个functionfunction createDialog(dialogTip, buttonObject, [color=red]callback[/color], successTip, errorTip) { var dialog=new ModalDialog({ ...

2015-11-27 09:15:44 87

《IDEA 循环依赖》Annotation processing is not supported for module cycles.

[b]1. 错误现象[/b]Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [A,B] are excluded from annotation processing[b]2. 问题分析[/b]查找[url]...

2015-11-04 16:30:20 545

原创 starUML小tip

[b]1. starUML展示内部类[/b]starUML的Class Digram可以add Class增加内部类,但是默认在外部类图标上没有展示,可以手动拖到外部类上。[url]http://blog.sina.com.cn/s/blog_6d2890600101hujf.html[/url]...

2015-10-23 17:19:12 158

原创 名词解释: 水平扩展和垂直扩展

[b]垂直扩展[/b]简单说来,垂直扩展就是升级原有的服务器或更换为更强大的硬件。这是比较直接的方法,比如说内存不足时就增加更多的内容。或者,花费一大笔钱为一个大型主机服务器增加存储吞吐量和/或计算能力。这种方法的优点是,购买更多内存是进行扩展的最便宜的方式之一。其缺点是,每台服务器所能支持的可扩展内存量都有一个上限。一旦现有的服务器达到这一上限,那么是时候更新到新服务了。[b...

2015-10-23 14:35:56 1852

原创 名词解释: DNS

[b]DNS(Domain Name System,域名系统[/b])是因特网上作为[b]域名和IP地址[/b]相互映射的一个[b]分布式数据库[/b],能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明...

2015-10-12 10:59:02 4206

原创 名词解释: 虚拟IP(Virtual IP Address)

[color=red][b]VIP = Virtual IP Address[/b][/color],[color=blue]虚拟IP地址[/color][color=blue]是[/color]一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的[color=blue]IP地址[/color]。虚拟的IP地址与代理服务器的真实IP地址不同,是由代理服务器根据Internet内部客户机的多...

2015-10-12 10:42:12 3406

原创 名词解释: 降级处理

当系统出现故障或压力过大时保证核心功能,使系统能承受基本核心压力。通常降级策略:1. 系统承受不住外部压力,可以采用限流的方式,限制访问流量。2. 系统承受不住外部压力,可以关闭非核心功能,腾出资源处理核心业务。3. 调用外部接口出错,如外部接口无法及时修复,则不调用远程接口,保障其他正常功能。相当于把系统从豪华版降级为基本版,但能保证正常功能使用,不至于成为报废的豪华版。...

2015-10-10 11:46:35 1782

原创 名词解释: 应用热备、冷备

在计算机服务器备份和恢复中,[color=red][b]冷备份服务器[/b][/color](cold server)是在主服务器丢失的情况下才使用的备份服务器。冷备份服务器基本上只在软件安装和配置的情况下打开,然后关闭直到需要时再打开。[color=red][b]温备份服务器[/b][/color](warm server)一般都是周期性开机,根据主服务器内容进行更新,然后关机。经常用温...

2015-10-10 11:45:17 1173

原创 数据库小问题集合

[b]1. mysql默认查询时,不区分字母大小写。[/b]比如:select * from test where title = 'abc';则title=ABC的也会查出来。sqlserver默认也不区分,oracle默认区分。但都可以修改设置。...

2015-09-23 14:58:33 74

备忘: $与#, <![cdata[ ]]>

[b]1. $ 与 #[/b]在ibatis/MyBatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行预编译,进行类型匹配,而$不进行数据类型匹配,直接当做字符串拼接,所以要注意sql注入风险。$ 的作用实际上是字符串拼接, select * from $tableName$ 等效于 StringBuffer s...

2015-08-25 11:41:53 311

slf4j 的MDC (附带主动获取方法堆栈)

[b]1. 主动获取方法调用链[/b]本来是想能在打印日志时获取关键方法的调用链,比如Dao层是关键点,那能获取这个方法是被哪个Service调用,这个Service又是被哪个Controller调用,并且这些调用传递的参数分别是什么,这样对定位问题就很方便了。初步设想是通过主动获取调用堆栈:[code="java"]public static void test() {...

2015-08-03 17:29:12 443

sql基础回顾-2 (join on和where执行顺序)

[b]1. join中相比where优先推荐on[/b]WHERE子句中使用的连接语句,在数据库语言中,被称为[color=red]隐性连接[/color]。INNER JOIN……ON子句产生的连接称为[color=red]显性连接[/color]。(其他JOIN参数也是显性连接)WHERE和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发...

2015-07-29 17:12:34 559

<spring-aop> BeanNotOfRequiredTypeException 切面异常

[b]1. 问题描述[/b]往工程里添加切面,定义了,切的是实现了接口的类,这样的话使用jdk代理应该没啥问题。但是启动时报错:[code="java"]BeanNotOfRequiredTypeExceptionorg.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'x' must b...

2015-07-24 17:59:53 566 1

【slf+log4j】基础+不同级别日志分别打到不同文件

通常日志都是基于slf4j+log4j或slf4j+logback来打印。slf4j作为门面,只是提供接口,实际的打印还是使用log4j或logback提供的功能。本文以log4j为例。[b]1. log4j的基础[/b]:[url]http://www.cnblogs.com/Fskjb/archive/2011/01/29/1947592.html[/url][b]要点[/b]:L...

2015-07-23 11:46:36 459

<Spring-Aspect> 切面类(@Aspect)首先必须是bean

[b]1. 问题描述[/b]今天发现老工程里有个日志切面但是总是也没有执行过。[b]2. 问题解决[/b]1)怀疑是execution表达式问题,先后改动了AspectJ表达式也不生效。2)在idea里打断点调试,tomcat启动后发现[color=red]断点红圈没有打勾[/color](这种情况就表示代码永远不会走进来)。最后一看,这个被标注了@Aspect的切...

2015-07-20 14:08:16 2171

<tomcat> 启动报错 Error listenerStart

今天同事遇到一个tomcat启动失败的问题,日志信息很少,不知如何分析。tomcat启动报错,也就是catalina.yyyy-mm-dd.log:[code="java"]严重: Error listenerStart2015-6-4 17:25:28 org.apache.catalina.core.StandardContext start严重: Context [/app] s...

2015-07-10 09:32:46 271

mysql --添加多个字段

[b]1. 添加单个字段[/b]alter table test add c4 varchar(2);[b]2. 添加多个字段[/b]alter table test add column sent_blacklist int(11) DEFAULT 0 COMMENT ' 我是注释1', add column sent_notexist int(11) DEFAULT 0 COM...

2015-07-07 10:50:44 2235

<mongoDB-1> 简介

[b]一、简介[/b]MongoDB是一种强大灵活可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,如辅助索引,范围查询和排序。MongoDB的功能非常丰富,比如内置的对MapReduce式聚合的支持,以及对地理空间索引的支持。[b]1.1 丰富的数据类型[/b]MongoDB是[b]面向文档[/b]的数据库(所谓的文档就是一种结构化的数据,类似JSON对象),[color...

2015-06-27 12:04:44 92

【Intellij Idea】基本配置及创建maven web工程

0.在IntelliJ IDEA里面“new Project”就相当于我们eclipse的“workspace”,而“new Module”才是创建一个工程,这是要注意的一点。IDEA建议一个空间中只有一个工程,只在project下创建module,而不再新建project;当然也可以创建普通工程,再转换成maven(在工程上右键),如下图:[img]http://dl2.iteye.com/...

2015-06-14 12:25:40 80

Intellij IDEA--can't use subversion command line client : svn

[b]1. 错误描述[/b]初用IDEA,暂时感到的还是不适应。导入工程报错提示:can't use subversion command line client : svn[img]http://dl2.iteye.com/upload/attachment/0109/2055/900c55c4-df76-3cd6-8059-a6fd2617f94d.png[/img]虽然这个错误只...

2015-06-04 10:45:01 515

<myeclipse> 修改Source Folder

MyEclipse工程里新增文件夹时有普通Folder和Source Folder的区别,java源文件放到普通Folder里时package会受Folder名影响,也就是Folder文件夹名要作为package路径的一部分,而SourceFolder则不影响package名。如果是导入的工程因为路径而报错,可以直接修改MyEclipse工程根目录下的.classpath文件:[code=...

2015-04-27 16:25:39 410

<maven> 新工程打包遇到Access restriction

[b]1、错误描述[/b]Access restriction: The type CommPortIdentifier is not accessible due to restriction on required library D:\Program Files\Java\jdk1.6.0_45\jre\lib\ext\RXTXcomm.jar串口编程用到第三方的包RXTX,按说...

2015-04-27 16:17:35 240

7. 简化函数调用

函数调用再寻常不过了,一再强调的就是好的函数一定是只做一件事情的,只因为一个原因而改变的,因而也是容易命一个好名字的。[b]7.1 Rename method (函数改名)[/b]极力推荐的一种编程风格就是:[color=red]将复杂的处理过程分解为小函数[/color]。但是,如果做的不好,会费尽周折却弄不清楚这些小函数各自的用途。要避免这种麻烦,关键就在于[color=red]给...

2015-04-21 21:54:10 106

6. 简化条件表达式

[b]6.1 Decompose Conditional (分解条件表达式)[/b]如果有一个复杂的条件(if-else)语句,可以从if,else中分别提炼出独立函数。[img]http://dl2.iteye.com/upload/attachment/0107/4263/e22c913c-391e-3425-be83-1eb9a562b6ca.png[/img]程序中,[co...

2015-04-09 21:07:14 74

5. 重新组织对象(数据)

程序中处理的所有对象都是数据,所有抽象、算法都是为了表示数据、处理数据。下面我们就看看如何更好的组织数据。[b]5.1 Self Encapsulate Field (自封装字段)[/b]在同一个类中如果直接访问这个类的一个字段,则与字段之间的[color=red]耦合[/color]关系很深,为这个字段建立取值/设值函数,并且只以这些函数来访问字段。就如有一个原则“尽可能让所有的字段...

2015-04-03 21:36:02 125

4. 在对象之间搬移特性

在对象的设计过程中,“[color=red]决定把责任放在哪儿[/color]”即使不是最重要的事,也是最重要的事之一。常常只需要使用[color=red]Move method和move field[/color]简单地移动对象行为,就可以解决这些问题。如果这两个手法都需要用到,建议先使用move field再使用move method。[b]类往往会因为承担[color=red]过多责...

2015-03-31 17:40:41 77

3. 重新组织函数

重构,无外乎就是重新组织变量(实例变量,静态变量,局部变量,临时变量),表达式,函数,类,继承机制(extends, implements)等,以提高代码的可读性,可维护性等。代码世界里不希望看到高富帅,一切都以“小”为美。单纯的结构只做一件事,只因一件事而变化,变化时尽量只修改少量的地方,复杂功能也仅仅是借助群体的力量,以组合或集成的方式来扩展。我们这里从函数开始,介绍一些可以达成这种目标的方法...

2015-03-29 10:13:49 77

in,exists和not in, not exists

[b]1. in和exists[/b]IN 操作符允许我们在 WHERE 子句中规定多个值。SQL IN 语法:[code="java"]SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)[/code]in 是把外表和内表作hash 连接,而exists是对外表(主表)...

2015-03-25 15:53:53 96

2.2 代码的坏味道(下)

[b]2.11 Parallel Inheritance hierarchies (平行继承体系)[/b]Parallel Inheritance Hierarchies其实是Shotgun Surgery 的特殊情况 。在这种情况下,每当你[b]为某个类增加一个子类,必须也为另一个类相应增加一个子类[/b]。如果你发现某个继承体系的类名称前缀和另一个继承体系的类名称前缀完全相同,便是闻到了这...

2015-03-24 20:36:25 97

2.1 代码的坏味道(上)

当闻到代码里的[color=red]坏味道[/color]时,你就可以考虑[color=red]重构[/color]了。[b]所谓的坏味道就是代码里看起来不符合设计难以理解难以修改的代码。[/b]关于“何时重构”并没有一个精确衡量标准。没有任何度量规矩比得上一个见多识广者的[color=red]直觉[/color],这里只能介绍一些[b]迹象[/b]何时可以用重构解决问题。我们必须培养自己的判...

2015-03-23 23:12:38 163

空空如也

空空如也

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

TA关注的人

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