05 2022 档案

摘要:ReentrantLock原理及源码阅读 1、ReentrantLock介绍 ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取到该锁,其他线程获取该锁的线程将会被阻塞而被放入该锁的AQS阻塞队列里面。 ReentrantLock最终还是使用AQS来实现的,并且根据参数来决定其内 阅读全文
posted @ 2022-05-30 14:06 YoungerWb 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目表述 有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗? 示例: 输入:words = ["I","am","a","student","from","a","univ 阅读全文
posted @ 2022-05-27 20:07 YoungerWb 阅读(20) 评论(0) 推荐(0) 编辑
摘要:抽象同步队列AQS源码学习 1、AQS类结构剖析 static final class Node { /** Marker to indicate a node is waiting in shared mode */ static final Node SHARED = new Node(); / 阅读全文
posted @ 2022-05-25 20:47 YoungerWb 阅读(27) 评论(0) 推荐(0) 编辑
摘要:写时复制,CopyOnWriteArrayList源码剖析 1、CopyOnWriteArrayList介绍 CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。 每个 CopyOnWri 阅读全文
posted @ 2022-05-25 15:47 YoungerWb 阅读(52) 评论(0) 推荐(0) 编辑
摘要:CAS操作及原子类的使用 1、CAS操作 在java中,加锁可以解决一定的并发问题,但是锁有一个不好的问题就是当一个线程没有获取到锁的时候就会被阻塞挂起,这会导致线程上下文的切换和重新调度开销。Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题,这在一定程度上弥补了锁带来的开销问 阅读全文
posted @ 2022-05-25 11:20 YoungerWb 阅读(271) 评论(0) 推荐(0) 编辑
摘要:手写RPC框架实现 参考视频:自己动手实现RPC框架 1、什么是RPC? RPC, 英文全名remote procedure call 即远程过程掉调用 就是说一个应用部署在A服务器上,想要调用B服务器上应用提供的方法 由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 阅读全文
posted @ 2022-05-25 09:34 YoungerWb 阅读(183) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal理解及使用 ​ 多线程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步。 ​ 同步的措施一般是加锁,这就需要使用者对锁有一定的了解,因此可以使用ThreadLocal,当创建一 阅读全文
posted @ 2022-05-24 16:42 YoungerWb 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目表述 已知一个由像素点组成的单色屏幕,每行均有 w 个像素点,所有像素点初始为 0,左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中,再依次存入长度为 length 的一维数组中。 我们将在屏幕上绘制一条从点 (x1,y) 到点 (x2,y) 的 阅读全文
posted @ 2022-05-19 23:33 YoungerWb 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题目表述 配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。 示例: 输入:num = 2(或者0b10) 输出 1 (或者 0b01) 位运算 循环32位,让1依次左移i位,判断num的哪一位不为0,如果不为0再接着判断i当 阅读全文
posted @ 2022-05-19 23:24 YoungerWb 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目表述 整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。 示例: 输入:A = 29 (或者0b11101), B = 15(或者0b01111) 输出:2 位运算 依次判断A和B各位置上面的数字是否相同,如果不相同则改变位数res+1 class Solution { publ 阅读全文
posted @ 2022-05-19 23:17 YoungerWb 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题目表述 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 示例: 输入: num = 1775(110111011112) 输出: 8 位运算 双指针,利用与计算出num的0的位置,计算3个0间的位置差距,求出来最长序列即可。 class 阅读全文
posted @ 2022-05-18 22:43 YoungerWb 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目表述 二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。 示例: 输入:0.625 输出:"0.101" 解题思路 十进制的小数转换为二进制小数,主要是利用小数部分乘2后,取 阅读全文
posted @ 2022-05-18 22:36 YoungerWb 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题目表述 给定两个整型数字 N 与 M,以及表示比特位置的 i 与 j(i ⇐ j,且从 0 位开始计算)。 编写一种方法,使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域,不足之处用 0 补齐。具体插入过程如图所示。 示例: 输入:N = 1024(10000000000 阅读全文
posted @ 2022-05-17 14:17 YoungerWb 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题目表述 检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。 如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。 示例: 输入:t 阅读全文
posted @ 2022-05-16 23:30 YoungerWb 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目表述 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。 给定一个由不同节点组成的二叉搜索树 root,输出所有可能生成此树的数组。 示例: 输入: root = [2,1,3] **输出: **[[2,1,3],[2,3,1]] **解释: **数组 [2,1,3 阅读全文
posted @ 2022-05-16 23:22 YoungerWb 阅读(52) 评论(0) 推荐(0) 编辑
摘要:计算机网络 数据链路层 1、使用点对点信道的数据链路层 点对点信道。这种信道使用一对一的点对点通信方式。 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。 1.1 数据链路和帧 链路 (link) 是一条 阅读全文
posted @ 2022-05-16 10:34 YoungerWb 阅读(143) 评论(0) 推荐(0) 编辑
摘要:题目表述 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例: 输入: first = "pale" second = "ple" 输出: True 双指针 替换:替换的前提当然是两个字符串的长度相等即 m= 阅读全文
posted @ 2022-05-15 22:51 YoungerWb 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题目表述 对数组 nums 执行 按位与 相当于对数组 nums 中的所有整数执行 按位与 。 例如,对 nums = [1, 5, 3] 来说,按位与等于 1 & 5 & 3 = 1 。 同样,对 nums = [7] 而言,按位与等于 7 。 给你一个正整数数组 candidates 。计算 c 阅读全文
posted @ 2022-05-15 22:40 YoungerWb 阅读(92) 评论(0) 推荐(0) 编辑
摘要:计算机网络 传输层 1、运输层协议概述 1.1进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层, 阅读全文
posted @ 2022-05-15 10:44 YoungerWb 阅读(412) 评论(0) 推荐(0) 编辑
摘要:计算机网络 网络层 一、网络层的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。 一种观点是借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。 另一种观点是网络提供数据报服务,网络层向上只提供简 阅读全文
posted @ 2022-05-13 10:55 YoungerWb 阅读(289) 评论(0) 推荐(0) 编辑
摘要:题目表述 有 n 个人排成一个队列,从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights ,每个整数 互不相同,heights[i] 表示第 i 个人的高度。 一个人能 看到 他右边另一个人的条件是这两人之间的所有人都比他们两人 矮 。更正式的,第 i 个人能看到第 j 个人的 阅读全文
posted @ 2022-05-11 20:14 YoungerWb 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目表述 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了打出一个字母,Alice需要按对应字母 i 次,i 是该字母在这个按键上所处的位置。 比方说,为了按出字母 's' ,Alice 需要按 '7' 四次。类似的, Alice 需要按 '5' 两次得到字母 'k' 。 阅读全文
posted @ 2022-05-11 19:52 YoungerWb 阅读(51) 评论(0) 推荐(0) 编辑
摘要:rpc的理解 RPC, 英文全名remote procedure call 即远程过程掉调用 就是说一个应用部署在A服务器上,想要调用B服务器上应用提供的方法 由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 RPC就是要像调用本地的函数一样去调用远程函数 RPC中协 阅读全文
posted @ 2022-05-10 09:37 YoungerWb 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目表述 设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。 如果指定节点没有对应的“下一个”节点,则返回null。 示例 1: 输入: root = [2,1,3], p = 1 2 / 1 3 输出: 2 解题思路 只有两种情况 p没有右子树 p有右子树 如果有右子树的话, 阅读全文
posted @ 2022-05-08 21:16 YoungerWb 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目表述 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。 示例 1: **输入: 阅读全文
posted @ 2022-05-08 21:07 YoungerWb 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目表述 给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。 注意: n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。 root 的 子树 由 root 和它的所有后代组成。 示例 1: **输入:* 阅读全文
posted @ 2022-05-08 20:59 YoungerWb 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目表述 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 阅读全文
posted @ 2022-05-07 23:31 YoungerWb 阅读(27) 评论(0) 推荐(0) 编辑
摘要:题目表述 节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。 示例: 输入: n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2 输出: true DFS、BFS 根据graph构建邻接表 阅读全文
posted @ 2022-05-07 23:24 YoungerWb 阅读(31) 评论(0) 推荐(0) 编辑
摘要:题目表述 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。 示例: 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5] 阅读全文
posted @ 2022-05-07 23:13 YoungerWb 阅读(22) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示