自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一切皆有可能!

Nothing is impossible !

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

原创 Redis基础知识

Redis基础知识

2021-06-01 21:02:42 145

原创 I/O模型演变

I/O模型演变。

2021-06-01 20:42:51 133

原创 Redis安装并设置开机启动

Redis安装教程。

2021-05-29 14:05:01 334

原创 高并发负载均衡

高并发负载均衡

2021-05-28 19:47:54 651

原创 网络协议原理

网络协议原理

2021-05-27 17:38:37 109

原创 MySQL锁机制

MySQL锁机制。

2021-05-14 14:07:31 553 5

原创 MySQL调优(八)服务器参数设置

MySQL服务器参数设置。

2021-05-13 14:09:47 81

原创 MySQL调优(七)分区表

MySQL分区表。

2021-05-12 19:21:07 84

原创 MySQL调优(六)查询优化

MySQL查询优化。

2021-05-12 13:11:52 109

原创 MySQL调优(五)索引优化

MySQL索引优化。

2021-05-11 15:38:45 97

原创 MySQL之哈希索引

MySQL之哈希索引

2021-05-11 11:58:15 677

原创 排序算法(四)归并排序

归并排序。

2021-05-10 10:19:13 75

原创 MySQL调优(四)执行计划

MySQL执行计划。

2021-05-09 20:44:14 162 2

原创 MySQL调优(三)表结构优化

MySQL表结构优化。

2021-05-09 18:41:39 107 2

原创 MySQL调优(二)数据类型优化

MySQL数据类型优化

2021-05-09 17:40:47 93 2

原创 MySQL调优(一)性能监控

MySQL性能监控。

2021-05-09 13:37:07 577 3

原创 由浅入深理解JVM垃圾回收机制

本文详细解释常用的垃圾回收算法、常用垃圾回收器、堆内存的划分、对象的分配规则以及垃圾回收器的选用规则。

2021-04-29 20:22:45 218

原创 排序算法(三)插入排序

排序算法(三)插入排序

2021-04-29 10:13:51 52

原创 排序算法(二)冒泡排序

排序算法(二)冒泡排序

2021-04-29 09:40:44 73

原创 Java内存模型(三)

运行时数据区和指令集

2021-04-28 19:24:27 116

原创 Java内存模型(二)

Java对象布局以及对象对位的方式。

2021-04-28 12:20:42 94

原创 Java内存模型(一)

详细解释缓存行、CPU数据一致性、伪共享和指令重排序。

2021-04-28 09:40:14 900 1

原创 JVM类加载机制

对Class的生命周期做一个简单介绍,并解释ClassLoader、类加载过程、双亲委派机制等。

2021-04-27 16:35:53 271 7

原创 排序算法(一)选择排序

文章目录算法思路时间复杂度代码算法思路  选择排序的原理,从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。其步骤可总结为:在arr[0~N-1]范围上,找到最小值所在的位置,然后把最小值交换到0位置。在arr[1~N-1]范围上,找到最小值所在的位置,然后把最小值交换到1位置。在arr[2~N-1]范围上,找到最小值所在的位置,然后把最小值交换到2位置。…时间

2021-04-27 10:13:44 113 1

原创 Disruptor入门

Disruptor简单入门

2021-04-26 18:21:23 234 3

原创 一文读懂Java线程池

文章目录1 线程池前置知识1.1 Callable1.2 Future1.3 FutureTask2 ThreadPoolExecutor2.1 ThreadPoolExecutor继承体系2.2 ThreadPoolExecutor参数2.3 ThreadPoolExecutor任务提交流程2.4 线程工厂2.5 拒绝策略2.6 Executors提供的线程池2.6.1 newCachedThreadPool2.6.2 newFixedThreadPool2.6.3 newSingleThreadExec

2021-04-25 17:09:49 165 2

原创 ThreadLocal和强软弱虚引用

ThreadLocal源码使用场景:声明式事务,保证拿到同一个connection内存泄漏

2021-04-24 14:26:44 734

原创 深入理解ReentrantLock

