Java
文章平均质量分 61
匆忙拥挤repeat
倦鸟就此散 余花怎不乱 物是人已非 落寞
红尘难看破 美梦成真否 镜花水月尔 迷惘
展开
-
Java 和 Kotlin 中,字符转Unicode,Unicode 转10进制
字符转Unicode;Unicode 转10进制原创 2023-02-09 09:09:51 · 726 阅读 · 0 评论 -
静态导入包
jdk 1.5增加的新功能 import static java.lang.Math.*; 这时使用Math类的 公有的静态成员。 可以直接用 属性名 ,方法名,调用,,不需要 类名.了原创 2011-09-12 15:36:08 · 844 阅读 · 0 评论 -
类的加载器 java.lang.ClassLoader
java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即java.lang.Class 类的一个实例。除此之外,ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。为了完成加载类的这个职责,ClassLoader 提供了一系列的方原创 2011-08-24 14:43:22 · 730 阅读 · 0 评论 -
递归与非递归 遍历文件目录
import java.io.File;import java.util.LinkedList;/* * 采用非递归方式遍历目录及其子目录的文件 */public class ProcessDirectory { public static int num;//文件总量 public static void main(String[] args) { String pa原创 2014-08-05 19:36:44 · 2888 阅读 · 4 评论 -
Java CopyOnWriteArrayList 分析
java.util.concurrent.CopyOnWriteArrayList 是一个线程安全的List。内部维护了一个volatile Object[] elements,volatile修饰,表示即使在多线程环境中对它进行修改,每个线程都会实时拿到最新值add()时,会调用System.arrayCopy(),copy出一个新的array,再赋值给elements。要保证...原创 2016-03-23 11:09:32 · 963 阅读 · 0 评论 -
Java LinkedBlockingQueue 分析
package java.util.concurrentpublic class LinkedBlockingQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable原创 2016-05-31 15:59:46 · 1645 阅读 · 0 评论 -
HeadFirst 设计模式 笔记
设计原则1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2. 针对接口编程,而不是针对实现编程。 针对接口编程,实质上是指针对超类型(supertype)编程。 变量的声明类型应该是超类型,通常指一个抽象类或一个接口;多态3. 多用组合,少用继承。 has a 可能比 is a 更好原创 2016-09-10 18:00:32 · 860 阅读 · 0 评论 -
Java 线程概述: 线程种类、状态,原子性、内存可见性、synchronized、volatile
创建一个线程实例时,JVM会分配两个调用栈,一个用于跟踪java代码间的调用关系,一个用于跟踪native代码间的调用关系后台线程(Daemon Thread)和用户线程(User Thread)。用户线程会阻止JVM的正常停止,即JVM正常停止前进程中的所有用户线程必须先停止完毕,否则JVM无法停止后台线程则不会影响JVM的正常停止设置线程为后台线程,可以调用Thread原创 2016-03-21 21:18:18 · 848 阅读 · 0 评论 -
java 枚举 Enum
枚举类中的元素都是一个独立的个体,它们用来描述一件事物。。> 自定义的枚举类,都默认 实现 了 java.lang.Enum > 枚举类的构造器只能用private 修饰,写或不写 修饰符,都为private> 可以含有属性和方法> final 常量属性,它的赋值要么在构造函数里,要么在枚举元素声明中> 如果在枚举元素声明中使用一个或多个常量,那么相应的构造函数声明中也要有对应个数、类型的参数> 实现接口,则 在定义每个枚举实例中 重写 接口里的 抽象方法原创 2011-08-24 14:43:09 · 794 阅读 · 0 评论 -
Java 关闭IO流的工具方法
老是要在try-catch的finally块中,写.close(),然后还又得对这个close()加个try-catch,蛋疼写个工具方法吧:public static void close(T t) { try { if (t != null) { t.close(); }原创 2016-12-20 16:11:20 · 1550 阅读 · 0 评论 -
Java Thread类的 yield()、join()
yield:解释它之前,先简述原创 2014-08-16 22:34:30 · 11783 阅读 · 2 评论 -
Android 使用Java8新特性之Lambda expression 附命令者模式简化
前言Lambda expression,java8的新特性。使用Lambda expression,可以替代只有一个函数的接口实现,告别匿名内部类,代码看起来更简洁易懂。 java8还有其它一些新特性,不过在android上可能都无法使用。 studio 2.x后 支持jack编译器,使用它,能使用java8的Lambda expression,但其它特性也不敢保证就能用。 注:Androi原创 2017-03-08 16:55:54 · 2980 阅读 · 9 评论 -
Android 使用Java8新特性之"方法引用"
前言上一文:Android 使用Java8新特性之Lambda expression (附命令者模式简化) 说过lambda表达式,在android中的应用。本文讲下Java8新特性之”方法引用”。 “方法引用”,它其实可以看成lambda表达式的一种简写形式。 再回顾一下lambda表达式的应用场景:简化仅含单一抽象方法接口的调用方法引用的4种形式方法引用的符号形式,形如,原创 2017-03-13 18:10:46 · 2509 阅读 · 2 评论 -
Java ThreadPoolExecutor 线程池调度器
可设置的主要参数corePoolSize核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。核心线程在allowCoreThreadTimeout被设置为true时会超时退出,默认情况下不会退出。maxPoolSize当线程数大于或等于核心线程,且任务队列已满时,线程池会创建新的......原创 2017-05-26 17:10:25 · 5638 阅读 · 2 评论 -
Android HandlerThread、Handler、Looper、MessageQueue、Message 简单分析
UI主线程使用:prepareMainLooper();静态sMainLooper被赋值,mThread=主线程子线程使用:prepare();由于sThreadLocal是一个线程局部变量,即使声明为static,在子线程中也是一个新的对象,可以由它set/get一个new Looper();这时sMainLooper还是主线程赋值的Looper对象,myLooper()才是子线程的Looper对象原创 2017-07-03 16:53:34 · 695 阅读 · 0 评论 -
Java加密算法 AES
package com.stone.security;import java.util.Arrays;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSpec;/** * *原创 2014-03-10 23:23:14 · 60152 阅读 · 6 评论 -
有趣的位运算
位运算位运算,即是 操作二进制的bit(位),来进行运算。其分类有:按位与(&),按位或(|),按位异或(^),按位取反(~),按位左移(<<),按位右移(>>)java中还有 “无符号右移” (>>>);原创 2017-10-23 16:23:38 · 698 阅读 · 0 评论 -
计时器 Timer,计时任务 TimerTask
public static void main(String[] args) { Timer timer = new Timer();//计时器 class MyTimerTask extends TimerTask { @Override public void run() { // TODO Auto-generated method stub Syst原创 2011-11-02 13:28:04 · 1073 阅读 · 0 评论 -
内部类
class A { //Inner1 要在 A 初始化后 才能使用,即要被A的对象所调用 class Inner1 { int k = 0; // static int j = 0; //A加载后,Inner1没有加载,所以这个 静态变量j 无法立即使用,报错 final int z = 0; /*static void say1() { }*/ void say2原创 2011-08-24 14:43:02 · 591 阅读 · 0 评论 -
Objcet.clone() 和Cloneable 接口
/* * Object 没有实现 Cloneable接口 ,所以如果其子类 没实现 Cloneable,就调用 * super.clone(); 会在运行时 throws CloneNotSupportedException * Object里的clone(),的访问符是 protected * 浅表复制:类A实现 了Cloneable接口(重写cl原创 2011-11-13 16:49:16 · 1058 阅读 · 0 评论 -
转换abc三种字母组合的字符串
第1次写这个算法的思路:循环里,只要符合替换规则就直接进行替换,当没有符合的就结束替换行为, 这样提交到庞果,提示错误。。。后发现原因是:替换顺序有先后 —— 没有按照我的想法 每次替换一组,再从头开始 找到符合规则 继续替换。。。。 弄了半小时 第2~ 次思路:必须要修复上面的bug,所以 就查出 哪个组合先出现,就先替换它。。。。。。转换思路有点慢,整了一个小时。。原创 2013-08-30 10:02:50 · 3667 阅读 · 0 评论 -
猴子吃桃问题
/* * 猴子吃桃 * 每天吃余下总量的一半加1个,直至第10天,还余下1个,求原来总共有多少个 */public class Eat { public static void main(String[] args) { int n = 10; System.out.println(eat(n)); System.out.println(eat2(eat(n))); }原创 2014-08-05 21:09:53 · 1243 阅读 · 0 评论 -
求n的阶乘,求组合的个数
/** * 组合:从n中挑选r个数叫做 组合的个数 * 求:组合的个数(不算顺序) * @author stone * */public class Combination { public static void main(String[] args) throws IllegalAccessException { int n = 11; calc(n); } p原创 2014-07-28 14:59:30 · 1506 阅读 · 0 评论 -
Java 中的左移运算
我们知道 a<<n ,可以看成 a 乘以 2的n次方cimi原创 2014-08-19 18:41:39 · 3697 阅读 · 0 评论 -
JDK 动态代理
用的是Proxy.newInstance(ClassLoader loader,Class<?>[ ] interfaces,InvocationHandler h) 返回的是Object,实际是 interfaces 中的所有接口的一个实现类。我们把这个返回的对象,称为代理对象。原创 2011-09-28 13:07:54 · 678 阅读 · 0 评论 -
IO流 应用: 文件的 切割与合并
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStream;import原创 2011-11-12 16:24:17 · 1426 阅读 · 0 评论 -
Java Annotation 常用的注解
@interface 来声明注解。与接口类似有 抽象方法 。而且还能 设置 默认值。方法的 返回值类型 ,只能是 primitive、array、enum、Class、annotation 之一。 如果注解里的只有一个方法,名为value(),那么 调用注解时, 可以直接 写值 如: @Target(ElementType.Method)@SuppressWarnings(St原创 2011-11-16 15:16:39 · 1008 阅读 · 0 评论 -
网络类 UDP TCP Socket
UDP协议:数据报 的发送和接收, /* * DatagramSocket 就相当于是一个 应用服务 * DatagramPacket 作为send()参数时,需要有目标主机的IP和端口号 * 作为receive()参数时,这时操作dp对象的ds需要和send()指定的端口 相同 */public class UDP { public static void原创 2011-10-14 00:11:00 · 1657 阅读 · 0 评论 -
Java 反射
反射,就是把某个类中的 方法、属性等 给分离成 一个通用的 java 类, 再通过这些类的一些方法,来进行操作。。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。 Class c1 = String.class;Class c2 =原创 2011-08-24 14:43:16 · 640 阅读 · 0 评论 -
Java 可变参数 variable parameter
可变在后 public static void main(String[] args) { System.out.println(abs(-9)); calc(-7, 3, 5, 9); } static void calc(int x, int... y) { for (int i = 0; i < y.length; i++) { x += y[i]; } S原创 2011-09-12 15:45:59 · 717 阅读 · 0 评论 -
ReadDataInTxtFileFor1024Bytes 读txt文件,把数据以1024K单位分隔在不同的文件中
将某一目录及其子目录下的所有txt文件的数据以1024K,分隔在新的文件中,新文件为1.txt、2.txt……在网上也看到有人写了一个,,思路是: 把所有数据都读出来,放入一个StringBuffer中,再从中循环读取1024K,入其他文件中。。这个思路比较容易想,,也容易实现。。。我自己就想。。能不能一边读数据一边存入新建的文件中。。后来弄了七八个小时,,出来了: 首先声明 了一原创 2011-08-24 14:42:45 · 1870 阅读 · 0 评论