首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 注解

本文参照学习: 感谢大佬~ 个人源码地址:https://gitee.com/WSM540 注解 前言: 框架等于:注解 + 反射 + 设计模式~ JDK 5.0 开始, Java 增加了对元数据支持...Annotation 可以像修饰符一样被使用: 用于修饰包,类, 构造器, 方 法, 成员变量, 参数, 局部变量声明 为什么要引用注解: 使用【注解】之前: xml 被广泛应用于描述元数据,...JDK向下兼容,不然每次更新一些老项目如果不符合就会出错,就不好了~ 场景: 如果你项目中有一个,你写方法,突然一个大佬也写了一个更好,你又不想删除曾经方法 都是手敲多少有点舍不得 可以使用该...;i++){ //输出注解集合值!...;i++){ //输出注解集合值!

6410

ArrayList源码解析

第二种方式编码规范要求我们这么写,传入一个初始化容量。这么做目的主要是防止集合中添加数据,由于集合扩容导致性能下降问题。...当我集合中添加元素时候,集合首先会判断当前数组容量能否容纳得下所需添加元素,如果容纳不下,就会触发自动扩容机制。...而size只集合中存入元素个数。 什么意思呢,比如我capacity10,就代表集合中数组长度10个,然后集合中add一个元素,那么size就是1。...从jdk8开始,集合不是你new完了就把空间创建出来,从代码也可以看出来,我们new完集合(0参和无参),实际上就给了一个数组,只有当我集合中添加元素时候,才会根据长度初始化数组长度。...也就是当我集合中添加元素时候,如果元素个数小于10,那么这个结果就是10, 如果元素个数大于10了,就取当前最大值。

28710
您找到你想要的搜索结果了吗?
是的
没有找到

为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须 2^n?

大家好,一航! 昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMaphash值计算格式这样:(h = key.hashCode()) ^ (h >>> 16)?...为什么槽位数(数组长度)必须2^n? HashMap能不能用对象(null)作为key?...,这样就会导致,keyhash值低位相同,高位不同的话,计算出来槽位下标都是同一个,大大增加了碰撞几率; 但如果使用h ^ (h >>> 16),将高位参与到低位运算,整个随机性就大大增加了;...问题二:为什么槽位数(数组长度)必须2^n?...: (h = key.hashCode()) ^ (h >>> ); } 当(key == null)得到hash值为0,带入到槽位计算公式(n - 1) & hash,对象是保存槽位:0;

97010

Python 元组和集合

# Python 元组和集合 # 什么元组 元组 Python内置数据结构之一,一个不可变序列 不可变序列与可变序列 不可变序列:字符串、元组 不变可变序列:没有增、删、改操作 可变序列...# 为什么要将元组设计成不可变序列 为什么要将元组设置成不可变序列 在多任务环境下,同时操作对象不需要加锁 因此,在程序中尽量使用不可变序列 注意事项:元组中存储对象引用 如果元组中对象本身不可变对象...'''由于[20,30]列表,而类表可变序列,所以可以列表中添加元素,而列表内存地址不变''' t[1].append(100) #类表中添加元素 print(t,id(t[1]))...集合元素新增操作 调用**add()**方法,一次中一个元素 调用update()方法至少添加一个元素 集合元素删除操作 调用**remove()**方法,一次删除一个指定元素,如果指定元素不存在抛出...=**进行判断 一个集合是否另一个集合子集 可以调用方法issubset进行判断 BA子集 两个集合是否没有交集 可以调用方法isdisjoint进行判断 """ @Author :frx

48920

从源码角度解读Java Set接口底层实现原理

咦咦咦,各位小可爱,你们好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了就有动力讲得更嗨啦!...当我HashSet中添加元素,首先会对元素进行哈希,并通过哈希值来确定元素在数组中位置。...每个节点都有一个额外颜色属性,只能红色或黑色。红黑树基本操作包括插入、删除和查找。当我TreeSet中添加元素,它会根据元素大小来将元素添加到树中合适位置。...类代码方法介绍HashSetadd(E e):集合中添加元素;clear():清空集合中所有元素;contains(Object o):判断集合中是否存在指定元素;isEmpty():判断集合是否为...这段代码演示了如何使用Java中Set接口和HashSet类。具体来说,代码实现了:1.创建一个HashSet对象。2.集合中添加元素。3.打印出集合元素个数。4.判断集合是否为

