Java 自定义 equals 时 super.equals 带来的问题分析

Java中String与Integer的equals比较原理与解决方案 在Java编程中,equals方法是对象比较的核心机制,遵循严格的类型检查原则。当比较String与Integer等不同类型对象时,由于继承体系差异,直接调用equals会返回false。理解这一现象需要掌握Java类型系统和equals方法的实现契约,包括自反性、对称性等五大原则。实际开发中,可通过显式类型转换、parseInt值比较或Objects工具类实现跨类型比较。该机制在集合操作、数据验证等场景尤为重要,正确处理类型差异能避免常见的逻辑错误。本文通过String与Integer的典型对比案例,深入 阅读详情

问题一:Java 自定义 equals 注意事项

对于需要用某业务主键判断对象相等时,通常用 IDE 自动生成 equals 方法,选定特点的判断字段。

但对于有父类的类来说,默认有一句调用比较坑:

public class Person extends ParentObject{
    private String id;
    private String name;
    private int age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        Person person = (Person) o;
        return id.equals(person.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), id);
    }
}

if (!super.equals(o)) return false; 这一句默认的代码,遭遇过两次坑。例如这里的 Person 对象只需要根据 id 相等,就视为同一个对象,但是有了这句调用,执行列表的 contains 方法始终返回 false,断点找到了这个问题。

解决办法:自定义具有父类的类的 equals 方法时,需要去掉这行。这个问题一碰到就感觉很熟悉,想起去年6月也遇到集合操作自定义对象判断失败的问题,所以断点到了 super 调用返回 false 就知道问题所在了。

问题二:logback.xml 配置 maxFileSize 单位问题

项目中的 logback.xml 配置文件,忘记了从哪里扒来的,本地测试时只关注控制台日志,没发现问题。部署测试机器后,发现异常信息没有写入到日志文件中,为什么呢?

日志文件生成策略是滚动达到文件最大值后新建文件,配置如下:

<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>50M</maxFileSize>
</triggeringPolicy>

跟踪过程,打开调试配置,在 logback.xml 中添加配置:<configuration debug="true">。

启动,查看日志插件的调试信息,异常提示 maxFileSize 属性设置报错了。调试到 logback-core 源码中,发现文件大小的单位使用的是 gb/mb/kb,且不区分大小写。修正文件大小配置为:

<maxFileSize>50MB</maxFileSize>

为什么以前没有碰到过这个问题呢?因为以前的日志都是滚动按天生成的,这里拷贝过来的日志文件生成策略是按文件大小。这个配置有个好处,就是不会生成太多日志文件。

问题三:SpringCloud gateway 项目引入 druid

SpringCloud 的 gateway 项目是基于 Netty 的,与 Servlet 不相容。网关模块中需要加入数据库操作,引入 druid,常规的数据源配置报 Servlet 包相关的问题。

解决办法是,关掉 spring.datasource.druid 的 stat-view-servlet 配置:

stat-view-servlet:
    enabled: false
    web-stat-filter:
      enabled: false

问题四

Shell 编写脚本时,cd 命令切换到一个不存在的变量时,默认会到当前用户的 HOME 目录。

#!/sh
currentDir=$(cd `dirname $0`; pwd)
cd $currrentDir
echo `pwd`

这是常用的获取当前执行命令脚本的路径,第三行切换路径时,变量拼写错误,导致切换到脚本目录总是到了 /root 。

Java对象比较:==、equals()与hashCode()详解 在Java编程中,对象比较是基础但容易出错的操作。==操作符比较基本类型的值或引用类型的内存地址,而equals()方法用于逻辑相等性判断,需要遵循自反性、对称性等五大原则。hashCode()则为哈希表提供高效查找支持,必须与equals()保持逻辑一致。理解这些概念对正确使用HashMap、HashSet等集合类至关重要。本文通过实际代码示例,解析字符串常量池等特殊场景,并给出重写equals和hashCode的标准模板与常见陷阱,帮助开发者避免对象比较中的典型错误。 阅读详情

相关推荐

数据库系统概论课后习题答案(第五版 王珊、萨师煊)

第1章 绪论 1 .试述数据、数据库、数据库系统、数据库管理系统的概念。 答: ( l )数据( Data ) :描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。解析在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。现代计算机能存储和处理的对象十分广泛,表

早知晓的博客 11万+

