
java深度探究
文章平均质量分 71
重温java,从使用回归到对原理的研究
架构师思考实践
大数据、实时计算、离线计算
展开
-
java使用--Exception 异常信息 StackTraceElement
在某些场景下,直接使用e.printStackTrace(); 或者使用log4j打印异常,在日志收集系统中不好检索。下面方法将异常拼接成一行,使用 StackTraceElement。package com.ajl.usage.exception;/** * @Author anjinlong * @create 2020-10-02 17:05 * @description description */public class ExceptionUsage { ...原创 2020-10-02 20:41:37 · 1677 阅读 · 0 评论 -
java用法--HashMap putAll
类:HashMap方法:putAll()作用:将map2的数据全部放入到map1中,如果map1中已经存在key则更新,如果不存在则插入。测试代码:public static void putAllTest() { System.out.println("putAll 将map2的数据全部放入到map1中,如果map1中已经存在key则更新,如果不存在则插入。"); HashMap<String, String> map1 = new H.原创 2020-10-02 20:37:29 · 1086 阅读 · 0 评论 -
log4j 实例 , 浅析
一、新建log4j.propperties,放在工程的src目录下。#fileAppenderlog4j.rootCategory = DEBUG,file,consoleAppenderlog4j.appender.file = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.File = D:/logs/T原创 2013-10-06 09:26:11 · 1018 阅读 · 0 评论 -
使用dom4j创建和解析xml
package xml;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;import java.util.Iterator;import java.util.List;import javax.xml.parsers.DocumentBui原创 2013-10-05 23:12:18 · 863 阅读 · 0 评论 -
Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。转载 2013-10-05 22:47:05 · 1012 阅读 · 0 评论 -
JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理第1个异常是 java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监 听。此时用netstat –an命令转载 2013-09-26 17:21:21 · 1203 阅读 · 0 评论 -
java Socket的怪异之处
怪异之一:connect(SocketAddress endpoint):这个方法,尝试连接server端,如果连接不上,就抛出IOException异常。如果连接成功了,就继续执行下一步的代码。怪异之二:boolean isConnected() :这个方法的结果仅仅代表这个socket曾经成功连接到了server,但并不表示现在这个时刻它和server仍保持连接状态。有心转载 2013-09-21 21:50:12 · 692 阅读 · 0 评论 -
jvisualvm远程监控Tomcat
网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结。 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 。 在jdk1.6 中 Oracle 提供了一个新的可视化的。 JVM 监控工具 Java VisualVM 。jvisualvm.exe 在JDK 的 bin 目录下。 双击启动 Java Visua转载 2013-09-10 11:41:50 · 1470 阅读 · 0 评论 -
浅析 Java Thread.join()
一、在研究join的用法之前,先明确两件事情。1.join方法定义在Thread类中,则调用者必须是一个线程,例如:Thread t = new CustomThread();//这里一般是自定义的线程类t.start();//线程起动t.join();//此处会抛出InterruptedException异常 2.上面的两行代码也是在一个线转载 2013-06-01 16:35:01 · 650 阅读 · 0 评论 -
ubuntu12.10安装jdk1.7
1、去官网下载JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html2、root权限并解压,复制到/usr/lib/jvmsudo sutar -zxvf jdk-7u21-linux-i586.tar.gz mv jdk1.7.0_21/ /usr/lib/jvm3、配置环境变量ged原创 2013-04-20 10:58:27 · 871 阅读 · 0 评论 -
有关import sun.audio.AudioPlayer(或者其它文件)的问题
今天白天在工作中使用Eclipse编译代码的时候,在播放声音的代码中报了这么一个错误 import sun.audio.AudioPlayer; import sun.audio.AudioStream; 上面这两句都报“Access restriction: The type AudioPlayer is not accessible due to restriction on转载 2013-04-08 14:32:53 · 805 阅读 · 0 评论 -
eclipse 3.6的VE配置 Visual Editor for eclipse3.6
【转】eclipse 3.6的VE配置 Visual Editor for eclipse3.6擦。eclipse3.6的VE竟然配好了。很简单。记下来,以后备用。一、下载以下4个软件1、Eclipse3.6http://www.eclipse.org/2、VE2010-08-29: prelininary eclipse 3.6 (转载 2013-04-06 21:37:08 · 904 阅读 · 0 评论 -
javax.mail 发邮件 添加附件
都是javax.mail 的使用,没有太多要讲的,代码贴上自己试验吧private MimeMessage mailMessage; // 邮件对象 private Multipart mp;// 附件添加的组件 private List files = new LinkedList();// 存放附件文件 /** * 增加发送附件 * * @param filename原创 2014-11-30 16:34:29 · 2650 阅读 · 0 评论 -
java 生成xml 编码 utf-f 、 gb2312
没有难度,直接上代码了/** * * @param fileName */ public static void createXmlUtf_8(String fileName) { Element root = DocumentHelper.createElement("root"); Document document = DocumentHelper.create原创 2014-11-30 14:25:43 · 4972 阅读 · 0 评论 -
volatile和synchronized 区别
1、什么是volatileVolatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。原创 2014-04-20 11:24:06 · 1454 阅读 · 0 评论 -
Java性能小技巧
局部决定整体。一个应用的整体性能取决于每个组件的性能。下面是一些帮助你提高应用性能的Java编程技巧:编程技巧原因及策略避免重复创建对象为什么:更少的对象会需要更少的垃圾回收使用的空间越少,应用的性能越好怎么做:重复利用一个对象,而不是在每次需要的时候都去创建一个功能一样的对象(这样做)转载 2013-12-02 23:21:55 · 796 阅读 · 0 评论 -
100个高质量Java开发者博客
本文由 ImportNew - 夏千林 翻译自 programcreek。如需转载本文,请先参见文章末尾处的转载要求。ImportNew注:原文中还没有100个。作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表。欢迎你也参与推荐优质的Java开发博客。(声明一下:我们的数学不是体育老师教的!:) )本文的主要目的是收集全球范围内100个高质量Java开发者博客转载 2013-12-02 23:19:22 · 1348 阅读 · 0 评论 -
解决 - java.lang.OutOfMemoryError: unable to create new native thread
工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题、分析问题、解决问题。 一、认识问题:首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序:Java代码转载 2013-09-28 13:35:08 · 1863 阅读 · 0 评论 -
Socket的错误码和描述(中英文翻译)
Socket的错误码和描述(中英文翻译)//下面是Socket Error的错误码和描述:Socket error 0 - Directly send error Socket error 10004 - Interrupted function //call 操作被终止 Socket error 10013 - Permission denied //c访问被拒绝转载 2013-09-26 17:25:54 · 1722 阅读 · 0 评论 -
Eclipse java swing开发环境
最近由于想看java方面的东西,所以开始了使用Eclipse的历程。 Eclipse是一个开源的IDE,是IBM出品的。本身是一个插件构成的王国。 1.Eclipse 软件。 http://www.eclipse.org/downloads/ 刚开始选择的是这个:Eclipse IDE for Java EE Developers (189 MB) 后面听从某些人建议,改成转载 2013-04-05 18:00:35 · 1030 阅读 · 0 评论 -
eclipse使用技巧
关于eclipse的使用方面,其实有些东西都是小技巧的东西,知道了后,对编程会带来很大的方便。 一.老是使用鼠标操作,有的功能要点好多次鼠标,eclipse都有哪些热键呢?平时使用eclipse编程中,我最常用的三个组合热键: 1.alt+/ 代码提示功能,编程中首选热键 熟悉delphi编程的同事经常把它改为ctrl+space 2.ctrl+shif转载 2013-03-31 20:42:39 · 890 阅读 · 0 评论 -
jdbc初步(转)
1. Jdbc的六个编程步骤1. 注册一个驱动注册驱动程序有三种方式: 方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”); JAVA 规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动转载 2013-02-16 18:08:22 · 678 阅读 · 0 评论 -
String、StringBulider、StringBuffer 的区别
String 的大小是固定的,在进行+运算时会生成新的对象。StringBulider和StringBuffer都是动态的,但是StringBulider不是线程安全的,而StringBuffer是线程安全的。建议:字符串不经常修改可以使用String字符串经常修改且单线程使用,可以用StringBulider字符串经常修改且多线程使用,推荐StringBuffer原创 2014-04-30 14:57:54 · 1148 阅读 · 0 评论 -
ReentrantLock与synchronized的区别
总的来说,lock更加灵活。主要相同点:Lock能完成synchronized所实现的所有功能不同:1.ReentrantLock功能性方面更全面,比如时间锁等候,可中断锁等候,锁投票等,因此更有扩展性。在多个条件变量和高度竞争锁的地方,用ReentrantLock更合适,ReentrantLock还提供了Condition,对线程的等待和唤醒等操作更加灵活,一个Reentrant原创 2014-04-20 12:07:20 · 1966 阅读 · 0 评论 -
Vector和ArrayList的区别
面试题中经常看到。相同点:都实现了List接口,都是有序的,可以按照下标去取数据,可以存放重复数据。不同点:(1)线程安全性Vector是线程安全的,在写多线程并发时可以考虑使用Vector。ArrayList不是线程安全的,速度相对较快一点。(2)数据增长特点当初始分配的空间使用完后,Vector会再分配原来一倍的空间;ArrayList会分配原来一半的空间。原创 2014-04-01 23:05:03 · 1010 阅读 · 0 评论 -
生产者消费者问题 --java实现
生产者消费者问题,又称有限缓冲区问题。要解决两个问题:1、对缓冲区中资源进行同步(存和取)2、当缓冲区满时,不可存,生产者需要等待;当缓冲区空时,不可取,消费者需要等待原创 2014-03-26 00:06:12 · 2025 阅读 · 1 评论 -
java中会存在内存泄漏吗,请简单描述。
会。java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。 1.集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没转载 2014-03-20 21:53:12 · 1252 阅读 · 0 评论 -
Google Java编程风格指南
January 20, 2014作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。目录前言源文件基础源文件结构格式命名约定编程实践J转载 2014-02-09 20:04:43 · 1448 阅读 · 0 评论 -
java基础 ---windows 配置jdk 环境变量
很基础的东西,mark一下,需要的可以参考配置3个系统环境变量:大小写无所谓1JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径(假设安装在D:\jdk1.4),此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,Eclipse等都需要依靠此变量)。 2 新建CLASSPATH为java加载类(class原创 2014-01-11 21:02:20 · 1243 阅读 · 0 评论 -
并发编程----共享变量
在编写并发程序时,使用共享变量要慎用,先说一下最近写程序是出现的问题,在考虑同步。写分布式程序,如果想用共享的变量,根据经验最好放到公共缓存中,例如memcache,这样集群中的节点都可以使用,如果只在程序中使用静态变量,只有本地的程序可以使用。在考虑一下同步问题,之前在学操作系统时,有很多同步的方法,使用信号量,PV操作,这个在实际应用中可以进一步探究。原创 2013-12-13 22:44:18 · 1996 阅读 · 0 评论 -
聊聊并发(六)——ConcurrentLinkedQueue的实现原理分析
1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurren转载 2013-09-09 18:34:12 · 834 阅读 · 0 评论 -
CenOS下安装jdk
1. 安装JDK1.7.0下载完成后在取得root权限后执行:[root@sea sea]# sudo rpm -ivh /目录/jdk-7-linux-x64.rpm执行结果:Preparing... ################################### [100%]1:jdk ##################################### [原创 2013-08-11 09:17:44 · 909 阅读 · 0 评论 -
java线程池ThreadPoolExecutor
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;public class ThreadPoolTest { public static void main(String...原创 2016-03-26 23:03:05 · 586 阅读 · 0 评论 -
java HashMap 实现原理探究
概念hash翻译过来是哈希,还有种叫法散列,学过数据结构的应该知道。哈希就是将任意长度输入值通过哈希算法得到一个固定长度输出值。这里不重点介绍hash算法。java 的hashmap实现1、存储结构首先我们知道 map中存的元素是Entry。hashmap类使用一个Entry数组来实现存储,数组中每个元素可能对应一个链表/** * The table, res原创 2014-04-16 22:15:25 · 1298 阅读 · 0 评论 -
java中 redirect 和 froward 区别
相信大家在面试中经常回遇到这个问题,正好最近在做一个跳转的东西,总结一下。1、概念、原理(1)redirect从名字上也很好理解,重定向,就是客户去请求服务器,服务器接到请求后,告诉客户,要重新请求另一个地址,并把地址告诉客户,客户再去请求。(2)forward 我理解为,服务器去请求,并且有当前服务器返回结果给客户。例如服务器接到一个请求,但是请求的资源需要再次跳转,服务器要原创 2014-03-28 20:51:37 · 2263 阅读 · 0 评论 -
String s=new String("abc") 创建了几个对象?
答案是2个,大家肯定都知道。面试中经常出现的问题,今天认真分析一下。1、 Sting s 定义了一个变量s,没有创建对象;2、 = 赋值,将某个对象的引用(句柄)赋给s ,没有创建对象;3、 “abc” 创建一个对象;4、 new String() 创建一个对象。首先,总结一下java创建对象的方式:new、clone、反射、反序列化再看一下 St原创 2014-03-28 22:35:50 · 15317 阅读 · 11 评论 -
java中的map -- HashMap Hashtable LinkedHashMap 和TreeMap
map是一个接口,提供了四个实现类HashMap Hashtable LinkedHashMap 和TreeMapmap作为key-value的存储结构,在程序时经常使用。1、HashMap比较常用,根据key 的hashcode来存储数据,遍历时,取得数据随机。线程不安全,如果需要同步,可以用 Collections的synchronizedMap方法使HashMap原创 2014-03-28 18:05:17 · 1885 阅读 · 0 评论 -
java 线程同步--卖票问题
线程同步方法:(1)、同步代码块,格式:synchronized (同步对象){//同步代码}(2)、同步方法,格式:在方法前加synchronized修饰问题:多个人同时买票。1、资源没有同步。package thread;public class Tickets implements Runnable { priv...原创 2014-03-25 21:46:16 · 1599 阅读 · 0 评论 -
PermGen space错误解决方法
前两天tomcat启动后报了异常:java.lang.OutOfMemoryError: PermGen spaceJava HotSpot(TM) 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM ma原创 2014-03-23 23:20:36 · 3081 阅读 · 0 评论 -
JVM 中各区的作用 --《深入理解JVM》读书笔记
主要分区:程序计数器、虚拟机栈、本地方法栈、堆、方法区1、虚拟机栈(jvm stacks)线程私有,生命周期与线程相同。主要存放:局部变量表、操作数栈、动态链接、方法出口2、堆(heap)所有线程共享的区域、在虚拟机启动时创建。存放:对象实例。堆是GC重点照顾对象,所以也被称GC堆。3、方法区(Method Area)主要存放:被虚拟机加原创 2014-03-23 00:21:42 · 2089 阅读 · 0 评论