9 回答

TA贡献1963条经验 获得超6个赞
在java领域摸爬3年之际时,跟你有很多共鸣,
当年,杂七杂八的各种开源第三方工具类用了不少,广而不精,
当年,也纠结如何提升自己, 纠结该如何走下去。
我想继续做技术,于是我问了自己几个问题:
1.既然既然会了很多各种各样的工具,是否对工具的使用有自己的总结?
于是,我开始写博客,记录自己的学习成果,
写一些工具的测试代码,以便以后使用时,拿起来就用
2.工具的使用都整理了,那么是否整合出自己的一套开发框架?
然后我自己就整合了strut2 + spring2.5 + ibatis,
随着技术的发展,我重新整合了velocity + springmvc + spring3 + mybatis
包括工程架构:maven结构的工程,优化打包方式(轻松区分本地、测试、上线环境)
使用代码检查工具:Findbugs CheckStyle
做到团队代码风格基本一致。
3.既然整合开发机构,是否能有套生成器,生成基本代码(增删改查)?
然后我就使用基础的jdbcapi读取数据库表信息,使用velocity 模板引擎,开发了一套生成器, 给团队工作效率带来了质的提高
4.以上都有了,如何做分层开发,动静分离?
然后,我就将架构中模板引擎部分velocity 去掉, 直接使用html, 动态数据使用异步获取,动态数据服务端返回json, 页面开发人员(会css,js)和服务端开人员各司其职,再一次提高了开发效率
4.当访问量上来的了,发现页面动态数据访问还是有些慢?
然后在不做负载均均衡的情况下, 学了jvm的内存机制和gc调优,最大的优化单机能力
再然后。。。先省略,看到这里我打算写一篇小博客^_^

TA贡献1887条经验 获得超5个赞
楼主用到的技术不少,但是光停留在表面的应用还不够,最好能了解一下各个技术的原理,我记得我上大学的时候,老师就说学编程,先把Linux源代码读一遍。所以对java技术要知其所以然。还有设计模式也很有用。

TA贡献1725条经验 获得超7个赞
假如没有一个明确地方向,试着考一下系统分析师的证,过程中地一些科目也可以当做程序员地指导方向。考证地过程中,凡是涉及到自己从未实现过的算法,都使用Java实现一遍,自己建一个Git账号,保存好这些资源。
5年Java开发,共勉。
其实我说的意思,考证是一个过程,而不是你地目的。过程中,需要去学习专业英语,离散数据,项目管理等知识;而这些知识也许就是我们现在前进地阶梯。比如Lucene核心离不开图论相关知识;比如一些智能算法,也离不开向量运算相关知识,而要学习前沿地计算,外语是必需地;比如标准地项目流程是怎么走的,怎么把握项目地风险,项目地成本计算等等,都离不开项目管理相关地知识;等我们学好这些知识后,再考一下证,接下来你需要地是一个证明自己地平台;有些机会是留给有准备的人的。从另外一个角度讲,这个证是目前中国计算机范畴内承认高级工程师的3大证之一,拿到证后每年应该也有不少补贴。还是那句,共勉吧!

TA贡献1796条经验 获得超4个赞
一个既简单又不简单的方法,逼迫自己用开源软件的设计思路,代码规范,变量命名习惯去写自己项目,即便是业务导向的系统。久而久之,对于再高深的东西,都不杵了。
和开源软件比较一下自己的代码,如果能一眼看出完全不同的风格,说明还差的很远。

TA贡献1797条经验 获得超6个赞
楼主我和你情况差不多,始终停留在用层,都是为了解决问题而用的,虽也坐了有几年,然进步小很小,那些在项目中用到的新技术,一个新人也能很快掌握。而几年来成长的不是技术而是对业务逻辑的熟悉……说实话这不是我想要的,坐2年成长等于2个月,为何如此?1.我也不知道我该怎么做,2.大量时间都在业务逻辑上。但是我现在似乎找到了方向,希望能给楼主点帮助或启发:现在我们学习的是高级语言,为何不去探索下高级语言怎么来的呢?难道没这好奇吗?我们为何不自顶向下探索一下呢?当然你要做好准备,这是修的内功,不是象会用那样立即见效,其间辛算谁做谁知道,而且别人不一定认同你。我觉定走下去?你呢?仅作参考。

TA贡献1773条经验 获得超3个赞
除了非常赞同一楼的答案外,我还想到另一个道路。
公司有一个系统,由客户填报数据并能查询和汇总。客户早期有9张数据填报报表,于是就有了9个持久化对象和数据库的表,并增加了日志记录*9,后来变成了43张,于是开发团队就拼命补上了后面的表,于是变成43个对象和表,后来系统运行了5年,每年有200w数据,于是每年填报的时候就要从近千万数据中找几十万数据,非常慢。
问题出在设计上,应用系统的设计是综合考虑客户的变化、系统的效率、开发人员的能力、可接受的成本和进度、以及很多因素的综合体,充分考虑和平衡才能得到比较理想的结构和灵活性,现在每年如果有报表需要修改列,于是要很多判断当前年是否有这一列,并且大量页面需要修改,如果能充分考虑这些变化点,折中出现一些可配置和自动生成的表,可以大大缓解系统现有最严重的问题。
所以这就是我指的另一条道路,设计。设计不是简单的业务分析师成果的再现、把用户的流程文件对象化,需要思考和经验,不是说客户说不变就不变,而是真正考虑一项变化的发生概率和带来的消极积极影响。
这是平时有思考的习惯和经验的积累,到后面就共通了,学生信息管理系统、图书馆管理系统,到合同订单管理系统,到绩效考核产品等,从小到大的各种规模在你心里都有一个项目的答案和一个产品的答案。
添加回答
举报