整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          打造炫酷網頁:手把手教你用Proton制作粒子動畫效果!

          小墨是前端」專注分享前端技術,推薦優秀的開源項目,展示Github、Gitee上的創意作品,帶你深入前端底層,一起成長。

          大家好,向大家介紹一個輕量且功能強大的Javascript粒子動畫庫——Proton。讓你輕松創造出各種炫酷的粒子效果。

          一.簡介

          作為Proton一款易于上手的粒子動畫庫,只需十幾行代碼,就可以創造出令人驚嘆的粒子動畫效果。并且支持多種前端框架,不管是React、Vue、Angular還是Pixi.js、Phaser等框架,Proton都直接使用。不僅支持眾多框架,而且還有極高的渲染效率,哪怕渲染數以萬計的粒子,也能保持流暢的動畫效果。重要的是它還模擬了各種物理屬性,比如重力和布朗運動,讓粒子動畫更加逼真。

          二.功能特點

          1. 簡單直觀的API,只需十余行代碼,即可快速實現生動的粒子動畫效果。
          2. 有豐富的視覺效果,比如火焰、煙花、子彈、爆炸。
          3. 具備高效的渲染能力,輕松處理成千上萬的粒子動態,保證了動畫的流暢性和用戶的交互體驗。
          4. 模擬各種物理現象,如重力、布朗運動等,讓粒子效果更貼近真實世界。

          三.使用步驟

          1. 安裝:

          使用npm方式安裝:

          npm install proton-engine --save

          在HTML中直接引入:

          <script type="text/javascript" src="js/proton.min.js"></script>
          1. 使用:

          html部分:

          <!-- 定義canvas元素 -->
          <canvas id="particleCanvas" width="800" height="600"></canvas>

          js部分:

          // 創建Proton實例
          const proton = new Proton();
          
          // 實例化發射器
          const emitter = new Proton.Emitter();
          emitter.damping = 0.008;
          emitter.rate = new Proton.Rate(new Proton.Span(4, 10), new Proton.Span(0.02, 0.05));
          
          // 初始化粒子屬性
          emitter.addInitialize(new Proton.Mass(1));
          emitter.addInitialize(new Proton.Radius(1, 12));
          emitter.addInitialize(new Proton.Life(3, 5));
          emitter.addInitialize(new Proton.Velocity(new Proton.Span(1.5), new Proton.Span(0, 360), 'polar'));
          
          // 設置粒子行為
          emitter.addBehaviour(new Proton.RandomDrift(10, 10, 0.05));
          emitter.addBehaviour(new Proton.Color('#ffffff', '#ff0000'));
          
          // 設置發射器位置
          emitter.p.x = window.innerWidth / 2;
          emitter.p.y = window.innerHeight / 2;
          emitter.emit();
          
          // 選擇一個渲染器
          const canvas = document.getElementById('particleCanvas');
          const renderer = new Proton.CanvasRenderer(canvas);
          renderer.onProtonUpdate = function() {
              context.fillStyle = "rgba(0, 0, 0, 0.1)";
              context.fillRect(0, 0, canvas.width, canvas.height);
          };
          
          // 將渲染器添加到Proton實例
          proton.addRenderer(renderer);
          
          // 更新粒子狀態
          function tick() {
              requestAnimationFrame(tick);
              proton.update();
          }
          
          tick();

          四.項目地址

          https://github.com/drawcall/Proton

          五.總結

          作為一款JavaScript粒子動畫庫,Proton不僅僅易于上手,功能豐富,快速創建各種炫酷的粒子動畫效果。適用于各種前端框架和應用場景,更重要的是渲染效率極高,并且支持物理模擬。如果你正在找粒子動畫庫,推薦你可以嘗試一下。

          創作不易,歡迎大家關注、點贊、收藏、轉發!我會繼續分享高質量的干貨和前沿的技術,給大家提供更多有價值的內容!

          什么要使用火焰圖診斷性能瓶頸

          當一個Flink 實時任務、Web 服務或者 Api 接口延遲較高或者經常發生 OOM 時,你需要考慮:如何優化代碼,降低 Cpu 和內存的開銷。通過繪制火焰圖,能夠基于可視化的界面,直觀地定位到哪一段代碼引起了性能瓶頸,需要進行優化。

          本文介紹了 async-profiler 火焰圖繪制工具的下載安裝方法、主要參數的使用說明。本文通過了 2 個示例,分別介紹了如何定位 Cpu 性能瓶頸的代碼以及如何定位內存性能瓶頸的代碼。文中涉及的代碼,可以在文末的 代碼附錄

          日常工作中經常會遇到系統應用出現full gc、cpu內存飆高等場景,如果想要快速解決這些線上問題就需要首先能快速定位,最好能定位到具體代碼。本文旨在通過一款線上監控診斷產品,阿里巴巴的arthas(阿爾薩斯)內部集成的火焰圖工具async-profiler結合自身系統應用中的使用,方便我們能夠快速定位線上問題。

          本文目錄如下:

          一、背景

          二、工具選型及實踐

          三、修復上線

          四、使用步驟

          一、背景





          1、在訂單域任務系統,master機器和slaver機器頻繁出現full gc和cpu間歇性升高的現象,young GC也出現平均1分鐘10次。master機器線程也增加到1500左右。系統應用采用的是CMS垃圾回收器,4c8g分配堆內存大小4G。但是堆內存和非堆內存正常。

          2、隨著時間推移,full gc從每隔20分鐘一次變成 每個5分鐘或者3分鐘一次,stop the world。FULL GC 和 Young GC 不正常,如下圖。


          ?堆內存和非堆內存正常。

          CPU一分鐘一次達到高點,部分機器達到75%以上。線程,在上午超過1400,重啟后正常。

          系統穩定性受到挑戰,需要盡快排查出問題所在。

          二、工具選型及實踐





          市面上很多排查工具,怎樣才能快速排查出問題。結合arthas、async-profiler火焰圖(采樣)、visualVM(跨時間dump文件對比)、gceasy這四種工具,都進行實戰對比。

          【2.1arthas分析】

          下圖分析master機器是反序列化商品域渠道配置接口對象耗CPU

          ?下圖也發現反查快手任務也會引起高cpu。分析這臺機器既是master,又是slaver。slaver會執行反查快手任務。

          ?【2.2 visualVM分析】


          dump兩個文件,跨時一天,進行對比。

          啟動visualVM

          cd /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin

          jvisualvm

          /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/visualvm目錄下 visualvm.conf修改內存空間大小。

          ??對比發現,最大是查詢ES的數據,反序列化對象并不是最大,但是也能在dump文件中查找到。因為arthas查的是CPU和線程,dump文件是內存,所以不完全一致。

          ??一次500個

          ?【2.3 gceasy分析】

          修改jvm,-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:./gc.log,打印gc日志。

          通過gceasy.io線上對比工具,沒有內存泄露,但是也未發現gc產生的具體原因。

          ?【2.4 async-profiler火焰圖】

          ?從上圖,看到主要分為兩大部分,左邊的反查快手任務(因master機器,既是master,也是slaver),右邊是掃描es里面代扣任務的反序列化對象占用很大比重。和arthas分析的一樣。

          下載內存火焰圖,可以看到左邊也是快手反查,右邊則是查詢ES(包含反序列化對象)。和dump文件比較能核對上。

          三、修復上線





          根據上述四種工具的排查過程,可以明顯看到使用arthas集成的async-profiler更直觀和方便,便于定位問題。在修改對應的代碼后,上線進行后續觀察系統穩定正常。

          四、使用步驟





          async-profiler 火焰圖

          1、申請堡壘機(root權限)

          2、登陸以后下載 最新的jar包 wget https://alibaba.github.io/arthas/arthas-boot.jar

          3、安裝(admin權限 cd)java -jar arthas-boot.jar

          4、查看cpu耗時、dashboard(q命令表示退出)、thread

          5、profiler start 啟動火焰圖工具進行采樣

          ?https://jlynet.github.io/2021/08/07/Java%E8%AF%8A%E6%96%AD%E5%B7%A5%E5%85%B7Arthas%E9%AB%98%E7%BA%A7%E5%91%BD%E4%BB%A4%E6%95%99%E7%A8%8B/Arthasprofiler%E5%91%BD%E4%BB%A4/

          profiler getSamples

          profiler status

          profiler stop --format html 生成火焰圖

          6、下載火焰圖

          ??7、多種維度:

          lock 鎖對象\alloc 內存\默認cpu

          ?8、效果


          ??CPU\內存等不同的火焰圖

          9、其他

          還可以反編譯jar包的代碼

          ??統計方法調用時間

          ??以上。本文旨在通過具體的場景運用和實操,介紹arthas火焰圖如何在系統中快速定位問題,歡迎感興趣的同事一起學習探討。


          作者:交易研發 郭森

          來源:微信公眾號:京東零售技術

          出處:https://mp.weixin.qq.com/s/FIQrRIxD5-U5_xf0ra_Uzw


          主站蜘蛛池模板: 日韩精品免费一区二区三区| 精品深夜AV无码一区二区老年| 亚洲视频一区二区在线观看| 国产精品538一区二区在线| 一区二区三区免费视频观看| 无码人妻一区二区三区在线视频 | 人妻无码一区二区三区四区| 国产一区二区精品久久凹凸 | 岛国无码av不卡一区二区| 日本精品夜色视频一区二区| 杨幂AV污网站在线一区二区| 狠狠色成人一区二区三区| 亚洲成AV人片一区二区密柚| 亚洲综合色一区二区三区小说| 一区二区在线播放视频| 天天综合色一区二区三区| 国产精品日本一区二区不卡视频| 97精品一区二区视频在线观看| 无码精品人妻一区| 日本一道高清一区二区三区| 精品乱码一区二区三区四区| 亚洲熟妇无码一区二区三区导航 | 国产品无码一区二区三区在线| 亚洲爆乳精品无码一区二区| 国产午夜精品一区二区三区不卡| 日本一区二区三区爆乳| 无码一区二区三区免费视频| 无码日韩精品一区二区人妻| 波多野结衣的AV一区二区三区| 视频一区二区在线观看| 呦系列视频一区二区三区| 人妻天天爽夜夜爽一区二区| 视频一区视频二区在线观看| 亚洲av乱码中文一区二区三区 | 国产综合无码一区二区三区| 精品动漫一区二区无遮挡| 一区二区高清视频在线观看| 精品福利一区二区三区免费视频| 久久一区不卡中文字幕| 亚洲福利秒拍一区二区| 久久er99热精品一区二区 |