- 博客(821)
- 资源 (68)
- 收藏
- 关注
原创 String.ValueOf和toString区别
在Java开发中,我们经常用到将对象转换成String类型这一功能,常用的有如下三种方式(String)[对象][对象].toStringString.valueOf([对象])(String)这是标准的类型转换,将对象强制转换为String类型,前提是该对象必须能保证转成String类型,否则将抛出ClassCastException异常toStringAPI源码
2017-09-08 08:54:37 10006 2
原创 Java使用BigDecimal进行高精度计算
首先看如下代码示例:System.out.println(0.05 + 0.01);System.out.println(0.05 - 0.03);System.out.println(1.025 * 100);System.out.println(305.1 / 1000);输出结果为:0.0600000000000000050.020000000000000004
2017-09-06 09:01:51 5633
原创 Java之final修饰符
final修饰符是Java语言中比较常见的一个修饰符,我们经常用的String类就是一个final类。 final的用法主要有以下几种:final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值。final可以修饰方法,被final修饰的方法不能被重写。final可以修饰类,被final修饰的类不能派生子类。final修饰的变量被final修饰的实例变量必须显式指定初始
2017-09-05 08:46:34 2199 1
原创 Java实例变量和类变量
Java程序的变量大体可分为成员变量和局部变量。其中局部变量可分为如下3类。形参:在方法签名中定义的局部变量,由方法调用者负责为其赋值,随方法的结束而消亡。方法内的局部变量:在方法内定义的局部变量,必须在方法内对其进行显示初始化。这种类型的局部变量从初始化完成后开始生效,随方法的结束而消亡。代码块的局部变量:在代码块内定义的局部变量,必须在代码块内对其进行显式初始化,这种类型的局部变量从初始化
2017-09-04 09:02:02 29347 10
原创 Java静态代码块、构造代码块、构造函数
所谓的代码块是指使用“{}”括起来的一段代码,根据位置不同,代码块可以分为构造代码块、构造函数、静态代码块。静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用 {} 定义,每一次创建对象时执行。构造函数:创建对象时执行执行顺序优先级:静态代码块 > 构造代码块 > 构造函数。静态代码块static { System.out.p
2017-08-30 20:53:49 1383 1
原创 WeakHashMap实现原理及源码分析
和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。不过WeakHashMap的键是“弱键”。在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。这个“弱键”的原理大致上就是,通过WeakReference和ReferenceQueue实现的。WeakHashM
2017-08-29 22:21:41 1662
原创 Java中substring内存泄露问题
在Java中,String是最常用的数据类型,String有一个substring方法用来截取字符串,或许我们没注意到该方法可能会引起内存泄露问题(出现于Java6中)。方法介绍:在Java中提供了两个截取子字符串的方法:substring(int beginIndex)substring(int beginIndex, int endIndex)问题重现:publi
2017-08-28 22:35:50 2698 2
原创 关于Java中try finally return语句的执行顺序分析
问题分析finally语句块一定会执行吗?可能很多人第一反应是肯定要执行的,但仔细一想,如果一定会执行的话 也就不会这么SB的问了。Demo1public class Test { public static void main(String[] args) { System.out.println("return value of test(): " +
2017-08-22 21:16:22 4227 10
原创 JS判断对象{}是否为空
使用JS:方法一var obj = {};if(JSON.stringify(obj) != "{}"){ console.info("不为空");}else{ console.info("为空");}方法二如果对象不为空,并且知道对象中有某个属性时,则可以判断属性是否有值var obj = {"ID":"1"};if(obj.ID){
2017-08-21 22:33:59 6165
原创 JS控制文本框只能输入数字和小数点
input type="text" value="" onkeyup="onlyNumber(this)" onblur="onlyNumber(this)"/> "text/javascript">function onlyNumber(obj) { //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数
2017-08-19 23:15:06 5499 4
原创 Java ConcurrentModificationException异常解决
上篇文章介绍Iterator遍历ArrayList时有可能引发ConcurrentModificationException异常产生的原因是modCount和expectedModCount的值不一致,具体介绍参见 Iterator迭代器异常解决方法1、单线程环境仔细观察我们会发现Iterator也提供了一个remove()方法,实质也是调用了ArrayList中的remove,源
2017-08-09 23:02:07 2155 1
原创 Iterator迭代器
Iterator是一个迭代器接口,它专门用于迭代各种Collection集合,包括Set集合和List集合。如果查阅JDK的API文档将发现,Iterator迭代器接口只有一个Scanner实现类。显然Scanner并不能用于迭代Set、List集合,那迭代List、Set集合的Iterator迭代器实现类在哪里下面测试使用Iterator迭代各种集合所返回的Iterator对象。en
2017-08-07 22:17:37 2174 2
原创 HashMap和Hashtable的区别
相同点HashMap和Hashtable都是存储“键值对(key-value)”的散列表。存储的思想都是:通过table数组存储,数组的每一个元素都是一个Entry;而一个Entry就是一个单向链表,Entry链表中的每一个节点保存了key-value键值对数据。添加key-value键值对:首先,根据key值计算出哈希值,再计算出数组索引。然后,根据数组索引找到Entry(单向链表),再
2017-08-06 22:37:37 2874
原创 Hashtable实现原理及源码分析
Hashtable简介和HashMap一样,Hashtable也是一个散列表,存储的内容是键值对(key-value)映射。 Hashtable在Java中的定义为:public class HashtableK,V> extends DictionaryK,V> implements MapK,V>, Cloneable, java.io.Serializable从
2017-08-05 22:25:17 1977 1
原创 TreeSet实现原理及源码分析
类似于HashMap和HashSet之间的关系,HashSet底层依赖于HashMap实现,TreeSet底层则采用一个NavigableMap来保存TreeSet集合的元素。但实际上,由于NavigableMap只是一个接口,因此底层依然是使用TreeMap来包含Set集合中的所有元素。下面是TreeSet类的部分源代码public class TreeSetE> extends A
2017-08-01 22:18:23 5086
原创 TreeMap实现原理及源码分析
TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建时提供的Comparator进行排序、对于TreeMap而言,每个Entry都被当成“红黑树”的一个节点对待,示例如下:public class TreeMapTest { public static void main(String[
2017-08-01 09:12:34 3235 1
原创 HashSet实现原理及源码分析
HashSet简介HashSet是Set接口实现,它按照Hash算法来存储集合中的元素不保证元素顺序HashSet是非同步的,如果多个线程同时访问一个HashSet,要通过代码来保证其同步集合元素可以是null对于HashSet而言,它是基于HashMap实现的。HashSet底层采用HashMap来保存所有元素,查看HashSet源代码,可以看到如下提示。public c
2017-07-27 23:06:56 2181
原创 ArrayList和LinkedList的区别
List代表一种线性表的数据结构,ArrayList则是一种顺序存储的线性表。ArrayList底层采用数组来保存每个集合元素,LinkedList则是一种链式存储的线性表。其本质上就是一个双向链表,但它不仅实现了List接口,还实现了Deque接口。也就是说LinkedList既可以当成双向链表使用,也可以当成队列使用,还可以当成栈来使用(Deque代表双端队列,即具有队列的特征,也具有栈的特征
2017-07-26 22:45:34 1719
原创 ArrayList和Vector的区别
Vector和ArrayList这两个集合类的本质并没有太大的不同,它们都实现了List接口,而且底层都是基于Java数组来存储集合元素。在ArrayList集合类的源代码中可以看到如下一行。//采用elementData数组来保存集合元素private transient Object[] elementData;在Vector集合类的源代码中也可看到类似的一行。//采
2017-07-24 23:05:30 3430
原创 HashMap实现原理及源码分析
当我们执行如下操作时:HashMap<String, Float> map = new HashMap<String, Float>();map.put("语文", 86.5f);map.put("数学", 93.0f);map.put("英语", 90.0f);对于HashMap而言,采用一种所谓的“Hash算法”来决定每个元素的存储位置。当程序执行 map.put(“语文”, 86.5f)
2017-07-22 22:42:05 1480 4
原创 Java并发编程之读写锁
读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的。可重入读写锁 ReentrantReadWriteLockReentrantReadWriteLock对象提供了readLock()和writeLock()方法, 用于获取读取锁和写入锁. 读取锁允许多个reader线程同时持有, 而写入锁
2017-07-21 23:19:16 1167 2
原创 Java并发编程之重入锁
重入锁,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。重进入是指任意线程在获取到锁之后能够再次获取该锁而不会被锁阻塞,该特性的实现需要解决以下两个问题。1、线程再次获取锁。锁需要去识别获取锁的线程是否为当前占据锁的线程,如果是,则再次成功获取。2、锁的最终释放。线程重复n次获取了锁,随后在第n次释放该锁后,其他线程能够获取到该锁。锁的最终释放要求锁对于获取进行计
2017-07-20 22:40:07 1211 4
原创 Java并发编程之Lock
Lock是一个接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 我们知道,synchronized是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但synchronized粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock提供了比synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步
2017-07-19 23:25:19 890
原创 Java并发编程之synchronized
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一个时间,只有一个线程可以进行操作。多线程的同步机制对资源进行加锁,同步用以解决多个线程同时访问时可能出现的问题。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异
2017-07-19 09:38:29 2461 4
原创 Java并发编程之CyclicBarrier
一、场景描述有四个游戏玩家玩游戏,游戏有三个关卡,每个关卡必须要所有玩家都到达后才能允许通过。其实这个场景里的玩家中如果有玩家A先到了关卡1,他必须等到其他所有玩家都到达关卡1时才能通过,也就是说线程之间需要相互等待。这和CountDownLatch的应用场景有区别,CountDownLatch里的线程是到了运行的目标后继续干自己的其他事情,而这里的线程需要等待其他线程后才能继续完成下面的工作
2017-07-13 23:01:33 2709 1
原创 Java并发编程之CountDownLatch
一、场景描述在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景例如:百米赛跑,十名运动员同时起跑,由于速度的快慢,肯定有先到达和后到达的,而终点有个统计成绩的仪器,当所有选手到达终点时,它会统计所有人的成绩并进行排序,然后把结果发送到汇报成绩的系统。再例如:当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有
2017-07-12 22:53:35 1561
原创 PLSQL查询数据显示为乱码解决方法
在使用plsql查询数据的时候,中文显示乱码解决方法是配置本机语言环境变量重启PLSQL再次查询 即可显示中文作者:itmyhome
2017-07-11 22:08:19 2258
原创 Oracle exp导出加where指定条件
如果一个表中数据很大又或者我们只需要导出表的部分内容,可使用query参数进行where条件过滤exp test/test@192.168.20.20/orcl file = d:\test.dmp tables=(t_test) query = \"where oildate like '2016%'\"注意单引号和转义字符另导入数据时加上 ignore=y 会忽略掉错误信息
2017-06-23 17:59:20 27154
原创 Oracle 查看和扩展表空间
一、查询表空间使用情况select a.tablespace_name as "表空间名", a.bytes / 1024 / 1024 as "表空间大小(M)", (a.bytes - b.bytes) / 1024 / 1024 as "已使用空间(M)", b.bytes / 1024 / 1024 "空闲空间(M)", roun
2017-06-22 21:32:14 5099
原创 Oracle between and 边界问题
BETWEEN条件的语法为:expression BETWEEN value1 AND value2;Oracle BETWEEN条件将返回表达式在value1和value2(含)范围内的记录。例子:Oracle的BETWEEN..AND..前后都是闭区间,也就是说包含两个端的数使用NOT运算符Oracle BETWEEN条件也可以与Oracle NOT运算符组合。
2017-06-16 18:00:29 47663
原创 Java中Queue的使用
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。我们平时使用的一些常见队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻
2017-06-14 14:13:08 7621 1
原创 MySQL 共享锁与排他锁
共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁), 直到已释放所有共享锁。 如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。用法SELECT ... LOCK IN SHARE MODE;在查询语句后面增加LOCK
2017-06-14 13:53:26 1217
原创 MySQL 乐观锁与悲观锁
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernat
2017-06-14 13:45:19 960
原创 MySQL Limit 分页优化
在系统中需要进行分页的时候,我们通常会使用Limit加上偏移量的方法实现,问题来了,在偏移量非常大的时候,例如可能是limit 10000,10这样的查询,这时MySQL需要查询10010条记录然后只返回最后的10条,前面10000条记录都被抛弃,造成效率低下。优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖查询,而不是查询所有的列,然后根据需要做一个关联操作再返回所需的列,对于偏移
2017-06-14 13:43:34 1817
原创 Spring事务传播属性和隔离级别
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的
2017-05-31 18:00:28 1810 3
原创 Oracle 日期时间模糊查询
将Oracle中时间字段转化成字段串,然后进行字符串模糊查询select * from person p where to_char(p.birthday,'yyyy-MM-dd') like '2012-07-30'作者:itmyhome
2017-05-25 18:00:42 6276 3
原创 JS判断一个字符串是否包含一个子串
一、String.indexOf()var str = "hello i am ithome";var name = "ithome";if(str.indexOf(name) > -1){ alert("contains...");}二、正则var str = "hello i am ithome"; var b = new RegExp("ithome").
2017-04-28 18:00:32 11059
原创 修改Oracle系统管理员密码
找到PWDorcl.ora文件,对应路径 D:\oracle\product\10.2.0\db_2\database打开CMD,以管理员身份运行,进入到PWDorcl.ora文件目录执行:orapwd file=PWDorcl.ora password=mypassword entries=5 force=y作者:itmyhome
2017-04-25 09:41:06 2271
原创 修改Oracle数据库表中的字段顺序
当设计好表结构之后,后期如果需要往表中增加字段,默认会把该字段放到表的最后, 并且字段特别多而我们又想把有关联性的字段放在一起,这时就要修改字段顺序。第一种方法:删了重建,这种方法虽然简单粗暴,但不科学第二种方法:1、首先需要sys或system权限操作2、查询需要更改表的IDselect object_id from all_objects where
2017-04-21 18:00:52 18634
原创 org.apache.struts2.json.JSONException 解决方法
配置文件代码package name="dictionary_ajax_code" extends="json-default"> action name="DictionaryType_ADD_SUBMIT" method="addSubmit" class="com.farm.core.dictionary.web.DictionaryTypeAction"
2017-04-13 18:00:27 6366 1
jQuery全屏插件Textarea Fullscreen
2014-08-07
jQuery幻灯片插件Skippr
2014-08-06
jQuery跳房子插件hopscotch
2014-08-05
jQuery回到顶部插件jQueryGoUp
2014-08-04
Bootstrap网站模板
2014-07-31
Flexigrid的使用(整合Struts2 )
2014-07-09
EasyUI DataGrid及Pagination(源码)
2014-07-08
EasyUI项目
2014-07-07
jfreechart.zip(含项目代码)
2014-07-05
jfreechart
2014-07-05
ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)
2014-07-03
ajaxFileUpload+struts2实现多文件上传(源码)
2014-07-02
Struts2框架搭建(源码)
2014-07-02
Struts2框架搭建(项目源码)
2014-07-01
jquery.cycle.all.js
2014-06-15
ibatis实战之一对多关联(源代码)
2014-06-13
ibatis实战之基础环境搭建(源码).zip
2014-06-09
ibatis-2.3.4.726.zip
2014-06-09
springMVC3学习(十二)--文件上传优化CommonsMultipartResolver(源码)
2014-06-05
Struts2 自定义下拉框标签Tag(源码)
2016-02-25
Java实现POI导出Excel
2015-11-19
JavaScript编码规范
2015-11-17
uploadifive struts2实现图片上传
2015-03-06
jQuery表单插件jquery.form.js(示例源码)
2015-01-18
windows安装jekyll所需软件 ruby DevKit python pip
2014-12-19
Struts2 ajax json使用介绍
2014-12-17
kindeditor图片上传 struts2实现
2014-11-17
EasyUI Editable Tree源码
2014-09-02
EasyUI实现异步加载tree(整合Struts2)源码
2014-09-01
CKEditor实现图片上传(使用Struts2)
2014-09-01
SyntaxHighlighter代码高亮插件
2014-08-14
xheditor搭建
2014-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人