从.net到java,记录下这三个月的工作

从事.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,有兴趣的可以看看。

参考项目:

http://git.oschina.net/iBase4J/iBase4J

https://github.com/judasn/IntelliJ-IDEA-Tutorial

时间: 2024-08-10 17:20:38

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

记录下我曾经那些认为的小想法

每隔一段时间,脑袋瓜子就会冒出一些自认为是小想法. 这篇文章就记录下我以前的一些小想法以及以后的小想法,一种想记录下来,一直也没有机会和时间.直到现在一琢磨,赶紧记录下来吧,也许很多时候的灵光一闪真是一个不错的idea.记录下来前面想起的和现在以及以后的idea,因此这篇文章会不断地实时更新,越来越完善. IDea1 2012年,刚步入高中的时候的第二学期,依稀记得那时候的智能手机还没有想象的普遍,在校门口当时接触了第一台智能机,一个高仿iphone 4s的手机,当时和同学一狠心每人买了一台.当

java多线程下如何调用一个共同的内存单元(调用同一个对象)

1 /* 2 * 关于线程下共享相同的内存单元(包括代码与数据) 3 * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. 4 * 对于Thread(Runnable target)构造方法创建的线程,轮到它来享用CPU资源时. 5 * 目标对象就会自动调用接口中的run()方法 6 * */ 7 8 /* ----------------举例子------------------- */ 9 10 /* 11 * 使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶

谷歌眼镜记录下的真实朝鲜

今年四月份,Kenny Zhu利用谷歌眼镜在朝鲜拍下了许多照片,记录了真实的朝鲜,这也是全世界首次使用可穿戴设备拍摄的朝鲜照片. 这些照片与普通相机拍摄的朝鲜照片并没有太大不同,但是由于是第一人称视角,拍摄位置更加随意,观众更能体会身在其中的感觉,仿佛是自己在亲身游览这一神秘国度. 在朝鲜,拍摄照片有很严格的规定,游客只允许拍摄反应朝鲜正面形象的照片,Kenny Zhu也是冒险拍了一些不被允许的照片,这也多亏了谷歌眼镜拍照不太引人注意的特点. 谷歌眼镜记录下的真实朝鲜,布布扣,bubuko.co

Winform程序当运行exe 停止响应时 如何记录下日志?

通常我们在写程序时会对程序中可能出错的程序段用try catch 捕捉获取.这样程序运行中一旦有bug.用户也能快速定位到错误段去了解出错原因. 遇到的问题: 但是遇到这样的情况 有时候没有用到try catch 时出错了.程序直接停止响应.这时候对于开发人员就比较伤脑筋.无法快速debug C#程序如何捕捉未try/catch的异常--不弹"XXX已停止工作"报错框? 解决方法: 1:在Main主程序中添加代码 设置 Windows 窗体线程和其他线程上发生的异常发生异常的事件处理的

这是关于FastJson的一个使用Demo,在Java环境下验证的

1 public class User { 2 private int id; 3 private String name; 4 public int getId() { 5 return id; 6 } 7 public void setId(int id) { 8 this.id = id; 9 } 10 public String getName() { 11 return name; 12 } 13 public void setName(String name) { 14 this.n

java基础二(阅读Head First Java记录)

写在前面的话 本部分是在语法基础上的一些内容,比如内部java函数库,继承多态等 “与”和“或”运算符 1.短运算符(&&,||) &&与,必须表达式两边都为true表达式才会为true,如果左侧为false了,就不会去计算右方的算式直接返回false,可以用&&来避免操作内容为null指针变量的情况if(refVar!=null&&refVar.isValidType()){} ||同理,如果左侧已经返回true了,不会再去计算右侧就直接返

Java记录 -69- Comparable与Comparator的区别

Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法.可以说一个是自已完成比较,一个是外部程序实现比较的差别而已.Comparator位于包java.util下,而Comparable位于包java.lang下. Comparable C

记录下自己(持续更新)

本身就是个怀旧的人,无聊的时间记录下自己生活的点点滴滴, 更无聊的时候看下喽!那就从衣食住行乐随便说一下啦.(个人观点)互联网时代了,说没有隐私也可以,说有隐私也行,就看别人怎么对你了,我不喜欢对事情 下定论,我觉着一切皆有可能.(想把衣食住行什么的分开来写,试了几次,格式总是不太好,也不太喜欢拘束,就随便加了个分隔线,写到哪就算哪了) --------------------------------------------------------------------------分隔线---

JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误

问题一:出现控制台坏的响应错误一Bad request 控制台出现错误如下: Bad Request request: http://hostIP:8983/solr/update?wt=javabin&version=1 解决方法: 出现以上错误的原因是,solr服务器上配置的Field和javabean提交的Field不能对应, 导致solr服务器找不到域,拒绝访问. 打开SOLR_HOME下的conf文件夹找到schema.xml文件,在其中添加对应的域. 例如以下代码添加了:title,