自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring属性拦截器@InitBinder搭配@RequestBody使用

前言:Spring属性拦截器@InitBinder搭配@RequestBody使用,导致dto内属性拦截不到的问题。查找了许多文档,发现原文里面说了,用@RequestBody注释的的确不生效,但我们又有这个需求,怎么办呢,经过我研究,阅读源码之后决定用反射来实现一些我们需要的功能,写到最后发现可以用拦截器或者aop实现有可能会更简单一点,但还是记录一下吧,给大家参考,把代码贴出来,大家一...

2020-04-21 17:07:12 1296 1

转载 spring cloud 二刷总结摘抄记录

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud...

2019-06-13 16:16:30 260

原创 POST请求https遇到unable to find valid certification path to requested target

完整异常信息为:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid ce...

2019-05-23 18:17:33 1894

原创 线程学习4:join方法的使用

package com.research;/** * join方法 * 原理: * 从源码中可以看到:join方法的原理就是调用相应线程的wait方法进行等待操作的, * 例如A线程中调用了B线程的join方法,则相当于在A线程中调用了B线程的wait方法, * 当B线程执行完(或者到达等待时间),B线程会自动调用自身的notifyAll方法唤醒A线程, * 从而达到同步...

2019-03-22 16:52:58 190

原创 线程学习3:ThreadGroup线程组

package com.research;/** * 线程组 * ①定义线程组 * ThreadGroup类中有 2个构造方法,它们用来定义线程组。这 2个构造方法的使用格 式如下: * public ThreadGroup(String name); * public ThreadGroup(ThreadGroup parent,String name);...

2019-03-22 16:30:49 275

原创 线程学习2:带返回值的线程Callable和FutureTask

package com.research;import java.util.Date;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent....

2019-03-22 16:26:09 200

原创 线程学习1:ThreadLocal的使用

线程局部变量;对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。栗子:结果:可以看到输出的线程顺序并非最初定义线程的顺序,理论上可以说明多线程应当是并发执行的,但是依然可以保持每个线程里面的值是对应的,说明...

2019-03-22 16:23:34 180

原创 stripe国际支付(对接支付宝、微信)

前言:stripe国际支付现在网上资料很少,且不支持中国,所以如果要用需要去支持的国家注册商户,官网的java demo是用的spark框架,我这里用的spring,验签需要手动验签,且不能用官网的方法正文:支付宝文档地址:https://stripe.com/docs/sources/alipay微信支付文档地址:https://stripe.com/docs/sources/wec...

2019-03-11 15:18:59 21797 12

原创 支付宝APP支付

支付宝支付和微信支付一样,后端只需要关心三个接口,其他的交给前端,前端集成sdk去操作https://docs.open.alipay.com/204<!-- 支付宝支付官方SDK --><dependency> <groupId>com.alipay.sdk</groupId> <artifactId>al...

2019-03-11 10:20:10 584

原创 微信APP支付

前言:最近公司接了个商城项目,被分到了做微信支付,支付宝支付和stripe国际支付,在此记录一下。正文: 微信支付接入方式分很多种如下:比如h5,大部分业务几乎都在后台,而app支付一半在前端一半在后端,我这里讲的是app支付官方说明文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1...

2019-03-11 10:15:33 369

原创 使用切面AOP实现全局乐观锁

最近项目需要版本号乐观锁,但发现每个需要加锁的地方都要做处理发现很繁琐很臃肿,所以使用aop切面+自定义注解来抽取实现乐观锁。第一步使用@Aspect需要pom引入 <!--使用AspectJ方式注解需要相应的包--><dependency> <groupId>org.aspectj</groupId> <ar...

2019-01-03 18:28:52 1207

原创 百万级数据EXCEL导出--easyexcel

easyexcel 项目git地址为: https://github.com/alibaba/easyexcel官方使用指南见: https://github.com/alibaba/easyexcel/blob/master/quickstart.md官方介绍:Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套...

2019-01-03 10:06:51 17877 17

原创 WebMagic爬虫(二)升级版

我在爬取页面的时候发现有很多数据是js渲染进去的,通过:String htm = page.getHtml().xpath("*/html/html()").toString();page.putField("html",htm);就可以看到爬取下来的页面数据,可以很清晰的看出页面里面有没有自己想要的数据,如果没有,那么我们就需要进一步操作!如果数据是ajax请求过来的,那么可以参...

2018-12-19 11:09:26 1085

原创 WebMagic爬虫(一)基础版

