每天看点源码

  最近想换工作,bat等一线互联网公司都面了个遍,被轮流虐了无数遍之后发现欠缺很多,总结一下:

  1.工作中只知道尽快的完成任务,实现功能,很多时候想到一种解决方案就下手去干了,是不是最优方案、数据量大了之后的性能问题、并发安全问题等都欠考虑。

  2.本身不是计算机科班出身,基础薄弱,线程、锁、网络等计算机基础掌握不牢,源码看的偏少,很多常用的类都没仔细看过。

  3.数据结构和算法功底差,只能写个最简单的冒泡排序。。最多再能写个汉诺塔之类的递归。

  问题多多,好在一次腾讯面试的时候,面试官大姐指点说可以多看点源码,可以了解底层是怎么实现的,然后考虑为什么这么实现,举一反三,再想想如果自己实现的话应该怎么做,受到启发之后觉得这确实是一个好办法,于是决定从今天起每天读点源码(周六日要打球,身体是革命的本钱),从JDK源码开始吧。

  Integer

  进制转换方法,toString(int i,int radix)

  首先定义好所有可能出现的字符digits,数字+字母,长度为36

  final static char[] digits = {
        ‘0‘ , ‘1‘ , ‘2‘ , ‘3‘ , ‘4‘ , ‘5‘ ,
        ‘6‘ , ‘7‘ , ‘8‘ , ‘9‘ , ‘a‘ , ‘b‘ ,
        ‘c‘ , ‘d‘ , ‘e‘ , ‘f‘ , ‘g‘ , ‘h‘ ,
        ‘i‘ , ‘j‘ , ‘k‘ , ‘l‘ , ‘m‘ , ‘n‘ ,
        ‘o‘ , ‘p‘ , ‘q‘ , ‘r‘ , ‘s‘ , ‘t‘ ,
        ‘u‘ , ‘v‘ , ‘w‘ , ‘x‘ , ‘y‘ , ‘z‘
    };

  方法正文:

 

public static String toString(int i, int radix) {        //Min/Max_RADIX分别为2,36
        if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
            radix = 10;

        /* Use the faster version */
        if (radix == 10) {
            return toString(i);
        }

        char buf[] = new char[33];
        boolean negative = (i < 0);
        int charPos = 32;

        if (!negative) {
            i = -i;
        }

        while (i <= -radix) {
            buf[charPos--] = digits[-(i % radix)];
            i = i / radix;
        }
        buf[charPos] = digits[-i];

        if (negative) {
            buf[--charPos] = ‘-‘;
        }

        return new String(buf, charPos, (33 - charPos));
    }
时间: 2024-08-01 19:31:13

每天看点源码的相关文章

Eclipse项目里面看源码和文档

Eclipse项目里面看源码 1.新建项目列表 2.进入struts2-core-2.3.20.jar,双击之后,看不到源码 3.右键struts2-core-2.3.20.jar,选择properties,在里面设置源码路径. 我的路径为:  E:\struts-2.3.20\src\core\src\main\java 4.之后查看,源码出来了. 5.注意事项: 如果在struts-2.3.20-all.zip解压的包里看不到,可以去官网自己从新下载一个源码包,选择这个struts-2.3.

Android NoHttp 框架作者带你看源码(一)

版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 现在市场的Http框架很多,比如我们熟知的NoHttp.Retrofit.Volley.android-async-http等上层框架,HttpURLConnection.OkHttp.HttpClient等底层框架,今天不说孰好孰坏,今天我带大家来分析NoHttp的源码,教大家如何来看NoHttp的源码. 今天我们由浅到深,深入浅出的分析第一个模块:请求模块. 支持作者可以去G

NoHttp和OkHttp的无缝结合 NoHttp框架作者带你看源码(二)

