首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏狗哥的 Java 世界

    Java 并发(3)AbstractQueuedSynchronizer 源码分析之共享模式

    通过上一篇《Java 并发(2)AbstractQueuedSynchronizer 源码分析之独占模式》的分析,我们知道了独占模式获取锁有三种方式,分别是不响应线程中断获取,响应线程中断获取,设置超时时间获取 理解了这些要点那么后续源码的阅读将会轻松很多。 当然这些在《Java 并发(1)AbstractQueuedSynchronizer 源码分析之概要分析》这篇文章里都有详细的介绍,读者可以先去查阅。 本篇对于共享模式的分析也是分为三种获取锁的方式和一种释放锁的方式。 3、设置超时时间的获取 //以限定超时时间获取锁(共享模式) public final boolean tryAcquireSharedNanos(int arg, long nanosTimeout) 注:以上全部分析基于 JDK1.7,不同版本间会有差异,读者需要注意。 ---- -END- ?

    72530发布于 2020-03-21
  • 来自专栏云深之无迹

    microPython源码分析.3

    我们接着main的文件,出现了新的函数 其定义和实现在这里 就是一种通用的组件 我们关注的py exe c的实现在这里 头文件所在 这个是引入的这份boot文件 还引入了一个例子 这地方是又是一个判断,如果宏传了 就执行一次线程的初始化 否则取消一切的工作,强行退出。初始化失败 如果说main文件是灵魂,那app_main更是一个灵魂中的灵魂 它将存储器初始化成功,然后开启线程 看不懂了,是我不行。看书去了 我再看C吧,我好菜啊。。。

    73420发布于 2021-04-14
  • 来自专栏Java架构师必看

    spring源码分析3

    spring源码分析3 强烈推介IDEA2020.2破解激活,IntelliJ 下回分解注册beanDefition 原文链接:https://gper.club/articles/7e7e7f7ff3g5bgc4

    31850发布于 2021-05-14
  • 来自专栏二进制文集

    Java LinkedHashMap 源码分析

    protected boolean removeEldestEntry(Map.Entry<String, Integer> eldest) { return size() > 3; } }; map.put("1", 1); map.put("2", 2); map.put("3", 3); map.put("4", 4); 3 4: 4 迭代输出能够保持插入顺序。 分析 内部结构 LinkedHashMap继承自HashMap,内部额外维护了一个Entry的双向链表,用于记录访问和插入顺序。 这3个函数分别为在访问节点、插入节点、删除节点时做一些事情。 在对LinkedHashMap进行put操作时,执行的是HashMap的put方法,多态调用LinkedHashMap的上述3个函数。

    61930发布于 2019-02-25
  • 来自专栏程序员奇点

    Java String 源码分析

    Java String 源码分析 定义 Java 8 中 String 源码 public final class String implements java.io.Serializable String 是final 类型不能被继承,同时实现了 java.io.serializable Comparable charSequence 三个接口。 static final long serialVersionUID = -6849794470754667710L; String 实现了 Serializable 接口,支持序列化和反序列化支持,Java 使用字节数组来构建 String Java 中,String 实例中报错一个字符数组,char[] 字符数组时以 unicode 码来存储的。 Java 8 中采用的是 Array.copy 方法,避免了这个问题 public String(char value[], int offset, int count) { if (offset

    55810发布于 2020-10-23
  • 来自专栏二进制文集

    Java Stream 源码分析

    前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题。 image 源码结构 Stream 相关类和接口的继承关系如下图所示: ? .max(Comparator.naturalOrder()).orElse(-1); System.out.println(maxLength); } 当使用 Stream 时,主要有 3 } while (++i < hi); } } 断点调试,可以发现首先进入了 filter 的 Sink,其中 accept 方法的入参是 list 中的第一个元素“kotlin”(代码中的 3 对于复杂操作,推荐使用Stream API, 3. 在多核情况下,推荐使用并行Stream API来发挥多核优势,4.单核情况下不建议使用并行Stream API。

    59241发布于 2020-12-08
  • 来自专栏大数据学习笔记

    Java HashSet源码分析

    1、源码分析 废话不多说,直接上代码,相关解释请参见注释 package java.util; /** * * @param <E> the type of elements maintained HashMap * @since 1.2 */ public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable s) throws java.io.IOException { // Write out any hidden serialization magic s) throws java.io.IOException, ClassNotFoundException { // Read in any hidden serialization 通过源码可知,HashSet实际上由HashMap支持实现。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。

    35510编辑于 2022-05-06
  • 来自专栏二进制文集

    Java Stream 源码分析

    前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题。 操作分类详情如下图所示: [2020-12-03-030958.jpg] 源码结构 Stream 相关类和接口的继承关系如下图所示: [2020-12-03-031525.jpg] BaseStream .max(Comparator.naturalOrder()).orElse(-1); System.out.println(maxLength); } 当使用 Stream 时,主要有 3 } while (++i < hi); } } 断点调试,可以发现首先进入了 filter 的 Sink,其中 accept 方法的入参是 list 中的第一个元素“kotlin”(代码中的 3 对于复杂操作,推荐使用Stream API, 3. 在多核情况下,推荐使用并行Stream API来发挥多核优势,4.单核情况下不建议使用并行Stream API。

    3.4K53发布于 2020-12-03
  • 来自专栏全栈程序员必看

    Java volatile源码分析

    而针对volatile修饰的变量给java虚拟机特殊的约定,线程对volatile 变量的修改会立刻被其他线程所感知,即不会出现数据脏读,从而保证数据的一个可见性。 volatile 特性分析 特性一:可见性 前面介绍Java内存模型的时候,我们说过可见性是指当一个线程修改了共享变量的值,其他线程立即感知到这种变化。 特性二、禁止重排序 前面介绍Java 内存模型的时候,我们说过java中的有序性可以概况为一句话:如果在本线程中观察,所有的操作都是有序的;如果在另外一个线程中观察,所有的操作都是无序的。 我们在看一个例子: public class VolatileTest3 { private static Config config = null; private static // a不使用volatile修饰 public static long a = 0; // 消除缓存行的影响 public static long p1, p2, p3,

    35150编辑于 2022-09-09
  • 来自专栏wannshan(javaer,RPC)

    java ThreadLocal 分析by 源码

    可以,通过inheritableThreadLocals属性子线程可以继承父线程的local变量,具体通过InheritableThreadLocal

    49730发布于 2021-03-18
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析3):thrift

    thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。 TMemoryTransport将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream。 (Containers) Thrift3种可用容器类型: list(t): 元素类型为t的有序表,容许元素重复。 3. 序列化和反序列化的兼容性,接口参数对象若增加了字段,是否兼容。 上面这三点有时是鱼与熊掌不可兼得,这里面涉及到具体的序列化库实现细节,就不在本文进一步展开分析了。 这里我们还是以 java 中实现这两个组件为例来分析下它们到底需要做什么? java 中实现代码的动态接口调用目前一般通过反射调用。

    1K30编辑于 2022-08-02
  • golang源码分析 :gopls(3

    在internal/lsprpc/lsprpc.go中有Forwarder的实现

    10110编辑于 2026-03-18
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:etcd(3

    web1 value1 etcdctl --endpoints=$ENDPOINTS put web2 value2 OK etcdctl --endpoints=$ENDPOINTS put web3 value3 查询 etcdctl --endpoints=$ENDPOINTS get web --prefix web1 value1 web2 value2 web3 value3 2,前缀删除 value1 etcdctl --endpoints=$ENDPOINTS put k2 value2 etcdctl --endpoints=$ENDPOINTS del k --prefix 2 3, ------------+-----------+------------+--------------------+--------+ | http://127.0.0.1:22379 | 91bc3c398fb3c146 ":"my.db.part"} {"level":"info","ts":"2023-06-11T16:48:51.178707+0800","logger":"client","caller":"v3@

    35810编辑于 2023-08-09
  • 来自专栏音视频开发技术

    FFmpeg libswscale源码分析3-scale滤镜源码分析

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/14355017.html libswscale 源码分析系列文章: [1]. FFmpeg libswscale源码分析1-API介绍 [2]. FFmpeg libswscale源码分析2-转码命令行与滤镜图 [3]. FFmpeg libswscale源码分析3-scale滤镜源码分析 [4]. FFmpeg libswscale源码分析4-libswscale源码分析 源码分析基于 FFmpeg 4.1 版本。 3. scale 滤镜源码分析 scale 滤镜调用 libswscale 库来执行像素格式转换或图像分辨率缩放工作。阅读 scale 滤镜代码,可以了解 libswscale API 的详细用法。

    83440发布于 2021-02-04
  • 来自专栏Linux内核及编程语言底层相关技术研究

    Linux epoll 源码分析 3

    在上一篇文章 Linux epoll 源码分析 2 中,我们分析了 epoll_ctl 的 ep_insert 方法,在这里我们继续看下 ep_remove 和 ep_modify 方法。

    2.1K30发布于 2019-05-30
  • 来自专栏WriteOnRead

    JDK源码分析-AbstractQueuedSynchronizer(3)

    概述 前文「JDK源码分析-AbstractQueuedSynchronizer(2)」分析了 AQS 在独占模式下获取资源的流程,本文分析共享模式下的相关操作。 3. 场景分析 为了便于理解独占模式和共享模式下队列和节点的状态,下面简要举例分析。 场景如下:有 T0~T4 共 5 个线程按先后顺序获取资源,其中 T2 和 T3 为共享模式,其他均为独占模式。 单独去分析 AQS 的源码比较枯燥,后文会结合 ReentrantLock、CountdownLatch 等常用并发工具类的源码进行分析。 上述解析是参考其他资料及个人理解,若有不当之处欢迎指正。 相关阅读: JDK源码分析-AbstractQueuedSynchronizer(2) JDK源码分析-AbstractQueuedSynchronizer(1) Stay hungry, stay foolish

    43220发布于 2019-08-16
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:boltdb(3

    可用的空闲页号信息存储在freelist中,具体位于freelist.go文件中,定义如下:

    31810编辑于 2023-09-06
  • golang源码分析:langchaingo(3

    Template其实类似golang的模板,只不过按照LLM的需求进行了封装,其源码位于:github.com/tmc/langchaingo@v0.1.13/prompts/prompt_template.go

    8810编辑于 2026-03-18
  • 来自专栏python3

    wifidog 源码分析3

    上一篇分析了 接入设备 在接入路由器,并发起首次 HTTP/80 请求到路由器上时,wifidog 是如何将此 HTTP 请求重定向至 auth-server 的流程。 下面几个步骤就是 接入设备 到 auth-server 上的认证过程,因本系列主要分析 wifidog 源码,这里只截取了 接入设备 与 auth-server 之间的通信报文: + ? + 下一篇会继续分析 wifidog 如何进一步对 客户端 进行鉴权,并为此接入设备开启防火墙。

    83510发布于 2020-01-03
  • 来自专栏后端Coder

    java进阶|java队列源码分析

    今天我要分享的是java里面比较常见的数据结构队列的源码分析,队列,先进先出模式,即FIFO的特点,日常生活中队列的特点也随处可见,超市购物排队,餐厅排队买饭等一系列都满足了队列的先进先出的特点,java 也不是,主要是之前我自己分析了ArrayList,LinkedList以及Stack的源码文章了,到这里就理所应当的应该分析队列的这种数据结构了,满足一下学生时代心心念的数据结构吧。 说了这么多,接下来就逐渐去分析队列的源码吧,写到这时下起了小雨,对,这个时间段是晚上十点左右,这篇文章是自己继五一放假来的第一篇文章,自己玩着玩着手机就突然想起了要写这篇文章了,索性就过来写了,要是学生时代这么努力多好 关于读源码,如何进行梳理整个过程,每个人都有着自己的一套,在这里我就以自己的一套来进行分析好了。 十,到这里就结束了自己对队列的源码分析,其实你会发现我这里没有对队列的每一个方法进行分析,其实都差不多,这里起到一个开头作用就可以了,下面的每个分析方法都差不多。

    97820发布于 2020-05-26
领券