
Java
liuzx32
这个作者很懒,什么都没留下…
展开
-
Java中包名、类名、方法名、成员变量名、属性名 大小写问题
java中包名、类名是不区分大小写的,也就是说包名:com.wang 和com.Wang是相同的包名(即只要字母相同,不区分大小写,都是相同的包名);Aa和aA 是相同的类名 。这种情况小编译都会报错!# 但在使用命令窗口执行java类是,类名是区分大小写的! 例如:类名是HelloWorld的类 执行时的命令是 java HelloWorld 不能是 java helloworld转载 2017-02-22 20:40:02 · 8585 阅读 · 0 评论 -
Java中线程应用总结
1.线程是基本调度单元。共享进程的资源,如内存和文件句柄。但有自己的pc(程序计数器),stack(线程栈)及本地变量2.线程的优势:a) 充分利用多处理器b) 可以简化模型。特定任务给特定线程。如servlets及rmi等框架。c) 对异步事件的简单处理。如socket,nio使用更复杂。而现在的操作系统支持更大数量的线程。d) 界面的更佳响应3.内部锁:sync转载 2013-07-18 12:37:53 · 576 阅读 · 0 评论 -
Java中channel的应用总结
1.Channel接口的定义:public interface Channel{ public boolean isOpen( ); public void close( ) throws IOException;}2.Channel的常见类型:FileChannel, SocketChannel, ServerSocketChanne转载 2013-07-18 12:26:38 · 3434 阅读 · 0 评论 -
Java显示锁与条件
1.Lock接口及ReentrantLock实现,提供了和synchronized相同的互斥和内存可见性保证。为什么需要显示锁?因为内部锁不能中断正在等待获取锁的线程,并且锁失败时,需无限等待。a) 可以轮询和可定时的锁请求。lock.tryLock()b) 可中断的锁获取操作。lock.lockInterruptibly()c) JDK6.0之前,ReentrantLock性转载 2013-07-18 12:23:03 · 684 阅读 · 0 评论 -
Java中同步与并发
1.同步容器类包括两部分:vector和hashtable,另一类是同步包装类,由Collections.synchronizedXXX创建。同步容器对容器的所有状态进行串行访问,从而实现线程安全。它们存在如下问题:a) 对于符合操作,需要额外的锁保护。比如迭代,缺少则添加等条件运算。b) toString,hashCode,equals都会间接的调用迭代,都需要注意并发。原创 2013-07-18 12:34:13 · 747 阅读 · 0 评论 -
Java中Executor应用总结
1.Java中Executor接口的定义public interface Executor { void execute(Runnable command);}2.Executors以下静态工厂方法创建一个线程池:a) newFixedThreadPool:创建一个定长的线程池。达到最大线程数后,线程数不再增长。 如果一个线程由于非预转载 2013-07-18 12:16:32 · 900 阅读 · 0 评论 -
Java中泛型的应用总结
1 基本使用public interface List { void add(E); Iterator iterator();}2 泛型与子类Child是Parent的子类,List却不是List的子类。因此:List list = new ArrayList()是错误的。如果上面是正确的,那么:List ls = new ArrayList()转载 2013-07-18 13:33:30 · 525 阅读 · 0 评论 -
Java中nio与buffer
1 disk->disk controller->DMA(direct memory access)->kernel space buffer -> user space buffer从kernel到user space的拷贝非常浪费了。2 内存映射可以减少这种浪费。a)减少了read() write()等系统调用。b)减少了buffer间的拷贝3 MMU(Me转载 2013-07-18 12:41:07 · 978 阅读 · 0 评论 -
Java线程的取消与关闭
1.Thread.stop和suspend避免使用,容易造成死锁等不可意见的问题。2.public class Thread {public void interrupt();public boolean isInterrupted();public static boolean interrupted(); // 仅清除当前线程的中断状态,并返回之前的值。清除中断状态的唯一方法转载 2013-07-18 12:18:13 · 661 阅读 · 0 评论 -
Java的相对路径与绝对路径
先上一组程序路径相关的代码: System.out.println(Thread.currentThread().getContextClassLoader().getResource("")); System.out.println(FileTest.class.getClassLoader().getResource("")); ///// System.o原创 2013-07-17 11:16:13 · 724 阅读 · 0 评论 -
Spring3核心技术之事务管理机制
Spring对事务的解决办法其实分为2种:编程式实现事务,AOP配置声明式解决方案。 http://jinnianshilongnian.iteye.com/blog/1496953 Spring提供了许多内置事务管理器实现,常用的有以下几种: DataSourceTransactionManager:位于org.springframework.jdbc.datasourc转载 2013-07-12 19:15:19 · 788 阅读 · 0 评论 -
使用Eclipse+maven3插件开发一个Servlet3.0的简单例子
1、打开Eclipse4.2,新建一个Maven项目 1)选择maven的archetype为maven-archetype-webapp 2)填写项目信息 2、完善项目目录结构 1)手工添加 src/main/java、src/test/java和src/test/resource 三个source folder,在项转载 2013-07-12 19:07:47 · 752 阅读 · 0 评论 -
Eclipse集成Maven3后创建Java项目
1、创建一个Java项目 1)File--->New--->Other--->Maven--->Maven Projet 2)选择maven-archetype-quickstart 3)输入项目的信息 4)生成的Java项目包结构如下转载 2013-07-12 19:05:51 · 635 阅读 · 0 评论 -
Maven3常用命令、java项目搭建、web项目搭建详细图解
------------------------------maven3常用命令---------------------------1、常用命令 1)创建一个Project mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=转载 2013-07-12 19:06:48 · 767 阅读 · 1 评论 -
推荐几个好用的Java性能故障排除工具
1.jconsole是随着JDK 1.5而推出的。这是一个Java监测和管理控制台-JMX兼容的图形工具来监测Java虚拟机。它能够同时监测本地和远程的JVMs。详情可查看:jconsole工具介绍2.VisualVM 集成了几个现有的JDK软件工具,轻量级内存和CPU信息概要能力。这个工具被设计为同时在生产和开发时使用,进一步提高监视的能力和Java SE平台的性能分析能力。转载 2013-07-11 18:08:40 · 472 阅读 · 0 评论 -
Java中InetAddress 的dns cache应用问题
jdk的InetAddress有一个特性,就是当系统访问过一个域名的时候,InetAddress就会通过其私有变量addressCache把域名对应的ip地址缓存起来.虽然缓存起来能极大的提高系统性能,但有时候会给系统带来很大的麻烦.例如,当对方改动了ip地址后,系统就不能再访问到新的ip地址了,这个时候最直接的方案就是:重启jvm!!!这对于需要7*24小时服务的系统来说,是不可忍受的.转载 2013-07-10 16:51:05 · 1637 阅读 · 0 评论 -
Java格式化输出代码
public class Printf { public static void main(String[] args) { // %s表示输出字符串,也就是将后面的字符串替换模式中的%sSystem.out.printf("%s", new Integer(1212));// %n表示换行System.out.printf("%s%n", "end lin转载 2013-07-18 17:02:42 · 883 阅读 · 0 评论 -
JAVA 连接常见数据库的方式总结
JAVA 连接所有数据库 (转载自http://bbs.chinajavaworld.com/thread.jspa?...连接Oracle数据库获得Oracle的驱动程序包classes12.jar把Oracle的驱动程序到\WEB-INF\lib下Class.forName("oracle.jdbc.driver.OracleDriver").newIn转载 2013-07-18 17:01:44 · 716 阅读 · 0 评论 -
JVM调优总结
[转]JVM调优总结转自:http://www.cnblogs.com/jamespangxh/archive/2010/10/13/1850133.html搜索JVM调优发现的好文,转载共赏 JVM调优总结-序 几年前写过一篇关于JVM调优的文章, 前段时间拿出来看了看,又添加了一些东西。突然发现,基础真的很重要。学习的过程是一个由表及里,再由里及表转载 2013-07-19 18:35:59 · 705 阅读 · 0 评论 -
总结几个G1垃圾收集器重要调优参数
总结几个G1垃圾收集器重要调优参数(大致按重要性排序)-XX:+UseG1GC -Xmx< nG > -Xms< nG > -XX:MaxGCPauseMillis=< ms > -XX:InitiatingHeapOccupancyPercent=< % >-XX:+PrintGCDetails-XX:+PrintAdaptiveSizePolicy-XX:G1HeapRegion原创 2017-02-21 19:47:23 · 4846 阅读 · 0 评论 -
Java调用phantomjs采集ajax加载生成的网页
日前有采集需求,当我把所有的对应页面的链接都拿到手,准备开始根据链接去采集(写爬虫爬取)对应的终端页的时候,发觉用程序获取到的数据根本没有对应的内容,可是我的浏览器看到的内容明明是有的,于是浏览器查看源代码也发觉没有,此时想起该网页应该是ajax加载的。不知道ajax的小朋友可以去学下web开发啦。# 采集ajax生成的内容手段不外乎两种。一种是通过http观察加载页面时候的请求,然后我们模仿转载 2017-02-21 15:40:43 · 828 阅读 · 0 评论 -
文章标题
堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3550m -X转载 2017-02-21 15:20:49 · 391 阅读 · 0 评论 -
Java Remote Debug(远程调试)
新接手的项目采用的是Maven作为编译管理工具,项目内容则是按子模块Module来划分。由于模块太多,且都比较大(基本上都能独立运行并负责处理一方面的业务),并采用Socket来进行模块之间的数据通信,结果就导致一个略显臃肿的系统产生了。最重要的是,不知道maven的pom.xml文件出了什么问题,Eclipse也一直无法成功加载部分重要模块(以致最后切换到JetBrain IDEA(Open So转载 2017-02-16 19:45:30 · 595 阅读 · 0 评论 -
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:问题一:使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?我很早前就发现Unicode转载 2015-03-06 13:52:16 · 508 阅读 · 0 评论 -
Future和FureTask的介绍及应用
API:Java代码 public interface Executor { void execute(Runnable command); } public interface ExecutorService extends Executor { Future submit(Callab转载 2015-03-05 16:40:21 · 1283 阅读 · 0 评论 -
Java中getResourceAsStream的用法
首先,Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。 2. Class.getClassLoader.转载 2013-07-17 10:55:15 · 521 阅读 · 0 评论 -
JAVA程序内存溢出问题的分析
遇到一个线上系统报 java.lang.OutOfMemoryError: PermGen space 错误,需要定位一下问题。很久之前到时弄过这个,现在还真有点不记得了,但这个真的是一个非常有意思的问题,值得好好研究一下。 首先第一反应当然是加上-XX:+PrintGCDetails参数来看具体的GC日志,但是由于程序是tomcat启动的,担心里面封装的东西太多不好定位,既然在转载 2014-07-22 10:26:42 · 497 阅读 · 0 评论 -
JDK自带的java.util.Timer定时器的实现原理
Timer中最主要由三个部分组成: 任务 TimerTask 、 任务队列: TaskQueue queue 和 任务调试者:TimerThread thread 他们之间的关系可以通过下面图示:在这个图中,可以清楚地看到这Timer本身及其和这三个部分的关系:1. Timer可以看作是面向开发人员的转载 2013-08-13 13:46:57 · 869 阅读 · 0 评论 -
Timer类中schedule和scheduleAtFixedRate方法的区别
schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上。比如SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date d1 =转载 2013-08-13 13:42:15 · 1027 阅读 · 0 评论 -
Java内部类应用总结
内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类 为什么需要内部类? 典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象转载 2013-07-20 15:54:17 · 633 阅读 · 0 评论 -
Java中字符的Unicode编码
Java语言中Unicode编码的获取与转换public class ToUnicode {/*** 获取字符串的unicode编码序列* @param s string* @return unicode编码后的字符串*/public static String toUNICODE(String s) {StringBuffer sb = new StringB原创 2013-07-04 16:46:14 · 1333 阅读 · 0 评论 -
Jvm的GC输出各个字段的含义
Java GC日志可以通过 +PrintGCDetails开启以ParallelGC为例YoungGC日志解释如下(图片源地址:这里) :FullGC(图片源地址:这里):一目了然,一图胜千言转载 2013-07-20 16:53:05 · 1317 阅读 · 0 评论 -
Java中ThreadLocal应用总结(1)
早在Java 1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用 这个工具类可以很简洁地编写出优美的多线程程序,虽然ThreadLocal非常有用,但是似乎现在了解它、使用它的朋友还不多。ThreadLocal是什么?ThreadLocal 并非是一个线程的本地实现版本,它并不是一个Thr转载 2013-07-19 17:17:21 · 659 阅读 · 0 评论 -
Java中ThreadLocal应用总结(2)
一、需求介绍 由于项目需要在同一进程不同方法内获取到上下文内容,而在同一线程父方法可以获取到上下文内容,子方法由不同的项目组提供和开发,然后以jar包的方式打包,这时候问题就出现了,父方法的上下文内容如何可以提供给子方法,并在子方法中获取到对应线程的上下文内容?注:每个线程的上下文内容是不同的,父类只提供集成容器,具体方法的实现由不同的项目组和部门编写 二、解决思路 应转载 2013-07-19 18:39:51 · 687 阅读 · 0 评论 -
Address already in use: JVM_Bind(端口冲突)
1.错误描述2011-7-20 11:05:18 org.apache.catalina.core.StandardServer await严重: StandardServer.await: create[8005]: java.net.BindException: Address already in use: JVM_Bindat java.net.PlainSocketI转载 2013-06-19 11:32:20 · 631 阅读 · 0 评论 -
GA代表什么
Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。GA:General Availabilit转载 2013-03-27 12:17:35 · 1664 阅读 · 0 评论 -
java中数组与List相互转换的方法
1.List转换成为数组。(这里的List是实体是ArrayList) 调用ArrayList的toArray方法。 toArray public T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大转载 2013-02-21 23:35:46 · 364 阅读 · 0 评论 -
cron表达式(quartz中时间表达式)
Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示:表1 Cron表达式时间字段Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下:●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”;●问号(?):转载 2012-07-24 20:46:47 · 558 阅读 · 0 评论 -
一个JVM进程启动后里面有几个线程
在写Java程序时,通常我们管只有一个main函数(而没有别的Thread或Runnable的程序)叫单线程程序。但是我们写的这个所谓的单线程程序只是JVM这个程序中的一个线程,JVM本身是一个多线程的程序,至少得有一个垃圾收集器线程吧。 刚装了一个NetBeans6.0,里面带了一个分析器包,于是写了一个HelloWorld程序,检验了一下JVM一启动,里面会有几个线程:转载 2012-07-24 09:16:48 · 2093 阅读 · 0 评论 -
基于Jetty的内嵌式服务器
一个嵌入式的Jetty servlet容器可以让web使用Java应用而不用打包成正式的web应用的形式。 示例程序Step1 Driver 演示了一个基于Jetty的简单服务。它创建了一个servlet容器的实例,将一个servlet class映射到一个URI,并且使用一些URL来调用这个servlet。Jetty的Service对象就是Jetty容器,实例转载 2012-07-24 10:07:10 · 823 阅读 · 0 评论