25312

2017年5月iOS招人心得(附面试题)

如果集合内容复制的话,集合里面的元素也是内容复制么? 为什么IBOutlet修饰UIView也适用weak关键字? nonatomic和atomic区别?atomic绝对线程安全么?...Runtime objc在一个对象发送消息,发生了什么? 什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步? 能否编译后得到类中增加实例变量?...内部如何实现?它为什么会覆盖掉原来方法? 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么? objc中一个nil对象发送消息将会发生什么?...知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar) 项目 有已经上线项目么? 项目里哪个部分你完成?(找一个亮点问一下如何实现) 开发过程中遇到过什么困难,如何解决?...不过其中一位面试通过者有github账号,并且有几个小项目,印象非常好,加了不少分。

55940

为什么总学不好TS?

上述历程反复经历了两次。痛定思痛,决定系统学一遍TS。 经过这次系统学习,终于明白「为什么总学不好TS」。希望这篇文章对和我有同样经历同学有帮助。...当我们只把TS看作JS超集,会忽略「TS本身就是一门语言」这一事实。...B; // 1 | 2 TS语法规则被称为「结构化类型系统」,与JS类比如下: 在TS中,「类型」与「结构化类型系统」关系可以用我们中学学到集合概念来类比,其中: 「类型」一类值集合...,比如number数字字面量集合,interface A满足接口A规范对象集合 「结构化类型系统」集合之间「兼容性判断」规则,比如怎么判断交集、怎么判断并集、怎么判断差集?...所以,当我们想深入使用TS,必然会触碰TS语言本身规则,此时我们需要从TS出发学习。 只有这样,才能真的学懂、用好TS。

24010

Objective—C语言新魅力——Nullability、泛型集合与类型延拓

在OC中,以前没有这样功能,因此我们在开发中会经常遇到因为某个函数应该返回实例而返回了导致崩溃。...如果仅仅是在返回值中给开发者一些提示,你可能觉得应用并不大,是的,对开发者最大帮助这一特性可以用于函数参数中,这样我们在调用函数起到提示作用,将是非常重要,越是多人合作项目,作用也越大。...例如: -(void)setValue:(NSNumber * _Nonnull )number{      } 我们在调用函数,如果传入了值,编译器会给我们警告: ?...三、泛型集合支持         这一特性和Nullability一样,只作用于编译期,为我们开发者服务另一重要特性。...所以,当我看到Xcode7中集合类型着实兴奋了一下。

99830

苏炳博士论文研究自己,奥运学术两兼顾,还是暨大副教授,网友:真正Run数据

萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI “为什么能跑这么快?” 这可不是调侃,而是“亚洲飞人”苏炳正经博士论文!...在备战东京奥运会同时,苏炳写下了这篇论文,详细介绍了自己这些年“备赛经验”。 “如何越跑越好” 整体论文一篇综述,简要概括了我国男子100m短跑发展历程、进步原因、展望和启示。...其中,10.16秒(2011年)、9.99秒(2015年)和9.91秒(2018年)最好成绩都是苏炳跑出来。...事实证明,这样科学化训练确实取得了非常不错效果,在训练前后,苏炳身体素质、技术能力得到了极大提升: 当然,在苏炳看来,这也只是取得成功原因之一,此外良性团队竞争、用接力项目促进单项训练、参考国外技术和多参加国际比赛...而这些纪录保持者,除了Justin Gatlin在打破纪录33岁以外,其他人均为30岁以下。 苏炳可以说是以一人之力,冲破了原本被其他各大洲“占领”短跑田径项目纪录。

39810

高级Java都这样优雅处理

有时候,更可怕系统因为这些情况,会抛出指针异常,导致业务系统发生问题。 此篇文章,总结了几种关于处理手法,希望对读者有帮助。...空集合返回值 :如果有集合这样返回值,除非真的有说服自己理由,否则,一定要返回空集合,而不是 null Optional: 如果你代码 jdk8,就引入它!...如果不是,则使用 Guava Optional, 或者升级 jdk 版本!它很大程度能增加了接口可读性! jsr 303: 如果新项目正在开发,不防加上这个试试!一定有一种特别爽感觉!...jsr 305: 如果老项目在你手上,你可以尝试加上这种文档型注解,有助于你后期重构,或者新功能增加了,对于老接口理解!...当我们看到这个方法时候,会觉得有一些歧义: “如果 username absent, 返回空集合吗?还是返回全部用户数据集合?”

