自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Slience Wind

爱学习,更爱生活

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

原创 深入理解JVM - 垃圾回收(总结整理)

JVM垃圾回收

2022-08-19 14:09:31 445

原创 深入理解JVM - 内存区域介绍(总结整理)

深入理解JVM内存区域划分

2022-08-17 14:00:20 435

原创 Spring Data Jpa 一对多,级联更新,从一的一方更新多的数据

背景:Spring Data Jpa很方便,但很多时候,我们注意不到他内部的细节,就会导致乱用,从而导致一系列的报错。今天在工作中,发现了一个不明原理的问题,特此总结一下。一对多关系中,拿Class和Student举例子,我们通常会在Class的实体类里面维护一个StudentList,可以通过级联操作,新增Class和其对应的Student。假设:假设我们有一个班级1 Class cls1 = new Class();班级1里面有两个学生 Student s1 = ...

2021-03-29 18:01:27 3315 1

原创 Spring Data JPA 之 一对一,一对多,多对多 关系映射详细笔记

前言最近在用Spring Data Jpa ,发现好多东西都是知道个大概,但不知其细节,所以细节地方配置的错了,就会导致很多业务场景SQL报错。特做此笔记,以防以后跳同样的坑。一、@OneToOne关系映射JPA使用@OneToOne来标注一对一的关系。实体 People :用户。实体 Address:家庭住址。People 和 Address 是一对一的关系。这里用两种方式描述JPA的一对一关系:一种是通过外键的方式(一个实体通过外键关联到另一个实体的主键);另外一种是通过一张关联表来保

2020-11-12 11:15:17 474

原创 记录一次因为InetAddress.getLocalHost()缓慢导致系统Websocket连接慢的坑

问题描述系统在本地开发测试时Websocket连接很正常,都是秒连。但打包完部署到linux上运行,Websocket连接特别慢,平均要花10秒左右才能建立连接。框架结构整体采用前后端分离开发:前端:Vue.js+sockjs-client+Webstomp-client后端:Springboot+WebStomp关于前后端Websocket具体实现,可移步我的另一篇博客:过程排除了网络问题之后,在一步步的Debug之中,拨开了Bug的层层面纱。最终发现原来是Java原生方法InetAddr

2020-06-02 11:42:27 6982 10

原创 常见网络协议知识集 Http、WebSocket、Socket

首先看一下OSI七层模型与TCP/IP对比:应用层:各种应用层协议,如Http、WebSocket、FTP、SMTP等都属于应用层协议。 表示层:信息的语法语义以及他们的关联,如加密解密、转换翻译、压缩解压缩 会话层:不同机器上的用户之间建立及管理会话 传输层:接受上一层的数据,在必要的时候把数据进行分割,并将这些数据提交给网络层,且保证这些数据段有效到达对端。TCP、UDP协议。...

2020-01-19 18:13:19 665

原创 WebSocket实战详解【Springboot+Vue+sockjs+webstomp】

WebScoket是什么?WebSocket是一种在单个TCP连接上进行全双工通信的协议。(来自百度百科) 也就是说,WebSocket使得浏览器和服务器可以主动发送给对方。同样是基于TCP连接,与以往的HTTP的协议不同,HTTP采用请求/响应模式,三次握手建立一次连接,只能由客户端发给服务端。而WebSocket只通过一次握手,建立一个持久的连接,客户端和服务端都可以主动发消息,更实时...

2020-01-19 17:51:04 2326

转载 数据结构之红黑树详解

https://juejin.im/entry/58371f13a22b9d006882902d

2020-01-13 11:39:51 235

原创 Java8 流操作详细总结

一、流介绍到底什么是流呢?流,简短地定义是:从支持数据处理操作的源生成的元素序列。让我们一步步剖析这个定义。元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序 值。因为集合是数据结构,所以它的主要目的是以特定的时间/空间复杂度存储和访问元 素(如ArrayList 与 LinkedList)。但流的目的在于表达计算,比如你前面见到的 filter、sorted...

2020-01-07 17:53:52 514

原创 Java8 lambda表达式使用局部变量final问题

lambda表达式在使用局部变量的问题在使用lambda表达式的时候,经常会遇到一个问题,那就是在lambda表达式内部修改局部变量的的值时候,编译器会报错,说变量类型必须为final才可以使用,也就是说不让我们修改,这是为什么呢?Lambda可以没有限制地捕获(也就是在其主体中引用)实例变量和静态变量。但局部变量必须显式声明为final, 或事实上是final。换句话说,Lambda表达式...

2020-01-07 12:23:52 9376 6

转载 Java 8 函数式接口Function、Consumer、Predicate、Supplier

https://blog.youkuaiyun.com/z834410038/article/details/77370785

2019-11-13 12:25:33 235

原创 深入浅出Java并发之CAS机制

在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。一、CAS机制介绍CAS:英文名Compare And Swap的缩写,意为比较并交换。CAS机制:当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试...

2019-10-11 16:24:22 581 1

原创 AtomicInteger中incrementAndGet与getAndIncrement的区别

在学习原子操作的时候,遇到了自增的方法,但发现AtomicInteger类中有两个类似的方法,研究了下,做下笔记记录。首先看下两个方法的源码:public final int getAndIncrement() { return unsafe.getAndAddInt(this, valueOffset, 1);}public final int incrementAnd...

