自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis之zset高级玩法

前言最近博主收到了一个排序需求,需要我们按照用户权重、状态、性别和在线离线状态对用户进行排序。按照我们传统的数据库里也不行,因为如果要排序我需要取出所有的数据进行排序。假如说我这时候有很大的数据量该怎么办?我不可能全部取出来然后通过java排序,这样的性能是非常低的。那么有小伙伴肯定就会说,用zset直接排序。那么zset我们都知道是通过score排序的,但是我们怎么办把多权重排序放到zset里呢?核心技术首先按照我的用户权重、状态、性别和在线状态这4个维度的角度我们先按照需求分一下他们的排序优先级。

2022-06-15 14:30:39 1287 3

原创 Rancher+k3s+阿里云流水线详细配置教程

一、前言当我们的项目是集群部署的时候,我们再更新代码部署到机器上的时候是很麻烦的。所以这时候我们需要借助一些工具来帮助我们更便捷的进行更新和发布。首先我准备了两台机器进行一个环境搭建演示。一台用于安装rancher,一台用来跑微服务。二、安装Rancher1.安装dockerapt-get updateapt-get install docker.io2.安装Rancherdocker run -d --restart=unless-stopped \--name=rancher-ser

2021-12-17 18:10:33 4122

原创 Java多线程之ThreadLocal

前言在前面几章Java多线程相关的文章中,相信大家已经对多线程有了一定的基本了解,那么我们今天看一个平时工作中可能不太常用或者没有接触到过的一个工具类ThreadLocal。在前面volatie相关的文章中我有提到过JMM内存模型,那么ThreadLocal其实就是在每个线程内部给我们维护一个变量的副本,这时候我们线程操作的变量就都是每个线程内部独有的副本变量,从而达到线程安全的一个效果。但是ThreadLocal还有另一个作用:隐式传参。接下来我们先了解一下ThreadLocal的用法吧。Thread

2020-10-27 16:18:33 398 1

原创 Spring源码系列之Spring整体简介(一)

Spring框架作为我们java程序员来说都是再熟悉不过的,我们平常所使用的SpringBoot亦或者是SpringCloud都跟我们的Spring息息相关。但是当我们在使用SpringBoot或者SpringCloud的时候,有没有想过他们的核心到底是什么?其实很简单,就是我们的IOC和AOP,也就是我们都知道的Spring的两大核心点。IOC和AOPIOC就是我们所谓的控制反转,AOP也就是我们说的面向切面。我相信大家肯定都用过@Service@Component注解。那么被这两个注解所托管的容器就

2020-10-17 12:18:10 268

原创 Java多线程之ReentrantLock(二)源码解读

其实,在我们Java中也有一个使用了Java语言开发的一把锁,名字叫ReentrantLock。它位于我们的java.uilt.concurrent包下的一个线程安全的工具类。接上一篇讲,上一篇我们介绍了ReentrantLock的基本用法,并且也通过ReentrantLock底层实现的原理自己手写了一把ReentrantLock。那么本期我们就开始深入的来看一看ReentrantLock核心源码到底是什么样的。首先我们来看ReentrantLock的类结构,不知道大家有沒有注意到,我昨天我昨天.

2020-10-08 16:51:36 294

原创 Java多线程之ReentrantLock(一)ReentrantLock介绍及手写ReentrantLock

某一天,李四同学去某一家互联网公司面试。面试官:李同学,你知道Java有哪一个是使用java写的锁并且和sychronized性能差不多?李同学:…面试官:那你知道什么是CAS吗李同学:…面试官:出门右转是电梯自己走吧!什么是ReentrantLock其实,在我们Java中也有一个使用了Java语言开发的一把锁,名字叫ReentrantLock。它位于我们的java.uilt.concurrent包下的一个线程安全的工具类。我们大名鼎鼎的JUC包就是由这位图中的老爷爷写的,Reentr

2020-10-05 22:17:54 385 2

原创 Java多线程之volatile详解(三)

