自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hello, world

学习 纪录 分享

  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 注解的使用实例

package com.franky.annotation;/** * @描述 注解的应用实例 * @作者 franky * @日期 2014-12-31 下午3:16:00 *///显式指定注解值,如果数组属性只有一个元素那么可以省略大括号@MyAnnotation(color = "red",value = "hello",arrValue=1,metaAnnotation

2014-12-31 17:02:11 467

原创 利用BeanUtils与PropertyUtils进行javabean的内省操作

package com.franky.bean;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.PropertyUtils;/** * @描述 BeanUtils与PropertyUtils的使用 * @作者 franky * @日期 2014-12-31 下午12

2014-12-31 12:09:18 2846

原创 通过PropertyDescriptor和Introspector对JavaBean的简单内省操作

package com.franky.bean;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * @

2014-12-31 11:13:09 396

原创 使用类加载器加载配置文件

package com.franky.reflex;import java.io.InputStream;import java.util.Collection;import java.util.Properties;/** * @描述 使用类加载器加载配置文件 * @作者 franky * @日期 2014-12-31 上午10:15:58 */public class

2014-12-31 10:31:29 958

原创 利用反射加载配置文件中的类动态生成集合

/** * */package com.franky.hashcode;import java.io.FileInputStream;import java.io.InputStream;import java.util.Collection;import java.util.Properties;/** * @描述 利用反射,生成集合添加对象元素 * @作者 fran

2014-12-30 23:15:47 435

原创 hashcode的实例说明

package com.franky.hashcode;import java.util.Collection;import java.util.HashSet;/** * @描述 关于hashCode的说明实例 * @作者 franky * @日期 2014-12-30 下午9:37:42 * */public class HashCodeTest { /**

2014-12-30 22:16:49 683

原创 数组的反射使用实例

package com.franky.reflex;import java.lang.reflect.Array;import java.util.Arrays;/** * @描述 数组的反射 * @作者 franky * @日期 2014-12-30 下午5:16:41 */public class ArraysReflex { /** * @param args

2014-12-30 17:50:52 449

原创 利用反射调用指向其他类的main方法

package com.franky.reflex;import java.lang.reflect.Method;/** * @描述 用反射调用其他类的main方法 * @作者 franky * @日期 2014-12-30 下午5:01:16 */public class InvokeMainWithReflex { /** * @param args 传入的参数列表

2014-12-30 17:49:34 341

原创 反射的基本使用实例

package com.franky.reflex;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * @描述 反射的基本使用实例 * @作者 franky * @日期 2014-12-30 下午4:08:34 */

2014-12-30 17:48:19 362

原创 java基础加强知识点

1.增强的for循环:  循环对象必须实现Iterable接口 内部变量可以使用修饰符;2.可变参数:  必须放在方法参数列表最后 public static int add(int i,int... args),可变参数以数组方式使用;3.override 和 overload区别:override(重写) 1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的

2014-12-30 17:36:19 404

原创 策略设计模式:父类持有接口成员变量,动态设定接口成员实现类,动态改变方法

Duck抽象父类:package com.franky.strategy;/** * 策略设计模式 * 定义Duck鸭子抽象类 * @author Administrator * */public abstract class Duck { /** * 内部持有飞行行为(FlyBehavior)的接口对象 */ private FlyBehavior flyB

2014-12-30 00:08:32 502

原创 URL的使用实例

package com.franky.net.http;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;/** * URL的使用实例 * @author Administrator * */public class

2014-12-29 23:25:24 982

原创 HTTP:浏览器请求实例,自定义服务器

package com.franky.net.http;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/*

2014-12-29 23:16:45 852

原创 TCP:客户端和服务端的使用实例

客户端:package com.franky.net.tcp;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;/** * TCP客户端 *

2014-12-29 21:39:23 687

原创 日期时间:Date的使用实例

import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * 日期格式使用实例 * @author Administrator * */public class TestDate { /**

2014-12-29 21:27:42 424

原创 Map集合特定

HashTable :JDK1.0出现的,哈希表结构,是线程同步的,不允许null键,null值;HashMap:哈希表结构,是线程不同步的,允许null键,null值;HashSet的内部实现就是HashMap;TreeMap:二叉树结构,是线程不同步的,可以对Map中的键进行排序;

2014-12-28 22:47:30 289

原创 泛型的错误写法

Collection c = new ArrayList(),无法作为泛型类型传递,因为其类型的不确定性,并且已经明确了类型;Collection c = new ArrayList(),已经确定了泛型类型,所以无法作为泛型类型,因为不确定性;如果泛型类型参数不确定,可以使用通配符Collection进行操作;泛型的出现是为了解决类型转换存在的安全问题,因此不会支持以上两种写法;

2014-12-28 22:12:09 517

原创 TreeSet的使用

TreeSet可以使元素对象进行有序排列,并且有两种比较方式,Comparable接口,Comparator接口如果某个对象需要加入TreeSet集合,那么该对象应该实现Comparable接口,并覆盖其中的compareTo()方法,实现比较功能;比较的结果如果返回0,那么就视为同一个对象,就不会进行存储;如果compareTo()方法返回1,那么就会保证存储顺序;如果元素对象不能够实现Comp

2014-12-28 21:32:44 412

原创 排序:二分查找

/** * 二分查找法:前提是数组必须是有序的 * @param arrs 要查找的数组 * @param key 要查找的值 * @return 返回的角标,-1说明没有该元素 */ private static int binarySort(int[] arrs,int key) { int mid; int min = 0; int max = arrs.l

2014-12-28 16:17:46 312

原创 排序:冒泡排序

冒泡排序:每次比较相邻的两个元素大小,根据规则来交换元素位置,每轮比较完成后,最大或最小的元素按照顺序排列在数组末尾/** * 冒泡排序 * @param strs */ public static void popSort(String[] strs){ for (int i = 0; i < strs.length-1; i++) { for (int j = 0; j

2014-12-28 14:19:19 321

原创 排序:选择排序

选择排序:依次取出数组的每一个元素与后面的元素进行比较,每一轮比较都会将最大或者最小的元素依次排列到数组前面,直到比较完成 /** * 选择排序 * @param strs 传递的数组 */ private static void selectSort(String[] strs) { for (int i = 0; i < strs.length-1; i++) { fo

2014-12-28 14:14:44 339

原创 多线程:interrupt()方法 守护线程 join()方法 及优先级

interrupt()方法可清除线程的冻结状态,使其继续执行,但会抛出InterruptedException异常,可以捕获并进行相应的处理;setDaemon()方法可以将线程设置为守护线程或用户线程,但必须在线程开启前调用,该方法首先调用checkAccess方法,检测是否有权修改该线程,并且当运行的线程都是守护线程时,Java虚拟机退出,程序结束;线程启用join()方法启用后,被要求j

2014-12-28 01:33:07 383

原创 反射的基本使用实例

package com.franky.reflex;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * @原理:反射就是通

2014-12-22 17:22:25 416

原创 UDP:socket服务端和接收端的基本使用实例

服务端代码:package com.franky.net;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class UDPSendClient { public static

2014-12-20 20:09:48 576

原创 Properties的使用实例:限制方法运行次数

package com.franky.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;

2014-12-17 22:44:48 451

原创 IO流的各个对象

FileOutputStream文件字节输出流对象,用于向File输出原始字节流,父类为OutputStream;BufferedOutPutStream缓冲的字节流输出对象,可以将字节输出到一个多字节数组缓冲区内,从而一次性的输出整个缓冲区;FileInputStream 文件字节输入流对象,用于从文件系统向内存输入原始字节流,父类为InputStream;BufferedInputStream

2014-12-16 22:55:52 651

原创 IO实例:复制文件

package com.franky.io;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO

2014-12-15 21:20:33 408

原创 递归列出指定目录内的所有文件夹和文件

package com.franky.io;import java.io.File;/** * 列出指定文件夹内的所有文件夹和文件 * @author Administrator * */public class SerchFile { /** * @param args */ public static void main(String[] args) { F

2014-12-14 21:53:52 1557

原创 File类的常用方法实例

package com.franky.io;import java.io.File;/** * File 的常用操作实例 * @author Administrator * */public class IODemo1 { /** * @param args */ public static void main(String[] args) { File f =

2014-12-13 22:45:42 409

原创 TreeMap的使用实例:统计字符出现次数

import java.util.Map;import java.util.Set;import java.util.TreeMap;/** * TreeMap使用实例 * 将字符串内字符出现的次数进行统计输出 * @author franky * */public class DemoForCalcStr { public static void main(Strin

2014-12-12 22:46:27 696

原创 泛型的使用说明

泛型是应用在编译时期的一项安全机制,将问题转移到了编译时期,避免了程序在运行时,可能出现的对象不匹配,转换异常等问题;编译器通过对泛型检查,如果检查通过,那么将成功生产class文件,但在class文件中,泛型的标签被擦除了;泛型可以应用在接口,类,方法中,通过明确的指定传入的对象类型,而保证操作对象的一致性,也可以不明确对象类型,而在实际实例化中在指定其类型;通配符()可以看做是Object

2014-12-11 21:33:12 488

原创 set集合和 list集合 的区别

ArrayList 是数组结构,可以存储重复对象,查询速度快,可以进行增删改查;LinkedList是链表结构,默认为先进后出,可以自定义为堆栈(先进后出)或队列(先进先出),对应方法,xxxFirst,xxxLast,xxx:add get remove;HashSet是哈希表结构,存储的对象不可以重复,查询速度非常块,不保证有序输出;LinkedHashSet哈希表+链表结构,可以实现有序排列

2014-12-10 23:26:47 3092

原创 List集合:Vector ArrayList LinkedList异同

Vector 数据结构是数组,数组是可变长度的(即不断new出新数组,将原数组内容复制到新数组),线程是同步的,增删和查询都很慢;ArrayList 数据结构也是数组,数组是可变长度的。线程是不同步的,替代了Vector。增删速度不快,查询速度快,因为在内存中是一段连续的空间,每次更改数组的长度,都会引起数组角标的变化,可以通过ListIterator进行数组的修改,删除,增加操作,并且可以从后往

2014-12-09 15:14:23 396

原创 StringBuffer和StringBuilder的使用区别

StringBuffer是线程安全的,StringBuilder只用于单线程操作的情况,如果涉及到多线程操作,需要StringBufferStringBuffer在内部维护了一个可变长度的char型数组,并且方法做了同步处理,StringBuilder没有同步处理在操作效率上显然StringBuilder要高,因为不存在同步线程的问题

2014-12-08 22:38:54 372

原创 多线程:生产者消费者实例

import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 生产者消费者实例 */public class ProducerAndConsumer { public s

2014-12-07 21:32:29 1207

原创 多线程死锁实例

/** * 多线程死锁实例:两个锁进行嵌套,造成死锁 */public class DeadLock { public static void main(String[] args) { Task task1 = new Task(true); Task task2 = new Task(false); new Thread(task1).start(); new Th

2014-12-06 20:39:47 473

原创 同步代码块和同步函数的区别

同步代码块可以绑定任意对象,而同步函数只能绑定该类对象this,static同步函数只能绑定字节码类名.class如果多个线程使用同一个锁的话,那么两者均可以使用,如果存在多个锁的话,只能使用同步代码块开发推荐使用同步代码块

2014-12-06 17:42:13 1400

原创 饿汉模式和懒汉模式的多线程访问问题

/** * 饿汉模式与懒汉模式的使用实例 * 1.饿汉模式不存在线程安全问题,因为单例对象在对象创建时候,已经存在 * 2.懒汉模式存在线程安全问题,线程访问的时候可能创建多个单例对象 * 3.推荐用饿汉模式进行多线程的访问,不存在线程安全问题 */public class SingleThreadAccess { public static void main(String[]

2014-12-06 15:35:06 595

原创 验证多线程中同步函数锁是this对象

/** * 验证同步函数的锁是this对象 */class TestThreadLock { public static void main(String[] args) throws InterruptedException { Custom custom = new Custom(); Thread t1 = new Thread(custom); Thread t2 =

2014-12-06 14:54:59 510

原创 多线程的基本使用实例

/** * 多线程基本使用实例 * 1.第一种实现方法:继承Thread父类,子类中重写run()方法,方法体中放入任务代码, * 然后new出子类对象,使用start()方法开启子线程,但这种开启方式的弊端是子类如 * 果继承了Thread类,那么就无法再继承其他类,有很大局限性 * 2.第二种实现方法:对象类实现Runnable接口,重写run()方法,方法体中放入任务代

2014-12-05 23:12:55 582

Root Explorer-4.0.2M 适用于Android7.0以上root后查看系统文件

Root Explorer-4.0.2M 适用于Android6.0以上root后查看系统文件,nexus 5 7.1.2亲测可用,解决打开黑屏

2017-06-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除