- 博客(34)
- 资源 (6)
- 收藏
- 关注
原创 Google Play Console -- Api配置
1. 关联现有的Google Cloud 项目,不建议使用,因为会搜索不到,2. 创建完成后,点击Google Cloud Platform。10.点击复制按钮,获取serverID。4.创建凭据->OAuth 客户端ID。8. 回到创建凭证,选择Web应用。5.未创建同意屏幕需配置同意屏幕。3.进入API和服务->凭证。7.填写勾选项,点击保存即可。9. 填写名称,点击创建。
2022-10-10 20:06:41
1259
3
原创 红米8A/redmi8A刷入Magisk
红米8A时32位的处理器,所以需要修改一下Magisk的源码才可以正常刷入如何修改Magisk 源码呢?boot_patch.sh脚本 if [ "$ARCH" = "arm" ]; then ui_print "- Patch arm32 kernel" . ./patch_kernel.sh [ "$?" -eq 0 ] && ui_print "- Patch arm32 kernel success" || ui_print "- Patch a
2021-01-14 18:55:31
2779
原创 一次网络请求的完整过程
一次网络请求的完整过程域名解析TCP三次握手三次握手四次挥手建立TCP连接后发起HTTP请求HTTP请求格式服务器响应HTTP请求浏览器解析html代码,并请求html代码中的资源域名解析浏览器会先从本地缓存中查找域名的IP,如果查找到并且没有过期,则解析成功;如果未找到或过期则进入步骤2浏览器搜索操作系统自身的DNS缓存,如果找到且没有过期,则解析成功;如果未找到或过期则进入步骤3尝试...
2020-05-08 14:14:38
558
原创 数据结构
数据结构类图ListSetMapQueuePriorityQueueBlockQueueStack类图从上面的结构可以分一下几类:ListSetMapQueueStackListSetMapQueuePriorityQueue无界优先级队列, 内部通过数组实现; 支持插入,和获取队首元素的操作,内部实现了自动排优先级的操作,优先级高的会放置在队首。BlockQ...
2020-05-07 09:52:14
167
原创 java 位运算符
java 运算符基本数据类型有符号型无符号型正负数位运算符基本数据类型有符号型类型位数boolean1byte8short16int32long64float32double64无符号型类型位数char161:占位少的有符号转占位多的,则前面部分正数全补0,负数全补12:占位多的转占位...
2020-05-06 17:07:26
93
原创 ThreadPoolExecutor
ThreadPoolExecutor生命周期执行流程线程池创建线程的提交核心方法addWorkerThreadPoolExecutor.WorkerrunWorkergetTask参考于ThreadPoolExecutor生命周期状态介绍RUNNING允许接收新任务,处理队列中的任务SHUTDOWN不接收新的任务,处理完队列中的任务STOP不接收新的任务...
2020-04-14 20:42:49
162
原创 retry语法
public void test(int i) { retry: for (;;) { System.out.println("1"); for (;;) { System.out.println("2"); if (i == 1) { ...
2020-04-14 18:51:30
3103
原创 BlockingQueue
BlockingQueueBlockingQueue类图结构源码阻塞队列的成员BlockingQueue在Queue的基础上,它还支持在检索元素时等待队列变为非空的操作,以及在存储元素时等待队列中的空间变为可用的操作类图结构源码public interface BlockingQueue<E> extends Queue<E> { //将给定元素设置...
2020-04-10 21:04:23
86
原创 PriorityBlockingQueue
PriorityBlockingQueue介绍使用源码解析介绍一个支持线程优先级排序的无界队列,默认自然序进行排序,也可以自定义实现compareTo()方法来指定元素排序规则,不能保证同优先级元素的顺序。使用使用较简单就不介绍了。源码解析ReentrantLock+Condition原理一个ReentrantLock一个Condition private final...
2020-04-10 17:30:17
111
原创 LinkedBlockingQueue
LinkedBlockingQueue介绍使用源码解析介绍可选有界阻塞队列基于链表,该队列遵循FIFO。存入队尾,取出队首。使用使用较简单就不介绍了。源码解析ReentrantLock+Condition原理两个ReentrantLock两个Condition //取锁,控制取数据 private final ReentrantLock takeLock = new...
2020-04-10 17:13:52
192
1
原创 ArrayBlockingQueue
ArrayBlockingQueue介绍使用源码解析介绍有界阻塞队列,该队列遵循FIFO。存入队尾,取出队首。使用使用较简单就不介绍了。源码解析offer(E e) (add(E e)和offer一样)如果容量已满,则返回false,添加失败 public boolean offer(E e) { checkNotNull(e); final...
2020-04-09 19:34:56
96
原创 DelayQueue
DelayQueue介绍使用源码解析介绍无界延迟队列,存元素的过程没有限制个数,会唤醒等待;取元素得时候,如果队列没有数据,则等待,如果队列中有数据,且队首需要等待,则进行超时等待。使用import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.concurrent....
2020-04-09 19:01:04
105
原创 线程锁
线程锁分类悲观锁和乐观锁阻塞锁和自旋锁无锁、偏向锁、轻量锁、重量锁可重入锁和不可重入锁公平锁和非公平锁互斥锁和共享锁实现synchronizedLockSemaphoreCyclicBarrierLockSupportatomicCAS?什么情况下锁失败?线程竞争激烈如何评定?分类悲观锁和乐观锁一种广义的概念,线程同步的不同的角度含义实现使用场景悲观锁...
2020-04-07 15:27:03
87
原创 AQS(AbstractQueuedSynchronizer)源码解析
AQS(AbstractQueuedSynchronizer)源码解析理解源码解析AbstractOwnableSynchronizerAQS(AbstractQueuedSynchronizer)NodeConditionObject核心方法属性独占锁方法共享锁方法理解字面意思,抽象的同步器队列。源码解析AbstractOwnableSynchronizer一个同步器可能只属于一个线...
2020-04-07 15:06:46
159
原创 LockSupport工具类
LockSupport工具类介绍源码原理介绍用于创建锁和其他同步类的基本线程阻塞(不释放锁)原语。源码public class LockSupport { private LockSupport() {} // 不能实例化 private static void setBlocker(Thread t, Object arg) { UNSAFE.putOb...
2020-04-05 10:11:58
112
原创 线程之join
线程之join使用源码解析使用public static void main(String[] args) throws Exception { System.out.println("start"); Thread t = new Thread() { @Override public void run() {...
2020-04-03 22:19:29
270
原创 线程之wait
线程之wait使用方法wait疑问解答《JVM源码分析之Object.wait/notify实现》使用public class TestWait { private static Object waitObject = new Object(); public static void main(String[] args) throws Exception { ...
2020-04-03 17:03:57
152
原创 Java线程
Java线程初识线程类结构Runnable接口Future接口RunnableFuture接口FutureTask初识线程待补充类结构Runnable接口任务Future接口表示异步的结果计算。检查计算是否为完成,等待其完成并检索出结果。取消,一旦计算已完成,无法取消计算。RunnableFuture接口成功执行 run()方法会导致完成并允许访问其结果Fut...
2020-04-02 19:38:06
84
原创 Runnable和Callable的区别
Runnable和Callable的区别了解一下Callable的使用FutureTask状态方法了解一下在java中线程类是java.lang.Thread,看源码可知线程类是实现了java.lang.Runnable接口的。我们如果想运行一个线程,可以新建一个java.lang.Thread并重写run()方法去执行自己的任务,当然也可以向java.lang.Thread对象中填入一个实现...
2020-04-02 16:07:46
166
原创 Java线程源码分析
Java线程源码分析java.lang.Thread主要的成员变量如下:private char name[];//线程名称private int priority;//优先级private volatile int threadStatus = 0;//线程状态private boolean daemon = false;//是否后台线程private Runnable targ...
2020-04-01 15:58:42
131
原创 线程与进程
线程与进程比方:电脑比喻计算机印刷厂CPU(承担了所有的计算任务)印刷机进程车间线程车间工人假定印刷机只有一台,一次只能供给一个车间使用,一个车间可以有多名工人。也就相当于,任一时刻,单个CPU一次只能运行一个进程。车间内有很多房间,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一...
2020-04-01 14:36:35
95
原创 Java线程组
Java线程组介绍构造源码解析介绍线程组代表一组线程。另外,线程组还可以包括其他线程组。线程组形成一棵树,其中除初始线程组外的每个线程组都有一个父级。一个线程被允许访问有关其自己线程的信息组,但不能访问有关其线程组的父线程组或任何其他线程组的信息。统一管理线程system组main线程组系统线程main线程其他线程组线程组树的结构:JVM创建的system线程组是用来处理JVM的...
2020-04-01 11:55:46
115
原创 注解处理器
package com.hui.aptlib;import com.google.auto.service.AutoService;import com.hui.anotation.Task;import com.hui.anotation.TaskFactory;import java.io.PrintWriter;import java.io.Writer;import java.lang.annotation.Annotation;import java.util.HashMap;
2020-03-31 13:28:25
126
原创 Java注解
注解处理器注解作用注解与配置文件的区别合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入注解Java注解又称标注,从1.5开始支...
2020-03-31 12:18:38
97
原创 Android中自定义权限permission
Android中权限是什么概念呢?首先一点,权限是针对于Android组件来说的,同时权限在不同应用间才起作用。Android权限就相当于一把锁,将Android组件锁上,只有应用内的组件以及有权限的不同应用可以访问。
2015-06-08 14:05:42
1410
原创 smack中ProviderManager的学习
首先要了解smack中两个客户端是如何交流的,它们通过连接服务器,通过服务器来进行交流。而客户端和服务器交流时,会打开一个流,通过在中加入一些包的xml信息进行交流,当断开后会用结束。简单写一下:...而smack和openfire开源服务器都是用java实现的,java是面向对象的语言,如何将xml中的信息包,提取成对象呢,于是smack提供了Procider
2015-04-24 22:07:04
2115
原创 samck中ProviderManager的学习
首先要了解smack中两个客户端是如何交流的,它们通过连接服务器,通过服务器来进行交流。而客户端和服务器交流时,会打开一个流,通过在中加入一些包的xml信息进行交流,当断开后会用结束。简单写一下:...而smack和openfire开源服务器都是用java实现的,java是面向对象的语言,如何将xml中的信息包,提取成对象呢,于是smack提供了Procider
2015-04-24 22:05:39
996
原创 ContentProvider 中getType()方法的认识
我们都知道ContentProvider类是将数据库暴露出来,方便不同进程间数据库的访问。但是对于getType方法,我们却很少知道它的作用,其实该方法在数据库的操作中起到的作用并不是多大,只有在activity中的隐式跳转中倒是起到了作用。 什么叫activity的隐式跳转呢? 打个比方,当我们在一群人中找出一个人来(这群人的名字都是唯一的),我们找他的方式有
2015-01-09 15:01:17
975
原创 Android数据库基础学习
Android中数据库的学习中,我目前学了两种方式1. 用基础类SQLiteOpenHelper操作数据库,其增删改查,则通过sql语句2. 用ContentProvider 和ContentResovler进行数据库的操作 ContentProvider其实是把SQLiteOpenHelper中操作数据库的方式进行封装。 Con
2015-01-09 10:53:48
404
原创 java数据结构
java数据结构计算机存储数据,组织数据的方式。java数据结构的分类:1.数组最基础的数据结构,也是刚接触java时学的,编码形式:类型 [] 变量名 = new 类型[个数];优点:随机读取方便,快捷;缺点:插入,删除较复杂。2.List《列表》 实现类:ArrayList,LinkedList。 ArrayList 优点 :随机
2014-12-24 18:21:04
579
原创 android布局的基础学习
Android布局的类别汇总:布局类之间的关系图: LinearLayout(线性布局);RelativeLayout(相对布局);AbsoluteLayout(绝对布局);FrameLayout(帧布局)(层布局);TableLayout(表格布局)。 关于Android布局的使用,大致分为两种方式。One,直接在xml中定义好布局和一些组件,然后再a
2014-12-23 14:47:51
394
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人