Java应用开发的一条重要经验:先建立基础设施
一旦为应用建立良好的基础设施, 后续的开发就会变得容易而快速。这些基础设施包括:
1. 线程池的建立与配置; 在 JDK 并发库的基础上建立适合于应用的多任务接口和框架;
2. 外部系统服务的 HTTP 或 RPC 调用管理;
3. 数据库连接池、消息的订阅与推送、应用缓存等的客户端接口;
4. 通过IOC框架完成组件的注册、加载与管理;
5. 应用的整体控制流的构建、前后端的交互、工程的部署结构;
6. 使用 Spring , TestNG, Mock 等建立单测框架和编写单测 ;
7. 实用工具箱的加入, 通常包括日期、字符串、Json、日志、集合、Http调用或RPC调用等;
8. 异常处理与日志的规划和使用, 写哪些日志, 放在何处。
这些基础设施通常称为工程的“脚手架”,定义了一个工程的骨架。而应用逻辑则是组成工程的血肉。
架构之于开发的作用就在于:
1. 使常规编程任务更容易更快地完成, 减少工作量, 提升开发效率;
2. 使应用更加易于维护, 因为系统功能的实现具有一致性, 新手只要学会相关模式就能很快上手;
3. 解决关键问题。 比如高并发吞吐量需求的设计与实现。
软件开发需要面对很多变化, 但是也有一些事情, 一旦最初做得更好一些, 后来的工作可以变得更轻松些。
一旦为应用建立良好的基础设施, 那些具体的业务逻辑可以交由新手来完成, 而工作重点将转移到加固和完善这些基础设施,专注于应用的领域模型的整体规划和设计。
Java应用开发的一条重要经验:先建立基础设施的更多相关文章
- Android开发的16条小经验总结
Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助. 1. TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以 ...
- Java应用开发的一条经验
一旦为应用建立良好的基础设施, 后续的开发就会变得容易而快速. 这些基础设施包括: 1. 线程池的建立.配置: 在 JDK 并发库的基础上建立更适合于应用的并发使用接口: 2. 跨多数据源的 ...
- Android开发60条技术经验总结
Android开发60条技术经验总结,以下是全文: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有 ...
- Android 开发60条技术经验总结(转)
Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread
事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点.今天我们在多线程开发中,穿插进来这个线程.分别从线程的来由.原理和使用方法三个方面来学习事件派发线程. 一 ...
- java 软件开发面试宝典
一. Java 基础部分........................................................................................ ...
- Java项目开发中实现分页的三种方式一篇包会
前言 Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用 ...
- 敏捷开发中高质量 Java 代码开发实践
Java 项目开发过程中,由于开发人员的经验.代码风格各不相同,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维护,需要较大的测试投入 和周期等问题. 这些问题在一个项目组初建.需 ...
随机推荐
- C# 压缩文件 ICSharpCode.SharpZipLib.dll
效果: 代码只能压缩文件夹里面的文件,不能压缩文件夹. 压缩前: 压缩后: 代码: 需要引用ICSharpCode.SharpZipLib.dll public ActionResult Index( ...
- Linux下使用 xrandr 命令设置屏幕分辨率
最近在Linux下修改屏幕分辨率的时候,发现了一个非常有用的命令:xrandr 使用这个命令,可以方便的设置您显示器的的分辨率.尤其是当你使用了一些需要或者会自动改动您屏幕分辨率的程序以后. 您可以使 ...
- 【CF799E】Aquarium decoration 线段树
[CF799E]Aquarium decoration 题意:有n个物品,小A和小B各自喜欢其中的某些物品,一件物品可能既被小A喜欢又被小B喜欢,也可能既不被小A喜欢又不被小B喜欢.每个物品都有一个价 ...
- thinkphp---用事务处理批量操作
我们在进行一些业务逻辑的时候,难免会出现批量操作的问题,特别是批量修改操作,如果数据量大,总会考虑到批量修改到一半怎么办?所以如果使用事务来进行批量操作就会好很多,直接看代码: public func ...
- 持续集成之jenkins
代码部署规划 安装jenkins yum -y install java-1.8.0cd /etc/yum.repos.d/wget http://pkg.jenkins.io/redhat/jenk ...
- HOJ 2133&POJ 2964 Tourist(动态规划)
Tourist Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1503 Accepted: 617 Description A ...
- SPOJ IM - Intergalactic Map - [拆点最大流]
题目链接:http://www.spoj.com/problems/IM/en/ Time limit:491 ms Memory limit:1572864 kB Code length Limit ...
- POJ 2342 - Anniversary party - [树形DP]
题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...
- PyQT5-QCheckBox按钮
""" QcheckBox:单选框有两种状态:开和关.通常跟标签一起使用,用在一些激活或者关闭的场景 Author:dengyexun DateTime:2018.11. ...
- Buffer和cahce的区别
什么是Cache? 什么是Buffer? 二者的区别是什么? http://wenda.tianya.cn/wenda/thread?tid=595a1d68b3009fed Buffer和Cache ...