深入理解Spring事务的传播行为

本文主要介绍下Spring事务中的传播行为。 事务传播行为介绍 Spring中的7个事务传播行为: 事务行为 说明 PROPAGATION_REQUIRED 支持当前事务,假设当前没有事务。就新建一个事务 PROPAGATION_SUPPORTS 支持当前事务,假设当前没有事务,就以非事务方式运行 PROPAGATION_MANDATORY 支持当前事务,假设当前没有事务,就抛出异常 PROPAGATION_REQUIRES_NEW 新建事务,假设当前存在事务。把当前事务挂起 PROPAGAT
分类: 其他 发布时间: 06-15 23:10 阅读次数: 0

边界网关协议

边界网关协议
分类: 其他 发布时间: 06-15 23:10 阅读次数: 0

五分钟带你搞懂Springmvc的运行流程图

一.常见类及其作用 HandlerExecutionChain : Handler执行链对象, 包含了请求处理器对象 以及所有的拦截器对象. HandlerMapping : 定义了所有的请求与 所有的请求处理器之间的映射. HandlerAdaptor: 请求处理器适配器对象, 负责完成请求处理器对象的调用 、 方法的执行等… 二. 运行流程: 浏览器端发送请求到服务器端: 1.1 当前的请求在DispatcherServlet中不存在对应的映射 ① 是否配置mvc:default-serv
分类: 其他 发布时间: 06-15 23:10 阅读次数: 0

Spring Cloud核心组件详解

一、Spring Cloud核心组件:Eureka (1)Netflix Eureka 1)、Eureka服务端:也称服务注册中心,同其他服务注册中心一样,支持高可用配置。如果Eureka以集群模式部署,当集群中有分片出现故障时,那么Eureka就转入自我保护模式。它允许在分片故障期间继续提供服务的发现和注册,当故障分片恢复运行时,集群中其他分片会把它们的状态再次同步回来 2)、Eureka客户端:主要处理服务的注册与发现。客户端服务通过注解和参数配置的方式,嵌入在客户端应用程序的代码中,在应
分类: 其他 发布时间: 06-15 23:10 阅读次数: 0

类的加载过程详解

类的加载过程: Java中ClassLoader(抽象类)的主要职责就是负责将各种class文件加载到JVM中,生成这个类的各种数据结构,然后分布到JVM对应的内存区域中。 类的加载过程一般分为三个阶段:加载阶段、连接阶段(验证、准备、解析)、初始化阶段。 1. 加载阶段:主要负责查找并且加载类的二进制数据文件(class文件) 2. 连接阶段:连接阶段做的比较多,细分为三个阶段: 验证:主要确保文件的正确性,比如class的版本,class的魔术因子是否正确 准备:为类的静态变量分配内存,并
分类: 其他 发布时间: 06-15 23:09 阅读次数: 0

7种单例设计模式的设计

