java基础、规范
文章平均质量分 70
abing37
这个作者很懒,什么都没留下…
展开
-
java 浮点数为什么精度会丢失
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解:public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; double...2010-07-15 22:30:21 · 358 阅读 · 0 评论 -
32位机器下的一个java.lang.OutOfMemoryError错误分析
昨天在本人windows机器(32位的 )上调试一个代码的时候报了一个如下错误java.lang.OutOfMemoryError: unable to create new native thread 第一眼看上去是OOM,有点傻眼,因为我的内存启动参数是“-Xms1024m -Xmx1024m -Xss45m”,而我很清楚这个代码大概的内存消耗。奇怪的是进程还没退出,于是打开v...2011-10-17 11:19:17 · 164 阅读 · 0 评论 -
如果要用java实现算法,一定慎用递归
现象:递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述、表现和代码结构理解上,递归都是不错的选择!但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而是转换成的非递归实现。最近在实现一个比较复杂算法的时候,尝试了一下,非递归实现相比递归实现速度上能提升1/3。以下面一个简单的例子来说:(注:为了描述简单,所以这里只用一个简单...2011-04-06 20:41:25 · 308 阅读 · 0 评论 -
【JVM】HotSpot JVM内存管理和GC策略总结
JVM的相关知识是学习java高级特性必须要去深入学习的。平时也有一些学习和实践,不过总结比较少。今天有时间总结一下最基础的内存模型和GC策略的知识,在此记录一下。 hotspot jvm内存模型1.内存模型hotspot的内存模型很多地方都有类似总结,我也简单总结了一下,大概可以用下图表示: 关于几个分区的描述定义1.线程栈:线程创建是会为每个线程创建一个线程栈,...2011-12-13 22:05:48 · 383 阅读 · 0 评论 -
[NoSQL]MongoDB初体验
因为未来业务发展的一个需求里的,考虑要用到NoSql,所以做了一些预研。今天简单体验了下mongdb,感觉挺合适的,有点热血沸腾。简单记录下mongoDB的一些初体验。mongoDB的特性有哪些?以下是官网的定义:MongoDB (from "humongous") is a scalable, high-performance, open source NoSQL da...2012-01-05 16:06:34 · 117 阅读 · 0 评论 -
【java并发】基于JUC CAS原理,自己实现简单独占锁
synchronized的基本原理回顾在jvm内部,所有对象都含有单一的锁,jvm负责跟踪监视被加锁次数,叫做对象监视器。当线程第一次给对象加锁的时候,计数器会加1,离开时会减1.同样任务是可重入的,每次重入也是加1,离开减1. synchronized是独占式的,拿到对象锁才能继续,没有获取到锁就会阻塞。JUC CAS乐观锁基本原理synchronized就是一种独占锁,会导致...2012-02-14 13:47:56 · 240 阅读 · 0 评论 -
【java并发】juc高级锁机制探讨
最近在看一些juc相关的设计和源码,接上文:【java并发】基于JUC CAS原理,自己实现简单独占锁本文探讨一下juc里面提供的一些高级锁机制和基本原理。 JUC高级锁机制简介Juc提供了高级锁的一些特性和应用,如:ReentrantLock:和synchronized具有差不多的语义,独占锁,同时只有一个线程能...2012-02-23 00:52:45 · 160 阅读 · 0 评论 -
【java并发】juc Executor框架详解
Executor框架是juc里提供的线程池的实现。前两天看了下Executor框架的一些源码,做个简单的总结。线程池大概的思路是维护一个的线程池用于执行提交的任务。我理解池的技术的主要意义有两个:1. 资源的控制,如并发量限制。像连接池这种是对数据库资源的保护。2. 资源的有效利用,如线程复用,避免频繁创建线程和线程上下文切换...2012-02-26 13:55:32 · 356 阅读 · 1 评论 -
【java基础】如何设计java应用程序的平滑停止
java应用程序退出的触发机制有:1.自动结束:应用没有存活线程或只有后台线程时;2.System.exit(0);3.kill 或 ctrl+C;4.kill -9 强制退出; 如何做到应用程序平滑停止程序的退出就像关机一样,我们希望关机时平滑关机,保证所有应用程序的数据都保存了。就像现在在写得blog,希望关机的时候能被保存好到草稿箱里。我们的的jav...2012-03-05 23:44:30 · 211 阅读 · 0 评论 -
【maven】多子模块maven模板工程archetype创建过程
最近项目里需要创建一个多模块(子工程)的模板项目,所以研究了一下maven的archetype plugin。创建了一个包含多个子模块工程的项目模板。记录下过程。 一个模板工程任务就是创建一个或多个默认的工程,并为每个工程填充好默认的一些文件和配置。同时要抽象出生成的工程需要的一些属性,做到这些属性可动态配置。在maven里通过定制的archetype来生成项目模板。ma...原创 2012-04-02 20:55:11 · 635 阅读 · 0 评论 -
java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)
java日志,需要知道的几件事如果对于commons-loging、log4j、slf4j、LogBack等都已经非常清楚了,可以忽略本文。几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当然如果对这块有更深刻理解的同学,也贡献出自己的知识和见解。一、 概念Commons-lo...2011-02-28 17:12:46 · 471 阅读 · 0 评论 -
[监控]Btrace监控简单笔记
前阵子看了公司网站的一个cache 命中率统计的btrace监控脚本,感觉这个玩意功能挺强大,对应用监控有很大实践意义。也顺便把btrace简单学习了一下,未涉及原理方面的内容,只是使用层面的东西,简单笔记总结一下。 安装Linux下:在http://kenai.com/projects/btrace下载btrace-bin.tar.gz,并解压,设置环境变量:e...2011-09-09 10:57:05 · 149 阅读 · 0 评论 -
JVM问题诊断常用命令:jinfo,jmap,jstack
1.jinfo描述:输出给定java进程所有的配置信息。包括java系统属性和jvm命令行标记等。用法:jinfo [ option ] pidjinfo [ option ] executable corejinfo [ option ] [server-id@]remote-hostname-o...2010-08-17 17:55:34 · 172 阅读 · 0 评论 -
java Enum 基本原理
Java Enum 基本原理 1. 关于 Java Enum学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。...2010-06-07 21:03:22 · 115 阅读 · 0 评论 -
JDK反射之JDK动态proxy
JDK动态代理 JDK 动态代理是 java 反射的一个重要特性。它在某种方面为 java 提供了动态性的特性,给应用带来了无限的空间。大名鼎鼎的 Hessian 、 Spring AOP 基于动态代理实现。本文将简单的介绍 JDK 动态代理使用。 1.关于代理模式 代理模式是非常常用的一种设计模式,在我们的应用中经常被使用。一般场景是,我们有一个现成的类,它的功能比...2010-06-07 21:27:22 · 133 阅读 · 0 评论 -
java内部字符编码浅析
java内部字符编码浅析 本周遇到一个java乱码问题,于是对java的编码问题做了一些实验和了解。简单分析如下:先看下如下代码:import java.io.UnsupportedEncodingException; public class CharSetTest { public static void main(String[] args) ...2010-06-07 21:43:00 · 151 阅读 · 0 评论 -
一个枚举类的方法设计
public enum ActionType { A, B, C, D, E; public static boolean isWillUpdate(ActionType type) { if (A.equals(type) || B.equals(type)) { return true;...原创 2010-06-21 15:28:12 · 147 阅读 · 0 评论 -
JDK7 AIO 初体验
JDK7 AIO初体验JDK7已经release一段时间了,有个重要的新特性是AIO。今天趁闲暇,简单体验了下,简单分享如下:关于AIO的概念理解关于AIO的概念,仅谈谈个人的一点理解。可能不到位,请大家指出。Io的两个重要步骤:发起IO请求,和实际的IO操作。在unix网络编程的定义里异步和非异步概念的区别就是实际的IO操作是否是由操作系统完成。如果是就是异步...2011-08-17 19:20:01 · 158 阅读 · 0 评论 -
【Spring】IOC容器并发条件下,可能发生死锁
1.背景 上周在生产环境应用启动时,发生应用频频发生死锁的现象。原因是因为spring IOC容器还未初始化完成,就有工作线程调用context.getBean()来获取容器里的对象。具体产生死锁的原因条件有:1. 应用启动的时候Main线程进行spring容器初始化。2. ...2011-08-28 17:07:49 · 581 阅读 · 0 评论 -
【性能】Java BigDecimal和double性能比较
我们知道java里面有个BigDecimal,可以解决我们的精度丢失问题。但是很少关注其性能情况,因为一般来说可以忽略不计的。也确实,解决大数据量运算java本身并不适合。 本人愚笨,很早之前用java解决一个大数据量运算的算法,对性能要求很高。中间用了BigDecimal,注意到其性能的一些情况,发现其性能是dou...2011-08-28 20:06:30 · 2939 阅读 · 3 评论 -
DBCP数据源配置项记录
网站最近发生了数据库连接爆掉的问题。排查了下各个应用存在空闲连接过多的情况。我们部门的一个应用使用dbcp连接池,也存在空闲连接过多情况。之前是根据网站的统一配置,存在空闲连接保持过多的情况,在修改过程中在官网上把这些配置项重新看了一遍。在此记录一下! 官方参考url: http://commons.apache.org/dbcp/configuration.html...2011-09-01 20:22:43 · 195 阅读 · 0 评论 -
Xml ResourceBundle简单实现
ResourceBundle主要是用于和本地语言环境相关的一些资源绑定。特别是String资源。从国际化的设计角度看,一般在代码里不编写和语言环境相关的东西。比如在代码里编写和语言环境相关的错误提示或信息。以下面枚举为例:public enum WeekdayEnum { Monday, Tuesday, Wednesday, Thursday, Friday, Saturd...原创 2012-04-17 21:45:04 · 229 阅读 · 0 评论