从事.NET开发已经4个年头,经过十余个项目的学习与沉淀,终于有了一套自己熟悉并且相对完善的技术体系,面对未知,不再惧怕。期间完成并广泛用于公司项目的作品包括:
  1. abp的二次开发框架BodeAbp
  2. 基于owin的sso系统
  3. 全自动数据表格react与jquery版
  4. 通用的属性系统
慢慢的发现开发变得简单,感觉所有的业务需求都好像一种机械的重复,我似乎正在走进舒适区。然而技术海洋其深远辽阔远不是我腹中那三两滴墨水可以丈量,我要走的路还很长,恰逢公司五月启动了一个java平台网站的开发,而现有的技术团队都是.net,我们面临着极大的挑战。其中技术选型、开发框架的搭建都是我需要解决的问题,踏坑无数,又在坑里浴火重生。从.net到java,不是为了转型,而是丰富自己。
 

 
万事开头难,在.net技术体系中摸爬滚打了几年之后初次接触到java,甚至连编辑器怎么使用我都是懵逼的,好在有万能的搜索引擎,经过两天疯狂的资料查询以及各种莫名其妙的内心挣扎。最终的技术选型为:
  • 开发工具:idea
  • web框架:spring mvc
  • orm:mybatis及其增强工具mybatis-plus
  • 日志:slf4j + log4j
  • 缓存:redis
 
准备工作
准备工作主要是JAVA开发环境的搭建,怀念.net一键安装visual studio的日子,主要工作有:
  • JDK安装
  • JRE安装
  • Tomcat安装
  • idea的安装以及破解
  • maven安装以及国内镜像的配置
  • redis的安装
maven是java的包管理器,类似.net的nuget,前端的npm与yarn。
后来集成了dubbo服务框架,就还需要dubbo-admin的部署以及zookeeper的安装。
 
开发过程
首次使用java开发项目,过程中遇到的问题真的是多不胜数,一个xml配置异常就让我纠结两天都不能解决,最终不得不删除项目重头再来,整个过程中像这样整个项目建了删,删了再建经历5次左右终于有了一个可以使用的简易开发框架,可以给他们写业务代码了。
 
得益于.net工作对于web开发的认知,在经过了接近两周的阵痛期之后很快速的就上手了,遇到问题通过搜索引擎很快就能解决,很多思路是相通的,只是实现方式的差别而已,我们的开发速度也在逐渐的加快,期间也修复了不少开发框架中的BUG。
 
两个月过去,不断的踩坑填坑,不断的重构项目,开发框架慢慢的趋于稳定,然而我们由.net切换到java,肯定不是单纯的换个新语言体验下生活,更多的是为了java体系中那些成熟的分布式解决方案(比如dubbo、spring cloud等),然后又开始了新一轮的阵痛期,期间项目结构发生过巨大的变化,就顺便又进行了一次大的重构,但此时对于java我解决问题的能力已经要比之前好多了,集成dubbo的过程中,遇到的问题几乎都在两个小时内都解决了。
 
上周末,dubbo集成完毕,测试通过,开发几乎和以前一样。虽然是站在巨人的肩膀上搭建了我的第一个分布式应用,但是其完成时的喜悦依然是美好的。我也由此看到了以前搭建的.net框架的一些不足之处,算是另一种形式的反哺吧。
 
最终成果
整个项目结构在开发过程中不断的重构,重构过程中集成了dubbo服务框架,最终如下图所示:
cczcrv-core:包括各种抽象基类与工具类、缓存的实现等。
cczcrv-service-common:依赖cczcrv-core,包括所有服务接口、DTO、Model的定义。
cczcrv-service-xxx:依赖cczcrv-core、cczcrv-service-common,服务的实现。每个模块均可集群部署,可拥有自己的数据库,可单独做读写分离等。
cczcrv-web-website:依赖cczcrv-core、cczcrv-service-common,web层,调用远程服务,不依赖具体实现。
 
写在最后
我将业务代码删除之后将项目放在了Github,地址:https://github.com/liuxx001/cczcrv-java,有兴趣的可以看看。
 
参考项目:

