自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 2021MIT6.824 Lab4总结:ShardKV

commandterm 判断幂等性

2022-01-02 17:27:09 902

原创 2021MIT6.824 Lab3总结:KVRaft

代码地址https://github.com/c-toast/6.824-golabs-2021基础概念在lab2的raft上实现分布式key-value存储服务,该服务需要具备线性性质。所谓线性性质,就是存在一个根据请求的发起时间和回应时间进行排序的请求序列,使得该序列中的读请求能读到上一个写请求后的结果。MIT6.824 lab3 实现细节该实验看起来难度不是很大,但做之前需要提前想清楚可能的corner case,并针对这些corner case设计相应的解决方案,才能通过lab的测试。实验

2021-11-27 20:03:32 814

原创 2021MIT6.824 Lab2总结:Raft

通过next确定append entry参数中log的内容通过append entry对落后的server进行同步??如何解决脑裂问题:两个分区各自在log中添加了entry,导致新leader无法产生??::Raft 通过比较两份日志中最后一条日志条目的索引值和任期号来定义谁的日志比较新。如果两份日志最后条目的任期号不同,那么任期号大的日志更新。如果两份日志最后条目的任期号相同,那么日志较长的那个更新。https://thesquareplanet.com/blog/students-guide-t

2021-11-07 19:55:31 526

原创 2021MIT6.824 Lab1总结:MapReduce

基础概念Map:输入为某一个输入文件,输出为若干个Key-Value对。Map根据任务需求,必要时会在该局部输入中运行算法,将输入中的有效信息提取出来并组织成Key-Value的形式。Reduce:输入为相关的(具有相同key的)Key-Value的集合,输出同样为相关的Key-Value的集合。输出集合的大小往往比输入集合的大小小,很多时候只包含1个Key-Value对。Reduce在相关的Key-Value对上运行算法,对其合并压缩,是负责整合信息的一个函数。分布式系统的整体工作流程的抽象描述第

2021-10-08 14:25:07 279

原创 android类加载

源码版本8.1DexClassLoader、PathClassLoader、BaseDexClassLoader构造函数public class DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory, ...

2021-08-15 11:20:08 1321

原创 2021华为软件精英挑战赛总结

很早就知道了华为软件精英挑战赛。在前几届比赛中,由于自己当时忙于做其他事情,一直没有机会好好地参与其中。今年总算是稍微闲下来一点,于是就和舍友三人组队,成功进入了复赛,但没能进入决赛。我在这个过程中付出了很多心血和时间,虽然最终没能进入决赛,但我从这段经历中得到非常多的收获和提升,也对这段时间的奋斗和努力感到满意。趁着自己关于比赛的记忆还未模糊之前,写下这篇博客记录自己的经历和思考,帮助自己总结与反思这段时间的收获和自己的不足,也供其他人参考我们队的想法和思路。参赛经历初赛初赛赛题已经公布在网上,我的

2021-04-15 22:36:01 1444

原创 毕业设计总结(惯性导航)

线性滤波与预测问题的新方法是卡尔曼发表的一篇介绍卡尔曼滤波器的论文。由于项目需要用到卡尔曼滤波器,我便阅读了这篇论文。在阅读的过程中,我发现该论文的推导过程比网上讲解卡尔曼滤波器的博客要复杂许多。我费了一些功夫才弄明白整个推导过程。而这篇博客记录了我对论文和卡尔曼滤波器的理解。除了参考了卡尔曼的论文外,我还参考了以下这篇博客。这篇博客把卡尔曼滤波的原理讲得非常清楚。强烈建议大家去阅读。http...

2020-09-09 20:26:27 1940

原创 Android got hook实现

ELF基本知识讲解got hook之前,我们首先要对ELF的文件结构有一个基本的认识。ELF中的内容主要包括代码、数据,以及符号表,字符串等。这些信息以”节"(section)的形式存储。我习惯把节称为段。常见的段比如代码段.text,数据段.data,字符串表.strtab,符号表.symtab。需要注意的是符号表和字符串表的关系,符号表中不会直接存储符号名,符号名等字符串会被放到字符串表中...

2020-02-15 22:44:31 1092 1

原创 Pixel2XL Android8.0 root过程记录

进入开发者模式点击setting->system->about phone,然后多次点击build number。进入开发者模式后把USB debugging打开。刷机从官网上下载pixel2xl对应的镜像连接外网,进入开发者模式,打开oem锁(oem锁必须连接外网才能开)。adb reboot bootloader(或者开机时按住开机和-键盘)fastboot fla...

2020-02-15 13:48:57 1789

原创 android abi

__arm__ armeabi__arm__ armeabi-v7__aarch64__ arm64-v8a__i386__ x86__x86_64__ x86_64

