自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring整合JMS(四)——事务管理

Spring整合JMS(四)——事务管理Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理。这将允许JMS应用利用Spring的事务管理特性。JmsTransactionManager在执行本地资源事务管理时将从指定的ConnectionFactory绑定一个ConnectionFactory/Session这...

2019-03-30 20:22:04 229

转载 Spring整合JMS(三)——MessageConverter介绍

Spring整合JMS(三)——MessageConverter介绍1.4消息转换器MessageConverterMessageConverter的作用主要有两方面,一方面它可以把我们的非标准化Message对象转换成我们的目标Message对象,这主要是用在发送消息的时候;另一方面它又可以把我们的Message对象转换成对应的目标对象,这主要是用在接收消息的时候。下面我们...

2019-03-30 20:19:42 364

转载 Spring整合JMS(二)——三种消息监听器

Spring整合JMS(二)——三种消息监听器1.3消息监听器MessageListener在Spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageListener、SessionAwareMessageListener和MessageListenerAdapter。下面就分别来介绍一下这几种类型的区别。1...

2019-03-30 20:13:12 246

原创 Spring整合JMS(一)——基于ActiveMQ实现

Spring整合JMS(一)——基于ActiveMQ实现1.1JMS简介JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻...

2019-03-30 08:12:48 171

转载 Spring AOP功能源码解析

前言: 有关于Spring,我们最常用的两个功能就是IOC和AOP,前几篇文章从源码级别介绍了Spring容器如何为我们生成bean及bean之间的依赖关系 下面我们接着来看AOP的源码实现。 有关于AOP,我们在面试中也被无数次问到,AOP是什么?AOP有什么作用与优势?AOP在项目中是如何用到的? 这些还都是比较简单的,有些可能会问你AOP的实现...

2019-03-16 14:26:50 150

转载 Spring AOP原理解析

一.经典的基于代理的AOP首先,我们来看看基于经典的AOP是如何实现的。先写一个接口叫Sleepable,所有具有睡觉能力的东西都可以实现该接口。package com.ghs.aop;public interface Sleepable { public void sleep();}然后写一个Human类,他实现了这个接口。package com.gh...

2019-03-16 14:26:45 161

转载 Java并发编程-并发工具包java.util.concurrent使用指南

Java并发编程-并发工具包java.util.concurrent使用指南1. java.util.concurrent - Java并发工具包Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文我将带你一一认识...

2019-03-16 14:26:34 237

转载 多线程互锁现象与等待唤醒机制

1,互锁现象上一部分介绍了通过同步的方法来解决多线程操作共享数据时的安全问题,然而同步也有相应的缺点:效率降低 出现互锁现象效率问题就不在多说了,同步固有的问题;那么什么是互锁现象了;介绍一个场景: 周末到了,玉皇大帝一男一女两个神仙道地球上去寻找最后两个幸存者:why,male; jr,female;来让他们创造人类,并且说了,谁先找齐两个人类,将会升官涨工资;他们彼...

2019-03-16 14:26:23 320

转载 多线程数据安全问题与三种解决方式

1,多线程数据安全问题引入 多线程可以提高程序的使用率,也可以提高cpu的使用使用率,同时也会带来一些弊端,比如:数据安全问题 今天我们就先说一下多线程会产生什么样的数据安全问题;在讲之前,我们需要明确:cpu执行的操作是原子性的,是不可拆分的 这里说的数据安全针对的数据是多个线程共享的数据,所以我们会使用在第一部分中说的方式2来实现多线程 由此,我...

2019-03-16 14:26:17 1043

转载 Spring学习(十九)----- Spring的五种事务配置详解

Spring学习(十九)----- Spring的五种事务配置详解前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、Transac...

2019-03-16 14:25:49 119

转载 Base64编解码原理及AES加解密算法的使用

Base64编解码原理及AES加解密算法的使用Base64编解码1英文字符=1字节=8位Base64编码原理:将要编码的二进制(字符串、图片等都可以转换成二进制格式表示)把3个8位字节以4个6位的字节表示,然后把每个6位字节都转换成一个单独的数字并映射到base64码表中的一个字符。如果最后剩下的字节不足3个,则在后面补0,补0转换的字符用“=”表示,故编码后输出的字符串末尾可能...

2019-03-16 14:25:42 349

转载 分布式事务 CAP 理解论证 解决方案

分布式事务 CAP 理解论证 解决方案前言在大型系统架构演变中,当前下,分布式是一个必然的选择,分布式事务是绕不开的一个点.目录概述 论证 解决方案 3.1 维护本地消息表 3.2 使用rocketmq事务消息 3.3 两阶段提交协议(2PC) 3.4 TCC事务补偿机制正文1.概述在单体架构中,我们的事务可以通过数据库的ACID来操作,不会出现什么问题...

