
Java
羚羊独角
这个作者很懒,什么都没留下…
展开
-
线程池
Executors类提供了4种不同的线程池:newCachedThreadPool, newFixedThreadPool, newScheduledThreadPool, newSingleThreadExecutor1、newCachedThreadPool:用来创建一个可以无限扩大的线程池,适用于负载较轻的场景,执行短期异步任务。(可以使得任务快速得到执行,因为任务时间执行短,可以很快结束...原创 2020-03-30 16:36:04 · 196 阅读 · 0 评论 -
jvm垃圾回收机制
怎么判断一个变量可以回收通过计数器算法和GCRoot可达性算法GCRoot参考:1.虚拟机栈中引用的对象2.方法区中静态属性引用的对象3.方法区中常量引用的对象4.本地方法栈中引用的对象(Native对象)GC 清理垃圾的算法标记清理(容易产生内存间隔)复制算法:资源利用率低,只能利用一半的内存综合俩个方法,把对象按照生命周期放在不同的地方,新生代,老生代,永久代1.所有新生...原创 2020-03-27 10:19:35 · 132 阅读 · 0 评论 -
Buffer基本原理
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffe...原创 2020-01-13 14:26:03 · 5392 阅读 · 0 评论 -
String 和 new String()的区别
String str1 = “ABC”String str2 = new String(“ABC”);String str1 = “ABC”; 可能创建一个对象或者不创建对象。如果"ABC" 这个字符串z在java String池中不存在,会在java String池中创建一个String str1= "ABC"的对象。然后把str1指向这个内存地址。之后用这种方式创建多少个值为"ABC"的...原创 2020-01-09 16:33:22 · 130 阅读 · 0 评论 -
CoordinatorLayout和Behavior
Android5.0提供了一个CoordinatorLayout布局,他能通过Behavior协调子布局之间的交互原创 2019-10-10 14:11:57 · 172 阅读 · 0 评论 -
Java线程间通信
@Android线程间通信正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。如何让两个线程...原创 2019-04-25 13:55:42 · 323 阅读 · 0 评论 -
CAS
@CASCompare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含...原创 2019-04-03 14:51:11 · 185 阅读 · 0 评论 -
ConcurrentHashMap
@ ConcurrentHashMapConcurrentHashMapHashMap在put的时候,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。HashTable,它是线程安全的,它在所有涉及到多线程操作的都加上了synchronized关键字来锁住整...原创 2019-04-03 14:47:06 · 86 阅读 · 0 评论 -
Retrofit解析
@Retrofit 解析解析的原因我想给Service的每个body加上基本参数,如platform,version等解析的收获我发现所有的service经过一个动态代理代理了所有方法,然后解析service方法的参数和返回值(获取参数的方式是通过反射方法的注解得到)。然后把参数作为okhttp的参数执行请求,请求回调中将结果解析成service方法的返回值,再通过rxjava的Obser...原创 2019-04-08 17:24:04 · 164 阅读 · 0 评论 -
Java 动态代理
Java静态代理public interface BaseAction {void doSomething();void doSomething2(); }public class PrintAction implements BaseAction {@Overridepublic void doSomething() { System.out.println("打印");...原创 2019-04-02 17:47:53 · 111 阅读 · 0 评论 -
Java type
Type 类型泛型的引入使得一部分错误可以提前到编译时期发现,极大地增强了代码的健壮性。但是我们知道 java 泛型在运行的时候是会进行泛型擦除的,那我们要怎样得到在编译时期泛型的信息呢?java 为我们提供了 Type 接口,如图 Java中的type主要有四种类型ParameterizedType, TypeVariable, GenericArrayType, WildcardType...原创 2019-04-02 17:41:27 · 447 阅读 · 0 评论 -
java反射
@ java反射理解反射(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法Java反射机制主要提供了以下功能:在运行时构造任意一个类的对象在运行时获取任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法(属性)生成动态代理Class 是一个类; 一个描述类的类.最常...原创 2019-04-02 17:21:41 · 99 阅读 · 0 评论 -
thread方法
@ 线程的物种状态原创 2019-04-04 15:36:20 · 173 阅读 · 0 评论 -
List遍历方式
@ List遍历方式,哪种方式最快//方法1 集合类的通用遍历方式, 从很早的版本就有, 用迭代器迭代 Iterator it1 = list.iterator(); while(it1.hasNext()){ System.out.println(it1.next()); } //方法2 集合类的通用遍历方式, 从很早的版本就有, 用迭代器迭...原创 2019-03-22 14:16:49 · 162 阅读 · 0 评论 -
http的连接和断开
@ http的理解客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、请求数据三个部分组成,请求行包括:请求格式,请求url,请求协议等请求头包括:Accept :请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。例如Accept:text/plain 说明客户端接收文本Accept-...原创 2019-03-21 14:04:04 · 1373 阅读 · 0 评论 -
synchronized和lock的区别
@ synchronized和lock的区别synchronized是jvm层面的,我们无法灵活控制,lock是jdk正面的,我们可以在代码中灵活控制。public void addCount() { synchronized (this) { for (int i = 0; i < 100; i++) { count++; ...原创 2019-03-20 12:50:27 · 484 阅读 · 0 评论 -
Java 线程切换
@ 线程暂停唤醒和切换public class ThreadSleepAndWait {class Run1 implements Runnable { @Override public void run() { synchronized (ThreadSleepAndWait.class) { System.out.println("...原创 2019-03-15 10:21:03 · 704 阅读 · 0 评论 -
Java 线程
@ 等待结果返回的线程不需要返回结果的线程public Runnable getThread(int i) { return () -> { try { Thread.sleep(1 * 10); } catch (InterruptedException e) { e.printStackTrace...原创 2019-03-15 10:15:25 · 100 阅读 · 0 评论 -
Java synchronized
@ synchronizedsynchronized同步锁四种方式1 类锁创建类时候互斥,主要用在单例 private static volatile MyManager instance; public static MyManager getInstance() { if (instance == null) { synchronized (MyMana...原创 2019-03-19 15:14:42 · 115 阅读 · 0 评论