Druid

在实施分布式服务化架构过程中如何解决关于分布式事务问题的困扰--常用的分布式事务解决方案介绍

巧了我就是萌 提交于 2020-04-21 05:04:02
为了解决大家在实施分布式服务化架构过程中关于分布式事务问题的困扰,本教程将基于支付系统真实业务中的经典场景来对“可靠消息的最终一致性方案”、“TCC两阶段型方案”和“最大努力通知型方案”这3种柔性事务解决方案进行具体设计实现和详细讲解。 教程提供的 分布式事务解决方案的设计思路 在所有微服务架构项目中都适用,与编程语言无关,教程中会重点讲解方案的设计思路。 样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,教程中所实现的分布式事务解决方案在Java体系中的微服务架构系统都能通用,与具体的开发框架无关。 教程样例项目中用到的技术及相应的环境: Dubbo、Spring、SpringMVC、MyBatis、Druid、JDK7(或JDK8)、MySQL5.6、Tomcat 扩展阅读: https://www.roncoo.com/view/20 来源: oschina 链接: https://my.oschina.net/u/4386758/blog/3275942

07.深入浅出 Spring Boot

£可爱£侵袭症+ 提交于 2020-04-20 10:10:27
MyBatis 在Spring Boot应用非常广,非常强大的一个半自动的ORM框架。 代码下载: https://github.com/Jackson0714/study-spring-boot.git 05. 深入浅出 Spring Boot - 数据访问之JDBC(源码分析+代码下载) 06. 深入浅出 Spring Boot - 数据访问之Druid(附代码下载) 07. 深入浅出 Spring Boot - 数据访问之Mybatis(附代码下载) 一、什么是MyBatis 支持定制化 SQL 、存储过程以及高级映射的优秀的持久层框架 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 可以对配置和原生Map使用简单的 XML 或注解 将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系? JDBC:Java和关系型数据库的桥梁,是一个规范,不是实现。不同类型的数据库需要有自己的JDBC实现 数据源:包含数据库连接池,连接池管理。常见的有C3P0、HikariDataSoiurce、Druid等 连接池:预先创建一些数据库连接,放到连接池里面,用的时候从连接池里面取,用完后放回连接池 连接池管理:创建数据库连接,管理数据库连接

比c3p0还快200倍的数据库连接池你知道吗?

北慕城南 提交于 2020-04-20 01:51:26
数据库连接池是什么: 连接池是一种常用的技术,为什么需要连接池呢?这个需要从TCP说起。假如我们的服务器跟数据库没有部署在同一台机器,那么,服务器每次查询数据库都要先建立连接,一般都是TCP链接,建立连接就需要3次握手了,假设后台服务跟数据库的单程的访问时间需要10ms,那么光是建立连接就花了30ms,并且TCP还有慢启动的机制,实际上一次查询可能还不止1次TCP来回,查询效率就会大大降低。 为什么需要连接池: 为了解决上述问题,我们就需要维护一些长链接,这样就不用每次都去建立连接,毕竟建立连接除了占用时间,还需要一些其他的系统资源。另外的好处,连接池让我们更加容易地管理,一方面是可以避免数据库资源都被某几个API占据,另一方面也可以避免资源泄露。 什么是HikariCP HikariCP是由在日本生活的美国人程序员开源的一个数据库连接池组件,代码非常轻量,并且速度非常的快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也是推荐使用HikariCP。 为什么HikariCP会那么快 1.字节码更加精简,所以可以加载更多代码到缓存。 2.实现了一个无锁的集合类型,来减少并发造成的资源竞争。 3.使用了自定义的数组类型

深入学习Spring框架(一)- 入门

走远了吗. 提交于 2020-04-18 04:50:24
1.Spring是什么?   Spring是一个JavaEE轻量级的一站式开发框架。     JavaEE: 就是用于开发B/S的程序。(企业级)     轻量级:使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的模块使用。     重量级:早期有的EJB,开发一个HelloWorld程序都需要引入EBJ的全部模块     一站式:Spring框架提供涵盖了JavaEE开发的表示层,服务层,持久层的所有组件功能。也就是说,原则上,学完一套Spring框架,不用其他框架就可以完成网站一条流程的开发。但是Spring仍然可以和其他的框架无缝整合。 2.Spring的优点    轻量: Spring 是轻量的,就是除内核模块(4个jar),其他模块由开发者自由选择使用,同时支持整合其他框架。也可以称为就是可插拔式开发框架,像插头和插座一样,插上就用。这就是Spring框架核心理念(Ioc)。    控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。    面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。    容器: Spring 包含并管理应用中对象的生命周期和配置。    MVC框架: Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。    事务管理:

Spring架构揭秘-AOP

