近况20171225

上个星期从武汉参加完我姐婚礼回来,婚礼也如她所愿,恭喜她,在经历了那么多挫折后能够终成眷属。

走的时候陆陆续续还有电话需要面试的都放了我鸽子。 或许太忙? 还是觉得简历不够好,觉得不太合适? 至少也麻烦回个信息啊。 要走简历就没了下文,一方面又期望面试者能够用心。

继续阅读“近况20171225”

做一道菜

厨艺让生活更美好

昨天冬至,中午在家做了一道鲫鱼,本来是按照下厨房的教程,做的红烧鲫鱼,却被我做出了鱼火锅的感觉,印象中这是第三次做鱼了,第一次做的清蒸鱼,感觉还可以,但是忘记咋做的了,第二次就坑爹了,太腥,没吃完,引来我家喵星人把我碗给打碎了。后来听说是没处理干净。鱼腹里有一些黑色的要剔除干净。
继续阅读“做一道菜”

老生常谈之Android 启动模式

关于启动模式网上一堆一堆的文章可以参考,我只是通过自己实践记录一下实验过程

tip1

dumpsys | grep "DUMP OF SERVICE"  //列举当前手机所有支持的dumpsys命令
查看activity 堆栈
dumpsys activity 包名

Task

  1. Task 是一个堆栈。里面维护了一系列Activity
  2. 不同应用的Activity 可以包含在一个Task 里边,比如系统发送邮件等等
    继续阅读“老生常谈之Android 启动模式”

HashMap的实现原理

接着昨天的问题

-HashMap 用的多吗?
– 嗯挺多的
– 能说说其原理吗?
– HashMap 是一种数据结构,我们可以通过Key 来存储一些value。 利用Key的HashCode 做为内存地址,以便于很快的查找到对应的Value。
– 什么内存地址?
– 就是java虚拟机中的内存啊,不知道是堆还是栈
– 啊???(心里活动:妈勒个蛋,一本正经的胡说八道)好我们不说这个,那你说到HashCode ,请问HashCode 有可能发生碰撞吗?
– 当然会(hashCode 返回的也就是int 行,最多也就是2的32次方个。总是有限的嘛,而我们的对象可以无限制创建,虽然我还没有对象)
– 那HashMap是如何解决这个问题的呢。
– 额,这个几率会很小吧,可能需要我们重写一下key的hashCode,因为Key 也是Object类的子类吧。所以可以重写,额。。。
– 。。。。

承认,没看过HashMap 源码,我的错。我应该直接说没看过的。尴尬。
那今天来具体看一下 。
说点简单的,HashMap 怎么存储我们的 Key Value,从put 方法开始跟踪。

    public V put(K key, V value) {
        return putVal(hash(key), key, value, false, true);
    }

一个hash 函数。(这个有兴趣可以再看看是怎么算的,我写完这个再去看看) 算出了Hash.
继续阅读“HashMap的实现原理”