在我们开始开发一个系统之前,我们需要先做一件事,就是技术调研,专业的叫法就叫 技术选型。如果技术选型选不好,就容易给自己埋下一大推坑,对系统的后续维护,版本升级都是很不友好的。那我们如何选择呢,成本和效率都是我们需要考虑的问题。
巨石应用
第一代单体应用,将所有模块打包到一起部署运行。
优点:易于部署、调试、运维方便,维护成本低
缺点:
SOA
SOA(Service Oriented Architecture),面向服务架构, 它是 一种设计方法,设计上通常是自上而下的,服务间松散耦合。通过ESB对消息进行转化、解释、路由,联通各个服务
优点:服务松耦合、可扩展。
缺点:
微服务
微服务是去中心化的扩展,将服务组件化,自下而上,切分粒度更小,每个服务独立化部署,根据不同业务自由组合。
优点:业务隔离、并行开发、易于运维、独立部署
java database connectivity 是sun公司指定的java数据库连接技术简称
创建数据库jdbc的过程
class.forName("com.mysql.jdbc.Driver").newInstance();
(为什么在加载驱动的时候,要用反射
反射的作用:通过反射可以使程序代码访问装载到jvm 中类的内部信息
1)、获取已装载类的属性信息
2)、获取已装载类的方法
3)、获取已装载类的构造方法信息
使用场景:在编译时根本无法知道该对象可能属于哪些类,程序只依靠运行时信息来发现该对象和类的真实信息
优点:提供java程序的灵活性和扩展性,降低耦合,提供自适应能力
答:JDBC 是sun公司提供了一组api接口,由数据库厂商自己实现驱动程序,不同的厂商驱动不同,使用反射并将 驱动名称写在配置文件中,则可以降低代码的耦合度,这比每次都new 一个新的对象要好的多
)
connection conn = DriverManager.getConnection(url,"user","password");
Statement statement = conn.createStatement();
String sql = "select * from table1";
ResultSet rs = statement.executeQuery(sql);
缺点:
1、频繁创建释放数据库连接,浪费资源
解决:数据库连接池
2、sql语句写在代码中,不利于维护
3、入参的映射,出参需要从结果集中遍历
优点:
原生jdbc的执行效率高
是spring 对jdbc的封装 JdbcTemplate处理了资源的建立和释放,比如数据库连接的创建和释放,statement 的建立和执行
使用步骤:
1、创建 JdbcTemplate 对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(DataSourceUtils.getDataSource());
2、编写SQL语句
String sql = "INSERT INTO product VALUES (NULL, ?, ?);";
3、使用 Jdbc Template 方法进行增删改
jdbcTemplate.update(sql, "iPhone3GS", 3333);
全自动化持久层框架
缺点:
1、hql 需要学习成本
2、高度封装,无法对原生sql进行优化
3、无法编写自定义SQL从而丧失了灵活活及更好的性能
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它封装了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。
优点:
缺点:
MQ消息队列简介
常见MQ
选择方法:
RPC(远程过程调用)运行期状态与流程
RPC框架核心技术点
远程通信框架对比
网关解决的问题:
网关分类:流量网关和业务网关
业务网关技术选型
路漫漫其修远兮,吾将上下而求索
参考文档:
Joel老师的ppt
mybatis-plus 我不用了_maple_son的专栏-CSDN博客_公司为什么不用mybatisplus