喜你入骨 提交于 2020-04-18 01:52:41
1、AOP概述 2、Spring AOP原理 3、Spring AOP架构解析 一、AOP概述 Java程序员在写代码的时候通常都是使用新建对象类来描述业务特性,然后通过对象的继承、组合、扩展等手段来实现业务需求,这是典型的面相对象的编程方式即OOP,总的来说OOP是一种由上至下的竖向编程模式。 在实际的编程中,通常会遇到某些方法里会使用到相同的逻辑,比如记方法执行日志,这些代码在OOP中没法与业务代码完全的解藕,使得方法代码就有了混合逻辑,不符合编程的单一责任原则。如果可以把这块逻辑代码解藕,通把两种逻辑的代码区分开,然后在运行期再合起来就完美了,就相当于在运行期横向的添砖加瓦,也就是面向切面横向的编程即AOP。 二、Spring AOP原理 实现AOP的主要技术就是动态代理 ,动态代理的原理这里就不细说了,主要是来看看Spring AOP的实现原理 下载 。我们知道通常使用的动态代理技术有JDK的和CGLIB的,其中JDK的动态代理只能代理接口级别,而CGLIB则还可以代理类级别,在Spring中结合了这两者,使得其更灵活。 在细说Spring AOP原理之前先来看看以下几个重要的概念: a、连接点(JoinPoint):程序执行的莫个特定位置,比如类初始化之前,类初始化之后,方法执行之前,方法执行之后,异常抛出之后等等。 b、切点(PointCut):指定程序执行的位置

盘点阿里巴巴 15 款开发者工具

可紊 提交于 2020-04-18 00:21:15
简介: 更效率、更优雅 | 阿里巴巴开发者工具不完全盘点 从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。 从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。 由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍: 工具名称和简介 使用场景 使用教程 获取方式 一、Java 线上诊断工具 Arthas Arthas 阿里巴巴2018年9月开源的一款Java线上诊断工具。 工具的使用场景: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况?

springboot整合mybatis增删改查(四):完善增删改查及整合swgger2

霸气de小男生 提交于 2020-04-17 20:37:37
接下来就是完成增删改查的功能了,首先在config包下配置Druid数据连接池,在配置之前先把相关配置在application.preperties中完善 application.preperties # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=30 # 配置获取连接等待超时的时间 spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource

SpringBoot进阶

六眼飞鱼酱① 提交于 2020-04-14 07:19:38
【今日推荐】:为什么一到面试就懵逼!>>> 没想到把,SpringBoot虽然简化了开发流程,但要学的东西还有很多 1. Spring Boot简介 采用约定大于配置,简化Spring开发步骤与复杂的部署流程 快速创立可独立运行的Spring项目以及集成主流框架 嵌入式Servlet容器,无需打war包 starter自动依赖与版本控制 大量的自动配置,可修改默认值 需要xml,无代码生成,开箱即用 准生产环境的运行时应用监控 与其他框架天然集成 整合Spring技术栈的大框架 2. 入门解析 1.创建maven工程jar 2.导入父项目与依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> 3.创建主程序 // 标注主程序类

SpringBoot 自定义配置

陌路散爱 提交于 2020-04-14 00:53:33
【今日推荐】:为什么一到面试就懵逼!>>> 有时候需要自己定义一些配置,比如SpringBoot没有提供Druid连接池的配置,需要我们自己写配置。 配置文件 #指定数据源类型为Druid spring.datasource.type = com.alibaba.druid.pool.DruidDataSource ##########druid连接池配置######### spring.datasource.druid.url =jdbc:mysql: // 127.0.0.1/db_xm_mall?serverTimezone=UTC spring.datasource.druid.driverClassName= com.mysql.cj.jdbc.Driver spring.datasource.druid.username = chy spring.datasource.druid.password = abcd ##初始连接数,默认0 spring.datasource.druid.initialSize = 10 #最大连接数,默认8 spring.datasource.druid.maxActive = 30 spring.datasource.druid.minIdle = 10 #获取连接的最大等待时间,单位毫秒 spring.datasource.druid

5.01- Druid数据源配置

删除回忆录丶 提交于 2020-04-12 22:04:07
1、配置项 配置 缺省值 说明 name 无 配置这个属性的意义在于,如果存在多个数据源,监控的时候 可以通过名字来区分开来。如果没有配置,将会生成一个名字, 格式是:"DataSource-" + System.identityHashCode(this) jdbcUrl 无 连接数据库的url,不同数据库不一样。例如: mysql : jdbc:mysql://10.20.153.104:3306/druid2 oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto username 无 连接数据库的用户名 password 无 连接数据库的密码。如果你不希望密码直接写在配置文件中, 可以使用ConfigFilter。详细看这里: https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 maxActive 8 最大连接池数量 maxIdle 8