.none {
-webkit-filter: none;
filter: none;
}
.blur {
-webkit-filter: blur(3px);
filter: blur(3px);
}
.grayscale {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
.invert {
-webkit-filter: invert(1);
filter: invert(1);
}
.sepia {
-webkit-filter: sepia(1);
filter: sepia(1);
}
button#snapshot {
margin: 0 10px 25px 0;
width: 110px;
}
video {
object-fit: cover;
}
const filterSelect=document.querySelector('select#filter');
const video=window.video=document.querySelector('video');
filterSelect.onchange=function() {
video.className=filterSelect.value;
};
navigator.mediaDevices.getUserMedia({
audio: false,
video: true
}).then(handleSuccess).catch(handleError);
function handleSuccess(stream) {
video.srcObject=stream;
}
function handleError(error) {
console.log('navigator.MediaDevices.getUserMedia error: ', error.message, error.name);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./index.css">
</head>
<body>
<video playsinline autoplay></video>
<label for="filter">Filter: </label>
<select id="filter">
<option value="none">None</option>
<option value="blur">Blur</option>
<option value="grayscale">Grayscale</option>
<option value="invert">Invert</option>
<option value="sepia">Sepia</option>
</select>
<script src="./index.js"></script>
</body>
</html>
注本頭條號,專注做前端
之前分享過其他的select美化插件,比如 easydropdown等都非常不錯,這里要給大家介紹的是另外一款select下拉美化插件——selectFilter.js ,基于jquery,配置簡單。
<script type="text/javascript">
//
JConsole 圖形用戶界面是一種符合 Java 管理擴展 (JMX) 規范的監視工具。JConsole 使用 Java 虛擬機 (Java VM) 的廣泛檢測來提供有關在 Java 平臺上運行的應用程序的性能和資源消耗的信息。
獲取java PID的方法:通過任務管理器查看、通過Java提供的jps命令查看。
使用jsconsole hostName:portNum命令:hostName是運行應用程序的系統的名稱,portNum是您在啟動 Java VM 時啟用 JMX 代理時指定的端口號。
使用service:jmx:<protocol>:<sap>命令:使用 JMX 服務 URL 進行連接。
將 JConsole 連接到應用程序后,JConsole 由六個選項卡組成。
顯示有關 CPU 使用情況、內存使用情況、線程計數和在 Java VM 中加載的類的圖形監視信息。
提供有關內存消耗和內存池的信息。
提供執行GC的操作,可以隨時點擊按鈕進行垃圾回收
Java VM 管理兩種類型的內存:堆內存和非堆內存,這兩種內存都是在 Java VM 啟動時創建的。
內存池和內存管理器是 Java VM 內存系統的關鍵方面。
垃圾回收 (GC) 是 Java VM 釋放不再引用的對象占用的內存的方式。通常認為具有活動引用為"活動"且未引用(或無法訪問)對象的對象為"已死"。垃圾回收是釋放死對象使用的內存的過程。GC 使用的算法和參數對性能有顯著影響。
Java hotspot VM 垃圾回收器使用代數 GC。生成 GC 利用大多數程序符合以下概括的觀察。
提供有關線程使用的信息。
顯示有關類加載的信息。
提供有關 Java VM 的信息。
以通用方式顯示有關在平臺 MBean 服務器注冊的所有 MBeans 的信息。MBeans 選項卡允許您訪問平臺 MXBean 檢測的完整集,包括在其他選項卡中不可見的儀器。此外,您還可以使用 MBeans 選項卡監視和管理應用程序的 MBeans。
列出目標系統上已檢測的 Java 虛擬機 (JVM)。
監視 Java 虛擬機 (JVM) 統計信息。
對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。
命令格式
jstat [-option] [PID]
option參數
1.jstat –class <pid> : 顯示加載class的數量,及所占空間等信息。
2.jstat -compiler <pid>顯示VM實時編譯的數量等信息。
3.jstat -gc <pid>: 可以顯示gc的信息,查看gc的次數,及時間。
4.jstat -gccapacity <pid>:可以顯示,VM內存中三代(young,old,perm)對象的使用和占用大小
5.jstat -gcutil <pid>:統計gc信息
6.jstat -gcnew <pid>:年輕代對象的信息。
7.jstat -gcnewcapacity<pid>: 年輕代對象的信息及其占用量。
8.jstat -gcold <pid>:old代對象的信息。
9.jstat -gcoldcapacity <pid>: old代對象的信息及其占用量。
10.jstat -gcpermcapacity<pid>: perm對象的信息及其占用量。
11.jstat -printcompilation <pid>:當前VM執行的信息。
監視 Java 虛擬機 (JVM),并使遠程監視工具能夠連接到 JVM
命令格式
jstatd -[option]
option
使用方法
1.在jdk的bin目錄下創建文件jstatd.all.policy
2.寫入下面的安全配置
grant codebase "file:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/lib/tools.jar" {
permission java.security.AllPermission;
};
#此處寫絕對路徑,主要是防止路徑錯誤問題,排查問題,應該寫成相對路徑
3.啟動jstatd
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=x.x.x.x &
4.使用jvisualvm工具遠程連接,進行監控
VisualVM,能夠監控線程,內存情況,查看方法的CPU時間和內存中的對 象,已被GC的對象,反向查看分配的堆棧(如100個String對象分別由哪幾個對象分配出來的).
同時他還提供很多插件可以自己安裝,是一款不錯的監控分析工具。
可以用來查看正在運行的 java 應用程序的擴展參數,包括Java System屬性和JVM命令行參數;也可以動態的修改正在運行的 JVM 一些參數。當系統崩潰時,jinfo可以從core文件里面知道崩潰的Java應用程序的配置信息
命令格式
參數說明
option
Javacore 概述
Javacore,也可以稱為“threaddump”或是“javadump”,它是 Java 提供的一種診斷特性,能夠提供一份可讀的當前運行的 JVM 中線程使用情況的快照。即在某個特定時刻,JVM 中有哪些線程在運行,每個線程執行到哪一個類,哪一個方法。應用程序如果出現不可恢復的錯誤或是內存泄露,就會自動觸發 Javacore 的生成。
使用方法
1.jinfo pid:輸出當前 jvm 進程的全部參數和系統屬性
2.jinfo -flag name pid:輸出對應名稱的參數使用該命令,可以查看指定的 jvm 參數的值。如:查看當前 jvm 進程是否開啟打印 GC 日志。
3.jinfo -flag [+|-]name pid:開啟或者關閉對應名稱的參數
使用 jinfo 可以在不重啟虛擬機的情況下,可以動態的修改 jvm 的參數。尤其在線上的環境特別有用。
4.jinfo -flag name=value pid:修改指定參數的值。
注意:jinfo雖然可以在java程序運行時動態地修改虛擬機參數,但并不是所有的參數都支持動態修改
5.jinfo -flags pid:輸出全部的參數
6.jinfo -sysprops pid:輸出當前 jvm 進行的全部的系統屬性
主要是用來分析java堆的命令,可以將堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,并支持對象查詢語言。
jmap -dump:live,file=a.log pid
也可以使用下面方式導出堆文件
1、使用 jconsole 選項通過 HotSpotDiagnosticMXBean 從運行時獲得堆轉儲(生成dump文件)、
2、虛擬機啟動時如果指定了 -XX:+HeapDumpOnOutOfMemoryError 選項, 則在拋出 OutOfMemoryError 時, 會自動執行堆轉儲。
3、使用 hprof 命令
jhat -J-Xmx512M a1.log
http://ip:7000/jhat中的OQL(對象查詢語言)
如果需要根據某些條件來過濾或查詢堆的對象,這是可能的,可以在jhat的html頁面中執行OQL,來查詢符合條件的對象
基本語法:
select <javascript expression to select>
[from [instanceof] <class name> <identifier>]
[where <javascript boolean expression to filter>]
解釋:
(1)class name是java類的完全限定名,如:java.lang.String, java.util.ArrayList, C是char數組, java.io.File是java.io.File[]
(2)類的完全限定名不足以唯一的辨識一個類,因為不同的ClassLoader載入的相同的類,它們在jvm中是不同類型的
(3)instanceof表示也查詢某一個類的子類,如果不明確instanceof,則只精確查詢class name指定的類
(4)from和where子句都是可選的
(5)java域表示:obj.field_name;java數組表示:array[index]
舉例:
(1)查詢長度大于100的字符串
select s from java.lang.String s where s.count > 100
(2)查詢長度大于256的數組
select a from [I a where a.length > 256
(3)顯示匹配某一正則表達式的字符串
select a.value.toString() from java.lang.String s where /java/(s.value.toString())
(4)顯示所有文件對象的文件路徑
select file.path.value.toString() from java.io.File file
(5)顯示所有ClassLoader的類名
select classof(cl).name from instanceof java.lang.ClassLoader cl
(6)通過引用查詢對象
select o from instanceof 0xd404d404 o
built-in對象 -- heap
(1)heap.findClass(class name) -- 找到類
select heap.findClass("java.lang.String").superclass
(2)heap.findObject(object id) -- 找到對象
select heap.findObject("0xd404d404")
(3)heap.classes -- 所有類的枚舉
select heap.classes
(4)heap.objects -- 所有對象的枚舉
select heap.objects("java.lang.String")
(5)heap.finalizables -- 等待垃圾收集的java對象的枚舉
(6)heap.livepaths -- 某一對象存活路徑
select heaplivepaths(s) from java.lang.String s
(7)heap.roots -- 堆根集的枚舉
辨識對象的函數
(1)classof(class name) -- 返回java對象的類對象
select classof(cl).name from instanceof java.lang.ClassLoader cl
(2)identical(object1,object2) -- 返回是否兩個對象是同一個實例
select identical(heap.findClass("java.lang.String").name, heap.findClass("java.lang.String").name)
(3)objectid(object) -- 返回對象的id
select objectid(s) from java.lang.String s
(4)reachables -- 返回可從對象可到達的對象
select reachables(p) from java.util.Properties p -- 查詢從Properties對象可到達的對象
select reachables(u, "java.net.URL.handler") from java.net.URL u -- 查詢從URL對象可到達的對象,但不包括從URL.handler可到達的對象
(5)referrers(object) -- 返回引用某一對象的對象
select referrers(s) from java.lang.String s where s.count > 100
(6)referees(object) -- 返回某一對象引用的對象
select referees(s) from java.lang.String s where s.count > 100
(7)refers(object1,object2) -- 返回是否第一個對象引用第二個對象
select refers(heap.findObject("0xd4d4d4d4"),heap.findObject("0xe4e4e4e4"))
(8)root(object) -- 返回是否對象是根集的成員
select root(heap.findObject("0xd4d4d4d4"))
(9)sizeof(object) -- 返回對象的大小
select sizeof(o) from [I o
(10)toHtml(object) -- 返回對象的html格式
select "<b>" + toHtml(o) + "</b>" from java.lang.Object o
(11)選擇多值
select {name:t.name?t.name.toString():"null",thread:t} from instanceof java.lang.Thread t
數組、迭代器等函數
(1)concat(enumeration1,enumeration2) -- 將數組或枚舉進行連接
select concat(referrers(p),referrers(p)) from java.util.Properties p
(2)contains(array, expression) -- 數組中元素是否滿足某表達式
select p from java.util.Properties where contains(referres(p), "classof(it).name=='java.lang.Class'")
返回由java.lang.Class引用的java.util.Properties對象
(3)count(array, expression) -- 滿足某一條件的元素的數量
select count(heap.classes(), "/java.io./(it.name)")
(4)filter(array, expression) -- 過濾出滿足某一條件的元素
select filter(heap.classes(), "/java.io./(it.name)")
(5)length(array) -- 返回數組長度
select length(heap.classes())
(6)map(array,expression) -- 根據表達式對數組中的元素進行轉換映射
select map(heap.classes(),"index + '-->' + toHtml(it)")
(7)max(array,expression) -- 最大值, min(array,expression)
select max(heap.objects("java.lang.String"),"lhs.count>rhs.count")
(8)sort(array,expression) -- 排序
select sort(heap.objects('[C'),'sizeof(lhs)-sizeof(rhs)')
(9)sum(array,expression) -- 求和
select sum(heap.objects('[C'),'sizeof(it)')
(10)toArray(array) -- 返回數組
(11)unique(array) -- 唯一化數組
打印進程、核心文件或遠程調試服務器的共享對象內存映射或堆內存詳細信息。
jmap [option] <pid>
(to connect to running process) 連接到正在運行的進程
jmap [option] <executable <core>
(to connect to a core file) 連接到核心文件
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server) 連接到遠程調試服務
option
使用方法
jstack命令主要用于調試java程序運行過程中的線程堆棧信息,可以用于檢測死鎖,進程耗用cpu過高報警問題的排查。jstack命令會打印出所有的線程,包括用戶自己啟動的線程和jvm后臺線程。
命令格式
jstack -[option] pid
option
*請認真填寫需求信息,我們會在24小時內與您取得聯系。