2020年3月22日
摘要: 原题链接 http://hihocoder.com/problemset/problem/1059 问题:给定两个字符串A和B,求解A和B的所有公共子串的最大总长度,满足: 1)子串的长度都至少为3; 2)子串的起始位置是单调递增的。 分析: 1)首先可以用矩阵M表示两个字符串的字符匹配情况,其中 阅读全文
posted @ 2020-03-22 22:11 游不动の鱼 阅读(121) 评论(0) 推荐(0) 编辑
  2020年3月11日
摘要: 原题链接 http://hihocoder.com/problemset/problem/1052 问题:给定由ATCG组成的长度为N的字符串S,求解最少的改动次数,使得前K个字符序列与后K个字符序列相同,其中 1 <= K <= N 分析: 1)对于长度相同的两个字符串 A 和 B 来说,要将两个 阅读全文
posted @ 2020-03-11 00:50 游不动の鱼 阅读(146) 评论(0) 推荐(0) 编辑
  2020年3月8日
摘要: 原题链接 http://hihocoder.com/problemset/problem/1042 问题:在一个m*n的矩形中,圈出一块最大周长为L的连续区域,满足区域面积尽可能大,同时区域边界不能落入内部特定的矩形内。 分析: 1)当周长固定时,围成正方形覆盖的面积最大; 2)考虑到矩形的对称性, 阅读全文
posted @ 2020-03-08 10:24 游不动の鱼 阅读(172) 评论(0) 推荐(0) 编辑
  2017年11月2日
摘要: 场景一:匿名内部类、非静态内部类 隐式持有外部类的引用 非静态内部类示例 如19-20行所示,在外部类外实例化非静态内部类时,需要通过外部类的实例.new进行构造。 使用 javac Test.java进行编译,生成Test$Outer$Inner.class、Test$Outer.class、Te 阅读全文
posted @ 2017-11-02 16:19 游不动の鱼 阅读(228) 评论(0) 推荐(0) 编辑
  2017年10月20日
摘要: 线程模式 POSTING:该模式不需要线程切换,为默认模式。在post线程直接调用事件订阅函数。 MAIN:若post线程是主线程,则与POSTING模式一样;否则,由mainThreadPoster进行处理,从主线程调用事件订阅函数。 BACKGROUND:若post线程不是主线程,则与POSTI 阅读全文
posted @ 2017-10-20 11:51 游不动の鱼 阅读(923) 评论(0) 推荐(0) 编辑
  2017年10月19日
摘要: 订阅函数查找 当一个对象调用register向EventBus注册时,查找对象中所有接收订阅事件的函数被封装在SubscriberMethodFinder类中。findSubscriberMethods的实现如下: 若ignoreGeneratedIndex为true,则调用findUsingRef 阅读全文
posted @ 2017-10-19 16:04 游不动の鱼 阅读(514) 评论(0) 推荐(0) 编辑
  2017年10月18日
摘要: 发送事件(post) 当需要发送事件时,调用EventBus.getDefault().post(event)即可,EventBus会将事件发送给所有已经注册了监听该类事件的订阅者。post的实现如下: 第2-4行,currentPostingThreadState是ThreadLocal<Post 阅读全文
posted @ 2017-10-18 11:32 游不动の鱼 阅读(374) 评论(0) 推荐(0) 编辑
  2017年10月17日
摘要: 引子 EventBus提供了一套完善的总线机制,能有效地用于模块间解耦。要使用EventBus,在项目模块的build.gradle中添加如下依赖即可: 类定义 注册(register) 当一个对象想要从EventBus接收事件时,只需在EventBus中进行注册自己,调用EventBus.getD 阅读全文
posted @ 2017-10-17 18:04 游不动の鱼 阅读(1395) 评论(0) 推荐(0) 编辑
  2017年10月14日
摘要: 线程的threadLocals Looper通过sThreadLocal来设置线程与Looper的对应关系,sThreadLocal是范型类ThreadLocal<Looper>的实例,其添加、移除元素的操作如下: 从代码中可以看出,Looper对象实际上是被添加到当前线程的本地数据表中(t.thr 阅读全文
posted @ 2017-10-14 23:25 游不动の鱼 阅读(1383) 评论(0) 推荐(0) 编辑
  2017年10月12日
摘要: 消息出队 MessageQueue封装了以单向列表实现的Message队列。在Looper循环中,通过调用MessageQueue的next()方法将队首元素出队进行处理: 当队首元素执行时间未 或 队首元素为SyncBarrier且队列中没有asynchronous的Message 或 队列为空时 阅读全文
posted @ 2017-10-12 20:08 游不动の鱼 阅读(426) 评论(0) 推荐(0) 编辑