整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          教你用九種語言在JVM上輸出HelloWorld

          教你用九種語言在JVM上輸出HelloWorld

          了讓Java語言具有良好的跨平臺(tái)能力,Java獨(dú)具匠心的提供了一種可以在所有平臺(tái)上都能使用的一種中間代碼——字節(jié)碼(ByteCode)。

          有了字節(jié)碼,無論是哪種平臺(tái)(如Windows、Linux等),只要安裝了虛擬機(jī),都可以直接運(yùn)行字節(jié)碼。

          同樣,有了字節(jié)碼,也解除了Java虛擬機(jī)和Java語言之間的耦合。這話可能很多人不理解,Java虛擬機(jī)不就是運(yùn)行Java語言的么?這種解耦指的是什么?

          其實(shí),目前Java虛擬機(jī)已經(jīng)可以支持很多除Java語言以外的語言了,如Kotlin、Groovy、JRuby、Jython、Scala等。

          之所以可以支持,就是因?yàn)檫@些語言也可以被編譯成字節(jié)碼。而虛擬機(jī)并不關(guān)心字節(jié)碼是有哪種語言編譯而來的。

          經(jīng)常使用IDE的開發(fā)者可能會(huì)發(fā)現(xiàn),當(dāng)我們?cè)贗ntelij IDEA中,鼠標(biāo)右鍵想要?jiǎng)?chuàng)建Java類的時(shí)候,IDE還會(huì)提示創(chuàng)建其他類型的文件,這就是IDE默認(rèn)支持的一些可以運(yùn)行在JVM上面的語言,沒有提示的,可以通過插件來支持。



          目前,可以直接在JVM上運(yùn)行的語言有很多,今天介紹其中比較重要的九種。每種語言通過一段『HelloWorld』代碼進(jìn)行演示,看看不同語言的語法有何不同。

          Kotlin

          Kotlin是一種在Java虛擬機(jī)上運(yùn)行的靜態(tài)類型編程語言,它也可以被編譯成為JavaScript源代碼。Kotlin的設(shè)計(jì)初衷就是用來生產(chǎn)高性能要求的程序的,所以運(yùn)行起來和Java也是不相上下。Kotlin可以從 JetBrains InteilliJ Idea IDE這個(gè)開發(fā)工具以插件形式使用。

          Hello World In Kotlin

          fun main(args: Array<String>) {
           println("Hello, world!")
          }
          

          Groovy

          Apache的Groovy是Java平臺(tái)上設(shè)計(jì)的面向?qū)ο缶幊陶Z言。它的語法風(fēng)格與Java很像,Java程序員能夠很快的熟練使用 Groovy,實(shí)際上,Groovy編譯器是可以接受完全純粹的Java語法格式的。

          使用Groovy的一個(gè)重要特點(diǎn)就是使用類型推斷,即能夠讓編譯器能夠在程序員沒有明確說明的時(shí)候推斷出變量的類型。Groovy可以使用其他Java語言編寫的庫。Groovy的語法與Java非常相似,大多數(shù)Java代碼也匹配Groovy的語法規(guī)則,盡管可能語義不同。

          Hello World In Groovy

          static void main(String[] args) {
           println('Hello, world!');
          }
          

          Scala

          Scala是一門多范式的編程語言,設(shè)計(jì)初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。

          Scala經(jīng)常被我們描述為多模式的編程語言,因?yàn)樗旌狭藖碜院芏嗑幊陶Z言的元素的特征。但無論如何它本質(zhì)上還是一個(gè)純粹的面向?qū)ο笳Z言。它相比傳統(tǒng)編 程語言最大的優(yōu)勢(shì)就是提供了很好并行編程基礎(chǔ)框架措施了。Scala代碼能很好的被優(yōu)化成字節(jié)碼,運(yùn)行起來和原生Java一樣快。

          Hello World In Scala

          object HelloWorld { 
           def main(args: Array[String]) { 
           System.out.println("Hello, world!"); 
           } 
          } 
          

          Jruby

          JRuby是用來橋接Java與Ruby的,它是使用比Groovy更加簡(jiǎn)短的語法來編寫代碼,能夠讓每行代碼執(zhí)行更多的任務(wù)。就和Ruby一樣,JRuby不僅僅只提供了高級(jí)的語法格式。它同樣提供了純粹的面向?qū)ο蟮膶?shí)現(xiàn),閉包等等,而且JRuby跟Ruby自身相比多了很多基于Java類庫 可以調(diào)用,雖然Ruby也有很多類庫,但是在數(shù)量以及廣泛性上是無法跟Java標(biāo)準(zhǔn)類庫相比的。

          Hello World In Jruby

          "puts 'Hello, world!'"
          

          Jython

          Jython,是一個(gè)用Java語言寫的Python解釋器。Jython能夠用Python語言來高效生成動(dòng)態(tài)編譯的Java字節(jié)碼。

          Hello World In Jython

          print "Hello, world!"
          

          Fantom

          Fantom是一種通用的面向?qū)ο缶幊陶Z言,由Brian和Andy Frank創(chuàng)建,運(yùn)行在Java Runtime Environment,JavaScript和.NET Common Language Runtime上。其主要設(shè)計(jì)目標(biāo)是提供標(biāo)準(zhǔn)庫API,以抽象出代碼是否最終將在JRE或CLR上運(yùn)行的問題。

          Fantom是與Groovy以及JRuby差不多的一樣面向?qū)?象的編程語言,但是悲劇的是Fantom無法使用Java類庫,而是使用它自己擴(kuò)展的類庫。

          Hello World In Fantom

          class Hello{
           static Void main() { 
           echo("Hello, world!") 
           }
          }
          

          Clojure

          Clojure是Lisp編程語言在Java平臺(tái)上的現(xiàn)代、函數(shù)式及動(dòng)態(tài)方言。 與其他Lisp一樣,Clojure視代碼為數(shù)據(jù)且擁有一套Lisp宏系統(tǒng)。

          雖然Clojure也能被直接編譯成Java字節(jié)碼,但是無法使用動(dòng)態(tài)語言特性以及直 接調(diào)用Java類庫。與其他的JVM腳本語言不一樣,Clojure并不算是面向?qū)ο蟮摹?/p>

          Hello World In Clojure

          (defn -main [& args]
           (println "Hello, World!"))
          

          Rhino

          Rhino是一個(gè)完全以Java編寫的JavaScript引擎,目前由Mozilla基金會(huì)所管理。

          Rhino的特點(diǎn)是為JavaScript加了個(gè)殼,然后嵌入到Java中,這樣能夠讓Java程序員直接使用。其中Rhino的JavaAdapters能夠讓JavaScript通過調(diào)用Java的類來實(shí)現(xiàn)特定的功能。

          Hello World In Rhino

           print('Hello, world!')
          

          Ceylon

          Ceylon是一種面向?qū)ο螅瑥?qiáng)烈靜態(tài)類型的編程語言,強(qiáng)調(diào)不變性,由Red Hat創(chuàng)建。 Ceylon程序在Java虛擬機(jī)上運(yùn)行,可以編譯為JavaScript。 語言設(shè)計(jì)側(cè)重于源代碼可讀性,可預(yù)測(cè)性,可擴(kuò)展性,模塊性和元編程性。

          Hello World In Ceylon

          近全漢推出了一款功率更大的10000mAh PD移動(dòng)電源,輸入40W輸出30W相比之前的款式提升巨大,此前已經(jīng)對(duì)這款產(chǎn)品進(jìn)行了詳細(xì)的評(píng)測(cè),性能是毋庸置疑的。那廢話就不多說,今天就為大家?guī)磉@款對(duì)性能、外觀做了最好均衡的移動(dòng)電源的拆解。

          一、全漢Q1012PD移動(dòng)電源外觀

          這款產(chǎn)品使用塑料殼體+鋁背蓋組成,在塑料殼體表面帶有斜紋狀網(wǎng)格紋路,兼顧散熱與手感。

          側(cè)面設(shè)置了4顆白色電量指示燈與一顆綠色快充指示燈,當(dāng)移動(dòng)電源正處于快充模式(輸入輸出皆可)會(huì)亮起快充指示燈,旁邊是電量檢查/開機(jī)激活按鈕。

          另一側(cè)是MicroUSB輸入接口,多了一個(gè)輸入接口使用起來更加通用方便。

          正面輸出接口部分,從左到右分別是5V常規(guī)輸出口、USB-C雙向接口、USB-A快充輸出口。

          反過來可以看到鋁材質(zhì)金屬背蓋,PCB高熱器件熱量通過導(dǎo)熱膠傳遞到殼體上帶來良好的導(dǎo)熱散熱。

          背蓋銘牌信息如下,型號(hào):Q1012PD、輸入:USB-C 5-20V MAX40W、MicroUSB 5-12V MAX18W。輸出:USB-A 5V/2.4A;USB-C 5-20V MAX30W;USB-A 5V/2.4A、9V/2A、12V/1.5A MAX18W。電池容量:10000mAh;額定能量:30.0Wh、制造商:深圳市鑫全漢科技有限公司。這款移動(dòng)電源目前已經(jīng)通過了FCC、CE、RoHS等認(rèn)證。

          使用POWER-Z KM001對(duì)USB-A快充口進(jìn)行協(xié)議輪詢,從屏幕可以看到支持BC1.2、DCP、Apple2.4、QC2.0、AFC、FCP、QC3.0等協(xié)議。

          使用ChargerLAB POWER-Z KM001C查看USB-C PDO報(bào)文,全漢Q1012PD返回5個(gè)PDO,分別是5V2A、9V3A、12V2.5A、15V2.0A、20V1.5A,可以滿足市面上大部分設(shè)備功率需求。

          在電腦上使用ChargerLAB POWER-Z軟件探測(cè)PDO信息,與USB表報(bào)文結(jié)果一致。

          ChargerLAB POWER-Z進(jìn)行30W帶載測(cè)試,紋波峰峰值0.0512V。

          二、全漢Q1012PD移動(dòng)電源拆解

          全漢Q1012PD使用內(nèi)外卡子合蓋,裝配較為牢固,一體性較高,鋁背蓋上粘附了一大塊導(dǎo)熱硅膠用來把PCB上的高熱傳遞到殼體上降溫。

          LED窗帶有導(dǎo)光模塊與遮光海綿。

          全漢Q1012PD使用了兩片電芯串聯(lián)成電池組,是市面上唯一一款10000mAh小體積的大功率PD移動(dòng)電源,測(cè)溫探頭直接埋在兩片電芯中間,電池保護(hù)板與電芯PACK處理。

          過孔焊接的MicroUSB母座。

          USB-A母座細(xì)節(jié)。

          電源激活按鍵以及4顆白色LED燈、一顆綠色LED燈。

          USB-C母座細(xì)節(jié)。

          PCB板插腳件俯視圖。

          絲印NY7WC,SY8105 同步降壓轉(zhuǎn)換器。

          SOUTHCHIP南芯SC8812A,支持 I2C 接口,是一顆高效率的同步雙向升降壓芯片。

          SOUTHCHIP南芯SC8812A可完成充電、放電控制;支持各種電力轉(zhuǎn)換;采用I2C接口,簡(jiǎn)化的外部器件;內(nèi)部集成快速充電協(xié)議等。

          來自CHIPSEA芯海科技的CSU38M20。這是一顆高性能的8位單片機(jī)MCU,內(nèi)置8K×16位程序存儲(chǔ)器MTP、1K字節(jié)數(shù)據(jù)存儲(chǔ)器(SRAM)、256字節(jié)的E2PROM、只有43條單字指令、8級(jí)PUSH和POP存儲(chǔ)堆棧。

          CHIPSEA芯海科技CSU38M20詳細(xì)規(guī)格介紹。

          CHIPSEA芯海科技的USB Type-C控制器CSS34P16 ,符合最新 USB Type-C型和 PD標(biāo)準(zhǔn),同時(shí)內(nèi)部還集成其他多種快充協(xié)議標(biāo)準(zhǔn)。可為適配器、車載充電器、移動(dòng)電源等應(yīng)用提供完整的USB Type-C和 USB供電端口控制解決方案。芯片可根據(jù)用戶需求靈活配置,操作簡(jiǎn)便, 可快速實(shí)現(xiàn)方案功能。

          CHIPSEA芯海科技CSS34P16詳細(xì)規(guī)格介紹。

          USB-C口輸出VBUS開關(guān),絲印42P03 7601。

          4R7貼片電感。

          來自CHONG-X的電解電容,規(guī)格25V 220μF。

          電感線圈,布滿膠水,便于散熱。

          兩顆絲印DS3805的雙MOS管為輸出切換。

          四顆30N60 MOS管,用于同步升降壓。

          絲印3002F為USB-A普通輸出接口識(shí)別芯片。

          絲印FT0XFK為USB-A快充輸出接口識(shí)別芯片。

          充電頭網(wǎng)拆解總結(jié)

          目前支持USB PD快充的10000mAh移動(dòng)電源很常見,但是支持30W USB PD快充輸出以及40W USB PD快充輸入的卻并不多見。而經(jīng)過拆解我們也可以發(fā)現(xiàn),全漢這款移動(dòng)電源之所以支持大功率USB PD雙向快充,是因?yàn)閮?nèi)部使用了扎實(shí)的元器件,其中最主要的是采用了南芯的高效率的同步雙向升降壓芯片SC8812A;USB PD協(xié)議則是由芯海的CSS34P16來控制。除了高效率的電器元件之外,產(chǎn)品的金屬外殼設(shè)計(jì)也是散熱性能的保障。

          相關(guān)閱讀:

          最強(qiáng)PD充電寶:全漢20000mAh移動(dòng)電源,支持QC3.0和65W雙向USB PD

          下一個(gè)爆款:全漢推出30W USB PD移動(dòng)電源,可給New MacBook充電

          在 jupyter notebook 中輸出 pandas 數(shù)據(jù),會(huì)輸出一個(gè)簡(jiǎn)潔大方的表格:

          不過,看久了也會(huì)覺得無趣。

          今天我們就嘗試讓表格動(dòng)起來:


          樣式屬性

          首先要知道一個(gè)重點(diǎn),在 jupyter notebook 環(huán)境上的輸出,全是 html。因此我們只需要適當(dāng)加上 css 就能讓其可以交互起來。

          而 pandas 本身就提供了一些方法讓我們輕松添加樣式:

          • 行12:df.style 就能開啟 dataframe 樣式設(shè)置之路
          • set_table_styles 方法可以為表格中的每個(gè)標(biāo)簽設(shè)置樣式
          • 行13:在 html 中,表格的每一行都是一個(gè) tr 標(biāo)簽。這里設(shè)置 tr 標(biāo)簽,過渡動(dòng)畫時(shí)間為 1秒
          • 行14、15:同理, tr:hover 就是鼠標(biāo)劃過每個(gè) tr 標(biāo)簽時(shí),設(shè)置 transform:translate(50%) ,讓整個(gè) tr 標(biāo)簽 往右移動(dòng)自身一半寬度的距離

          看起來挺復(fù)雜的,里面的每個(gè)屬性是怎么來的?

          這些全是 css 屬性,但是我們不可能全把他們記住

          這里教大家一個(gè)小技巧:

          1. 隨意創(chuàng)建一個(gè) 后綴是 .css 的文件
          2. 用 vscode 打開 css 文件
          3. 隨意輸入一個(gè)選擇器
          4. 在里面就能得到一級(jí)棒的智能提示

          肯定有人吐槽,這有啥用呀!?

          如果我告訴你,這可以讓表格與 matplotlib 等圖表聯(lián)動(dòng)呢?

          我正在研究這種實(shí)現(xiàn),并且已經(jīng)有了一定的進(jìn)展。下次再分享


          你學(xué)會(huì)了沒有?

          記得點(diǎn)贊,轉(zhuǎn)發(fā)!謝謝支持!

          推薦閱讀:

          • 懂Excel就能輕松入門Python數(shù)據(jù)分析包pandas(三):制作成績(jī)條

          主站蜘蛛池模板: 亚洲av无码一区二区三区天堂| 一区二区和激情视频| 人妻AV中文字幕一区二区三区 | 国产成人精品无码一区二区| 中文字幕人妻AV一区二区| 成人区精品人妻一区二区不卡 | 国产精品成人一区二区三区| 午夜福利一区二区三区在线观看 | 一区精品麻豆入口| 在线中文字幕一区| 亚洲乱色熟女一区二区三区丝袜 | 亚洲综合国产一区二区三区| 国模精品视频一区二区三区| 国产精品香蕉在线一区| 久久精品视频一区二区三区| 国产一区二区高清在线播放| 免费萌白酱国产一区二区| 久久精品无码一区二区三区免费| 在线观看亚洲一区二区| 精品无码一区二区三区亚洲桃色| 一区二区视频传媒有限公司| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产午夜福利精品一区二区三区 | 国产一区三区三区| 国模丽丽啪啪一区二区| 国产午夜精品一区二区三区嫩草| 亚洲片国产一区一级在线观看| 琪琪see色原网一区二区| 老鸭窝毛片一区二区三区| 免费在线观看一区| 丰满人妻一区二区三区免费视频| 任你躁国产自任一区二区三区| 国产一区二区三区在线观看精品| 国产一区二区内射最近更新| 国产一区二区电影在线观看| 国产精品高清一区二区三区| 精品深夜AV无码一区二区| 在线精品一区二区三区| 精品国产一区二区三区久久狼 | 国产精品视频一区二区三区无码| 日韩亚洲一区二区三区|