自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LinkinPark的博客

当你的才华撑不起你的野心时,请心无旁骛,继续学习,愿多年以后你我都能成为自己想象的模样。

  • 博客(54)
  • 收藏
  • 关注

原创 Logback使用

OK,现在让我们开始logback吧。关于logback的使用,网上的资料良莠不齐,权威一点的材料比如书我是没有找到。所以只好去官网上看文档,本人英语一般,所以只能一边翻译,一边研究。这里来整理一份相对比较详细的博客。logback概述LogBack是由log4j的创始人开发的一个日志组件,用于替代log4j。LogBack的架构设计足够通用,可适用于不同的环境,目

2016-02-29 20:04:15 633

原创 common-logging源码解析

OK,现在我们来研究下common-logging的源码。这篇博客有参照上善若水的博客,感谢他的无私分享。先来随便扯点吧,貌似所有这些流行的Logging框架都和Log4J多少有点关系(不太确定Commons Logging有多大关系,不过至少也都是Apache下的项目吧)。JDK Logging据说当初是想用Log4J的,但是当时两家好像谈判谈崩了,然后JDK自己实现了一个,貌似结构和Log

2016-02-26 14:56:11 2964

原创 common-logging--源码之SimpleLog

common-logging源码Log接口在common-logging的源码中,将log核心类抽象成了一个Log接口。这里贴出Log接口的源码:/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NO

2016-02-26 13:42:38 1029

转载 如何使用 volatile, synchronized, final 进行线程间通信

原文地址:https://segmentfault.com/a/1190000004487149。感谢作者的无私分享。你是否真正理解并会用volatile, synchronized, final进行线程间通信呢,如果你不能回答下面的几个问题,那就说明你并没有真正的理解:对volatile变量的操作一定具有原子性吗?synchronized所谓的加锁,锁住的是什么?

2016-02-26 11:19:38 1565

原创 commons-logging的使用

简介commons-logging是Apache commons类库中的一员。Apache commons类库是一个通用的类库,提供了基础的功能,比如说commons-fileupload,commons-httpclient,commons-io,commons-codes等。commons-logging能够选择使用Log4j还是JDK Logging,但是他不依赖Log4j,JD

2016-02-26 11:00:45 35017 1

原创 Log4j扩展使用--自定义输出

写在前面的话log4j支持自定义的输出。所有的输出都实现了自Appender接口。一般来说,自定义输出值需要继承AppenderSkeleton类,并实现几个方法就可以了。写这篇博客,我主要也是想说,框架之所有被成为是一个框架,是在帮我们完成大部分的通用代码,这就有一个前提就是说它必须要有具有良好的扩张性。方便每一个使用者来扩展,当然我们也可以根据自己的喜好去改人家框架的源码,但是

2016-02-25 23:30:16 4734

转载 Log4j源码解析--LoggerRepository和Configurator解析

本文转自上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/10/382678.html。感谢作者的无私分享。LoggerRepository从字面上理解,它是一个Logger的容器,它会创建并缓存Logger实例,从而具有相同名字的Logger实例不会多次创建,以提高性能。它的这种特性有点类似Spring的IOC概念。L

2016-02-25 16:13:39 924

转载 Log4j源码解析--Appender接口解析

