首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏拭心的安卓进阶之路

    并发编程4Java 阻塞队列源码分析(上)

    这篇文章我们来详细了解下 Java 中的阻塞队列究竟是什么。 什么是阻塞队列 阻塞队列其实就是生产者-消费者模型中的容器。 具体到 Java 中,使用 BlockingQueue 接口表示阻塞队列: public interface BlockingQueue<E> extends Queue<E> { //添加失败时会抛出异常 七种阻塞队列的前三种 Java 中提供了 7 种 BlockingQueue 的实现,在看线程池之前我根本搞不清楚究竟选择哪个,直到完整地对比总结以后,发现其实也没什么复杂。 不了解 Comparator 和 Comparable 可以看这篇 Java 解惑:Comparable 和 Comparator 的区别。 经过源码分析我们了解了 PriorityBlockingQueue 为什么是无界、有优先级的队列了。因为它可以扩容,在添加、删除元素后都会进行排序。 由于篇幅原因,我们将阻塞队列分两篇介绍。

    1.7K90发布于 2018-01-05
  • 来自专栏狗哥的 Java 世界

    Java 并发(4)AbstractQueuedSynchronizer 源码分析之条件队列

    通过前面三篇的分析,我们深入了解了 AbstractQueuedSynchronizer 的内部结构和一些设计理念,知道了 AbstractQueuedSynchronizer 内部维护了一个同步状态和两个排队区 reportInterruptAfterWait(interruptMode); } //返回剩余时间 return nanosTimeout - (System.nanoTime() - lastTime); } 4. //2.将头结点的后继结点引用置空 first.nextWaiter = null; //3.将头结点转移到同步队列, 转移完成后有可能唤醒线程 //4. = null); } 至此,我们整个的 AbstractQueuedSynchronizer 源码分析就结束了,相信通过这四篇的分析,大家能更好的掌握并理解 AQS。 注:以上全部分析基于 JDK1.7,不同版本间会有差异,读者需要注意 ---- -END-

    58620发布于 2020-03-24
  • 来自专栏红队蓝军

    Java安全之Commons Collections4-7分析

    CC4分析 import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter; import javassist.*; import org.apache.commons.collections4 ; import java.io.*; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException ; import java.util.PriorityQueue; public class cc4 { public static void main(String[] args) throws ; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream .*; import java.util.HashMap; import java.util.HashSet; import java.util.Map; public class cc6 {

    44040编辑于 2022-03-14
  • 来自专栏红队蓝军

    Java安全之Commons Collections4-7分析

    CC4分析 import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter; import javassist.*; import org.apache.commons.collections4 .Transformer; import org.apache.commons.collections4.comparators.TransformingComparator; import org.apache.commons.collections4 ; import java.util.PriorityQueue; public class cc4 { public static void main(String[] args) throws ObjectInputStream(new FileInputStream("test.out")); inputStream.readObject(); } } CC5分析 ObjectInputStream(new FileInputStream("test.out")); inputStream.readObject(); } } CC6分析

    30810编辑于 2022-05-17
  • 来自专栏怀英的自我修炼

    Java漫谈4

    同样的,上述例子中的能量在Java中就对应了Java的数据类型,这些基本的数据类型就构成了Java的Bean,方法,函数等。 说回到Java的数据类型,Java中有8大数据类型,在我看来就像是8大金刚一样,它们分别是: boolean金刚:主判断,法宝为if尺,常用招数——if判断。 理论上说,从写完HW代码,到出现“Hello world”结果,中间要经过词法分析、语法分析、语义分析、机器码生成、操作系统硬件执行结果。 而这样一来似乎就能达到这样的效果,首先,我可以在任意的机器上将代码编译成.class文件,从而将词法、语法、语义分析做预处理,也就是将这三布提前完成。 这一次,我们聊了Java中的八大数据类型,并且借用了8大金刚的概念来阐述它。希望这能让你对java的数据类型有个印象,咱们下回见。

    661100发布于 2018-03-12
  • 来自专栏学习笔记ol

    框架分析4)-Spring

    框架分析4)-Spring 主要对目前市面上常见的框架进行分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步。 Spring Spring框架是一个开源的Java企业级应用程序开发框架,它提供了一种简化Java开发的方法,帮助开发者构建可扩展、模块化和高效的企业级应用程序。 总结 Spring框架通过提供一系列的模块和工具,简化了Java企业级应用程序的开发过程,提高了代码的可维护性和可测试性。它被广泛应用于各种规模的企业级应用程序开发中。

    34320编辑于 2023-10-11
  • 来自专栏geekfly

    Java数据采集-4.分析常见的翻页(加载数据)方式

    本篇文章主要分析当下常见的几种翻页(加载数据)的方式,并结合实际例子和截图介绍。在后续博客中针对这些网站,写代码完成数据抓取。 1. 根据页码进行翻页 如CSDN的个人博客列表,我们可以轻松的分析出总页数和列表页地址。

    74520编辑于 2022-04-24
  • 来自专栏Java后端

    Java进阶-IO(4

    4、示例 1)获取文件属性 import java.io.File; // 导包 import java.util.Date; //获取文件属性 public class FlieDemo { f.delete(); } f.mkdir(); // 创建目录 } } // 结果:会发现D盘下多了一个Date1_24的空文件夹 4) return name.endsWith(".sys") || name.endsWith(".txt") || name.endsWith(".bak"); } } 其他代码与4) 以单字节的形式向文件中写入一个 byte 值 void writeChar(int v) 以双字节的形式向文件中写入一个 char 值 void writelnt(int v) 以4字节的形式向文件中写入一个整数 System.out.println(key+","+value); // 输出键和值信息 } } } 运行结果 102,lishi 101,zhangsan 4

    58421编辑于 2024-03-08
  • 来自专栏全栈程序员必看

    Java安全之log4j反序列化漏洞分析

    Java安全之log4j反序列化漏洞分析 0x00 前言 前段时间在看某个cms代码的时候,发现log4j组件版本存在漏洞,并且开启了端口,但web站点是nginx反向代理的,而在外网并没有开放到该端口 0x01 log4j 漏洞简介 漏洞简介 log4j用的其实还是比较多,记录一些Java的日志,这个相信接触过Java的都知道,在此不做多的赘诉。 0x02 log4j 反序列化分析 漏洞复现 配置漏洞代码 import org.apache.log4j.net.SimpleSocketServer; public class log4j { nc 127.0.0.1 1234 < log4j.curl.bin 漏洞分析 漏洞比较简单,还是现在漏洞位置先下断点。 ,只是发包构造的数据包不一样,分析一下漏洞知道漏洞怎么形成的。

    1.1K40编辑于 2021-12-13
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    Java面试系列4

    Java面试系列4 一、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以。必须只有一个类名与文件名相同。 Public的类必须和文件名相同,并且一个.java的源文件中只能有一个公有的类。 二、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的,一个汉字两个字节。 四、数组有没有length()这个方法? JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。

    77660发布于 2018-03-19
  • 来自专栏周小末天天开心

    Java 基础学习(4

    j = ++i i = 6 ,j = 5 i = 6 ,j=6 -- 自减:  分为自减在前和            自减在后两种 i = 5 ;j = i-- i = 5 ;j = --i i = 4 ,j = 5 i = 4 ,j=4 (3)算术运算符的使用细节 1)自增自减运算符都作为独立的语句使用,前++(--)和后++(--)都完全等价于         i = i + ( - ) 1 ;

    29730编辑于 2022-10-26
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析:boltdb(4)

    通过前面源码分析,我们差不多了解了boltdb的核心数据结构了,逻辑视图上是通过Bucket组建的嵌套结构来管理数据的,每一层都可以存储一一系列key和value,也是使用boltdb的用户需要关注的 下面我们详细分析下它们在内存以及磁盘上 存储结构。 若单个 page 大小不够,会分配多个 page ptr uintptr // 存放 page data 的起始地址 } ptr 是保存数据的起始地址,不同类型 page 保存的数据格式也不同,共有4

    42710编辑于 2023-09-06
  • 来自专栏golang算法架构leetcode技术php

    kratos源码分析系列(4

    接着按目录分析源码: 5,encoding 支持的格式有form、json、proto、xml、yaml,使用的包有 https://github.com/go-playground

    70120编辑于 2023-03-14
  • 来自专栏UE4技术专场

    UE4 ReplicationGraph分析

    UE4 ReplicationGraph分析 老版本网络系统 总体思路 所有Actor都会添加到网络列表中,每次更新的时候都是从这个Actor列表中遍历,根据不同的条件,确定每个链接的客户端需要同步的Actor

    4.9K51发布于 2018-12-18
  • 来自专栏coding for love

    4-8 打包分析

    简介 上一节4-3~8 code-splitting,懒加载,预拉取,预加载 讲到如何对代码进行 code splitting。 那么如何判断我们的代码要进行code splitting 或者对 code splitting 后的效果进行分析呢?这就需要用到一些辅助的打包分析工具。 2. 准备工作 为了进行代码分析,我们先准备一些用来打包的模块。 // index.js import { log } from '. image.png 同时会在项目下生成一个分析文件: ? 4.

    47330发布于 2020-03-20
  • 来自专栏golang算法架构leetcode技术php

    golang源码分析4):select

    下面我们来分析分析。 在for {} 结构中的 select 每一次for 都会经历上述的 4各阶段,创建 -> 注册 -> 执行 -> 释放;所以select的执行是有代价的而且代价不低。

    90931编辑于 2022-08-02
  • golang源码分析:langchaingo(4

    前面介绍了GenerateFromSinglePrompt和Call最终都调用了

    11110编辑于 2026-03-18
  • 来自专栏兜兜毛毛

    Java集合---Vector(4

    用途与特点 可用于在需要存储有序的,可动态扩充线程安全的集合。整理逻辑算法上基本与ArrayList相同,但在操做数据的方法上都使用了synchronized关键字,在多 线程调用时,会将并行请求,变为串行请求,因为使用了synchronized方法,所以他的性能方面比ArrayList要差。建议在非线程下使用ArrayList。

    38510发布于 2019-10-23
  • 来自专栏机器学习原理

    深度学习——CNN(4分析

    前言:自己构建CNN网络结构训练一个验证码识别的模型 分析 假定验证码中只有:数字、大小写字母,验证码的数目是4个,eg: kx3S 步骤如下: 1.收集数据,验证码的数据集合可以自己生成 生成的验证码如下 image.png 代码如下: def random_code_text(code_size=4): """ 随机产生验证码的字符 :param code_size: : code_char_set) code_text.append(c) return code_text def generate_code_image(code_size=4) 可以采用三成网络结构进行模型构建 def code_cnn(x, y): """ 构建一个验证码识别的CNN网络 :param x: Tensor对象,输入的特征矩阵信息,是一个4维的数据 定义优化函数 train = tf.train.AdamOptimizer(learning_rate=0.0001).minimize(cost) # 4.

    57040发布于 2018-06-04
  • golang源码分析 :gopls(4

    初始化完转发代理,我们看看json-rpc服务提供能力是如何实现的

    8210编辑于 2026-03-18
领券