Java
八神庵_
这个作者很懒,什么都没留下…
展开
-
synchronized 和 Lock基本用法
synchronized对一个方法进行同步,那么只需在方法的签名添加一个synchronized关键字。// 未同步的方法 public void test() {} // 同步的方法 pubilc synchronized void test() {}//synchronized 也可以用在一个代码块上,看public void test() { synchronized(obj转载 2016-08-18 16:35:40 · 269 阅读 · 0 评论 -
泛型限定示例
package test;import java.util.Comparator;import java.util.Iterator;import java.util.TreeSet;/** * 泛型限定测试 * 上限限定如:<? extends T> * 下限限定,如<? super T> */public class GenericTest { public static v原创 2016-09-06 13:26:05 · 215 阅读 · 0 评论 -
从MongoDb读文件
代码示例package test;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import org.bson.Document;import org.原创 2016-09-06 13:47:02 · 1106 阅读 · 0 评论 -
Collections的sort用法
package test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;/** * 注意:Collections一般对list进行排序,不能对Set,Map排序,因为Set可以用TreeSet,Map用TreeMap排序 * 如果要用Collections进行排序,要么原创 2016-09-06 14:52:21 · 245 阅读 · 0 评论 -
二分法查找(递归和非递归)
二分法的前提是:集合中的元素是按一定规则排序的。对List中的String排序,以及二分法实现示例:package test;import java.util.ArrayList;import java.util.Collections;public class TestBinarySearch { public static void main(String[] args) {原创 2016-09-06 16:45:46 · 1399 阅读 · 0 评论 -
Cas认证原理
1.cas相当于一个web应用,应配置在一台电脑上,作为cas认证服务器。首先有三个URL: 登录URL:cas的登录认证url(假设为:https://cas/login) 验证URL:cas的验证ticket(票据)url 登出URL:cas的登出url(假设为:https://cas/logout)1、浏览器首先访问页面(假设为:https://myweb/weblogin),filet原创 2016-09-20 01:56:04 · 3525 阅读 · 0 评论 -
java.util.Date和java.sql.Date互相转化
特别简单!因为————两者构造方法都是 Date(long l) 例子如下public class TestDate { public static void main(String[] args) { java.util.Date util_date = new java.util.Date(System.currentTimeMillis()); ja原创 2016-09-29 15:53:08 · 556 阅读 · 0 评论 -
java汉字转化为整数
今天碰巧需要,就写了一个汉字转化为数字的demo。 如:三百二十 —->320废话不多说,直接上例子。package com.yxxs.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;public class StringNum2Int { public static Hash原创 2016-10-08 13:12:57 · 1048 阅读 · 1 评论 -
java值传递、引用传递
转自:http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.htmlJava中的参数传递机制一直以来大家都争论不休,究竟是“传值”还是“传址(传引用)”,争论的双方各执一词,互不相让。不但“菜鸟”们一头雾水,一些“老鸟”也只知道结果却说不出所以然来。我相信看过下面的内容后,你就会明白一些。先看基本类型作为参数传递的例子: public class Test转载 2017-05-17 10:47:52 · 232 阅读 · 0 评论 -
移除ArrayList中的重复元素
去重ArrayList思路: 创建一个新的空ArrayList,遍历原list的每一个元素,如果新list中无该元素就添加。备注1: 如果是自定义对象去重,则需要重写自定义对象的 equals方法,否则,将按Object的equals判断,也就是地址判断。 这样可能就没有意义,比如需求:自定义Person对象,Person里面有姓名和年龄,如果姓名年龄相等,我们判断为相同,用原来的object原创 2016-08-26 16:34:41 · 1080 阅读 · 1 评论 -
TreeSet的带comparator的构造方法
TreeSet是一个有顺序,且不能重复的Set集合,底层是二叉树。TreeSet中插入多项自定义对象,要么使自定义对象具有判断顺序的方法,即实现comparable接口,重写compareTo方法,要么就实现传实现comparator的比较器的构造方法,让集合自己能对元素排序。实现comparator比较器的构造方法如下:package test;import java.util.Comparato原创 2016-09-05 01:05:23 · 1044 阅读 · 0 评论 -
JAVA中,equals和==的区别
一、比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean) 比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。备注:String不是基本数据类型二、比较对象为引用数据类型euqals和==本质上都是比较比较的是两个对象的引用(内存地址)是否相同。equals()是Object类的方法 ,object类是所有类的基类,转载 2016-08-17 14:25:18 · 227 阅读 · 0 评论 -
java多态
多态需要三个条件: 1、有继承或者实现接口 2、父类引用指向子类对象 3、重写多态性的体现 1:父类引用指向子类对象,或者 2:父类接收子类对象 1 如Animal a = new Cat(); 2 如public static void function(Animal a){ System.out.println(a); } 调用:fun原创 2016-08-17 01:42:43 · 265 阅读 · 0 评论 -
字符编码
GBK :汉字占2个字节,字母占1个字节utf-8 :汉字占3个字节,字母占1个字节utf-16 :汉字占2个字节,字母占2个字节(java编码)原创 2015-02-01 20:04:44 · 242 阅读 · 0 评论 -
线程的5种状态
线程的五种状态:新建、就绪、运行、阻塞、消亡新建:新建一个线程,线程not alive 就绪:start()方法创建线程运行的系统资源,并调度线程运行run()方法。但是线程处于有资格运 行,但没有获得执行权限的等待状态。线程 alive运行:调用run()方法,线程alive 阻塞:如sleep()、wait() 等,线程alive 消亡:如stop()、线程run()方法执行完原创 2016-08-19 02:38:38 · 796 阅读 · 1 评论 -
线程同步
线程正确同步的前提: 1、有多个线程操作共享数据 2、有多条操作共享数据的语句,需要分别对每个线程操作共享语句块加synchronized,即使某个线程操作的语句只有一条,也需要加synchronized。 3、多个线程synchronized加的锁,必须是同一个锁。简单测试例子 如果同步失败,则会出现姓名和性别对应错误,因为可能在更改姓名后且未更改性别前,pop打印事件。同步成功,则不会发原创 2016-08-23 01:29:10 · 242 阅读 · 0 评论 -
多线程+缓冲池demo
缓冲池的特点在于:需要把缓冲池填满后,再从缓冲池里面往外拿数据,直到拿完,然后再向缓冲池填充,然后再拿完。循环往复,直到结束。其中,有两种写法,一种是用synchronized(java.lang.Thread)写,另一种用lock写(java.util.concurrent.locks.ReentrantLock)。lock是synchronized的优化。简单来说,lock较synchroniz原创 2016-08-24 19:41:37 · 863 阅读 · 0 评论 -
HashSet判断重复
HashSet底层实现是hashtable。 HashSet判断重复的条件是hashCode()+equals方法 每个元素插入前,首先会调用自己的hashCode(),判断与其它Set中的hashCode是否一致,hashCode不一致,那么不一样,可以插入。如果一样,再调用自己的equals方法,判断看与Set中的其它元素,是否一样,如果不一样,那么能插入。如果要在Set中插入自定义对象,那原创 2016-09-04 10:53:49 · 513 阅读 · 0 评论 -
TreeSet的comparable接口
TreeSet是一个排序的、无重复元素的集合。如果创建自定义对象,并且TreeSet创建时调用的是无参的构造函数,那么必须要实现comparable接口。示例代码:向TreeSet中插入无参的自定义对象Persons(含name,age)。 注意: 1、首先要实现comparable接口 2、comparable接口内容要合理,比如只判断年龄进行排序,那么结果是年龄相同的所有Persons对象原创 2016-09-04 23:56:18 · 2155 阅读 · 1 评论 -
ArrayList遍历删除元素的三种方式
今天看了ArrayList的源码,就想写一下关于ArrayList遍历的东西。进入正题,上代码!!比较重要的代码点已经标红。 package collection;import java.util.ArrayList;import java.util.Iterator;public class TestArrayList { public static void ma...原创 2018-10-24 23:10:36 · 5647 阅读 · 0 评论