为什么80%的码农都做不了架构师?>>>   

临近2013年底了,这是一个稀松的周末,一早起床,迎 着窗户外直射的阳关,尽管身处天朝南方重镇,冬天的这里依旧有点料峭,我有种要写作的冲动,特别是为我的技术生涯做点阶段性的概括,另外一点需要特别让我 高兴的是,我生命中的第一个小宝宝很快就降临了,作为迎接他的一份礼物,我打算分享我这么些年来自己的一些程序人生,特别是我一直在倾注心血的“乐高框 架”设计思路,经过几年不断的完善,目前起内核程序基本设计完毕,回想这一路的设计思路,还是唏嘘不已,庆幸自己一直坚持,才有现在的小小收获。
     
       在编写之前,我想解释一下 为什么采用 “乐高” 作为内核的命名,其实就是美国的一个玩具品牌,他设计的玩具不仅仅丰富了全球的儿童,也丰富了很多老顽童的世界,利用乐高积木可以搭建你任何想象中的物 体,在我看来,其本质就是微积分的现实应用,现实中的任何物体,经过规则的切割之后,都可以看作是乐高积木的原型,在“微观”的世界,也许你仅仅是一个积 木,但是数以千计的积木进行了有规则的堆砌,则可以还原我们现在的世界。我设计的框架内核也是秉着这一核心思想,所以,我用借用 乐高 这一积木的品牌用于我小设计的名称。也寄托于希望我的框架如同乐高积木一样,能自由组装成任何想要的程序流程实体。

---------------------  第一章 混沌世代 ---------------------------------------------
       首 先我要讲解的是 ”乐高“ 内核的由来,记得那时还在广州东软金融部,就职于**网银开发团队,面对**网银那种扎乱无章的程序代码,不断的在做功能新增量式开发,那个时候的我总是 思索,为什么程序架构如此的难以扩展(不排除历史原因的限制),为什么一个简单的流程需要修改代码,当时主要的是业务流程的改变应发程序的不断修改,我一 直在思索如何避免这种情况的发生,直到有一天,我在apahce 网站 看到了 一个很小的责任连框架 chain,让我的思路一下子清晰很多,原来程序可以这样子编写,随后在负责的在线黄金交易中,果断的引入chain 框架进行开发,在一期的时候,团队人员都习惯这种模式,大家也是一直在摸索,但是到了项目的第二阶段,开始凸显他的价值,因为流程是配置出来的,而非硬编 码干预。。。。。当时的引入的责任连是完全基于chain,没有分支,仅仅一个个配置的可复用的程序片段,用xml文档对整个流程进行的描述。这是 ”内高“内核最开始的萌芽,可以称为是 混沌 时代,因为我自己也不知道这玩意到底如何更好地使用,当时的感觉 如同一个儿童 忽然发现一个新奇的玩具,带着一份好奇的心理去玩弄这个玩具,当时就是这样子的一种场景。

---------------------  第二章 盘古时代 --------------------------------------------- 
     盘古时代,顾名思义--开天辟地:很快在网银的第二个项目开始了,《工时统计系统》,这是完全基于公司内部管理定制的系统,该系统是利用工作业余时间打 造,伴随这个项目的逐步上线,我对 责任连模式的开发有了一个更好的认知,从而有了改进他的想法,如何支撑流程分支的配置(通俗讲是规则引擎),当时由于该项目是自主研发,引入Spring 框架作为底层的支撑,让我节约了大量的研发精力而专心我的架构精细化,记得那时的spring推出了 2.5版本吧,里面有一个章节是 spel 的引入,基于简单表达式的动态解析,这不就是恰好是我想要的东东吗?记得在这一个阶段里,内核框架做大的一个突破就是,流程分支不在基于代码,而是基于配 置实现,其底层依旧采用chain作为实现,当时该框架固有的诟病已经有点突出了,扩展性不好,每个节点只能基于他的接口,但是 引入 spel 这个东东,足以为”乐高“内核注入新鲜的血液,记得当时,我一度计划选用 groovy 语言作为 规则引擎的实现,可惜在当时该语言在JVM的世界里,尚是一个挑梁小丑,所以没有大胆引入,选用SPEL可以与Spring框架更好地结合,这也算是利弊 均衡吧。记得当时在分享 工时系统 的技术实现,在网银团队的很多同事给出了中肯的意见,尽管当时觉得很完美,对他们的意见不是很采纳,但是还是修正我设计 乐高 内核的下一步动作。让内核向这更加完善的易用的方向发展。

