自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

珍心

心若在,梦就在

  • 博客(124)
  • 收藏
  • 关注

原创 程序员知识总结,持续更新中

AndroidAndroid-TextView-文本可选择复制+定制ActionModeJAVAJava-线程池原理

2021-08-22 12:43:39 155

原创 Android启动模式碰上startActivityForResult

Android启动模式碰上startActivityForResult

2021-08-12 09:30:36 164

原创 Git操作别名

学而不思则罔,思而不学则殆【Git】Git操作别名配置别名,提高效率//查看config详情git config --global --listgit config --global alias.last 'log -l HEAD'git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global al

2021-06-14 16:16:10 183

原创 Android Native和跨平台交互总结

学而不思则罔,思而不学则殆【Android】Native和JS交互总结Native与JS交互Native与Flutter交互Native与RN交互Native与JS交互飞书总结文档Native与Flutter交互待更新Native与RN交互待更新

2021-06-05 22:57:21 154 1

原创 【Android】一张图让你理解scaleType属性

学而不思则罔,思而不学则殆【Android】一张图让你理解scaleType属性测试context先看原图(实际大小展示)和ImageView的对比测试结果展示总结测试context属性情况机型Pixel C API 30屏幕密度Pixel C API 30时间2021-02-24ImageView长宽50dp*50dp先看原图(实际大小展示)和ImageView的对比这张图展示了ImageView和原图的原始大小对比测试结果展示总结

2021-03-21 22:19:34 273

原创 【Android】Android源码下载

学而不思则罔,思而不学则殆【Android】Android源码下载准备虚拟机Ubuntu系统下载Ubuntu下载repo下载修改源代码镜像地址初始化仓库指定版本同步源码树Windows下载准备虚拟机Ubuntu系统下载Ubuntu下载repo下载# repo## 在home下创建bin文件夹mkdir ~/bin ## 把bin文件夹加入环境变量的(临时的)PATH=~/bin:$PATH ## 下载repo脚本curl https://mirrors.tuna.tsi

2021-01-17 15:58:27 1475 6

原创 【Android】Android源码版本

学而不思则罔,思而不学则殆【Android】Android源码版本1.下载manifest.git2.checkout到不同的分支3.下载地址列表4.Android源码存在的分支1.下载manifest.gitgit clone https://android.googlesource.com/platform/manifest.git (需要翻墙)git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git (清华源)

2021-01-15 08:30:49 2860 1

原创 【C++】C++编译流程总结

学而不思则罔,思而不学则殆【C++】C++编译流程总结引言编译总结编译过程测试第一步,预处理第二步,汇编第三步,汇编第四步,预处理第五步,执行总结引言cpp文件是怎么编程exe的可执行文件的呢?一般我们可能没有关心,编译器直接帮我们解决了,但是我觉得作为一名从业者,想要了解更多,还是需要了解更多的。编译总结整个C++(C)的编译过程如图:源代码会经过预处理,编译,汇编和链接四步.每一步的命令如下。以main.cpp为例# 编译流程## 1 生成预处理文件g++ -o main.ii

2021-01-06 08:17:53 234

原创 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler

学而不思则罔,思而不学则殆【Android】为啥子线程抛出异常主线程会崩溃?引言测试Java测试Android测试源码分析+找源码引言测试Java测试Android测试源码分析+找源码

2020-12-21 08:34:47 3150 3

原创 【算法】两个大数(数组)求和

