首页
生活
归档
分类
标签
动态
相册
友链
关于
1
Dream 主题使用手册 - 基础篇
2
Ubuntu 22.04 桌面美化之Mac Big Sur风格
3
网站访问速度优化之ServiceWorker
4
OpenVPN 介绍以及服务端和客户端部署
5
Dream 主题预览
殇雪
投资未来的人,是忠于现实的人。
累计撰写
140
篇文章
累计创建
68
个标签
累计收到
442
条评论
导航
首页
生活
归档
分类
标签
动态
相册
友链
关于
目录
搜索
标签搜索
网盘拉新
副业
黄金
Swagger
编辑器
Gin
Web
Go
Nginx
保险
Halo-Plus
信用卡
Spring
数字货币
搜索
Lucene
区块链
IDEA
故事
单点登录
MySQL
Nacos
Java
旅行
反欺诈
Dream
ServiceWorker
Docker
容器
集合类
锁系列
领域驱动设计
JWT
Oauth
缓存
加密算法
SEO
Hexo
Redis
Ignite
分布式
源码分析
Vue
类加载器
博客
动态规划
排序算法
多线程
JVM
软考星题库
MyBatis
Git
图数据库
应用部署
Nodejs
CDN
软件测试
SpringBoot
Maven
Linux
Python
汇编
内网穿透
Frp
Spring Security
Shiro
沙雕
MQ
玖涯博客
望仔的秘密基地
Java 基础之迭代器的使用
迭代器是一种设计模式,迭代器可以用于遍历集合,开发人员不必去了解这个集合的底层结构。迭代器封装了数据获取和预处理逻辑,屏蔽了容器的实现细节,无需暴露数据结构内部。在数据量非常庞大时使用迭代器进行数据迭代获取,避免全部取出占用过多的服务器资源,且可以对部分数据进行预加载,提升性能。本文将对 java 提供的 Iterator、Iterable 和 Spliterator 三个数据迭代接口做介绍,了解其使用场景。
3 年前
1457
0
2
173.7℃
JAVA与JVM
SpringBoot 通过代理创建接口的实现类 Bean
需要实现的功能是使用指定的 SDK 开发包来访问其他服务的资源,这种场景其实和Mapper、Feign 类似。所以,希望也通过接口上配置注解的方式实现。 所以在本文使用了三个注解: @RkproblemMapperScan :自定义的注解,用于指定要扫描的包名; @RkproblemMapper :自定义的注解,用于标记当前接口需要被代理; @RequestMapping :SpringMvc 的注解,用于标记当前方法需要被代理,以及代理的 url。
2 年前
1718
0
5
205.8℃
Spring系列
后端框架
Java 并发系列(二)——Semaphore源码分析
Semaphore 通常叫它信号量, 可以用来控制同时访问特定资源的线程数量,也可以用来保持资源生产者和消费者之间的资源限制关系,通过协调各个线程,以保证合理的使用资源。Semaphore 具有公平和非公平两种模式,本文通过源码对 Semaphore 的实现做简单分析。
2 年前
1438
1
2
174.8℃
分布式与高并发
JAVA与JVM
Docker-Compose Yaml编写以及基础命令
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,降低了运维成本,但是在使用过程中也会发现一些弊端,如 Docker 命令参数太多太复杂、多容器管理繁琐等。Docker-compose 便是在这场景下诞生的一个用于定义和运行多容器 Docker 的应用程序工具,它可以轻松、高效的管理容器,本文将描述 Docker-compose 2.2.2 的 Yaml 配置和基础命令。
2 年前
1469
0
3
176.9℃
运维
Dockerfile编写以及打包 java 程序为镜像
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。本文介绍 Dockerfile 各项命令的作用,以及如何使用 Dockerfile 打包 java 程序为镜像,并导出和运行。
2 年前
1621
0
0
186.1℃
运维
Java 集合类系列(二)——常见List源码分析
List 是对有序集合的分装,可对其中每个元素的插入位置进行精确地控制,并通过索引来访问、遍历元素。List 集合中,常用的是 ArrayList 和 LinkedList 这两个类。其中,ArrayList 底层通过数组实现,随着元素的增加而动态扩容,LinkedList底层通过双向链表来实现,随着元素的增加不断向链表的后端增加节点。
2 年前
1422
0
1
168.2℃
应试
JAVA与JVM
Spring Security系列(四)——Spring Oauth2实现登录同时授权、自定义授权界面
本文环境: org.springframework.cloud:spring-cloud-starter-oauth2:2.2.4.RELEASE本文场景: 希望实现类似 QQ 的登陆并授权功能,但是将 /oauth/authorize 路径加入 permitAll 没有生效,加入 web.igno
3 年前
2497
0
4
281.7℃
Spring系列
后端框架
网络安全
Java 集合类系列(一)——HashMap源码分析
HashMap 在 java 里用于存储 Key-Value 结构的数据,它允许 key 和 value 为 null,是一种无序并且线程不安全的集合对象。HashMap 基于 hashing 的原理,内部使用的是数组加链表的结构,在 JDK 1.8 上对查询性能进行优化,链表长度大于一定值过后链表将重构为红黑树。本文对 HashMap 源码进行分析,了解其实现原理。
3 年前
1390
0
1
165℃
应试
JAVA与JVM
Java 锁系列(五)——ReentrantReadWriteLock源码分析
ReentrantReadWriteLock 是读写锁的实现,读锁可以在没有写锁的时候被多个线程同时持有,写锁就是和 ReentrantLock 类似的独占锁,它同样有包含公平锁和不公平锁两种实现方式,在实例化时将同时实例化 ReadLock 和 WriteLock 实例,本文主要聚焦于 WriteLock 的实现分析,因为 ReentrantReadWriteLock 中的部分实现与 ReentrantLock 一样基于 AbstractQueuedSynchronized 的实现,对于一些相同的逻辑本文不再赘述。
3 年前
1495
0
2
177.5℃
分布式与高并发
JAVA与JVM
Java 锁系列(二)——ReentrantLock 和 ReentrantReadWriteLock基础运用
Lock 接口提供了与 synchronized 相似的功能,和 synchronized 不同的是,Lock 在使用的时候需要显示的获取和释放锁。虽然牺牲了隐式获取释放锁的便捷性,但是对于锁的操作具有更强的可操作性、可控制性以及提供可中断操作和超时获取锁等机制。本文将描述 ReentrantLock 和 ReadWriteLock 锁的基础使用。
3 年前
1497
0
2
177.7℃
分布式与高并发
JAVA与JVM
Java 锁系列(七)——StampedLock源码分析
StampedLock 是读写锁的实现,对比 ReentrantReadWriteLock 主要不同是该锁不允许重入,多了乐观读的功能,使用上会更加复杂一些,且仅支持非公平锁,但是具有更好的性能表现。StampedLock 的状态由版本和模式组成。 获取锁方法返回一个邮戳,表示和控制与锁状态相关的访问; 这些方法的“尝试”邮戳可能会返回特殊值 0 来表示获取锁失败。 锁释放和转换方法需要标记作为参数,如果它们与锁的状态不匹配则失败。本文对 StampedLock 的实现源码进行分析。
3 年前
1480
0
1
174℃
分布式与高并发
JAVA与JVM
Java 锁系列(六)——StampedLock使用
StampedLock 是读写锁的实现,对比 ReentrantReadWriteLock 主要不同是该锁不允许重入,多了乐观读的功能,使用上会更加复杂一些,但是具有更好的性能表现。StampedLock 的状态由版本和模式组成。 获取锁方法返回一个标记,表示和控制与锁状态相关的访问; 这些方法的“尝试”版本可能会返回特殊值 0 来表示获取锁失败。 锁释放和转换方法需要标记作为参数,如果它们与锁的状态不匹配则失败。本文描述 StampedLock 的基础使用场景,入门教程。
3 年前
1547
0
2
182.7℃
分布式与高并发
JAVA与JVM
Java 锁系列(三)——ReentrantLock源码分析
ReentrantLock 是一个可重入的独占锁,是基于 AQS(AbstractQueuedSynchronized,抽象队列式同步器)实现的,它有公平锁和不公平锁两种实现方式。简单查看源码,可以发现 ReentrantLock 其实是一个代理的模式,Reentranlock 的核心是其内部继承自 AbstractQueuedSynchronized 的抽象类 Sync,将 Sync 作为锁的同步基础,其中加锁/解锁等操作其实都是由 Sync 对象完成的,也是通过实例化 FairSync 或 NonfairSync 分别对应公平锁和非公平锁的实现。
3 年前
1529
0
0
176.9℃
分布式与高并发
JAVA与JVM
RabbitMQ 镜像集群部署
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。本文主要讲解RabbitMQ安装,以及镜像集群的搭建。
3 年前
1822
0
1
208.2℃
中间件
运维
Java 锁系列(一)——锁分类和基础概述
在多线程在获取资源的时候,锁用于保证资源获取的有序性和占用形,可以控制多个线程访问共享资源的顺序。Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对 java 主流的锁进行分类,梳理锁相关的基础知识。
3 年前
1438
0
2
171.8℃
分布式与高并发
JAVA与JVM
上一页
下一页
1
…
5
6
7
…
10
弹