自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ginny_2019的博客

知易行难

  • 博客(117)
  • 收藏
  • 关注

转载 Spring boot使用spring retry重试机制

转载自:https://www.cnblogs.com/springforall/p/12143060.htmlSpring boot使用spring retry重试机制当我们调用接口的时候由于网络原因可能失败,再尝试就成功了,这就是重试机制。非幂等的情况下要小心使用重试。tips:幂等性HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。注解方式使用Spr

2020-11-17 18:00:30 413

原创 Java Lamda实现分页

最近遇到项目中遇到需要查询不同的库获取到数据,在内存中进行分页,可以通过List的Stream进行分页。List<PlayerSnVo> list = demoMapper.findList(oid, snCodeOrName);List<PlayerSnVo> result = new ArrayList<>();if(list.size > 0){ result = list.stream().skip(pageSize * (pag...

2020-09-15 11:16:49 620

原创 SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”

说明缺少slf4j的包,加上依赖就可以了。<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> <scope>test</scope> </dependency>...

2020-06-12 18:20:50 587 1

原创 Java&PHP互通实现RSA的加密算法

最近在使用java重构php代码,真的是感叹php的封装太强大,这两天研究了RSA的算法,起因是需要访问php的接口,接口需要认证。 但是最后发现,用java生成的签名(sign),通过php去验证(verify)是行不通的, 原因是两者内部生成的签名是又区别的。PHP的签名中的私钥是PKCS1格式, 但是Java是PKCS8格式,导致两者最后生成的(sign)签名是不一致的,所以在验证过程中也就不会验证(verify)成功了。需要成功,必须是java生成,java验证才可以,不过还是记录一下本次的经验吧

2020-06-09 20:01:50 384

原创 Maven导入org.apache.commons.codec或commons-codec.jar包

背景:项目中需要使用Base64, 进行加密,发现jdk中的Base64无encodeBase64和encodeBase64String,于是发现apache的commons-codec.jar包,下面是maven/gradle导入该包的官网连接。官网连接https://mvnrepository.com/artifact/org.apache.directory.studio/org.apache.commons.codec/1.8Maven<!-- https://mvnreposito

2020-06-08 18:56:18 31270

原创 Redis setnx 实现分布式锁

今天在项目里遇到一个并发问题,先看看问题描述:我们的服务消费rabbitmq中的消息, 需要将消息中的内容同步到redis中,但在消费时,消息B先消费结束,消息A消费时覆盖了B的结果,导致不一致。解决方案:使用redis的setnx解决, 首先分析下为什么 redis setnx 能实现分布式锁功能。第一 . redis本身相对于我们的多实例分布式应用程序来说,它是可全局共享的,每个实例都能访问同一个redis服务器。第二 . redis的操作都是原子性的。第三. 来看下redis的set

2020-06-04 17:50:57 618

原创 Java如何获取进程ID

项目中需要获取进程ID,查了一下,可以通过ManagementFactoryManagementFactory是一个在运行时管理和监控Java VM的工厂类,它能提供很多管理VM的静态接口,比如RuntimeMXBean;可参考博客:https://blog.csdn.net/zgljl2012/article/details/50989976/RuntimeMXBean是Java虚拟机的运行时管理接口. @JvmStatic fun getProcessId() {

2020-06-03 17:29:56 575

原创 Java通过form-data传参调用第三方接口

今天被PHP同事问到, 你们java中在postman通过form-data传参,怎么获取不到参数? 研究后发现是在调用时,传参的方式有问题,导致无法获取到参数。那首先得先了解一下我们平时使用postman传参时的几种方式。下面postman中的几种传参方式:01. form-data/multiparthttp请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传是文件时,会有Content-Typ...

2020-06-03 17:18:44 9781 1

原创 Java / Kotlin 获取通过IP获取经纬度

MaxMindMaxMind公司成立于2002年,是领先业界的IP智能与在线欺诈检测工具供应商。MaxMind通过GeoIP品牌提供IP智能服务。GeoIP1. Gradledependencies { compile 'com.maxmind.geoip2:geoip2:2.13.1'}2. Maven<dependency> <groupId>com.maxmind.geoip2</groupId> <arti...

2020-05-28 11:36:23 617

原创 Vertx+Kotlin之MonogoDB

最近项目在使用Vertx + Kotlin, 下面是Vertx的mongo实现方式一. 通过gradle引入mongo的包compile (“io.vertx:vertx-mongo-client:${vertxVersion}”)二. 创建Mongo的RepositoryMongoClien有两个包,此处引入的是port io.vertx.ext.mongo.MongoClientclass MongoRepository @Inject constructor(vertx: Vertx, @N

2020-05-22 18:39:49 247

原创 Kotlin的基本语法

Kotlin中文官网: https://www.kotlincn.net/docs/reference/val positives = list.filter { x -> x > 0 }val positives = list.filter { it > 0 }检测元素是否存在于集合中if ("[email protected]" in emailsList) { ...

2020-04-30 16:31:37 163

转载 Guice 的工作原理

Guice 的工作原理总的来说:Guice:整个框架的门面Injector:一个依赖的管理上下文Binder:一个接口和实现的绑定Module:一组 BinderProvider:bean 的提供者Key:Binder中对应一个 ProviderScope:Provider的作用域每个绑定 Binding的结构如下:public interface Binding<T...

2020-04-30 16:28:44 438

原创 LocalDateTime的使用

1.将LocalDateTime转为自定义的时间格式的字符串 1 2 3 4 public static String getDateTimeAsString(LocalDateTime localDateTime, String format) {   DateTimeFormatter formatter = DateTimeFo...

2020-04-21 16:28:30 434

转载 Gradle简介

初识GradleGradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。怎么看上面都是一段很官方的解释,对于入门的人来说简直是一个噩梦般的解释(包括以前的我)。那下面我就用通俗一点语言说说我的理解...

2020-04-10 11:47:28 397

转载 Gradle与Maven的区别

Gradle作为一款基于Groovy语言的构建工具,已经吸引众多的ant,maven使用者转投gradle的怀抱,和Gradle相比,ant显得冗余复杂,maven显得有些死板落后,而gradle基于DSL语法,特点明显:简洁、灵活、可读性强。Gradle和maven有很多相似点,gradle充分考虑到maven库的价值,在jar包管理上完全支持maven Repository,很多属性乍眼一...

2020-04-10 11:23:04 2871

原创 WARN: Establishing SSL connection without server's identity verification is not recommended

问题描述注:请注意:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果不设置显式选项,则必须建立默认的SSL连接。您需要通过设置useSSL=false显式地禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储解决方案jdbc:mysql://127.0.0.1:3306/test?useU...

2020-04-03 18:43:20 335

原创 IDEA设置类的文件头注释(@Author)

IDEA设置类的文件头注释(@Author)模板样式:/** * @Author ${USER} * @create ${DATE} ${TIME} */ /** * Created by ${USER} on ${DATE}. *//** * Created by IntelliJ IDEA. * User: ${USER} * Date: ${DATE} */...

2020-04-03 09:47:34 1114

原创 git生成并添加SSH key

git生成并添加SSH key01. 安装Git Bashhttps://git-scm.com/downloads02. 在桌面鼠标点击邮件 - git bash here03. 执行以下命令:1> cd ~/.ssh/2> ssh-keygen -t rsa -C “[email protected]”> 注:一直点击Enter3> cat id_rsa.pub...

2020-04-02 17:43:10 185

原创 java -jar jar包名 命令提示没有主清单属性

问题最近在学习Vert过程,启动类遇到命令提示没有主清单属性, 主要原因是pom文件中没有找到程序的入口。解决方法是:在pom.xml文件中添加如下配置(重点是标签,用来指定入口类的路径,如果有包名,在前面写就可以了)还有一种方法是打开jar包里的MANIFEST.MF文件,在里面添加Main-Class:带包名的完整类名。至于这个MANIFEST.MF文件,是用来描述你这个jar包的一些...

2020-03-30 16:41:20 739

转载 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascrip...

2020-03-15 10:19:40 183

转载 nginx解决跨域问题

当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource,需要给Nginx服务器配置响应的header参数:一、 解决方案只需要在Nginx的配置文件中配置以下参数:location / { add_header Access-Control-Allow...

2020-03-15 10:17:37 222

原创 Spring Boot启动原理

找了很久的启动原理,这位博主的最全面,并且容易理解。https://www.jianshu.com/p/943650ab7dfd

2020-03-09 21:22:23 89

原创 Spring的StopWatch

StopWatch是位于org.springframework.util包下的一个工具类,通过它可方便的对程序部分代码进行计时(ms级别),适用于同步单线程代码块。StopWatch watch = new StopWatch();watch.start();watch.stop();logger.info("案件导入结束,耗时{}", watch.getTotalTimeMilli...

2020-01-05 20:36:03 680 1

原创 Spring - ReloadableResourceBundleMessageSource加载国际化源码分析

如何在springmvc框架中实现MessageSource来管理国际资源文件呢在你的src文件路径下新建messages.properties文件在启动类中:@Beanpublic MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new Rel...

2020-01-05 20:28:59 879

原创 何为RabbitMQ的死信队列(DLX)

https://www.cnblogs.com/theRhyme/p/10874409.html

2019-12-17 22:36:31 159

原创 全面理解 RPC 远程调用

https://baijiahao.baidu.com/s?id=1637758852641939872&wfr=spider&for=pcrpc和http的区别是什么 各自的优缺点有哪些rpc和http的区别是什么 各自的优缺点有哪些http://www.ccutu.com/244407.html...

2019-12-17 21:07:57 161

原创 MyBaits中的#和$的区别

在Mybatis的SQL xml映射文件中,有关参数传递的方法有两种,分别为#{}和${}。而这两种方式之间存在一定的差异。默认情况下,使用#{}格式的语法会导致Mybatis创建PreparedStatement参数并安全地设置参数(就像使用?一样)。这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在SQL语句中插入一个不转义的字符串。比如,像ORDER BY,你可以和这样来使用...

2019-11-19 15:39:02 291

原创 spring-boot-maven-plugin插件打包无法生成jar包

一,场景springboot 打包成可执行jar二,配置<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId...

2019-11-14 11:50:08 1282

原创 Redis面试题

以下所有面试题, 可参照博客https://blog.csdn.net/zhengzhaoyang122/article/details/82184029,写的非常详细。1.常见的缓存策略有哪些?2.Memcache的原理,哪些数据适合放在缓存中。3.redis和memcached 的内存管理的区别。4.如何做到缓存(比如redis)与DB里的数据一致性,你们项目中用到了什么缓存系统,如...

2019-11-13 16:24:36 313

转载 Java 8 中使用Stream将List转为Map

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。下面将详细讲解在Java 8 中如何使用Stream将List转换为Map,使用Collectors.toMap方法进行转换。背景:User类,类中分别有id,name,age三个属性。List集合,use...

2019-11-08 09:48:18 279

原创 HashMap的构造函数,hash, tableSizeFor的源码分析

一,静态默认参数//默认的初始容量16,且实际容量是2的整数幂,0000 0001=>向左移动4位 => 0001 0000static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//最大容量(传入容量过大将被这个值替换) //00000000 000000000000000 00000001=>...

2019-10-31 15:00:26 149

原创 HashMap的put源码解析

Put方法源码分析/** * Implements Map.put and related methods * * @param hash hash for key * @param key the key * @param value the value to put * @param onlyIfAbsent if true, don't change existing...

2019-10-30 14:45:05 148

转载 一条Sql的执行顺序

最近面试被问到一条sql语句的顺序,之前没有研究过,回来之后,仔细研究了一下。我们先来看看这条sql语句。Sql:SELECT XXX FROM XXX WHERE XXX GROUP BY XXX HAVING XXX ORDER BY XXX LIMIT XXX;下面是具体的步骤:1,一条查询的sql语句先执行的是FROM student负责把数据库的表文件...

2019-10-24 17:30:32 372

原创 CSS中获取显示器的宽度

最近在做Vue,需要获取显示器的宽度,最终搜索到一篇微博,可以在CSS中直接获取浏览器宽度。.solid{width: 100vw;height:calc(100vw / 750 * 230);}参考自:https://blog.csdn.net/weixin_33786077/article/details/90252715...

2019-10-12 16:34:31 2305

原创 CSS3自定义滚动条样式 -webkit-scrollbar

当内容超出容器时,容器会出现滚动条,其自带的滚动条有时无法满足我们审美要求,那么我们可以通过css伪类来实现对滚动条的自定义。首先我们要了解滚动条。滚动条从外观来看是由两部分组成:1,可以滑动的部分,我们叫它滑块2,滚动条的轨道,即滑块的轨道,一般来说滑块的颜色比轨道的颜色深。滚动条的css样式主要有三部分组成:  1、::-webkit-scrollbar 定义了滚动条整体...

2019-10-10 16:31:11 170

原创 JVM(Java 8)—永久代(PermGen)和元空间(Metaspace)

一,PermGen(永久代)绝大部分 Java 程序员应该都见过 "java.lang.OutOfMemoryError:PermGenspace"这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范,而后者则是 JVM 规范的一种实现,并且只有 HotSpot 才有“PermGen sp...

2019-10-09 15:33:13 429

转载 Java通信之IO演进(五)- NIO之Selector

一.Selector(选择器)介绍Selector一般称 为选择器,当然你也可以翻译为多路复用器。它是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。使用Selector的好处在于:使用更少的线程来就可以来处理通道了, 相比使用多个线程,避免了...

2019-09-17 19:00:34 105

转载 Java通信之IO演进(四)- NIO之Channel

一 Channel(通道)介绍通常来说NIO中的所有IO都是从 Channel(通道) 开始的。 从通道进行数据读取:创建一个缓冲区,然后请求通道读取数据。 从通道进行数据写入:创建一个缓冲区,填充数据,并要求通道写入数据。 数据读取和写入操作图示:Java NIO Channel通道和流非常相似,主要有以下几点区别: 通道可以读也可以写,流一般来说...

2019-09-17 17:50:52 161

原创 Java通信之IO演进(三)- NIO之Buffer

一. Buffer(缓冲区)介绍Java NIO Buffers用于和NIO Channel交互。 我们从Channel中读取数据到buffers里,从Buffer把数据写入到Channels.Buffer本质上会占用一块内存区,可以用来写入数据,并在稍后读取出来。这块内存被NIO Buffer包裹起来,对外提供一系列的读写方便开发的接口。在Java NIO中使用的核心缓冲区如下(覆盖...

2019-09-17 16:52:51 187

原创 Java通信之IO演进(二)- NIO的概述

一.NIO简介Java NIO 是 java 1.4 之后新出的一套IO接口,这里的的新是相对于原有标准的Java IO和Java Networking接口。NIO指Non-blocking,它支持面向缓冲的,基于通道的I/O操作方法。 随着JDK 7的推出,NIO系统得到了扩展,衍生了AIO,之后文章会提到AIO的相关API。二.NIO的特性BIO与NIO的区别:...

2019-09-17 16:07:16 272

空空如也

空空如也

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

TA关注的人

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