2019-03-16 14:25:35 174

转载 使用Nginx实现反向代理

使用Nginx实现反向代理一、代理服务器1、什么是代理服务器代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。2、为什么要使用代理服务器1)提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再...

2019-03-16 14:25:29 294

转载 配置Nginx实现负载均衡

配置Nginx实现负载均衡 在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。一、负载均衡的作用1、转发功能按照一定的算法【权重、轮询】,将客户端...

2019-03-16 14:25:23 319

原创 git merge 远程两个分支

背景问题,把原有的dev版本合并到master版本中。1、把源码clone到本地库中。git clone [gitsite git远程网址]2、在本地新建一个与远程的dev版本相同(被合并的版本)的dev分支git checkout -b dev origin/dev3、返回到master版本git checkout master4、把本地的dev合并到mast...

2019-03-15 00:42:39 2240

转载 Git使用教程

一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够...

2019-03-14 22:33:18 172

转载 ConcurrentHashMap 的工作原理及代码实现

ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析(JDK1.7).众所周知,哈希表是中非常...

2019-03-13 12:56:29 430

转载 ReentrantLock实现原理深入探究

前言这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLock的实现原理。研究ReentrantLock的实现原理需要比较好的Java基础以及阅读代码的能力,有...

2019-03-13 12:56:24 127

转载 Java并发编程:Lock

Java并发编程:Lock  在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。  也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐...

2019-03-13 12:56:17 107

转载 Java并发编程:阻塞队列

Java并发编程:阻塞队列  在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。  在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(Linke...

2019-03-13 12:56:07 118

转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore  在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。  以下是本文目录大纲:  一.CountDownLatch用法  二.CyclicBarr...

2019-03-13 12:56:02 101

转载 Java并发编程:Timer和TimerTask

Java并发编程:Timer和TimerTask  其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 1 2 3 4 5 6 Timer timer =newTimer(); timer.schedule(new...

2019-03-13 12:55:55 122

转载 代理模式实现方式及优缺点对比

代理模式最典型的应用就是AOP,本文结合主要讲解了代理模式的几种实现方式:静态代理和动态代理,这里动态代理又可以分为jdk代理和Cglib代理,另外,本文也对这几种代理模式的优缺点进行了对比。代理,顾名思义,即代替被请求者来处理相关事务。代理对象一般会全权代理被请求者的全部只能,客户访问代理对象就像在访问被请求者一样,虽然代理对象最终还是可能会访问被请求者,但是其可...

2019-03-13 12:55:42 717

转载 Spring与Mybatis+PageHelper实现分页整合(三)

一.实现数据表的分页,这里用Mybatis分页插件-PageHepler实现分页插件pagehelper.jar:https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/http://repo1.maven.org/maven2/com/github/pagehe...

2019-03-13 12:55:33 196

转载 Spring AOP切点表达式用法总结

1. 简介面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的。通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示:面向对象编程解决了业务模块的封装复用的问题,但是对于某些模块,其本身并不独属于摸个业务模块,而是根据不同的...

2019-03-13 12:55:28 157

转载 JVM的底层实现原理

JVM是Java程序运行的环境,但是他同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间。JDKJDK在Java的整个体系中充当一个生产加工中心,产生所有的数据输出,是所有指令和战略的执行中心。本身还提供了Java的完整方案,可以开发目前Java能支持的所有应用和系统程序。而之所以现在还会分j2me,j2ee这些类,是把他们用来简化各...

2019-03-13 12:55:18 99

转载 javaweb总结(四十)——编写自己的JDBC框架

javaweb总结(四十)——编写自己的JDBC框架一、元数据介绍  元数据指的是"数据库"、"表"、"列"的定义信息。1.1、DataBaseMetaData元数据  Connection.getDatabaseMetaData()获得代表DatabaseMetaData元数据的DatabaseMetaData对象。  DataBaseMetaData对象的常用方法:get...

2019-03-12 12:37:27 104

转载 Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)

Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)在上一个SpringAOP通知的例子,一个类的整个方法被自动拦截。但在大多数情况下,可能只需要一种方式来拦截一个或两个方法,这就是为什么引入'切入点'的原因。它允许你通过它的方法名来拦截方法。另外,一个“切入点”必须具有“Advisor' 相关联。在SpringAOP中,有三个非常专...

2019-03-12 12:37:19 146

转载 Spring学习(十八)----- Spring AOP+AspectJ注解实例

Spring学习(十八)----- Spring AOP+AspectJ注解实例我们将向你展示如何将AspectJ注解集成到SpringAOP框架。在这个SpringAOP+AspectJ示例中,让您轻松实现拦截方法。常见AspectJ的注解:@Before–方法执行前运行 @After–运行在方法返回结果后 @AfterReturning–运行在方法返回一个结...

