自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1812)
  • 资源 (15)
  • 收藏
  • 关注

原创 Kotlin协程flow发送时间间隔debounce

debounce蕴含了一定的缓冲思想,即,不立刻触发事件,而是先把要发射的数据进入队列,稍等一定时间(时间)延迟触发,而触发的重要条件取决于前一条数据和后一条数据的时间间隔,注意,前一条和后一条尚未被发射出去,只是待命中。发射完ABC,Kotlin审视待发射的ABCD,按理说ABCD与ABC间隔200,满足发射timeOut值,但是ABCD与ABCDE间隔100,所以跳过ABCD,直接发射ABCDE。四、map,重组改写数据。A和AB都待发射,A和AB间隔100,所以跳过A,直接发射AB。

2023-08-26 23:06:50 984

原创 Kotlin协程flow,firstOrNull只要最先first,lastOrNull只要最后

firstOrNull() //虽然发射很多数据,但只要第1次发射过来的数据。.lastOrNull() //虽然发射很多数据,但只要最后1次发射过来的数据。emit(i)delay(10)kotlin协程flow任务意外结束未emit数据retryWhen onEmpty(5)_zhangphil的博客-CSDN博客一、flow ,emit,onCompletion,collect。

2023-08-25 23:06:42 360

原创 android Bitmap没有recycle()导致native内存暴增

第一部分是Bitmap描述信息,第二部分(最大部分)是Bitmap像素(字节数组)。第一部分存在Java内存,第二部分存在C/C++维持的native内存。如果没有recycle(),GC可能只回收到java部分内存,C/C++的native内存仍被占用。android8.0后,Bitmap从Java层转移到native层,此举虽然缓解了JVM的内存压力,也提升了图形的加载速度,但不恰当的Bitmap分配/释放逻辑,将导致内存问题深藏到native层,更加隐蔽不易排查定位。

2023-08-24 23:03:55 492

原创 Chrome禁止复制粘贴网页文字内容

【代码】Chrome禁止复制粘贴网页文字内容。

2023-08-24 00:22:53 252

原创 kotlin协程flow任务意外结束未emit数据retryWhen onEmpty(5)

一、flow ,emit,onCompletion,collect。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。

2023-08-23 00:09:04 277

原创 kotlin协程线程安全数据结构AtomicInteger原子同步