2019-10-11 14:23:54 1466

原创 Java并发之ReentrantLock吐血总结

一、ReentrantLock重入锁基本概念ReentrantLock,重入锁,是JDK5中添加在并发包下的一个高性能的工具。顾名思义,ReentrantLock支持重入功能,即同一个线程在未释放锁的情况下可以重复获取锁,因此,重入的前提必须是同一个线程,后面会基于源码展示重入功能具体是如何实现的。本文内容将以介绍ReentrantLock的基本功能为主体,辅以相应源码的剖析,使读者深入记...

2019-10-11 12:44:40 557

原创 惊!一文看懂Java NIO读写文件

Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。很多小伙伴可能和我一样,对于习惯了用IO来操作文件之后,对这个日渐流行的新东西会有不少的疑惑,那么阅读本文吧,和我一起打开NIO的大门,学习NIO操作文件。一、NIO与IO的区别下面有一个概要的区别图,图下面会有区别的描述。...

2019-09-06 14:49:29 1637

原创 【Guava】EventBus、AsyncEventBus详解及使用案例

EventBus顾名思义,事件总线,是一个轻量级的发布/订阅模式的应用模式。相比于MQ更加简洁,轻量,它可以在一个小系统模块内部使用。如果你也对EventBus感兴趣,或者想知道什么是EventBus,那就跟我一起来吧,后面会手把手教你使用EventBus,接下来就跟我一起走进EventBus吧。一、EventBus的介绍和使用场景EventBus是google的Guava库中...

2019-09-04 17:41:09 14197 16

原创 【Java设计模式】之观察者模式

对象间的联动----观察者模式(Observer Pattern)一、观察者模式概念红灯停,绿灯行,在生活中,交通信号灯装点着我们的城市,指挥着日益拥挤的交通。当红灯亮起,来往的车辆都停止,当绿灯亮时,来往的车辆继续前行。在这个过程中,交通信号灯是观察目标,汽车是观察者,随着交通信号灯的变化,汽车根据反应作出不同的行为。一盏交通信号灯可以同时指挥很多辆汽车。如下图,信号灯的变化,可以引起汽...

2019-09-02 17:28:06 408

原创 Linux系统安装二进制包Mysql5.7详解

最近在Linux上安装了二进制包版本的Mysql5.7,特此记录一下。1、首先进入Mysql官方进行Mysql社区版的下载官网下载链接:https://dev.mysql.com/downloads/mysql/进入链接,选择历史版本,这里我们选择5.7版本的Mysql,选择压缩的tar版本,点击下载。2、选择安装位置:解压二进制包到/usr/local/mysql目录下面...

2019-09-02 11:30:23 628

原创 手把手带你入门quartz(含入门测试Case)

最近在做批量调度系统,用到了quartz定时调度的功能,因此学习了解了quartz,写一篇博客总结与分享。本文从引入jar包开始,手把手带你入门领略quartz的基础功能,涉及的代码可以直接复制到自己的ide中运行。本文大纲:1、什么是quartz2、怎么使用quartz以及Demo代码==========================================开始分割...

2019-08-28 16:31:14 669 3

原创 坑之Mysql数据库时间类型以及精度问题(多存了一秒)

最近项目中在做JWT登录的时候,根据当前时间做签名密钥,生成的Token,并且将当前时间也保存在了用户表中的last_login(最后登录时间),最后在做检验的时候,根据JWT中存的用户id,查询用户的最后一次登录时间,然后创建签名密钥,去调用校验Token的方法,结果老是校验不通过!debug了以后发现了问题,数据库存放的last_login,比生成Token是的那个时间多了一秒,密钥不对,...

2019-08-15 16:35:54 4144 2

原创 SpringBoot+JWT登录校验,以及JWT刷新机制

接上篇博客,继续讲解JWT的使用。本部分内容主要是SpringBoot项目中具体使用JWT的代码实现,包括了登录创建Token,后续请求验证Token,并且加入了JWT刷新机制等等。本文大纲:1.JWT的引入2.JWT工具类的实现3.登录申请Token4.请求验证Token5.JWT刷新机制的实现注意:本文注重使大家理解JWT如何在SpringBoot项目中集成和使...

2019-08-15 15:33:52 8084 40

原创 详细解剖什么是JWT以及内部创建的过程

最近根据项目的需要了解了JWT跨域登录认证,特此总结分享一下。JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文将分为两个部分,第一部分讲解JWT的原理和具体创建细节,帮助大家理解JWT的具体结构,和实现细节。第二部分是从SpringBoot项目中具体使用JWT的代码开始讲解,包括了登录创建Token,后续请求验证Token,设置有效期等等。本文大纲:1....

2019-08-14 16:47:32 833

转载 记录一下String.format()方法的使用

从 Java 5.0 开始,String类新增了一个强大的字符串格式化方法format()。这个方法到现在用的人还是不多,实在是一种浪费。本文带你快速过一遍这个方法的功能,将来你要用到格式化文本的时候,可能就不需要再借用第三方类库或自己去实现了。首先看一个简单例子:String formatted = String.format("%s今年%d岁。","小李",30);// "...

2019-08-13 18:29:32 533

空空如也

空空如也

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

TA关注的人

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