java后台开发 技能表(来自光云科技)
2015-08-30 16:43
363 查看
后台开发技能树
通用技能
品质
一个品德不正的人,最终将受到命运的惩罚品质正,这个人一般不会差到哪里去,在同类中一般是更受人欢迎和更容易成功的人
沟通、反馈、责任
一个无沟通能力的人,要么是天才,要么是不可爱的人及时反馈,不要等到问题很严重了才反馈出来
#今日工作#、周报,它的意义在于你反馈出你的状态
工作有大小,责任心无大小
成长、态度
小事心态千里之堤,毁于蚁穴,所有基础的细节都需要注意。
所有能做高级事情的人,基本上都能把小事干得漂亮
基础不牢、地动山摇
只有把小事干得漂亮,才能赢得勋章,勋章积累信任,信任赢取机会,机会获取成就
提问的艺术
不要遇到问题就提,先思考,再提问
任务拆分
成长过程会经历:能力越大、责任越大、事情越多
思路(凡事要做好计划推动自己)
拆分细化为多个点
排好优先级
加入时间维度:何时能完成
是否需要寻求帮助,谁能帮你,自己单干?
任务是否可以切换/并发
自己欠缺什么,立马发现
专业技能
HTTP
http抓包调试PC
chrome开发者工具
firebug
IE
fiddler
手机(怎么抓取自己的手机出来的http)
http api 模拟工具
chrome 插件DHC
http常见状态码含义,甚至更复杂的状态。
301
302
e-tag、last-modified,keep-alived
http权威指南(不一定要全部看完,可以带着疑问看,了解越多自然是越好)
p3p头有什么用
前端
原则上是鼓励全栈工程师,对于后台工程有时候自己想玩个小东西,不会搞页面也挺苦恼的。常见的前端框架应该要玩过一些东西,jquery、angularjs、jquery-mobile、bootstrap等等
jQuery
ECharts
Angular JS
Bootstrap
常见的模板实践过一两个(smartAdmin\INSPINIA)(做一些小工具没有问题)
前端里依然会有设计,比如MVC,分层设计等。什么方案更优雅?这个问题应该好好思考。
JAVA
java集合能相当熟练java并发包运用得当,知其原理
apache-commons各种常用api了然于心
java io熟练
网络通信,http、websocket、tcp。使用场景、常规使用熟练
dubbo
消息队列 metaq、aliyun ONS、aliyun MQS
ray-task
ibatis/mybatis
cobar-client、分表分库思想
netty
spring玩得转,各种细节与机制需要清楚
jvm基础理论知识:内存管理、gc、线程分析、bin目录下的工具。要能用这些基础理论解决实际问题
jvm 高级工具 btrace,知其一二更是甚好
LINUX
常用命令top (top -H)
netstat
iostat
操作系统的基本了解
并发
生产者消费者master-slave模式
线程池
disruptor
http://ifeve.com/ (并发编程网) 不错的学习资源
调度
ray-taskspring quartz
3. ScheduledExecutorService
timer
crontab
分布式调度的核心思想,值得好好思考
数据结构序列化
jsonprotobuf
rmi
jdk serializable
hessian
还有很多,这些方式各有哪些优缺点,使用于哪些情况?不要过度优化,够用,知道怎么优化就可以了
DB
数据库事务概念mysql binlog 机制
mysql常用的数据架构模式,比如MS,多master。不同的模式有哪些优缺点。(目前我们使用的aliyun的RDS,需要了解一下aliyun DRDS,aliyun已经为我们封装了很多模式)
mysql常用分析命令 desc、explain,了解sql的执行计划,并能进行优化
redis
算法
常见的经典算法不断问自己有没有更优解?
架构设计
架构设计并不是一件很难的事情,人人都可以做到,需要保持设计思维。理解计算机,以及计算机各个部件,再复杂的架构设计都是围绕这些部件展开的,推荐阅读:http://book.douban.com/subject/5333562/
永远不要过度设计
经典设计思想
低耦合、高内聚
生产者与消费者(master、slave)
怎么设计
计算机各部件资源:
CPU
多线程
线程并不是加得越多越好,那么加到多少合适?
串行调用、并行调用
内存
缓存加速
硬盘
SSD增加读写能力
集中式文件管理
java怎么读写,更快,更适合你的应用场景
带宽
传输对象大小
哪种序列化方式更适合
网络
长连接还是短连接
http拉还是websocket推
分布式
无状态
存储
集中式文件系统
集中式session
集中式cache
计算
SOA(dubbo)
restful api
任务调度
用监控和测试数据验证自己的设计
好的设计一定是优雅的
好的工具
IntelliJ IDEAsublime text
webstorm
印象笔记
优质资源
GOOGLE 所有开发人员都应该学会怎么使用google码农周刊 http://weekly.manong.io/
并发编程网 http://ifeve.com/
GitHub https://github.com/
Stack Overflow http://stackoverflow.com/
csdn iteye oschina
好的书籍
深入理解计算机系统 http://book.douban.com/subject/5333562/深入理解java虚拟机 http://book.douban.com/subject/6522893/
待续...
最重要的能力
以上的内容都很重要,但是我认这还不是最重要的,上面的东西更像工具或外功,真正重要的是你能根据实际的场景使用合理的工具配合上内功(设计能力?算法?业务逻辑规则?)解决问题。可能了解一大堆工具,心法但是面对实际问题,你不知道该出哪一招,你不知道哪招更适合迎战对手,我经常会用做数学题来打比方,上面提到的东西更像数学公式,在不同的阶段我们都会学习和了解很多数学公式,但是真正考试的时候,每道题目不会提示你应该用哪个公式来解答此题。很多时候往往看了答案后才捶胸顿足原来这么简单我怎么没有想到。真正需要很高技术含量的大题也许的确是只有小部分人才能做得出,但是如果你能把前面的正常题目一道道做好,我想应该也可以考一个超过觉大多数人的分数。所以真正最重要的是能对上面提到的内容融汇贯通,什么时候应该用什么样的公式解题。要达到这种阶段,需要很多的练习和实践,需要付诸很多的精力,多折腾多磨练,我想并不会很困难。部分内容参考:http://blog.knownsec.com/Knownsec_RD_Checklist/v2.2.html
相关文章推荐
- 全文检索 lucene 4.7以上的版本只支持jdk1.7以上的 不支持jdk1.6版本
- 正则表达式-JAVA
- JDK7之新的遍历目录API
- Java Servlet Example
- 【Java】基础语法
- spring 中 isolation 和 propagation 详解
- java 类加载机制
- 刚开始学习JAVA语言程序,做第一个JAVA程序
- java字节码及ASM编程
- Mac安装有jdk1.6和1.7 环境变量已经设置为1.7,但是mvn -version仍然显示的版本1.6
- Java I/O输入输出流
- java输入输出流
- The Java EE 6 Tutorial Finalizing a Servlet
- Spring组件扫描<context:component-scan/>使用详解
- SpringMVC基础-@CookieValue
- java -- 提交乱码汇总
- SpringMVC基础-@RequestHeader
- java中throws和throw的区别和用法
- Java 编程
- java 时间计算