自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA线程安全性

摘要: 本文探讨了线程安全的概念及其产生原因。线程安全指在多线程环境下,类无需额外同步措施即可正确运行。通过一个账户计数器示例,展示了非线程安全导致的错误结果(如counter++操作)。线程安全问题主要由两个原因引起:1) 多线程争夺共享内存资源;2) 操作不具备原子性(如counter++包含读取、计算、写入三步,可能被中断)。分析表明,共享变量和非原子操作共同导致线程安全问题。理解这些机制有助于开发中规避线程安全隐患。

2025-07-06 14:54:49 729

原创 LinkedList剖析

LinkedList是List家族除ArrayList之外最为常用的另一成员,今天一文彻底搞懂LinkedList。

2025-07-05 16:26:55 312

原创 JAVA内存区域划分

根据《JAVA虚拟机规范》的规定,JAVA虚拟机在执行JAVA程序的过程中会把内存划分为不同的数据区域。不同类型的数据会存储在不同的区域,理解JAVA内存区域的工作细节对理解JAVA多线程、线程安全性有着重要意义。注意,JAVA内存区域的划分与我们常说的java内存模型JMM(Java Memery Model)是两个互不交叉的维度的概念,两者没有任何关系。JMM主要是将主内存和工作内存的关系、数据从主内存区读取的工作内存、以及从工作内存写回到主内存区、以及不同线程的工作内存间数据同步的问题。

2025-07-02 20:26:54 885

原创 ArrayList剖析

大家天天在用List,ArrayList一般来讲应该是程序员用的最多的集合类了。我们今天研究一下ArrayList。总体来讲,从底层数据结构或者源码的角度看,List比Map或者Set要简单。

2025-07-02 20:21:24 407

原创 HashMap和HashSet的区别

所以你说他们两个有什么区别?HashSet可以看成是封装之后的HashMap的一个代理。从底层数据结构的角度看,他们其实就是同一头驴子,在不同的场合给他一个不同的披挂,拉出来遛而已。只不过在某些场合他的某些功能被限制了不让用,而已。此外,省点力气:LinkedHashSet对应LinkedHashMap,TreeSet对应TreeMap。你如果就是想知道一下他们的区别,记得百度之后甄别一下对错,挑选出正确的记下就是了。以上1~5应该是对的,第6条不知道是怎么得出的,肯定不对。

2025-07-02 20:17:09 359

原创 TreeMap源码分析 &红黑树

今天尝试刨一下TreeMap的祖坟。

2025-06-29 23:16:00 593

原创 浏览器播放监控画面

10年前没有找到很好的解决方案,可能是需求本身相对复杂一点,而且,当初也许没有现在这样相对成熟的解决方案,毕竟,经过这么多年的发展,摄像机厂商也不像当年那样各自为战,视频编码格式以及控制方式各种不统一,目前,据简单了解,通过ONVIF协议实现控制也相对比较简单,关键是,绝大部分的摄像机厂商都会遵守ONVIF协议。浏览器播放实时监控视频其实不外乎两个方案:一个还是以前的老方案,通过插件的方式直接播放RTSP,但是,插件几乎要被淘汰了,即使不淘汰,使用起来也非常不方便,所以,这个方案也基本不考虑。

2025-06-13 21:55:50 683

原创 HashMap vs LinkedHashMap

实际对大多数应用场景来说,我们只要记住第一个区别就可以了。如果某一场景要求按照存储时的顺序获取数据,那我们一定要记得不能用HashMap,必须用LinkedHashMap。本着二杆子程序员精神,我们假设你一定想知道所以然。所以我们还是从两者底层数据结构开始分析。

2025-06-13 21:20:49 859

原创 认识LinkedHashMap

LinkedHashMap是HashMap的子类,上一节初步分析过HashMap,这一节分析LinkedHashMap。

2025-06-13 21:18:59 682

原创 HashMap真面目

AbstractMap抽象类实现了Map接口,具体化了部分Map接口定义的方法。实现了一个叫SimpleEntry的Entry(就是Map接口中定义的内部接口),还有一个叫SimpleImmutableEntry的Entry。暂且不表,不影响主题:识别HashMap真面目。

2025-06-12 21:54:23 1186

原创 rsync实现远程同步

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。已支持跨平台,可以在Windows与Linux间进行数据同步。以上内容来自于百度百科,本文记录的是Linux之间的同步,Linux与Windows系统之间的同步稍后研究。

2025-05-19 14:52:25 422

原创 ScheduledThreadPoolExecutor抛出异常后不继续执行的问题

文章对周期性任务线程池从源码角度做了比较详细的分析,包括线程调度策略、任务队列、任务从队列按时出队、重新按照delay时间安排下次任务等,对大部分核心源码都做了分析。所以,以为对ScheduledThreadPoolExecutor了解差不多了,不太会碰到所谓的莫名其妙的问题了…但是,其实所有的莫名其妙的问题要么就是掌握的知识不够充分、详细,要么就是自以为是过头了…

2025-04-12 11:49:47 860

原创 Dify安装

说明docker尚未运行。

2025-03-22 16:25:58 520

原创 deepseek + embeding模型搭建本地知识库

