Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
了讓Java語言具有良好的跨平臺能力,Java獨具匠心的提供了一種可以在所有平臺上都能使用的一種中間代碼——字節碼(ByteCode)。
有了字節碼,無論是哪種平臺(如Windows、Linux等),只要安裝了虛擬機,都可以直接運行字節碼。
同樣,有了字節碼,也解除了Java虛擬機和Java語言之間的耦合。這話可能很多人不理解,Java虛擬機不就是運行Java語言的么?這種解耦指的是什么?
其實,目前Java虛擬機已經可以支持很多除Java語言以外的語言了,如Kotlin、Groovy、JRuby、Jython、Scala等。
之所以可以支持,就是因為這些語言也可以被編譯成字節碼。而虛擬機并不關心字節碼是有哪種語言編譯而來的。
經常使用IDE的開發者可能會發現,當我們在Intelij IDEA中,鼠標右鍵想要創建Java類的時候,IDE還會提示創建其他類型的文件,這就是IDE默認支持的一些可以運行在JVM上面的語言,沒有提示的,可以通過插件來支持。
目前,可以直接在JVM上運行的語言有很多,今天介紹其中比較重要的九種。每種語言通過一段『HelloWorld』代碼進行演示,看看不同語言的語法有何不同。
Kotlin是一種在Java虛擬機上運行的靜態類型編程語言,它也可以被編譯成為JavaScript源代碼。Kotlin的設計初衷就是用來生產高性能要求的程序的,所以運行起來和Java也是不相上下。Kotlin可以從 JetBrains InteilliJ Idea IDE這個開發工具以插件形式使用。
Hello World In Kotlin
fun main(args: Array<String>) { println("Hello, world!") }
Apache的Groovy是Java平臺上設計的面向對象編程語言。它的語法風格與Java很像,Java程序員能夠很快的熟練使用 Groovy,實際上,Groovy編譯器是可以接受完全純粹的Java語法格式的。
使用Groovy的一個重要特點就是使用類型推斷,即能夠讓編譯器能夠在程序員沒有明確說明的時候推斷出變量的類型。Groovy可以使用其他Java語言編寫的庫。Groovy的語法與Java非常相似,大多數Java代碼也匹配Groovy的語法規則,盡管可能語義不同。
Hello World In Groovy
static void main(String[] args) { println('Hello, world!'); }
Scala是一門多范式的編程語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。
Scala經常被我們描述為多模式的編程語言,因為它混合了來自很多編程語言的元素的特征。但無論如何它本質上還是一個純粹的面向對象語言。它相比傳統編 程語言最大的優勢就是提供了很好并行編程基礎框架措施了。Scala代碼能很好的被優化成字節碼,運行起來和原生Java一樣快。
Hello World In Scala
object HelloWorld { def main(args: Array[String]) { System.out.println("Hello, world!"); } }
JRuby是用來橋接Java與Ruby的,它是使用比Groovy更加簡短的語法來編寫代碼,能夠讓每行代碼執行更多的任務。就和Ruby一樣,JRuby不僅僅只提供了高級的語法格式。它同樣提供了純粹的面向對象的實現,閉包等等,而且JRuby跟Ruby自身相比多了很多基于Java類庫 可以調用,雖然Ruby也有很多類庫,但是在數量以及廣泛性上是無法跟Java標準類庫相比的。
Hello World In Jruby
"puts 'Hello, world!'"
Jython,是一個用Java語言寫的Python解釋器。Jython能夠用Python語言來高效生成動態編譯的Java字節碼。
Hello World In Jython
print "Hello, world!"
Fantom是一種通用的面向對象編程語言,由Brian和Andy Frank創建,運行在Java Runtime Environment,JavaScript和.NET Common Language Runtime上。其主要設計目標是提供標準庫API,以抽象出代碼是否最終將在JRE或CLR上運行的問題。
Fantom是與Groovy以及JRuby差不多的一樣面向對 象的編程語言,但是悲劇的是Fantom無法使用Java類庫,而是使用它自己擴展的類庫。
Hello World In Fantom
class Hello{ static Void main() { echo("Hello, world!") } }
Clojure是Lisp編程語言在Java平臺上的現代、函數式及動態方言。 與其他Lisp一樣,Clojure視代碼為數據且擁有一套Lisp宏系統。
雖然Clojure也能被直接編譯成Java字節碼,但是無法使用動態語言特性以及直 接調用Java類庫。與其他的JVM腳本語言不一樣,Clojure并不算是面向對象的。
Hello World In Clojure
(defn -main [& args] (println "Hello, World!"))
Rhino是一個完全以Java編寫的JavaScript引擎,目前由Mozilla基金會所管理。
Rhino的特點是為JavaScript加了個殼,然后嵌入到Java中,這樣能夠讓Java程序員直接使用。其中Rhino的JavaAdapters能夠讓JavaScript通過調用Java的類來實現特定的功能。
Hello World In Rhino
print('Hello, world!')
Ceylon是一種面向對象,強烈靜態類型的編程語言,強調不變性,由Red Hat創建。 Ceylon程序在Java虛擬機上運行,可以編譯為JavaScript。 語言設計側重于源代碼可讀性,可預測性,可擴展性,模塊性和元編程性。
Hello World In Ceylon
近全漢推出了一款功率更大的10000mAh PD移動電源,輸入40W輸出30W相比之前的款式提升巨大,此前已經對這款產品進行了詳細的評測,性能是毋庸置疑的。那廢話就不多說,今天就為大家帶來這款對性能、外觀做了最好均衡的移動電源的拆解。
一、全漢Q1012PD移動電源外觀
這款產品使用塑料殼體+鋁背蓋組成,在塑料殼體表面帶有斜紋狀網格紋路,兼顧散熱與手感。
側面設置了4顆白色電量指示燈與一顆綠色快充指示燈,當移動電源正處于快充模式(輸入輸出皆可)會亮起快充指示燈,旁邊是電量檢查/開機激活按鈕。
另一側是MicroUSB輸入接口,多了一個輸入接口使用起來更加通用方便。
正面輸出接口部分,從左到右分別是5V常規輸出口、USB-C雙向接口、USB-A快充輸出口。
反過來可以看到鋁材質金屬背蓋,PCB高熱器件熱量通過導熱膠傳遞到殼體上帶來良好的導熱散熱。
背蓋銘牌信息如下,型號: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、制造商:深圳市鑫全漢科技有限公司。這款移動電源目前已經通過了FCC、CE、RoHS等認證。
使用POWER-Z KM001對USB-A快充口進行協議輪詢,從屏幕可以看到支持BC1.2、DCP、Apple2.4、QC2.0、AFC、FCP、QC3.0等協議。
使用ChargerLAB POWER-Z KM001C查看USB-C PDO報文,全漢Q1012PD返回5個PDO,分別是5V2A、9V3A、12V2.5A、15V2.0A、20V1.5A,可以滿足市面上大部分設備功率需求。
在電腦上使用ChargerLAB POWER-Z軟件探測PDO信息,與USB表報文結果一致。
ChargerLAB POWER-Z進行30W帶載測試,紋波峰峰值0.0512V。
二、全漢Q1012PD移動電源拆解
全漢Q1012PD使用內外卡子合蓋,裝配較為牢固,一體性較高,鋁背蓋上粘附了一大塊導熱硅膠用來把PCB上的高熱傳遞到殼體上降溫。
LED窗帶有導光模塊與遮光海綿。
全漢Q1012PD使用了兩片電芯串聯成電池組,是市面上唯一一款10000mAh小體積的大功率PD移動電源,測溫探頭直接埋在兩片電芯中間,電池保護板與電芯PACK處理。
過孔焊接的MicroUSB母座。
USB-A母座細節。
電源激活按鍵以及4顆白色LED燈、一顆綠色LED燈。
USB-C母座細節。
PCB板插腳件俯視圖。
絲印NY7WC,SY8105 同步降壓轉換器。
SOUTHCHIP南芯SC8812A,支持 I2C 接口,是一顆高效率的同步雙向升降壓芯片。
SOUTHCHIP南芯SC8812A可完成充電、放電控制;支持各種電力轉換;采用I2C接口,簡化的外部器件;內部集成快速充電協議等。
來自CHIPSEA芯海科技的CSU38M20。這是一顆高性能的8位單片機MCU,內置8K×16位程序存儲器MTP、1K字節數據存儲器(SRAM)、256字節的E2PROM、只有43條單字指令、8級PUSH和POP存儲堆棧。
CHIPSEA芯海科技CSU38M20詳細規格介紹。
CHIPSEA芯海科技的USB Type-C控制器CSS34P16 ,符合最新 USB Type-C型和 PD標準,同時內部還集成其他多種快充協議標準。可為適配器、車載充電器、移動電源等應用提供完整的USB Type-C和 USB供電端口控制解決方案。芯片可根據用戶需求靈活配置,操作簡便, 可快速實現方案功能。
CHIPSEA芯海科技CSS34P16詳細規格介紹。
USB-C口輸出VBUS開關,絲印42P03 7601。
4R7貼片電感。
來自CHONG-X的電解電容,規格25V 220μF。
電感線圈,布滿膠水,便于散熱。
兩顆絲印DS3805的雙MOS管為輸出切換。
四顆30N60 MOS管,用于同步升降壓。
絲印3002F為USB-A普通輸出接口識別芯片。
絲印FT0XFK為USB-A快充輸出接口識別芯片。
充電頭網拆解總結
目前支持USB PD快充的10000mAh移動電源很常見,但是支持30W USB PD快充輸出以及40W USB PD快充輸入的卻并不多見。而經過拆解我們也可以發現,全漢這款移動電源之所以支持大功率USB PD雙向快充,是因為內部使用了扎實的元器件,其中最主要的是采用了南芯的高效率的同步雙向升降壓芯片SC8812A;USB PD協議則是由芯海的CSS34P16來控制。除了高效率的電器元件之外,產品的金屬外殼設計也是散熱性能的保障。
相關閱讀:
最強PD充電寶:全漢20000mAh移動電源,支持QC3.0和65W雙向USB PD
下一個爆款:全漢推出30W USB PD移動電源,可給New MacBook充電
在 jupyter notebook 中輸出 pandas 數據,會輸出一個簡潔大方的表格:
不過,看久了也會覺得無趣。
今天我們就嘗試讓表格動起來:
首先要知道一個重點,在 jupyter notebook 環境上的輸出,全是 html。因此我們只需要適當加上 css 就能讓其可以交互起來。
而 pandas 本身就提供了一些方法讓我們輕松添加樣式:
看起來挺復雜的,里面的每個屬性是怎么來的?
這些全是 css 屬性,但是我們不可能全把他們記住
這里教大家一個小技巧:
肯定有人吐槽,這有啥用呀!?
如果我告訴你,這可以讓表格與 matplotlib 等圖表聯動呢?
我正在研究這種實現,并且已經有了一定的進展。下次再分享
你學會了沒有?
記得點贊,轉發!謝謝支持!
推薦閱讀:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。