自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呓曲流觞的博客

笔墨纸砚

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

原创 三次握手四次挥手

A 在发送了最后的报文以后,自身就进入了TIME-WAIT(时间等待)状态,此时的 TCP 连接还没有释放掉,必须经过时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 以后 A 才会进入到 CLOSED 状态。A 在发送了最后的报文以后,自身就进入了TIME-WAIT(时间等待)状态,此时的 TCP 连接还没有释放掉,必须经过时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 以后 A 才会进入到 CLOSED 状态。

2023-12-04 15:00:45 495

原创 进程间通信

优点:擅长数据资源访问,支持一对多并发数据共享,可通过Call方法扩展其他操作。场景:低并发的一对多即时通信,无RPC需求,或者无须要返回结果的RPC需求。缺点:不适合高并发场景,并且无法做到进程间的即时通信。场景:无并发访问情形,交换简单的数据实时性不高的场景。优点:通过网络传输字节流,支持一对多并发实时通信。缺点:不能很好处理高并发情形,不支持RPC,优点:支持一对多并发通信,支持实时通信。优点:支持一对多串行通信,支持实时通信。缺点:实现细节烦琐,不支持直接的RPC。场景:一对多的进程间的数据共享。

2023-11-14 17:52:45 47

原创 Android 内存泄漏

导致程序不允许你在Handler中操作Activity中的对象了,所以你需要在Handler中增加一个对Activity的弱引用(WeakReference);对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,在Java中,非静态的内部类和匿名内部类都会隐式持有其外部类的引用,静态内部类不会持有外部类的引用。单例的生命周期和应用的生命周期一样,也就是单例持有必须是和应用生命周期一样的对象,

2023-11-14 16:29:22 160

原创 binder

2,构建内部类继承binder,继承于ImusicService.Stub。实现aidl中的接口、方法,并通过onBind返回binder对象给客户端。将IBinder类型的对象转换成我们的ImusicService类型,不能强转需要用ImusicService.Stub.asInterface。1,创建服务,定义接口,对应的aidl文件,服务类AIDLService。2,创建activity,注册接口ImusicService。5,调用接口的ImusicService的方法,实现交互。

2023-11-02 16:35:36 59

原创 Activity启动流程

