- 简介 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) {...
- 1 逃逸分析 JVM中较前沿的优化技术,它与类型继承关系分析一样,并非直接优化代码,而是为其他优化措施提供依据的分析技术。 1.1 基本原理 分析对象动态作用域,当一个对象在方法里面被定义后,它可能 被外部方法所引用 例如作为调用参数传递给其他方法,称为方法逃逸被外部线程访问 譬如赋值给可以在其他线程中访问的实例变量,称为线程逃逸 从不逃逸 =》方法逃逸 =》... 1 逃逸分析 JVM中较前沿的优化技术,它与类型继承关系分析一样,并非直接优化代码,而是为其他优化措施提供依据的分析技术。 1.1 基本原理 分析对象动态作用域,当一个对象在方法里面被定义后,它可能 被外部方法所引用 例如作为调用参数传递给其他方法,称为方法逃逸被外部线程访问 譬如赋值给可以在其他线程中访问的实例变量,称为线程逃逸 从不逃逸 =》方法逃逸 =》...
- 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 ... 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 ...
- 1 概述 ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件,也可在类被加载入虚拟机之前动态改变类行为, ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能根据要求生成新类。目前许多框架如cgl... 1 概述 ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件,也可在类被加载入虚拟机之前动态改变类行为, ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能根据要求生成新类。目前许多框架如cgl...
上滑加载中
推荐直播
-
AI编码实干派,“码”力全开2026/02/26 周四 15:00-16:30
谈宗玮/于邦旭/丁俊卿/陈云亮/王一男
【中国,深圳,2026年2月26日】,以“AI编码实干派,码力全开”为主题的华为云码道(CodeArts)代码智能体新春发布会在线上成功召开。华为云码道公测版正式发布,为开发者和企业提供具备工程化能力的智能编码解决方案。
回顾中 -
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中
热门标签