程序员应该如何自我驱动,迅速获得成长?
当然,最终让我受不了开始决定写缓存框架的是因为我看到了我的组员写的代码与业务严重耦合,一会操作Redis,一会操作数据库。我发现了这个痛点,研究了一下Spring的AOP和他的@Transtional 注解如何实现以后,终于决定手写一个微型的缓存框架。基础思路就是通过可插拔的@CacheEnable(key=xxxx,timeout=xxx......)实现Redis缓存,完全不侵入业务代码。如果不用了,把注解在方法上移除了就好了。 手写这个Redis缓存框架使用了半个月,毕竟自己的技术能力还是有限,如何实现AOP和Spring集成,怎么抽象等等,都会让我每天都思考半天才下笔,甚至有时候一天写不了一行代码。 期间看了一本叫做《面向对象编程》的书籍,里面说,面向接口编程,依赖抽象,而不是依赖具体的实现......我突然就像打通了任督二脉。我在CacheHandler里面依赖了CacheStorage接口,而把RedisCacheStorage作为一个实现类注入了进去,因此,后来我这个框架可以同时支持redis,memcache,local。 写完这个框架以后,我总结了三个可抽象的点: 1. 序列化方式(jdk,protobuf,thift,json) 2. 脚本解析器方式(就是解析key的方式:比如,可以使用spel或者ognl:"userId"+#user.id ) 3. 缓存实现方式(redis,memcache)。 后来我从刘大的码农翻身公众号的一篇将日志系统的设计里知道了正交一词,大概这就是正交吧。最尴尬的是,原来Spring早就实现了,叫做SpringCache。汗。 (码农翻身注:那篇文章叫做《一个著名的日志系统是怎么设计的》) 后来的事情,我也不详细的讲了,大概就是从私有框架,换成了公共成熟的库,我们也终于用上了Dubbo框架。 而对我自己本身,我只是更加理解了一些之前无法理解的事情:Dubbo为什么能改一个组件的配置那个组件就换了一种实现。(面向接口编程)看Mybatis的源码也没那么困难了,两年前完全下不去手。当然,我也变得更加热爱技术了。 我的心得体会那就给大家分享一下我近两年来的心得体会。 1. 作为一个程序员,一定要懂得自我挖掘,而不是仅仅实现业务功能就好了,也不能干等着领导分配任务。 功能耦合了,写代码慢了,运维麻烦了,这些,都是潜在的需求,我们现在的加班,是为了以后不加班,是为了提高自己的效率,是为了不能原地踏步。 2. 一定要真正地学会一个技术,我在实际工作中,发现有的同学使用了一年的Git,竟然不知道如何把GitHub的项目拉取到本地,但是他会把GitLib的项目拉取到本地。 程序启动异常,有同学从网上找了一个jar包导入到了工程里,但是问他为什么把jar包导入到工程里代码就启动正常了,竟然不知道。 有的同学使用了一年的Maven,不知道mvn compile 是什么含义,只知道mvn package是打包。 这些,就是没有真正的学会了一个技术,仅仅是工作时机械式的使用了,仅仅是复制粘贴了,下一个项目再复制粘贴过来就行了,模仿着别人的代码写逻辑,这是学不到东西的。 我觉得,你一定会有时间去学习这些东西,网上大把大包的资料和教程。一定要知其然而知其所以然,一定不要一模一样的配置换了一种配置方式你就看不懂了。 3. 要掌握公司的技术栈,要刨根问底,公司用的什么rpc框架?怎么使用?原理是什么?公司用的nginx,nginx怎么配置的。公司用了配置中心,配置中心是什么?公司的负载均衡框架用什么做的,存在什么问题? (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |