Java Basics
第六处随风
这个作者很懒,什么都没留下…
展开
-
java关键字 #assert
在看底层代码的时候发现了一个寻常的关键字“assert”,现在来说一下这个关键字的意义和使用方式它是jdk1.4之后新增加的关键字assert在很多编程语言中的用途都是断言。assert vt vt. 维护,坚持;断言;主张;声称。通过查看assert的翻译,我们可以看到assert有主张、维护和坚持的意思。也就是说,assert后边所跟的条件必须满足,必须维护,否原创 2017-02-25 21:11:23 · 309 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2016-10-12 14:07:10 · 221 阅读 · 0 评论 -
多线程的三种特性
原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。 上面一句话虽然看起来简单,但是理解起来并不是那么容易。看下面一个例子: 请分析以下哪些操作是原子性操作:转载 2016-10-13 09:53:33 · 1982 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synch原创 2016-10-13 10:02:23 · 298 阅读 · 0 评论 -
BASE64Decoder的用法
一直以来Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder类。这人个类是sun公司的内部方法,并没有在java api中公开过,不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。但是在eclipse和MyEclipse中直接使用,却找不到该类。如下图!原创 2016-11-03 15:02:53 · 8822 阅读 · 1 评论 -
为什么Java中1000==1000为false而100==100为true?
这是一个挺有意思的讨论话题。如果你运行下面的代码Integer a = 1000, b = 1000; System.out.println(a == b);//1Integer c = 100, d = 100; System.out.println(c == d);//2你会得到falsetrue基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的转载 2016-11-28 11:23:39 · 272 阅读 · 0 评论 -
在Java中如何高效的判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。使用Listpublic static boolean useList(String[] arr, St转载 2016-11-28 13:56:38 · 286 阅读 · 0 评论 -
Java中枚举类型Enum的一种使用方式
枚举类定义如下:package com.test;public enum Status { SCUUESS("1", "成功"), FAILED("2", "失败"); private String value; private String desc; public String getValue() { return valu转载 2016-11-28 13:43:14 · 529 阅读 · 0 评论 -
说说JSON和JSONP
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备转载 2016-12-05 09:03:46 · 243 阅读 · 0 评论 -
多线程----监视锁(monitor)
java中每个对象都有唯一的一个monitor,想拥有一个对象的monitor的话有以下三种方式:1.执行该对象的同步方法public synchronize a () {} 2.执行该对象的同步块synchronize(obj) {} 3.执行某个类的静态同步方法public static synchronize b(){} tips:拥有monitor的是线程1.同时只原创 2016-12-06 14:41:21 · 849 阅读 · 0 评论 -
java 内在锁(intrinsic lock)或者监视器锁(monitor lock)
在JVM的规范中,有这么一些话: “在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的,为了实现监视器的排他性监视能力,JVM为每一个对象和类都关联一个锁,锁住了一个对象,就是获得对象相关联的监视器” 监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,进入这个建筑叫做"进入监视器",进入建筑中的那个特别的房间叫做"获得监视器",占据房间叫做"转载 2016-12-08 14:19:35 · 5170 阅读 · 0 评论 -
利用异或的特性解决,找出重复数的问题
还是这个题目:http://blog.csdn.net/fujunsfzh/article/details/53995715显然已经有人提出了一个比较精彩的解法,将所有数加起来,减去1+2+...+1000的和。这个算法已经足够完美了,相信出题者的标准答案也就是这个算法,唯一的问题是,如果数列过大,则可能会导致溢出。而异或就没有这个问题,并且性能更好。将所有的数全部异或,得转载 2017-01-03 16:42:50 · 4692 阅读 · 2 评论 -
算法题
1题:1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现 一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空 间,能否设计一个算法实现?static void Main(string[] args) {转载 2017-01-03 16:40:50 · 1333 阅读 · 0 评论 -
jse中将数组反转效率最快
public class test { public static void main(String args[]){ String arr[]={"1","2","3","4","5","6"}; for(int i=0;i<arr.length/2;i++){ String temp=arr[i]; arr[i]=arr[arr.length-i-1];原创 2015-10-03 16:39:04 · 358 阅读 · 0 评论