从.net到java,记录下这三个月的工作的更多相关文章

  1. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  2. 记录下项目中常用到的JavaScript/JQuery代码一(大量实例)

    一直没有系统学习Javascript和Jquery,每次都是用到的时候去搜索引擎查,感觉效率挺低的.这边把我项目中用的的记录下,想到哪写哪,有时间再仔细整理. 当然,由于我主要是写后端java开发,而 ...

  3. 随便记录下系列 - node->express

    随便记录下系列 - node->express 文章用啥写?VsCode. 代码用啥写?VsCode. 编辑器下载:VsCode 一.windows下安装node.js环境: 下载地址 相比以前 ...

  4. 记录下UIButton的图文妙用和子控件的优先显示

    UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...

  5. java util 下的concurrent包

    ------------------------------------------java util 下的concurrent包--------并发包--------------------.jav ...

  6. 从零开始学 Java - Windows 下安装 Tomcat

    谁都想分一杯羹 没有一个人是真正的无私到伟大的,我们试着说着做自己,与人为善,世界和平!殊不知,他们的真实目的当你知道后,你会被恶心到直摇头并下意识地迅速跑开,下辈子都不想见到他.不过,他没错,你也没 ...

  7. 从零开始学 Java - Windows 下安装 JDK

    关于未来 "我要死在火星.在我死去的时候能够想着人类能有一个美好的未来--有可持续的能源,同时能够殖民其他的星球来避免人类灭绝的最坏可能." 官网下载 直接打开官网:http:// ...

  8. 从零开始学 Java - CentOS 下安装 Nginx

    早上下起了暴雨 闹钟还未响起就听到雨滴哗啦啦击打窗户的声音,被吵醒了.起床上班,在楼下的十字路口,暴雨大到完全看不清对面,两个穿着雨衣的交警站在路口中间指挥着过往的车辆,大家都慌慌张张.急急忙忙的打着 ...

  9. NLPIR分词工具的使用(java环境下)

    一.NLPIR是什么? NLPIR(汉语分词系统)由中科大张华平博士团队开发,主要功能包括:中文分词,词性标注,命名实体识别,用户词典功能,详情见官网:http://ictclas.nlpir.org ...

随机推荐

  1. ISO文件:AMD64和i386的区别

     下载kali系统时,出现两个选项:ADM64和i386,那么这两者的区别是什么?  i386=Intel 80386.其实i386通常被用来作为对Intel(英特尔)32位微处理器的统称. AMD6 ...

  2. jquery fadeIn用法

    $("#msgSpan").fadeIn("slow"); setTimeout('$("#msgSpan").hide("slo ...

  3. c#中foreach的一种用法

    以下定义的MyClass类中的addnum方法使用了一个数组型参数b: public class MyClass { ; public void addnum(ref int sum, params ...

  4. 马踏棋盘算法递归+回溯法实现 C语言

    r为矩阵的行,c为矩阵的列 将结果输出到当前目录下的results.txt. 结果将给出:1.是否存在路径使马可以按要求走遍所有的方格: 2.解的总数: 3.程序执行的时间: #include< ...

  5. 【LeetCode】98. Validate Binary Search Tree

    题目: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is define ...

  6. redis可视化工具redisClient

    下载连接:百度网盘 直接解压就可以用了

  7. VS2015 +Qt5 串口工具

    简单的小工具是VS2015 + Qt5.6.1实现的,界面部分是Qt实现,串口是封装的WinAPI,把串口收发模块封装成了个Serialport.dll 供Qt界面调用. 由于VS2015需要CRT运 ...

  8. SharePoint 2016 修改左上角连接

    SharePoint 2016默认会有左上角这样的一个功能.  估计都想把它改掉. 方法1: 打开,输入下面的命令,可将图中的sharepoint修改为想要的文字 $webapp = Get-SPWe ...

  9. 轻量级代码生成器-OnlyCoder 第二篇

    最近利用业余时间将OnlyCoder又重新打造了一番,使其使用起来更简单.更顺手. 相关的帮助文档也已发布了版本. 界面改版,UI采用了DotNetBar2组件. 还是先看下UI效果吧. 由于使用了  ...

  10. jQuery教程详解(一)

    PS--了解JQuery Query是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨 ...