Men的博客

欢迎光临!

0%

Android学习截图

Future, Stream, Isolate
• Future
•昇步返回一个值
• Stream
•异步返回一系列的值(数据流)
• Isolate
•通过创建新线程的方式,来实现异步

监拟内行/物难内存
Linux凶痤古H
肉恔苦阅/兵拟空河
LInux4MMU内学贸園
•Page点亏效瑞艾坟原歷
•从native蛋吞Binder
• Binder驱副鸽析
Binder四處识码分析
Jni座对Bindler的笑观
•从Framework陽 Binder的求卯
Android为什么不月inux已旁的1PC选程讶估
Binder花心盛数mmap源码兌价
大话Bindar外
map内存映射许語
MVVM设计县北石mmap西数法蛋机制
,服劳洪n(servicemianager出矮店到)
眼务发现(seviternarrager服务童找)
Bindert程逆仿原址
服势调質(serivremanagera息分发)
L copy.torm_uger/ropy_to_ user西数
Rinder机到豆奶何馆讲谣
一次拷贝是发生在吝户漏还是服务鋪
F4Binder面t总结—啊业信
Activity传道放信品大为什么是1M-8k
1为什么activity司停道对突歪愿序列化
*•场日市西-子写学切pinder#程汗位
1 Linux pipe/epol机刜
100s池同装机制- pipe三道5CPU休眼状者
玉多日词
Mesgage的洲启队列雷理机利
名个handler社Mecsaaeoueves添
机数振,力部足如何确贝结程岁会的7
-Handler面计分享一_起厂声,loopor.loop0 为什公下生阳东十生得

,int进從gZygote讲糕
Zygote峊动流橋

  • Zygote决程4 Aygote的sockct涕值稅式
  • APP的創建
    APP含动过程分析 4 APP讲程的金动
    APP土战程的会动
    rdtex文什’构
    • 正增企更新琐目实战一dex文件纯构。f dlex文件加我是本你接
    •dex文什学分心生戏
    ActivitvThread獗码分行
    AMSbgActivitThread逐远城理
    AMS洋觛
    Activity白动机利
    HaokAMsngstartAetivity方法
    肉- AMS实城一立现第书式證品
    PMS你i腸液
    四大甜件的预加歲
    AMSsPMS档店枵析
    FMS洋解
    APK交热学程分粉,PMS对安领勿的福析牌坦
    大4 NS实战。利出PMS点州实迎可下发的广瑞润件
    WindowManager.
    WindowllanagerGolbal.
    Windawwsesslon呀嫖一叶s海方
    深彦剖析WMS
    Wirrdowrokent利方率
    WindowState
    WindowlashMap与商体给刺划
    relayoutwindow数据记录与生新列量
    1Surface.copyFrom底层核心穌折

