自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Spring事务详述

1、先来说一说事务是什么,在Spring中事务指的是对数据库进行增删改查的一系列过程,它具有以下几种特性:原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。...

2018-12-23 06:46:40 504

原创 Zookeeper+Dubbo 搭建RPC框架架构原理详述

Zookeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户,简单来说,他就是代替了我们以前的数据库去存储一些key值。Dubbo是什么?Dubbo是一个分布式服务框架,...

2018-12-20 21:52:37 3491 1

原创 八大基本排序详解(二) 基数排序

基数排序:基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。实现思想:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 代码实现:package sort;/** * * @ClassN...

2018-12-18 23:06:29 369

原创 八大基本排序详解(一)选择排序

选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。选择排序是一种很基本的算法思想,也是一种很重要的思想!!!代码实现:pa...

2018-12-18 20:08:34 388

原创 Eclipse中复制项目后,怎么更改项目名等相关配置?

在工作中,我们偶尔需要建立新的项目,但是不需要自己搭建项目框架,而是直接可以复制上一个项目。复制之后,发现改了项目名字之后,访问路径,以及打包名字等都会保留旧的项目名,看起来非常不爽,那么就需要我们彻底地将项目进行重新翻新。第一部分:右击项目 ->Properties  ->Web Project Settings  更改Context root,更改为新的项目名 ...

2018-12-18 16:40:21 500

原创 Java 类锁和静态锁

Java的锁分为两种: 对象锁(又称实例锁,synchronized):该锁针对的是该实例对象(当前对象)。synchronized是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。每个对象都有一个锁,且是唯一的。 类锁(又称全局锁,static synchroni...

2018-12-14 18:57:49 1038 2

转载 SpringMVC工作原理

SpringMVC的工作原理图:SpringMVC流程1、  用户发送请求至前端控制器DispatcherServlet。2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet...

2018-12-14 16:14:57 185

原创 Java动态代理详解

一、代理是什么?代理类指的时一种可以在程序运行时创建全新的类的类 

2018-12-14 09:52:20 272

原创 Java 内存模型的基础(二)——重排序

一、数据依赖性如果两个操作访问同一个变量,且两个操作中有一个为写操作,此时这两个操作就存在数据依赖性。数据依赖分为以下三种情况:名称 代码示例 说   明 写后读 a = 1; b = 2; 写一个变量后,再读这个位置 写后写 a = 1; a = 2; 写一个变量后,再写这个变量 读后写 ...

2018-12-12 15:00:23 252

原创 Java 内存模型的基础(一)

一、并发编程模型的两个关键问题在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。线程之间的通信有两种方式:共享内存和消息传递(信号量机制)。在共享内存的通信机制中,线程之间共享程序的公公状态,通过写-读内存中的公共状态进行隐式通信;而消息传递的通信机制中,线程之间没有共享的公共状态,线程之间必须通过发送消息显式进行的通信。同步指程序中用于控制不同线程之间的操作发生...

2018-12-11 21:00:53 243

原创 Java Comparable接口详解

我们经常听到服务商这样说:”如果类遵从某个特定接口,那么就旅行这项服务“。在Java中Comparable接口就是这个特定的接口,Arrays类的sort方法承诺可以对对象数组进行排序,但前提是:对象所属的类必须实现了Comparable接口(几大基本类型除外)。但是,我们有两种选择:1、自己实现Comparable接口 @Override public int compareT...

2018-12-10 19:57:50 725

原创 JVM之垃圾回收算法

标记清除算法最基础的收集算法是 “标记清除算法” ,如同他的名字一样,算法分为 “标记” 和 “清除” 两个阶段:首先标记出所需要回收的对象,在标记完成后统一回收所有被标记的对象。后续的算法都是在它的基础上进行的改进。他的不足之处如下:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较...

2018-12-08 09:53:29 213

原创 JVM之方法区的回收

很多人都认为在方法区(或者HotSpot虚拟机中的永久代)中是没有垃圾回收的,Java虚拟机规范中确实说过可以不要求虚拟机在方法去实现垃圾回收,而且在方法区中垃圾回收的 “性价比” 一般是比较低的,因为方法区中的东西一般是不需要回收的,所以扫描一遍回收的很少。永久代的垃圾收集主要分为两部分内容:废弃常量和无用的类,回收废弃常量与回收Java堆中的对象特别类似,即当方法去中的常量没有被任何Str...

2018-12-07 17:10:24 417

原创 JAVA全排列

全排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。公式:全排列数f(n)=n!(定义0!=1),如1,2,3三个元素的全排列为:{1,2,3}    {1,3,2}   {2,1,3}   {2,3,1}  {3,1,2}   {3,2,1}共3*2*1=6种。先看代码,我们再细说思路:...

2018-12-07 16:33:50 291

原创 什么时候JVM才真正将对象判定为“死亡”?

前边一篇文章详述了JVM判定对象何时需要进行回收,但是即使前边所说的算法判定对象该回收之后,他也并非是“非死不可”的,这时他暂时处于“缓刑”阶段,真正的宣告标记对象死亡至少要经历两次标记过程:如果对象没有任何与“GC Roots”相连的链,它将会被第一次标记,并且进行一次筛选,筛选的条件是对象是否有必要执行finalize()方法,当对象没有覆盖finalize()方法或者finalize()方法...

2018-12-07 16:17:05 204

原创 JVM中的引用

在上一篇文章中,我们说到了判断对象是否消亡的两种算法,无论是引用计数算法还是可达性算法都离不开“引用”。在JDK1.2以前,Java中的引用的定义很传统,即如果reference类型的数据中存储的数值代表另一块内存的起始地址,就成这块内存代表着一个引用。这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有引用这两种状态,对于描述一些“食之无味,弃之可惜”的对象就显得无能为力。因...

2018-12-07 09:52:33 232

原创 JAVA GC 判断对象是否已经消亡的两种算法

JAVA中的垃圾回收主要是针对堆的,因为虚拟机栈、程序计数器、本地方法栈三者会随着线程的建立而建立,随线程消亡而消亡,因为其最终都能分解为基本类型组成,因此在编译时大小基本可以确定,因此这几个区域的内存分配和回收都具有确定性,在这几个区域不需要过多的考虑回收的问题,因为在方法或者线程结束时,内存自然就回收了。但是Java堆不一样,例如一个接口的多个实现类需要的内存可能不一样,一个方法中的多个分支需...

2018-12-07 08:44:36 593

原创 JAVA异常处理中的一些坑

异常处理有几种方式,如下:1、try{}catch{}处理try{ //可能出现异常独的代码}catch(Exception e){ //捕获异常后如何进行处理}finally{ //强制必须执行的一个代码块}2、throw语句,程序员自己指定的处理异常的方式public class Test1 extends Test{ //你要抛出的异...

2018-12-05 21:33:33 276

原创 SpringMVC集成redis实现简单的增删改查

1、pom文件引入jar包 <!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> ...

2018-12-05 21:31:23 1149

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除