那些人,那些事......

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34109408/article/details/85124010
    回顾一下自己的IT职业生涯,应该和大多数同僚一样,从无知还有些自负的毛头小子,到在技能上还算熟练,在性格上也变得成熟的奔三人士,在这个过程中给我最大的感觉就是越学习越发现自己懂得东西少,在职场上越来越感觉到仅仅靠技术层面上的提高是不能让我们大多数人成功的。
      
    在自己目前的职业生涯中经历过太多人太多事,大多数人和事只是风一般的拂过,但是有些人有些事却永远的印在了我的心里。

那些人:
1.我的伯乐--李工
         大四下学期时,就开始了找工作的步伐,开始自己眼光太高,只应聘些跨国大公司,由于自己成绩一般,大学实践也少,屡战屡败,也一步一步在蚕食着自己的信心。于是改投一些国内还算知名的大公司,我觉得我是幸运的,在投了两份简历后就成功拿到了国内某大公司软件事业部的offer,但是其实我在这些竞争者中并不优秀,甚至有些平庸,在拿到offer时,招聘我的李工拿着我的笔试题和我的大学成绩单和我谈心,”从你大学的成绩上,只能算中等,从你的笔试题上我也只能勉强给你打及格,但是从你给我的感觉上,你一定是个踏实的人,我不迷信聪明,我更信赖踏实,.所以.....“, 说实话我承认我不是个聪明的人,从初高中起,我就一直是靠踏实的学习,比别人付出更多的努力才考上的北京一所重点大学。大学由于有些懈怠和某些事的干扰导致了很一般的成绩,以前有很多人都说过不聪明的人很难搞软件开发,我也曾怀疑过自己适不适合搞开发,因为我觉得自己确实不怎么聪明。但是正是李工的一番话和给我的这个机会让我正式踏入软件开发的生涯中......

2.你要树立研发思维--董”洗鉴桃源“(《竹林蹊径:深入浅出Windows驱动开发》书籍的编著者之一)
          经历过上面说的那家公司后,来到了新的公司,由于以前的那家公司主要从事软件外包的开发,但是这家公司却是研发型的企业,于是在入职初期就遇到了不少的挫折,开始我一直在抱怨公司的流程不好,交流不顺畅,任务指派不明确。可是在和董的不断交流中,他帮我分析了我现在所面临的情况,并指出了我的问题。是的,我以前一直在按照解决方案来解决问题,但是现在我必须自己制定解决方案来解决问题,我不应该怨天尤人,我应该转变思维自己去处理现在面临的很多问题。此后在自己的努力和他的部分引导下我度过了难关,此后我们一直在技术上,工作上进行交流,从他身上也学到了很多技术见解和管理理念。昨天,董离职了,相信他会有更好的明天。

3.生活中的好友——真正的hacker--钟mm(《破解——不破不逆》的作者)
         他不是妖娆的mm,他是一个破解,逆向高手,只是他很喜欢用美女做头像,很喜欢把自己破解的软件加上美女图片,所以叫他钟mm。钟mm是个倒霉的人,因为他的书的版权卖给了一家不知名的只会用淘宝来卖书的出版社,而之后机械工业出版社联系他时,他已经没有权利了,错过了出名赚大钱的好机会!我一般有网络方面或者操作系统方面的难题都问他,很少有他不会的,但更多的我们是聊社会,职场,生活上的问题,不便于透漏了......。是金子总要发光的,钟mm已于一年前离开了济南,去了一家开复哥投资的创新公司,直接被挖走的,看来人怕出名猪怕壮啊!

4.我的思想引导者——Chuanyi Zheng
          我曾经写过一篇文章中提到了一种项目经理,”技术牛X,为人和善:这种经理的特质是关注项目整体规划,进度,总是带着大家一起思考问题,讨论问题,愿意倾听大家的看法,否定你时也会给你充足的理由。你和他在一起没有敬畏,因为在工作中他更像你的一个朋友,他分配任务时并不是简单地拆分任务分给大家,而是依据大家的特长有针对性的分配任务,当你遇到问题时,他不会帮你解决,而会给你一个思路,给你一个提示,剩下的需要你自己思考,自己动手解决,在你工作的过程中他会鼓励你的成果,和善的指出你的缺点!“正是由于他的引导和帮助,我从思想上带动技术的进步,也和他学到了不少我认为很好的管理经验,我想我的博客的风格很大程度受他影响,我在博客上很少对一个技术点进行讲解,因为大多数技术点是别人已经论述过的(当然,某些方面也因为公司机密和我私人的创新能力有限造成),我更愿意把我学习进步的经验分享出来,在总结自己工作的同时,也希望能给一些新手一些帮助......,现在Chuanyi Zheng已经成了某研发部门的经理。

那些事:
    太多太多了,说两点我最大的感受吧。
    1.要善于交流,要想让别人了解你,理解你,这是最直接的方式;
    2.害人之心不可有,但是防人之心不可无,这个我想大家都懂的;

    以后希望出现更多的那些人,少些那些事,让自己的技术再攀高峰,让自己的生活更加精彩。

关于android自动化测试的那些

12-12