应用从肩动到onCreate的过程
Aictivity=金周期的網居篇姐奶如
何选行的
Activity兰城过挫训羽分折
i setCoatentViewn死数据阳核心概含
ViewRootiinpl的绘制笆厦
1刷新率(家豆)
屏巴给利恒论 什 阿速率:(GPU
•利新率5防率不同所带来的问题
VSYNC位号的本后豆义
Choreographer管理抗炎
Surfacefinger对记号的返回本质
Choreographerw何似到航逐拉别行松可同多
SurfaceFilnger提供的surfare
西億钠生成过程 4 SurtaceFiinger进行的锁含成
EunloekCarNaSAndPOst兵佳作了什么
Layautinflater加我布局源低分析
xml概盔鰇析
Layoutinflater 茄居填充器源門分折
妒何获坝监听布屖誶忻过释
¢中实战应用 , 拦截XML控件实例过種,打造网易云饰联痤架
,Layoutinilater加n我布尽分析
向网窈据件化谈肤
4Android冠源的加载饥制
Resource AssetManager
王科头行U飛粒宁L形
三件分发机乳详锦—五件兰死原唱涡松
大中 卖战应用 •手豆克件分发红制
VSYNC科新机南
ObjectAnimator gValue Animator系陨讲解
Android广件动匠;准巨器与估省器

Lavoutinflatar加砹布厩分析
•网务指州化顿联+Androld资源的加载𢖯制
L Resource gAssetManager
五华扒花U龙料气L形链
严件分发机剂计靜。
乎件挫武厊唱惕秘
*。 实收亚用 …不号雨件分发们兴
VSYNC乱斯机制
ObjectAnimatorgValueAnimator原码讲解
Antiroid馬性动瓦;开佑器亏佑伯照
香中 卖战应用。丰号Android-性动画恇平
源碀分析
布厉需夏器1ayoutManAger經
1RecycleViev劑析
Webview剂析。
逶即路换北原項
RecycleView剂析
•+ 实花西用 一 子气实现ReCycleViaw
W
ebviaw居咀分行
妒河与I5进行交百
WebVigw性锅优化

Liftcvele a Llerycle澡国解5
1Lifecvcle在高阶应用
ViewModel - vlewodel源讲解
1 viewModel的应用技巧与安践
LiveDsta源码矮析
LiveData
手写宝项liveData以及格
中 安战成用“LiveData丁出成手件分发框架
Navioation d Naviglatton深人源研分析
食中 实战应用 • APT技术实现自足义Fragment导航諝
Room澡入液硒分析
Room+LiveData监听故潘价敬
Room 一我安要侧新质们無邦分術
Architecturei@it.sie
基干Room封装APP望我绍存机型
一实战应用 •
Historage
WorkManaaer内核爆秘
Paaginq实巩原現与设计無規

•1.面试问启动优化到底应该怎么回答?
•2.图论?DAG拓扑排序?启动任务管理
•3,JUC中闭锁是什么?如何在启动中应用?
•4.App启动流程对启动优化的意义
•5.手写淘宝APP中的启动框架

1.MVP基础框架搭建
-2根除Activity内存泄漏
—3.Base类常用设计模式模板与适配器应用
—4.一线大厂MVP技术整体解决方案
-5.Jetpack新技术Lifecycle的融入
—6.Lifecycle源码分析
-7.Lifecycle核心设计恩想

移动端注入神器Dagger2与Hit实现原理
主要内容:
1.dagger2基本使用
2.局部单例技术是如何实现的
3.dependencies依赖关系
4.深入理解scope 让dagger2的使用更轻松
5.hilt对象注入与接口注入
6.hilt实现原理分析

1 Framework
Binder Handler AM5 PMS WMS App启动 activity 启动流程 流程 zygote 中件分发
•2性能优化
片动优化 app瘦生,卡顿优化 内存洪湖 网络优化 大阁优化
3槊构
组件化 组件通信 路由,插件化,MVP MwwM. Glide okhttp tinker
4
排序
希尔井序 桶井序,
hmap hash算法,我容,红黑树 hashmap & correntHashmap的区别

HIGH PRIORITY#LOW PRIORITY
指定优先级
• DELAYED
立即返回查询,并写入饭存待时机处理
STRAIGHT JOIN
让鳌理衷掖指定顺序管理
SQL_SMALL_ RESULTRISQL_BIG_RESULT
SQL_CACHEROSQL_NO_CACHE
SQL BUFFER RESULT
SQL CALL FOUND ROWS
FOR UPDATE LOCK IN SHARE MODE
• USE INDEX
售诉优化路结果集可能很大
COUNT
关联香询优化
优化子查询
用COUNT(*)统计金表
通过SHOWSTATUS 的结果数
便用EXPAIN的近哎值
确保ON和UNION子句中的列上有寮引
确保任何GROUP BY和ORDERBY牛的表达式具涉及一个装牛的列
尽可能的使用管理童询代書
GROUP BY#ODISTINCTI
使用素引优化
:LIMIT加简移量,同时加上台适的ORDER BY

如果没有命中查问緩存
就开始真正的执行sq了
先做词法分析,根据接收到的sq语句进行识别,比如
select表示查询语句,识别出表名,识别出字段名等
分析器
再做语法分析,判断你写的sq话法是否正确

  1. 分析亮后,再对sql语句进行优化
    侊化品
    决定使用哪个素引,决定表的join颜序
  2. 优化完之后就开始真正执行sQ了
    犱行器
    假设现在要执行的sql是:
    select * from t1 where a = 10:(不考慮索引)

如果有人在select * from t1: 呢?
如果按上面分析的逶辑,,那么一旦执行这个sal就有可能把Buffer Pool中的内容全部淘汰掉(“换
血〞),这样就把本来已经绠存了的数想给淘汰掉

针对这种情況,Mysql把LRU道表按比例分成两截:
1热数据区城,用来存放使用频率非第高的数据页
2.冷数据区域,用来存放使用频率不是很高的效据页
3.通过innodb_ old blocks_pct可以调整区域比例
设计升级后,对于一个新的数据页,一开始会加入到冷数据区城的头部,后续如果此数据页又被访问到,则会把此数据页从冷数据区域移动到热数据区域的头部。
那么汶么
设计到底有没有问题呢?还是有的,因为如果是全表扫
描,那么实际上相邻的两条我多条记录很有可能是在同-页,而每次去读取这些记录时,都算是在访问数据页,那么还是会出现“换血。的情况。

B-Tree
•叶节点具有相同的深度,叶节点的指针为空
•所有索引元素不重复
•节点中的数据索引从左到右递增排列

B+Tree(B-Tree变种)
非子节点不存储data,只存储索引元余),可以放更多的索引


