阿里-马云的学习笔记

导航

05 2019 档案

mybatis深入理解(八)-----关联表查询
摘要:一、一对一关联 1.1、提出需求 根据班级id查询班级信息(带老师的信息) 1.2、创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。 表之间的关系如下: 1.3、定义实体类 1、Teacher类,Teacher类是teacher 阅读全文

posted @ 2019-05-30 23:09 阿里-马云的学习笔记 阅读(281) 评论(0) 推荐(0)

mybatis深入理解(七)-----MyBatis缓存机制的设计与实现
摘要:缓存设计 MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性,用户不能配置,默认情况下自动支持的缓存,用户没有定制它的权利(不过 阅读全文

posted @ 2019-05-30 22:58 阿里-马云的学习笔记 阅读(319) 评论(0) 推荐(0)

mybatis深入理解(六)-----MyBatis的二级缓存的设计原理
摘要:MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析MyBatis的二级缓存的设计原理。 1.MyBatis的缓存机制整体设计以及二级缓存的工作模式 如上图所示,当开一个会话时,一个SqlSession对象会使用一个Executo 阅读全文

posted @ 2019-05-30 22:50 阿里-马云的学习笔记 阅读(245) 评论(0) 推荐(0)

mybatis深入理解(五)-----MyBatis的一级缓存实现详解 及使用注意事项
摘要:0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓 阅读全文

posted @ 2019-05-30 22:28 阿里-马云的学习笔记 阅读(444) 评论(0) 推荐(0)

mybatis深入理解(四)-----MyBatis的架构设计以及实例分析
摘要:MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。 一、MyBatis的框架设计 1.接口层 和数据库交互的方式 阅读全文

posted @ 2019-05-30 21:56 阿里-马云的学习笔记 阅读(383) 评论(0) 推荐(0)

mybatis深入理解(三)-----MyBatis事务管理机制
摘要:MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。本文将讲述MyBatis的事务管理的实现机制。首先介绍MyBatis的事务Transaction的接口设计以及其不同实现JdbcTransaction 和 ManagedTransaction;接着,从MyBati 阅读全文

posted @ 2019-05-29 22:55 阿里-马云的学习笔记 阅读(1003) 评论(0) 推荐(0)

mybatis深入理解(二)-----Mybatis数据源与连接池
摘要:对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POOL 阅读全文

posted @ 2019-05-29 22:38 阿里-马云的学习笔记 阅读(1373) 评论(0) 推荐(0)

mybatis深入理解(一)-----Mybatis初始化机制详解
摘要:对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 一、 MyBatis的初始化做了什么 1、configuration 任何框架的初始化,无非是加载自己运行时所需要的配置信息。MyBatis的配置信息,大概包含以下信息, 阅读全文

posted @ 2019-05-29 21:53 阿里-马云的学习笔记 阅读(735) 评论(0) 推荐(0)

java并发系列(八)-----java异步编程
摘要:同步计算与异步计算 从多个任务的角度来看,任务是可以串行执行的,也可以是并发执行的。从单个任务的角度来看,任务的执行方式可以是同步的,也可以是异步的。 Runnable、Callable、FutureTask 1、Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里 阅读全文

posted @ 2019-05-27 23:12 阿里-马云的学习笔记 阅读(9932) 评论(0) 推荐(1)

Spring事务传播行为详解
摘要:前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多, 阅读全文

posted @ 2019-05-27 21:07 阿里-马云的学习笔记 阅读(5580) 评论(2) 推荐(9)

java并发系列(七)-----ConcurrentHashMap原理分析(JDK1.8)
摘要:JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作,整个看起来就像是优化过且线程安全的HashMap,虽然在JDK1.8中还能看到Segment的数据结构,但是已经简化了属性,只是为了兼容旧版本。 阅读全文

posted @ 2019-05-27 20:44 阿里-马云的学习笔记 阅读(403) 评论(0) 推荐(0)

java并发系列(六)-----Java并发:volatile关键字解析(内存语义、实现原理)
摘要:在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题。一旦一个共享变量被 volatile关键字 修饰, 阅读全文

posted @ 2019-05-27 20:34 阿里-马云的学习笔记 阅读(460) 评论(0) 推荐(0)

java并发系列(五)-----如何正确的关闭一个线程
摘要:正确的关闭一个线程可不是简单的事情,由于线程调度的复杂性以及不可控性(毕竟运行都由操作系统做主),先来了解一下interrupt() 1、interrupt() 根据jdk文档的介绍,如下: interrupt()的作用是中断本线程。 本线程中断自己是被允许的;其它线程调用本线程的interrupt 阅读全文

posted @ 2019-05-27 00:54 阿里-马云的学习笔记 阅读(4685) 评论(0) 推荐(0)

java并发系列(四)-----源码角度彻底理解ReentrantLock(重入锁)、AQS
摘要:1.前言 ReentrantLock可以有公平锁和非公平锁的不同实现,只要在构造它的时候传入不同的布尔值,继续跟进下源码我们就能发现,关键在于实例化内部变量sync的方式不同,如下所示: /** * Creates an instance of {@code ReentrantLock} with 阅读全文

posted @ 2019-05-26 23:41 阿里-马云的学习笔记 阅读(264) 评论(0) 推荐(0)

java并发系列(三)-----ReentrantLock(重入锁)功能详解和应用演示
摘要:1. ReentrantLock简介 jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富,使用起来更 阅读全文

posted @ 2019-05-26 22:09 阿里-马云的学习笔记 阅读(712) 评论(0) 推荐(0)

java并发系列(二)-----线程之间的协作(wait、notify、join、CountDownLatch、CyclicBarrier、Semaphore)
摘要:在java中,线程之间的切换是由操作系统说了算的,操作系统会给每个线程分配一个时间片,在时间片到期之后,线程让出cpu资源,由其他线程一起抢夺,那么如果开发想自己去在一定程度上(因为没办法100%控制它)让线程之间互相协作、通信,有哪些方式呢? wait、notify、notifyAll 1、voi 阅读全文

posted @ 2019-05-24 00:01 阿里-马云的学习笔记 阅读(538) 评论(0) 推荐(0)

java并发系列(一)-----多线程简介、创建以及生命周期
摘要:进程、线程与任务 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源。 打开电脑的任务管理器,如下: 正在运行的360浏览器就是一个进程。运行一个java程序的实质是启动一个java虚拟机进程,也就是说一个运行的java程序就是一个java虚拟机进程。进程是程序向操作系统申请 阅读全文

posted @ 2019-05-22 21:47 阿里-马云的学习笔记 阅读(482) 评论(0) 推荐(0)

redis教程(二)-----redis事务、记录日志到redis、分布式锁
摘要:redis事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。 一个事务 阅读全文

posted @ 2019-05-20 22:12 阿里-马云的学习笔记 阅读(496) 评论(0) 推荐(0)

redis教程(一)-----redis数据类型、基本命令、发布订阅以及持久化
摘要:简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis是一个key-val 阅读全文

posted @ 2019-05-20 21:30 阿里-马云的学习笔记 阅读(366) 评论(0) 推荐(0)

排序-----冒泡排序、选择排序、插入排序、快速排序
摘要:冒泡排序 冒泡排序是一个非常经典的排序方法,虽然其排序效率不是非常高,但是还是非常有必要了解一下其原理。 我认为了解一个算法之前,或是用java实现其之前,还是通过图示的方式来了解比较好,一张图印在脑海,写啥都不是事。 例如对于数组[10,1,35,61,89,36,55],冒泡排序流程如下: 整个 阅读全文

posted @ 2019-05-09 23:19 阿里-马云的学习笔记 阅读(635) 评论(0) 推荐(0)

spring cloud深入学习(五)-----熔断器Hystrix
摘要:雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。 如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B 阅读全文

posted @ 2019-05-09 22:30 阿里-马云的学习笔记 阅读(463) 评论(0) 推荐(0)

spring cloud深入学习(四)-----eureka源码解析、ribbon解析、声明式调用feign
摘要:基本概念 1、Registe 一一服务注册当eureka Client向Eureka Server注册时,Eureka Client提供自身的元数据,比如IP地址、端口、运行状况指标的Uri、主页地址等信息。2、Renew一一服务续约Eureka lient在默认的情况下会每隔30秒发送一次心跳来进 阅读全文

posted @ 2019-05-08 22:27 阿里-马云的学习笔记 阅读(711) 评论(0) 推荐(0)

spring cloud深入学习(三)-----服务消费
摘要:在上一篇博文中简单实现了eureka-server以及eureka-provider,后面会实现eureka-cosumer,现在针对eureka做进一步的详解。 微服务整体架构 文字再美也没有图片直观,下面通过一张图来说明微服务的整体架构以及调用过程,如下: 服务注册中心-1和服务注册中心-2互相 阅读全文

posted @ 2019-05-07 23:59 阿里-马云的学习笔记 阅读(389) 评论(0) 推荐(0)

spring cloud深入学习(二)-----服务注册中心spring cloud eureka
摘要:服务治理 主要用来实现各个微服务实例的自动化注册与发现,为啥需要这玩意呢?在一开始比如A系统调用B服务,可能通过手工维护B服务的实例,并且还得采用负载均衡等方式,这些全部都得需要手工维护,等后面系统越来越多,这维护起来可就费了劲了。那么服务治理就是帮你管理这些服务,这些框架和产品的实现都围绕着服务注 阅读全文

posted @ 2019-05-06 23:15 阿里-马云的学习笔记 阅读(859) 评论(0) 推荐(1)

spring cloud深入学习(一)-----什么是微服务?什么是rpc?spring cloud简介
摘要:近年来,微服务非常的流行,那么为什么是它?简单介绍一下。 为什么是微服务? 微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。这些服务的集 阅读全文

posted @ 2019-05-06 20:07 阿里-马云的学习笔记 阅读(4327) 评论(2) 推荐(0)

spring深入学习(六)-----springmvc
摘要:MVC设计模式 有过一定开发经验的人肯定都知道这个模式,先简单介绍下这种模式,然后再去讨论为啥要这么设计: 传统的web应用中应该主要包括这些组件,不同组件负责不同的模块。 数据实体:POJO 数据层:DAO 业务层:Service 控制层:Servlet 表示层(页面层):JSP页面或HTML页面 阅读全文

posted @ 2019-05-04 17:57 阿里-马云的学习笔记 阅读(337) 评论(0) 推荐(0)