组长叫我对公司的一个框架进行单元测试,该主要是操作图形元素,包括图片、文字、手写笔迹等所有能看得到能显示的东西,其中过程非常复杂,层次结构比较深。rn 看了单元测试相关的东西,几天过去了,感觉还是无从下手。rn 一开始我在公司框架源码src包同目录下建了一个test源码目录,然后针对src里面所有的包,都在test目录下建立了同等的包的结构。rn 叫来组长一看,他说新建一个测试项目,专门用来测试这个框架。rn 于是我重新新建了一个Android test project,然后里面可以指定你要测试哪一个项目,于是选定自己要测试的框架之后,把开始上面建立的test下面的包的结构全部移植到该测试项目中。rn 于是我认为的单元测试开始了,我找到框架最底层的数据层来进行一些测试,比如一些对数据和文件的读写操作,然后我对每个数据类的每个方法都写了一个测试方法,然后都是用一些假数据来进行测试,运行,发现正常。然后就以为这就是单元测试了。rn 数据层的好说,现在碰到了数据层上面的图形渲染和组件交互层,这些里面大都都是对一些基本图形元素的处理,里面的逻辑以及关系我看不懂,只知道大概的架构。rn 现在得问题是,对于这些图形组件之类的东西?用这种单元测试的方式,该如何来进行测试呢?该测试什么呢?求高人指导! 论坛

Java 内存的那些

02-22

虽然Java屏蔽了一下内存细节,但是有时候,了解一下这些常识还是有好处的,特别是一些面试,总是盯着这些玩意不放手。把最近看的一些总结一下,欢迎跟帖拍砖。rnrnJVM启动以后,会分配两类内存区域,一类用于开发人员使用,比如保存一些变量,对象等,一类JVM自己使用,比如存放一些class类和描述。rnrn1,第一类内存区域又可以分为栈(stack)、堆(heap),还有一些静态存储区域,这部分的内存在JVM启动的时候,可以用参数进行配置:rnrn-Xms 初始堆大小,这个值不能太小,其初始空间(即-Xms)是物理内存的1/64,这个值不能太小,比如 设置了-Xms1m,运行可能会出现 rn Error occurred during initialization of VMrn Too small initial heap for new size specifiedrnrn-Xmx 堆大小上限,最大空间(-Xmx)是物理内存的1/4,如果程序中分配的内存超过了这个限制,那么会出现rnException in thread "main" java.lang.OutOfMemoryError: Java heap spacern 代码为:byte[] b = new byte[100000000];rnrn-Xss 线程栈大小,一般不用设置,JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。有时候会发现一下异常,rn Exception in thread "main" java.lang.StackOverflowErrorrnrn 原因一般是:rnrn public static int callMyself()rn return callMyself();rn rnrn 方法的递归或者死循环,导致栈空间不够用了。rnrn 栈和堆到底存些什么,很多地方都有讲到,这里参考下《Think in java》的,栈里存放对象引用、基本类型的变量等,而堆里面存放对象和数组。方法的执行是在栈上进行的,这一点可以通过异常的时候,经常会默认打印e.printStackTrace();栈信息得知。rnrnrnRuntime类有几个函数,我们可以简单的通过这几个函数,看看JVM中的一些内存信息,下面是转自网络上的解释。rnrnmaxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位,如果在运行java程序的时 候,没有添加-Xmx参数,那么就是64兆,也就是说maxMemory()返回的大约是64*1024*1024字节,这是java虚拟机默认情况下能 从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,例如java -cp ClassPath -Xmx512m ClassName,那么最大内存就是512*1024*0124字节。rnrntotalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有 内存。如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,直 挖到maxMemory()为止,所以totalMemory()是慢慢增大的。如果用了-Xms参数,程序在启动的时候就会无条件的从操作系统中挖- Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖。rnrnfreeMemory()是什么呢,刚才讲到如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操 作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是 freeMemory(),所以freeMemory()的值一般情况下都是很小的,但是如果你在运行java程序的时候使用了-Xms,这个时候因为程 序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可 能会有些大。rnrnrn下面我们来看看例子:rnrn Runtime rt = Runtime.getRuntime();rn rn info("Max memory: " + rt.maxMemory());rn long fisrt = rt.freeMemory();rn info("Total memory: " + rt.totalMemory());rn info("Free memory: " + fisrt);rn rn int size = 10000;rn rn byte[] b = new byte[size];rn long bL = rt.freeMemory();rn info("Free memory: " + bL);rn info("byte allocate Cost memory: " + (fisrt - bL) + ", Array size :" + size);rnrn 运行参数为 -Xms8m -Xmx32m (太大了可能看不出来),运行结果为:rn2011-02-22 10:28:01: Max memory: 33357824rn2011-02-22 10:28:01: Total memory: 8323072rn2011-02-22 10:28:01: Free memory: 7791752rn2011-02-22 10:28:01: Free memory: 7781736rn2011-02-22 10:28:01: byte allocate Cost memory: 10016, Array size :10000rnrn 33357824 <> 32*1025*1024(大约等于)rnrn 8323072 <> 8×1024×1024rnrn 最后看看10000长度的byte数组,分配了多少内存,大约为10016,这说明除了10000个大小为1字节的byte以外,还有16个字节其他的玩意。rnrn将byte换成int(4字节):rn2011-02-22 10:35:21: int allocate Cost memory: 40016, Array size :10000rn 与byte相同,也是4*10000+16rnrn将byte换成long(8字节):rn2011-02-22 10:32:47: long allocate Cost memory: 80016, Array size :10000rn与byte相同,也是8*10000+16rnrn再看看String数组:rn2011-02-22 10:34:40: String allocate Cost memory: 40016, Array size :10000rnString作为一个对象,分配的内存大小与int相同,说明了这台机器是32(4*8)位的rnrnrn最后看看Object对象,rn2011-02-22 10:37:02: Object allocate Cost memory: 40016, Array size :10000rn与String一样。rnrnrn2,第二类内存,我了解的主要是PermGen space,全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,SUN的JDK在GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误。rnrn 原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收。rn rn Permgen space的参数为-XX:PermSize=128M -XX:MaxPermSize=512mrnrn 论坛

没有更多推荐了,返回首页