日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Google Guava:您永远不会知道的5件事

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google Guava:您永远不会知道的5件事 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每個開發人員都可以使用哪些鮮為人知的Google Guava功能?

它是那里最受歡迎的庫之一,它是開源的,您可能已經知道了,它來自人們玩Quidditch作為一項真正的運動的地方(至少在The Internship上 )。 它不是哈利·波特(Harry Potter)的霍格沃茨(Hogwarts)庫,但確實有很多不足之處:Google番石榴(Guava)包含一系列核心Java庫,這些庫在Google內部誕生,經過生產測試和公開發布。 并且它在Java 8上出現之前還具有Optional。

Guava的主要重點是使用實用程序來改善圍繞常見任務的工作流程,這些實用程序可幫助編寫更好,更簡潔的代碼并提高生產力。 它以集合和緩存功能而聞名,它包含許多有用但鮮為人知的功能。 對于集合和緩存,它引入了對JDKs集合API的改進,并填補了去年終于發布的缺失( 等待已久 )的JCache的空白。 在本文中,我想與您分享一些我們希望在Takipi上使用的Google Guava功能,以及我們剛剛發現的一些更有趣的發現。

注意:Guava支持Java 6及更高版本。

新文章:Google Guava:您永遠不會知道的5件事http://t.co/03maIKnZdC pic.twitter.com/hQuAF6PZ6C

— Takipi(@takipid) 2015年3月25日

1.未簽名的原語:它們存在!

Java 8鮮為人知的功能之一是Integer類中針對Unsigned Primitives的新解決方法。 Guava的一個鮮為人知的功能是,所有這些功能在Java 8發行之前就已經可用,并且可以在Java 6及更高版本中使用。 讓我們來看看番石榴中的處理方式。 我們面前有兩個選擇,并且要保持一致:

將原始類型直接作為int處理,并記住在我們的邏輯中它是Unsigned:

int notReallyInt = UnsignedInts.parseUnsignedInt(4294967295); // Max unsigned intString maxUnsigned = UnsignedInts.toString(notReallyInt); // We’re legit!

UnsignedInts和UnsignedLongs還支持比較,除法,最小值,最大值和更多方法。

一個包裝程序,避免直接處理基元并導致錯誤:

UnsignedInteger newType = UnsignedInteger.valueOf(maxUnsigned);newType = newType.plus(UnsignedInteger.valueOf("1")); // Increment

UnsignedInteger和UnsignedLong也支持減號,時間,dividedBy和mod等方法。

  • 在Guava Wiki上內容

2.哈希:贏取128bit MurmurHash

當查看標準Java庫提供的非加密哈希功能時,我們真正想念的一件事是MurmurHash 。 它簡單,快速,分布均勻,并在許多語言中具有強大的支持。 不替換Java的hashCode(),但是如果您需要生成很多哈希(當32位還不夠時)并且您需要以超快的速度完成而不影響性能的話,那就太好了。 這是番石榴的制作過程:

HashFunction hf = Hashing.murmur3_128(); // 32bit version available as well HashCode hc = hf.newHasher().putLong(id).putString(name, Charsets.UTF_8).putObject(person, personFunnel).hash();

使用漏斗完成對象的分解,其中包括有關如何讀取對象的說明,因此,如果我們有一個具有ID,姓名和出生年份的人員:

Funnel<Person> personFunnel = new Funnel<Person>() {@Overridepublic void funnel(Person person, PrimitiveSink into) {into.putInt(person.id).putString(person.firstName, Charsets.UTF_8).putString(person.lastName, Charsets.UTF_8).putInt(birthYear);} };
  • 在Guava Wiki上內容

3. InternetDomainName:將替換您的域名驗證器

Guava的另一個很酷的小實用工具是InternetDomainName,毫不奇怪,它可以幫助解析和操作域名。 如果您自己編寫過類似的實用程序,您將欣賞如何幫助您快速而優雅地解決它。 根據更新的RFC規范有效,并使用Mozilla基金會發起的“ 公共后綴列表 ”中的域列表 。 總體而言,它還具有比apache-commons驗證程序等效的方法。 讓我們看一個簡單的例子:

InternetDomainName owner =InternetDomainName.from("blog.takipi.com").topPrivateDomain(); // returns takipi.comInternetDomainName.isValid(“takipi.monsters"); // returns false