2019-03-12 12:37:12 165

转载 java虚拟机内存管理机制(一)

近期看了看Java内存泄露的一些案例,跟原来的几个哥们讨论了一下,深入研究发现JVM里面还是有不少以前不知道的细节,这里稍微剖析一下。先看一看JVM的内部结构——如图所示,JVM主要包括两个子系统和两个组件。两个子系统分别是Class loader子系统和Execution engine(执行引擎) 子系统;两个组件分别是Runtime data area (运行时数据区域)组件和Native ...

2019-03-12 12:36:47 102

转载 Java虚拟机中的内存设置详解

在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。  PermGen space:全称是PermanentGenerationspace.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域Heapspace:存放Instance。  GC(GarbageCo...

2019-03-12 12:36:40 286

转载 高并发负载均衡(一)——企业架构分析和DNS

高并发负载均衡(一)——企业架构分析和DNS最近研究了几个关于阿里研究院对于高并发的解决方案,总结一下,涨涨姿势。企业级web项目架构图1、客户端通过企业防火墙发送请求2、在App服务器如tomcat接收客户端请求前,面对高并发大数据量访问的企业架构,会通过加入负载均衡主备服务器将请求进行转发到不同web服务其中。3、服务器通过访问数据库进行交互,同样高...

2019-03-12 12:36:19 213

转载 高并发负载均衡(二)——Nginx 和LVS

高并发负载均衡(二)——Nginx 和LVS在上一篇博客中介绍到实现负载均衡主要可以通过软、硬件两个方面进行,例如硬件上购买RadWare等硬件设备,或者通过软件策略实现负载均衡。软件策略上使用广泛有Nginx和LVS在介绍两款工具之前,先聊聊负载均衡的应用场景普通web应用部署到多台应用服务器上,客户端通过访问应用服务器发送请求,最简单的就是n对1模式,n个客户端访问同一个应...

2019-03-12 12:36:12 252

转载 互联网一致性架构实践

互联网一致性架构实践单机部署必然不会出现保证一致性的系统设计,一致意味着至少大于等于2台服务节点,才有必要考虑双机数据一致的问题。数据多种类型,如上提到的session数据、db集群数据、缓存与db的数据。从具体到抽象,先分别看看各种数据类型在保证一致性方面的经典方式,再通而总之,看看各数据保证一致性是否有通用的设计思路。Session一致性多个web服务,nginx请求分发默...

2019-03-12 12:36:04 178

转载 Java虚拟机:为什么新生代内存需要有两个Survivor区

Java虚拟机:为什么新生代内存需要有两个Survivor区在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1、为什么要有Survivor区:先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里?如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满...

2019-03-12 12:35:56 394

转载 Spring学习(十五)----- Spring AOP通知实例 – Advice

Spring学习(十五)----- Spring AOP通知实例 – AdviceSpringAOP(面向方面编程)框架,用于在模块化方面的横切关注点。简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,SpringAOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。在SpringAOP中,有 4 种类型通知(advices)的支持: 通知(Advic...

2019-03-06 13:26:33 103

转载 Springboot中Aspect实现切面(以记录日志为例)

前言今天我们来说说spring中的切面Aspect,这是Spring的一大优势。面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提取出去,便于后期的维护和迭代。好了,废话少说!我们直接步入正题以系统日志为例首先,我们先做一些准备工作。1、新建一个Springboot工程2、添加必要的依赖AOP 必须...

2019-03-06 13:26:17 129

转载 Spring-AOP用法总结

Spring-AOP用法总结前言Spring AOP的实现方法很多,在项目开发中具体采用什么方式,需要按实际情况来选择,每一种的用法,有其一定的实用价值,所以本文将各种使用方法进行了具体实现。主要包括Advice的before、after、throwing、around四种拦截方式的实现,如何进行正则匹配,自动化代理及AspectJ注解形式的实现。AOP的定义 ...

2019-03-06 13:26:05 154

转载 深入了解JVM的底层原理

深入了解JVM的底层原理引言:什么是JVM?JVM在整个jdk(java 运行环境)中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机. 操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用...

2019-03-06 13:25:39 160

转载 JAVA常用加解密算法总结及JAVA实现

BASE64,MD5,SHA,DES,3DES,AES,RSABASE64这其实是一种编解码方法,但是只要我们能够将原文变成肉眼不可识别的内容,其实就是一种加密的方法。BASE64 的编码都是按字符串长度,以每 3 个 8 bit 的字符为一组,然后针对每组,首先获取每个字符的 ASCII 编码,然后将 ASCII 编码转换成 8 bit 的二进制,得到一组 3*8=24 bit...

2019-03-06 13:25:31 733

空空如也

空空如也

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

TA关注的人

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