文章目录前言1 可重入锁2 ReentrantLock3 AQS总结前言  保证线程安全的方式有很多,比如CAS操作、synchronized、原子类、volatile保证可见性和ReentrantLock等,这篇文章我们主要探讨ReentrantLock的相关内容。1 可重入锁  所谓可重入锁,即一个线程已经获得了某个锁,当这个线程要再次获取这个锁时,依然可以获取成功,不会发生死锁的情况。synchronized就是一个可重入锁,除此之外,JDK提供的ReentrantLock也是一种可重入锁。

2021-04-24 11:34:20 216

原创 多线程实战二

文章目录问题解法一解法二问题  写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用。解法一  这是一个典型的生产者消费者问题,可以通过wait()和notifyAll()方法来实现。public class MyContainer4 { private LinkedList<String> list = new LinkedList<>(); private static final

2021-04-23 11:21:43 121 1

原创 多线程实战一

文章目录问题解法一解法二解法三问题  实现一个容器,提供add和size方法。写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束。解法一  使用wait()和notiry()方法实现两个线程之间的通信。public class MyContainer { List<Object> list = new ArrayList<>(); public void add(Object o) {

2021-04-23 10:09:28 121

原创 JUC使用案例

文章目录前言ReentranLockCountDownLatchCyclicBarrierPhaserReadWriteLockSemaphoreExchanger总结前言  JUC即java.util.concurrent包,这个包下面提供很多用于保证多线程安全的类,比如atomic包下面的原子类、locks包下面和锁相关的类以及其他类。在这篇文章中,我们将讲解一些常用的类的基本使用。ReentranLockCountDownLatchCyclicBarrierPhaserReadWrite

2021-04-23 09:25:33 716 2

原创 多线程之volatile

文章目录前言1 保证线程可见性2 防止指令重排序2.1 什么是指令重排序2.2 指令重排序可能造成的问题2.3 使用volatile防止指令重排序2.4 volatile防止指令重排序的原理总结前言  volatile在Java中是一个变量修饰符,其作用是保证变量在线程之间的可见性以及防止指令重排序。1 保证线程可见性  关于线程之间的可见性,在之前的文章《并发编程之可见性》中已经详细描述过,所以这里不再赘述。2 防止指令重排序2.1 什么是指令重排序  为了提升指令的执行效率,编译器会对代

2021-04-22 16:19:35 349

原创 深入洞察synchronized

详解CAS、synchronized原理及其锁升级过程

2021-04-21 21:08:15 149 1

原创 并发编程之可见性

可见性的基本概念一个小程序public class TestThread { private static boolean flag = true; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { while (flag) { } System.out.println("t1 end"); })

2021-04-21 14:15:53 113 1

原创 线程的结束

如何结束一个线程

2021-04-21 10:45:30 142

原创 线程之interrupt

interrupt概念  interrupt翻译成中文为“打断”的意思,但实际上,interrupt()方法并非将一个线程打中断的意思。查看Thread.interrupt()方法的源码:public void interrupt() { if (this != Thread.currentThread()) checkAccess(); synchronized (blockerLock) { Interruptible

2021-04-20 20:51:51 1175 3

原创 线程的状态

线程状态之间的切换  线程一共有6种状态。在创建Thread对象,但还未调用start()方法时,线程为NEW状态。调用start()方法后,线程进入RUNNABLE状态。当线程等待synchronized锁时,会进入BLOCKED状态。当线程调用wait()、join()、lock()等方法时,会进入WAITING状态。当线程执行完成之后,并且Thread对象还未被垃圾回收器回收,这时线程状态为TERMINAL。代码  通过以下代码可以体现出线程状态之间的切换。public class Test

2021-04-20 19:41:19 93

原创 Java多线程基础知识

进程、线程和程序的概念

2021-04-20 16:54:49 421 5

原创 Hello Word!

Hello大家好!我是一位Java程序员,这是我第一次写博客。一直以来都有写博客的想法,但却因种种缘由,迟迟未能实践。今天,我终于踏出了第一步,开始我的博客之旅。写博客的目的,一是在学习的过程中,有很多知识点容易遗忘,通过写博客的方式加强记忆和巩固知识;二是希望可以把自己在学习过程中遇到的问题以及收获分享给大家。...

2021-03-28 13:59:17 101

空空如也

空空如也

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

TA关注的人

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