---------------------  第三章 蛰伏时代 --------------------------------------------- 
      可惜好景不常,随着东软的离职,”乐高“内核也伴随着离职事件进入尘封期,那个时候忙搬家,从广州到深圳,忙着熟悉新的环境,新的同事以及新的工作岗位, 这次迎来的是我职业生涯中的一段 低落 期,我入职了深圳平安科技公司,从事保险行业的软件开发与维护工作,对于公司我不做评价,每个人的宿命不同,我与公司的那种”罐装劳动力“氛围格格不入, 每天就是等待工作任务,完成任务,提测代码,在等待下一个任务的分配。我就是一个庞大生产线上的螺丝,不需要创新,不需要个性,只需要按部就班的完成任 务,也许在那样的氛围下,压迫之下的迸发,当时在没有更好地选择下,我重新回到我维护的内核框架,每天上班除了本质工作就是在思索 内核的设计,记得当时买了一包A4打印纸,基本都被我用掉了,因为在公司不可以太张扬,所以每天的设计思维就是利用打印纸去不断的丰富,下班回家在编码实 现,这个阶段的内核有了一个质的飞跃,完全摆脱了 chain 框架,开始自己建立 基于 程序流程图的 流程建模,以及流程的流转,记得当时为了实现一些 基本流程的的可配置化,购买了 所谓龙书 编译原理,那段时间,业余时间过的很充实, 阅读了 里面大量的章节,特别是针对 for  if  if-else  switch try-cache-final 是如何编译执行指令以及指令运行时的堆栈设计,这些统统引入到我的内核中,这个时期的内核每天只能用于自我模拟实现,无法投入生产,感谢那段苦逼的平安工 作,一度让我看到了生命的惨淡,但是,也就是因为这段时期的惨淡,让我心无旁骛的去升华内核,庆幸的是我在平安的工作经历仅仅之后半年,半年后,带着给我 的内核框架进入现在的公司。

---------------------  第三章 破土时代 --------------------------------------------- 
      进入现在的公司后,职位是 架构师职位,第一件事情就是引入全新的开发框架,并在公司内部推广,尽管我自己模拟了大量的业务流程实现,但是投入到实际应用中,还是遇到不少的问题,这 些问题不是来自业务流程的复杂性,而是我这套内核的思维灌输与培训上,这种模式很少被人接受,特别是熟悉ssh 等框架人而言,这里我要感谢公司领导的大力支持与肯定,让内核框架逐步的推广与发芽,就目前写文章时,也恰好一年的时间,在这段时间了,内核是我架构动力 的源泉,可以灵活应对各种的改动与扩展,都可以有惊无险的平滑过渡,到现在为止,已经成为一个稳定的内核,支撑公司产品的研发,然而使用的过程中,也让我 对程序有了进一步的改进,这种改进就是引入插件机制,这个来由于公司数据层的策略,从jdbc 到 webservice 成为访问数据层的渠道,为此我不得不一再修改内核扩展标签,再后来,干脆把流程引擎 与 扩展剥离出来,成为用户自我定制的基于插件化的内核,现在的内核,用户可以按照自己的需要来扩展任意的标签(目前在公司尚未开放,需要一个过程,该过程应 该仅仅针对架构组开放),随着使用,也不断的给内核提出新的挑战,到目前为止,我自己在家里重写了内核,对内核进行更加清晰的模块划分,引入异步流程监 听、重写编译寄存器等。
    
      ---------------------  第三章 开源时代 --------------------------------------------- 
      到目前为止,我在家里优化的内核已经接近完成,他仅仅是个内核,不是什么框架,例如spring 是一个框架,但是他的内核是 IOC 容器,Eclipse是一款IDE 但其内核是 OSGI ,我在这样类比,就是再次定位 内核的定位于使用,他仅仅是一个内核,一个程序流程解析器,一个扩展自定标签的内核代码,他不是什么框架,在稍后的时间段里,我会陆续把我的设计思想分享 到我的 技术 blog 上,希望有兴趣的人士,持续关注。blog地址:http://my.oschina.net/qfhxj

-----------------------------  写完这篇文章 截至时间 2013-12-21 12:01  买菜做饭,生活还是放在第一位的

转载于:https://my.oschina.net/qfhxj/blog/186462

