首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏各类技术文章~

    Angular进阶教程2-

    组件\color{#0abb3c}{组件}组件不应该直接获取或保存数据,它们应该聚焦于展示数据,而把数据访问和处理的职责委托给某个服务\color{#0abb3c}{服务}服务。那面对组件和服务之间的关系,该如何处理他们之间的依赖关系呢?Angular就引入了依赖注入框架\color{#0abb3c}{依赖注入框架}依赖注入框架去解决这件事情。

    6K30编辑于 2021-12-08
  • Java进阶-集合(2

    话接上回,继续Java集合框架的学习,这次主要介绍Map接口。 2、Map接口 存放一对值的最大接口(接口中的每个元素都是一对,以 key-value 的形式保存)。 import java.util.HashMap; //导包 import java.util.Iterator; import java.util.Scanner; public class MapDemo for-each循环 import java.util.HashMap; //导包 import java.util.Map; public class HashMapDemo1 { public ; //导包 import java.util.Iterator; import java.util.Map; public class HashMapDemo1 { public static

    57121编辑于 2024-02-28
  • Java进阶-IO(2

    话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。 Java 内部采用此编码。 ,一个汉字占2个字节 /* 解码 1.String(byte[] bytes) 2.String(bytes,String charsetName new String(bys,"GBK"); // bys用UTF-8编码,却用GBK解码,所以输出会乱码 String ss3=new String(bys2,"GBK"); // bys2 示例(使用字符流复制java文件) 用转换流InputStreamReader和OutputStreamWriter实现字符流复制java文件 转换流作用:将字节流转换为字符流 import java.io

    43211编辑于 2024-03-04
  • 来自专栏落影的专栏

    iOS开发-OpenGLES进阶教程2

    教程 OpenGLES入门教程1-Tutorial01-GLKit OpenGLES入门教程2-Tutorial02-shader入门 OpenGLES入门教程3-Tutorial03-三维变换 OpenGLES 入门教程4-Tutorial04-GLKit进阶 OpenGLES进阶教程1-Tutorial05-地球月亮 这一次的的内容是光照。 const GLKVector3 vectorA, const GLKVector3 vectorB) 总结 进阶教程不只是图形学知识的进阶

    87370发布于 2018-04-27
  • 来自专栏用户2276240的专栏(5)

    Java字节码-Java快速进阶教程

    Java 中的字节码是一组高度优化的 Java 虚拟机 (JVM) 指令,用于读取和解释以运行 Java 程序。 字节码是只能在 JVM 上运行的二进制程序代码。 它由Java解释器并生成可以直接在真机的指令。 Java字节码的特征 Java 字节码有两个最重要的特征,如下所示: 字节码独立于处理器,即Java程序可以在任何处理器架构上执行。 字节码在Java中是如何工作的? 当我们编写Java程序时,源代码(以.java文件的形式)由Java编译器编译并以.class文件的形式转换为字节码。 看看下2张图就能更好地理解它了。 Java字节码的优点 Java字节码主要有两个优点,如下: 1. 字节码使 java 程序在不同的硬件(处理器)和操作系统平台上可移植。 唯一要求就是必须在其上安装 Java 虚拟机。 2. Java 中的字节码是 Java 编译器生成并由 Java 解释器 (JVM) 执行的一组字节长的指令。 2.

    43710编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    RabbitMQ简介-Java快速进阶教程

    除了用于解耦软件组件外,RabbitMQ 还可用于: 执行后台操作 执行异步操作 2. 消息传递模型 首先,让我们快速、高层次地了解一下消息传递的工作原理。 我们自然会使用 Java 客户端与 RabbitMQ 服务器进行交互;此客户端的Maven 依赖项为: <dependency> <groupId>com.rabbitmq</groupId> amqp-client</artifactId> <version>4.0.0</version> </dependency>Copy 使用官方指南运行 RabbitMQ 代理后,我们需要使用 java

    22400编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    AtomicStampedReference 指南-Java快速进阶教程

    在本教程中,我们将仔细研究如何最好地使用它。 2. 为什么我们需要AtomicStampedReference? 然后,线程 2 运行存款 (100) 和提款 (100),使余额达到 200 美元,然后回到100 美元。 100)) { Thread.yield(); } }); t.start(); Thread t2 account.withdrawal(100)) { Thread.yield(); } }); t2.start (t2.isAlive()); assertEquals(0, account.getBalance()); assertTrue(account.getStamp()

    32900编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    ZGC简介-Java快速进阶教程

    为了解决这个问题,Java 11引入了Z垃圾收集器(ZGC)作为实验性垃圾收集器(GC)实现。 在本教程中,我们将看到ZGC 如何设法在数 TB 的堆上保持较短的暂停时间。 2. 垃圾回收 当我们创建一个 Java 应用程序时,我们不必释放我们分配的内存,因为垃圾收集器会为我们完成这项工作。总之,GC 通过引用链监视我们可以从应用程序中访问哪些对象,并释放我们无法访问的对象。

    44600编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Stack学习-Java快速进阶教程

    栈类是在Java 1.0版本中引入的。它存在于java.util.Stack<E>包中。 栈类的功能 Java 中的栈有几个特性,如下所示: 1. 栈具有“后进先出”检索的元素的能力。 2. 在 Java 栈中,所有操作都发生在栈的顶部。 3. 推送操作将元素插入栈顶部。 4. 2. E peek():此方法用于从栈中检索最顶层的元素而不删除它。 3. E pop():pop() 方法用于从栈中弹出(删除)最顶层的元素并返回它。 4. empty: true Elements of Stack: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] 2. import java.util.Stack; public class StackEx2 { public static void main(String[] args) { // Create an

    17900编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Apache Flink with Java 简介-Java快速进阶教程

    2. Maven 依赖 首先,我们需要将 Maven 依赖项添加到 flink-java 和flink-test-utils库中: <dependency> <groupId>org.apache.flink </groupId> <artifactId>flink-java</artifactId> <version>1.2.0</version> </dependency> <dependency Sort 假设您有以下Tuple2 集合: Tuple2<Integer, String> secondPerson = new Tuple2<>(4, "Tom"); Tuple2<Integer, <>("sentence", 2), new Tuple2<>("word", 1), new Tuple2<>("is", 2), new Tuple2<>("this", 2), new Tuple2

    34400编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    ProcessBuilder API 指南-Java快速进阶教程

    在本教程中,我们将看看 Java 如何使用ProcessBuilderAPI 缓解这种情况。 2.进程生成器接口 类提供了用于创建和配置操作系统进程的方法。 使用ProcessBuilder打印 Java 版本 在第一个示例中,我们将使用一个参数运行java命令以获取版本。 让我们回到原始示例来打印出 Java 版本。 结论 总而言之,在本教程中,我们详细探讨了java.lang.ProcessBuilderAPI。 首先,我们首先解释了 API 可以做什么,并总结了最重要的方法。 接下来,我们看了一些实际的例子。 最后,我们研究了 Java 9 中 API 中引入了哪些新增功能。

    49200编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Process API 指南-Java快速进阶教程

    简介 在本教程中,我们将深入了解进程API。 它所指的进程是一个正在执行的应用程序。Process类提供与这些进程交互的方法,包括提取输出、执行输入、监视生命周期、检查退出状态以及销毁(终止)它。 2. \\com\\java9\\process\\OutputStreamExample.java"); process = Runtime.getRuntime() .exec("java 代码中执行Java代码的应用几乎是无限的。 \\com\\java9\\process\\OutputStreamExample.java"); process = Runtime.getRuntime() .exec("java

    53310编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 9 变量句柄揭秘-Java快速进阶教程

    简介 Java 9为开发人员带来了许多新的有用功能。 其中之一是java.lang.invoke.VarHandleAPI - 表示变量句柄 - 我们将在本文中探讨。 2. 什么是可变手柄? VarHandle的目标是定义一个标准,用于调用字段和数组元素上的 java.util.concurrent.atomic和sun.misc.Unsafe操作的等效项。 例如,以下是Java本身如何在内部使用VarHandles来实现AtomicReference: private volatile V value; private static final VarHandle 在Java 9之前,此操作的等效API是Unsafe类和来自ReflectionAPI的setAccessible()方法。 但是,这种方法有其缺点。例如,它仅适用于变量的特定实例。 VarHandle: VarHandle arrayVarHandle = MethodHandles.arrayElementVarHandle(int[].class); assertEquals(2,

    40711编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    TreeMap工作原理-Java快速进阶教程

    让我们看看 compareTo() 方法的以下用法: 如果 obj1.compareTo(obj2) 返回一个负数,则 obj1 在逻辑上小于 obj2。 如果 obj1.compareTo(obj2) 返回正数,则 obj1 在逻辑上大于 obj2 如果 obj1.compareTo(obj2) 返回零,则 obj1 等于 obj2Java 中TreeMap的内部工作原理 现在,我们将讨论一个示例,看看TreeMap在内部是如何工作的。 /** * */ package com.jack.map; import java.util.Map; import java.util.TreeMap; /** * @author Jack.Yang 步骤 2:将第一个元素添加到TreeMap treemap.put("H", "中国"); 在上面的代码中,“H”是键,“中国”是值。

    36110编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 中的分支预测-Java快速进阶教程

    2. 什么是指令流水线? 当我们编写任何计算机程序时,我们正在编写一组我们希望计算机按顺序执行的命令。 早期的计算机会一次运行一个。 例如,我们可以有一个简单的程序: int a = 0; a += 1; a += 2; a += 3; 这可能由由获取、解码、执行、存储段组成的管道处理为: 我们可以在这里看到四个命令的整体执行是如何并行运行的 让我们更改我们的简单程序以引入一个分支: int a = 0; a += 1; if (a < 10) { a += 2; } a += 3; 其结果与以前相同,但我们在其中中间引入了一个if语句。 在上面的例子中,处理器可能会预测if(<10)很可能为真,因此它将表现得好像指令a += 2是下一个要执行的指令。 处理器错误地预测分支的计算结果为true,开始排队a += 2指令,然后不得不丢弃它并在分支计算结果为 false 时重新开始。 5.

    35000编辑于 2025-04-05
  • 来自专栏常用算法专栏

    Java中的梯度下降-Java快速进阶教程

    简介 在本教程中,我们将了解梯度下降算法。我们将在 Java 中实现该算法并逐步说明它。 2. 什么是梯度下降? 梯度下降是一种优化算法,用于查找给定函数的局部最小值。 我们将在本教程中说明和实现回溯梯度下降。 4. 分步说明 梯度下降需要一个函数和一个起点作为输入。让我们定义并绘制一个函数: 我们可以从任何想要的点开始。 在 Java 中的实现 有几种方法可以实现梯度下降。在这里,我们不计算函数的导数来找到斜率的方向,因此我们的实现也适用于不可微函数。 currentY = f.apply(currentX); if (currentY > previousY) { stepCoefficient = -stepCoefficient/2;

    22400编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 9 CompletableFuture API 改进-Java快速进阶教程

    简介 Java 9对CompletableFuture类进行了一些更改。 2. 结论 总之,Java 9 对CompletableFutureAPI 进行了一些补充,它现在对子类化有了更好的支持,这要归功于新的 IncompleteFuture虚拟构造函数,可以控制大多数 CompletionStage

    31900编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 中的 ThreadLocal 简介-Java快速进阶教程

    概述 在本教程中,我们将研究java.lang包中的ThreadLocal构造。这使我们能够单独存储当前线程的数据,并简单地将其包装在特殊类型的对象中。 2.ThreadLocal 接口 TheadLocal构造允许我们存储只能由特定线程访问的数据。 new SharedMapWithUserContext(1); SharedMapWithUserContext secondUser = new SharedMapWithUserContext(2) -423e-8b2b-bca1f471ae5c'}Copy 我们可以看到每个用户都有自己的上下文。 这是在 Java 中实现线程安全的合理方法。但是,当我们一起使用ThreadLocal和线程池时,我们应该格外小心。

    26510编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 中的线程池简介-Java快速进阶教程

    概述 本教程介绍了 Java 中的线程池。我们将从标准Java库中的不同实现开始,然后查看Google的Guava库。 2. 线程池 在 Java 中,线程映射到系统级线程,这些线程是操作系统的资源。 这两者都是函数接口,我们可以将它们作为 lambda 传递(从 Java 8 开始)。 Runnable 的单一方法不会引发异常,也不会返回值。 有关使用 ExecutorService 接口和Future接口的更多示例,请查看ExecutorService使用指南-Java快速入门教程 。 这意味着,如果同时运行的任务数始终小于或等于 2,则它们会立即执行。否则,其中一些任务可能会被放入队列中以等待轮到它们。 这个框架在我们的fork-join使用框架指南-Java快速入门教程 中有详尽的描述。 让我们看一个简单的示例,该示例使用ForkJoinPool遍历节点树并计算所有叶值的总和。

    40110编辑于 2025-04-05
  • 来自专栏用户2276240的专栏(5)

    Java 中的原子变量简介-Java快速进阶教程

    2. sync关键字确保一次只有一个线程可以进入该方法(要了解有关锁定和同步的更多信息,请参阅 –Java 中的同步关键字指南): public class SafeCounterWithLock { Java中的原子变量 Java 中最常用的原子变量类是 AtomicInteger、AtomicLong、AtomicBoolean和AtomicReference。 从Java 9开始,这个方法在所有原子实现中都已弃用,取而代之的是weakCompareAndSetPlain()。

    31200编辑于 2025-04-05
领券