`
singleant
  • 浏览: 375260 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
  现象 : 递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述、表现和代码结构理解上,递归都是不错的选择! 但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而是转换成的非递归实现。 最近在实现一个比较复杂算法的时候,尝试了一下,非递归实现相比递归实现速度上能提升1/3。 以下面一个简单的例子来说: (注:为了描述简单,所以这里只用一个简单的例子。这个例子可以用更简单的数学公式来实现,所以请大家不要过分在意。 重点是想说明递归可能带来的一些问题) 输入参数:N 输出结果: log1+log2+log3+....+logN 两种实现代 ...
java日志,需要知道的几件事 如果对于commons-loging 、log4j 、slf4j 、LogBack 等都已经非常清楚了,可以忽略本文。几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当然如果对这块有更深刻理解的同学,也贡献出自己的知识和见解。 一、     概念 Commons-logging : apache最早提供的日志的门面接口。避免和具体的日志方案直接耦合。类似于JDBC 的api 接口,具体的的JDBC driver 实现由各数据库提供商实现。通过统一接口解 ...
1.jinfo 描述:输出给定 java 进程所有的配置信息。包括 java 系统属性和 jvm 命令行标记等。 用法: jinfo [ option ] pid jinfo [ option ] executable core jinfo [ option ] [server-id@]remote-hostname-or-IP 例子: jinfo pid 得到结果如下: JVM version is 14.0-b16 Java System Properties: ...
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double d2 = 20014999; System.out.println("f=" + f); System.out.println("d=&quo ...
public enum ActionType { A, B, C, D, E; public static boolean isWillUpdate(ActionType type) { if (A.equals(type) || B.equals(type)) { return true; } return false; } }   以上是一个枚举类ActionType,里面包括了5中操作类型A,B,C,D,E。 其中这5种操作类型分为 ...
Tomcat 分为很多组件,这些组件一起协同工作。 这些组件包括: Server,Service,Connector,Engine,Host,Context,Wrapper. 这么一堆组件,看起来比较复杂,怎么去理解呢?本文主要来个top level view 。   回到我们最初的对servlet 容器的理解,一个servlet 容器最重要的功能无非就是接受http 请求,解析http 请求生成request ,并调用servlet ,生成响应response 。那么以上工作的入口在哪里,没错,那就是Connector 组件。先来认识一下Connector 组件。   ...
最近在研究tomcat容器,打算写一系列文章和大家一起分享。本文第一篇作为引子,不涉及任何tomcat的底层实现。   我们知道servlet规范: 规定servlet的生命周期:init->service->doXXX-->destory()。 还规定一个请求必须被封装成HttpServletRequest再由servlet的service方法来处理,并用HttpServletResponse来表示返回对象。 还规定Session必须被封装成HttpSession的形式。 Servlet规范还规定了Filter过滤器可以拦截请求做一些处理。 Servlet规范还 ...
 java内部字符编码浅析     本周遇到一个java乱码问题,于是对java的编码问题做了一些实验和了解。简单分析如下: 先看下如下代码: import java.io.UnsupportedEncodingException; public class CharSetTest { public static void main(String[] args) throws UnsupportedEncodingException { String test = " 篮球 " ; byte [] defaultResult ...
JDK动态代理   JDK 动态代理是 java 反射的一个重要特性。它在某种方面为 java 提供了动态性的特性,给应用带来了无限的空间。大名鼎鼎的 Hessian 、 Spring AOP 基于动态代理实现。本文将简单的介绍 JDK 动态代理使用。   1.关于代理模式   代理模式是非常常用的一种设计模式,在我们的应用中经常被使用。一般场景是,我们有一个现成的类,它的功能比较的完善了,但是还是存在某些欠缺,这个时候我们需要去扩展一些新的功能,但又不想去重造轮子,这个时候可以使用代理类来替代原来的目标类,通过组合的模式,增加一种为目标类增加一些额外的功能。 代理模式的类 ...
Java Enum 基本原理 1. 关于 Java Enum 学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后,可以更贴近的表示这种常量。 2. 如何使用 Java Enum 简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。 ...
Global site tag (gtag.js) - Google Analytics