deepseek embeding本地部署 rag 知识库 向量数据库

2025-02-15 21:50:49 4882 1

原创 deep seek R1本地化部署及openAI API调用

deepseek AI

2025-02-02 16:34:08 5672 1

原创 连接池 HikariPool (二) - 获取及关闭连接

数据库连接池 JAVA 多线程 HikariPool

2025-01-12 16:40:40 1312

原创 连接池 HikariPool (一) - 基础框架及初始化过程

java 线程池 数据库连接池 HikariPool 源码分析

2025-01-09 20:28:07 1020

原创 线程池 - ThreadPoolExecutor源码分析

java线程池 ThreadPoolExecutor源码

2025-01-05 16:02:34 935

原创 BlockingQueue - ArrayBlockingQueue

阻塞队列 BlockingQueue ArrayBlockingQueue

2025-01-04 21:38:32 497

原创 BlockingQueue - LinkedBlockingQueue

JAVA 阻塞队列 LinkedBlockingQuene

2025-01-04 17:31:39 666

原创 BlockingQueue - 基于TransferQueue的SynchronousQueue

阻塞队列 BlockingQueue TransferQuene SynchronousQueue

2025-01-02 21:57:46 827

原创 BlockingQueue - 基于TransferStack的SynchronousQueue

多线程 阻塞队列 BlockingQueue TransferStack SynchronousQuene

2025-01-01 21:20:28 997

原创 Quartz - JDBC-Based JobStore事务管理及锁机制

Quartz java 定时任务

2024-12-30 19:23:18 945

原创 Quartz - 集群Cluster的配置、failOver原理

定时任务 Quartz 多线程

2024-12-30 19:10:56 972

原创 Quartz 相关线程

Quartz 定时任务 多线程 现成 ThreadExecutor

2024-12-26 20:52:19 937

原创 Quartz - JDBC-Based JobStore

定时任务 Quartz JDBC-Based JobStore ThreadPool

2024-12-25 21:43:24 549

原创 周期性任务线程池 - ScheduledThreadPoolExecutor & DelayedWorkQueue

线程池 周期性任务线程池 ThreadPoolExecutor DelayedWorkQueue

2024-12-12 17:16:46 1057 1

原创 Quartz - Misfire (for RAMJobstore)

JAVA 多线程 线程池 定时任务 Quartz

2024-12-11 22:06:42 1038

原创 Quartz - Trigger & RAMJobStore

任务调度 多线程 线程池 Quartz

2024-12-11 21:40:28 795

原创 Quartz - Job & JobDetail

java 定时任务 线程池 Quartz

2024-12-10 21:53:46 737

原创 Quartz - SimpleThreadPool

线程池 定时任务 Quartz

2024-12-10 21:03:47 1214

原创 JAVA定时任务 - JDK Timer

而Runable方式下就只是new了一个Runable对象,然后new了多个Thread、启动多个线程执行的时候是把这个唯一的Runable对象传递给了Thread的target,不同线程持有的是相同的Runable对象作为他们的target,同一个对象的成员变量当然是共享的。但是这个执行时间其实Timer是没有办法保证的,因为线程挂起之后再次被唤醒是依赖于CPU的调度的,CPU在10秒执行了一次任务之后,下次任务不一定能在20秒被唤醒,有可能是22秒或者23秒的时候才会被唤醒。

2024-12-10 20:57:11 732

原创 记录一次ubuntu /mysql/redis/nginx等 系统安装

ubuntu系统安装,mysql安装,redis安装,nginx安装

2024-09-21 17:14:56 941

原创 python安装以及访问openAI API

通过python调用openAI的API接口

2024-09-08 16:01:06 2586

原创 java socket通讯

JAVA的Socket通讯,BIO方式,BIO/NIO概念

2024-08-25 19:07:09 815

原创 Runable和Callable的区别?首先要搞清楚Thread以及FutureTask!

Runable和Callable的区别,FutureTask

2024-07-27 10:08:53 801

原创 生成多个ssh访问不同git

git 配置多个ssh访问不同代码托管服务

2024-07-09 22:07:59 493

原创 数据库事务隔离级别

事务的概念 ISO LEVEL,隔离级别,锁,死锁,MVCC

2024-06-16 21:50:09 1220 1

原创 清理mysql binglog文件

mysql随着使用时间的推移,binglog文件会越来越大,比如我们的oa系统,上线4年多了,最近总有磁盘空间满影响系统正常使用的情况出现。检查后发现binglog是罪归祸首。max_binlog_size = 1024M # 设置单个Binlog文件的最大大小。发现我的binglog文件非常多,检查了下发现每一个都是大家伙,有1个G。binglog文件最好不要采用应删除的方式清理,如下方式可安全清除。然后再查看磁盘空间占用情况,98%瞬间降到的48%。以上文件是按照时间先后顺序排列的。

2024-05-25 16:38:06 633

原创 docker入门级命令

docker的连个基本概念:镜像、容器。docker镜像可以理解为是存储docker安装包的地方,比如:mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。可以通过docker pull命令拉取远程镜像到本地。

2024-04-26 22:29:10 997 3

空空如也

空空如也

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

TA关注的人

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