单例设计模式是GoF23种最常用的设计模式之一,无论是第三方类库还是日常开发几乎都可以看到单例的影子,单例设计模式提供了一种在多线程的情况下保证实例的唯一性解决方案,为了比较7中实现方式的优劣,我们从三个角度来对其进行评估:线程按安全、高性能、懒加载。 饿汉式 package SingletonPkg; /** * @author Heian * @time 19/01/21 12:49 * @copyright(C) 2019 深圳市北辰德科技股份有限公司 * 用途:饿汉式单例设计
分类: 其他 发布时间: 06-15 23:09 阅读次数: 0

ArrayList为什么线程不安全

执行下面代码,程序何如?? package VolatilePkg; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Vector; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; /** * @author Heian * @time 19/0
分类: 其他 发布时间: 06-15 23:08 阅读次数: 0

多线程面试题整合

(1)Java编程写一个会导致死锁的程序 package 设计模式.Single_Thread_Execution.多线程面试题; import java.util.concurrent.TimeUnit; /** * @author Heian * @time 19/01/23 10:42 * @copyright(C) 2019 深圳市北辰德科技股份有限公司 * 用途:手写一个死锁程序 */ public class DeadLock { /** * 造成死
分类: 其他 发布时间: 06-15 23:08 阅读次数: 0

序列化反序列化( transient/static )

平时我们在Java内存中的对象,是无 法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来。一个Java对象的表示有各种各样的方式,Java本身也提供给了用户一种表示对象的方式,那就是序列化。换句话说,序列化只是表示对象的一种方式而已。OK,有了序列化,那么必然有反序列化,我们先看一下序列化、反序列化是什么意思。 序列化:将一个对象转换成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的
分类: 其他 发布时间: 06-15 23:08 阅读次数: 0

文件复制语法糖Files.copy(地址,输出流)

在我们开发中经常会遇到文件复制操作,基于代码可读性原则,再次推荐一个类库的操作方法,具体代码如下: package 设计模式.Single_Thread_Execution.源码底层; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * @author Heian * @time 19/02/02 22:19 * @copyr
分类: 其他 发布时间: 06-15 23:07 阅读次数: 0

sping学习

Spring是于2003 年兴起的一个轻量级的Java 开发框架,是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发 源码连接下载:测试源码。 为了学习sping框架知识,首先创建一个maven项目,用来做测试用(注意:webapp项目;使用默认目录;创建一个目录结构为src/main/java作为java代码的存放,并且其中的输出目录与resource一致; 导入sping两个核心包 beans和core包 导
分类: 其他 发布时间: 06-15 23:07 阅读次数: 0

线程池+ Callable 的基本使用

线程池的作用 1、减少线程创建与切换的开销 在没有使用线程池的时候,来了一个任务,就创建一个线程,我们知道系统创建和销毁工作线程的开销很大,而且频繁的创建线程也就意味着需要进行频繁的线程切换,这都是一笔很大的开销。 2、控制线程的数量 使用线程池我们可以有效地控制线程的数量,当系统中存在大量并发线程时,会导致系统性能剧烈下降。 3、循环利用有限的线程 线程池中会预先创建一些空闲的线程,他们不断的从工作队列中取出任务,然后执行,执行完之后会继续执行工作队列中的下一个任务,减少了创建和销毁线程的次
分类: 其他 发布时间: 06-15 23:07 阅读次数: 0

事务及事务的隔离级别

今天在面试过程中问道这个问题,当时没回答上,只是以前记得点,现在留作备忘! 什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是: 1、原子性 即不可分割,事务要么全部被执行,要么全部不执行。如果事
分类: 其他 发布时间: 06-15 23:06 阅读次数: 0

Stream的一些常用操作

由于最近换了工作,项目中是使用jdk1.8,所以有必要学习一些jdk1.8骚操作,此文章不断更新。 如何理解Stream?在我看来,Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。简单来说,它的作用就是通过一系列操作将数据源(集合、数组)转化为想要的结果。 Stream有三点非常重要的特性: Stream 是不会存储元素的。 Stream 不会改变原对象,相反,他们会返回一个持有结果的新Stream。 Stream 操作是延
分类: 其他 发布时间: 06-15 23:06 阅读次数: 0

CountDownLanth(计数器) + CyclicBarrier(回环栅栏) + Semaphore(信号量)

CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了 。(运行主线程开启子线程的时候,子线程还没有结束的时候,主线程可以一直等待,直到初始化的现成的计数器count为0,主线程就可以不用等待继续执行了) public CountDownLatch(int count) { };//构造方法
分类: 其他 发布时间: 06-15 23:05 阅读次数: 0

oracle存储过程/函数 初步

存储过程:是指函数在数据库中提供提供所有用户程序调用的子程序叫做存储过程。 存储过程和存储函数: 相同点:完成特定功能的程序。不同点:是否用return语句返回值。 语法:用creat [or replace] procedure 过程名(参数列表) AS PLSQL子程序体 命令建立存储过程和存储函数 备注:其中AS相当于我们的declare用来声明程序的具体内容,PLSQL子程序体 一般是began....end... 第一个存储过程函数(sql窗口,这里我是不带参数的): create
分类: 其他 发布时间: 06-15 23:05 阅读次数: 0

转行要趁早 !一个过来人的忠告~

转行是否会成功是未知数,但是我一度认为当初的转行可能是我此生做的最正确的决定,现在不管是从薪资回报还是行业影响力,都是转行带来的惊喜。所以,我斗胆从我的角度给各位小伙伴以下一些建议: 1、转行要趁早 当你萌生要转行的想法时,在考虑清楚的前提下,一定要趁早。 因为你在一个行业积累的经验越久,你转行付出的沉默成本越大,你会更没有勇气,我当初之所以这么决绝的确定转行本质上也是因为我刚毕业,还是一张白纸,转行对我来说成本还算是很小的。 2、转行不一定是靠match着兴趣 我们知道,如果我们从事的是自己
分类: 其他 发布时间: 06-15 23:05 阅读次数: 0

想转行程序员,参加java培训班真的有用吗?

想学java转行当程序员,零基础自学发现还是有很大难度,便打算找个java培训班。但是不知道现在市面上的java培训班到底有没有用呢? 如果你是想问我参加java培训班有没有用的话,那肯定是有用啊。不然现在怎么开了这么多的java培训机构,而且这么多人去学呢?如果没有用的话,那每年怎么还是有那么多人通过参加java培训班成功转行当上java程序员呢? 有人会问自学能不能找到工作,答案肯定是“能”但是对于这个问题,我们不能用“能”或者“不能”去回答,应该从概率的角度去分析,有一个人能找到也是能,
分类: 其他 发布时间: 06-15 23:04 阅读次数: 0

毕业6年,我和同学的差距是这样拉开的

和牛耳的相遇,我一直觉得是命中注定的。 我的青春任性了两次。我的理科成绩比文科好很多,但我一直喜欢文史,所以高中任性地选了文科,结果高考分数差本科线很多。老师们都建议复读,然而我又任性了一次,报了一所专科院校,并义无反顾地选了计算机信息管理专业。而那时,我甚至都找不到电脑开关键的位置! 大学期间我一直在折腾,和舍友小全子一起参加各种社团和比赛,倒卖电话卡,支撑起甲骨文俱乐部……而折腾的后果就是,我从来没拿过奖学金,Oracle、Java、C等各门专业课也总在及格线上徘徊。临近实习,我不得已报了
分类: 其他 发布时间: 06-15 23:04 阅读次数: 0

有勇气辞职,才有勇气去追求我想要的人生

我是一名来自农村的普通大学生,因为所学专业就业形势不好,所以从事相关专业的工作没多久就离职了。离职后,在家人的安排下,我有了一份很稳定的工作,俗称“铁饭碗”,然而工作内容枯燥无味,如果一直待下去,我就会和身边的人一样,日复一日重复自己的工作直到退休。 我多次想过离职,可想到家人给我安排这样一份工作不容易,而我也并没想好以后的路该如何走,怎样才可以真正独立起来更好地照顾父母,也就打消了辞职的念头。一个偶然的机会,我随同事来到长沙,看见每个人都在这个城市里为未来努力奋斗。当然这其中也包括我的同学,
分类: 其他 发布时间: 06-15 23:04 阅读次数: 0