让天下没有难学的马国明技术

首页 > 打怪经验 来源: 0 0
正在起头之前先补习下 Java 自带的两个特征,Guava 中都有具体的利用。比来有些伴侣正在面试阿里,加上Java-Interview项手段缘由也有小伙伴和我会商,近期也正在担任部分的招牌,这让我想起岁首...

  正在起头之前先补习下 Java 自带的两个特征,Guava 中都有具体的利用。

  比来有些伴侣正在面试阿里,加上Java-Interview项手段缘由也有小伙伴和我会商,近期也正在担任部分的招牌,这让我想起岁首年月那段长达三个月的奇葩面试履历?。

  原本没想拿出来说的,究竟结果最初也没成。但因为那几个月的履历让我领会到了大厂的工做体例、对候选同窗的调查沉点和面试官的套等都有了全新的熟悉。

  (:强力保举这篇文章,做者设想了一个用于小流量的流式数据处置框架,并具体给出了每个需求留意的设想细节,对照了分歧设想方案的优错误谬误,可以或许让你对流处置进程,某些设想形式和设想准绳和目标怀抱东西有一个更深入的熟悉!)

  正在GeeCON 2016上我为我的公司筹办了一个编程竞赛,此次的使命是设想并完成一个可以或许满脚以下要求的系统:

  原文链接做者:Dimitris Andreou  :魏嘉鹏 校订:方起飞

  RateLimiter 从概念下去讲,速度器会正在可设置装备摆设的速度下分派答应证。若是需要的话,每一个acquire() 会堵塞当前列程曲到答应证可用后获得该答应证。番石榴 guava一旦获得到答应证,不需求再答应证。

  校订注:RateLimiter利用的是一种叫令牌桶的流控算法,RateLimiter会依照必然的频次往桶里扔令牌,马国明线程拿到令牌才干履行,好比你进展本人的利用法式QPS不要跨越1000,那末RateLimiter设置1000的速度后,就会每秒往桶里扔1000个令牌。

  Guava 是 Java 开辟者的好伴侣。虽然我正在开辟中利用 Guava 很长时间了,Guava API 的身影广泛我写的临盆代码的每一个角落,可是我用到的功用只是 Guava 的功用集合一个少的不幸的实子集,更别说我一曲没有时间认实的去挖掘 Guava 的功用,没有时间去进修 Guava 的完成。曲到比来,我起头阅读Getting Started with Google Guava,感受有需要将我进修和利用 Guava 的一些工具记实上去。

  因为类型擦除,你不成以或许正在运转时传送泛型类对象——你能够想强制转换它们,并这些对象是有泛型的,但现实上它们没有。

  Guava供给了TypeToken, 它利用了基于反射的技能以至让你正在运转时都可以或许巧妙的操做和查询泛型类型。设想一下TypeToken是建立,操做,查询泛型类型(和,现含的类)对象的方式。

  用分隔符把字符串序列毗连起来也能够会赶上没必要要的费事。若是字符串序列中含有null,那毗连操做会更难。Fluent气概的Joiner让毗连字符串更复杂。马国明

  :joiner实例老是不成变的。用来界说joiner目义的设置装备摆设方式总会前往一个新的joiner实例。这使得joiner实例都是线程平安的,你能够将其界说为static final常量。

  截至JDK7,Java中也只能经由过程拙笨冗杂的匿名类来到达近似函数式编程的后果。估计JDK8中会有所改动,但Guava现正在就想给JDK5以上用户供给这类支撑。

  过度利用Guava函数式编程会致使冗杂、紊乱、可读性差并且低效的代码。这是迄今为止最轻易(也是最经常)被的部门,若是你想经由过程函数式气概告竣一行代码,以致这行代码长到,Guava团队会泪如泉涌。马国明

  即利用了静态导入,以至把Function和Predicate的声明放到此外文件,第一种代码完成依然不简练,可读性差而且效率较低。

  正在从Guava查找原生类型方式之前,能够先查查Arrays类,或对应的根本类型包拆类,如Integer。

  原生类型不克不及当尴尬刁难象或泛型的类型参数利用,这意味着很多通用方式都不克不及利用于它们。Guava供给了若干通用东西,包罗原生类型数组取调集API的交互,原生类型和字节数组的彼此转换,和对某些原生类型的无符号方式的支撑。

  有时辰你需求完成本人的调集扩大。也许你想要正在元素被增加到列表时增添特定的行动,或你想完成一个Iterable,其底层现实上是遍历数据库查询的成果集。Guava为你,也为我们本人供给了若干东西方式,以便让雷同的工做变得更复杂。(究竟结果,我们本人也要用这些东西扩大调集框架。)

  针对一切类型的调集接口,Guava都供给了Forwarding笼统类以简化粉饰者形式的利用。

  经由过程建立ForwardingX的子类并完成delegate()方式,能够挑选性地笼盖子类的方式来增添粉饰功用,而不需求本人拜托每一个方式——注:由于所无方法都默许拜托给delegate()前往的对象,你能够只笼盖需求粉饰的方式。番石榴 guava

  Guava引入了良多JDK没有的、马国明但我们发觉较着有用的新调集类型。这些新类型是为了和JDK调集框架共存,马国明而没有往JDK调集笼统中硬塞其他概念。做为普通法则,Guava调集很是精准地遵守了JDK接口契约。

  这类写法很拙笨,也轻易犯错,而且不支撑同时搜集多种统计消息,如总词数。我们能够做的更好。

  任何对JDK调集框架有经历的法式员都熟习和喜好java.util.Collections包括的东西方式。Guava沿着这些线供给了更多的东西方式:合用于一切调集的静态方式。这是Guava最风行和幼稚的部门之一。

  建立对象的不成变拷贝是一项很好的防御性编程技能。Guava为一切JDK尺度调集类型和Guava新调集类型都供给了复杂易用的不成变版本。


声明:本文章来源于网络,如果存在出处、来源错误,或内容侵权、失实问题,请及时与我们联系。本文仅代表原媒体及作者观点,不代表www.leocn.com立场!