Only寒暄
码龄5年
  • 71,143
    被访问
  • 2
    原创
  • 1,543,592
    排名
  • 276
    粉丝
关注
提问 私信

个人简介:Make a Little Progress Every Day

  • 加入CSDN时间: 2017-05-12
博客简介:

Only寒暄

查看详细资料
个人成就
  • 获得66次点赞
  • 内容获得7次评论
  • 获得232次收藏
创作历程
  • 1篇
    2021年
  • 30篇
    2019年
  • 6篇
    2018年
  • 32篇
    2017年
成就勋章
TA的专栏
  • 多线程
    1篇
  • Java
    42篇
  • javaWeb
    3篇
  • 数据库
    6篇
  • 分布式
    2篇
  • 框架
    2篇
  • 高并发
    1篇
  • redis
    3篇
  • swagger
    1篇
  • 爬虫
    1篇
  • sharding-jdbc
    1篇
  • 设计模式
    5篇
  • jvm
    3篇
  • docker
    1篇
  • spring
    3篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【深入AQS原理】35张图让你深入 AQS

谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。我们先看下AQS相关的UML图:image.png思维导图:image.pngAQS实现原理AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO
转载
发布博客 2021.01.25 ·
288 阅读 ·
2 点赞 ·
0 评论

synchronized实现原理,以及JVM对锁性能的优化

线程安全,是Java并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要原因有两点:1,存在共享数据(也称临界资源)2,存在多条线程,共同操作共享数据。本文由浅入深,逐步整理了synchronized的相关知识,主要包括:应用场景 原理概要 原理详解 低层实现 锁的优化(JDK1.6引入) 锁的升级(在什么情况下会升级,以及锁只能单向升级)应用方式synchr...
转载
发布博客 2019.10.16 ·
174 阅读 ·
0 点赞 ·
0 评论

lambda处理异常四种方式

最近对接第三方呼叫系统,第三方SDK的所有方法里都有异常抛出,因为用到了lambda,所以异常处理还是很必要的。本文主要用到了四种解决方案:直接代码块处理 自定义函数式接口,warp静态方法 通过Either 类型包装 通过Pair 类型进行再次包装方法一: 直接代码块处理: /** * 上线 * @param schoolId 学校id ...
原创
发布博客 2019.09.18 ·
3589 阅读 ·
3 点赞 ·
0 评论

使用SpringBoot+Dubbo 搭建一个简单的分布式服务

Github 地址:https://github.com/Snailclimb/springboot-integration-examples(复制到浏览器访问),欢迎各位 Star。目录: 使用 SpringBoot+Dubbo 搭建一个简单分布式服务 实战之前,先来看几个重要的概念 什么是分布式? 什么是 Duboo? Dubb...
转载
发布博客 2019.08.22 ·
94 阅读 ·
0 点赞 ·
0 评论

响应式编程中的Flux和Mono

响应式编程介绍反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式 c=a+b,当 a 或者 b 的值发生变化时,传统的编程范式需要对 a+b 进行重新计算来得到 c 的值。如果使用反应式编程,当 a 或者 b 的值发生变化时,c 的值会自动更新。反应式编程最早由 .NET 平台上的 Reactive Extensions (Rx) ...
转载
发布博客 2019.08.20 ·
6831 阅读 ·
13 点赞 ·
2 评论

Spring Retry重试机制

在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,由于网络故障或数据库更新中的DeadLockLoserException导致Web服务或RMI服务的远程调用可能会在短暂等待后自行解决。 为了自动执行这些操作的重试,Spring Batch具有RetryOperatio...
转载
发布博客 2019.08.20 ·
123 阅读 ·
0 点赞 ·
0 评论

万万没想到,JVM内存结构的面试题可以问的这么难?

在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。那么,请大家尝试着回答一下以下问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Ja...
转载
发布博客 2019.08.09 ·
93 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(七)——javap

javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad。但是,javap还可以查看java编译器为我们生成的字节码。通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作。实例javap命令分解一个class文件,它根据options...
转载
发布博客 2019.08.09 ·
68 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(六)——jinfo

jinfo可以输出java进程、core文件或远程debug服务器的配置信息。这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J-d64 -sysprops pid另外,Java7的官方文档指出,这一命令在后续的版本中可能不再使用。笔者使用的版本(jdk8)中已经不支持该命令(笔者翻阅了java8中该命令的文档,其中已经明...
转载
发布博客 2019.08.09 ·
144 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(五)——jhat

jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过,使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。jhat命令解析会Java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件了。实例一...
转载
发布博客 2019.08.09 ·
134 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(四)——jstat

jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包...
转载
发布博客 2019.08.09 ·
78 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(三)——Jmap

Jmapjmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列(零)——常见命令及Java Dump介绍和Java命令学习系列(二)——Jstack中分别有关于Java Dump以及线程 Dump的介绍。这篇文章主要介绍Java的堆Dump以及jamp命令...
转载
发布博客 2019.08.09 ·
91 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(二)——Jstack

jstack是java虚拟机自带的一种堆栈跟踪工具。功能jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事...
转载
发布博客 2019.08.09 ·
102 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(一)——Jps

jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有...
转载
发布博客 2019.08.09 ·
94 阅读 ·
0 点赞 ·
0 评论

Java命令学习系列(零)——常见命令及Java Dump介绍

一、常用命令:在JDK的bin目彔下,包含了java命令及其他实用工具。jps:查看本机的Java中进程信息。jstack:打印线程的栈信息,制作线程Dump。jmap:打印内存映射,制作堆Dump。jstat:性能监控工具。jhat:内存分析工具。jconsole:简易的可视化控制台。jvisualvm:功能强大的控制台。二、认识Java Dump:什...
转载
发布博客 2019.08.09 ·
65 阅读 ·
0 点赞 ·
0 评论

挑战10个最难回答的Java面试题(附答案)

是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,而且包括我的朋友和同事在内的许多程序员都觉得很难回答。1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?一个...
转载
发布博客 2019.08.09 ·
4809 阅读 ·
5 点赞 ·
0 评论

数据库两大神器【索引和锁】

前言只有光头才能变强索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎一、索引在之前,我对索引有以下的认知:索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立...
转载
发布博客 2019.08.08 ·
100 阅读 ·
0 点赞 ·
0 评论

透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因

前言在我们使用Spring时,可能有前辈教导过我们,在bean中不要使用this来调用被@Async、@Transactional、@Cacheable等注解标注的方法,this下注解是不生效的。那么大家可曾想过以下问题为何致this调用的方法,注解会不生效 这些注解生效的原理又是什么 如果确实需要调用本类方法,且还需要注解生效,该怎么做? 代理是否可以做到this调用注解就直接...
转载
发布博客 2019.08.07 ·
76 阅读 ·
1 点赞 ·
1 评论

完全读懂Spring框架之AOP实现原理

深入分析Spring框架中AOP与动态代理的整合原理从本文可以了解到什么Spring的核心之一AOP具体是如何实现的 Spring AOP使用了哪些动态代理方式 如何使用Spring AOP创建代理对象 Spring有哪些代理切入方式,如何增加切面 在Spring之外有哪些代理方式 Spring的各类注解如@Async等,是如何生效的等等... 你想了解的内容,都会在本文进行呈...
转载
发布博客 2019.08.07 ·
178 阅读 ·
0 点赞 ·
0 评论

CompletableFuture 使用详解

1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnab...
转载
发布博客 2019.07.18 ·
119 阅读 ·
0 点赞 ·
0 评论
加载更多