天才之上
码龄6年
  • 367,610
    被访问
  • 135
    原创
  • 1,548,103
    排名
  • 77
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:路上的风景一片精彩。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-11-23
博客简介:

天才小站

博客描述:
与广大爱好者共同进步
查看详细资料
个人成就
  • 获得172次点赞
  • 内容获得41次评论
  • 获得461次收藏
创作历程
  • 2篇
    2021年
  • 1篇
    2020年
  • 62篇
    2019年
  • 15篇
    2018年
  • 87篇
    2017年
成就勋章
TA的专栏
  • 消息中间件
    1篇
  • 架构
    3篇
  • Java并发编程
    18篇
  • 框架-spring
  • 异常处理
  • 工具类
    2篇
  • JVM
    9篇
  • Java基础
    3篇
  • 前端-Vue
  • spring
    3篇
  • 算法
    11篇
  • 数据结构
    11篇
  • 设计模式
    3篇
  • 基础框架
    5篇
  • 开发模型
    1篇
  • java容器
    1篇
  • 数据存储
    3篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

BlockingQueue及其实现

1. 前言BlockingQueue即阻塞队列,它是基于ReentrantLock,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue等...
原创
发布博客 2021.02.28 ·
232 阅读 ·
0 点赞 ·
0 评论

RocketMQ原理刨析

RocketMQ原理本文类容基本上和RocketMQ design类似,并无过多的改动。主要内容包括:RocketMQ概述,主要是概念上的一些内容RocketMQ的特点以及消息发送、消费模型RocketMQ原理:mmap+write,文件系统,数据存储结构,队列,刷盘策略,消息查询,消息过滤,事务消息,发送、订阅负载均衡,同步双写/异步复制,充分利用内存,消息堆积能力以及解决办法一、RocketMQ概述1. MessageFilter1) Broker端消息过滤...
原创
发布博客 2021.02.27 ·
268 阅读 ·
0 点赞 ·
0 评论

mysql分组后获取每个组排序后的第一条数据(整行)

有一个学生分数表student,数据结构是这样的id(当前表ID)student_id(学生ID)line(分数)subject_type(科目类型)118012...
原创
发布博客 2020.03.04 ·
5928 阅读 ·
2 点赞 ·
1 评论

Java8开始ConcurrentHashMap,为什么舍弃分段锁

概述我们知道, 在 Java 5 之后,JDK 引入了 java.util.concurrent 并发包 ,其中最常用的就是ConcurrentHashMap 了, 它的原理是引用了内部的 Segment (ReentrantLock ) 分段锁,保证在操作不同段 map 的时候, 可以并发执行, 操作同段 map 的时候,进行锁的竞争和等待。从而达到线程安全, 且效率大于 synchr...
原创
发布博客 2019.12.27 ·
14017 阅读 ·
15 点赞 ·
3 评论

内存屏障

内存屏障(Memory barrier)为什么会有内存屏障每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同。 用volatile关键字修饰变量可以解决上述问题,那么volatile是如何做到这一点的呢?那就是内存屏障,内存屏障...
转载
发布博客 2019.12.27 ·
165 阅读 ·
0 点赞 ·
0 评论

深入理解Java HashMap

1. 概述从本文你可以学习到:什么时候会使用HashMap?他有什么特点? 你知道HashMap的工作原理吗? 你知道get和put的原理吗?equals()和hashCode()的都有什么作用? 你知道hash的实现吗?为什么要这样实现? 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?当我们执行下面的操作时: ...
原创
发布博客 2019.12.27 ·
89 阅读 ·
0 点赞 ·
0 评论

Redis的数据淘汰策略有哪些

Redis 提供 6 种数据淘汰策略(即,内存淘汰策略)volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用 的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数 据淘汰 volatile-random:从已设置过期时间的数据集(server.db[i].ex...
原创
发布博客 2019.12.24 ·
110 阅读 ·
0 点赞 ·
0 评论

线程的生命周期状态图,及相应概念。

一、线程的生命周期线程状态转换图:1、新建状态(New)用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)。注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。2...
原创
发布博客 2019.12.24 ·
307 阅读 ·
0 点赞 ·
0 评论

记录:一道java类加载时机与过程的面试题

以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下:class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = ...
原创
发布博客 2019.12.24 ·
89 阅读 ·
0 点赞 ·
0 评论

怎么打破双亲委派机制, 双亲委派模型的好处。

双亲委派模型的好处:在于Java类随着它的类加载器一起具备了一种带有优先级的层次关系。例如类java.lang.Object,它存在在rt.jar中,无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的Bootstrap ClassLoader进行加载,因此Object类在程序的各种类加载器环境中都是同一个类。相反,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写...
原创
发布博客 2019.12.24 ·
439 阅读 ·
0 点赞 ·
0 评论

