java
yongche_shi
这个作者很懒,什么都没留下…
展开
-
eclipse启动报错
eclipse启动报错, org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct原创 2022-08-15 16:14:55 · 2472 阅读 · 0 评论 -
Java中的ReentrantLock和synchronized两种锁定机制的对比
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 ——转载 2014-08-25 10:32:09 · 416 阅读 · 0 评论 -
JVM并发机制——内存模型、内存可见性和指令重排序
并发本来就是个有意思的问题,尤其是现在又流行这么一句话:“高帅富加机器,穷矮搓搞优化”。从这句话可以看到,无论是高帅富还是穷矮搓都需要深入理解并发编程,高帅富加多了机器,需要协调多台机器或者多个CPU对共享资源的访问,因此需要了解并发,穷矮搓搞优化需要编写各种多线程的代码来压榨CPU的计算资源,让它在同一时刻做更多的事情,这个更需要了解并发.JAVA内存模型对于我们平时开发的业务应转载 2014-08-25 10:07:27 · 709 阅读 · 0 评论 -
jdk 源码分析
http://blog.csdn.net/jzhf2012/article/details/8540670转载 2014-08-28 08:35:39 · 481 阅读 · 0 评论 -
深入理解HashMap
Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。1、hashmap的数据结构要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构转载 2014-08-28 10:39:04 · 441 阅读 · 0 评论 -
OSGI心得体会
l 什么是模块化与面向对象一样,模块化的目的也是松耦合,高内聚。我们可以理解为模块化是将对象间的互访做了边界划分,即对一组业务相关的对象进行封装,并且提供可能的更高层次的代码访问隔离机制。l 物理模块化 VS 逻辑模块化物理模块化是指应用中的类文件被物理的分割放在不同的模块中,但是每个模块间的互访不受控制,各个模块可以访问模块间的内部对象,只要对象是可访问的。只是是对代码本身进行模转载 2014-08-15 17:12:34 · 489 阅读 · 0 评论 -
Java多线程编程环境中单例模式的实现
Abstract 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制,也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用。这个机制在single-threaded环境下的实现非常简单,然而在multi-threaded环境下却存在隐患。本文重点介绍惰性加载机制以及其在多线程环境下的使用方法。(作者numberze转载 2014-08-29 08:56:02 · 433 阅读 · 0 评论 -
JAVA单例类的线程安全最简洁有效的写法
平时使用单例的情况很多,至于为什么使用在此文章中就不在重复,百度、谷歌一大堆。而单例模式分为立即加载和延迟加载两种,这两种在多线程下都存在安全问题,因此很多时候我们会使用sychronized关键字或者代码块来保证我们的单例是线程安全的。本文向各位推荐一种美观而简洁,并且线程安全的写法。目标:延迟加载由于方法同步会降低效率,因此要提高效率(通常做法会使用双检查[Double-C转载 2014-08-29 08:53:36 · 673 阅读 · 0 评论 -
深入理解JVM--JVM垃圾回收机制
Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都在重复的allocated,然后不停的~析构。于是,有人就提出,能不能写一段程序在实现这块功能,每次创建,释放控件的时候复用这段代码,而无需重复的书写呢?1960年基于MIT的Lisp首先提出了垃转载 2014-08-18 09:56:11 · 609 阅读 · 0 评论 -
中文编译问题
现象同上一篇,当操作系统(主要是Linux系统)的语言环境为非中文时,编译带有中文注释的源文件会出现以下警告:warning: unmappable character for encoding ASCII解决办法:1.修改所有中文注释,改成英文的,肯定没问题。2.在编译前设置环境变量。如果手动编译,先查一下本机的语言环境,可以通过 locale 命令查看,如果 LC_转载 2014-08-19 08:11:06 · 732 阅读 · 0 评论 -
不同classloader装载的类不能互相访问?
一,有两个术语,一个叫“定义类加载器”,一个叫“初始类加载器”。比如有如下的类加载器结构:bootstrap ExtClassloader AppClassloader -自定义clsloadr1 -自定义clsloadr2 如果用“自定义clsloadr1”加载java.lang.String类,那么根据双亲委派最终bootstrap会加载此类,那转载 2014-09-30 14:49:14 · 4198 阅读 · 0 评论 -
java 导出csv文件问题
问题:原创 2014-11-03 11:49:53 · 789 阅读 · 0 评论 -
JAVA默认排序算法问题
1. 为什么写这篇文章这篇文章的根源是在产品中发现了一个诡异的bug:只能在产品环境下重现,在我的本地开发环境无法重现,而双方的代码没有任何区别。最后用remote debug的方法找到异常所在:Exception in thread "main" java.lang.IllegalArgumentException: Comparison method viola转载 2014-12-05 10:26:45 · 775 阅读 · 0 评论 -
struts2 validation.xml 验证
当使用struts2的validation.xml进行验证时,需要注意如下几个方面:I.首先应该注意validation.xml的名字,一定要以Action的类名加“-validation.xml”作为文件名。入LoginAction-validation.xml。II.LoginAction-validation.xml文件必须与Action类放在相同的目录下。III.val转载 2015-04-17 14:31:08 · 528 阅读 · 0 评论 -
struts2 能进入action 不执行execute的问题
问题:之前程序带validation功能,后来把validation去掉了。结果有一天运行突然不执execute函数了。在网上搜索解决办法,各种尝试未果。解决:正郁闷时灵机一动,是不是validation.xml文件还在呀。 1、在源码目录查找没有。 2、在classes目录查找,终于发现了罪魁祸首。删掉后运行一切正常。原创 2015-04-17 14:46:37 · 1459 阅读 · 0 评论 -
java整型数与网络字节序的 byte[] 数组转换关系
工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型。如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整。而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长转载 2015-09-15 13:35:14 · 673 阅读 · 0 评论 -
Apache POI转ppt为图片
最近项目中需要将ppt转成图片, 调研了一下。 发现apache poi可以实现。Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。Apac原创 2016-12-16 16:16:53 · 2224 阅读 · 1 评论 -
java jvm gc算法总结
一、垃圾收集基本的算法1. 引用计数(Reference Counting)为每一个对象添加一个计数器,计数器记录了对该对象的活跃引用的数量。如果计数器为0,则说明这个对象没有被任何变量所引用,即应该进行垃圾收集。收集过程如下:1)减少被收集对象所引用的对象的计数器的值2)将其放入延时收集队列之中引用计数的方法需要编译器的配合。编译器需要为此对象生成额外的代码。如赋值函转载 2014-08-22 17:10:44 · 595 阅读 · 0 评论 -
java中hashcode什么时候用
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用, 我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。 你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么这里就有一个比较严重的问题了转载 2014-08-20 12:59:07 · 1531 阅读 · 0 评论 -
深入理解JVM性能调优
在上文中我们分析了很多性能监控工具,介绍这些工具的目的只有一个,那就是找出对应的性能瓶颈。盲目的性能调优是没有效果的,只有充分知道了哪里出了问题,针对性的结果才是立竿见影的。解决了主要的性能问题,那些次要的性能问题也就不足为虑了!我们知道,性能问题无非就这么几种:CPU、内存、磁盘IO、网络。那我们来逐一介绍以下相关的现象和一些可能出现的问题。一、CPU过高。查看CPU最简转载 2014-07-30 16:22:33 · 525 阅读 · 0 评论 -
jstat 说明
显示java进程内存使用的相关信息jmap pid #打印内存使用的摘要信息jmap –heap pid #java heap信息jmap -histo:live pid #统计对象count ,live表示在使用jmap -histo pid >mem.txt #打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向的文件jmap -dump:format=b,file=mem转载 2014-07-29 15:15:10 · 570 阅读 · 0 评论 -
jmap和jhat查看java启用的http端口
打印heap信息Java代码 D:\>jmap -histo 4636 > d:log.log 生成heap信息并生成二进制文件Java代码 D:\>jmap -dump:live,format=b,file=d:\log.log 4636 Dumping heap to D:\log.log ...转载 2014-07-29 15:18:21 · 1049 阅读 · 0 评论 -
jvm调试工具说明
本文转自:http://blog.csdn.net/kelly859/article/details/5827365 jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的jav转载 2014-07-29 15:21:07 · 1861 阅读 · 0 评论 -
Java RMI之HelloWorld篇
Java RMI之HelloWorld篇Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的E转载 2014-08-04 08:21:33 · 423 阅读 · 0 评论 -
jvm 日志输出说明
在大型的java运用中,要进行程序调优,指定一个合适的垃圾回收机制是必不可少的,那如何可确定某gc是否使得程序最优化呢?我们可以查看jvm打印出 的gc日志来分析,并做出进一步优化,而目前并没有一篇文章明确的指明java中各种gc算法打印出日志的格式,以及如何阅读。所以接下来本文将试着边介 绍各种垃圾回收机制边解释该回收机制下log的格式。1,垃圾收集算法 1.1 引用计数法(Refere转载 2014-07-29 15:22:29 · 893 阅读 · 0 评论 -
jvm 文章,日志说明
转帖地址:http://blog.csdn.net/kangojian/article/details/5289410堆大小搭配要注意JVM堆内存实际分成好几种,可以详细配置吞吐量 暂停(垃圾回收的时候经常带来程序暂停)选择并行垃圾回收能大大降低暂停时间,稍微提高一点CPU使用先看看堆内存种类:垃圾回收主要是对Young Generation块和Old Generation块转载 2014-07-29 15:26:01 · 732 阅读 · 0 评论 -
Java之JMX
[动态修改程序的配置的思想值得学习!] 一、JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网站),它是在24小时不间断运行的,那么你可能会想要“监控”这个软件的运行情况,比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件,比如现在访问人数比较多,你想把数据连接池设置得大一些。转载 2014-08-04 08:57:30 · 395 阅读 · 0 评论 -
jvm参数说明
做了这么多年java,自以为算是熟悉,其实还差得远,啥也别说了,还是踏踏实实地学吧。今天总结一下常用的JVM的启动参数。参数类别参数项说明标准参数(-,所有的JVM实现都必须实现这些参数的功能,而且向后兼容)-client以client模式启动jvm,这种方式启动速度快,但运行时性能和内存管理效率不高,适合客户转载 2014-07-29 14:54:10 · 566 阅读 · 0 评论 -
java 内存监控使用
Java语言不允许开发者管理内存,内存是靠jvm 统一管理,的内存对开发者来说是透明的。但有时需要了解内存内部活动,就需要通过一些工具实现。介绍两个SUN 的JDK中的工具 jmap jstat-------------------------jmap 如果没有去官网下------------------------------ 一.jmap 1转载 2014-07-29 16:06:11 · 678 阅读 · 0 评论 -
JAVA JNDI简介
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI到底起什么作用?要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”这个问题来探讨。1. 没转载 2014-08-05 08:28:25 · 432 阅读 · 0 评论 -
探秘Java虚拟机 gc的监控
1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与jmap -he转载 2014-07-30 13:39:21 · 504 阅读 · 0 评论 -
jvm如何判断对象已死?
在java的垃圾回收中,jvm是如何判断堆中的对象是否已死呢?主流的判断方法有两种。1.引用计数算法: 这种算法的思路是如果某一个对象被别的对象引用,那么就把他们引用计数器加上1,这样当进行垃圾回收时如何判断该引用的数量为0,此时就代表没有进行任何对象对其进行引用,这种方法判断效率很高,在很多情况下是个不错的选择,例如微软的COM,AS3的FlashPlayer,Python语言等都是采转载 2014-07-31 12:59:11 · 400 阅读 · 0 评论 -
深入研究 Java Synchronize 和 Lock 的区别与用法
在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。我们先从最简单的入手,逐步分析这2种的区别。一、synchronized和lock的用法区别synchronized:在需要同步的对象中加入此控制,synchronized可以加转载 2014-07-31 14:58:00 · 664 阅读 · 0 评论 -
【J2EE性能分析篇】JVM参数对J2EE性能优化的影响
一切J2EE应用都是基于JVM的,那么对于JVM的设置和监控,成为J2EE应用程序性能分析和性能优化的必然手段。今天Sincky和大家交流该话题。这里以Tomcat环境为例,其它WEB服务器如Jboss、Weblogic、Websphere完全一致。【认识JVM】 首先我们来看一张图,这是目前JDK1.6版本自带的JVM性能监控工具VisualVM的一个插件VisualGC的转载 2014-07-30 16:16:43 · 424 阅读 · 0 评论 -
java缓存技术
开始讨论缓存之前,让我们先来讨论讨论另外一个问题:理论和实践.从ahuaxuan接触的程序员来看,有的程序员偏实践,有的程序员偏理论,但是这都是不好的行为,理论和实践同样重要,我们在做很多核 心的算法的时候,没有理论根本无从下手,而在我们多年的实践中,不总结理论就不能加深自己的理解.所以理论和实践同等重转载 2014-07-31 08:23:25 · 460 阅读 · 0 评论 -
jvm性能调优
网上看到一位javaeye的同志写的文章,感觉总结的比较好,虽然也研究过这些,但没有系统的总结过,觉得是好文章,先收藏了,现在转载下来!数据类型 Java虚拟机中,数据类型可以分为两类:基本类型 和引用类型 。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的转载 2014-07-30 15:29:56 · 380 阅读 · 0 评论 -
jvm gc说明
转帖地址:http://hi.baidu.com/mailluzhou/item/98052fdc701baade241f4008一、相关概念基本回收算法引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题转载 2014-07-29 15:15:30 · 484 阅读 · 0 评论