if(!super.equals(o)) return false;——equals重写理解误区

在仿照别人博客写equals重写方法的时候,我发现在if(!super.equals(o)) return false;这个语句上我的理解一直存在问题,所以写一篇博客记录一下。 类重写euqals方法 1. 判断两个引用指向的对象是否相等 2. 判断传来的参数是否为当前类或者当前类的子类 3. 比较各个属性值是否相等(其中包括比较父类值的属性) 因为如果一个子类继承了父类,那么这个子类拥有父类所有的成员属性和方法,即使是父类里有private属性的变量,子类也是继承的,只不过父类的私有属性和方法,子类是

DianLanHong的博客 878

使用LoRa远程控制路灯(PWM调光以及LoRaWAN单播、组播、广播)

PWM调光 1、使用有pwm波输出的引脚,本例子使用timer0,PA0引脚; 2、由于timer时钟的原因,mcu不能进入休眠; 3、主控使用EFM32,代码实现如下: #define MAX_PULSE (CPU_FREQ/1000-1) #define UNIT_PULSE MAX_PULSE/100 //单位脉宽 void pwminit(void) { ...

freemote的博客 2944

Java中的equals()和hashCode() - 超详细篇

前言 大家好啊,我是汤圆,今天给大家带来的是《Java中的equals()和hashCode() - 详细篇》,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论区回复或后台私信,谢啦 简介 说到equals和hashCode,首先要说下Object 我们都知道,这个Object是Java所有类的超类,其他类都是从Object直接或间接继承而来的 而Object中自带的equals和hashCode方法就是今天我们要谈论的话题 目录 什么是equals()方法 什么是ha.

汤圆学Java 1193

【Android Performance】Android CPU绑核实战:从taskset到cpuset的完整调优指南

本文系统讲解Android系统中的CPU绑核(CPU Affinity)技术,涵盖用户空间的taskset命令行绑核、内核cpuset分组机制的原理与操作、进程级与线程级绑核的代码实现、以及中断绑核的底层方法。文中深入拆解CPU亲和性掩码的计算规则、各cpuset分组的默认策略差异、绑核后的验证手段及常见踩坑场景,并配有多项实操命令与C代码示例。适合从事Android系统性能调优、进程调度优化的开发者阅读。

weixin_44081096的博客 1310

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part1项目介绍与环境准备

看到这篇文章的你,相信对知识图谱相关概念不在陌生。知识图谱相关内容在实际开发中包含两个部分:1.知识图谱构建,2.知识图谱使用。知识图谱构建过程中涉及内容、技术都比较多。知识图谱的应用也逐渐在我们的生活中随处可见,其中基于知识图谱的问答系统就是其中的一个应用。基于知识图谱的问答系统称做KGQA(knowledge graph question answer),也有人称其为KBQA(knowledge based question answ).基于知识图谱的问答系统通常是使用的是领域知识图谱。下面就结合Git

让算法融入生活,改变生活! 4714

equals方法详解

