自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AOP通过连接点获取Method异常(java.lang.NoSuchMethodException)

AOP获取Method异常 java.lang.NoSuchMethodException问题在用AOP做日志的时候,出现了java.lang.NoSuchMethodException无法获得Method的异常。原方法/** * 获取日志注解参数 * @param joinPoint * @return * @Date 2018年11...

2018-11-11 23:51:07 3745 6

原创 Spring Boot集成Redis及RedisTemplate常用操作

Spring Boot集成Redismaven依赖 <!-- redis 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId&...

2018-11-07 12:47:02 3260

原创 Spring Boot配置文件properties数据库密码加密

Spring Boot配置文件数据库密码加密pom添加依赖 <!-- 数据库加密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-b...

2018-11-04 16:44:23 10349 2

原创 Spring Boot 使用JPA(Hibernate)操作数据库

使用JPA(Hibernate)操作数据库JAP(Java Persisitence API),定义了对象关系映射(ORM)以及实体对象持久化的标准接口。概述在spring boot中JPA是依靠Hibernate才得以实现的。JPA所维护的核心是实体(Entity Bean),而它是通过一个持久化上下文(Persinstence Context)来使用的。持久化上下文包含以下3个部分:...

2018-11-04 16:35:50 1727

原创 Spring Boot 使用JdbcTemplate操作数据库

使用JdbcTemplate操作数据库配置数据源以MySQL作为自定义数据源。首先在pom.xml中去除对h2的依赖。保留spring-boot-starter-data-jpa的依赖,然后增加Mysql的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif...

2018-11-04 16:34:27 1420

原创 SSO单点登陆基于Session简单实现

SSO单点登陆基于Session简单实现单点登陆活动图废话不多说直接上代码咯,什么好处,实现原理相关资料baidu去,基本都一样,就不复制了1 服务端代码1.1 登陆跳转注销代码controller层代码package com.ffcs.sso.controller; import javax.servlet.http.HttpSession; import or...

2019-08-23 16:29:35 1084

原创 Spring的Bean的生命周期(源码分析)

Spring的Bean的生命周期(源码分析)一、 BeanPostProcessor接口定义package org.springframework.beans.factory.config; public interface BeanPostProcessor { Object postProcessBeforeInitialization(Object bean, Stri...

2019-08-19 09:30:24 1736

原创 Spring中的Bean的生命周期流程

Spring中的Bean的生命周期流程一、生命周期Bean的完整生命周期图如下1.1 容器启动时BeanFactoryPostProcessor->postProcessBeanFactory() ;1.2 实例化之后调用InstantiationAwareBeanPostProcessor ->postProcessPropertyValues()1.3 Bean初始...

2019-08-16 17:43:38 723

原创 ApacheBench简介

ApacheBench简介ApacheBench 是一个用来衡量http服务器性能的单线程命令行工具。原本针对Apache http服务器,但是也适用于其他http服务器。ab工具与标准 Apache源码一起发布,免费,开源,基于Apache License。这个工具返回的最有用的信息就是服务器每秒能够处理的请求次数(RPS),不过由于测试的页面不同,RPS相差会很大,静态页面的RPS大于动...

2019-08-15 10:23:24 1144

原创 远程显示Linux服务器GUI程序——VisualVM

远程显示Linux服务器GUI程序——VisualVM一、简介有些时候,有些程序可能需要依赖图形界面才能启动,例如安装Oracle时(其实oracle支持命令行安装),例如需要启动一个图形界面的浏览器如firefox。作为服务端的系统,通常不会安装臃肿的图形界面。那么如何在不安装图形界面的的情况下启动图形界面的?听起来很矛盾,但是实际上是可行的。X Window System(常被简称为...

2019-08-15 10:21:50 1134

原创 VisualVM连接远程Java进程

VisualVM连接远程Java进程JMX方式配置脚本文件在$CATALINA_HOME/bin/startup.sh 倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上边)写入下面的内容:export CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote-Djava....

2019-08-14 14:15:24 776 1

原创 Java性能分析器VisualVM

Java性能分析器VisualVM准备工作自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于 JDK 根目录的 bin 文件夹下,无需安装,直接运行即可。内存分析篇VisualVM 通过检测 JVM 中加载的类和对象信息等帮助我们分析内存使用情况,我们可以通过 VisualVM 的监视标签对应用程序进行内存分析。1)内存堆Heap首先我们来看内存堆H...

2019-08-14 14:13:54 181

原创 Too many open files解决方法

Too many open files解决方法问题早上到公司发现负责的一个项目打不开了,因为其他项目都依赖于这个模块,所有导致所有项目都无法运行。赶紧排查问题。首先看了日志,发现报错信息为Too many open files然后查看ulimit命令查看文件配置,如下这里发现默认每个进程打开的文件最大个数是1024。接着我取项目的进程id查看项目打开文件数目,如下发现一共打开了...

2019-06-03 14:52:42 2492

原创 Slf4j MDC使用和基于Logback 的实现分析

Slf4j MDC使用和基于Logback 的实现分析MDC介绍日志可以让我们追踪各种线上问题。但是,在分布式系统中,各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程。因此,我们可能需要对一个用户的操作流程进行归类标记,比如使用线程+时间戳,或者用户身份标识等;如此,我们可以从大量日志信息中grep出某个用户的操作流程,或者某个时间的流转记录。因此,这就有了 Slf4j MDC 方...

2019-04-04 16:45:36 744

原创 logback异步性能测试

logback异步性能测试日志通常来说都以文件形式记录到磁盘,例如使用,这样的话一次写日志就会发生一次磁盘IO,这对于性能是一种损耗,因此更多的,对于每次请求必打的日志(例如请求日志,记录请求API、参数、请求时间),我们会采取异步写日志的方式而不让此次写日志发生磁盘IO,阻塞线程从而造成不必要的性能损耗。(不要小看这个点,可以网上查一下服务端性能优化的文章,只是因为将日志改为异步写,整个QPS...

2019-04-01 08:56:10 2353

原创 logback自定义Appender和Layout

logback自定义Appender和LayoutAppender是logback中最重要的组件之一,它委托encoder组件来完成LoggingEvent的格式化和记录,具体源码分析网上有很多, 本文主要是应用实践.Layout组件来将LoggingEvent进行格式化,返回一个String,然后通过OutputStream.write()方法,把格式化之后的日志信息写到目的地.重写输...

2019-03-26 17:14:03 2681 1

原创 logback自定义日志格式

logback自定义日志格式1.ClassicConverter继承ClassicConverterpackage com.demo.conf; import ch.qos.logback.classic.pattern.ClassicConverter;import ch.qos.logback.classic.spi.ILoggingEvent; import java.net...

2019-03-25 09:22:52 3691

原创 logback详解

logback详解1 简介logback是由log4jCeki Gülcü开发的开源日志组件,可以说是log4j的改进版;在现如今的项目中,logback的出现次数越来越多,是目前主流首选的日志记录工具。logback大约有以下的一些优点:内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升logback非常自然地直接实现了slf4j,这个严...

2019-03-22 08:44:35 2021

原创 Java日志框架总结

Java日志框架总结常用日志框架Commons-logginCommons-loggin是apache最早提供的日志的门面接口。它的主要作用是提供一个日志门面,使用者可以使用不同的日志实现。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。common-logg...

2019-03-21 17:54:38 296

转载 Java日志框架概述

【转】原文链接https://www.cnblogs.com/chenhongliang/p/5312517.htmlJava日志框架概述对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。...

2019-03-21 17:53:34 214

原创 Spring-Session实现原理以及源码解析

Spring-Session实现原理以及源码解析本篇介绍Spring-Session的整个实现的原理。以及对核心的源码进行简单的介绍!实现原理介绍实现原理这里简单说明描述:就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务器创建会话的过程转交给Spring-Session进行创建,本来创建的会话保存在Web服务器内存中,通过Spring-S...

2019-03-13 16:50:58 659

原创 Spring-Session Session共享

Spring-Session Session共享任何一种技术的出现,都是来解决特定的问题的!本篇开始学习Spring-Session相关的一些知识学习整理,让我们开始吧!Spring-Session介绍Spring-Session使用的场景?HttpSession是通过Servlet容器进行创建和管理的,在单机环境中。通过Http请求创建的Session信息是存储在Web服务器...

2019-03-12 18:30:14 208

原创 Cookie的基本操作

Cookie的基本操作我们先来看下几个属性。了解这几个属性之后,就知道如何进行Cookie的操作了。nameCookie的名称。valueCookie的值。maxAgeCookie的失效时间,有以下几种值,默认为-1值说明负数浏览器关闭后cookie就失效0马上清除cookie正数设置过期时间,单位:秒pathCookie的有效路径, ...

2019-03-07 08:52:55 391

原创 RabbitMQ安装

RabbitMQ安装CentOS7版本安装依赖环境C++环境yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel httpd python-simplejsonErLang环境#安装文件获取wget http://erlang.org/d...

2019-02-21 16:28:41 193

原创 RabbitMQ 在生产环境下运用和出现的问题

RabbitMQ 在生产环境下运用和出现的问题在生产环境中,由于 Spring 对 RabbitMQ 提供了一些方便的注解,所以首先可以使用这些注解。例如:@EnableRabbit:@EnableRabbit 和 @configuration 注解在一个类中结合使用,如果该类能够返回一个 RabbitListenerContainerFactory 类型的 bean,那么就相当于能够把该终...

2019-02-15 09:56:47 3104

原创 RabbitMQ(五)延时任务

RabbitMQ(五)延时任务延时队列顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行一场处理。这是就可以使用延时队列将订单信息发送到延时队列。场景二:用户希望通过手机远程遥控家里的智能设备在指定的时间进行工作。...

2019-02-13 09:48:33 3950

原创 RabbitMQ(四)消息Ack确认机制

RabbitMQ(四)消息Ack确认机制确认种类RabbitMQ的消息确认有两种。消息发送确认:这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。消费接收确认。这种是确认消费者是否成功消费了队列中的消息。环境配置为了测试,我们先配置rabbit环境引入Maven依赖 ...

2019-02-07 15:41:59 15758 1

原创 RabbitMQ(三)消息序列化

RabbitMQ(三)消息序列化MessageConvert涉及网络传输的应用序列化不可避免,发送端以某种规则将消息转成 byte 数组进行发送,接收端则以约定的规则进行 byte[] 数组的解析RabbitMQ 的序列化是指 Message 的 body 属性,即我们真正需要传输的内容,RabbitMQ 抽象出一个 MessageConvert 接口处理消息的序列化,其实现有 Simpl...

2019-01-31 15:59:05 13783

原创 RabbitMQ(二)Spring boot集成

RabbitMQ(二)Spring Boot集成Spring Boot集成RabbitMQ非常简单,如果只是简单的使用配置非常少,Spring Boot提供了spring-boot-starter-amqp项目对消息各种支持。简单使用1、配置pom包主要是添加spring-boot-starter-amqp的支持<dependency> <groupId>or...

2019-01-25 18:51:59 273

原创 RabbitMQ(一)RabbitMQ消息队列基础知识详解

RabbitMQ消息队列基础知识详解RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不...

2019-01-24 19:41:05 1066

原创 Spring Boot中过滤器Filter具体实现

Spring Boot中过滤器Filter具体实现1.通过 @Bean 注解来配置实现Filter接口package com.lay.spring.filter.demo01;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;...

2019-01-22 14:35:28 1269

原创 Filter过滤器工作原理

Filter过滤器工作原理Filter简介Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。  Servlet API中提...

2019-01-21 10:46:43 8105

原创 Spring Async异步线程

Async异步线程TaskExecutorSpring异步线程池的接口类,其实质是java.util.concurrent.ExecutorSpring 已经实现的异常线程池:SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地...

2019-01-18 12:49:30 331

原创 Spring Event事件驱动

Spring Event事件驱动事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点:首先是一种对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方);当目标发送改变(发布),观察者(订阅者)就可以接收到改变;观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系。接下来...

2019-01-14 09:46:25 854

原创 设计模式(二十三)访问者模式

访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。介绍意图 :主要将数据结构与数据操作分离。主要解决 :稳定的数据结构和易变的操作耦合问题。何时使用 :需要对一个对...

2019-01-10 10:35:46 183

原创 设计模式(二十二)模板模式

模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图 :定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决 :一些方法通用,却在每一个子类都重新写了...

2019-01-10 10:33:52 156

原创 设计模式(二十一)策略模式

策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图 :定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决 :在有多种算法相似的情况下,使...

2019-01-10 10:31:23 179

原创 设计模式(二十)状态模式

状态模式在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。介绍意图 :允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决 :对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何...

2019-01-03 09:13:16 166

原创 设计模式(十九)观察者模式

观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图 :定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决 :一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用 :一...

2019-01-03 09:11:34 191

原创 设计模式(十八)中介者模式

中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。介绍意图 :用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决 :对象与对象之间存在大量的关联关系,...

2019-01-02 10:04:09 177

空空如也

空空如也

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

TA关注的人

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