`
文章列表
一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出 ...
一、commons-dbutils简介    commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。   commons-dbutilsAPI介绍: org.apache.commons.dbutils.QueryRunner org.apache.commons.dbutils.ResultSetHandler   工具类 org.apache.com ...
  互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端 ...
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网 ...

Java GC 详解

1、基本回收算法 (1) 引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 (2) 标记-清除(Mark-Sweep) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。 (3)复制(Copying) 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中 ...
堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space。 Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Young Generation)。年老代和年轻代的划分对垃圾收集影响比较大。 年轻代 所有新生成的对象首先都是放在年轻代。年轻代的目标就是尽可能快速的收集掉那些 ...
http://blog.csdn.net/paincupid/article/details/48180589 http://blog.csdn.net/paincupid/article/details/48185597 http://blog.csdn.net/qinpeng100423/article/details/8114217
在看spring-mvc的源码的时候,看到在解析handler方法时,有关于获取桥接方法代码,不明白什么是桥接方法,经过查找资料,终于理解了什么是桥接方法。 什么是桥接方法 桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法。 我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法,在字节码中桥接方法会被标记为ACC_BRIDGE和ACC_SYNTHETIC,其中ACC_BRIDGE用于说明这个方法是由编译生成的桥接方法,ACC_SYNTHETIC说明这个方法是由编译器生成,并且不 ...
在java编译过程中会出现很多警告,有很多是安全的,但是每次编译有很多警告影响我们对error的过滤和修改,我们可以在代码中加上 @SuppressWarnings(“XXXX”) 来解决 例如:@SuppressWarnings("deprecation")表示不显示使用了不赞成使用的类或方法时的警告 具体的XXXX的意义可以参考博文 http://www.thebuzzmedia.com/supported-values-for-suppresswarnings/   Update #1: All these annotations are still va ...
        最近发现往vmware里的ubuntu虚拟机拷贝大文件时,拷贝完毕后,目标文件夹里没有文件,但是磁盘空间已用空间却正常增大,猜测是在缓存目录里,经查找,缓存目录为:~/.cache/vmware/drag_and_drop,在这里可以找到拷贝的文件。
        fastjson是用反射的,如果在实体类里存在getXxx()方法,生成的json字符串中就会存在一个key为xxx的值,而无需实体类中有xxx这个属性,如果getXxx()方法中调用了JSON.toJSONString(this),就会引起无限递归,最后虚拟机内存溢出,报java.lang.StackOverflowError。
在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查。   比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数。 而在Spring的web项目中,我们可以介入Spring的启动过程。我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口: package com.yk.test.executor.processor public class InstantiationTracingBeanPostProcesso ...

javac命令初窥

    博客分类:
  • Java
注:以下红色标记的参数在下文中有所讲解。 用法: javac <options> <source files> 其中, 可能的选项包括:   -g                         生成所有调试信息   -g:none                    不生成任何调试信息   -g:{lines,vars,source}     只生成某些调试信息   -nowarn                    不生成任何警告   -verbose                   输出有关编译器正在执行的操作的消息   -deprec ...

update-rc.d使用

在Linux系统下,一个Services的启动、停止以及重启通常是通过/etc/init.d目录下的脚本来控制的。然而,在启动或改变运行级别时, 是在/etc/rcX.d中来搜索脚本。其中X是运行级别的number。本文将解释如何启动、关闭和修改服务的运行。当你在Debian下安装一个新的 服务,比如Apache2,安装完成后,默认情况下它会启动,并在下一次重启后自动启动。但是如果你不是一直需要这个服务,只在需要的时候启用它,你可以 禁用它。直到你需要使用的时候,执行如下指令: /etc/init.d/apache2 start 要实现这个目的,你需要先在/etc/rcX.d目录中删除所有a ...
1、方法一,编辑rc.loacl脚本   Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。当然要添加到语句:exit 0 前面才行。如: 复制代码 代码如下 sudo vi /etc/rc.local 然后在 exit 0 前 ...
Global site tag (gtag.js) - Google Analytics