- 博客(240)
- 资源 (13)
- 收藏
- 关注
原创 深入理解synchronized从对象头到锁升级全流程解析
在日常开发中,synchronized作为关键字实现同步方法和同步代码块,使得同一时间内只有一个线程可以访问被修饰的方法和代码块(被修饰的方法和代码块被官方称为临界区)。在HotSpot中,synchronized通过对象头得以实现(这一点后面的锁升级部分会具体分析),Mark Word的最低3bit用来表示对象当前的锁状态,因此任何对象都可以成为一把锁。
2025-12-09 15:59:50
610
原创 基于Java实现CAS自旋锁
CAS(CompareAndSwap的缩写,翻译过来叫比较和交换)是CPU的原子指令,Java通过JVM对这些硬件原子指令进行封装(如Unsafe),并向上提供API,使得Java能够对单个变量执行原子性的比较与更新操作。我们日常开发中所说的CAS锁实际是指CAS结合自旋的机制:当多个线程同时尝试更新某个共享变量时,如果CAS失败,线程并不会立即阻塞,而是不断地循环重试,直到更新成功。这种方式避免了传统锁的阻塞开销。
2025-12-06 10:51:48
484
原创 ThreadLocal线程记忆的光与影
掌握ThreadLocal使用方法,理解ThreadLocal的内部结构、ThreadLocal如何解决哈希冲突、避免使用ThreadLocal不当导致内存泄漏。
2025-11-29 22:50:09
625
原创 LangChain的核心组件Messages之初体验
使用Python语言集成LangChain,并通过案例来学习它的核心组件Messages。本文使用OpenAI提供的密钥,不会注册的同学可以参考我之前写的Models使用手册。
2025-11-14 22:21:03
1137
原创 LangChain的核心组件之Models使用手册
了解LangChain的基本信息,并且理解Retrieval Augmented Generation(RAG)的核心思想。使用Python语言集成LangChain,并通过案例来学习它的核心组件Models。本文虽然讲的是Models模块,但是并不涉及Agent对Models的集成使用(在后续的文章中再重点讲述),只将独立使用案例。
2025-11-06 22:54:41
709
原创 通过Ollama搭建本地LLM
Ollama是上手并运行大型语言模型(如gpt-oss、Gemma 3、DeepSeek-R1、Qwen3等)的最简单方法。
2025-11-05 22:16:10
381
原创 Spring Security之初体验
将Spring Security集成到SpringBoot,通过配置给不同用户授权。本文适合初学者去了解Spring Security的基本应用,且部分内容只适用于前后不分离的项目。
2025-07-31 22:52:41
1286
1
原创 Scrapy之一个item包含多级页面的处理方案
在实际开发过程中,我们所需要的数据往往需要通过多个页面的数据汇总得到,通过列表获取到的数据只有简单的介绍。站在Scrapy框架的角度来看,实际上就是考虑如何处理一个item包含多级页面数据的问题。本文将以获取叶子猪网站的手游排行榜及手游详情为学习案例来解决这个问题。
2025-01-24 00:11:36
549
原创 初步搭建并使用Scrapy框架
在pipelines.py文件中配置open_spider和close_spider方法,分别表示在爬虫程序执行前执行的方法和在爬虫程序执行之后执行的方法。: 刷新页面,在浏览器检查中查看第一个和最后一个,发现图片链接的初始接收属性并不是src,而是data-original,src是加载以后才代替data-original的。:修改src获取的方法,并再次运行项目。:来到pipelines.py文件,其中process_item方法中的item就是我们刚才在爬虫程序配置的boot对象。
2025-01-22 14:57:40
1467
原创 Kubernetes之NodeSelector与NodeName实战
通过配置NodeSelector与NodeName实现Pod运行(或优先运行)在我们期望的节点之上。了解这两种实现方法的区别。
2024-12-28 21:57:56
895
原创 Kubernetes基于containerd从Harbor上拉取镜像
当容器运行时为containerd时,学会如何根据Harbor上的镜像创建Pod。其中主要涉及到升级containerd版本、利用docker往Harbor传递镜像,containerd与Harbor关键配置信息
2024-11-24 10:36:22
1690
原创 Docker数据卷使用手册
我们在很多网上教程上可以看到很多老师们往往将数据卷划分为三个种类:匿名卷、命名卷、绑定挂载。也有老师将数据卷分为四个种类:匿名卷、命名卷、绑定挂载、临时挂载。但是我去官方网站看了相关文档,文档中十分明确地将绑定挂载(Bind mounts)、数据卷(Volumes)、临时挂载(tmpfs mounts)规定为三个类别。大家学习绑定挂载和临时挂载时,通过docker inspect命令查看容器详情时也会发现Mounts中的Type值为bind。而数据卷的Type值为volume。但是对于这种概念性的东西每个人
2024-08-25 21:36:25
1158
2
原创 Docker基础命令
Docker是一个用于开发、发布和运行应用程序的开放平台。Docker可让您将应用程序与基础架构分离,以便快速交付软件。借助Docker,您可以像管理应用程序一样管理基础架构。通过利用Docker 的发布、测试和部署代码方法,您可以显著减少编写代码和在生产中运行代码之间的延迟。
2024-08-11 22:15:32
1032
原创 FastDFS安装与测试
在Linux服务器上搭建单机版FastDFS系统。(考虑到Linux服务器访问GitHub受限,这里我将依赖包下载到本地,再将本地的依赖包上传到Linux服务器上。所以我的操作与Wiki上的操作略有不同,但本质一样)。在Linux服务器上,使用命令行实现文件上传、下载、删除等功能。熟悉FastDFS系统架构。
2024-01-06 23:22:12
1999
1
原创 Python数字类型
掌握Python两种数据类型的使用方法。数字类型有三种,分别是:整数(int)浮点数(float)复数(complex)另外,布尔值类型(bool)是整数类型的子类型。
2023-10-22 21:23:46
448
原创 用Netty搭建文件上传系统
客户端向服务端发送一个文件(可以是视频、音频、文本、表格等格式的文件),服务端接收文件并保存到指定的目录下。服务端保存好文件之后向客户端发送回应:xxx文件收到了。
2023-05-23 18:44:19
2099
2
Spring Cloud项目技术解决方案闪电战
2021-01-17
熟练使用stream操作集合,能通过例题举一反三,合理地将案例融入到实际工作中。
2022-05-03
掌握RabbitMQ几种常用模式的思想。本文将基于RabbitMQ官网提供相关的代码案例。
2022-01-21
非常轻量又实用的鼠标拾色器小工具
2021-01-15
ExcelUtil-master.zip
2020-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