Java EE

程序员必知的 7 种软件架构模式

烂漫一生 提交于 2020-12-02 05:38:11
点击上方“ 逆锋起笔 ”, 公众号回复 pdf 领取大佬们推荐的学习资料 作者:Trung Anh Dang 策划:万佳 架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案。 一种模式就是特定上下文的问题的一种解决方案。 然而,很多开发者至今还对各种软件架构模式之间的差别搞不清,甚至对其所知甚少。 大体上,主要有下面这7种架构模式: 分层架构 多层架构 管道 - 过滤器架构 客户端 - 服务器架构 模型 - 视图 - 控制器架构 事件驱动架构 微服务架构 1 分层架构模式 最常见的架构模式就是分层架构或者称为 n 层架构。 大部分软件架构师、设计师和开发者都对这个架构模式非常熟悉。尽管对于层的数量和类型没有具体限制,但大部分分层架构主要由四层组成:展现层、业务层、持久层和数据库层,如下图所示。 一个很流行的 n 层架构示例 1 上下文 所有复杂的系统都会经历独立地发展和衍化系统各个部分的需要。出于这个原因,系统开发者需要对关注点进行清晰且条理分明的分离,以便系统的各个模块可以独立地开发和维护。 2 问题 软件需要以这样一种方式分割:各个模块可以独自开发和衍化,各自部分之间的交互非常少,支持可移植性、可修改性和复用性。 3 方案 为了实现关注点分离,分层模式将软件分割成各个单元(称为“层”)。每一层都是一组模块,提供了一组高内聚的服务。其使用必须是单向的

推荐一款 API 敏捷开发工具

自古美人都是妖i 提交于 2020-12-01 21:32:48
作者:棒锤 xie.infoq.cn/article/b5c3a339267e1351c6151b42a 初衷 用尽可能简单的方式,完成尽可能多的需求。通过约定的方式 实现统一的标准。告别加班,拒绝重复劳动,远离搬砖 特性 用于快速开发API接口。不再定义 Controller , Service , Dao , Mybatis , xml , Entity , VO 等对象和方法. 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库SQL执行语句,非关系型 MONGODB 查询语句.欢迎扩展 完全基于springboot2.x 作为springboot项目的stater方式集成,无侵入性,新老项目都能快速集成 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发 在线动态编译,无需重启,即时生效,多数据源操作 版本控制,历史记录比对,回滚等功能 远程一键发布到线上环境 线上POSTMAN调试,保存POSTMAN信息或三方文档的自动生成,历史调用记录存储,回塑 代码提示,SQL提示,语法提示 用户管理控制,安全性控制,以及历史行为记录 经过多次项目验证,传统业务型开发,服务端效率能够提升3-5倍,前后端联调提升效率1倍,测试效率2倍提升 传统开发步骤: 增加一张表 创建实体对象,映射这张表 创建API入参VO 创建API出参VO

java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

感情迁移 提交于 2020-12-01 21:31:26
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream at javax.mail.Session.loadProvidersFromStream(Session.java:928) at javax.mail.Session.access$000(Session.java:174) at javax.mail.Session$1.load(Session.java:870) at javax.mail.Session.loadResource(Session.java:1084) at javax.mail.Session.loadProviders(Session.java:889) at javax.mail.Session.<init>(Session.java:210) at javax.mail.Session.getDefaultInstance(Session.java:299) at javax.mail.Session.getDefaultInstance(Session.java:339) 出现以上问题主要是Myeclipse中自带java EE 5 Libraries中的javaee.jar包中javax下面mail包

spring transaction源码分析--事务架构

只愿长相守 提交于 2020-12-01 18:23:47
1. 引言 事务特性 事务是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务通常是以begin transaction开始,以commit或rollback结束。Commint表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据的更新写回到磁盘上的物理数据库中去,事务正常结束。Rollback表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的状态。   原子性(Atomic) 对数据的修改要么全部执行,要么全部不执行。   一致性(Consistent) 在事务执行前后,数据状态保持一致性。   隔离性(Isolated) 一个事务的处理不能影响另一个事务的处理。   持续性(Durable) 事务处理结束,其效果在数据库中持久化。 Java事务的类型 Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。 1、JDBC事务 JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 java.sql

了解了吗?程序员必知的这 7 种软件架构模式

百般思念 提交于 2020-12-01 14:52:05
架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案。 一种模式就是特定上下文的问题的一种解决方案。 然而,很多开发者至今还对各种软件架构模式之间的差别搞不清,甚至对其所知甚少。 大体上,主要有下面这7种架构模式: 分层架构 多层架构 管道 - 过滤器架构 客户端 - 服务器架构 模型 - 视图 - 控制器架构 事件驱动架构 微服务架构 1 分层架构模式 最常见的架构模式就是分层架构或者称为 n 层架构。 大部分软件架构师、设计师和开发者都对这个架构模式非常熟悉。尽管对于层的数量和类型没有具体限制,但大部分分层架构主要由四层组成:展现层、业务层、持久层和数据库层,如下图所示。 一个很流行的 n 层架构示例 1 上下文 所有复杂的系统都会经历独立地发展和衍化系统各个部分的需要。出于这个原因,系统开发者需要对关注点进行清晰且条理分明的分离,以便系统的各个模块可以独立地开发和维护。 2 问题 软件需要以这样一种方式分割:各个模块可以独自开发和衍化,各自部分之间的交互非常少,支持可移植性、可修改性和复用性。 3 方案 为了实现关注点分离,分层模式将软件分割成各个单元(称为“层”)。每一层都是一组模块,提供了一组高内聚的服务。其使用必须是单向的。层将一组软件作为一个完整的分区,每个分区暴露一个公开接口。 第一个概念是,每一层都有特定的角色和职责。例如

