摘要: 1.子类与父类的加载过程,静态方法重写,静态代码块 2.Java中sync阻塞与可重入是怎么实现的,轻量级锁这么可重入,重量级锁维护了wait set 3.sync锁升级,AQS 4.用户态,内核态 5.wait与sleep,调用后操作系统发生了什么,sleep是怎样唤醒的 6.concurrent 阅读全文
posted @ 2024-07-12 14:42 Duancf 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Single 入门示例 public class Main { public static void main(String[] args) throws ExecutionException, InterruptedException { Single<String> singleUser = g 阅读全文
posted @ 2025-01-17 16:42 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], [" 阅读全文
posted @ 2024-12-03 10:07 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[20,9],[15,7]] 示例 2 阅读全文
posted @ 2024-11-27 11:17 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: LCR 105. 岛屿的最大面积 给定一个由 0 和 1 组成的非空二维数组 grid ,用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的 阅读全文
posted @ 2024-11-27 10:53 Duancf 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。 如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级 阅读全文
posted @ 2024-10-20 10:21 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满足如下定义: 结点左子树中所含节点的值 小于等于 当前节点的值 结点右子树中所含节点的值 大于等于 当前节点的 阅读全文
posted @ 2024-10-16 11:17 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 class Solution: def majorityElement(self, nums: List[int]) - 阅读全文
posted @ 2024-10-16 10:46 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 给定一个长度为 n 的环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和 。 环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n] , nums[i] 的前一个元素是 nums[(i - 1 + n) % n 阅读全文
posted @ 2024-10-16 10:34 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组,是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 cla 阅读全文
posted @ 2024-10-16 10:05 Duancf 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 你可以对数组执行 至多 k 次操作: 从数组中选择一个下标 i ,将 nums[i] 增加 或者 减少 1 。 最终数组的频率分数定义为数组中众数的 频率 。 请你返回你可以得到的 最大 频率分数。 众数指的是数组中出现次数最多的数。 阅读全文
posted @ 2024-10-15 12:12 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: class Solution: def singleNonDuplicate(self, nums: List[int]) -> int: left = 0 right = len(nums)-1 res = -1 while left <= right: mid = (left+right)//2 阅读全文
posted @ 2024-10-15 11:06 Duancf 阅读(3) 评论(0) 推荐(0) 编辑
摘要: class Solution: def compareVersion(self, version1: str, version2: str) -> int: list1 = version1.split('.') for i in range(len(list1)): list1[i] = int( 阅读全文
posted @ 2024-10-14 16:17 Duancf 阅读(17) 评论(0) 推荐(0) 编辑
摘要: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self. 阅读全文
posted @ 2024-10-12 10:31 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self. 阅读全文
posted @ 2024-10-12 10:21 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: class Solution: def permute(self, nums: List[int]) -> List[List[int]]: res = [] n = len(nums) def per(nums,start): if start == n-1: res.append(nums[:] 阅读全文
posted @ 2024-10-11 10:36 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self. 阅读全文
posted @ 2024-10-11 09:33 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。请你找到这个数组里第 k 个缺失的正整数。 示例 1: 输入:arr = [2,3,4,7,11], k = 5 输出:9 解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。 示 阅读全文
posted @ 2024-10-10 11:21 Duancf 阅读(8) 评论(0) 推荐(0) 编辑
摘要: <clinit> 类变量的赋值语句 静态代码块的内容 <init> 实例变量的赋值语句 实例代码块 构造方法 阅读全文
posted @ 2024-10-06 16:33 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: class Solution: def numTrees(self, n: int) -> int: dp = [0]*(n+1) dp[0] = 1 dp[1] = 1 for i in range(2,n+1): count = 0 for left in range(0,i): count + 阅读全文
posted @ 2024-10-06 11:34 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要: https://www.hollischuang.com/archives/6427 阅读全文
posted @ 2024-10-05 19:34 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 为什么读已提交的并发性更好 在数据库中,锁的时间和范围是影响并发性的重要因素。已提交读(Read Committed)隔离级别与可重复读(Repeatable Read)的主要区别就在于它们在读取数据时对锁的使用方式不同。让我们详细看看为什么已提交读的锁的时间和范围更小。 1. 已提交读(Read 阅读全文
posted @ 2024-10-05 19:34 Duancf 阅读(530) 评论(1) 推荐(1) 编辑
摘要: class Solution: def numBusesToDestination(self, routes: List[List[int]], source: int, target: int) -> int: if source == target: return 0 station_route 阅读全文
posted @ 2024-10-05 12:02 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要: class Solution: def isBipartite(self, graph: List[List[int]]) -> bool: n = len(graph) colors = [0]*n def bfs(i): colors[i] = 1 queue = [(i,1)] while q 阅读全文
posted @ 2024-10-05 11:11 Duancf 阅读(10) 评论(0) 推荐(0) 编辑
摘要: class Solution: def change(self, amount: int, coins: List[int]) -> int: dp = [0]*(amount+1) dp[0] = 1 # 从面值开始遍历是为了去重 for c in coins: for i in range(c, 阅读全文
posted @ 2024-10-04 11:41 Duancf 阅读(9) 评论(0) 推荐(0) 编辑
摘要: class Solution: def coinChange(self, coins: List[int], amount: int) -> int: dp = [float("inf")] * (amount + 1) dp[0] = 0 for i in range(amount + 1): f 阅读全文
posted @ 2024-10-04 10:51 Duancf 阅读(11) 评论(0) 推荐(0) 编辑
摘要: class Solution: def minCostClimbingStairs(self, cost: List[int]) -> int: dp = cost n = len(dp) for i in range(2,n): dp[i] += min(dp[i-1],dp[i-2]) retu 阅读全文
posted @ 2024-10-04 10:39 Duancf 阅读(4) 评论(0) 推荐(0) 编辑
摘要: class Solution: def climbStairs(self, n: int) -> int: if n == 1 or n == 2: return n dp = [0] * (n + 1) dp[1] = 1 dp[2] = 2 for i in range(3, n + 1): d 阅读全文
posted @ 2024-10-04 10:33 Duancf 阅读(13) 评论(0) 推荐(0) 编辑
摘要: class Solution: def lengthOfLIS(self, nums: List[int]) -> int: def find(nums, target): left = 0 right = len(nums) while left <= right: mid = (left + r 阅读全文
posted @ 2024-10-04 09:41 Duancf 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在Java中,AQS(AbstractQueuedSynchronizer,抽象队列同步器)通过设计一个独占和共享的同步机制,提供了可重入锁的实现。AQS 的可重入性主要依赖于它对线程状态的跟踪。具体来说,可重入性是指同一个线程在获得锁之后可以多次进入(加锁多次),而不引发死锁。这是通过一个“重入计 阅读全文
posted @ 2024-10-03 23:10 Duancf 阅读(29) 评论(0) 推荐(0) 编辑
摘要: Kafka每秒可以处理一百万条以上消息,吞吐量达到每秒百万级。那么Kafka为什么那么高的吞吐量呢? 简单来说有以下几点原因: 页缓存技术 Kafka是基于操作系统的页缓存来实现写入的。操作系统本身有一层缓存,叫做page cache,是在内存里的缓存,我们也可以称之为 os cache,意思就是操 阅读全文
posted @ 2024-10-03 21:47 Duancf 阅读(54) 评论(0) 推荐(0) 编辑
摘要: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self. 阅读全文
posted @ 2024-10-03 09:50 Duancf 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 临界区 互斥量 信号量 事件 阅读全文
posted @ 2024-10-02 21:49 Duancf 阅读(3) 评论(0) 推荐(0) 编辑
摘要: https://www.cnblogs.com/wzh2010/p/17205390.html 阅读全文
posted @ 2024-10-02 19:11 Duancf 阅读(2) 评论(0) 推荐(0) 编辑
摘要: class Solution: def shortestPath(self, grid: List[List[int]], k: int) -> int: n = len(grid) m = len(grid[0]) if n == 1 and m == 1: return 0 visited = 阅读全文
posted @ 2024-10-02 11:28 Duancf 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 拿石子 两个人 一次可以拿1-3个石子 一共100个石子 谁会赢 ‌后手 ‌后手可以获胜。‌‌12 后手获胜的策略 ‌后手每次取的石子数与先手取的石子数之和为4‌。具体来说: 如果先手取1个石子,后手可以取3个石子。 如果先手取2个石子,后手可以取2个石子。 如果先手取3个石子,后手可以取1个石子。 阅读全文
posted @ 2024-10-02 09:10 Duancf 阅读(41) 评论(0) 推荐(0) 编辑
摘要: java对象生命周期 对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶段(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。 创建阶段 一个Jav 阅读全文
posted @ 2024-10-01 21:54 Duancf 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 数据的位置可能发生改变,例如在页分裂,数据插入的时候,如果存储的是数据的位置,那么要经常修改叶子结点的值来保证数据位置的正确性。 主键不会因为数据的插入而改变,比较稳定,所以我们选择存储主键 优化查询,如果要查的数据就是主键,那就可以直接查到,否则还需要解析数据的过程。 阅读全文
posted @ 2024-10-01 17:04 Duancf 阅读(12) 评论(0) 推荐(0) 编辑
摘要: class TreeNode: def __init__(self, value=0, left=None, right=None): self.value = value self.left = left self.right = right def parent(root,p,q): if ro 阅读全文
posted @ 2024-10-01 11:42 Duancf 阅读(7) 评论(0) 推荐(0) 编辑
摘要: class Solution: def subSort(self, array: List[int]) -> List[int]: n = len(array) start, end = -1, -1 # 从前往后找到第一个逆序 for i in range(n - 1): if array[i] 阅读全文
posted @ 2024-10-01 10:43 Duancf 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 单核处理器能够支持多线程执行代码就是因为线程的上下文切换。具体是如何做到的呢?CPU通过给每个线程分配CPU时间片来实现这个机制。什么是时间片?CPU分配给每个线程的时间。时间片非常短一般几十ms。CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的。 什么是线程上下文切换 什么是上下文切换 阅读全文
posted @ 2024-09-30 21:53 Duancf 阅读(83) 评论(0) 推荐(0) 编辑
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示