NoHttp和OkHttp的无缝结合 NoHttp框架作者带你看源码(二) 版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 上一次带大家分析了NoHttp源码,知道我们可以替换NoHttp的底层为其他任何库,例如OkHttp.HttpURLConnection.HttpClient,那今天就带领大家一步步来实现替换NoHttp的底层为OkHttp. NoHttp源码分析的博客:http://blog.csdn.net/yanz

软考——再看原码、反码、补码

众所周知,一个正数的原码.补码.反码是相同的,负数则不同.先提一个问题,为什么在计算机中要使用这些编码方式呢? 1. 原码 将最高位用做符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式.这种方式是最容易理解的. 例如,+1的原码是00000001,-1的原码是10000001. 但是直接使用原码在计算时却会有麻烦,比如(1)10+(-1)10=0,如果直接使用原码则: (00000001)2+(10000001)2=(1000010)2 这样计算的结果是-2,也就是说,使

FastJson遇见的问题或项目实战中优化的问题,看源码都可以解决

1:感觉见鬼了一般存储JSONObject中的字段竟然不见了? JSONObject object=new JSONObject(); Map fields = new HashMap(); fields.put("1","1"); object.put("fields",fields); System.out.println(object.toString()); JSONObject newFields = object.getJSONObj

VC利用调试寄存器实现硬件断点源码

[文章标题]:VC利用调试寄存器实现硬件断点源码 [文章作者]:yhswwr(SilenceRet) [作者QQ]:3412259 [编写语言]:C++ [使用工具]:VS2008.VC++9 [本文链接]:http://bbs.pediy.com/showthread.php?p=1122838 [参考链接]:http://bbs.pediy.com/showthread.php?t=107515 [作者声明]:只是感兴趣,没有其他目的.失误之处敬请诸位大侠赐教!(当前行剽窃自justhxy)

P8架构师倾情讲述,看源码是Java高级程序员内功修炼必经之路

笔者前两天总结了一些Java程序员进阶必备的技术要点,并且做出了分享,可以参见前篇文章< Java程序员年薪40W,他1年走了别人5年的路(技术提炼建议收藏) >. 今天笔者在这里给大家介绍一下程序员的内功,内功修炼的内容就与之前文章中的技术内容大致相似,但是,那些技术不是说你想学就能学会的,如果你只是写了几年的业务代码,不对源码加以分析,那么你永远只是停留在码农阶段.你必须要学会看懂代码,才能尝试在架构技术上加深造诣,架构师之所以称之为架构师,源于他们对源码透彻的理解. 首先先为大家介绍一下

Spring AOP源码解析——专治你不会看源码的坏毛病!

昨天有个大牛说我啰嗦,眼光比较细碎,看不到重点.太他爷爷的有道理了!要说看人品,还是女孩子强一些. 原来记得看到一个男孩子的抱怨,说怎么两人刚刚开始在一起,女孩子在心里就已经和他过完了一辈子.哥哥们,不想这么远行吗?看看何洁,看看带着俩娃跳楼的妈妈. 所以现在的女孩子是很明白的,有些男孩子个子不高,其貌不扬,但是一看那人品气质就知道能找个不错的女盆友.不过要说看人的技术能力,男孩子确实更胜一筹,咱得努力了. 总结一下要形成的习惯: 有空时隔一段时间要做几道算法题,C语言和JAVA都可以,主要是训

Mybatis还有这种操作?浅析为什么要看源码

很多人都有一个疑惑,为什么面试都喜欢问原理,问源码.但是实际工作根本用不上,也就是大家常说的,面试造火箭,进去拧螺丝.我身边也有不少朋友问过我,我给他们的回答是.如果不看源码,不懂原理,出了问题你怎么解决?他们给我的答复基本都是两个字:"搜索". 也确实,工作中大部分问题通过复制错误信息搜索都能解决,加上现在框架越来越多,拼积木式的编程方式加上搜索引擎,让越来越多人产生了开发是件很容易的事的错觉.我也一直想举一个搜索几乎搜不到,要看源码才能弄懂其中缘由的例子. 正巧这件事发生在了去年8