- 我了解注释的用法。 指示可以引用定义常量值的字段 来自本机代码。注释可被以下工具用作提示: 生成本机头文件以确定头文件是否 必需的,如果是,它应该包含什么声明。 然而,在阅读Java源代码时,我注意到在类@Native和Integer中,Long常量是SIZE而不是浮点、字节、双、短和字符。 请注意,大小常量表示用于表示实际值的位数。 public static f... 我了解注释的用法。 指示可以引用定义常量值的字段 来自本机代码。注释可被以下工具用作提示: 生成本机头文件以确定头文件是否 必需的,如果是,它应该包含什么声明。 然而,在阅读Java源代码时,我注意到在类@Native和Integer中,Long常量是SIZE而不是浮点、字节、双、短和字符。 请注意,大小常量表示用于表示实际值的位数。 public static f...
- 如果JMM中所有的有序性都只靠volatile和synchronized,那么有一些操作将会变得很繁琐,但我们在编写Java并发代码时并没有感到这一点,这是因为Java语言中有一个先行发生(Happen-Before)原则 这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依赖。 先行发生原则 指的是JMM中定义的两项操作之间的依序关系 happen... 如果JMM中所有的有序性都只靠volatile和synchronized,那么有一些操作将会变得很繁琐,但我们在编写Java并发代码时并没有感到这一点,这是因为Java语言中有一个先行发生(Happen-Before)原则 这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依赖。 先行发生原则 指的是JMM中定义的两项操作之间的依序关系 happen...
- volatile 的实现维度 级别实现Java 代码volatile int iByteCode 字节码ACC_VOLATILEJVM 虚拟机规范JVM 内存屏障HotSpot 实现汇编语言调用CPU 级别MESI 原语支持总线锁 可见性问题 让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个vo... volatile 的实现维度 级别实现Java 代码volatile int iByteCode 字节码ACC_VOLATILEJVM 虚拟机规范JVM 内存屏障HotSpot 实现汇编语言调用CPU 级别MESI 原语支持总线锁 可见性问题 让一个线程对共享变量的修改,能够及时的被其他线程看到。 根据JMM中规定的happen before和同步原则: 对某个vo...
- 简介 BorderLayout,边界布局管理器。它把 Container 按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。 构造方法: 构造一个组件之间没有间距的新边框布局 BorderLayout() 构造一个具有指定组件间距的边框布局 BorderLayout(int hgap, int vgap) 方位常量 BorderLayout... 简介 BorderLayout,边界布局管理器。它把 Container 按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。 构造方法: 构造一个组件之间没有间距的新边框布局 BorderLayout() 构造一个具有指定组件间距的边框布局 BorderLayout(int hgap, int vgap) 方位常量 BorderLayout...
- 1 概览 完好的程序都满足以下特征 自动运行 我们的程序和指令都是一条条顺序执行,不需要通过键盘或者网络给这个程序任何输入 正常运行 没有遇到计算溢出之类的程序错误。 不过,现实的软件世界可没有这么简单 程序不仅是简单的执行指令,更多的还需要和外部的输入输出打交道程序在执行过程中,还会遇到各种异常情况,比如除以0、 溢出,甚至我们自己也可以让程序抛出异常。... 1 概览 完好的程序都满足以下特征 自动运行 我们的程序和指令都是一条条顺序执行,不需要通过键盘或者网络给这个程序任何输入 正常运行 没有遇到计算溢出之类的程序错误。 不过,现实的软件世界可没有这么简单 程序不仅是简单的执行指令,更多的还需要和外部的输入输出打交道程序在执行过程中,还会遇到各种异常情况,比如除以0、 溢出,甚至我们自己也可以让程序抛出异常。...
- 针对Java的开发工具,一般都有Compile、Make和Build三个菜单项,完成的功能的都差不多,但是又有区别。 编译,是将源代码转换为可执行代码的过程。编译需要指定源文件和编译输出的文件路径(输出目录)。Java的编译会将java编译为class 文件,将非java的文件(一般成为资源文件、比如图片、xml、txt、poperties等文件)原封不动的复制到编译... 针对Java的开发工具,一般都有Compile、Make和Build三个菜单项,完成的功能的都差不多,但是又有区别。 编译,是将源代码转换为可执行代码的过程。编译需要指定源文件和编译输出的文件路径(输出目录)。Java的编译会将java编译为class 文件,将非java的文件(一般成为资源文件、比如图片、xml、txt、poperties等文件)原封不动的复制到编译...
- 引用知乎上著名的示意图 简单理解 就像一些外来的钩子,在源代码之间钩取一些信息,当捕捉到感兴趣的事时,就拦截下来,让自己的代码执行一下,处理一下这个信息,然后再放出去继续之前的进程。 这样就可以在不用改变源代码的情况下,做一些别的事情,比方说监控、分析和一些恶意的事 专业理解 在计算机编程中,术语“钩子”涵盖了一系列技术,这些技术通过截获在软件组件之间传递的函... 引用知乎上著名的示意图 简单理解 就像一些外来的钩子,在源代码之间钩取一些信息,当捕捉到感兴趣的事时,就拦截下来,让自己的代码执行一下,处理一下这个信息,然后再放出去继续之前的进程。 这样就可以在不用改变源代码的情况下,做一些别的事情,比方说监控、分析和一些恶意的事 专业理解 在计算机编程中,术语“钩子”涵盖了一系列技术,这些技术通过截获在软件组件之间传递的函...
- 网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但该类过于复杂,有点难用。 ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原理基本上相同,也分为堆内与堆外俩种类型,但是ByteBuf做了极大的优化,具有更简单的API,更多的工具方法和优秀的内存池设计。 1 API Nett... 网络数据的基本单位永远是 byte(字节)。Java NIO 提供 ByteBuffer 作为字节的容器,但该类过于复杂,有点难用。 ByteBuf是Netty当中的最重要的工具类,它与JDK的ByteBuffer原理基本上相同,也分为堆内与堆外俩种类型,但是ByteBuf做了极大的优化,具有更简单的API,更多的工具方法和优秀的内存池设计。 1 API Nett...
- 1 锁的对象和范围 缩小粒度 2 锁的对象本身大小 减少空间占用 Atomic long V.S long 前者是个对象,包含对象头(object header)以保存hashcode、lock 等信息,64 位系统下占16字节,64位系统下:volatile long= 8 bytesAtomicLong = 8 bytes (volatile long)... 1 锁的对象和范围 缩小粒度 2 锁的对象本身大小 减少空间占用 Atomic long V.S long 前者是个对象,包含对象头(object header)以保存hashcode、lock 等信息,64 位系统下占16字节,64位系统下:volatile long= 8 bytesAtomicLong = 8 bytes (volatile long)...
- 请求在被Servlet处理之前会先被过滤器处理,之后调用Servlet的service方法来对相应的请求进行处理响应。所以我们这里分析的入口是Servlet的service方法。 我们在用SpringMVC的时候,通常都会在web.xml中进行这样的配置: <servlet> <servlet-name>spring-mvc</ser... 请求在被Servlet处理之前会先被过滤器处理,之后调用Servlet的service方法来对相应的请求进行处理响应。所以我们这里分析的入口是Servlet的service方法。 我们在用SpringMVC的时候,通常都会在web.xml中进行这样的配置: <servlet> <servlet-name>spring-mvc</ser...
- 网络编程为避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请内存,存放数据,在Java中,把内核空间的内存称之为直接内存,nio包中的ByteBuffer的allocateDirect方法,就是申请直接内存 DirectByteBuffer对象是ByteBuffer的子类,对于直接内存的分配,就是在这个类中实现的。 java中 直接内存的申请与释放... 网络编程为避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请内存,存放数据,在Java中,把内核空间的内存称之为直接内存,nio包中的ByteBuffer的allocateDirect方法,就是申请直接内存 DirectByteBuffer对象是ByteBuffer的子类,对于直接内存的分配,就是在这个类中实现的。 java中 直接内存的申请与释放...
- 1 初识Reactive Stream 反应式流 2015 年反应式流 (Reactive Stream) 规范诞生,定义了如下四个接口: Subscription 接口定义了连接发布者和订阅者的方法Publisher 接口定义了发布者的方法Subscriber 接口定义了订阅者的方法Processor<T,R> 接口定义了处理器 Reactive ... 1 初识Reactive Stream 反应式流 2015 年反应式流 (Reactive Stream) 规范诞生,定义了如下四个接口: Subscription 接口定义了连接发布者和订阅者的方法Publisher 接口定义了发布者的方法Subscriber 接口定义了订阅者的方法Processor<T,R> 接口定义了处理器 Reactive ...
- 一个程序的可读性,关键取决于注释。如果一个程序想二次开发,要读懂前面的程序代码,就必须在程序中有大量的注释文档,所以对于一个优秀的程序员来说,学会在程序中适当地添加注释是非常重要的。 注释除了帮助别人了解编写的程序之外,还对程序的调试、校对等有相当大的帮助。当程序具体运行时,计算机会自动忽略注释符号之后所有的内容。教程第二章中曾经提到过注释,读者也许印象不太深,在这里... 一个程序的可读性,关键取决于注释。如果一个程序想二次开发,要读懂前面的程序代码,就必须在程序中有大量的注释文档,所以对于一个优秀的程序员来说,学会在程序中适当地添加注释是非常重要的。 注释除了帮助别人了解编写的程序之外,还对程序的调试、校对等有相当大的帮助。当程序具体运行时,计算机会自动忽略注释符号之后所有的内容。教程第二章中曾经提到过注释,读者也许印象不太深,在这里...
- 线程安全的单例模式本质上其实也是单次初始化,所以可以用Balking模式: class Singleton{ private static Singleton singleton; //构造方法私有化 private Singleton(){} //获取实例(单例) public synchronized static Singleton ge... 线程安全的单例模式本质上其实也是单次初始化,所以可以用Balking模式: class Singleton{ private static Singleton singleton; //构造方法私有化 private Singleton(){} //获取实例(单例) public synchronized static Singleton ge...
- 1 Period类 方法getYears(),getMonths()和getDays()。 import java.time.LocalDate; import java.time.Month; import java.time.Period; public class Test { public static void main(String[] args) {... 1 Period类 方法getYears(),getMonths()和getDays()。 import java.time.LocalDate; import java.time.Month; import java.time.Period; public class Test { public static void main(String[] args) {...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签