这是我的第一篇优快云文章。
我一直认为自己不是一个CRUD的程序员,我热爱写代码,我愿意搞清楚代码的每一个细节!从我毕业开始,然而,我已经工作将近5年了。
我毕业的时候,我就想,把大学4年的课程串起来。从硬盘开始,当一条指令被当作一个进程,从他被分配进程控制块,到分配内存,从他的状态变成运行态,被cpu取出,从cpu内的寄存器到内存,最终到显示器的每个细节搞清楚。
但是,当我自己第一次为这个过程画出一张草图的时候,已经是2018年了。16年开始工作,到18年,我经历了第一次离家,第一次找工作,太多的第一次让我感觉社会的复杂,也让我感觉疲惫。不过,还好,我扛下来了。
现在,我感觉,我的这张图已经开始往各个方面扩充了,我的一条指令已经编程了java语言。我会模拟一个java类经过编译后,变成一个class文件。当他被栈当作一个线程被运行时候,栈会访问堆里面的对象,对象有对象头,对象头会有锁信息,当他是一个多线程的程序的时候,当两个进程协作的过程中,我会通过锁来加代码。从而形成《操作系统》中,管程的概念。我也知道了用JVM的角度来了解java语言,比如,继承,我知道了怎么从技术的角度去看待多态的概念,而不是记住他!
上面是从内说,那么现在说说架构的东西,我自己实现了一个小的tomcat,实现过一个小型的hibernate,当然spring的aop我也手动实现过,当然不是使用invocationhandler接口实现的!虽然很拙略,不过确实让我体验了一把非CRUD程序员的快乐。当公司使用微服务的时候,我还使用springboot做过接口,优化过EUREKA!当然我之后,这个注册中心已经不用了。再工作中,我也实现了一个审批中间件。这个审批中间件可以用再所有带审批的环境中,OA,ERP,或者其他项目!当然,我们现在除了新的模块,还用SSH框架确实有点…不过,框架是无辜的,你能搞清楚hibernate,你就可以被称为大神,大神是不屑于回答java还是php是最好的语言的!
现在在我的图纸上,已经形成了包括redis,mq,等技术,我用他们记录日志,我用他们做负载均衡,我用他们做分布式事务管理。我知道现在我只是再书本上把他们学会了,总有一天,我会把他们运用到我的实践中。同时也包含了很多框架的设计原理,一些非常小的细节,有时候,很愿意思考volatile关键字在double-checklocking单例模式中的作用。
现在,我的图已经变成了一个世界,这个世界既有架构,也有jvm中每条java指令的执行细节。既有分布式,也有一条指令在一台实体机中的指令流向。
我感觉,我在专业上的上限或者目标的雏形已经实现了!以后的日子就是不断学习这些东西,在细节上下功夫,比如,框架,我会去研究它用了什么设计模式,用了什么新语法。中间件我会去研究它的承载量和它存在的目的与运用场景。
记得小时候,哥哥在幼儿园就已经定下了他的人生目标与方向,即画一套《七龙珠》这样的漫画,前几年见他的时候,他已经是某知名互联网公司拳头产品形象设计的小头目,这个时候,即使月薪4万,他的梦想依然没有改变。我希望,我这次我也能像他一样,找到人生的目标。
工作这些年,我也看过很多非技术类书籍,最多的大概就是心里学了吧。其实,也更多的了解了自己。程序员是心理问题多发的职业。我希望识别自己的心里防御,让自己和别人过的都好受一些!
最后,希望这是一个好的总结,也是一个好的开始!