![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 74
晴空_
这个作者很懒,什么都没留下…
展开
-
关于ThreadLocal的理解
当多个线程间共享变量时,通常都需要使用同步策略来保证变量的内存可见性。一种避免使用同步的方式就是不在线程间共享数据。如果仅在单线程内访问数据,就不需要同步。这种技术被称为线程封闭,它是实现线程安全性的最简单方式之一。维持线程封闭性的一种方式就是使用ThreadLocal,ThreadLocal不是用来解决共享变量之间的同步问题的,因为通过ThreadLocal维护的变量(非单实例变量和原创 2013-11-25 22:04:43 · 1187 阅读 · 0 评论 -
javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
服务器频繁抛出错误信息如下:原创 2014-09-10 11:17:20 · 7832 阅读 · 3 评论 -
Java 6 JVM参数选项大全(中文版)
本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文。主要介绍JVM中的非稳态选项及其使用说明。为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料。希望这份文档,对正在研究JVM参数的朋友有帮助! 另外,考虑到本文档是初稿,如有描述错误,敬请指正。 非稳态选项使用说明-XX:+ 启用选项-XX:- 不启用选项转载 2013-11-05 09:42:37 · 821 阅读 · 0 评论 -
CGLib的一个简单的例子
CGlib是一个强大的,高性能,高质量的Code生成类库。它常常被用来在运行期扩展Java类与实现Java接口。它可以在不改变原代码的情况下对类的功能进行增强。package cglib;import java.lang.reflect.Method;import net.sf.cglib.proxy.Callback;import net.sf.cglib.proxy.Call原创 2014-02-20 18:33:18 · 1314 阅读 · 0 评论 -
Java Date and Time系列(六)- java.util.TimeZone介绍
java.util.TimeZone是一个表示时区的类,如果需要跨时区转换日期,那么可以用java.util.Calendar和java.util.TimeZone联合完成。可以用下面的方式来获取日历的时区:Calendar calendar = new GregorianCalendar();TimeZone timeZone = calendar.getTimeZone();也可以通过s原创 2013-12-04 17:37:04 · 1852 阅读 · 0 评论 -
Java Date and Time系列(七)- java.text.SimpleDateFormat介绍
java.text.SimpleDateFormat类我们一般用来它实现字符串于java.util.Date之间的互转,比如将Date实例转换为指定的字符串表示形式,或者将一个字符串的日期表示转为具体的Date实例。创建SimpleDateFormat实例可以像下面一样创建一个SimpleDateFormat实例:String pattern = "yyyy-MM-dd";原创 2013-12-04 21:01:44 · 5537 阅读 · 0 评论 -
Java Date and Time系列(五)- java.util.Calendar/java.util.GregorianCalendar介绍
java.util.Calendar是一个抽象类,它定义了日历相关的一系列操作,使用java.util.Calendar除了可以表示日期和时间,还可以用它来对时期或时间进行算术运算,比如获取当前日期10天之后的日期。java.util.Calendar由于是一个抽象类,所以我们不能对它进行实例化,如果想获得一个日历实例,可能要用到java.util.GregorianCalendar类。原创 2013-12-02 22:34:25 · 8635 阅读 · 0 评论 -
Java Date and Time系列(四)- java.sql.Date/java.sql.Time/java.sql.Timestamp介绍
java.sql.Date是在JDBC中使用的日期类,在JDBC操作中,如果需要设置一个日期或者从ResultSet获取日期值,就需要使用到java.sql.Date。实际上java.sql.Date继承自java.util.Date,是java.util.Date的一个子类,所以java.util.Date可以调用的方法在java.sql.Date中也可以调用。创建一个java.sql.Da原创 2013-11-30 21:17:09 · 2747 阅读 · 0 评论 -
Java中的位操作使用举例
本文的目的不是为了阐述位操作的原理,而是发现在工作中有些同学清楚位操作,但是不知道什么时候使用位操作。以下列举两个例子简单说明我们可以使用到位操作的场景,但不一定符合实际业务场景,仅供参考。1、给40亿个int型的正整数,没排过序,然后再给一个数,如何快速判断这个数是否在那40亿个数当中。(此题根据腾讯的一道面试题改编)public class A { long nSize =原创 2013-10-09 16:57:28 · 876 阅读 · 0 评论 -
同步工具类之 CyclicBarrier
CyclicBarrier 是一个线程同步工具类,它使一系列线程彼此等待,直到所有线程都到达栅栏点后,再开始下一步操作。栅栏点通过reset()可以被重新初始化,所以栅栏可以被重复利用。CyclicBarrier还支持一个可选的Runnable实现,这个实现在所有线程都到达栅栏点后,并且任何线程都没有被放行之前执行。下面是一个简单的例子import java.util.conc原创 2013-11-06 15:03:08 · 607 阅读 · 0 评论 -
同步工具类之 FutureTask
2 FutureTask实现了Future语义,表示一种可以生成结果的计算。FutureTask有三种状态:等待运行、正在运行、运行完成。运行完成表示计算的所有可能结束方式,包括正常结束、由于取消而结束和由于 3 异常而结束等。当FutureTask进入完成状态后,它会永远停止在这个状态上。 4 FutureTask.get的行为取决于任务的状态。如果任务已经完成,那么get会立即返回原创 2013-11-16 11:21:49 · 960 阅读 · 0 评论 -
关于Java中的volatile型变量
Java语言中使用volatile关键字实现了一种弱同步机制。大多数场景下使用volatile变量的同步开销要比使用锁来的低,当一个变量被声明为volatile后,它将具备两种特性:1、保证被声明volatile的变量对所有线程的可见性,这种“可见性”是指当一个线程修改了这个变量,新值对其它线程是可以立即得知的。但要注意,如果对volatile变量进行非原子操作也会引发安全性问题。原创 2013-11-18 22:46:33 · 1260 阅读 · 0 评论 -
Java Date and Time系列(二)- System.currentTimeMillis()介绍
System.currentTimeMillis()静态方法System.currentTimeMillis()返回1970-01-01 00:00:00.000到现在的毫秒数,返回值是一个long型long timeNow = System.currentTimeMillis();返回值可以用来初始化java.util.Date、java.sql.Date、java.sql.Ti原创 2013-11-29 16:36:00 · 8802 阅读 · 0 评论 -
Java Date and Time系列(三)- java.util.Date介绍
java.util.Date的创建java.util.Date这个类可能是我们最常用的一个用来表示日期的类了。我们可以像下面这样初始化一个实例来表示当前日期和时间:java.util.Date date = new java.util.Date();Date类中有一个getTime()方法可以用来获取日期实例的毫秒表示java.util.Date date = new java原创 2013-11-30 20:37:51 · 4290 阅读 · 0 评论 -
关于Integer.parseInt
记录一个无关痛痒的问题下面两行执行完会打印什么结果呢?System.out.println(Integer.parseInt("-123"));System.out.println(Integer.parseInt("+123"));执行一下就知道了,不过每个人得到的结果可能不同,原因就是JRE版本不一样。以下仅提供1.6和1.7两个版本的比较1.7以前的版本原创 2013-09-18 14:09:16 · 3539 阅读 · 1 评论 -
JVM运行时数据区域
声明:本文参考周志明先生著作《深入理解Java虚拟机》而写,更多详细内容请参原著。Java虚拟机在运行时将它所管理的内存划分为若干个不同的区域,根据《Java虚拟机规范(第二版)》规定,Java虚拟机所管理的内存将包含以下几个运行时区域: 程序计数器程序计数器是一块较小的内存空间,它的作用可以看做当前线程所执行的字节码的行号指示器。程序计原创 2013-10-11 14:59:38 · 810 阅读 · 0 评论 -
Java NIO Selector
为什么使用Selector使用一个线程来处理多个Channels的优势在于你只需要使用少量的线程就能处理大量的Channels。实际上,你可以只用一个线程来处理所有的Channels。线程切换对于操作系统来说代价昂贵,而且每个线程也会占用操作系统的一些资源(比如内存),因此你使用的线程数量越少越好。但请记住,现代操作系统和CPU在多任务处理方面已经变的越来越强,所以随着时间的推移,在多线程翻译 2013-11-03 21:59:34 · 4914 阅读 · 0 评论 -
同步工具类之 CountDownLatch
CountDownLatch 是一个同步工具类,它可以让一个或多个线程处于等待状态,直到其它的线程执行完毕再执行。CountDownLatch 使用一个给定的计数值初始化,调用countDown()方法会使计数值减1,处于等待状态的方法在计数值变为0前一直阻塞,当计数值变为0时所有处于等待状态的线程会被释放,这个过程是一次性的,计数值不能被重置。如果需要重置计数值循环这个过程,可以考虑使用原创 2013-11-05 11:38:44 · 646 阅读 · 0 评论 -
如何在mysql中存取utf8mb4编码的字符
utf8编码可以支持一到4字节的字符编码,在mysql用我们一般使用utf8原创 2014-06-23 23:34:26 · 5187 阅读 · 0 评论