一个码农的工做总结

java
JVM的内存结构:包括虚拟机栈、本地方法栈、指令计数器、方法区、堆以及直接内存等,重点须要了解虚拟机栈和堆以及方法区。
class文件结构:实际工做中用的很少,不过了解这部分结构对理解虚拟机的工做机制有极大的帮助,强烈建议多了解,特别是常量池和方法列表的形式,不了解这些想升入学习java基本上是空谈。
线程状态:启动、阻塞、等待(分限时和不限时等待)、结束,了解这些状态表明的意义,以及哪些操做分别会进入什么状态,深刻的能够对比理解下jstack命令dump出的线程信息对应的线程状态。
JVM自带的命令:虽然有各类视图话的调优工具,可是真正在生产碰到问题的时候发现仍是自带的一些命令有用,比较实用的是jps、jstat、jmap、jstack。
垃圾收集器:了解基本的垃圾收集算法(标志清除、复制、标志-整理)以及各自的优缺点,哪些垃圾收集器分别使用的是什么算法,优缺点,新生代和老年代对应的垃圾收集器组合。
类加载和初始化机制:加载、链接(验证、准备、解析)、初始化、使用、卸载。
java语法:主要了解ReentrantLock和synchronized,concurrenthashmap和HashTable等区别,了解线程池的工做原理以及使用方法,了解队列,了解异常以及内部类和反射机制等等

MySQL
MySQL基础:MySQL的核心是数据库架构、索引原理以及字段性质。连项目中数据库的架构都不了解谈优化就是瞎扯淡,做为一个开发者来讲数据库优化的核心就是优化索引,而MySQL中索引数据结构用的最多的就是BTree树,某些场景下可能会用到hash索引来作优化。
MyISAM和InnoDB的区别:虽然MyISAM引擎离咱们愈来愈远,可是用MySQL了解此两者的某些核心区别是必须的。InnoDB支持事物、外键、行级锁,MyISAM支持索引前缀压缩和全文索引,基本上来讲大部分场景都是适合使用InnoDB,并且据业界大牛预测MySQL官方有计划在将来的版本中集成InnoDB引擎而且作深度优化,因此InnoDB是将来的主要方向。有个地方须要注意的是InnoDB是主键聚簇索引,因此若是主键不规律的话可能insert操做可能致使性能有大的影响。
另外做为一名开发者,数据库的事物类型以及传播级别也是极度有必要清楚的。


缓存
做为一个web应用的开发者对缓存的了解是必须的,目前接触和用的最多的就是memche和ehcache,redias也有了解相比memcache能够固话缓存内容以及支持多种数据类型,性能上彷佛目前为止也没啥定论,目前本人也没有使用过redias不作过多评论。一些十分频繁的访问能够考虑用下ehcache作个二级缓存,由于它是本地缓存。另外memcache的内部机制(如缓存非配制剂,以及过时机制也有必要了解)。

java

linux
对linux我本人以前也有过比较全面的学习,也学习过一段时间的shell编程,可是由于工做内容的关系,目前脑子里记得的也就是一些linux命令了,目前由于时间和工做内容的关系没有刻意去复习相关的东西,工做中基本够用,不懂的稍微百度下基本上也是没问题的。

linux

通讯协议
另外对tcp、udp这类协议的区别也要有个基本的了解(前者面向了解须要屡次握手,稳定可是耗费资源多)web


大数据算法

有一段时间对大数据很狂热有想往数据分析方向发展的欲望,当时比较系统的学习了下HDFS、MapReduce以及HBase,从原理来讲hadoop实际上是个很简单的东西,由于设计者封装的很好使用来讲不难。之因此搞hadoop能相对普通java开发待遇高一些,我想主要是这个是个新兴的东西的确解决了一些平时很难已解决的问题,其次招hadoop开发的都是些比较好的公司它们给的待遇自己就比普通公司的要高。因此表面看起来搞hadoop的待遇要好些。个人感受是hadoop的主要优点在于大数据分析,要在数据分析这个行业有所建树算法是要有比较好的底子的,而我明显不具有相关优点。因此在对hadoop有过一段时间的狂热后慢慢的重心又回到了现有的工做中。shell


一点规划
数据库

计划在将来一两年从架构的角度从新审视和总结下过往的工做经验。同时也系统的学习下项目管理的基本理论。编程


后记
缓存

说到最后技术是用来作事的,技术是死的人是活的,工做几年也见过很多人事升迁,技术当然重要可是为人处事更是一门永远须要学习的科目。技术之路是没有尽头的,时间精力有限找准本身的定位很是重要,最后分享一篇对本人颇有启发的文章,与诸君共勉,我本人的职业规划已经愈来愈明晰了,但愿还在迷茫的同志们都尽快找到最适合本身的发展计划。http://xjsunjie.blog.51cto.com/999372/1378547数据结构

相关文章
相关标签/搜索