/*Activity -> startActivity -> startActivityForResult*/public void startActivityForResult(@RequiresPermission Intent intent, int requestCode, @Nullable Bundle options) { if (mParent == null) { ... Instrumentation.ActivityResult

2023-10-30 17:24:55 50

原创 flutter 搜索框

import 'package:flutter/material.dart';class SearchBarWidget extends StatefulWidget { final ValueChanged<String> onchangeValue; final VoidCallback onEditingComplete; const SearchBarWidget({this.onchangeValue, this.onEditingComplete, Key key}

2021-05-20 15:48:35 235

原创 flutter 常用

print("3秒后执行");//延时500毫秒执行Future.delayed(const Duration(milliseconds: 500), () { //延时执行的代码 setState(() { //延时更新状态 });});Timer(Duration(seconds: 3), () { print("3秒后执行");});

2021-05-19 17:42:16 154

原创 flutter

cmd 输入flutter崩溃问题解决办法:1、检查一下Powershell在不在环境变量的路径中;2、找到 Powershell的执行文件:(以下是我的路径)C:\Windows\System32\WindowsPowerShell\v1.0\3、配置到环境变量中,看环境变量中有没有path,若存在则用“;”隔开变量名:path,变量值: C:\Windows\System32\WindowsPowerShell\v1.0\4、重启电脑,就不会再报这个错误;原文链接:https://bl

2021-04-29 16:25:16 55

原创 lc

class Solution { public int numDecodings(String s) { int n = s.length(); s = " " + s; char[] cs = s.toCharArray(); int[] f = new int[n + 1]; f[0] = 1; for (int i = 1; i <= n; i++) { // a :

2021-04-21 22:17:19 53

原创 lc strStr

/*实现 strStr() 函数。[.link](https://leetcode-cn.com/problems/implement-strstr/)给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C.

2021-04-20 21:08:31 74

原创 Parcelable

序列化将数据结构或对象转换成二进制串的过程。反序列化将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程频繁的IO操作,所以消耗比较大,但是实现方式简单serialVersionUID是一个 private static final long 型 ID,通常是 对象的哈希码你可以使用 serialver 这个 JDK 工具来查看序列化对象的 serialVersionUID。SerialVerionUID 用于对象的版本控制。也可以在类文件中指定 serialVersionUID

2021-04-19 21:46:35 72

原创 事件分发机制

/*主流程Activity dispatchTouchEventPhoneWindow superDispatchTouchEventDecorView superDispatchTouchEventviewgroup dispatchTouchEventview dispatchTouchEvent -> onTouchEvent继承view,只能处理事件dispatchTouchEvent -> onTouchEvent继承viewgroup,才可分发事件先分发流程

2021-04-17 18:42:05 68

原创 recyclerview

recyclerview 吸顶效果,复用,自定义layoutManager自定义NestedScrollView,监听setOnScrollChangeListener,判断scrollY值,当其达到第一个child的高度时,调用recyclerview fling方法onNestedPreScroll方法判断dy大于0,ScrollY小于topView高度时,调用scrollBy进行滚动fragment原理,懒加载...

2021-04-17 18:13:06 115

原创 Activity、View、Window

Activity源码中可以看到,在attach方法中创建了Window的实现类PhoneWindow。PhoneWindow.javaPhoneWindow的构造方法中获取DecorViewActivity持有Window对象(实现类是PhoneWindow).PhoneWindow构造方法中获取DecorView.关系 Activity中包含Window,Window中包含View....

2021-04-16 13:44:06 59

原创 View绘制

/*View的绘制流程是从ViewRoot的performTraversals开始的,它经过measure,layout,draw三个过 程终将View绘制出来。performTraversals会依次调用performMeasure,performLayout, performDraw三个方法,他们会依次调用measure,layout,draw方法,然后又调用了onMeasure, onLayout,dispatchDraw。measure :对于自定义的单一view的测量,只需要根据父 view

2021-04-12 17:22:08 100

原创 Miss Binder

/*用户空间,内核空间用户空间是应用程序的运行空间,内核空间是 Linux 内核的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。用户空间不能直接调用系统资源,必须通过系统接口,才能向内核发出指令,而内核空间可以执行任意命令,调用系统的一切资源。*/...

2021-04-12 16:32:48 54

原创 双亲委派机制

DVM也是实现了JVM规范的一个虚拟器,默认使用CMS垃圾回收器但是与JVM运行 Class 字节码不同,DVM 执行 Dex(Dalvik Executable Format)专为 Dalvik 设计的一种压缩格式。Dex 文件是很多 .class 文件处理压缩后的产物,最终可以在 Android 运行时环境执行。ART是在 Android 4.4 中引入的一个开发者选项,也是 Android 5.0 及更高版本的默认 Android 运行时。ART 和 Dalvik 都是运行 Dex 字节码的

2021-04-10 10:00:14 138

原创 屏幕适配方法

/*主要是由于在界面在渲染绘制时,android会将dp转为px,在转换过程中是需要dpi的(上篇文章中有提到),而dpi是根据屏幕真实的分辨率和尺寸来计算的,每个设备都可能不一样的,从而导致显示问题。*/...

2021-04-08 09:02:19 80

原创 anr 原因

Miss

2021-04-01 17:14:58 75

原创 Miss 内存优化

1.修改lib配置在gradle使用minifyEnabled进行Proguard混淆的配置,可大大减小APP大小:so文件的优化:通常我们在使用NDK开发的时候,我们经常会有如下这么一段代码:abiFilters “armeabi-v7a”看上面图分析,armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备基本不在我公司的适配范围(市场占比太少)。而许多基于 x86 的设备也可运行 armeabi-v7a 和 armeabi NDK

2021-03-31 19:04:01 118

原创 handler

Looper.prepareMainLooper();public static void prepareMainLooper() { //不能退出消息队列,传递false prepare(false); synchronized (Looper.class) { if (sMainLooper != null) { throw new IllegalStateException("The main Looper has already been

2021-03-27 18:01:18 117

原创 okhttp

OkHttpClient client = new OkHttpClient(); //请求器Request request = new Request.Buidler().url(url).build(); //请求Call call = client.newCall(request);Response response = call.execute();ResponseBody body = response.body();

2021-03-08 10:45:02 315

原创 Android性能优化系列之apk瘦身

参考参考2

2021-03-08 10:24:18 66

原创 Android 启动模式

启动模式

2021-03-08 09:20:04 116 2

原创 2021-02-03

2021-02-03 18:53:58 106

原创 哈希笔记

哈希数组下标,取值范围

2021-01-30 12:49:33 56

原创 Android 文章

RecyclerView动画原理 .link

2021-01-20 14:10:02 144 2

原创 设计模式

访问者模式 .link双重分派机制通过同一个函数,对不同的类型,进行相应对处理,使结构更加清晰、灵活性更高优点:增加访问者非常容易各角色职责分离,符合单一职责原则具有优秀的扩展性使得数据结构和作用于结构上的操作解耦,使得操作集合可以独立变化灵活性缺点:具体元素对访问者公布细节,违反了迪米特原则具体元素变更时导致修改成本大违反了依赖倒置原则,为了达到“区别对待”而依赖了具体类,没有依赖抽象...

2021-01-18 20:45:36 39

原创 Android 常用

String[] s1 = new String[]{"qqqq","qqqqaa","ddddd"};Log.e(TAG, "doUpdate: " + new Gson().toJson(s1)); ["qqqq","qqqqaa","ddddd"]

2020-12-25 17:21:12 157

原创 RecyclerView回收复用以及LayoutManager

1.滑动2.onlayout布局1.mInChangeScrap-mAttachedScrap 用来缓存还在屏幕之内的ViewHolder2.mCachedView 用来缓存移除屏幕之外的ViewHolder3.mViewCacheExtension 开发给用户的自定义扩展缓存,需要用户自己管理View的创建和缓存4.RecyclerViewPool ViewHolder缓存池onTouchEvent-scrollByInternal-scrollStep-mLayout.scrollVerti

2020-12-12 19:01:13 212

空空如也

空空如也

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

TA关注的人

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