2020-02-15 13:17:18 407

原创 Android注入要点记录

虽然之前注入过android很多次,但所做的事情不过是在别人的框架下做些修改,调调bug,完全没有彻底消化和掌握注入的知识和技术。所以我决定写这一篇博文,总结android注入的实现要点。注入原理代码注入的过程其实就是让目标进程加载我们的动态链接库。Android是基于linux的系统,而linux中的dlopen()函数用来打开一个动态库,并将其加载到进程的地址空间。所以注入过程要完成的事情...

2020-02-15 13:15:51 1631

原创 android智能指针sp和wp

普通指针的使用隐患和智能指针的解决办法普通指针在使用过程中的三个隐患:指针没有初始化。指针没有释放。释放后没有置空。智能指针的解决办法:构造函数中初始化。使用计数器,计数器为0时释放。将指针封装在智能指针中,析构时释放。标准库中的智能指针为shared_ptr,而android Binder相关代码使用wp,sp作为智能指针。android中的智能指针计数器由obje...

2020-02-02 21:00:23 652

原创 Binder native层源码分析(五):sm对数据的接收以及处理

1111

2020-02-02 20:52:04 493

原创 Binder native层源码分析(三):BpBinder通信类

BpBinder和BBinder在Binder通信机制中属于通信层,这两个类是真正干实事的。BpBinder是客户端用来与服务交互的代理类,BpBinder本身不实现通信功能,通信功能由其它类和函数实现,但由于这些类和函数被BpBinder代理,所以客户端需要通过BpBinder来发送Binder通信数据。BBinder代表服务端,当服务端从Binder驱动中读取到数据后,由BBinder类进...

2020-02-02 20:51:57 677

原创 Binder native层源码分析(四):Binder驱动将数据发往sm

android源码不包括驱动代码,驱动代码需要另外下载。网上有很多下载驱动代码的方法。如果嫌麻烦可以直接在github随便找一个手机品牌的驱动代码下载。Binder驱动的注册与打开Binder被android系统注册成misc device类型的驱动,这种类型的驱动主设备号统一为10,次设备号为每种设备独有,且只需调用misc_register()就可完成注册://\drivers\andr...

2020-02-02 20:51:41 639

原创 Binder native层源码分析(六):sm返回查询结果

假设现在有一个客户端向sm请求MediaPlayer服务,本篇文章分析sm怎么返回服务的查询结果,即svcmgr_handler中怎么处理SVC_MGR_GET_SERVICE请求。处理SVC_MGR_GET_SERVICE请求case SVC_MGR_GET_SERVICE: case SVC_MGR_CHECK_SERVICE: //得到服务名, 这里应该是String16...

2020-02-02 20:51:25 438

原创 Binder native层源码分析(七):BBinder

Binder驱动部分的主要内容已经基本分析完了,现在回到native层,把之前源码分析三中未分析的部分拿出来分析一遍,注意目的是说明BBinder的作用。我把这一部分内容放在这里分析其实是有原因的,因为如果不理解Binder驱动部分的内容,那么肯定很难理解waitForResponse后面对接收到协议的处理源码分析三我们分析了waitForResponse中发送数据的部分,我们接着看waitFo...

2020-02-02 20:50:56 599

原创 Binder native层源码分析(二):Parcel类

Parcel是Binder通信的中的数据包,通过分析Parcel类,我们就可以知道Binder通信中究竟在传输什么数据,进而对Binder有一个更深入的理解。在上篇博文中,addService函数往Parcel data写入了以下数据。data.writeInterfaceToken(IServiceManager::getInterfaceDescriptor());data.writeS...

2020-02-02 20:49:54 1054

原创 Binder native层源码分析

Binder是Android系统下的IPC通信机制,进程间的通信,包括系统服务的调用,都需要通过Binder来进行。看了很多讲解Binder native层运行原理的书和博客之后,我大概对native层的Binder运行过程有了一个认识。但总觉得跟着别人的文字讲解只能让我对Binder有浅层的认识,想要更加深入地理解Binder,还是得自己亲自过一遍源码。所以我写了几篇类似阅读笔记的博客来记录我看...

2020-02-02 20:48:06 438

原创 Binder native层源码分析(一):media_service的启动

Binder是Android系统下的IPC通信机制,进程间的通信,包括系统服务的调用,都需要通过Binder来进行。看了很多讲解Binder native层运行原理的书和博客,我大概对native层的Binder运行过程有了一个认识。但总觉得自己对Binder的理解不够深入,无法理解其中很多的实现细节,想要更加深入地理解Binder,还是得自己亲自过一遍源码,做一个总结。很多书和博客都以系统服务...

2020-02-02 20:38:49 522

空空如也

空空如也

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

TA关注的人

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