叶子节点包含所有索引宇段
叶子节点用指针连接,提高区间访问的性能

InnoDB索引实现(聚集)
•表数据文件本身就是按B+Tree组织的一个索引结构文件
聚集索引-叶节点包含了完整的数据记录
为什么建议InnoDB表必须建主键,并旦推荐使用整型的自增主键?
•为什么非土键索马1结构4子节点存储的是主健值?(一致性和市省存储空间)

分布式架构
微服务架构
源码分析
井发编程
性能优化
数据结构与算法
高并发实战
项廟经验
工程化协作

索引的基本原理
索引1用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历整张表。
索引的原理:就是把无序的数据变成有序的直询
1.把创建了索引的列的内容进行排序
2.对排序结果生成倒排表
3. 在倒排表内容上拼上数据地址链
4. 在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具体数据

索引设计的原则?
真询更快、占用空间更小

  1. 适合索引的列是出现在where子句中的列,或者连接子句中指定的列
  2. 基数较小的类,索引!效果较差,没有必要在此列建立索引
  3. 使用短素引1,如果对长字符申列进行素引!,应该指定一个前级长度,这样能够节省大量素引空间,如果搜索词超过索引前缀长度,则使用索引!排除不匹配的行,然后检查其余行是否可能匹配。
  4. 不要过度奈引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索号1列越多,这个时间就会越长。所以只保持需要的索号!有利于查询即可。
  5. 定义有外键的数据列一定要建立索引1。
  6. 更新频繁字段不适合创建索引
    了.若是不能有效区分数据的列不适合做索 l列(如性别,男女未知,最多也就三种,区分度实在太低)
  7. 尽量的扩展索引,不要新建素号。比如表中已经有a的素引1,现在要加(a,b)的索引,那么只需要修改原来的索
    引即可。
  8. 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
  9. 对于定义为text、image和bit的数据类型的列不要建立索引。