本文转自上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/10/382676.html。感谢作者的无私的分享。Appender负责定义日志输出的目的地,它可以是控制台(ConsoleAppender)、文件(FileAppender)、JMS服务器(JmsLogAppender)、以Email的形式发送出去(SMTPAp

2016-02-25 15:26:56 2216

转载 Log4j源码解析--Layout类解析

本文转载上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/04/382131.html。感谢作者的分享。Layout负责将LoggingEvent中的信息格式化成一行日志信息。对不同格式的日志可能还需要提供头和尾等信息。另外有些Layout不会处理异常信息,此时ignoresThrowable()方法返回false,

2016-02-25 15:13:27 1030

转载 Log4j源码解析--核心类解析

原文出处:http://www.blogjava.net/DLevin/archive/2012/06/28/381667.html。感谢上善若水的无私分享。在简单的介绍了Log4J各个模块类的作用后,以下将详细的介绍各个模块的具体作用以及代码实现。Logger类Logger是对记录日志动作的抽象,它提供了记录不同级别日志的接口,日志信息可以包含异常信息也可以不包含

2016-02-25 13:58:46 1330

原创 Log4j源码解析--框架流程+核心解析

OK,现在我们来研究Log4j的源码:这篇博客有参照上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/06/28/381667.html。感谢作者的无私分享。Log4J将写日志功能抽象成七个核心类或者接口:Logger、LoggerRepository、Level、LoggingEvent、Appender、Layou

2016-02-25 13:31:40 15506

原创 自己写的日志框架--linkinLog4j--框架可配置+提性能

OK,上一篇博客我们已经实现了日志框架的基本的功能,但是还有一个最大的问题就是日志输出地不能重定向,然后一些输出也不可控。那现在我们来实现一个比较完整的日志框架。设计思路如下:1,定义一堆常量LinkinLog4jConstants,这些常量用于框架中日志输出的配置项,为了简单和方便,这里不一定非要依赖配置文件,所以在这些常量里面都要付初始值。2,新增配置文件,LinkinLo

2016-02-25 10:24:31 753

转载 Runtime.addShutdownHook的用法

原文出处:http://kim-miao.iteye.com/blog/1662550。感谢作者的无私分享。一.Runtime.addShutdownHook理解在看别人的代码时,发现其中有这个方法,便顺便梳理一下。void java.lang.Runtime.addShutdownHook(Thread hook)该方法用来在jvm中增加一个关闭的钩子

2016-02-24 18:06:37 1408

原创 自己写的日志框架--linkinLog4j--实现基本的框架功能

OK,上面一步我们已经知道了日志框架的必要性,然后我们也对比了直接不用日志框架来记录日志的种种弊端。现在我们开始就来一步一步的实现自己的日志框架。大体的思路如下:1,实现多种日志级别,通过设值不同的日志级别来控制项目中日志的输出等级,所以这里就要写一个等级的枚举,这个枚举就定义LinkinLogLevel好了。2,开始写自己的日志核心类,定义LinkinLog4j类。然后这里要初始化日

2016-02-24 10:50:03 1150 1

原创 自己写的日志框架--linkinLog4j--日志框架的必要性

OK,在开始研究Log4j的源码之前,我们先来自己模拟一个日志工具,名字就叫linkinlog4j好了。在软件开发过程中,出现bug总是在所难免;事实上,以我个人经验,即使在实际开发阶段,fix bug时间要远超过写代码的时间。在开发阶段,比较有效的fix bug的方法当然是调试,然而如果代码比较复杂,而且开始对代码不是很熟悉,那么我们很容易在方法调用之间迷失方向;如果bug出现在多线程环境中

2016-02-24 09:59:57 1001

原创 web应用中log4j应用--log4j.xml同时输出多种日志

OK,现在我们来整理下log4j来web项目中的应用。我之前搞了2年web,使用的日志都是log4j。关于现在比较火的logback我后面会有博客整理到,不管怎么样,这里先整理一下web中log4j的使用,特别是log4j.xml,之后如果用到直接过来复制就好了。1,项目中添加log4j依赖: log4j log4j 1.2.17 当然这里推荐使用slf4j来统一管理

2016-02-23 01:04:03 3556

原创 Log4j扩展使用--日志格式化器Layout

Layout:格式化输出日志信息OK,前面我已经知道了。Appender必须使用一个与之相关联的Layout,这样才能知道怎样格式化输出日志信息。日志格式化器Layout负责格式化日志信息,方法log.error()的参数只包含日志信息,利用Layout可以附加其他信息,以输出更多的信息或者布局显示。Log4j具有几种类型的LayoutPatternLayout:根

2016-02-23 01:02:08 13772

原创 Log4j扩展使用--输出地Appender

OK,现在我们来研究输出低Appended。Appender控制日志输出的位置Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。Log4j内置了常用的输出地,一般情况下配置一下即可使用,所有的Appender都实现了自org.apache.log4j.Appender

2016-02-23 01:00:01 10820

原创 Log4j扩展使用--日志记录器Logger

OK,现在我们认真的研究下Logger的配置,进行相关配置扩展。Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局)。其中,Logger负责记录日志,Appender负责输出到什么地方,Layout负责以什么格式输出,输出哪些附加信息等。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

2016-02-23 00:47:02 7934 1

原创 Log4j的使用

OK,现在我们开始研究Log4j。Log4j是目前应用最广泛的日志空间,它分如下几个日志级别,日志级别依次升高。级别高的level会屏蔽级别低的信息。TRACE→DEBUG→INFO→WARNING→ERROR→FATAL→OFF。比如设置INFO级别,TRACE,DEBUG就不会输出,如果设置WARNING级别,则TRACE,DEBUG,INFO都不会输出。Log4j

2016-02-22 23:42:48 8205

原创 JDK自带的日志Logging