CMS垃圾收集器与G1收集器

1、CMS收集器CMS收集器是一种以获取最短回收停顿时间为目标的收集器。基于“标记-清除”算法实现,它的运作过程如下:1)初始标记2)并发标记3)重新标记4)并发清除初始标记、从新标记这两个步骤仍然需要“stoptheworld”,初始标记仅仅只是标记一下GCRoots能直接关联到的对象,熟读很快,并发标记阶段就是进行GCRootsTracing,而重新标...
原创
发布博客 2019.12.24 ·
77 阅读 ·
0 点赞 ·
0 评论

100亿个整数如何找到中位数?内存足够和内存不足两个场景

100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?(1)当内存足够时:采用快排,找到第n大的数。• 随机选取一个数,将比它小的元素放在它左边,比它大的元素放在右边• 如果它恰好在中位数的位置,那么它就是中位数,直接返回• 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理(还是第几大)• 否则中位数一定在右半边,根据左半边的元素个数计算出中位数是右半...
原创
发布博客 2019.12.24 ·
1047 阅读 ·
0 点赞 ·
0 评论

Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法

Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法在《Java对象在Java虚拟机中的创建过程》了解到对象创建的内存分配,在《Java内存区域 JVM运行时数据区》中了解到各数据区有些什么特点、以及相关参数的调整,在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二)...
转载
发布博客 2019.12.24 ·
77 阅读 ·
0 点赞 ·
0 评论

Java虚拟机垃圾回收(三) 7种垃圾收集器:主要特点 应用场景 设置参数 基本运行原理

Java虚拟机垃圾回收(三) 7种垃圾收集器主要特点 应用场景 设置参数 基本运行原理在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回收算法》了解到Java虚拟机垃圾回收的几种常见算法。下面先来了解HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Paralle...
转载
发布博客 2019.12.24 ·
62 阅读 ·
0 点赞 ·
0 评论

Java虚拟机垃圾回收(一) 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析

在《Java内存区域 JVM运行时数据区》中了解到各数据区有些什么特点、以及相关参数的调整,知道了:程序计数器、虚拟机栈、本地方法栈这3个区域是随线程而生而灭的,内存分配和回收都具备确定性,而Java堆和方法区则不一样,各线程共享,在运行时内存的分配与回收都是动态的,垃圾收集器所关注的是这部分内存。接下来几篇文章我们来详细了解Java堆和方法区的内存分配与回收,下面先...
转载
发布博客 2019.12.24 ·
110 阅读 ·
0 点赞 ·
0 评论

Java虚拟机垃圾回收(二) 垃圾回收算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 火车算法

在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡? 介绍了垃圾回收基础算法:引用计数算法、可达性分析算法,以及HotSpot虚拟机中实现对象可达性分析的一些问题。下面先来了解Java虚拟机垃圾回收的几种常见算法:标记-清除算法、复制算法、标记-整理算法、分代收集算法、火车算法,介绍它们的算法思路,有什么优点和缺点,以及主要应用场景。...
转载
发布博客 2019.12.24 ·
137 阅读 ·
0 点赞 ·
0 评论

关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案

1 前言在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时候可能会遇到的一些问题以及一些解决办法。我们使用缓存时,我们的业务系统大概的调用流程如...
原创
发布博客 2019.12.23 ·
98 阅读 ·
0 点赞 ·
0 评论

二维矩阵顺时针旋转90度

今天仍然来分析一个与数组操作相关的算法,是关于二维数组旋转问题的。问题描述原文You are given an n × n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up: Could you do this in-place?大意:给一个 n * ...
原创
发布博客 2019.12.22 ·
3276 阅读 ·
4 点赞 ·
0 评论

java中的4种引用:强引用、软引用、弱引用和虚引用

我们知道java语言提供了4种引用类型:强引用、软引用(SoftReference)、弱引用(WeakReference)和幽灵引用(PhantomReference),与引用密切相关的,还有一个引用队列ReferenceQueue。引用和引用队列的关系,对于垃圾回收来说非常重要,学习垃圾回收机制,必须要先了解引用和引用队列的使用方法。本文主要参考网上的一些理论,同时配合自己的一些测试代码,更好的...
原创
发布博客 2019.12.22 ·
123 阅读 ·
0 点赞 ·
0 评论

四种元注解:@Retention @Target @Document @Inherited

java中元注解有四个:@Retention @Target @Document @Inherited;  @Retention:注解的保留位置               @Retention(RetentionPolicy.SOURCE)//注解仅存在于源码中,在class字节码文件中不包含      @Retention(RetentionPolicy.CLASS)...
原创
发布博客 2019.12.03 ·
125 阅读 ·
0 点赞 ·
0 评论
加载更多