Java
文章平均质量分 65
Mars-xq
好记性不如烂笔头。
展开
-
Java : 强软弱虚引用
类关系图Reference (java.lang.ref) PhantomReference (java.lang.ref) SoftReference (java.lang.ref) SoftValueReference in LocalCache (androidx.test.espresso.core.internal.deps.guava.cache) ...原创 2019-10-21 12:07:02 · 170 阅读 · 0 评论 -
Java-内部类
参考: java四种内部类详解 java 四种内部类区别分类Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类local inner class 匿名内部类anonymous inner class一.成员内部类:member原创 2017-07-06 14:19:47 · 404 阅读 · 0 评论 -
LRU和LFU的区别
LFU和LRU算法的不同之处:LRU的淘汰规则是基于访问时间, 而LFU是基于访问次数的。LFULFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。具体实现如下: 新加入数据插入到队列尾部(因为引用计数为1);队列中的数据被访问后,引用计数增加,队列重新排序;当需要淘汰数据时,将已经排序的原创 2017-06-21 17:48:16 · 3115 阅读 · 0 评论 -
Java-算法分析及其优劣判断
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。1、时间复杂度算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做 T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,原创 2017-06-25 18:10:52 · 2569 阅读 · 0 评论 -
Java-线程的运行状态
参考: 学习java线程状态和看懂thread dump文件中的线程信息 Java线程中wait状态和block状态的区别?1,线程状态为“waiting for monitor entry”: 意味着它 在等待进入一个临界区 ,所以它在”Entry Set“队列中等待。 此时线程状态一般都是 Blocked: java.lang.Thread.State: BLOCKED (o原创 2017-06-17 08:45:44 · 2309 阅读 · 0 评论 -
java动态代理
参考: JAVA 动态代理 Java动态代理的两种实现方法 Java 动态代理作用是什么?//定义被代理的接口public interface Calculator { Integer add(Integer num1, Integer num2); Integer minus(Integer num1, Integer num2);}//被代理类public...原创 2018-06-01 15:14:22 · 401 阅读 · 0 评论 -
getName getSimpleName getCanonicalName区别
/** getName / getCanonicalName* 对于array或内部类来说是有区别的.其他没区别。** 类加载(虚拟机加载)的时候需要类的名字是getName。** 参考:Java的getCanonicalName和getName* https://blog.csdn.net/hustzw07/article/details/71108945* */public ...原创 2018-10-16 14:09:05 · 665 阅读 · 0 评论 -
IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
项目报错:Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.java.lang.IllegalArgumentException: Invalid character found in method n...原创 2018-12-18 15:55:18 · 943 阅读 · 0 评论 -
公平锁,非公平锁,乐观锁,悲观锁、ReenTrantLock、synchronized、CompareAndSet(CAS)
参考:面试必备之乐观锁与悲观锁公平锁,非公平锁,乐观锁,悲观锁ReenTrantLock可重入锁(和synchronized的区别)总结悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种...原创 2019-01-18 15:31:05 · 1664 阅读 · 0 评论 -
java位的运算>>、>>>、或、非、异或、与
//右移一位(除以2的一次方) System.out.println("2>>1=================" + (2 >> 1));//1 System.out.println("20>>1=========原创 2019-01-23 16:30:38 · 177 阅读 · 0 评论 -
arraylist,与linkedlist:vector区别
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private s原创 2019-01-23 16:47:24 · 234 阅读 · 0 评论 -
二维数组的遍历
public class TestArray { private static Point[][] mPoints = new Point[3][4]; public static void main(String[] args) { //第一行 mPoints[0][0] = new Point(0, 0); mPoints[0...原创 2019-02-28 14:51:27 · 2040 阅读 · 0 评论 -
ART & Dalvik 区别
Android面试一天一题(Day 27:ART & Dalvik)Android中的ART和Dalvik对比ART代表Android Runtime,其处理应用程序执行的方式完全不同于Dalvik,Dalvik是依靠一个Just-In-Time (JIT,即时编译)编译器去解释字节码。开发者编译后的应用代码需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同...原创 2019-03-08 13:56:47 · 229 阅读 · 0 评论 -
java内存与GC垃圾回收
参考:JVM的内存区域划分Java GC的原理通过图文给你讲明白java GC的实现原理Java – 深入浅出GC自动回收机制运行时数据区根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、...原创 2019-03-06 10:58:38 · 187 阅读 · 0 评论 -
:: 双冒号运算符Java
import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.function.Consumer;//双冒号运算就是Java中的[方法引用],// [方法引用]的格式是// 类名::方法名//例如//表达式://person -> person.getAge...原创 2019-07-04 18:55:21 · 243 阅读 · 0 评论 -
Java-未完待续
从Java平台的逻辑结构上来看,我们可以从下图来了解JVM:从上图能清晰看到Java平台包含的各个逻辑模块,也能了解到JDK与JRE的区别 对于JVM自身的物理结构,我们可以从下图鸟瞰一下:对于JVM的学习,在我看来这么几个部分最重要: Java代码编译和执行的整个过程 JVM内存管理及垃圾回收机制原创 2017-07-05 10:29:37 · 454 阅读 · 0 评论 -
java-反射知识
package xq.com.cn;/** * Created by lenovo on 2017/7/4. */public class ClassDemos { /** * 构造函数 */ public ClassDemos() { System.out.println("构造方法:classDemo!"); } public原创 2017-07-04 14:53:42 · 863 阅读 · 1 评论 -
java-素数(质数)
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。import java.util.Scanner;/** * Created by Administrator on 2017/6/23. */public class SuShu { public static void main(String[] args) { Scanne原创 2017-06-23 23:38:17 · 2374 阅读 · 0 评论 -
集合的三种遍历方式for循环
数据元素是怎样在内存中存放的?数据元素在内存中,主要有2种存储方式: 1、顺序存储,Random Access(Direct Access): 这种方式,相邻的数据元素存放于相邻的内存地址中,整块内存地址是连续的。可以根据元素的位置直接计算出内存地址,直接进行读取。读取一个特定位置元素的平均时间复杂度为O(1)。正常来说,只有基于数组实现的集合,才有这种特性。Java中以Arra...原创 2016-12-19 12:47:49 · 7705 阅读 · 0 评论 -
常见Java七大排序算法
排序算法原创 2017-01-11 21:57:00 · 7226 阅读 · 1 评论 -
String类下compareTo()与compare()方法 : 与排序
compareTo Comparable原创 2017-01-12 15:48:56 · 2116 阅读 · 2 评论 -
String类常用
String类原创 2017-01-12 16:58:09 · 369 阅读 · 0 评论 -
java-static、final、static final的区别
final可以修饰:属性,方法,类,局部变量(方法中的变量),Java关键字final有“这是无法改变的”或者“终态的”含义。 final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。 final修饰的属性表明是一个常数(创建后不能被修改)。 final修饰的方法表示该方法在子类中不能原创 2017-05-15 09:09:05 · 415 阅读 · 0 评论 -
java-排序
import java.util.Arrays;/** * Created by Administrator on 2017/5/19. */public class sortTesty { public static void main(String[] args) { sortIntArray(); sortStringArray(); }原创 2017-05-19 12:19:07 · 335 阅读 · 1 评论 -
Java - 集合转换(数组、List、Set、Map相互转换)
import java.util.*;/** * Created by Administrator on 2017/5/19. */public class ConvertorTest { /** * @param args */ public static void main(String[] args) { testList2Array();原创 2017-05-19 16:50:09 · 300 阅读 · 0 评论 -
Java-普通代码块,构造代码块,静态代码块
结论:执行顺序(优先级从高到低):静态代码块>main方法>构造代码块>构造方法。其中静态代码块只执行一次。 构造代码块在每次创建对象是都会执行。1 普通代码块普通代码块:在方法或语句中出现的{}就称为普通代码块。 普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定–“先出现先执行”/** * Created by Administrator on 2017/5/19. *///普原创 2017-05-19 22:45:39 · 276 阅读 · 0 评论 -
java-Collections
1.Collections(注意不是Collection,而是Collections,多了一个s) 2.它是一个集合工具类 3.方法分类: 常规操作(查找,最大,最小等)、 排序、 线程安全(同步)操作、 不可变集合import java.util.*;/** * Created by Administrator on 2017/6/15. */public class Colle原创 2017-06-15 22:45:27 · 306 阅读 · 0 评论 -
java-线程的终止和调度
终止线程的三种方法 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。1、使用退出标志终止线程:在Activity开启的子线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭子原创 2017-06-17 09:13:11 · 502 阅读 · 0 评论 -
java堆、栈、堆栈的区别
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令),用new的方式是生成不同的对象。每一次生成一个。只有通过new()方法才能保证每次都创建一个新的对象。 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本原创 2017-06-06 23:40:56 · 2434 阅读 · 0 评论 -
Android-AsyncTask
AsyncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.优点:简单,快捷 AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecu原创 2017-06-17 11:01:42 · 396 阅读 · 0 评论 -
java-反射获得泛型参数
public class Person<T> { } import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** * Created by Administrator on 2017/6/20. */public class Student extends Person<String> {原创 2017-06-20 18:21:23 · 332 阅读 · 0 评论 -
Java-判断回文数
import java.util.Scanner;/** * 回文数:一种数字,如:12321, 这个数字正读是12321,倒读也是12321, * 即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。 * Created by Administrator on 2017/6/23. */public class HuiWenTest { public static...原创 2017-06-23 23:10:15 · 5662 阅读 · 0 评论 -
java-完数
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数” 例如, 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064 import java.util.Scanner;/*原创 2017-06-23 23:25:52 · 772 阅读 · 0 评论 -
判断非空或者清空
判断非空、清空原创 2016-12-19 17:46:52 · 544 阅读 · 0 评论