自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(189)
  • 资源 (1)
  • 收藏
  • 关注

原创 手写一个阻塞队列:SimpleBlockingQueue

SimpleBlockingQueue 是一个自定义的简单阻塞队列实现,它使用 ReentrantLock 和 Condition 来进行线程间的同步和通信。该队列提供了基本的 put 和 take 方法,分别用于添加和获取元素。当队列满时,put 方法会阻塞添加线程;当队列空时,take 方法会阻塞获取线程。

2024-10-30 11:07:12 349

原创 ReentrantReadWriteLock使用样例及手写一个读写锁

本文较为详细的介绍了一下读写锁的概念、基本工作原理,然后使用JUC包提供的ReentrantReadWriteLock做了一个小实验,最后再手写一个乞丐版本的读写锁,通过练习加深对读写锁工作机制的理解。

2024-10-28 11:08:39 632

原创 自旋锁原理及基于原子引用手写自旋锁

自旋锁原理介绍及手写自旋锁

2024-10-27 10:32:31 763

原创 LongAdder使用及原理浅析(对比AtomicLong进行分析)

对比AtomicLong,分析LongAdder工作原理及使用案例

2024-10-26 11:13:35 979

原创 IO中断原理浅析

IO中断

2024-09-13 19:45:39 525

原创 使用spring-boot-starter-actuator动态修改工程日志级别

使用spring-boot-starter-actuator动态修改工程日志级别

2024-08-02 11:07:18 548

原创 使用时间轮实现批量定时任务的分片执行

时间轮算法,任务分片

2024-07-08 15:27:36 385 1

原创 SpringMVC--拦截器使用原理

基于HandlerInterceptor接口实现拦截器

2023-03-17 09:50:36 876 1

转载 Maven生命周期

Maven的生命周期

2022-09-21 09:30:20 266

原创 排序算法--选择排序(Java实现)

Java编码实现选择排序算法

2022-09-07 11:15:07 643

原创 排序算法--冒泡排序(Java实现)

Java冒泡排序实现,简单学习

2022-09-06 20:12:26 3181

原创 基于Redis手工实现分布式锁

基于Redis手工实现分布式锁

2022-08-31 12:01:04 510

转载 Java深拷贝与浅拷贝

Java 深拷贝和浅拷贝

2022-08-30 10:38:24 117

原创 线程上下文切换

线程上下文切换

2022-08-25 11:42:06 3747

原创 TCP/IP的三次握手

TCP/IP三次握手过程

2022-08-24 17:24:36 537

原创 LongAdder原理浅析

LongAdder原理浅析

2022-08-16 15:11:38 4860 3

原创 Semaphore学习

Semaphore信号量学习

2022-08-13 15:15:09 251

原创 Spring Cloud Gateway学习

Spring Cloud Gateway学习笔记

2022-07-20 14:39:56 340

原创 JWT学习

JWT学习

2022-07-15 11:38:11 173

原创 面向过程、面向对象、面向接口编程对比学习

面向过程、面向对象、面向接口编程对比学习

2022-07-11 08:39:26 461

原创 JAVA基础:toString()、String.valueOf、(String) xx的区别

JAVA基础:toString()、String.valueOf、(String) xx的区别

2022-06-08 10:00:06 361

原创 MySQL中“:=”和“=”的区别

(一)结论:1)=只有在set和update时才是和:=一样,赋值的作用,其它都是等于的作用。2):=不只在set和update时时赋值的作用,在select也是赋值的作用。(二)效果验证1)验证“ := ”的作用2)验证“ = ” 的作用可见rownum都等于0, 是因为 num 不等于 num+1。当sql换成 上面的,num因为等于num了,所以所有记录的rownum均为1。...

2022-05-11 14:15:40 8873

原创 BeanFactory和FactoryBean

(一)BeanFactoryBeanFactory是一个工厂类接口,定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,职责包括实例化、定位、配置应用程序中的对象以及建立这些对象之间的依赖。在Spring中有很多具体的实现,在这些实现中对BeanFactory进行了功能扩展,例如:AbstractBeanFactory:抽象Bean工厂,绝大部分的实现类,都是继承于他 DefaultListableBeanFactory:Spring默认的工厂类 XmlBe...

2022-05-06 15:56:35 1476

原创 设计模式: 策略模式+工厂模式+模板模式应用实践

使用策略模式、工厂模式、模板模式对工程代码进行优化

2022-04-26 09:52:40 1573

原创 Java事件驱动模型框架实现

一、框架实现篇关键角色:事件源(XXXEvent):能够接收外部事件的源体,内部包含事件的类型。 事件监听器(XXXEventListener):能够接收事件源通知的对象。 事件分发器(EventDispatcher):维护事件类型与事件监听器列表的映射关系,接收事件并进行事件的派发。 事件监听器管理类(EventListenerManager):声明一系列的事件监听器,通过@EventAnnotation定义该事件监听器感兴趣的事件类型,最后通过反射的方式实现事件监听器自动注册到Eve.

2022-04-21 17:17:29 6375 12

原创 JAVA设计模式学习--008-构造器模式

