代码流程 1.先看UI显示,StatuBar加载 CollapsedStatusBarFragment 替换 status_bar_container(状态栏通知显示区域) SystemUI\src\com\android\systemui\statusbar\phone\StatusBar.java FragmentHostManager.get(mStatusBarWindow) .addTagListener(CollapsedStatusBarFragment.TAG, (tag, fr…
SystemUI源码分析相关文章 Android8.1 SystemUI源码分析之 Notification流程 分析之前再贴一下 StatusBar 相关类图 电池图标刷新 从上篇的分析得到电池图标对应的布局为 SystemUI\src\com\android\systemui\BatteryMeterView.java 先从构造方法入手 public BatteryMeterView(Context context, AttributeSet attrs, int defStyle) { s…
SystemUI系列文章 Android8.1 MTK平台 SystemUI源码分析之 Notification流程 Android8.1 MTK平台 SystemUI源码分析之 电池时钟刷新 Android 8.1平台SystemUI 导航栏加载流程解析 一.从布局说起 前面的文章分析过,网络信号栏这块属于 system_icon_area,里面包含蓝牙.wifi.VPN.网卡.SIM卡网络类型. 数据流量符号.SIM卡信号格.电池.时钟. 先来看下 system_icon_area 对应的布…
nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect package分析 function fn(req,res,next)的定义及其使用,next的定义,及其运转流程. 3.Express源代码分析,依赖库分析…
这篇blog是专门解决前篇openVswitch(OVS)源码分析之工作流程(哈希桶结构体的疑惑)中提到的哈希桶结构flex_array结构体成员变量含义的问题. 引用下前篇blog中分析讨论得到的flex_array结构体成员变量的含义结论: struct { int element_size; // 这是flex_array_part结构体存放的哈希头指针的大小 int total_nr_elements; // 这是全部flex_array_part结构体中的哈希头指针的总个数 int e…
Okhttp源码分析--基本使用流程分析 一. 使用 同步请求 OkHttpClient okHttpClient=new OkHttpClient(); Request request=new Request.Builder() .get() .url("www.baidu.com") .build(); Call call =okHttpClient.newCall(request).execute(); 异步请求 OkHttpClient okHttpClient=new OkH…
MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录.如何新建MyBatis源码工程请点击MyBatis源码分析-IDEA新建MyBatis源码工程. MyBatis初始化的过程也就是创建Configura…
在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarkup>中我们已从粗略的角度去分析框架操作流程和消息流程,只能对其有基本的印象,此处我们将通过实际的举例分析,duilib创建的工程,在整个资源解析.控件创建.控件加载与绘制,控件数据处理等管理的整个过程进行整合: 为了便于分析,我们仍然从项目中附带的工程“TestApp1”进行更深入的学习,以下执行流程为…
在<MonkeyRunner源码分析之与Android设备通讯方式>中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服务来监听指定的一个端口,然后monkeyrunner再连接上这个端口来发送命令,驱动monkey去完成相应的工作. 当时我们只分析了monkeyrunner这个客户端的代码是怎么实现这一点的,但没有谈monkey那边是如何接受命令,接受到命令又是如何处理的. 所以自己打开源码看了一个晚上,大概有了概念.但今天…
本文涉及SpringMVC异常处理体系源码分析,SpringMVC异常处理相关类的设计模式,实际工作中异常处理的实践. 问题场景 假设我们的SpringMVC应用中有如下控制器: 代码示例-1 @RestController("/order") public class OrderController{ @RequestMapping("/detail") public Object orderDetail(int orderId){ // ... } } 这个控制…
/** Spark SQL源码分析系列文章*/ 自从去年Spark Submit 2013 Michael Armbrust分享了他的Catalyst,到至今1年多了,Spark SQL的贡献者从几人到了几十人,而且发展速度异常迅猛,究其原因,个人认为有以下2点: 1.整合:将SQL类型的查询语言整合到 Spark 的核心RDD概念里.这样可以应用于多种任务,流处理,批处理,包括机器学习里都可以引入Sql.    2.效率:因为Shark受到hive的编程模型限制,无法再继续优化来适应Spark…
接上一篇-springmvc源码分析开头片 上一节主要说了一下springmvc与struts2的作为MVC中的C(controller)控制层的一些区别及两者在作为控制层方面的一些优缺点.今天就结合下面的一张图和上一篇中关于springmvc各个模块之间及各个模块中的类的继承关系的一张图对springmvc的请求处理流程进行一个分析.当然有了springmvc的请求处理流程我们就知道了springmvc是如何在启动的时候去加载或者去解析对应的具体控制器,以及modleAndView使干什么用的…
Retrofit 是 square 公司的另一款广泛流行的网络请求框架.前面的一篇文章<源码分析OKHttp执行过程>已经对 OkHttp 网络请求框架有一个大概的了解.今天同样地对 Retrofit 的源码进行走读,对其底层的实现逻辑做到心中有数. 0x00 基本用法 Retrofit 的项目地址为:https://github.com/square/retrofit 打开项目目录下的 samples 文件夹,从这里可以浏览 Retrofit 项目的使用范例. 在本文中打开SimpleSer…
一.序列化类的增.删.改.查 用drf的序列化组件   -定义一个类继承class BookSerializer(serializers.Serializer):   -写字段,如果不指定source,字段名必须跟数据库字段名对应(source指定的值跟字段名不能重复)   -source还可以指定方法   -publish=serializers.SerializerMethodField()   def get_publish(self,obj):    obj.publish    #ob…
Eureka Client 是一个Java 客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的.使用轮询负载算法的负载均衡器. 在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒),如果Eureka Server在多个心跳周期没有收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除(默认90秒). Eureka Client具有缓存的机制,即使所有的Eureka Server 都挂掉的话,客户端依然可以利用缓存中的…
备注 原发表于2016.04.23,资料已过时,仅作备份,谨慎参考 前言 由于是第一次自己翻看源代码进行学习,加上基础不好,在看源代码的过程中简直痛苦不堪,但同时也暴露出了自己的许多问题.我觉得学习源代码是一件耗时但也收益颇多的学习方式,哪怕你暂时没有足够的时间自己去分析学习,也要擅于学习别人的经验总结. Java 基础知识点 Retrofit 的功能涉及到了 Java 的『反射』.『注解』和『动态代理』. 公共技术点之 Java 反射 Reflection 公共技术点之 Java 注解 Ann…
(注:从微信公众:CloudGeek复制过来,格式略微错乱,更好阅读体验请移步公众号,二维码在文末) 今天我们来跟一下predicates的整个过程:predicate这个词应该是“断言.断定”的意思,在这里我们姑且翻译为“预选”,虽然不符合这个单词的本意,但是在schedule过程中predicate过程做的事情确实还是叫“预选”比较好理解! 上一讲我们提到predicate过程的入口在findNodesThatFit这个函数,所以今天我们从这个函数入手,看看这里面有哪些玄机.这个函数在:pk…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
由于网络上对leveldb的分析文章都比较丰富,一些基础概念和模型都介绍得比较多,所以本人就不再对这些概念以专门的篇幅进行介绍,本文主要以代码流程注释的方式. 首先我们从db的插入和删除开始以对整个体系有一个感性的认识,首先看插入: Status DB::Put(const WriteOptions& opt, const Slice& key, const Slice& value) { WriteBatch batch; //leveldb中不管单个插入还是多个插入都是以Wri…
集群启动: QuorumPeerMain. runFromConfig() quorumPeer.start(); loadDataBase(); cnxnFactory.start();          //网络通信交互 startLeaderElection();//启动选举类 super.start(); quorumPeer.run() case LOOKING: new ReadOnlyZooKeeperServer() //选举期间启用只读服务器, FastLeaderElecti…
A: js指令转化为新transaction 在web3上操作流程 1. import to web3 2. connect to peers 3. read local key store 4. decrypt local key store 5. create a transaction obj i. 创建contract: 向0发送,data为主要内容 ii. 执行contract 6. sign and send 在geth里怎么做到的呢? 首先看到cmd\geth\consolecmd…
http://blog.csdn.net/u010994304/article/details/50452890 es启动脚本是bin目录下的elasticsearch. 脚本内容不再赘述,java主类位于org.elasticsearch.bootstrap.主要逻辑是生成了一个InternalNode节点,并且启动了一个keepalive线程.结点的启动代表整个es进程启动了. InternalNode节点是通过NodeBuilder来生成的,节点在构造函数中 通过ModuleBuilder…
https://yq.aliyun.com/articles/707995 在Spring的web容器启动时会去读取web.xml文件,相关启动顺序为:<context-param> --> <listener> --> <filter> --> <servlet>,具体为: 1.解析<context-param>键值对 2.创建一个application对象即ServletContext,servlet上下文,用于全局共享 3…
1.基本用法 创建接口 public interface GitHubService { @GET("users/{user}/repos") Observable<List<Repo>> listRepos(@Path("user") String user); } 创建Retrofit实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.githu…
花了点时间整理了下MonkeyRunner的工作原理图,请配合本人博客里面MonkeyRunner其他源码分析文章进行阅读.下面整理成相应系列列表方便大家阅读: MonkeyRunner源码分析之-谁动了我的截图? MonkeyRunner源码分析之与Android设备通讯方式 MonkeyRunner源码分析之启动 Monkey源码分析之运行流程 Monkey源码分析之事件源 Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制 Monkey源码分析之事件注入…