mysql执行计划怎么看
执行计划就是sql的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数
EXPLAIN SELECT * from A where X=? and Y=?
1 id I select_type | table
I partitions | type possible_keys | key | key_len | ref
I rows I filtered | Extra |
1。 id :是一个有顺序的编号,是查询的顺序号,有几个select 就显示几行。id的顺序是按 select 出现的顺序增长的。id列的信越大执行优先级越高越先执行,id列的值相同则从上往下执行,id列的值为NULL最后执行。
2。selectType 表示查询中每个select子句的类型
•SIMPLE:表示此查询不包含 UNION 查询或子查询
•PRIMARY:表示此查询是最外层的查询(包含子查询)
•SUBQUERY:子查询中的第一个 SELECT
•UNION: 表示此查询是 UNION 的第一或随后的查询
•DEPENDENT UNION: UNION 中的第二个或后面的查询语句,取决于外面的查询
• UNION RESULT, UNION 的结果
•DEPENDENT SUBQUERY: 子查询中的第一个 SELECT, 取决于外面的查询.即子查询依赖于外层查询的结果.
•DERIVED:行生,表示导出表的SELECT (FROM子句的子查询)
3.table:表示该语句查询的表

事务的基本特性和隔离级别
事务基本特性ACID分别是:
原子性指的是一个事务中的操作要么全部成功,要么全部失败。
一致性指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。比如A转账给B100块钱,假设A只有
90块,支付之前我们数据库里的数据都是符合约束的,但是如果事务执行成功了,我们的数据库数据就破坏约束了,因此事务不能成功,这里我们说事务提供了一致性的保证
隔离性指的是一个事务的修改在最終提交前,对其他事务是不可见的。
持久性指的是一旦事务提交,所做的修改就会永久保存到数据库中。

隔离性有4个隔离级别,分别是:
也叫做脏读
•read uncommit 读未提交,可能会读到其他事务未提交的数据,也叫做脏读。
用户本来应该读取到id=1的用户age应该是10,结果读取到了其他事务还没有提交的事务,结果读取结果
age=20,这就是胜读。
•read commit 读已提交,两次读取结果不一致,叫做不可重复读。
不可重复读解决了胜读的问题,他只会读取已经提交的事务。
用户开启事务读取id=1用户,查询到age=10,再次读取发现结果=20,在同—个事务里同一个查询读取到不同的结果叫做不可重复读。
•repeatable read 可電复复读,这是mysal的联大认级别,就是每次读取结果都一样,但是有可能广生幻读。
•serializable 串行,一般是不会使用的,他会给每一行读取的数据加锁,会导致大量超时和锁亮争的问题。

ACID靠什么保证的?
A原子性由unda lag日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sal
C一致性由其他三大特性保证、程序代码要保证业务上的一致性
隔离性由MVCC来保证
D持久性由内存+redo log来保证,mysal修改数据同时在内存和redo 1og记录这次操作,宕机的时候可以从redo
1og恢复
InnoDB redo 1og 号盘,InnoDB 事务进入 prepare 状态。
如果前面 prepare成功,binlog 号盘,再维续将事务日志持久化到 bin1og,如果持久化成功,那么InnoDB 事务
则进入 commit 状态(在redo 1og 里面写一个commit 记录)

简述mysql中索引类型及对数据库的性能的影响
昔通素引:允许被素引的数据列包含重复的值。
唯一索引:可以保证数据记录的唯一性。
主键:是一种特殊的唯一素引1,在一张表中只能定义一个主键素 l,主键用于唯一标识一条记录,使用关键字
PRIMARY KEY 来创建。
联合索引:索引!可以覆盖多个数据列,如像INDEX(columnA,columnB)素引。
全文素引:通过建立倒排素引,可以极大的提开检素效率,解決判断字段是否包含的问题,是目前搜素引擎使用的种关键技术。可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引
索引1可以极大的提高数据的查询速度。
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索号文件
索引1需要占物理空间,除了数据表占数据空间之外,每一个素引还要占一定的物理空间,如果要建立聚族索引1,那
如果非聚集索引很多
么需要的空间就会更大,如果非聚集素引很多,一旦聚集素引改变,那么所有非聚集索引!都会跟着变。