一 、概念构造器模式(Builder Pattern)。其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。二、编码import java.util.Set;/** * 使用构造器模式:保证一些非必需参数的灵活性,便于后期扩展* @ClassName: ParameterSet* @Description: 参数集合* @Autho.

2022-03-18 17:28:07 696

转载 浅析Java线程

Java线程模型并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数都与线程脱不开关系。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。主流的操作系统都提供了线程实现,Java语言则提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经执行start()且还未结束的java.lang.Thread类的实例就代表了

2022-02-15 08:12:39 145

原创 统一任务分发调度执行框架

项目中需要对多个基站进行管理,根据任务的执行时间情况,决定将耗时的任务统一改为异步调用,同时由于基站任务执行的特殊性,还需要针对需要到达基站的任务进行串行编排,保证一个基站同一时刻只有一个任务在执行,对于异步任务的提交、执行情况通过WebSocket消息机制及时通知前端用户。同时为了保证用户体验,针对不耗时的任务依旧采用同步方式调用。

2022-02-14 13:54:04 2352 1

原创 接口幂等性问题

Restful接口幂等性问题

2021-12-31 14:23:09 153

原创 第四篇:docker安装ES && Kibana

注意ELK三个组件的版本需保持一致:1 ES安装1.1 下载ES镜像docker pull elasticsearch:7.4.21.2 路径配置在宿主机创建ES配置文件夹1. 作用:用于同ES容器中的配置路径进行映射,后续在宿主机中进行配置文件操作,可同步到ES中;2. 操作命令:mkdir -p /mydata/elasticsearch/config在宿主机创建ES数据文件夹1. 作用:用于同ES容器中的数据路径进行映射,存放数据;2. 操作命令:mkdir -p

2021-12-23 14:20:57 1572

原创 第三篇:docker安装mysql容器(自定义端口)

第一步:下载镜像docker pull mysql:5.7第二步:创建实例并启动docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7第三步:进入mysql

2021-12-23 14:20:05 416

原创 第二篇:docker安装

1 前言在第一篇中,我们使用VirtuaBox和Vagrant在Windows宿主机上安装了一个Centos虚拟机,并通过相关网络配置,保证宿主机和虚拟机之间能够相互ping通。本篇我们在虚拟机中进行docker安装。官方地址:Get Started with Docker | Docker 官方文档地址:Docker Documentation | Docker Documentation 安装步骤文档地址:Install Docker Engine on CentOS | Docker D.

2021-12-23 14:16:27 560

原创 第一篇:使用VirtualBox+Vagrant安装配置Centos7

1.软件下载解压(过程略)2.常用命令初始化镜像:vagrant init centos/7 启动:vagrant up 重启:vagrant reload 连接:vagrant ssh3.网络配置3.1.查看宿主机IP地址打开一个CMD窗口,执行ipconfig命令,查看VirtualBox Host-Only NetWork下的IP地址3.2 配置更改更改Vagrantfile配置文件(在C:\Users${your_user_name}文件夹下),添加如下内容(实际上是将

2021-12-23 14:15:27 707

原创 Windows下搭建ElasticSearch伪集群(含批量启动/停止脚本)

目录1. 前置条件2. 安装包下载3. 解压缩及配置3.1 节点1配置3.1.1解压3.1.2配置 3.2.1 拷贝节点1文件夹3.2.2配置3.3节点3配置3.3.1 拷贝节点1文件夹3.1.2配置4.启动运行4.2 编写启动脚本 startall.bat4.3编写停止脚本 stopall.bat5. 连接(elasticsearch-head插件的使用)5.1 下载elasticse...

2021-12-21 17:29:38 1614

原创 JAVA设计模式学习--007-观察者模式

设计模式学习

2021-11-26 23:15:19 277

原创 【排序算法04】--快速排序

package com.lll.algorithms.sort;/** * @ClassName : QuickSort * @Description: 快速排序 * @Author: liulianglin * @Date: 2021/11/18 21:52 * @Version : 1.0 */public class QuickSort { private static void quickSort(int[] arr, int leftIndex, int rightI.

2021-11-19 16:08:24 232

原创 【排序算法03】--插入排序

package com.lll.algorithms.sort;import java.util.Arrays;/** * @ClassName : InsertSort * @Description: 插入排序 * @Author: liulianglin * @Date: 2021/11/19 14:49 * @Version : 1.0 * 思想: 将一个序列抽象为一个有序序列和无序序列, * 首次循环将序列的第一个元素当作有序序列,其他元素当作无序序列。 * .

2021-11-19 15:32:06 428

原创 [排序算法02]--选择排序

package com.lll.algorithms.sort;import java.util.Arrays;/** * @ClassName : SelectSort * @Description: 选择排序 * @Author: liulianglin * @Date: 2021/11/19 10:47 * @Version : 1.0 */public class SelectSort { public static void selectSort(int[] ar.

2021-11-19 14:38:04 418

原创 【排序算法01--冒泡排序】

package com.lll.algorithms.sort;import java.util.Arrays;/** * @ClassName : BubbleSort * @Description: 冒泡排序 * @Author: liulianglin * @Date: 2021/11/19 9:45 * @Version : 1.0 */public class BubbleSort { private static void bubbleSort(int[] ar.

2021-11-19 10:11:52 553

原创 利用队列实现栈

实现思路:1)准备两个队列 queue1, queue2(队列特性先进先出,栈的特性先进后出)2)入栈时,元素依次插入到queue1中3)出栈时,做如下处理: 3.1)如果queue2为空,则将queue1向queue2拷贝,剩最后一个元素返回 3.2)如果queue2不为空,则将queue2向queue1拷贝,剩最后一个元素返回直接上代码:import java.util.LinkedList;import java.util.Queue;/** * @Cl.

2021-11-18 00:00:24 289

Java后端学习路线--01Java基础部分.xmind

Java后端学习路线之《Java基础部分》学习

2021-09-13

空空如也

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

TA关注的人

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