摘要: 抽象同步队列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 阅读(78) 评论(0) 推荐(0)
摘要: 写时复制,CopyOnWriteArrayList源码剖析 1、CopyOnWriteArrayList介绍 CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。 每个 CopyOnWri 阅读全文
posted @ 2022-05-25 15:47 YoungerWb 阅读(97) 评论(0) 推荐(0)
摘要: CAS操作及原子类的使用 1、CAS操作 在java中,加锁可以解决一定的并发问题,但是锁有一个不好的问题就是当一个线程没有获取到锁的时候就会被阻塞挂起,这会导致线程上下文的切换和重新调度开销。Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题,这在一定程度上弥补了锁带来的开销问 阅读全文
posted @ 2022-05-25 11:20 YoungerWb 阅读(348) 评论(0) 推荐(0)
摘要: 手写RPC框架实现 参考视频:自己动手实现RPC框架 1、什么是RPC? RPC, 英文全名remote procedure call 即远程过程掉调用 就是说一个应用部署在A服务器上,想要调用B服务器上应用提供的方法 由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 阅读全文
posted @ 2022-05-25 09:34 YoungerWb 阅读(238) 评论(0) 推荐(0)
摘要: ThreadLocal理解及使用 ​ 多线程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步。 ​ 同步的措施一般是加锁,这就需要使用者对锁有一定的了解,因此可以使用ThreadLocal,当创建一 阅读全文
posted @ 2022-05-24 16:42 YoungerWb 阅读(89) 评论(0) 推荐(0)
摘要: 题目表述 已知一个由像素点组成的单色屏幕,每行均有 w 个像素点,所有像素点初始为 0,左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中,再依次存入长度为 length 的一维数组中。 我们将在屏幕上绘制一条从点 (x1,y) 到点 (x2,y) 的 阅读全文
posted @ 2022-05-19 23:33 YoungerWb 阅读(86) 评论(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 阅读(54) 评论(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 阅读(68) 评论(0) 推荐(0)
摘要: 题目表述 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 示例: 输入: num = 1775(110111011112) 输出: 8 位运算 双指针,利用与计算出num的0的位置,计算3个0间的位置差距,求出来最长序列即可。 class 阅读全文
posted @ 2022-05-18 22:43 YoungerWb 阅读(62) 评论(0) 推荐(0)
摘要: 题目表述 二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。 示例: 输入:0.625 输出:"0.101" 解题思路 十进制的小数转换为二进制小数,主要是利用小数部分乘2后,取 阅读全文
posted @ 2022-05-18 22:36 YoungerWb 阅读(63) 评论(0) 推荐(0)