一、equale方法是什么? Object 类中的 equals 方法是用于检测一个对象是否等于另外一个对象。在Object类中实现的 equals 方法将确定两个对象是否具有相同的引用(内存地址)。如果两个对象具有相同的引用,那么他们一定是相等的,看看下面这段代码的运行: public static void main(String[] args) { Object o = new Object(); //分别将 o 赋值给变量o1,o2 Object o1 ...

qq_57887050的博客 3万+

【电子通识】TINA-TI怎么使用受控源向导创建受控源

TINA-TI怎么使用受控源向导创建受控源

一点硬件 357

equals()方法的重写

来自http://www.iteye.com/topic/269601的文章   一、为什么equals()方法要重写? 判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。 我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要...

我的Java生活 172

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

算法大师! 468

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 270

Java自定义类中重写equals方法

equals方法的要求: a.自反性:对于任何非空的x,x.equals(x)都应该返回true b.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也应该返回true c.传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true d.一致性:如果x和y的...

weixin_44195108的博客 2717

PCL 使用点云创建数字高程模型DEM【2025最新版】

使用点云创建数字高程模型DEM,并将结果保存为高程图像。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2294

Java面向对象进阶——(Object类、super、equals)

创建子类对象时需要先创建父类对象,默认在构造方法中第一行调用无参构造在子类中要想使用父类里面的成员,可以使用super成员来调用,和this的使用类似,但所表示的对象不同。

weixin_70890083的博客 195

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java哪些类重写equals方法_Java自定义类中重写equals方法

equals方法的要求:a.自反性:对于任何非空的x,x.equals(x)都应该返回trueb.对称性:对于任何引用x和y,当且仅当x.equals(y)返回true时,y.equals(x)也应该返回truec.传递性:对于任何引用x,y,z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回trued.一致性:如果x和y的引用没有...

weixin_35763513的博客 472

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

浅谈 ==和equals的区别,this和super的用法

 package 方法; /**  * ==和equals的区别  * this和super的用法  * @author Administrator  *  */ public class July25 {      ==和equals的区别 /* 在讲==和equals之前,我先讨论一下“=”的用法,“=”在java中是赋值号,eg:int a=1; 这里是吧数值为1的

shixiaoxin1992的博客 501

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

权限修饰符,equals,super,重写,多态的小结

权限修饰符主要是四种 private,default(不写就是默认),protected,public private只能修饰本类 deafult修饰本类和同包类 protected修饰本类,同包类,不同包子类 public修饰本类,同包类,不同包子类以及不同包的其他类 以上权限修饰符只能修饰成员(static),成员修饰符(成员变量|成员方法) private的内容不能被继承 只有public和...

kaiqiang2pm的博客 269

Java equals方法详解:类型检查与跨对象比较

在Java编程中,equals方法是对象比较的核心机制,涉及类型安全、对象相等性判断等重要概念。其实现原理基于严格的类型检查,通过instanceof运算符确保比较对象的类型一致性,这是Java强类型语言特性的体现。从技术价值看,正确的equals实现能保障哈希集合操作的正确性,影响HashMap、HashSet等核心容器的行为。典型应用场景包括集合元素查找、对象持久化比较等。当处理"1".equals(new Integer(1))这类问题时,需特别注意String与Integer的类型差异,理解自动装箱

weixin_30615767的博客 479

Java中equals方法重写的基本步骤

Java中equals方法的重写 Object类中的equals方法: public boolean equals(Object obj) { return (this == obj);//比较地址值 } Rewrite类中重写的Object类中的equals方法: package test2; public class Rewrite { private String name; public String getName() { retu

TEUTEU的博客 452

Java中对于所有对象都通用的方法之——equals

Object:所有类的超类Object类是Java中所有类的超类,在Java中每个类都是由它扩展来的。尽管Object是一个具体的类,但是设计它主要是为了扩展。它所有的非final方法(equals、hasCode、toString、clone和fanalize)都有明确的通用约定(general contract),因为它们被设计成是要被覆盖(Override)的.equalsObject类中的e

Shingle_的博客 2768

Overload和Override、super和this、==和equals()的区别

Overload和Override、super和this、==和equals()的区别Overload和Overrride的区别overload 是方法的重载,函数名一样,可以通过改参数的类型、参数的个数、以及参数的位置实现重载; 注意:不能通过改变返回类型来实现重载 override 是方法的重写,函数名一样,参数的类型、个数、以及参数的位置都必须一致才是重写;super和this的区别s

Magic_miao的博客 756

object类的基本特性 、 toString方法 、==和equals方法、super关键字

object类的基本特性: object 类是所有Java类的根基类,也就意味着所有的Java对象那个都拥有object类的属性和方法。如果在类的声明中没有使用extends关键字指明欺父类,则默认继承object。 public class Person { . . . } //等价于: public class Person extends Object { . . . } toString方法: object类中定义有public String toString()方法,其返回值是String类型。

Wynb1020的博客 377

Java基础|this和super、静态和动态绑定、equals与hashCode和toString有所不知道的细节

Java基础|this和super、静态和动态绑定、equals与hashCode和toString有所不知道的细节。

不甩锅的码农 1787

java完美equals方法

java完美equals方法 显示参数命名为otherObject,稍后需要将它转换成另一个叫other的变量。 检测this 与otherObject是否引用同一个对象: if(this==otherObject) return true; 检测otherObject 是否为null,如果为null,返回false. 这项检测是必要的。 if(otherObject==null) return false; 比较this与otherObject是否属于同一个类。如果equals的语义在

weixin_45756877的博客 167
上一篇: JVM之线程资源标记ResourceMark
下一篇: 马斯克组织了Code Review,并且晒出推特架构图
Java_ttcd
博客等级 码龄4年 198粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值