会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
SevenCoding
博客园
首页
新随笔
联系
订阅
管理
2026年1月30日
BlockingQueue:阻塞操作与条件队列的高效结合
摘要: BlockingQueue和BlockingDeque BlockingQueue BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是对这个原理的阐述: 一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue。 一个线程将会持续生产新对象
阅读全文
posted @ 2026-01-30 09:00 程序员Seven
阅读(13)
评论(0)
推荐(0)
2026年1月29日
剑指offer-70、把数字翻译成为字符串
摘要: 题⽬描述 有⼀种将字⺟编码成数字的⽅式:'a'->1, 'b->2', ... , 'z->26'。 现在给⼀串数字,返回有多少种可能的译码结果 示例1 输⼊:"12" 返回值:2 说明:2种可能的译码结果(”ab” 或”l”) 示例2 输⼊:"31717126241541717" 返回值:192
阅读全文
posted @ 2026-01-29 09:00 程序员Seven
阅读(18)
评论(0)
推荐(0)
2026年1月28日
剑指offer-69、数字序列中某⼀位的数字
摘要: 题⽬描述 数字以 0123456789101112131415... 的格式作为⼀个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题,请你输出第 n 位对应的数字。 示例1 输⼊:0 返回值:0 示例2 输⼊:2 返回值:2 示例
阅读全文
posted @ 2026-01-28 09:00 程序员Seven
阅读(15)
评论(0)
推荐(0)
2026年1月27日
剑指offer-68、调整数组顺序使奇数位于偶数前⾯(⼆)
摘要: 题⽬描述 输⼊⼀个⻓度为 n 整数数组,数组⾥⾯可能含有相同的元素,实现⼀个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前⾯部分,所有的偶数位于数组的后⾯部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。 数据范围:0 ≤ n ≤ 50000,数
阅读全文
posted @ 2026-01-27 09:00 程序员Seven
阅读(15)
评论(0)
推荐(0)
2026年1月26日
CopyOnWriteArrayList:写时复制机制与高效并发访问
摘要: 前言 Vector无论是add方法还是get方法都加上了synchronized修饰,当多线程读写List必须排队执行,很显然这样效率比较是低下的,CopyOnWriteArrayList是读写分离的,好处是提高线程访问效率。 CopyOnWrite容器即写时复制的容器。通俗的理解是当往一个容器添加
阅读全文
posted @ 2026-01-26 09:00 程序员Seven
阅读(26)
评论(0)
推荐(0)
2026年1月23日
Queue & Stack:实现机制与使用场景深度分析
摘要: 为什么不推荐使用Stack Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低:是因为 Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目,很难在原有的基础上进行优化,因此 Vector 就被淘汰掉了,使用
阅读全文
posted @ 2026-01-23 09:00 程序员Seven
阅读(26)
评论(0)
推荐(0)
2026年1月22日
剑指offer-67、剪绳⼦
摘要: 题目描述 给你⼀根⻓度为n 的绳⼦,请把绳⼦剪成整数⻓的m 段( m 、n 都是整数, n>1 并 且m>1 , m<=n ),每段绳⼦的⻓度记为k[1],...,k[m]。请问k[1]x...xk[m] 可能的最⼤乘积是多少?例如,当绳⼦的⻓度是8 时,我们把它剪成⻓度分别为2 、3 、3 的三段
阅读全文
posted @ 2026-01-22 09:00 程序员Seven
阅读(22)
评论(0)
推荐(0)
2026年1月21日
剑指offer-66、机器⼈的运动范围
摘要: 题目描述 地上有⼀个 m ⾏和 n 列的⽅格。⼀个机器⼈从坐标(0,0) 的格⼦开始移动,每⼀次只能向左,右,上,下四个⽅向移动⼀格,但是不能进⼊⾏坐标和列坐标的数位之和⼤于 k 的格⼦。 例如,当k 为 18 时,机器⼈能够进⼊⽅格(35,37) ,因为 3+5+3+7 = 18 。但是,它不能进
阅读全文
posted @ 2026-01-21 09:00 程序员Seven
阅读(15)
评论(0)
推荐(0)
2026年1月20日
剑指offer-65、矩阵中的路径
摘要: 题目描述 请设计⼀个函数,⽤来判断在⼀个矩阵中是否存在⼀条包含某字符串所有字符的路径。路径可以从矩阵中的任意⼀个格⼦开始,每⼀步可以在矩阵中向左,向右,向上,向下移动⼀个格⼦。如果⼀条路径经过了矩阵中的某⼀个格⼦,则该路径不能再进⼊该格⼦。 例如矩阵: 中包含⼀条字符串 " bcced " 的路径,
阅读全文
posted @ 2026-01-20 09:00 程序员Seven
阅读(20)
评论(0)
推荐(0)
2026年1月19日
InheritableThreadLocal,从入门到放弃
摘要: InheritableThreadLocal相比ThreadLocal多一个能力:在创建子线程Thread时,子线程Thread会自动继承父线程的InheritableThreadLocal信息到子线程中,进而实现在在子线程获取父线程的InheritableThreadLocal值的目的。 关于Th
阅读全文
posted @ 2026-01-19 09:00 程序员Seven
阅读(261)
评论(1)
推荐(0)
2026年1月16日
PriorityQueue的秘密:堆结构的高效应用与实现原理
摘要: 介绍 优先级队列的作用是能保证每次取出的元素都是队列中权值最小(或最大)的。这里元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Comparator)。 Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通
阅读全文
posted @ 2026-01-16 09:00 程序员Seven
阅读(32)
评论(0)
推荐(0)
2026年1月15日
剑指offer-62、⼆叉搜索树的第k个结点
摘要: 题⽬描述 给定⼀棵⼆叉搜索树,请找出其中的第 k ⼩的 TreeNode 结点。 示例1 输⼊:{5,3,7,2,4,6,8},3 返回值:{4} 思路及解答 二叉搜索树的关键性质 二叉搜索树具有一个重要特性:中序遍历(左-根-右)BST会得到一个升序排列的节点值序列。因此,寻找第k小的节点本质上就
阅读全文
posted @ 2026-01-15 09:00 程序员Seven
阅读(23)
评论(0)
推荐(0)
2026年1月14日
剑指offer-64、滑动窗⼝的最⼤值
摘要: 题⽬描述 给定⼀个数组和滑动窗⼝的⼤⼩,找出所有滑动窗⼝⾥数值的最⼤值。例如,如果输⼊数组 {2,3,4,2,6,2,5,1} 及滑动窗⼝的⼤⼩ 3 ,那么⼀共存在 6 个滑动窗⼝,他们的最⼤值分别为 {4,4,6,6,6,5} ; 针对数组 {2,3,4,2,6,2,5,1} 的滑动窗⼝有以下6个
阅读全文
posted @ 2026-01-14 09:00 程序员Seven
阅读(25)
评论(0)
推荐(0)
2026年1月13日
剑指offer-63、数据流中的中位数
摘要: 题⽬描述 如何得到⼀个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使⽤ Insert() ⽅法读取数据流,使⽤ GetMedian() ⽅法获取当前读取数据的中位数。
阅读全文
posted @ 2026-01-13 09:00 程序员Seven
阅读(25)
评论(0)
推荐(0)
2026年1月12日
SPI机制:服务扩展的核心技术
摘要: 为什么需要SPI机制 SPI和API的区别是什么 SPI是一种跟API相对应的反向设计思想:API由实现方确定标准规范和功能,调用方无权做任何干预; 而SPI是由调用方确定标准规范,也就是接口,然后调用方依赖此接口,第三方实现此接口,这样做就可以方便的进行扩展,类似于插件机制,这是SPI出现的需求背
阅读全文
posted @ 2026-01-12 09:00 程序员Seven
阅读(47)
评论(0)
推荐(0)
2026年1月9日
数据结构-图
摘要: 概述 图是一种较为复杂的非线性结构。 为啥说其较为复杂呢? 根据前面的内容,我们知道: 线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。 树形数据结构的元素之间有着明显的层次关系。 但是,图形结构的元素之间的关系是任意的。 何为图呢? 简单来说,
阅读全文
posted @ 2026-01-09 09:00 程序员Seven
阅读(36)
评论(0)
推荐(0)
2026年1月8日
剑指offer-61、序列化二叉树
摘要: 题⽬描述 请实现两个函数,分别⽤来序列化和反序列化⼆叉树 ⼆叉树的序列化是指:把⼀棵⼆叉树按照某种遍历⽅式的结果以某种格式保存为字符串,从⽽使得内存中建⽴起来的⼆叉树可以持久保存。序列化可以基于先序、中序、后序、层序的⼆叉树遍历⽅式来进⾏修改,序列化的结果是⼀个字符串,序列化时通过 某种符号表示空节
阅读全文
posted @ 2026-01-08 09:00 程序员Seven
阅读(44)
评论(0)
推荐(0)
2026年1月7日
剑指offer-60、将⼆叉树打印成多⾏
摘要: 题⽬描述 从上到下按层打印⼆叉树,同⼀层结点从左⾄右输出。每⼀层输出⼀⾏。 给定的⼆叉树是 {1,2,3,#,#,4,5} : 该⼆叉树多⾏打印层序遍历的结果是: [ [1], [2,3], [4,5] ] 示例1 输⼊:{8,6,10,5,7,9,11} 返回值:[[8],[6,10],[5,7,
阅读全文
posted @ 2026-01-07 09:00 程序员Seven
阅读(25)
评论(0)
推荐(0)
2026年1月6日
剑指offer-59、按之字形顺序打印⼆叉树
摘要: 题⽬描述 请实现⼀个函数按照之字形打印⼆叉树,即第⼀⾏按照从左到右的顺序打印,第⼆层按照从右⾄左的顺序打印,第三⾏按照从左到右的顺序打印,其他⾏以此类推。 示例1 输⼊:{8,6,10,5,7,9,11} 返回值:[[8],[10,6],[5,7,9,11]] 思路及解答 双向链表(推荐) 借助双向
阅读全文
posted @ 2026-01-06 09:00 程序员Seven
阅读(21)
评论(0)
推荐(0)
2026年1月5日
数据结构-堆
摘要: 什么是堆 堆是一种满足以下条件的树: 堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。 大家可以把堆(最大堆)理解为一个公司,这个公司很公平,谁能力强谁就当老大,不存在弱的人当老大,老大手底下的人一定不会比他强。这样有助于
阅读全文
posted @ 2026-01-05 09:00 程序员Seven
阅读(33)
评论(0)
推荐(0)
下一页
公告