
java基础
u010850285
这个作者很懒,什么都没留下…
展开
-
Threadlocal 1
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来转载 2014-10-22 18:59:16 · 331 阅读 · 0 评论 -
java中特殊的String类型
栈 :由JVM分配区域,用于保存线程执行的动作和数据引用。栈是一个运行的单位,Java中一个线程就会相应有一个线程栈与之对应。主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)和对象的引用,数据可以共享,速度仅次于寄存器(register),快于堆。堆 :由JVM分配的,用于存储对象等数据的区域。用于存储对象。转载 2015-02-10 17:43:24 · 630 阅读 · 0 评论 -
jdk动态代理和CGlib动态代理
Jdk动态代理,CGLib字节码生成如果目标对象实现了接口,可以使用jdk动态代理和CGLib。如果没有实现接口,只能使用CGLib。一,jdk动态代理1.java动态代理用到了一个类(Proxy)和一个接口(InvocationHandler)2.jdk动态代理是通过实现目标类所实现的接口来产生代理类并生成代理对象的3.类Proxy:该类用于创建目标类的代理对象。Pr转载 2015-03-27 16:32:57 · 401 阅读 · 0 评论 -
Comparable与Comparator的区别
http://blog.youkuaiyun.com/mageshuai/article/details/3849143Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内转载 2015-03-09 09:38:04 · 384 阅读 · 0 评论 -
Java字面量(Java直接量)和符号引用
1、Java字面量(Java直接量)int i = 1;把整数1赋值给int型变量i,整数1就是Java字面量,同样,String s = "abc";中的abc也是字面量。数据类型直接量描述举例int整数直接量(可用二、十、八、十六进制表示)12-12+12转载 2015-03-09 10:50:39 · 18152 阅读 · 1 评论 -
Java 中对类的主动引用和被动引用
http://blog.youkuaiyun.com/anialy/article/details/8175213简述:看了《深入Java虚拟机》一书中关于“类是否初始化?“ 这一问题的探讨后,觉得有必要亲手做下总结在实际代码中, 有些类可能看上去时初始化了,但实际上并没有。举个例子,对于一个类Fruit, 声明一个fruit[] 数组,看上去是很多个Fru转载 2015-03-10 20:38:36 · 653 阅读 · 0 评论 -
深入研究Java类加载机制
http://blog.youkuaiyun.com/love_Javc_you/article/details/38081683深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性转载 2015-03-10 21:49:59 · 328 阅读 · 0 评论 -
类加载过程
1、加载。虚拟机主要完成以下三件事:(1) 通过类的全限定名来获取类的二进制流。(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。(3)在java堆中生成一个代表这个类的Class对象,作为方法区这些数据的访问入口。2、验证。保证class文件的字节流正确性。3、准备。正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。仅分配原创 2015-03-10 20:44:38 · 491 阅读 · 0 评论 -
Java静态多分配,动态单分配
http://blog.youkuaiyun.com/cclive1601/article/details/8050330http://my.oschina.net/tdd/blog/341258class Human{} class Man extends Human{}class Woman extends Human{}public class StaticPai{转载 2015-03-12 10:42:48 · 1996 阅读 · 0 评论 -
Java中的10颗语法糖
http://blog.sina.com.cn/s/blog_9eb66d350101247n.html语法糖(Syntactic Sugar):也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的机会。Java中的语法糖包括但不限于以下10颗:泛型与类型擦除、自动装箱和拆转载 2015-03-12 10:47:53 · 476 阅读 · 0 评论 -
sort list
Sort a linked list in O(n log n) time using constant space complexity.ListNode getMiddleOfList(ListNode head) { ListNode slow = head; ListNode fast = head; while原创 2015-03-31 21:21:06 · 386 阅读 · 0 评论 -
Object 的clone方法
原理:从内存中(堆内存)以二进制流的方式进行拷贝,重新分配一个内存块特点:1、构造函数不会执行 2、浅拷贝 3、final成员变量不可以执行拷贝。浅拷贝:只拷贝对象本身,对其内部的数组、引用对象(除了可变对象)不拷贝,直接共享。深拷贝:所有的都拷贝。原创 2015-05-05 10:13:29 · 425 阅读 · 0 评论 -
HashBasedTable
OverviewPackageClassUseTreeDeprecatedIndexHelpPrev ClassNext ClassFramesNo FramesAll ClassesSummary: Nested | Field | Constr | MethodDetail: Field | Constr | Method转载 2015-05-22 17:16:10 · 4807 阅读 · 0 评论 -
Guava学习笔记:Guava新增集合类型-Multimap
在日常的开发工作中,我们有的时候需要构造像Map>或者Map>这样比较复杂的集合类型的数据结构,以便做相应的业务逻辑处理。例如:import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Test;public转载 2015-07-09 18:16:28 · 498 阅读 · 0 评论 -
Java 8 Optional类深度解析
身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。在我的前一篇文章中,介绍了Scala是如何解决了这个问题。转载 2015-06-12 15:14:04 · 2803 阅读 · 0 评论 -
读取文件并转化为String
String text = new String(Files.readAllBytes(Paths.get(inputFilePath)),StandardCharsets.UTF_8);java.nio.charset.StandardCharsetsjava.nio.file.Filesjava.nio.file.Paths原创 2015-09-08 17:20:53 · 1083 阅读 · 0 评论 -
WEB 容器、WEB服务和应用服务器的区别与联系
http://blog.sina.com.cn/s/blog_643634b80101dapn.html学习Javaweb技术时,总是容易被诸如web服务器、容器、中间件之类的概念弄混淆,导致理解上本来很清晰的思路一下变得模糊了,以下是通过网上搜索的资料整理的一份对这几个概念的初步理解,便于后续深入的学习,相信只有对每一个概念进行了深入的学习和理解,模糊不清的东西才会变得清晰并最终融会贯通。转载 2016-01-27 19:50:38 · 1807 阅读 · 0 评论 -
ServletConfig与ServletContext对象详解
http://blog.sina.com.cn/s/blog_696024a90100o6hq.htmlServletConfig与ServletContext对象详解一、ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下) 当servlet配转载 2016-01-27 22:05:58 · 363 阅读 · 0 评论 -
精巧好用的DelayQueue
http://www.cnblogs.com/jobs/archive/2007/04/27/730255.html我们谈一下实际的场景吧。我们在开发中,有如下场景a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未转载 2014-12-31 14:26:56 · 318 阅读 · 0 评论 -
System.nanoTime与System.currentTimeMillis的区别
blog.youkuaiyun.com/dliyuedong/article/details/8806868平时产生随机数时我们经常拿时间做种子,比如用System.currentTimeMillis的结果,但是在执行一些循环中使用了System.currentTimeMillis,那么每次的结果将会差别很小,甚至一样,因为现代的计算机运行速度很快。后来看到java中产生随机数函数以及线程池中的一些函数使转载 2014-12-31 09:31:44 · 357 阅读 · 0 评论 -
JAVA深复制(深克隆)与浅复制(浅克隆)
http://www.cnblogs.com/yxnchinahlj/archive/2010/09/20/1831615.html1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变转载 2014-11-10 15:02:00 · 280 阅读 · 0 评论 -
linux命令行编译java
linux 命令行编译执行java 2011-08-11 11:29:24| 分类:Linux-zoomlgd | 标签:linux 命令行 java class |举报|字号 订阅cd /opt/.../lib编译(Test.java的package不要写):javac -classpath dom4j.jar Test.java转载 2014-10-24 15:13:02 · 700 阅读 · 0 评论 -
ThreadLocal 总结
void set(Object value)public void remove()将当前线程局部变量的值删除,目的是为了减少内存的占用,该方法是JDK 1.5 新增的方法。需要指出的是,当线程结束后,对应该线程的局部变量将自动被垃圾回收,所以显式调用该方法清除线程的局部变量并不是必须的操作,但它可以加快内存回收的速度。protected Object initialValue()原创 2014-10-22 19:03:45 · 364 阅读 · 0 评论 -
JUC (Java Util Concurrency) 基础内容概述
目录[-]转自:http://www.goldendoc.org/2011/05/juc/1. JUC概况2. 原子操作3. 指令重排4. Happens-before法则:(Java 内存模型)JMM的特性:volatile语义:5. CAS操作6. Lock 锁7. AQSAQS实现:Atomically managing synchro转载 2014-10-31 17:20:33 · 417 阅读 · 0 评论 -
java线程
http://kenwublog.com/java-thread-summary1, 为什么wait与notify之前必须要加synchronized?答案其实很简单,也是为了防止等待-通知机制出现race condition为什么会出现race condition ?答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadl转载 2014-11-19 16:19:37 · 313 阅读 · 0 评论 -
ThreadLocal
http://www.iteye.com/topic/103804首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过Th转载 2014-11-19 16:39:53 · 366 阅读 · 0 评论 -
特殊字符转换和中文乱码
String[] searchList = new String[] {">", "String[] replacementList = new String[] {">", "<",""","'","&","\","#"};value = URLDecoder.decode(value, "UTF-8");StringUtils.replaceEach(value, searchLi原创 2014-11-05 10:35:34 · 755 阅读 · 0 评论 -
junit单元测试时,java.lang.ClassNotFoundException: java.pakc.SimpleTest
http://zhouhaitao.iteye.com/blog/905749今天使用junit4单元测试时,.居然运行不了.. 运行时发现错误如下:没有找到测试类. 找了半天,发现测试类都存在.. 原因,我在clean 的时候,.java.pakc.SimpleTest 未生成.造成的.. java.lang.ClassNotFoundExcepti转载 2014-11-26 15:31:32 · 2467 阅读 · 0 评论 -
String操作
URI base = URI.create(String.format("http://%s/pools", StringUtils.trim(serverName)));原创 2014-11-07 15:28:10 · 323 阅读 · 0 评论 -
JAVA动态代理内部实现
http://blog.youkuaiyun.com/liuhebing/article/details/5571734JAVA动态代理内部实现一 代理设计模式代理模式为目标对象提供一种代理以控制对实际对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。为了保持行为的一致性,代理类和实际委托类转载 2015-01-07 14:56:32 · 366 阅读 · 0 评论 -
JUC (Java Util Concurrency) 基础内容概述
http://blog.youkuaiyun.com/china_wanglong/article/details/38828407目录[-]转自:http://www.goldendoc.org/2011/05/juc/1. JUC概况2. 原子操作3. 指令重排4. Happens-before法则:(Java 内存模型)JMM的特性:vol转载 2014-12-21 11:41:43 · 403 阅读 · 0 评论 -
Integer.MAX_VALUE 和MIN_VALUE问题
当有Integer.MAX_VALUE 和MIN_VALUE,避免出现对其直接运算,否则很有可能越界原创 2014-12-20 16:04:32 · 1404 阅读 · 0 评论 -
IO的阻塞与非阻塞、同步与异步以及Java网络IO交互方式
http://www.cnblogs.com/zhuYears/archive/2012/09/28/2690194.html前提 首先先强调上下文:下面提到了同步与异步、阻塞与非阻塞的概念都是在IO的场合下。它们在其它场合下有着不同的含义,比如操作系统中,通信技术上。 然后借鉴下《Unix网络编程卷》中的理论: IO操作中涉及的2个主要对象为程序进程、系统内核。以读转载 2014-12-21 11:17:25 · 355 阅读 · 0 评论 -
callable Runnable 区别
1.Callable 使用 call() 方法, Runnable 使用 run() 方法2.call() 可以返回值, 而 run()方法不能返回。3.call() 可以抛出受检查的异常,比如ClassNotFoundException, 而run()不能抛出受检查的异常。4、由3可知call抛出异常可以捕获,而run不可以,为了解决这种情况,可在每个Thread对象上附着一个异常处原创 2014-12-23 09:29:30 · 502 阅读 · 0 评论 -
java 线程组
http://blog.youkuaiyun.com/xubo578/article/details/5472164线程组在Java中每一个线程都归属于某个线程组管理的一员,例如在主函数main()主工作流程中产生一个线程,则产生的线程属于main这个线程组管理的一员。简单地说,线程组就是由线程组成的管理线程的类,这个类是java.lang.ThreadGroup类。可以通过使用如下代码获取此转载 2014-12-23 11:29:12 · 464 阅读 · 0 评论 -
JAVA JDBC(MySQL)驱动源码分析
http://www.cxyclub.cn/n/35690/摘要:JAVA连接数据库是其众多功能中的一部分,主要有两种方式连接DataBase:一种是采用JDBC-ODBC桥,另一种则是称之为纯驱动连接DataBase,第一种方式在大型项目中基本上不再使用,本系列文章主要分析纯驱动源码。对于初学JAVA者,甚至那些使用JAVA做过几年开发的程序员来讲,对于JDBC的工作原理转载 2015-01-18 19:22:52 · 2857 阅读 · 0 评论 -
关于Class.forName(“com.mysql.jdbc.Driver”)
http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html传统的使用jdbc来访问数据库的流程为:Class.forName(“com.mysql.jdbc.Driver”);String url = “jdbc:mysql://localhost:3306/test?user=root&password转载 2015-01-18 19:02:01 · 953 阅读 · 0 评论 -
Ant 学习
一 "**"通配符这里说一说“**”这个通配符。一个星号在 Ant中表示“文件名中的”任意个字符,所以“*”就表示了所有的文件,但是“\”不会出现在“文件名中”,所以“*”并不包括子目录下的文件;而两个星号表示包含“\”在内的任意个字符,所以“**”匹配诸如“\dira\dirb\file_id.diz”的文件名,从而也就包含任意级子目录中所有的文件。进而我们就知道“**/cvs/**”表示在原创 2016-10-29 21:24:22 · 514 阅读 · 0 评论