1.6K30

如何优雅地根治null值引起Bug!

尤其对接口抽象,它在设计和开发中占很大比重,我们在开发希望尽量面向接口编程。...空集合返回值 :如果有集合这样返回值,除非真的有说服自己理由,否则,一定要返回空集合,而不是null Optional: 如果你代码jdk8,就引入它!...如果不是,则使用GuavaOptional,或者升级jdk版本!它很大程度能增加了接口可读性! jsr 303: 如果新项目正在开发,不防加上这个试试!一定有一种特别爽感觉!...jsr 305: 如果老项目在你手上,你可以尝试加上这种文档型注解,有助于你后期重构,或者新功能增加了,对于老接口理解!...当我们看到这个方法时候,会觉得有一些歧义: “如果usernameabsent,返回空集合吗?还是返回全部用户数据集合?”

85910

Java集合--阻塞队列(引言)

5.7 Queue并发集合 之前,我们介绍了Queue队列。对于队列相关知识,你应该有了一个大概了解! 在本篇中,我们会继续深入学习,来了解下线程安全队列集合!...其中,阻塞队列典型实现类BlockingQueue(接口)--ArrayBlockingQueue实现类,而非阻塞队列典型实现类就是ConcurrentLinkedQuue。...阻塞,顾名思义:当我生产者队列中生产数据,若队列已满,那么生产线程会暂停下来,直到队列中有可以存放数据地方,才会继续工作;而当我消费者队列中获取数据,若队列为,则消费者线程会暂停下来...直白来说:队列满,生产线程停止生产;队列,消费线程停止活动。 阻塞队列怎么进行阻塞操作 对于队列(集合)来说,最常用操作,无疑只有两类,一种添加操作,一种移除操作!...remove():队列,抛出异常; poll():队列,返回null; take():队列,线程一直阻塞; poll(time,unit):队列,线程被阻塞一段时间,超时则直接返回

993120

JavaScript 编程精解 中文第三版 七、项目:机器人

节点(村里地点)与他们之间边(道路)集合。 这张图将成为我们机器人在其中移动世界。 字符串数组并不易于处理。 我们感兴趣,我们可以从特定地点到达目的地。...机器人的当前位置和未送达包裹集合其中每个都拥有当前位置和目标地址。这样就够了。 当我们到达新地点,让我们这样做,在机器人移动不会改变这种状态,而是在移动之后为当前情况计算一个新状态。...为什么不想改变对象?...因为它帮助我理解程序。 这又是关于复杂性管理。 当我系统中对象是固定,稳定东西可以孤立地考虑操作它们 - 从给定起始状态移动到爱丽丝房子,始终会产生相同新状态。...如果其中之一目标,则可以返回完成路线。 否则,如果我们以前没有看过这个地方,就会在列表中添加一个新项目

84460

Kotlin Maps:五个基本函数

此外,Kotlin 添加了一些额外功能,使maps使用起来更加方便。 在这篇文章中,谈论maps基础知识。您展示处理maps最常用函数。...Kotlin 中maps用途 在使用maps之前了解什么maps。本质上,映射键值对集合。关键标识符。您可以使用它来查找集合特定元素。该值您要存储数据,它与一个键相关联。...减少对象可变性最佳实践。例如,开创性《Effective Java》 一书就推荐了它。这是为什么?不可变对象更容易推理。他们不太容易出现意外错误。您应该尽可能多地使用不可变对象。...安全。这就是为什么返回类型被清楚地标记为可类型原因。它强制您处理该值可能为事实以防止运行时异常。 安全强制您处理值可能为事实以防止运行时异常。...一些示例方便方法,例如forEach、map或filter。 maps核心抽象 关于maps还有很多要说。请务必查看 API 参考,因为这里有比我您展示方法更多方法。

2.4K10

Java集合--线程安全(CopyOnWrite机制)

