- 博客(281)
- 资源 (9)
- 收藏
- 关注
原创 (两百九十二) Android DNS缓存学习
java层每个缓存的有效时长就是2s(失败的结果也是)DNS缓存的最大个数为16个c层每个缓存的有效时长就是ttl,也就是DNS服务器返回的一个属性值,如果有多个,取最小值DNS缓存的最大个数为#define CONFIG_MAX_ENTRIES 64 * 2 * 5 640个DNS缓存的管理办法是,个数达到最大值,则一次性清除所有过期的缓存,如果没有过期缓存则删除最久的一个
2022-05-26 20:24:26
2887
原创 (两百九十一) WiFi连接过程中DNS Server设置的流程梳理
参考(八十七) WiFi & DHCP1.DhcpClient获取到ip地址后进度到ConfiguringInterfaceState 状态 class ConfiguringInterfaceState extends LoggingState { @Override public void enter() { super.enter(); // We must call notify.
2021-07-25 23:27:25
2194
3
原创 (两百九十)Kotlin学习
前言:最近看别人写的Android应用代码,都是用的kotlin了,不大看得懂;这项技术出来感觉好几年了,得补一下学习:https://kotlinlang.org/https://kotlinlang.org/docs/android-overview.htmlhttps://kotlinlang.org/docs/basic-syntax.html1. kotlin优势更少的代码,更高的可读性:不用写分号 成熟的语言和环境:集成到Android studio中 支..
2021-03-21 23:07:11
698
原创 (两百八十九)Android R supplicant的恢复机制
1.简介我无聊试了下用命令把supplicant杀了,但是supplicant后来又自己启动起来了,看下流程2.流程梳理WifiNative /** Helper method invoked to start supplicant if there were no STA ifaces */ private boolean startSupplicant() { synchronized (mLock) { if (!mIfac.
2021-01-01 16:38:42
1301
原创 (两百八十八)Android R data stall检测机制学习
1.简介data stall检测机制就我现在的理解看来是Android 在网络校验成功后,对网络的一种持续监控措施,一旦发现当前网络断网,则通知ConnectivityService,进行相应的处理措施。2.流程分析2.1 tcp health 获取NetworkMonitor.java private class ValidatedState extends State { @Override public void enter() { .
2021-01-01 16:13:37
3735
原创 (两百八十七)Android 更新R aosp源码
参考(一百八十六)Android Q源码下载主要还是根据https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/1.下载命令repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r25repo sync
2020-12-31 23:59:42
1898
4
原创 (两百八十六)解决Ubuntu解决/boot 空间不足问题(二)
续:(三十) Ubuntu解决/boot 空间不足问题1.问题之前安装电脑的时候boot设置的有点小jiatai@jiatai:/boot$ df -h文件系统 容量 已用 可用 已用% 挂载点udev 12G 0 12G 0% /devtmpfs 2.4G 9.4M 2.4G 1% /run/dev/sda8 14G 8.8G 4.2G 68% /tmpfs .
2020-12-31 23:50:44
462
原创 (两百八十五) SparseArray学习
code:http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/util/SparseArray.java参考:https://www.cnblogs.com/zly1022/p/7743466.htmhttps://blog.youkuaiyun.com/xiaxl/article/details/77267201SparseArray应用场景:虽说SparseArray性能比较好,但是由于其添加、查找、删除
2020-12-29 22:02:08
242
原创 (两百八十四)leetcode-排序-上升下降字符串
题目给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。 重复步骤 2 ,直到你没法从 s 中选择字符。 从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。 重复步骤 5 ,直到你没法...
2020-12-27 23:31:43
336
原创 (两百八十二) 学习Simpleperf
官方文档https://developer.android.google.cn/ndk/guides/simpleperf简要说明Simpleperf 是一个通用的命令行 CPU 性能剖析工具,包含在面向 Mac、Linux 和 Windows 的 NDK 中。使用说明raphael:/ # simpleperf ...
2020-11-22 11:07:52
2666
原创 (两百八十)《TCP/IP详解》读书笔记(二)
TCP头部有个RST位字段,一个将该位置位的报文段被称作“重置报文段”或者是重置会在如下情况下发送重置报文段1.针对不存在端口的连接请求2.终止一条连接通过RST终止连接会抛弃排队的数据造成丢失看网上还有情况是一端设置了超时ack时间,超时了会主动发送ack另外最近遇到一个问题是认证网络第一次发包服务器会回,后续不同端口再发就直接回RST了,可能是服务器为了降低认证强度做的限制3.半开连接比如服务端重启,之前客户端与服务端的连接类似僵尸连接,客户端发来的包会被回复一个R.
2020-10-31 23:57:30
265
原创 (两百七十九) TCP抓包实践
1.抓包过滤自己抓了个访问斗鱼的包首先是dns,可以使用ctrl+f 选择字符串快速搜索douyu发现解析了很多ip出来,也不知道是哪个。。。这边是https的,所以过滤了ssl的包,然后看时间点附件的,因为这个时间点我主动发起的访问就一个斗鱼看后续的网络访问都是基于Internet Protocol Version 4, Src: 192.168.0.145 (192.168.0.145), Dst: www.douyu.com.w.kunluncan.com (223.111.123
2020-10-31 23:09:19
1234
原创 (两百七十八)《TCP/IP详解》读书笔记(一)
第12章 TCP:传输控制协议(初步)ARQ和重传问题:1)发送方对一个ACK需要等待多久?TODO2)如果ACK丢失了怎么办?重传另外涉及一个序列号的设计,这里重传分两种情况,一种是超时重传,一种是丢失重传,接收方可能能解收到两个包,序列号可以用来标记判断是否是重复包。3)如果分组被接收到了,但是里面有错怎么办?编码可检查差错,但简单的不能纠正差错,TCP使用了校验和来检查差错,如果错了就不回ack了丢弃该包,发送方会重传。分组窗口和滑动窗口窗口的含义:如.
2020-10-31 13:44:34
310
原创 (两百七十七)《Operating Systems: Three Easy Pieces》读书笔记 (五)
第21章 超越物理内存:机制交换空间(swap)-> 拓展内存所能存储的页数存在位->页错误:页被交换到swap space导致找不到了地址空间->TLB->物理地址 ->页表 ->磁盘第22章 超越物理内存:策略策略目的是提高命中(这边有个思想,是如果提出的策略越接近于理想中的最优策略,则该策略越好~)最优替换策略:提出最远的将来会访问的页FIFO随机基于空间...
2020-10-08 21:33:06
365
原创 (两百七十六)《Operating Systems: Three Easy Pieces》读书笔记 (四)
第16章 分段之前的基址寄存器+界限寄存器会达到内部碎片和外部碎片的问题,内部碎片是由于堆栈可能内存空间使用不充分,中间有空闲内存,但仍分配了对应的物理内存。外部碎片指分配完程序所需的内存空间后,整块内存中间有大大小小的碎片,即为外部碎片。分段解决了内部碎片问题,为代码、堆和栈分别设置了基址寄存器+界限寄存器。即泛化的基址/界限那带来了问题,如何确定代码堆栈和寄存器的对应关系呢?显示(将虚拟地址分为分割成段标识+偏移,段标识意指00 01 10 11) 隐式(地址由程序计数器产生,..
2020-09-13 20:46:05
331
原创 (两百七十六)《Operating Systems: Three Easy Pieces》读书笔记 (三)
第11章 关于CPU虚拟化的总结对话上下文切换 时钟中断 进程调度(时分复用) 内核态和用户态第12章 关于内存虚拟化的对话虚拟化内存的技术TLB(快速地址转换,基于硬件缓存的一种快速地址映射) 多级页表 全功能的现象虚拟管理系统应用程序--->虚拟地址--->真实地址虚拟地址有如下优势隔离 保护 便于编程使用第13章 抽象:地址空间时分复用不满足于内存信息保存在磁盘上,在进行切换的时候仍保存在内存上,但带来了保护和互补修改的需求,由此引入..
2020-09-13 15:48:06
347
原创 (两百七十五)《Operating Systems: Three Easy Pieces》读书笔记 (二)
第六章开篇引入问题:如何高效并可控的虚拟化CPU
2020-08-23 23:36:59
383
原创 (两百七十四)《Operating Systems: Three Easy Pieces》读书笔记
前言:操作系统的知识比较欠缺,买了本《操作系统导论》补充下知识,作者为雷姆兹和安德莉亚。官网(可以免费查阅英文版pdf):http://pages.cs.wisc.edu/~remzi/OSTEP/
2020-08-09 16:30:00
730
原创 (两百七十三) Visual Studio & Visual Studio Code C环境配置参考
下Visual Studio软件下错成Visual Studio Code了记录下环境配置下载页https://visualstudio.microsoft.com/zh-hans/downloads/?utm_medium=microsoft&utm_source=docs.microsoft.com&utm_campaign=button+cta&utm_content=download+vs2019+rcVisual Studio Codeh..
2020-08-09 15:04:54
311
原创 (两百七十二)学习用户态和内核态
学习https://zhuanlan.zhihu.com/p/69554144用户态:应用程序运行的空间内核态:内核运行的空间,管理控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。用户态和内核态体系架构上以系统调用为分界线进行区分,另外该体系也划分出了优先级,用户态的优先级相比内核态低,以此来对资源进行有效利用。从用户态到内核态切换可以通过三种方式:系统调用,这个上面已经讲解过了,在我公众号之前的文章也有讲解过。其实系统调用本身就.
2020-08-02 20:17:55
271
原创 (两百七十一)学习DLNA
参考https://spirespark.com/dlna/guidelines/1.DLNADLNA(DIGITAL LIVING NETWORK ALLIANCE,数字生活网络联盟) 其前身是DHWG (Digital Home Working Group,数字家庭工作组),成立于2003年6月24 日, 是由索尼、英特尔、微软等发起成立的一个非营利性的、合作性质的商业组织。DLNA旨在解决个人PC ,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无.
2020-08-02 16:29:36
710
原创 (两百七十)学习 针对低电耗模式和应用待机模式进行优化
https://developer.android.google.cn/training/monitoring-device-state/doze-standby针对低电耗模式和应用待机模式进行优化从 Android 6.0(API 级别 23)开始,Android 引入了两项省电功能,通过管理应用在设备未连接至电源时的行为方式,帮助用户延长电池寿命。当用户长时间未使用设备时,低电耗模式会延迟应用的后台 CPU 和网络活动,从而降低耗电量。应用待机模式会延迟用户近期未与之交互的应用的后台网络活动。
2020-06-21 23:20:52
1302
原创 (两百六十七) Flutter - 学习从一个页面回传数据
学习https://flutter.cn/docs/development/ui/navigationhttps://flutter.cn/docs/cookbook/navigation/returning-data从一个页面回传数据在某些场景下,我们需要在回退到上一屏时同时返回一些数据。比如,我们跳转到新的一屏,有两个选项让用户选择,当用户点击某个选项后会返回到第一屏,同时在第一屏可以知道用户选择的信息。你可以使用 Navigator.pop() 来进行以下步骤:感觉类.
2020-06-07 23:22:22
401
原创 (两百六十五)学习使用 WorkManager 调度任务
学习https://developer.android.google.cn/topic/libraries/architecture/workmanager/basics使用 WorkManager 调度任务使用 WorkManager API 可以轻松地调度即使在应用退出或设备重启时仍应运行的可延迟异步任务。主要功能:最高向后兼容到 API 14 在运行 API 23 及以上级别的设备上使用 JobScheduler 在运行 API 14-22 的设备上结合使用 Broadc.
2020-06-06 16:44:23
1317
原创 (两百六十四)学习优化电池续航时间
https://developer.android.google.cn/topic/performance/powerhttps://developer.android.google.cn/guide/background优化电池续航时间电池续航时间是移动用户体验中最重要的一个方面。没电的设备完全无法使用。因此,对于应用来说,尽可能地考虑电池续航时间是至关重要的。为使应用保持节能,有三点需要注意:让应用变得“偷懒至上”。 充分利用可帮助您管理应用耗电量的平台功能。 使用可帮助您.
2020-06-06 16:03:45
554
原创 (两百六十三)Flutter - 学习处理边界约束 (Box constraints) 的问题
https://flutter.cn/docs/development/ui/layout/box-constraints处理边界约束 (Box constraints) 的问题Flutter 中的 widget 由在其底层的 RenderBox 对象渲染而成。渲染框由其父级 widget 给出约束,并根据这些约束调整自身尺寸大小。约束是由最小宽度、最大宽度、最小高度、最大高度四个方面构成;尺寸大小则由特定的宽度和高度两个方面构成。一般来说,从如何处理约束的角度来看,有以下三种类型的渲染框:
2020-05-31 22:00:07
2664
原创 (两百六十二)结合perfetto观察flutter 和 Android 的加载过程
1.两个demo最简单最初始的demo肯定是hello world的flutterimport 'package:flutter/material.dart';void main() { runApp( Center( child: Text( 'Hello, world!', textDirection: TextDirection.ltr, ), ), );}android<?xml ve
2020-05-31 21:33:57
737
原创 (两百六十一)学习通过线程提升性能
https://developer.android.google.cn/topic/performance/threads通过线程提升性能善于在 Android 上利用线程可以帮助您提升应用的性能。本页从以下几个方面讨论线程的使用:使用界面线程(即主线程);应用生命周期与线程优先级之间的关系;以及平台为帮助管理线程复杂性所提供的方法。对于每个方面,本页都介绍了潜在的陷阱和相应的规避策略。主线程当用户启动您的应用时,Android 会创建新的 Linux 进程以及执行线程。这个主线..
2020-05-30 11:20:04
449
原创 (两百六十)学习进程和线程概览
https://developer.android.google.cn/guide/components/processes-and-threads进程和线程概览当应用组件启动且该应用未运行任何其他组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件会在相同的进程和线程(称为“主”线程)中运行。如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。但是,您可以安排应用中的其他.
2020-05-30 10:23:48
338
原创 (两百五十九)学习perfetto Google官方的使用示例
学习https://www.bilibili.com/video/av77424850/1. 影响性能的因素2. 多个activity依次加载需要优化为单一activity3. 懒加载对于初创建的界面不是即刻需要的ui可以进行懒加载4. 大图像加载WebP or 异步加载...
2020-05-24 12:16:01
1189
原创 (两百五十八)以perfetto的视角观察flutter的加载
1.抓取trace使用https://blog.youkuaiyun.com/sinat_20059415/article/details/106307905中网页抓取方式抓取trace对应tracehttps://download.youkuaiyun.com/download/sinat_20059415/124529432.简要分析测试flutter还是之前写的https://blog.youkuaiyun.com/sinat_20059415/article/details/105920254#t4里的ap..
2020-05-24 10:41:30
641
原创 (两百五十七)学习perfetto(二)——生成perfetto trace
继续学习https://perfetto.dev/docs/quickstart/android-tracinghttps://perfetto.dev/docs/concepts/config之前看的https://ui.perfetto.dev/#!/record?p=instructions其实就是开发者文档里的config文件1.理论准备perfetto普通模式的命令行普通模式在普通模式下使用 perfetto 的一般语法如下: adb shell.
2020-05-23 23:21:42
10775
原创 (两百五十六)学习perfetto(一)
学习https://www.bilibili.com/video/av77424850/竟然发现Google中国在哔哩哔哩也有账号,i了i了=-=trace分析对应的UI网址https://ui.perfetto.dev/官网:https://perfetto.dev/1.简介https://perfetto.dev/docs/Perfetto is a production-grade open-source stack for performance ins..
2020-05-23 22:32:48
5503
4
原创 (两百五十五)学习应用待机存储分区
学习https://developer.android.google.cn/topic/performance/appstandby应用待机存储分区Android 9(API 级别 28)引入了新的电池管理功能:应用待机存储分区。应用待机存储分区有助于系统根据应用的使用时间新近度和使用频率对应用资源请求确定优先级。 根据应用使用模式,每个应用都会被放置在五个优先级存储分区之一中。系统会根据应用所在的存储分区限制每个应用可用的设备资源。优先级存储分区系统会动态地将每个应用分配到优先级存储.
2020-05-23 12:50:49
366
原创 (两百五十四)Android 学习性能与功耗(三)
继续学习https://developer.android.google.cn/topic/performance/vitals/permissions权限遭拒大多数应用要求用户向其授予特定的应用权限才能正常运行。不过,在某些情况下,用户可能无法授予权限他们认为应用的核心功能不需要权限。 他们不使用与权限相关的功能。 他们担心此权限会影响设备的性能。 他们就是感觉不自在,例如,他们对隐私权比较敏感。...
2020-05-23 12:41:07
387
原创 (两百五十三) 学习改善布局性能
学习https://developer.android.google.cn/training/improving-layouts/optimizing-layout优化布局层次结构使用基本布局结构可打造最高效的布局是一种常见的误解。无论如何,您添加到应用中的每个微件和布局都需要进行初始化、布局和绘制。例如,使用 LinearLayout 的嵌套实例会导致视图层次结构过深。此外,嵌套多个使用 layout_weight 参数的 LinearLayout 实例成本非常高,因为每个子级都需要测量两次.
2020-05-23 11:04:14
349
原创 (两百五十二)初探Flutter 加载流程
1.主页面flutter都是以dart语言编写的,除了之前插入启动页和闪屏页的时候涉及了Android 下的manifest编写,其他的都没怎么涉及,那加载的页面对应于Android是什么呢? mCurrentUserId=0 Current looper: Looper (android.ui, tid=1671) mCurrentUserId=0 mCurrentFocus=Window{9792f01 u0 com.example.flutter
2020-05-17 22:44:01
699
flutter_new.pftrace
2020-05-24
flutter.pftrace
2020-05-24
permission.mdj
2019-12-07
setProcessDefaultNetwork.mdj
2019-12-07
ObtailingIpStateDhcp
2018-09-09
wifi_enable_framework时序图
2018-07-14
Wificond_scan时序图
2018-07-14
bindService时序图
2018-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人