EasyUI+JavaWeb奖助学金管理系统[6]-登录功能实现

匆匆过客 提交于 2020-12-01 12:34:10
1. 本章任务 目前已经实现了数据库表结构搭建、项目构建、数据库实体类编写、数据库操作类编写。 接下来可以实现登录功能了,还是需要先登录,才能对各角色的功能页面进行相应的展示和管理。 PS:本章内容可以说是教程中最重要的1章,因为封装了前后端交互的方式,我们来一步一步详细讲解下,如果理解了本章,后续应该没多大难度了。 2. 开发流程 首先需要在登录页面开发登录表单,点击表单后跳转Servlet处理登录请求。 Servlet中调用UserDao判断是否登录成功。 如果登录成功,则将登录用户信息加入Session备用,并且跳转主页面。 如果登录失败,返回错误提示信息。 3. 开发登录页面表单 3.1 新建登录页 首先新建index.html作为登录页,注意我们通过ajax请求后端数据的话,实际上是不需要再使用JSP这种模板技术了。 <!DOCTYPE html> < html > < head > < meta charset = " UTF-8 " > < title > index.html.html </ title > </ head > < body > </ body > </ html > 注意编码采用UTF-8以支持中文。 3.2 引入EasyUI支持 由于我们使用EasyUI框架,而EasyUI又依赖于jQuery,所以我们引入相关的样式css文件及js文件。 <

中小型项目用SpringBoot太大了,要不要尝试一下Martian?

你离开我真会死。 提交于 2020-12-01 10:26:48
项目简介 Martian 是一个声明式API编程 (DAP) 的Java开发框架 以HttpServer作为 http服务,彻底脱离Tomcat这一类的Web容器和Servlet,同时也让项目减少了几个依赖 声明式API,让Controller变成了一个interface,降低了开发的工作量 拥有其他web框架 拥有的大部分功能,比如AOP,IOC,声明式事务,异常监听等 拥有自主开发的 半ORM持久层框架,并天然的集成到了Martian中 如果你不喜欢HttpServer,我们也提供了Tomcat启动器 项目生态 【分布式组件】 Martian-cloud 【网关及其他组件】 Martian-gateway 【更多组件】筹划中 官方文档 http://mars-framework.com/doc.html?tag=martian 使用示例 https://github.com/yuyenews/Mars-Example 项目特性 一、声明式API 只需要在你的interface上加上一个注解,即可对外提供一个接口,并且我们还支持传统的Controller写法 @MarsApi(refBean="要引用的bean的name")public interface TestApi { 返回类型 selectList(TestDTO testDTO); } 二、单表增删改查无sql //

maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

丶灬走出姿态 提交于 2020-12-01 07:07:23
转自:https://www.cnblogs.com/lmei/p/7190755.html?utm_source=itdadao&utm_medium=referral @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下) springmvc学习笔记(一) -- 从零搭建,基础入门 这一篇,在这些练习的基础上,将它们整合在一起! 搭建步骤如下 一、新建maven项目,配置环境,测试是否配置成功 二、整合spring+mybatis,添加ApplicationContext.xml文件,修改pom.xml,,并连接mysql,测试是否搭建成功 (如果想了解单独的mybatis项目,可参考 mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) ) 三、整合springmvc,添加springmvc-servlet.xml文件,修改调整,测试是否搭建成功 附:第一,二步详细操作步骤可参考 mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上) mybatis学习笔记(六) --

SpringBoot 源码解析 (二)----- Spring Boot精髓:启动流程源码分析

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-01 01:58:30
本文从源代码的角度来看看Spring Boot的启动过程到底是怎么样的,为何以往纷繁复杂的配置到如今可以这么简便。 入口类 @SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { SpringApplication.run(HelloWorldMainApplication. class , args); } } @SpringBootApplication我们上一篇文章中大概的讲过了,有兴趣的可以看看我第一篇关于SpringBoot的文章,本篇文章主要关注 SpringApplication.run(HelloWorldMainApplication. class , args); ,我们跟进去看看 // 调用静态类,参数对应的就是HelloWorldMainApplication.class以及main方法中的args public static ConfigurableApplicationContext run(Class<?> primarySource,String... args) { return run( new Class<?> [] { primarySource }, args); } public

SpringBoot框架的使用

你离开我真会死。 提交于 2020-11-30 23:27:57
什么是SpringBoot Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。大多数SpringBoot项目只需要很少的配置文件。 SpringBoot 特性 1 、创建独立的 Spring 项目 2 、内置 Tomcat 和 Jetty 容器 3 、提供一个 starter POMs 来简化 Maven 配置 4 、提供了一系列大型项目中常见的非功能性特性,如安全、指标,健康检测、外部配置等 5 、完全没有代码生成和 xml 配置文件 SpringBoot 优缺点 优点: 1 、快速构建项目。 2 、对主流开发框架的无配置集成。 3 、项目可独立运行,无须外部依赖 Servlet 容器。 4 、提供运行时的应用监控。 5 、极大的提高了开发、部署效率。 6 、与云计算的天然集成。 缺点: 1、 如果你不认同 spring 框架,也许这就是缺点。 SpringBoot 核心功能 1 、独立运行 Spring 项目 Spring boot 可以以 jar 包形式独立运行,运行一个 Spring Boot 项目只需要通过 java -jar xx.jar 来运行。 2 、内嵌 servlet 容器 Spring Boot 可以选择内嵌 Tomcat 、 jetty 或者 Undertow, 这样我们无须以 war 包形式部署项目。 3