当前位置: 首页 > news >正文

.netcms网站管理系统图片下载网站哪个好

.netcms网站管理系统,图片下载网站哪个好,厦门网站建设小程序开发,手机企业管理app软件JavaScript的TypedArray是现代Web开发中处理二进制数据的利器。本文将结合网络数据传输、WebGPU编程和简单加密算法三个实战场景#xff0c;带你领略TypedArray的强大能力。 一、TypedArray基础认知 TypedArray家族包括Int8Array、Uint16Array、Float32Array等11种视图类型带你领略TypedArray的强大能力。 一、TypedArray基础认知 TypedArray家族包括Int8Array、Uint16Array、Float32Array等11种视图类型关于视图类型的解释请参看深入理解 JavaScript 中的视图类型它们共同操作ArrayBuffer底层二进制缓冲区。与传统Array相比 // 普通数组 const arr [1, 2, 3]; // 每个元素占8字节// TypedArray const typedArr new Int8Array([1, 2, 3]); // 每个元素占1字节 在 JavaScript 中  TypedArray   是一种用于处理二进制数据的数组类型它允许直接操作底层内存中的数据。与传统的 JavaScript 数组  Array  不同  TypedArray   是类型化的这意味着它只能存储特定类型的数据如整数、浮点数等并且在底层以连续的内存块形式存储。 1. TypedArray 的种类 JavaScript 提供了多种类型的   TypedArray  每种类型对应一种数据格式包括 类型化数组类型 数据类型 字节值范围  Int8Array8位有符号整数 1-128 到 127  Uint8Array8位无符号整数 10 到 255 Uint8ClampedArray8位无符号整数溢出时钳制10 到 255  Int16Array16位有符号整数 2-32768 到 32767 Uint16Array16位无符号整数 20 到 65535 Int32Array32位有符号整数 4-2147483648 到 2147483647Uint32Array32位无符号整数 40 到 4294967295 Float32Array32位浮点数 4IEEE 754 单精度浮点数 Float64Array64位浮点数 8IEEE 754 双精度浮点数 2. 创建 TypedArray   TypedArray   的创建通常基于一个共享的底层缓冲区通常是   ArrayBuffer   或   SharedArrayBuffer  。例如 const buffer new ArrayBuffer(16); // 创建一个大小为 16 字节的缓冲区 const int8Array new Int8Array(buffer); // 创建一个 Int8Array映射整个缓冲区 console.log(int8Array.length); // 输出16你也可以指定缓冲区的偏移量和长度 const int16Array new Int16Array(buffer, 0, 4); // 从偏移量 0 开始长度为 4 的 Int16Array console.log(int16Array.length); // 输出43. TypedArray 的特点 内存效率  TypedArray   在底层以连续的内存块存储数据适合处理大量数据如图像像素、音频样本等。性能优势由于数据类型固定  TypedArray   的访问和操作速度比普通数组更快。共享缓冲区多个   TypedArray   可以共享同一个底层缓冲区它们的修改会相互影响。例如  const buffer new ArrayBuffer(8); const int32Array new Int32Array(buffer); const uint8Array new Uint8Array(buffer);int32Array[0] 0x12345678; // 设置 32 位整数 console.log(uint8Array); // 输出[120, 86, 52, 18]字节顺序取决于平台4. 使用场景 图像处理操作像素数据如   Uint8ClampedArray  。音频处理处理音频样本数据如   Float32Array  。WebAssembly与 WebAssembly 共享内存用于高性能计算。二进制数据处理读取或写入二进制文件如文件上传、下载。 5. 与普通数组的互操作 TypedArray   和普通数组可以通过   Array.from()   或扩展运算符相互转换 const typedArray new Uint8Array([1, 2, 3]); const regularArray Array.from(typedArray); // 或 [...typedArray] console.log(regularArray); // 输出[1, 2, 3]6. 注意事项 字节序问题  TypedArray   的字节序取决于运行环境大端或小端。如果需要跨平台操作可能需要手动处理字节序。性能优化  TypedArray   的性能优势在于处理大量数据时对于小规模数据普通数组可能更方便。 TypedArray   是 JavaScript 中用于高效处理二进制数据的强大工具。它提供了多种数据类型选择支持共享缓冲区并且在性能和内存效率上有显著优势。如果你需要处理图像、音频或其他二进制数据  TypedArray   是一个非常合适的选择。后面我们分别以网络数据处理、WebGPU编程与加密处理为例演示TypedArray在实际编程中的应用。 二、网络数据处理实战 1. 接收二进制数据 使用Fetch API获取PNG图片并解析元数据 fetch(image.png).then(response response.arrayBuffer()).then(buffer {const view new DataView(buffer);const pngHeader String.fromCharCode(view.getUint8(1),view.getUint8(2),view.getUint8(3));console.log(PNG标识${pngHeader}); // 输出PNG}); 2. 处理WebSocket数据流 构建二进制协议解析器 const ws new WebSocket(wss://example.com/data); ws.binaryType arraybuffer;ws.onmessage (event) {const buffer event.data;const dataView new DataView(buffer);const protocolVersion dataView.getUint8(0);const timestamp dataView.getBigUint64(1);const payload new Float32Array(buffer, 9); }; 三、WebGPU中的TypedArray应用 1. 创建顶点缓冲区 const vertices new Float32Array([// 位置 // 颜色-0.5, -0.5, 1, 0, 0,0.5, -0.5, 0, 1, 0,0.0, 0.5, 0, 0, 1 ]);const vertexBuffer device.createBuffer({size: vertices.byteLength,usage: GPUBufferUsage.VERTEX,mappedAtCreation: true });new Float32Array(vertexBuffer.getMappedRange()).set(vertices); vertexBuffer.unmap(); 2. 计算着色器数据交互 // CPU端数据准备 const inputData new Uint32Array([1, 2, 3, 4, 5]); const outputBuffer device.createBuffer({size: inputData.byteLength,usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC });// GPU计算完成后读取数据 const result new Uint32Array(inputData.length); await device.queue.readBuffer(outputBuffer, 0, result.buffer); 四、数据加密案例XOR加密 1. 加密函数实现 function xorEncrypt(key, str) {const encoder new TextEncoder();const data encoder.encode(str);const result new Uint8Array(data.length);for (let i 0; i data.length; i) {result[i] data[i] ^ key.charCodeAt(i % key.length);}return result; } 2. 完整加密/解密流程 // 加密过程 const original Secret Message; const encrypted xorEncrypt(mykey, original);// 传输加密数据模拟 const transmittedData encrypted.buffer;// 解密过程 function xorDecrypt(key, buffer) {const data new Uint8Array(buffer);const decoder new TextDecoder();const result new Uint8Array(data.length);for (let i 0; i data.length; i) {result[i] data[i] ^ key.charCodeAt(i % key.length);}return decoder.decode(result); }console.log(xorDecrypt(mykey, transmittedData)); // 输出Secret Message 五、性能优化建议 内存复用对频繁操作的数据使用单个ArrayBuffer const sharedBuffer new ArrayBuffer(1024); const intView new Int32Array(sharedBuffer); const floatView new Float32Array(sharedBuffer); 批量操作使用set()代替循环赋值 const source new Uint8Array(1024); const target new Uint8Array(2048); target.set(source, 512); // 批量复制 视图转换避免不必要的类型转换 // 高效转换 const uintArray new Uint16Array(buffer); const intArray new Int16Array(uintArray.buffer); 六、总结 TypedArray在Web开发的各个领域发挥着关键作用掌握TypedArray不仅能提升程序性能更能打开处理二进制数据的新视野。随着WebAssembly和WebGPU等技术的发展TypedArray的重要性将愈发凸显。 扩展阅读 MDN TypedArray文档 WebGPU规范 ArrayBuffer与性能优化
http://www.dnsts.com.cn/news/102490.html

