- 博客(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
原创 使用spring-boot-starter-actuator动态修改工程日志级别
使用spring-boot-starter-actuator动态修改工程日志级别
2024-08-02 11:07:18 548
原创 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
原创 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
原创 第四篇: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
原创 【排序算法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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人