域名可能引起混淆的一些概念:

  • publicSuffix()–根據“公共后綴列表”為單獨實體的頂級域名。 因此,我們將得到co.uk,.com,.cool之類的結果(是的,這是一個真實的后綴,并且是javais.cool , scalais.cool和cppis.cool )。
  • topPrivateDomain()–根據公共后綴列表(PSL)是作為單獨實體的頂級域。 在blog.takipi.com上應用它會返回takipi.com,但是,如果您在Github頁面站點上嘗試它,則username.github.io將拒絕username.github.io,因為它是一個單獨的實體,出現在PSL上。
  • 當您需要驗證域時,此實用程序會派上用場,例如最近在Takipi中添加的JIRA集成中,在將其連接到Takipi的生產錯誤分析工具之前,我們首先檢查了JIRA主機。

    • 在Guava Wiki上內容

    4. ClassPath反射:在墻上鏡像一面鏡子

    在檢查Java的Reflection功能(即檢查我們自己的代碼的能力)時,您會發現沒有簡單的方法來獲取包或項目中所有類的列表。 這是我們真正喜歡的Guava功能之一,因為它有助于獲取有關您所運行的環境的更多信息。 它的工作原理很簡單:

    ClassPath classpath = ClassPath.from(classloader); for (ClassPath.ClassInfo classInfo : classpath.getTopLevelClasses("com.mycomp.mypackage")) {System.out.println(classInfo.getName()); }

    該代碼段將循環遍歷并打印出我們指定的包中的所有類名。 這里值得一提的是,掃描僅包括我們提到的程序包中的物理類。 它不會包括從其他地方加載的類,因此請謹慎使用它,因為它有時會給您不完整的印象。

    • 在Guava Wiki上內容

    5. CharMatcher:簡化的正則表達式?

    讓我們以另一個問題結束此功能綜述,我相信您會認識到。 您有一個或多個字符串,需要以某種格式設置,刪除空格或其他字符,替換特定字符,指定數字或其他。 通常,抓住與某種模式匹配的字符并對其進行處理。 番石榴在這里提供了CharMatcher方法來優雅地處理此類問題。

    對于此任務,我們有一些預定義的模式,例如JAVA_UPPER_CASE(大寫字符),JAVA_DIGIT(數字),INVISIBLE(不可見的Unicode字符)等等。 除了預定義的模式,我們可以自己嘗試一下并創建自己的模式。 讓我們看一下如何使用快速代碼示例:
    字符串間隔= CharMatcher.WHITESPACE.trimAndCollapseFrom(string,'');

    這將從字符串末尾修剪所有空白,并將所有后續空白合并為一個。

    String keepAlex = CharMatcher.anyOf(“alex”).retainFrom(someOtherString);

    該行將使用一個字符串,并刪除所有未出現在我名字中的字符。 如果我會成為說唱歌手,那就是我所有歌曲的開始方式

    • 在Guava Wiki上內容

    結論

    我們已經看到了Google Guava的一些最有趣的功能,但不包括流行的集合和緩存庫。 其中一些在塔基皮(Takipi)中大量使用,而其他則是有用的東西,我們認為許多項目可以從中受益。 Google Guava幫助開發人員提高了工作效率,而這正是Takipi旨在通過我們正在開發的工具實現的目標(順便說一句,這很酷,但是,我可能有偏見: 您可以自己嘗試一下 )。

    我們很想知道,大多數開發人員不使用您使用的其他Guava功能嗎? (收集和緩存不計算在內!)。 請在下面的評論部分中分享您的想法。

    翻譯自: https://www.javacodegeeks.com/2015/03/google-guava-5-things-you-never-knew-it-could-do.html

    總結

    以上是生活随笔為你收集整理的Google Guava:您永远不会知道的5件事的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 老司机午夜av | 欧美亚洲综合在线 | 亚洲高清网 | 国产又黄又大又爽 | 刘玥91精选国产在线观看 | 我和我的太阳泰剧在线观看泰剧 | 九九热九九 | 综合视频一区 | 性欧美videossex精品 | 国产1区2区在线观看 | 一级黄色大片 | 精品人妻一区二区三区麻豆91 | 狠狠爱视频 | 91福利视频网| 爆操白虎逼| 国产成人高清在线 | 黄色图片小说 | 成人性生活免费看 | 精品久久久久久久久久久久久久久 | 手机av网| 一区二区三区四区不卡 | 久久禁 | 欧美一区二区三区婷婷月色 | 国产又色又爽又黄的 | av日韩国产 | av小片| 女性高潮视频 | 成人午夜高清 | 天天做夜夜爱 | 手机看片欧美 | 国内自拍真实伦在线观看 | 操天天 | 国产ts三人妖大战直男 | 精品日韩制服无码久久久久久 | 婷婷激情小说网 | 日韩色在线观看 | 一区二区三区国产精品视频 | 裸体毛片 | 天堂伊人网 | 中国老熟妇自拍hd发布 | 91精品综合久久久久久五月天 | 欧美三级一区二区三区 | 国产资源免费 | 国产激情四射 | 欧美激情性生活 | 日本三级在线视频 | 精品日韩制服无码久久久久久 | 日韩黄色一级大片 | 亚洲成在人 | 悠悠色在线 | 亚洲综合欧美日韩 | 91久久综合精品国产丝袜蜜芽 | 国产av人人夜夜澡人人爽 | 大陆av在线| 欧美激情专区 | 黄色片在线播放 | 中文在线天堂网 | 神马午夜视频 | 久久国产精 | 色黄视频在线观看 | 亚洲特黄视频 | 亚洲精品66 | 国产精品调教 | 永久免费在线视频 | 日韩精品一区二区三区国语自制 | 日韩精品在线观看一区二区 | 色偷偷噜噜噜亚洲男人 | 天天视频入口 | 在线免费中文字幕 | 国产91免费观看 | 露脸啪啪清纯大学生美女 | 欧美hdxxxx| 亚洲一区二区三区久久 | 国产精品无码av无码 | 久久精品欧美日韩精品 | 久久精品黄色片 | 精品人人妻人人澡人人爽牛牛 | 精品嫩模一区二区三区 | 精品九九九九 | 97中文字幕| 天天色综合图片 | 国产男女av| 天天爽夜夜爽夜夜爽精品 | 黑人操欧美人 | 久久亚洲色图 | 亚洲黄色网页 | 粗大的内捧猛烈进出在线视频 | 日韩免费成人av | 北京富婆泄欲对白 | 中日韩在线观看视频 | 成人一区二区视频 | 欧美色影院| 亚洲一区二区动漫 | 午夜国产一区二区三区 | 穿扒开跪着折磨屁股视频 | 久草五月天 | 欧美巨鞭大战丰满少妇 | 欧州一区 | 男朋友是消防员第一季 |