- 博客(57)
- 资源 (14)
- 收藏
- 关注
转载 javascript的settimeout和异步
今晚看到QLeelulu的一道JavaScript面试题(setTimeout),稍微想了一下,好不容易连猜带蒙,凑巧说对了答案。但是原因到底是什么呢?自己一时也说不太清楚,反正感觉就是一个死循环造成的。然后看了一下文章下面的评论,发现5楼和6楼的回答很有道理,主要意思就是说javascript引擎是单线程执行的,while循环那里执行的时候,settimeout里面的函数根本没有执行的机会,这样
2016-06-30 10:45:51 810
原创 Java之重写equals()和hashCode()
1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。2.设计equals() [1]使用instanceof操作符检查“实参是否为正确的类型”。 [2]对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。 [2.1]对于非float和double类型
2016-06-30 09:40:59 488
转载 Java将字节数组转化为16进制字符串的多种方案
很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等。因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当然肯定还有其他原因。下面提供几种Java中使用的方案:方案一:直接利用BigInteger的方法,应该是最简单的方案了。[java] view plain
2016-06-29 14:21:02 1862
转载 getGenericSuperclass()和getSuperclass()
一.说明1.Class getSuperclass():返回本类的父类2.Type getGenericSuperclass():返回本类的父类,并且包含泛型参数信息二.例子1.ClassA.java[java] view plaincopypublic class ClassA { private
2016-06-28 16:49:10 1766
转载 利用java序列化进行对象深Clone
在java语言里深复制一个对象,通常可以使对象实现Serializable接口,然后把对象(实际上是对象的一个copy),写到一个流里面,便可重复建立对象。这样做被复制的对象与被复制对象里面的引用都是可以被一并深复制的,不同于Object基类的Clone方法(浅复制:如果被复制的对象存在其他对象的引用,复制一个引用指向原对象的实例)。废话不多说代码如下: 代码:
2016-06-28 14:56:41 682
转载 Java中int与byte数组转换详解
1、与运算符的理解(&): 参加运算的两个数据,按二进位进行“与”运算。如果两个相应的二进位都为1,则该位的结果值为1,否则为0。即 0&0=0;0&1=0;1&0=0;1&1=1;例子:int x = 62255550; y =0xff; 转二进制:x = 62255550 = 11101101011111000110111110;
2016-06-28 14:33:51 25765 5
翻译 Java泛型及泛型通配符
1、Java泛型由来的动机 理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换(casting)上的操作:List box = ...; Apple apple = box.get(0); 上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例,这个过程不需要进行
2016-06-28 11:15:01 591
转载 Java中HashMap的实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本
2016-06-27 17:11:21 406
原创 Java之HashCode值改变引起Hashset造成的内存泄露
所谓内存泄露就是一个对象占用的一块内存,当这个对象不在被使用时,该内存还没有被收回。本例用于改变了对象hashcode值致使对象没有能从hashset中删除,从而导致内存泄露。package zmx.hashcode.test;import java.util.HashSet;public class Point { private int x; private int y;
2016-06-27 10:21:28 6632 9
转载 oracle函数之instr()和substr()实现列拆分
1、INSTR()函数 在Oracle中可以使用instr()函数对某个字符串进行判断,判断其是否含有指定的字符。 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。 语法: instr(sourceString,destString,start,appearPosition) instr('源字符串' , '目
2016-06-22 17:01:31 6082
翻译 MYSQL Innodb 锁行还是锁表问题探讨
关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况。为什么呢?先看一下这篇文章。 做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为:Select restnum
2016-06-21 17:16:30 8600 2
翻译 JVM垃圾回收器工作原理及使用实例介绍
垃圾收集基础Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。拥有垃圾收集器可以说是 Java 语言与 C++语言的一项显著区别。在 C++语言中,程序员必须小心谨慎地处理每一项内存分配,且内存使用完后必须手工释放曾经占用的内存空间。当内存释放不够完全时,即存
2016-06-17 15:23:08 2556
转载 HashMap的工作原理
“你用过HashMap吗?” “什么是HashMap?你为什么用到它?” 几乎每个人都会回答“是的”,然后回答HashMap的一些特性,譬如HashMap可以接受null键值和值,而HashTable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。这显示出你已经用过HashMap,而且对它相当的熟悉。但是面试官来个急转
2016-06-17 14:42:22 486
转载 Eclipse findbugs插件使用及简单介绍
FindBugs是一个可以在Java程序中发现Bugs的程序。它是专门用来寻找处于"Bug Patterns"列表中的代码的。Bug Patterns指很有可能是错误的代码的实例。 打开Bug Details视图Windows => Show View => Other… => FindBugs => BugDetails。 在Package Explorer或Navi
2016-06-17 10:11:30 7273
转载 Eclipse checkstyle 插件使用简单介绍
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。CheckStyle检验的主要内容 ·Javadoc注释 ·命名约定 ·标题 ·Import语句 ·体积大小 ·空白 ·修饰符 ·块 ·代码问题 ·类设计
2016-06-17 09:40:51 6317
转载 Java之由String.getBytes()说编码
1、JAVA之String.getBytes() 在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同的操作系统下,返回的东西不一样! String.getBytes(String decode)方法,则会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:byte[] b_gbk = "中".get
2016-06-15 17:36:06 656
原创 jquery jsonp 调用jersey实现跨域访问
1、web.xml<!-- This web.xml file is not required when using Servlet 3.0 container, see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
2016-06-15 16:01:47 1945
翻译 java代码性能优化
一、避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。 例子: [java] view plaincopyprint?import java.util.vector; class cel { void method (vector
2016-06-15 10:48:38 1401
转载 Java使用Socket读写邮件服务器示例
置文件:[plain] view plain copy print?host=XXX.XX.XX.XX port=8888 max_size=200 min_size=30 host=XXX.XX.XX.XXport=8888max_size=200min_size=30[java] view
2016-06-13 14:47:26 3823 1
转载 ASCII,Unicode和UTF-8编码的区别与联系
Unicode编码的由来 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的,没啥太多不一样.其他啥文字图片之类的其他东东计算机不认识.那为了在计算机上表示这些信息就必须转换成一些数字.你肯定不能想怎么转换就怎么转,必须得有定些规则.于是刚开始
2016-06-12 12:49:08 1261
转载 字节、字符和编码
引言“字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因,实际上由于底层代码本身有问题所导致的。因此,不仅是初学者会对字符编码感到模糊,有的底层开发人员同样对字符编码缺乏准确的理解。1. 编码问题的由来,相关概念的理解1.1 字符与编码的
2016-06-12 10:52:33 500
转载 Java 5.0多线程编程汇总
概述:Java自1995年面世以来得到了广泛得一个运用,但是对多线程编程的支持Java很长时间一直停留在初级阶段。在Java 5.0之前Java里的多线程编程主要是通过Thread类,Runnable接口,Object对象中的wait()、 notify()、 notifyAll()等方法和synchronized关键词来实现的。这些工具虽然能在大多数情况下解决对共享资源的管理和线程间的调度,
2016-06-12 09:45:28 646
转载 ANSI编码和Unicode编码之深入理解
利用今天一天的时间,研究了一下ANSI编码和Unicode编码的不同,下面把我的研究成果写下来,以备日后参考。 ANSI编码最常见的应用就是在Windows当中的记事本程序中,当新建一个记事本,默认的保存编码格式就是ANSI,ANSI应该算是一种压缩编码了,当遇到标准的ASCII字符时,采用单字节表示,当遇到非标准的ASCII字符(如中文)时,采用双字节表示。
2016-06-08 16:50:09 5216
转载 Tomcat中文乱码处理之URIEncoding、useBodyEncodingForURI及CharacterEncodingFilter
大家知道tomcat5.0开始,对网页的中文字符的post或者get,经常会出现乱码现象。 具体是因为Tomcat默认是按ISO-8859-1进行URL解码,ISO-8859-1并未包括中文字符,这样的话中文字符肯定就不能被正确解析了。 常见的解决方法是在tomcat的server.xml下的connetor属性中增加URIEncoding或者useBodyEnco
2016-06-08 16:15:00 3380
转载 java实现二叉树的构建以及3种遍历方法
1.将一个数组构建成一颗二叉树的构建方法 2.代码实现 Java代码 package tree; import java.util.LinkedList; import java.util.List; /** * 功能:把一个数组的值存入二叉树中,然后进行3种方式的遍历 * * 参考
2016-06-08 14:51:59 1141
转载 Java线程之由生产者/消费者问题看线程同步与通信
生产者消费者问题是研究多线程程序时绕不开的问题,它的描述是有一块生产者和消费者共享的有界缓冲区,生产者往缓冲区放入产品,消费者从缓冲区取走产品,这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不能因缓冲区空消费者无产品可取而终止。 解决生产者消费者问题的方法有两种,一种是采用某种机制保持生产者和消费者之间的同步,一种是在生产者和消费者之间建立一个管道。前一种有较高的
2016-06-08 10:35:06 500
转载 java线程之中断线程Interrupted用法
线程状态 Java虚拟机将线程运行过程分成四种状态 。 (1) New 新生;(2) Runnable 可运行;(3) Blocked 阻塞;(4) Dead 死亡。 值得注意的是: 线程的可运行状态并不代表线程一定在运行(runnable != running ) 。 大家都知道:所有现代桌面和服务器操作系统都使用了抢占式的线程调度策略 。一旦线程开始执行,并不
2016-06-08 09:46:06 5986
转载 Java线程之Fork/Join(Java并行计算框架)
并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。 Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数
2016-06-07 17:36:13 740
转载 Java线程之CAS(Atomic)
在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。下面以AtomicInteger为例,来看一下是如何实现的。[java] view plaincopyprint?public final int incrementAndGe
2016-06-07 17:01:43 457
转载 Java线程之Condition高效线程通信
前讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么,引入本篇的主角,Condition,Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截
2016-06-07 16:33:33 434
转载 Java线程之锁对象高效同步(ReentrantLock/ReentrantReadWriteLock)
Lock是java.util.concurrent.locks包下的接口,Lock实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plaincopyprint?public class LockTest
2016-06-07 15:52:41 481
转载 Java线程之线程池
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那么服务器需要并发的处理多个请
2016-06-07 15:14:54 349
转载 Java线程之线程中断/让步/睡眠/合并
线程中断 线程中断涉及到三个方法,如下:voidinterrupt() 中断线程。static booleaninterrupted() 测试当前线程是否已经中断。booleanisInterrupted() 测试线程是否已经中断。
2016-06-07 14:33:40 489
转载 Java线程之线程协作(生产者/消费者问题)
上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者问题是一个经典的线程同步以及通信的案例。该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加
2016-06-07 12:46:51 390
转载 Java线程之线程同步synchronized和volatile
要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。拿上篇博文中的例子来说明,在多个线程之间共享了Count类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线程栈),工作内存存储了主内存Count对象的一个副本,当线程操作Count对象时,首先从主内存复制Count对象到工作
2016-06-07 10:54:12 514
原创 Java线程之FutureTask与Future浅析
一、Future使用 FutureTask是Future和Callable的结合体。传统的代码是这样写的 Future f = executor.submit(new Callable()); 然后通过Future来取得计算结果。但是,若开启了多个任务,我们无从知晓哪个任务最先结束。因此,若要实现“当某任务结束时,立刻做一些事情,例如记录日志
2016-06-06 17:44:19 6006
原创 synchronized和ReentrantLock区别浅析
一、什么是sychronized sychronized是java中最基本同步互斥的手段,可以修饰代码块,方法,类. 在修饰代码块的时候需要一个reference对象作为锁的对象. 在修饰方法的时候默认是当前对象作为锁的对象. 在修饰类时候默认是当前类的Class对象作为锁的对象. synchronized会在进入同步块的前后
2016-06-06 15:16:50 5419
原创 ReentrantLock之公平锁与非公平锁浅析
在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认)。代码如下:public ReentrantLock() { sync = new NonfairSync();} public ReentrantLock(boolean fair) { sync = fair ? new FairSync(
2016-06-06 10:28:46 12427 2
转载 ThreadLocal内部实现及应用场景
一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 这句话从字面上看起来很容易理解,但是真正理解并不是那么容易。 我们还是先来看一个例子:?12
2016-06-03 17:39:04 2952 1
转载 java的static块执行时机
一、误区:简单认为JAVA静态代码块在类被加载时就会自动执行。证错如下: [java] view plaincopyprint?class MyClass1 { static {//静态块 System.out.println("static block "); } } public class Main {
2016-06-03 17:06:48 1511
Hibernate_Session_Transaction
2013-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人