学而不思则罔,思而不学则殆@TOC题目输入:A = “999999” 和 B = “1”返回:result = “1000000”思路主要是解决整型溢出的大数运算,主要思路:从最低位开始求和,本位等于求和的余数,进位提供给下一位求和使用。【默认进位为0】Demo static char[] sum(char[] A, char[] B) { int flag = 0; //1.计算数组的长度为最大的值 int max = Math

2020-12-18 08:33:56 980

原创 【Android】为啥事件传递这么频繁却不会造成内存抖动

学而不思则罔,思而不学则殆【Android】为啥事件传递这么频繁却不会造成ANR引言测试测试代码测试一 两次手指按下起来测试二 - 不同的页面测试测试三 同一个应用杀进程测试测试四 不同进程测试结果+总结源码分析引言一般在Android开发中我们被要求说在onDraw方法不要新建对象,那为什么整体事件传递的时候,MotionEvent对象一直被回调,却没有造成内存波动,是为什么呢?测试针对这个问题,我专门做了测试,在dispatchTouchEvent方法中打印MotionEvent 对象的ha

2020-12-17 08:52:23 127

原创 【C++】C++指针

学而不思则罔,思而不学则殆【C++】C++指针什么是指针指针的声明NULL指针指针的算术运算指针递增指针递减指针的比较指向指针的指针(多级间接寻址)传递指针给函数传递数组给函数从函数返回指针什么是指针指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。比如://指针学习void func006() { int var1 = 1; int var2 = 1; cout <<"var1 变量的地址: "<< &var1 &lt

2020-12-12 21:56:15 106

原创 【C++】C++基本数据类型

学而不思则罔,思而不学则殆【C++】C++基本数据类型一.C++数据类型二.C++数据类型修饰符三.基本数据类型+修饰符3.1 总结3.2 测试3.2.1 bool3.2.2 char3.2.3 int3.2.4 short int3.2.5 long int3.2.6 float3.2.7 double四.typedef 声明五.枚举类型写在在前,为啥做为一个Android开发要学习C++?本人在大学学了一学期C++过后,后来就再也没有接触过C++,工作四年多也一直使用的是Java.C++知识早就

2020-12-12 16:16:08 189

原创 【JetPack】Lifecycle - 生命周期观察者的简单使用和原理分析

学而不思则罔,思而不学则殆【JetPack】Lifecycle - 生命周期观察者的简单使用和原理分析一.引言二.JetPack使用范例Activity生命收起观察Service生命周期观察Application生命周期观察三.JetPack原理分析Activity级别Service级别Application级别四.总结一.引言二.JetPack使用范例Activity生命收起观察Service生命周期观察Application生命周期观察三.JetPack原理分析Activity级别S

2020-12-02 23:25:22 385 1

原创 LRU缓存底层原理大揭秘 - LinkedHashMap

学而不思则罔,思而不学则殆LRU缓存底层原理大揭秘 - LinkedHashMap引言使用范例GlideOkHttpLRU实现原理分析一LRU实现原理分析二LinkedHashMap原理分析测试初始花测试代码测试访问 Test(9)总结引言LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。在项目实际开发中很多都有这个缓存算法的身影。使用范例Glidepackage com.bumptech.glide.util;

2020-11-29 17:15:13 277

原创 Android 你还在为图片放哪儿纠结吗?图片资源文件夹加载规律

学而不思则罔,思而不学则殆Android 你还在为图片放哪儿纠结吗?图片资源文件夹加载规律引言资源怎么放置图片展示大小内存情况统计结论引言市面上Android机型五花八门,因此开发的时候的UI设计稿理论上需要提供所有的屏幕密度对应的素材。如下是像素密度和对应的资源文件夹。TypefiledpiPictureldpidrawable-ldpi0.7575px*75pxmdpidrawable-mdpi1100px*100pxhdpidrawable

2020-11-27 08:47:20 1131

原创 【Retrofit】Retrofit原理解析之设计模式总结篇

学而不思则罔,思而不学则殆【Retrofit】Retrofit原理解析之设计模式总结篇

2020-11-22 22:12:32 302

原创 【Retrofit】Retrofit原理解析之注解详解篇

学而不思则罔,思而不学则殆【Retrofit】Retrofit原理解析之注解详解篇

2020-11-22 20:55:15 750

原创 【Retrofit】Retrofit原理解析之原理篇

学而不思则罔,思而不学则殆【Retrofit】Retrofit原理解析之原理篇引言整体流程系列文章【Retrofit】Retrofit原理解析之使用篇【Retrofit】Retrofit原理解析之原理篇引言在上一篇文章中,分享讲了Retrofit框架的常见使用范例,本篇分享来说一下Retrofit的的原理整体流程整体流程新建Retrofit实例,通过构建者模式设置一些参数工厂(用来数据封装+数据解析)调用Retrofit.create(),方法拿到自定义服务的实例调用服务的具体

2020-11-22 17:42:12 497 1

原创 【Retrofit】Retrofit原理解析之使用篇

学而不思则罔,思而不学则殆【Retrofit】Retrofit原理解析之使用篇引言使用GET请求优缺点对比参考引言Retrofit本质是根据OkHttp进行二次封装的网络请求框架。接下来我们就来讲一下Retrofit具体使用源码下载小技巧,由于国内网络原因,直接从Github上下载源码可能很慢,当让很多网络很要的读者就不用考虑了,可以考虑在Github中的源码copy一份到gitee,在从Gitee上clone到本地就会非常快。//Githubhttps://github.com/squa

2020-11-18 08:39:55 339

原创 【Java】Java注解简单熟悉和了解

学而不思则罔,思而不学则殆【Java】Java注解简单熟悉和了解引言注解定义注解分类元注解TargetRetention普通注解Method之获取注解Method返回类型Method的注解Method的参数Method参数的注解引言最近在学习Retrofit网络请求框架,发现该框架中主要使用注解来封装内部逻辑,使开发的时候调用简洁。因此写一篇文章记录一下注解的相关知识注解定义Java 注解是在 JDK5 时引入的新特性,注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可

2020-11-17 22:43:13 131 2

原创 【RxJava】RxJava入门和原理分析

学而不思则罔,思而不学则殆【RxJava】RxJava入门和原理分析引言数据源+数据处理引言个人理解:RxJava 是 一种链式调用链,原理是双向链表调用链+代理模式首先什么是链式调用,常见的是就Builder(构建者模式)的用法,比如OkHttp中的Client构造: OkHttpClient client = new OkHttpClient().newBuilder() .connectTimeout(10, TimeUnit.SECONDS)

2020-11-12 08:20:30 341 1

原创 【每日算法】最长递增子序列

学而不思则罔,思而不学则殆【每日算法】最长递增子序列题目解法1 排序+最长公共子序列法LCS解法2 动态规划法(时间复杂度O(N^2))参考题目题目:一个数组的最长递增子序列的个数比如:数组[4, 9, 9, 19, 17, 12, 19, 5, 3, 5]最长递增子序列是[4,9,12,19],长度为4解法1 排序+最长公共子序列法LCS其中排序最快的时间复杂度为O(logn)O(logn)O(logn)LCS的时间复杂度为O(n2)O(n^2)O(n2)所以整体时间负责度为O(n

2020-11-11 08:25:19 329 1

原创 【每日算法】最长公共子序列LCS

学而不思则罔,思而不学则殆【每日算法】最长公共子序列题目基本概念算法思路图解计算LCS初始化题目两个数组的,两个数组中都包含的最长序列最长公共子序列,全称Longest Common Subsequence,简称LCS基本概念这里需要了解一下子序列和字=子串的概念。类别相同点不同点子序列元素保持跟父序列一致元素可以不连续子串元素保持跟父序列一致元素必须连续可以说子串一定是子序列,但是子序列不一定是子串。如图,更加形象一点:算法思路该问题我

2020-11-10 08:49:43 182

原创 【Kotlin】有趣的运算符重载

学而不思则罔,思而不学则殆【Kotlin】有趣的运算符重载加法运算符传统加法运算符重载运算符语法运算符与实际调用函数对比语法糖测试minustimesdivrem运算符重载是Kotlin提供的一个比较有趣的语法糖。我们知道。Java中 有许多语言内置的运算符关键字,如= - * / % ++ --.而Kotlin中可以将所有的运算符甚至其他的关键字进行重载,扩展这些运算符和关键字的用法每个人从小就学了四则运算,在编程语言中,两个数字相加表示求和,两个字符串相加,表示对这两个字符进行拼接。但是在Kot

2020-11-04 08:50:07 158

原创 【Android】BroadcastReceiver广播机制简单了解

学而不思则罔,思而不学则殆【Android】BroadcastReceiver广播机制简单了解广播分类标准广播图示有序广播图示注册广播新建一个广播接收器动态注册静态注册广播分类广播类型说明标准广播(normal broadcasts)是一条完全异步执行的广播,广播发出后所有的接受者几乎是在同一时刻受到广播,他们中间没有先后顺序,不能被截断有序广播 (ordered broadcasts)一种同步执行的广播,广播发出后,同一时间只能有一个接受者受到广播,高优先级的接受者可

2020-11-03 08:48:51 205 1

原创 【数据结构】二叉树构造《LintCode072和LintCode073》

学而不思则罔,思而不学则殆【数据结构】二叉树构造《LintCode072和LintCode073》整理思路LitCode073算法结果算法实现LintCode072算法结果算法实现整理思路通过前序或者后序便找到根节点,找到根节点后在中序遍历数组中根据根节点把数组划分为两个数组,分别是左子树的中序遍历结果,另一个是右子树的中序遍历结果。依次类推,可以构造一颗二叉树。LitCode073https://www.lintcode.com/problem/construct-binary-tree-fr

2020-11-01 11:06:23 941 2

原创 【数据结构】二叉树遍历(递归遍历和非递归遍历)

学而不思则罔,思而不学则殆【数据结构】二叉树遍历二叉树递归遍历递归前序遍历递归中序遍历递归后序遍历二叉树相关学习的网站二叉树定义:每个节点最多有两个子树的数成为二叉树递归遍历public class TreeNode { TreeNode left; TreeNode right; char values; public TreeNode(char values) { this.values = values; }}递归前序遍历

2020-10-30 22:03:54 1674

原创 【设计模式】代理模式(Proxy Pattern)

学而不思则罔,思而不学则殆【设计模式】代理模式(Proxy Pattern)代理模式常见代理模式静态代理静态代理类图Demo动态代理动态代理Demo代理模式应用网络代理Android的ContextContext类图Java中的ReentrantLockRxJava中的Observer(订阅者)接口InnerObserver 类图我发现一个很常见的现象,很多文章都在讲设计模式,代理模式,但是呢没有举出一些项目或者实际工作用到的例子,我感觉这样不能加深我们的理解,感觉只是一个知识点,而没有实际的运用点,

2020-10-29 22:46:00 129

原创 【RxJava】RxJava系列文章之just+fromArray操作符

学而不思则罔,思而不学则殆【RxJava】RxJava系列文章之just+fromArray操作符简单介绍简单使用Demo1Demo2Demo3原理分析ObservableEmptyObservableEmpty 源码分析ObservableEmpty 官方的图ObservableEmpty 时序图ObservableJustObservableJust 源码解析ObservableJust 官方用图ObservableJust 时序图ObservableFromArrayObservableFromAr

2020-10-28 22:58:59 280

原创 【Java】CountDownLatch简单使用

学而不思则罔,思而不学则殆【Java】CountDownLatch简单使用CountDownLatch简单介绍CountDownLatch不足使用场景简单测试测试countDown测试多线程下载demoawait 超时逻辑CountDownLatch简单介绍用来等待某些任务完成后继续后续的工作。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时

2020-10-28 21:24:12 195

原创 【Android】Fragment简单初识

学而不思则罔,思而不学则殆【Android】Fragment简单初识前言Demo用法生命周期Activity和Fragment通信总结前言Fragment是一种可以嵌套在Activity当中的UI片段。Demo用法生命周期Activity和Fragment通信总结...

2020-10-28 07:48:47 134

原创 【Java】TimeUnit简单了解

学而不思则罔,思而不学则殆【Java】TimeUnit简单了解时间单位说明DAYSTime unit representing twenty four hours表示24小时的时间单文,天HOURSTime unit representing sixty minutes表示六十分钟的时间单位,小时MINUTESTime unit representing sixty seconds表示60秒的时间单位,分钟SECONDSTime unit repr

2020-10-26 07:55:15 714

原创 【Java】深入理解ReentrantLock可重入锁之简单使用

学而不思则罔,思而不学则殆【Java】深入理解ReentrantLock可重入锁简介使用+原理分析简介使用+原理分析

2020-10-22 07:58:55 234 2

原创 【Java】深入理解AtomicInteger

学而不思则罔,思而不学则殆【Java】深入理解AtomicInteger简介方法测试lazySetgetAndIncrement --> i++incrementAndGet --> ++igetAndDecrement --> i--decrementAndGet --> --igetAndAddgetAndSetcompareAndSetweakCompareAndSetgetAndUpdateupdateAndGetgetAndAccumulateaccumulateAndG

2020-10-18 16:03:49 296 3

原创 【每日算法】栈获取最小元素

学而不思则罔,思而不学则殆【每日算法】栈获取最小元素题目思路代码测试测试测试二题目设计一个栈,使它可以在O(1)的时间复杂度实现push,pop和min操作。所谓min操作就是获取栈内最小元素思路使用双栈,一个主栈,保存主元素;一个最小元素栈,保存当前栈内的最小元素入栈的时候,如果新加入的元素比最小元素栈内的栈顶元素小就两个栈都加入,否则就加入主元素栈出栈的时候,如果当前元素等于最小元素栈栈顶的元素,那么最小元素栈也出栈代码class MinStack { Stack

2020-10-16 08:15:09 304

原创 【设计模式】单例模式

学而不思则罔,思而不学则殆【设计模式】单例模式简介注意的细节实现方式懒汉式饿汉式双重检查静态内部类项目中的应用简介单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意的细节实现方式懒汉式饿汉式双重检查静态内部类项目中的应用..

2020-10-15 08:14:28 97 2

原创 【Java】Java集合之ArrayDeque了解和原理分析

学而不思则罔,思而不学则殆【Java】Java集合之ArrayDeque了解和原理分析方法总结对比测试ArrayDeque辅助方法1.测试空集合2.测试入队和出队3.扩容逻辑测试扩容扩容情况一扩容情况二扩容逻辑原理分析扩容一分析扩容二分析先看一下ArrayDeque的结构。方法总结对比方法方法实现是否抛出异常addaddLastNullPointerExceptionaddLast实现代码NullPointerException测试ArrayDeque

2020-10-14 07:48:35 253 3

原创 【Android】canScrollVertically和canScrollHorizontally

学而不思则罔,思而不学则殆【Android】canScrollVertically和canScrollHorizontally简介总结测试测试canScrollVertically测试canScrollHorizontally简介canScrollVertically和canScrollHorizontally是原生View中的方法提供,用来判断View能否在某个方向上滑动。总结测试返回值ture返回值falsecanScrollVertically(1)能够向上滑动不

2020-10-11 23:02:07 5527 2

原创 【Android】OkHttp测试网络连接

学而不思则罔,思而不学则殆【Android】OkHttp测试网络连接引言发送网络请求测试http1. 建立socket连接2. 发送请求3. 接受数据测试post数据测试http://www.baidu.com测试https引言知道OkHttp底层是通过Socket连接,发送网络请求,本篇文章就是模拟这种方式来发送网路请求发送网络请求测试http1. 建立socket连接 public static void main(String[] args) { try {

2020-10-10 08:18:38 9230 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除