写一个简单代码:public class Main { private static boolean RUN = true;..._多线程的共享变量必须加volatile。Java多线程同步:为什么要引入volatile?_多线程的共享变量必须加volatile_zhangphil的博客-CSDN博客。kotlin AtomicBoolean compareAndSet_zhangphil的博客-CSDN博客。kotlin协程线程安全数据结构AtomicInteger原子同步。

2023-08-21 23:28:24 272

原创 Delegates.observable追踪观察可变数据更新,Kotlin

**Java观察者模式的场景:一个女孩洗澡,被很多男孩偷看。女孩洞察后,搜索坏男孩,然后继续洗澡。*//*男孩Boy.java*/import java.util.Observable;不定长函参的Java观察者模式更新数据传递import java.util.LinkedList;/** * 抽象被观察者。Java观察者模式 : Observer / Observable_zhangphil的博客-CSDN博客。不定长函参的Java观察者模式更新数据传递_zhangphil的博客-CSDN博客。

2023-08-20 23:03:50 437

原创 git压缩/合并多次commit提交为1次commit提交

git cherry-pick:复制多个提交commit到当前分支git cherry-pick的作用是合并不同分支的若干个commit到当前分支,这些若干个commit代码提交可以是不同分支的commit提交,如图:现在master分支打算把develop分支的C、D、E这三次提交复制到当前mater分支,那么首先需要从develop切换到分支到master:git checko...git当前本地已commit但未push到远程的提交,并选择其中一个commit推送至远程。%H,某次提交的完整哈希值。

2023-08-19 23:09:10 1126

原创 Kotlin协程runBlocking并发launch,Semaphore同步1个launch任务运行

需要注意,由于Kotlin与Java语言特性的细微差异,虽然同为Semaphore,上述代码如果引入的是 java.util.concurrent.Semaphore ,功能也能正常完成,但运行出来的结果会有小差异。新Java线程Semaphore:并行环境下访问竞争资源控制Semaphore是从Java 1.5引入的Java线程新内容。

2023-08-18 23:08:30 890

原创 Android Drawable转BitmapDrawable再提取Bitmap,Kotlin

*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android传递Bitmap的两种简单方式及其缺陷_android上传bitmap_zhangphil的博客-CSDN博客。

2023-08-17 23:03:47 783

原创 git切换分支代码到某一次commit提交

git命令:git reset --hard commit-id可以通过git log输出查找。git reset撤销当前分支所有修改,恢复到最近一次修改前干净的分支情况,首先:git reset --hard接着:git clean -fd。git reset撤销当前分支所有修改,恢复到最近一次修改前干净的分支情况_zhangphil的博客-CSDN博客。git回退代码仓库版本_git回退到之前的版本会影响本地代码嘛_zhangphil的博客-CSDN博客。

2023-08-16 23:05:32 2075

原创 Kotlin Java互调报错:java.lang.NullPointerException: Parameter specified as non-null is null

当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。当a不为null时,执行大括号里的语句(it肯定不为null)如果a == null ,则为 null。= null,则a.b()如果 a 不是 b,则为 null。

2023-08-15 23:12:30 406

原创 ArrayList浅拷贝clone,Kotlin

Java的Vector,Stack,ArrayList,LinkedList异同Collection的实现子类型是什么,它都支持iterator()函数,该函数返回一个迭代器,该迭代器即可遍历访问Collection中每一个元素。/** * * 反转一个List,关键是使用Collections工具类 * * @author Phil * */public class Demo {public static void main(String[] args)

2023-08-14 23:30:49 312

原创 Kotlin runBlocking launch多个协程读写mutableListOf时序

runBlocking 内部启动的3个协程做耗时操作,从输出可以看到3个协程交叉并发执行,runBlocking 会等到3个协程执行结束后才退出,输出结果有明确先后顺序。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。kotlin的runBlocking 当内部相同作用域的所有协程都运行结束后,在 runBlocking 之后的代码才能执行, runBlocking 会阻塞所在线程。

2023-08-13 23:02:12 488

原创 Kotlin flow withTimeout repeat

一、flow ,emit,onCompletion,collect。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。kotlin协程flow retryWhen当功能函数加载失败后重试(3)_zhangphil的博客-CSDN博客。kotlin协程flow retryWhen当功能函数加载失败后重试(3)加载一次失败,重试1次成功。

2023-08-12 23:11:09 228

原创 Kotlin Executors线程池newSingleThreadExecutor单线程

简单的Java线程池可以从Executors.newFixedThreadPool( int n)获得。ScheduledThreadPoolExecutor周期性执行线程任务scheduleAtFixedRate_zhangphil的博客-CSDN博客。Java线程池:ExecutorService,Executors_executorservice线程池_zhangphil的博客-CSDN博客。

2023-08-11 23:16:24 744

原创 Kotlin读写分离CopyOnWriteArrayList

Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。此方法返回一个线程容量为n的线程池。读时候快,写/删/改慢。

2023-08-10 23:44:01 588

原创 Kotlin反射访问androidx.collection.LruCache类私有变量

Java反射改变Android属性在某些情况下,Android体系里面的某些对象没有对外提供针对某个属性或者类,方法公开的get或者set方法,但是项目需要对这些需要修改和调整。androidx.collection.LruCache类中定义了一个名为map的LinkedHashMap,map存储了所有LruCache的数据,有时候需要遍历访问该LinkedHashMap,取出里面的值,但是LruCache代码实现中,map为private私有,且无get方法返回,所以需要通过反射访问。

2023-08-09 23:08:03 692

原创 Android LruCache snapshot resize forEach,Kotlin

* * 基于Java LinkedList,实现Android大数据缓存策略 * 作者:Zhang Phil * 原文出处:http://blog.csdn.net/zhangphil * * 实现原理:原理的模型认为:在LinkedList的头部元素是最旧的缓存数据,在L_android大数据缓存。通常Android缓存分为两级,第一级是内存缓存,第二级是物理缓存也即DiskLruCache。Android二级缓存之物理存储介质上的缓存DiskLruCache_zhangphil的博客-CSDN博客。

2023-08-08 23:25:52 807

原创 Android Glide preload LruCache DefaultLifecycleObserver pause/resumeRequests,Kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-08-07 23:25:45 139

原创 git基于change代码修改与提交

git cherry-pick:复制多个提交commit到当前分支git cherry-pick的作用是合并不同分支的若干个commit到当前分支,这些若干个commit代码提交可以是不同分支的commit提交,如图:现在master分支打算把develop分支的C、D、E这三次提交复制到当前mater分支,那么首先需要从develop切换到分支到master:git checko...git cherry-pick解冲突push到远程代码仓库。某种意义上讲,change相当于git的分支。

2023-08-06 23:39:56 394

原创 Android Glide MemorySizeCalculator计算值,Kotlin

在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。Android Glide数据更新及内存缓存、硬盘缓存清理事项Android的Glide在加载图片时候内部默认使用了缓存机制,Glide的缓存机制分为两级,第一级是内存缓存,然后第二级是硬盘缓存。

2023-08-05 23:06:33 859

原创 ReentrantLock锁并发环境线程安全读写ArrayList,Kotlin

Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。_reentrantlock解决死锁问题的代码。ReentrantLock替换synchronized解决多线程并发死锁,Java_reentrantlock解决死锁问题的代码_zhangphil的博客-CSDN博客。

2023-08-04 23:23:10 281

原创 Android LinearLayout dynamic add child ImageView,Glide load,kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-08-03 23:09:23 686

原创 kotlin when interface‘s field set/get

kotlin类成员变量字段field的get/set_zhangphil的博客-CSDN博客。kotlin类成员变量字段field的get/set。

2023-08-02 23:02:48 515

原创 git stash clear清空本地暂存代码

git diff比较不同commit版本的代码文件异同 如图,假设像知道app目录下的build.gradle文件在两次commit(fee9f9cf4b和cdd577e352)之间的异同和变化,可是使用命令git diff:git diff fee9f9cf4b cdd577e352 app/build.gradle输出如图: 如果git diff后面只有两个co..._git比较两个commit差异。git查看当前分支所属的远程仓库地址_git 查看分支地址_zhangphil的博客-CSDN博客。

2023-07-31 23:04:41 516

原创 给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin

总长度:22 随机生成每段长度:4 算出段数:6。

2023-07-30 23:11:28 700

原创 Android Glide预处理preload原始图片到成品resource & 预加载RecyclerViewPreloader,Kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-07-29 23:18:51 876

原创 android Glide加载gif动图和本地视频,Java

droid Glide加载gif动图和本地视频,Java。

2023-07-28 23:35:15 1194

原创 Android Studio import的代码报红提示找不到,但正常编译运行

当android studio新建一个项目时候,默认的.gradle路径均认为是在c盘的用户目录下,时间久了,c盘容量紧张。后续新建android studio项目的gradle加载文件会自动放在D:/program/android.gradle下。Android Studio移动.gradle文件夹重新设置新路径_android studio设置gradle路径_zhangphil的博客-CSDN博客。android studio配置默认.gradle路径_zhangphil的博客-CSDN博客。

2023-07-27 23:03:42 616

原创 Java反射类private私有变量Map并赋值

Java反射改变Android属性在某些情况下,Android体系里面的某些对象没有对外提供针对某个属性或者类,方法公开的get或者set方法,但是项目需要对这些需要修改和调整。就需要使用Java的反射机制修改Android的属性。Java反射类Class,反射方法Method以及反射变量Fieldimport com.orhanobut.logger.Logger;Java反射类Class,反射方法Method以及反射变量Field_zhangphil的博客-CSDN博客。

2023-07-26 23:11:43 608

原创 Android GlideApp FixedPreloadSizeProvider RecyclerViewPreloader,mix Java&Kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-07-25 23:08:58 183

原创 android Splash Screen & Stretch OverScroll Effect,kotlin

《Android View滚动、拉伸到顶/底部弹性回弹复位》我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(《Android ListView拉到顶/底部,像橡皮筋一样弹性回弹复位》,文章链接地址:http://blog.csdn.net/zhangphil/article/details/47311155 )。Android View滚动、拉伸到顶/底部弹性回弹复位_android 页面伸缩弹性_zhangphil的博客-CSDN博客。

2023-07-24 23:35:22 747

原创 Android GlideApp FixedPreloadSizeProvider RecyclerViewPreloader preload scroll smooth,Java

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-07-23 23:09:38 129

原创 kotlin异常处理try-catch-finally

b-catch: java.lang.RuntimeException: b发生异常。kotlin异常处理try-catch-finally。

2023-07-22 23:02:27 537

原创 android adb命令获取处于当前屏幕的Activity

Android adb shell dump当前手机设备的所有activity_zhangphil的博客-CSDN博客。adb命令:adb shell dumpsys activity activites。android adb命令获取处于当前屏幕的Activity。从顶至底,#0 0号即为当前屏幕显示的界面数据。

2023-07-21 23:13:31 2516

原创 Android dp to pix resources.getDimension(R.dimen.xxx) ,kotlin

Android官方的dip to pix,dip2pix,dp2px实现网上流传的一个常用的把dip值转换为pix像素值的方法通常是这样的: public static int dip2px(Context context, float dpValue) { float scale = context.getResources().getDisplayMetrics().de..._dip2px。Android pix转换为sp_pix转sp_zhangphil的博客-CSDN博客。

2023-07-20 23:15:54 375

原创 Android GlideApp GlideRequest FixedPreloadSizeProvider RecyclerViewPreloader,kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-07-19 23:11:48 189

原创 android studio/idea返回/前进上一次位置和一些高效快捷键

当android studio新建一个项目时候,默认的.gradle路径均认为是在c盘的用户目录下,时间久了,c盘容量紧张。后续新建android studio项目的gradle加载文件会自动放在D:/program/android.gradle下。最新版的android studio自带有手机投屏功能,设置后直接在android studio里面就可以“实时”投屏并操控手机。android studio自带手机投屏功能_android studio 投屏_zhangphil的博客-CSDN博客。

2023-07-18 23:06:24 1291

原创 Android Glide onlyRetrieveFromCache downloadOnly submit ,kotlin

【代码】Android Paging 3,kotlin(1)在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬而未决:比如用户的头像,往往用户的头像是从服务器端读出的一个普通矩形图片,但是现在的设计一般要求在APP端的用户头像显示成圆形头像,那么此时虽然Glide可以加载,但加载出来的是一个矩形,如果要Glide_android 毛玻璃圆角。《Android图片加载与缓存开源框架:Android Glide》Android Glide是一个开源的图片加载和缓存处理的第三方框架。

2023-07-17 23:02:42 426

vcruntime140_1.dll

vcruntime140_1.dll

2022-01-10

2019年民航机场吞吐量排名.xls

2019年民航机场生产统计公报。数据来源,民用航空局。该excel表格中,罗列了中国各大城市在2019年的机场客流量数据和排名。

2020-12-10

链家2020年9月二手房数据

全国的房产价格地址经纬度等信息,2020年9月份链家的二手房数据包。下载后是一个excel表,将这个excel表另存为csv数据文件,可以用pandas读取。

2020-12-10

strava_com_sample_utf8.xls

一个excel表格数据,数据是一个公开的Python数据集,包含路径经纬度散点。提取里面的路径经纬度散点,可以构绘出地图线路。

2020-12-10

jxta2.7.zip

JXTA 2.7,P2P分布式计算框架JXTA。version 2.7。shell 2.5.

2019-08-21

AXMLPrinter2的jar文件及源代码文件

Android逆向工程之AXMLPrinter2的jar文件及源代码文件。

2018-11-08

digital-7字体(LED数字样式字体)

digital-7字体(LED数字样式字体)。该字体主要用于显示LED数字灯样式的字体。直接导入到Android assets文件下,作为font 字体使用。

2017-09-05

Android-PullLayout:仿UC天气下拉和微信下拉眼睛头部弹入淡出

Android-PullLayout:仿UC天气下拉和微信下拉眼睛头部弹入淡出

2015-11-29

QQ侧滑边栏源代码

移动版QQ侧滑边栏源代码(Android)。UI交互设计样式和QQ高度相似。

2015-10-29

DrawerLayoutDemo

Android DrawerLayout Demo

2015-09-24

MaterialDesignLibrary_Code and Lib合集

MaterialDesignLibrary_Code and Lib 内含:NineOldAndroidsLibrary包和一个测试项目:MaterialDesignActivity

2015-09-21

Android Volley

Android网络开发框架Volley需要的jar包:volley.jar。该包直接导入到自己的项目即可使用。

2015-08-27

sqlitemanager.jar

sqlitemanager.jar。用于查看SQLite数据库的第三方插件。

2015-07-16

SearchDemo

Android搜索建议演示代码,完整的项目代码文件。

2015-04-17

Android底部弹出iOS7风格对话框_库文件资源

Android底部弹出iOS7风格对话框。库文件,直接作为库添加到自己的项目加以引用即可。

2015-04-08

空空如也

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

TA关注的人

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