相关文章:

  • 怎么利用网站做兼职app开发费用
  • 龙岩网站设计招聘信息哪些公司网站推广能赚钱
  • 0基础网站建设教程视频教程织梦网站后台如何做百度优化
  • 新浪云sae免费wordpress网站浙江建设银行官网站纪念币
  • 传奇手游发布网站宁波seo推广开发
  • 企业只有建立自己的网站网站制作合作协议
  • 网站建设所需资料及费用西安网站建设怎样
  • 昆明中小企业网站建设赚钱小程序
  • 传媒网站设计开发公司租赁机械车位价格
  • 花钱做网站宁波网站建设制作网络公司
  • 北京的网站建设收费标准静态网站开发的目的
  • 自适应网站制作公司倒计时网站模板
  • 区块链技术和网站开发结合建设电子商务网站的目的和意义
  • 建设行政主管部门网站深圳知名企业名单
  • 公司网站建设总结报告网站如何做监控直播
  • 建设行业网站网站流量工具
  • 网站设计效果专业乐云seo做网站建设需要会哪些
  • 公司做网站需要哪些步骤模板图片可爱
  • 深圳微信商城网站设计公司网站建设可行性分析报告范文
  • 中国建设部网官方网站个人注册公司代理
  • 网网站设计网制作小程序的公司
  • 江苏网站建设系统服务有源代码怎么做网站
  • 南充建设网站wordpress 页面内容
  • 协会网站建设需要注意什么app排名
  • 做的比较唯美的网站有哪些学徒网页设计师招聘
  • mssql网站开发购物网站 建设
  • 北京 网站设计找时代创信好楼盘网站开发
  • 河北企业自助建站网站建设设计书
  • 阿里云服务器可以用来干什么宁波seo网络推广主要作用
  • 深圳免费模板建站微信小程序客户管理系统