#技术分享# “乐高”内核的诞生相关推荐

  1. android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...

    [技术分享]Android内核漏洞利用技术实战:环境搭建&栈溢出实战 2017-08-14 16:22:02 阅读:0次 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn ...

  2. 【技术分享篇】Linux内核——手把手带你实现一个Linux内核文件系统丨Linux内核源码分析

    手把手带你实现一个Linux内核文件系统 1. 内核文件系统架构分析 2. 行行珠玑,代码实现 [技术分享篇]Linux内核--手把手带你实现一个Linux内核文件系统丨Linux内核源码分析 更多L ...

  3. linux内核视频 网易,网易视频云技术分享:UML调试Linux内核

    原标题:网易视频云技术分享:UML调试Linux内核 网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点 ...

  4. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  5. 龙芯架构应用迁移技术分享——搜狗输入法应用迁移

    技术引领创新,用"芯"构建生态,第一期龙芯生态论坛将于2021年3月12日(周五)盛大开讲!龙芯生态论坛作为龙芯生态建设的重要技术交流窗口,将汇聚龙芯资深技术专家及行业生态伙伴精英 ...

  6. freescale imx6 编译 linux ltib,TQIMX6Q技术分享——LTIB安装配置(转)

    TQIMX6Q_BASEC开发板是天嵌科技在2015年重磅推出的顶级开发平台,采用飞思卡尔的I.MX6Q芯片,真四核运行,1G Hz主频,2G DDR3内存,8G EMMC FALSH.TQIMX6Q ...

  7. 一个研发团队是如何坚持7年技术分享的?

    --"所有分享都是有意义的" --"在PingCode,人人都可以成为分享者" 这是PingCode研发团队的分享精神,而这样的精神,在过去7年中已经闪耀了10 ...

  8. 2022新年重磅技术分享|深入理解Linux操作系统

    hi 大家好,这里是极客重生,愿2021所有的遗憾都是2022惊喜的铺垫,前路浩浩荡荡,万事尽可期待,祝大家新的一年付出都有收获! 这次分享的主题是: 如何掌握和精通一门技术 如何学习和攻破操作系统 ...

  9. DockOne技术分享:十个问题带你了解Windows Docker

    DockOne技术分享:十个问题带你了解Windows Docker [编者的话]微软在5月份Build大会上的官方说法,说是这个夏天会放出Windows Server Container的测试版.也 ...

最新文章

  1. 如何在您的笔记本上搭建View 演示环境 -5.配置View Connection Server
  2. 0x80070003系统找不到指定路径_DeepFaceLab错误:DLL Load failed 找不到指定模块!
  3. 多线程必须用到的线程池(什么时候用多线程)
  4. 华为主题锁屏壁纸换不掉_快来看看华为与荣耀手机的这16款主题!别一直用系统默认主题啦!...
  5. 这几家5月还在急招.NET,都是30k以上!
  6. LSGO软件技术团队爬山活动
  7. Python递归文件夹遍历所有文件夹及文件
  8. mysql 的client_mysql(一)-客户端Client相关
  9. 【智力题】—— 猴子分桃
  10. 操作给定的二叉树,将其变换为源二叉树的镜像。
  11. ES6笔记上(深入浅出ES6—阮一峰)
  12. 12306验证码识别初尝试(1)
  13. 创建数据库报错--MySQL server is running with the --super-read-only option
  14. AbstractQueuedSynchronizer同步队列与Condition等待队列协同机制
  15. STM32CUBEMX_SDIO和FATFS_读写SD卡
  16. 【OpenGL】绘制一个点
  17. 送一朵玫瑰花给女朋友
  18. 转:PL/0语言词法及语法分析系统的设计与实现
  19. CAD对块的文字操作
  20. Web前端框架学习—Bootstrap

热门文章

  1. Java之 javaObject与jsonString的转换
  2. C#方法中参数ref和out的解析
  3. 实验四:汇编代码调用系统调用的工作过程
  4. XML,Object,Json分析转换Xstream采用
  5. android Adapter使用详解
  6. photoshop中把图片颜色变成透明
  7. dbeaver连接mysql 驱动jar_Jmeter(七) 从入门到精通 建立数据库测试计划实战lt;MySQL数据库gt;(详解教程)...
  8. 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
  9. java -c_java% c
  10. jar docker镜像不能启线程_使用docker部署SpringCloud项目