(当然,这个集合必须共享了,所以才会有数据不一致) 所以,当我们在进行并发任务时候,共享了一个不适用于并发数据结构,也就是将此数据结构变成了程序中成员变量,那么我们将会遇到数据不一致,进而影响到我们程序运行...(3)此外,我们还可以使用集合工具类--Collections,通过调用其中静态方法,来得到线程安全集合。...阻塞式集合:当集合已满或为,被调用添加(满)、移除()方法就不能立即被执行,调用这个方法线程将被阻塞,一直等到该方法可以被成功执行。...非阻塞式集合:当集合已满或为,被调用添加(满)、移除()方法就不能立即被执行,调用这个方法线程不会被阻塞,而是直接则返回null或抛出异常。...这样就实现了,添加方法无论如何操作数组对象,获取方法在获取到集合后,都不会受到其他线程添加元素影响。 这也就是在执行add()为什么还要在加锁同时又copy了一分新数组对象!!!

75740

不服不行啊!大牛确实把SpringCloud集成Dubbo给一次性讲透了

然而,现在很多人也拿Dubbo与Spring Cloud做比较,其实Dubbo本质上一个RPC框架,实现了SOA架构下微服务治理,而SpringCloud下有众多子项目,分别覆盖了微服务开发各个方面...,启动类添加@Enable-DubboConfiguration注解,这里我们配置这些参数会在项目启动被加载到DubboProperties类中。...在DubboAutoConfiguration配置类中启动Bean,当配置文件中前缀以“dubbo”开始,会注入相关配置并完成初始化,然后获取所有加了@Service注解类,使用反射生成代理类。...当我们使用HTTP请求这些由@Service注解方法,它会将HTTP请求转换成Dubbo请求,调用这个代理类将调用结果返回。...本文就是愿天堂没有BUG给大家分享内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,等你哦。

76220

谈一谈Android内存

而有些人心有余而力不足,“也想优化,可是怎么去优化呢?”。本篇文章将给你带来一点启示,让你从力不从心到知道怎么去入手优化。 01 一、为什么需要做内存优化?...如果在不同系统平台上都要分别去使用所在平台编译器编译生成它们对应机器码去执行(参考下图)。这就给应用移植带来很大困难。 聪明的人类总是能想到好办法,虚拟机概念从而降。...每当我一个应用程序启动,zygote进程就会folk一个进程作为应用程序进程,并且与zygote进程共享分配内存堆。...c.静态集合要置 集合会引用存储对象,静态集合生命周期与应用一样,导致存储对象内存无法释放,所以在不用时候一定要将集合。...这个是非常棒工具,简单明了,笔者从15年项目到现在项目都有在用。

62220

Java:如何更优雅处理值?

有时候,更可怕系统因为这些情况,会抛出指针异常,导致业务系统发生问题。 此篇文章,总结了几种关于处理手法,希望对读者有帮助。...空集合返回值 :如果有集合这样返回值,除非真的有说服自己理由,否则,一定要返回空集合,而不是null Optional: 如果你代码jdk8,就引入它!...如果不是,则使用GuavaOptional,或者升级jdk版本!它很大程度能增加了接口可读性! jsr 303: 如果新项目正在开发,不防加上这个试试!一定有一种特别爽感觉!...jsr 305: 如果老项目在你手上,你可以尝试加上这种文档型注解,有助于你后期重构,或者新功能增加了,对于老接口理解!...当我们看到这个方法时候,会觉得有一些歧义: “如果usernameabsent,返回空集合吗?还是返回全部用户数据集合?”

4.9K61

使用Optioanl优雅处理

集合返回值 : 如果有集合这样返回值,除非真的有说服自己理由,否则,一定要返回空集合,而不是null Optional: 如果你代码jdk8,就引入它!...如果不是,则使用GuavaOptional,或者升级jdk版本! 它很大程度能增加了接口可读性! jsr 303: 如果新项目正在开发,不防加上这个试试! 一定有一种特别爽感觉!...jsr 305: 如果老项目在你手上,你可以尝试加上这种文档型注解,有助于你后期重构,或者新功能增加了,对于老接口理解!...查询所有数据集合,如果username,也要返回所有的用户集合....当我们看到这个方法时候,会觉得有一些歧义: “如果usernameabsent(缺省),返回空集合吗?还是返回全部用户数据集合?”

1.8K20
领券