OK,现在我们来研究下JDK自带的日志Logger。从jdk1.4起,JDK开始自带一套日志系统。JDK Logger最大的优点就是不需要任何类库的支持,只要有Java的运行环境就可以使用。相对于其他的日志空间,JDK自带的日志可谓是鸡肋,无论易用性,功能还是扩展性都要稍逊一筹,所以在商业系统中很好直接使用。我们现在整理到日志系列了,所以这里只是做一个简单的介绍就好了,比较实际

2016-02-22 16:36:19 11257

原创 java日志概述和原理

OK,现在我们来研究下Java相关的日志。日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。对于开发人员来说,在程序中使用日志API记录日志并不复杂,不过遵循一些最佳实践可以更好的利用日志。本系列介绍了在Java程序中记录日志的最佳实践,同时也介绍了如何使用开源软件对日志进行聚合和分析。对于现在的应用程序

2016-02-22 15:36:57 1732

转载 Java程序员最常用的8个Java日志框架

作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug;在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好的完善系统。本文要来分享一些Java程序员最常用的Java日志框架组件。1、log4j – 最受欢迎的Java日志组件

2016-02-22 15:05:43 836

原创 linkinFrame--web应用举例--准备工作

OK,前面的博客我们已经搭好了linkinFrame的项目结构,现在我们这里添加一个简单的web应用,在编写此web应用的过程中我们来一步一步的搭好自己的框架。现在开始,这里举一个例子,一个客户的CRUD。1,首先数据创建一个Customer表,主键设置自增,然后再往里面添加2条记录。建表语句如下:CREATE TABLE `customer` ( `customer_id

2016-02-22 11:02:16 383

原创 linkinFrame--测试项目添加git管理

OK,前面一篇博客,已经搭建好了项目的基础的结构。现在我们添加一个简单的servlet来测试下项目能不能跑,然后在讲项目添加到coding上用git管理。1,我们编写一个servlet,编写一个jsp,发布到tomcat后,用浏览器访问检查是否正常。相关这些基础知识这里就不做赘述了。下面是servlet和jsp的代码:package linkinframe.servlet;

2016-02-22 00:24:57 384

原创 linkinFrame--用maven搭项目结构

OK,老早想写一套自己的web框架,然后也一直在看开源的一些框架源码。今天开始正式开始写自己的javaWeb框架,暂时就定义linkinFrame好了。为什么要写一套自己的框架?其实这是一个比较矛盾的问题,一般的我们很少有时间说自己去写一套,自己写的一套也没有经过严格的单元测试,甚至是在设计上功能上和开源的一些框架也差距太大,实际中根本不可能有用武之地。说白了,就是不会有人使用,除

2016-02-21 21:46:17 409

原创 maven核心概念--生命周期

maven有一个命令,mvn package,该命令行并没有指定一个插件目标, 而是指定了一个Maven生命周期阶段。一个阶段是在被Maven称为“构建生命周期”中的一个步骤。生命周期是包含在一个项目构建中的一系列有序的阶段。Maven可以支持许多不同的生命周期,但是最常用的生命周期是默认的Maven生命周期,这个生命周期中一开始的一个阶段是验证项目的基本完整性,最后的一个阶段是把一个项目发布

2016-02-21 12:27:09 484

原创 maven核心概念--插件和目标

maven的核心概念有很多,我们这里先来看Plugins和Goals。在上一篇博客中,我们用两种类型的命令行参数运行了Maven。第一条命令,create。这是一条单个的插件目标,Archetype插件的create目标。第二条命令,install。Maven第二次运行是一个生命周期阶段 –install。为了运行单个的Maven插件目标,我们使用mvn archetype:cre

2016-02-21 11:46:30 621

原创 TDD入门demo

OK,前面的博客整理了一系列的junit相关内容,这里举一个例子TDD实际的编码例子,不管实际编码中是否使用TDD,个人觉得这种思想必须要有。我们不一定在写业务代码之前一定要说是把测试类都写出来,至少脑子里面都应该试试考虑到自己写的一段编码的代码可测性。如果每段代码都可以测试,那么我们可以高枕无忧放心的编码了。那我们现在开始吧。这里举一个简单的业务层代码,对一个用户实现CRUD,然后该业务

2016-02-17 11:29:37 2349 2

原创 第一个简单的maven项目

学习一个新的东西,最快的方式就是实践。所以我们也不用多说什么了,直接拿一个项目来练手。下面的整理取自maven权威指南,在一堆maven资料中,我觉得这本书写的最好。简介我们介绍一个用Maven Archetype插件从空白开始创建的简单项目。 当你跟着这个简单项目的开发过程,你会看到这个简单的应用给我们提供了介绍Maven核心概念的机会。在你能开始使用Maven做复杂的,多模

2016-02-17 00:41:13 935

转载 java -cp用法

原文出处:http://blog.csdn.net/zhuying_linux/article/details/7714194。感谢作者的分享java -cp classpathSpecify a list of directories, JAR archives, and ZIP archives to  search  for  class  files.  Class  pa

2016-02-16 17:25:18 3777

原创 TDD最佳实践

这里就先目前阶段,整理一份TDD的最佳实践,在之后的Xunit测试整理中,这份实践会越来越长,对于这份核心在写测试的时候应该时刻注意。1,在软件开发领域中,从来没有这样的事情:少数的几行代码对大量的代码起着如此重要的作用。这就是测试的意义。2,junit与项目管理工具,比如maven,ant的整合,会让我们的测试如虎添翼。之后maven的整理我会详细介绍这块。3,对于doubl

2016-02-16 16:57:01 1197

原创 自定义测试规则

在junit4X之前的版本,测试的API都是基于继承junit.framework.TestCase的测试类,所以扩展junit要覆盖某些继承行为。junit4X系列之后junit采用注解的方式,所以我们来扩展junit的时候也就多了一种选择。扩展内置的junit行为的主要相关概念是运行器和规则。尽管我们不大会深入自定义插件,但是我们还是应该意识到哪些插件是内置的,以及如何开始编写自定义插件。

2016-02-16 12:01:06 739

原创 自定义测试执行器

使用过spring,然后我们都知道如何使用spring的junit扩展来进行测试,所以我觉得很有必要研究下自定义运行器。比如下面的代码:@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration({ "/spring-mvc-servlet.xml", "/applicationContext-db.xml" })@WebApp

2016-02-15 00:25:25 1437

原创 junit3对比junit4

本文内容摘自junit实战,感谢作者的无私奉献。个人觉得每个开源包的版本对比意义不大,闲来无事,这里就来整理一下好了。本文名为junit3对比junit4,但是我通过这篇博客主要也是想统一的来整理下junit4的一些功能。OK,不废话了,现在我们开始:1,版本的向前兼容和向后兼容所有的junit4测试执行器runner都能够执行junit3测试,代码不需要进行任何修改。但是使用juni

2016-02-09 18:34:03 602

原创 Junit4X系列--hamcrest的使用

OK,在前面的一系列博客里面,我整理过了Assert类下面常用的断言方法,比如assertEquals等等,但是org.junit.Assert类下还有一个方法也用来断言,而且更加强大。这就是我们这里要这里的:Assert的AssertThat()方法和Hamcrest匹配器1,断言抛出的异常2,现在让我们来认真的看下AssertThat()和Hamcrest匹配器吧

2016-02-06 21:45:21 4368

转载 junit4X系列--Assert与Hamcrest

原文出处:http://www.blogjava.net/DLevin/archive/2012/05/12/377960.html。感谢作者无私分享到目前,JUnit4所有的核心源码都已经讲解过了,最后剩下的就是为了兼容性而引入的和JUnit3相关的代码以及Assert中的代码。本节将关注于Assert代码。在JUnit4中,对Assert还引入了hamcrest框架的支持,以使断言可读

2016-02-06 21:17:55 655

转载 junit4X系列源码--Junit4 Runner以及test case执行顺序和源代码理解

原文出处:http://www.cnblogs.com/caoyuanzhanlang/p/3534846.html。感谢作者的无私分享。前一篇文章我们总体介绍了Junit4的用法以及一些简单的测试。之前我有个疑惑,Junit4怎么把一个test case跑起来的,在test case之前和之后我们能做些什么?Junit4执行顺序是怎样的?带着这些问题,我写了这篇文章,仅供参考,不

2016-02-06 13:00:16 901

转载 junit4X系列源码--总体介绍

原文出处:http://www.cnblogs.com/caoyuanzhanlang/p/3530267.html。感谢作者的无私分享。Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例。Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写test case 的类不需要继承TestCase,只需要在

2016-02-06 12:58:36 527

转载 junit4X系列--Exception

原文出处:http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html。感谢作者的无私分享。说来惭愧,虽然之前已经看过JUnit的源码了,也写了几篇博客,但是长时间不写Test Case,今天想要写抛Exception相关的test case时,竟然不知道怎么写了。。。。。好记性不如烂笔头,记下来先~~对于使用验证Test

2016-02-05 22:15:33 435

空空如也

空空如也

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

TA关注的人

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