WebMagic是码云上面一个很热门的爬虫框架,非常好用便捷地址:https://gitee.com/flashsword20/webmagic  感谢作者爬取一个页面的时候,有些网站会通过js渲染或者通过ajax渲染,普通的无渲染就可加载出来的页面此篇文件介绍,通过js简单渲染处理的数据下篇文章,要是用户想爬取ajax渲染出来的数据,请参考WebMagic文档作者介绍的方法:http:/...

2018-12-19 10:36:31 243

原创 for循环中控制事务单个提交问题

最近有个业务是for循环里面,循环一次业务提交一次,过程中发现事务不能提交,总结一下这个问题第一点:我用的是通用mapper,用到他的updateByPrimaryKeySelective方法,这个方法必须设置主键,不然他的where后面会带上所有字段造成sql错误第二点:用spring来做声明式事务的话,方法直接调用内部方法是不会走到代理类的,也就是不会走到切面,所以@Trans...

2018-12-18 11:52:29 13573 4

原创 通过url下载图片到本地

/** * 文件或文件夹不存在则创建 * @param dir 文件夹 * @param filepath 文件名 */public static void createDirFile(String dir){ File file = new File(dir); if(!file.exists()){ file.mkdirs(); }}/**...

2018-12-17 11:30:59 1786

原创 springboot返回值国际化处理

一:启动类内配置二:国际化文件三,拦截器 package com.otcbi;import com.otcbi.common.dto.OperateResult;import com.otcbi.common.utils.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;...

2018-12-07 11:35:58 6932 1

原创 mysql 事务没提交锁表解决方案

select * from information_schema.innodb_trx;查看堵塞的线程,直接kill  trx_mysql_thread_id这个id

2018-12-05 13:56:14 706

原创 热部署插件jrebel

近乎无感的热部署,不用频繁启动服务,可以说是爽歪歪,以下为springboot的方式使用jrebel安装:激活后设置成离线模式2019年五月十四重新上一下线就行,激活链接从某包几块钱买的,买个方便启动修改某个文件出现:应用成果...

2018-11-15 18:21:30 243

原创 SpringBoot集成Swagger2

Swagger2是一款RESTFUL接口在线生成工具,对于我们开发非常方便第一笔引入pom: &lt;!-- swagger2 --&gt;&lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger2&lt;/artifactI...

2018-11-05 14:53:57 215

原创 Mybatis generator 代码 自动生成插件

前言:使用IDEA搭建springboot+mybatis框架,自动生成基础文件和mapping.xml第一步:在pom文件中: &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;...

2018-10-26 10:53:05 184

原创 安全框架Shiro

shiro认证: package com.research.shiro;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.mgt.DefaultSecurityManager;import...

2018-08-27 14:46:34 230

原创 nginx配置反向代理

nginx是一款高性能的web服务器,反向代理服务器也是一个邮件代理服务器。她是http轻量级的,支持高并发。工作方式:Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是nginx配置中的一个指令,由于URL匹配),而这个location中所配置的每个指令将会启...

2018-08-24 10:26:05 700

转载 Netty实现WebSocket通信案例

Netty开发服务端,HTML实现客户端,实现服务端与客户端的实时交互。1.存储整个工程的全局配置: package com.research.netty.WebSocket;import io.netty.channel.group.ChannelGroup;import io.netty.channel.group.DefaultChannelGroup;import ...

2018-08-21 17:21:08 775

原创 BIO,伪异步IO,NIO,AIO与Netty

BIO(阻塞IO)一个线程负责连接,一请求一应答,缺乏弹性伸缩能力。 伪异步IO通信(BIO优化版本)线程池负责连接,M请求N应答,线程池阻塞。伪异步IO是BIO的一个优化方案。创建N个线程的线程池对请求进行处理,由于线程池可创建大小,所以资源是可控的,当并发很大时也不会造成资源耗尽或者当机,但当有大量客户端接入的时候会造成线程池阻塞。 NIO通信(非阻塞IO,...

2018-08-21 15:13:36 968

原创 WebSocket下的聊天室

       websocket是解决客户端与服务器端实时通信而产生的技术。       websocket协议允许在客户端和服务端之间建立一条双向传递信息的通道,它是建立在TCP协议之上的,首先通过”握手“来确认和建立通道,之后客户端和服务端可以通过这个通道传递信息,而不需要再次发起请求,而且客户端和服务端都可以主动的发送消息。这种技术不依赖于HTTP连接(比如XMLHttpRequest,...

2018-08-17 09:59:48 250

原创 IDEA 普通本地jar项目导入

1.从svn拉下项目2.打开project Struct...3.配置4.编码5.选择编译器6.添加tomcat并启动 

2018-07-25 12:10:49 2312

转载 Java内存泄漏问题--java既然存在垃圾回收机制,为什么还存在内存泄漏?

1.什么叫内存泄漏?简单来说就是一个东西放在内存里的时间太长了,当你的程序都跑完了,它还存在那里。这时它是白白的占用了你的内存,累积起来占用的内存越来越多……最后就会导致JVM报错:out of memory。他占用的是我们的物理内存。2.java内存泄漏的根本原因是?内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。3.java既然存在gc线程,为什么还存在内存泄漏?这个...

2018-07-12 17:19:09 1678

原创 jsonp跨域

1.只能用get方法前端:$.ajax({      type: "get",      async: false,     url: "https://www.***.com/to/getBankRankingDate",      dataType: "jsonp",      jsonp: "theFunction",   //指定参数名称     /* jsonpCallbac...

2018-07-12 09:38:59 139

原创 Spring Cloud 小结

       这段时间通过学习spring cloud逐渐明白了spring cloud的整个生态圈。       使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;使用Zuul服务网关,统一对外端口,实现负载均衡,服务过滤。通过Spring Cloud Config实现了应用多环境的外...

2018-07-03 14:14:54 240

原创 Spring Cloud -- 5 消息总线

RabbitMQ安装Windows安装安装Erland,通过官方下载页面http://www.erlang.org/downloads获取exe安装包,直接打开并完成安装。安装RabbitMQ,通过官方下载页面https://www.rabbitmq.com/download.html获取exe安装包。关于版本问题:一开始博主erland安装的21.0,rabbitmq安装的3.7.6,服务正常启...

2018-07-03 11:22:34 187

原创 Spring Cloud -- 4 服务网关

我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。在该架构中,我们的服务集群包含:内部服务S...

2018-06-30 00:43:37 220

原创 Spring Cloud -- 3 分布式配置中心

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。构建配置中心项目:pom.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem...

2018-06-30 00:43:23 165

原创 Spring Cloud -- 2 断路器

   在微服务架构下,通常会有多个层次的服务调用,一个微服务的超时失败可能导致瀑布式连锁反映,最终导致整个系统的瘫痪,这样的架构相较传统架构就更加的不稳定。为了解决这样的问题,因此产生了断路器模式。   当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故...

2018-06-30 00:43:07 438

原创 Spring Cloud -- 1 服务注册中心,服务注册与发现

      Spring Cloud利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,给开发者留出一套简单易懂、易部署和易维护的分布式系统开发工具包。   “微服务架构”在这几年非常的火热,什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful A...

2018-06-30 00:42:47 287

原创 Spring Boot11--使用Spring Security进行安全控制

我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。&lt;dependency&gt; ...

2018-06-30 00:41:57 247

原创 Spring Boot10--AOP的使用(本例展示统一处理Web请求日志)

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各...

2018-06-30 00:41:41 213

原创 Spring Boot-9--事务

通常我们单元测试为了保证每个测试之间的数据独立,会使用@Rollback注解让每个单元测试都能在结束时回滚。而真正在开发业务逻辑时,我们通常在service层接口中使用@Transactional来对各个业务逻辑进行事务管理的配置。事务详解上面的例子中我们使用了默认的事务配置,可以满足一些基本的事务需求,但是当我们项目较大较复杂时(比如,有多个数据源等),这时候需要在声明事务时,指定不同的事务管理...

2018-06-30 00:41:22 146

原创 Spring Boot8--log4j日志记录

在创建Spring Boot工程时,我们引入了spring-boot-starter,其中包含了spring-boot-starter-logging,该依赖内容就是Spring Boot默认的日志框架Logback,所以我们在引入log4j之前,需要先排除该包的依赖,再引入log4j的依赖,就像下面这样:log4j不加版本号会报错在引入了log4j依赖之后,只需要在src/main/resour...

2018-06-29 09:35:24 183

原创 Spring Boot7--使用@Async实现异步调用

“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。先测试一下同步调用:书写同步调用测试用例:运行后输出:开始做任务一完成任务一,耗时:9723毫秒开始做任务二完成任务二,耗时:3498毫秒开始做任务三完成任务三,耗时:7015毫秒上述的同步调用虽然顺利的...

2018-06-29 09:34:58 185

空空如也

空空如也

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

TA关注的人

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