Noobzhang

  • 首页

  • 标签

  • 分类

  • 归档

Java_并发

发表于 2019-07-31 | 分类于 Java

Java 并发

http://ifeve.com/concurrenthashmap/

二级标题

三级标题

四级标题

五级标题
六级标题
阅读全文 »

Synchronized方法锁、对象锁、类锁区别

发表于 2019-07-18 | 分类于 Java

Java synchronized 用法

对于同步方法,锁是当前实例对象。
对于静态同步方法,锁是当前对象的Class对象。
对于同步方法块,锁是Synchonized括号里配置的对象。

https://www.cnblogs.com/shoshana-kong/p/10551952.html

二级标题

三级标题

四级标题

五级标题
六级标题
阅读全文 »

Java_Annotation

发表于 2019-03-20 | 更新于 2019-07-18 | 分类于 Java

Java Annotation认知(包括框架图、详细介绍、示例说明)

https://www.cnblogs.com/shoshana-kong/p/10551952.html

二级标题

三级标题

四级标题

五级标题
六级标题
阅读全文 »

Others_UML

发表于 2019-03-20 | 分类于 Android/C/Java/Linux/Network/RK/sqlite/Others

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题
阅读全文 »

Java_Annotation

发表于 2019-03-20 | 更新于 2019-06-03 | 分类于 Java

Java Annotation认知(包括框架图、详细介绍、示例说明)

https://www.cnblogs.com/skywang12345/p/3344137.html

二级标题

三级标题

四级标题

五级标题
六级标题
阅读全文 »

Java String.format

发表于 2019-03-20

String.format

使用示例

format(String format, Object... args);

format参数

转换符 说明 示例

%s 字符串类型 “mingrisoft”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 99
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.99
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的)
%h 散列码
%% 百分比类型 %
%n 换行符
%tx 日期与时间类型(x代表不同的日期与时间转换符

整形包括: int,long

输出特殊处理

https://www.cnblogs.com/Dhouse/p/7776780.html

Java Timer

发表于 2019-03-14 | 分类于 Java

Timer的几点使用笔记

//定义TimerTask;
private class StateTimerTask extends TimerTask {
    @Override
    public void run() {
        //do something
    }
}

//定义Timer
mTimer = new Timer();

//入队列
mTimer.schedule(task = new StateTimerTask(), delay);

//task.cancle(); //取消队列, 后面不能再重复添加task这个来schedule,要重新new TimerTask才行

//mTimer.cancle(); //取消定时器 , 后面不能再使用这个定时器进行schedule了

Android中Vector、ArrayList、LinkedList和HashMap/ArrayMap/SparseArray簇

发表于 2019-03-14 | 分类于 Android

先说:Iterator、Iterable、Collection 接口

public interface Iterator接口: 包含hasNext next remove三个方法
public interface Iterable 迭代接口: 包含一个iterator() 方法
public interface Collection extends Iterable:继承Iterable接口(Iterable是接口,使用的关键字是extends,因为Collection也是接口),并包含add remove clear等操作方法;contains equals isEmpty 等检测方法;size iterator toArray工具方法。

AbstractCollection 集合的类化,抽象类: 有添加删除特性的抽象类
public abstract class AbstractCollection implements Collection {}
需要实现:
public boolean add(E object) {throw}
迭代接口iterator(); (实例化一个实现接口Iterator的类,并作为返回值即可)
public abstract int size();

再来看接口 List 和 ListIterator

public interface List extends Collection {} List在Collection的基础上添加了index的特性。
接口重写:add、clear
public void add(int location, E object);
public E get(int location);
public int indexOf(Object object);
public int lastIndexOf(Object object); //最后一次出现的index
public ListIterator listIterator(); //见ListIterator
public ListIterator listIterator(int location); //从指定位置开始迭代
public E set(int location, E object);
public List subList(int start, int end);

public interface ListIterator extends Iterator {} 在Iterator基础上添加了连贯性的特点
除了add hasNext remove 添加了hasPrevious nextIndex(); previous previousIndex(); set(E object); 等操作

看看List的类化——AbstractList

public abstract class AbstractList extends AbstractCollection implements List {}
集Collection和List于一身的抽象List类

ArrayList类

public class ArrayList extends AbstractList implements Cloneable, Serializable, RandomAccess {}
Object[] array; 数组进行存储元素

Vector类 (带同步功能的List)

public class Vector extends AbstractList implements List,
RandomAccess, Cloneable, Serializable {

………………………………..

LinkedList类 (双链表,队列特性)

public class LinkedList extends AbstractSequentialList implements
List, Deque, Queue, Cloneable, Serializable {

…………………………………

HashMap类

Map接口 public interface Map<K,V> 包含k-v 对的集合

ArrayMap类

SparseMap簇类

特点, 以及在什么场景使用?

Key为int型的Map时使用.
android希望我们用SparseArray在一些情况下代替HashMap来使用,因为它有更好的性能

基本操作

put(int key, E value);
get(int key); //E value
get(int key, E valueIfKeyNotFound)
delete(int key)
removeAt(int index)
keyAt(int index) //int key; 通过index得到该index位置的key
valueAt(int index)

遍历

//按照添加顺序, 遍历key,然后再得到value
SparseArray<E> sparseArray = new SparseArray<>();

for(int i = 0; i < sparseArray.size(); i++) {
    int key = sparseArray.keyAt(i);
    E value = sparseArray.get(key);
}
//按照添加顺序, 直接遍历value;
SparseArray<E> sparseArray = new SparseArray<>();

for(int i = 0; i < sparseArray.size(); i++) {
    E value = sparseArray.valueAt(i);
}

其他

据key-value中的value类型不同,android又给封装了SparseIntArray, SparseBooleanArray, SparseLongArray等等,
使用方法和SparseArray都大同小异,只要你会使用Map,那么你就会使用SparseArray。

TO DO

https://www.cnblogs.com/LipeiNet/p/5888513.html

Android Context详解

发表于 2017-10-12 | 更新于 2019-03-08 | 分类于 Android

Context详解: https://blog.csdn.net/guolin_blog/article/details/47028975

Context继承图.png

Android Binder

发表于 2017-04-27 | 更新于 2019-03-08 | 分类于 Android

Binder 通信机制概述

Binder通信是一种类似于IPC 的机制,基于C/S通信结构,它是给servicemanager-server、server-client之间通信的工具,下面简单介绍具体实现原理:

  1. 从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用;
    实际上,代理接口中定义的方法与server中定义的方法是一一对应的。
  2. client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Parcel对象;
    代理接口将该Parcel发送给内核中的binder driver。
    server会读取binder driver中的请求数据,如果是发送给自己的,解包Parcel对象,处理并将结果返回;
  3. 整个的调用过程是一个同步过程,在server处理的时候,client会block住。

Binder_ProcessCall.png

阅读全文 »
12…8

Jin

77 日志
9 分类
113 标签
© 2019 Jin
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Mist v7.0.0