对于JAVA并发编程而言,我们始终要遵守这三种特性的规则。才能使我们的代码不出问题。在上一篇我们通过字节码层面和汇编的层面对volatile进行了一个简单的介绍。那么这一期我们将深入的去给大家介绍一下volatile。代码执行过程首先我们先来了解一下代码的执行过程。我们首先通过JVM的类加载器将类加载到元空间里面,元空间会通过元数据对象在堆内生成一个Class对象。那么CPU是如何执行到我们的代码的呢?首先我们的栈和线程是1:1对应的关系。我们首先会将字节码文件通过字节码执行引擎和JIT将这个字.

2020-08-18 21:31:10 235

原创 Java多线程之volatile详解(二)

首先,java中除了synchronized关键字可以保证线程安全,还有一个关键字volatile也可以保证。你可以理解它是一个轻量级的synchronized,但是它不能保证线程的原子性。至于为什么我们稍后再说。在了解volatile之前,我们需要知道JMM内存模型与CPU和内存

2020-08-15 23:21:03 153

原创 Java多线程之volatile详解(一)

有一天,张三去某互联网公司面试:面试官:你好,张同学,请问你知道java有哪些关键字可以保证线程安全吗?张三:知道!synchronized关键字可以保证!面试官:还有呢?张三:…面试官:是你自己出门还是我送?首先,java中除了synchronized关键字可以保证线程安全,还有一个关键字volatile也可以保证。你可以理解它是一个轻量级的synchronized,但是它不能保证线程的原子性。至于为什么我们稍后再说。在了解volatile之前,我们需要知道JMM内存模型与CPU和内存C

2020-08-11 11:06:34 264

原创 JVM垃圾回收器之CMS三色标记、增量更新与跨代引用

JVM垃圾回收器之CMS三色标记、增量更新与卡表Hello大家好,这里是残月。在上一篇关于JVM的文章中,我有讲到CMS的执行过程和优缺点,那么今天我们来深入了解一下其中一些底层细节方面的东西。1.三色标记什么是三色标记?实际上三色标记中的色并不只是颜色,而是我们对它的一种叫法,但是实际上他不会用red white 这种东西来定义,而是用例如0,1,2这样的东西来定义不同的对象。其实三色标记就是我们CMS在扫描过程中对对象的一种定义。那么具体的定义如下:黑色:表示对象已经被垃圾回收机制访问过或者对

2020-08-01 03:31:40 2936 4

原创 HashMap底层实现原理你都不知道?不是吧不是吧!

HashMap之底层实现机制和原理hello大家好,这里是残月。今天我将给大家讲解一下HashMap底层实现原理和机制。相信大家不管在面试大公司还是小公司也好,都会经常被问道HashMap的实现原理,可能有的小伙伴上来就说:“啊,我知道!HashMap1.7是数组加链表,1.8是数组加链表加红黑树!”。。。然后。。。然后就没了。PS:对不起,出门右转自己下电梯(⁼̴̀д⁼̴́)。其实要想搞懂HaspMap的底层实现原理其实很简单,对于有一定数据结构基础的小伙伴来说我们只需要知道他的扩容机制、hash算法

2020-07-28 18:02:41 1056

原创 JVM垃圾回收器之CMS回收过程及优缺点

JVM垃圾回收器之CMS回收过程及优缺点今天给大家介绍一下CMS垃圾回收器。首先CMS是一款多线程+分段操作的一款垃圾回收器。其最大的优点就是将一次完整的回收过程拆分成多个步骤,并且在执行的某些过程中可以使用户线程可以继续运行。也就是说CMS可以减少STW的时间对我们的用户体验会非常好,所以CMS垃圾回收器也是现在大部分企业所用到的最多的一款垃圾回收器。(CMS只管老年代)接下来我会给大家从浅到深讲解一下CMS垃圾回收器!一.CMS垃圾回收器的使用与执行过程想要使用CMS垃圾回收器非常简单,我们只需

2020-07-12 04:35:00 4085 1

空空如也

空空如也

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

TA关注的人

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