首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Chrome88和Desktop Chrome92中的SharedArrayBuffer更新

基础概念

SharedArrayBuffer 是 JavaScript 中的一个对象,用于表示一个通用的、固定长度的原始二进制数据缓冲区,可以在多个 Workers 和主线程之间共享。这使得多线程编程更加高效,因为它允许线程间共享内存,而不是通过消息传递来共享数据。

更新内容

在 Android Chrome 88 和 Desktop Chrome 92 中,SharedArrayBuffer 进行了一些更新和改进,主要包括:

  1. 安全性增强:引入了 Cross-Origin Isolation(跨源隔离)机制,以防止跨站脚本攻击(XSS)和其他安全威胁。
  2. 性能优化:对 SharedArrayBuffer 的分配和释放进行了优化,提高了性能。
  3. API 改进:增加了一些新的 API 和方法,使得使用 SharedArrayBuffer 更加方便。

优势

  1. 高效的线程间通信:通过共享内存,避免了频繁的消息传递,提高了通信效率。
  2. 减少数据拷贝:直接在内存中操作数据,减少了不必要的数据拷贝。
  3. 更好的性能:特别是在处理大量数据和高并发场景下,性能提升显著。

类型

SharedArrayBuffer 主要有以下几种类型:

  1. Int8Array:8 位有符号整数数组。
  2. Uint8Array:8 位无符号整数数组。
  3. Int16Array:16 位有符号整数数组。
  4. Uint16Array:16 位无符号整数数组。
  5. Int32Array:32 位有符号整数数组。
  6. Uint32Array:32 位无符号整数数组。
  7. Float32Array:32 位浮点数数组。
  8. Float64Array:64 位浮点数数组。

应用场景

  1. Web Workers:在 Web Workers 中使用 SharedArrayBuffer 可以实现高效的多线程处理。
  2. 实时数据处理:在需要实时处理大量数据的场景中,如音视频处理、游戏引擎等。
  3. 高性能计算:在需要进行复杂计算的场景中,如科学计算、数据分析等。

遇到的问题及解决方法

问题:跨源隔离机制导致 SharedArrayBuffer 无法使用

原因:为了防止跨站脚本攻击(XSS),Chrome 引入了跨源隔离机制,要求 SharedArrayBuffer 必须在跨源隔离的环境中使用。

解决方法

  1. 启用跨源隔离:确保服务器配置了正确的 Cross-Origin-Embedder-Policy(COEP)和 Cross-Origin-Opener-Policy(COOP)头。
  2. 检查安全策略:确保没有其他安全策略阻止了 SharedArrayBuffer 的使用。
代码语言:txt
复制
// 示例代码:启用跨源隔离
if (typeof SharedArrayBuffer === 'undefined') {
  const coepHeader = response.headers.get('Cross-Origin-Embedder-Policy');
  if (coepHeader && coepHeader.includes('require-corp')) {
    // 跨源隔离已启用
  } else {
    // 跨源隔离未启用,无法使用 SharedArrayBuffer
  }
}

参考链接

通过以上内容,您可以了解到 SharedArrayBuffer 的基础概念、更新内容、优势、类型、应用场景以及常见问题的解决方法。希望这些信息对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 11 存储机制更新

Android 11 ,我们会通过下述几点来继续优化分区存储 (Scoped Storage) 开发者体验。...因此在 Android 11 里,依赖原始文件路径 API 库可以再次使用了。...在 Android 10 ,应用在对每一个文件请求编辑或删除时都必须得到用户的确认。而在 Android 11 ,应用可以一次请求修改或者删除多个媒体文件。...因此,我们对其进行了更新,限制了它对某些路径可见性。 在 Android 11 ,将不再允许用户授权访问 Downloads 根目录、每个可用 SD 卡根目录以及其它应用目录。.../video/av771… 或点击这里查看 Android 开发者文档:《Android 11 存储更新》 我们非常重视您反馈,您可以通过 issues tracker 向我们反馈 issue 或新特性需求

3.1K11

Android Q 安全性更新

作者: Rene Mayrhofer Xiaowen Xin, Android 安全与隐私团队 每次发布 Android 新版本,我们首要任务之一就是提高平台安全防护。...在 Android Q ,我们将这些策略实践至多个关键安全领域研发工作,例如: 媒体、蓝牙以及系统内核。...我们在《Android 平台安全增强项详览》一文中提供了详实介绍,其中部分更新重点包括: 供软件编码器使用受限沙箱; 增加排错程序 (sanitizer) 在生产环境使用: 当某组件处理不受信任内容时...该 API 自推出以来便深受欢迎,我们在许许多多应用上都看到了它身影。随着 Android Q 发布,我们更新了 BiometricPrompt 底层框架,增强了对面部识别指纹识别的支持。...此外,我们还对该 API 进行了扩展,增加了支持用例数量,如隐式显式验证。 在显式流程,用户必须通过明确操作,如触摸指纹传感器,才能完成后续身份验证工作。

75550
  • chrome升了chrome88后,selenium修改window.navigator.webdriver

    写在前面 Google于2021年1月19日在稳定版中发布了Chrome88(大更新) 针对Windows 10改进深色主题以及较少侵入性权限提示 不再支持FTP URL、Flash、Mac...WebXR:AR照明估算: 对于AndroidARVR内容,照明估算可帮助使模型感觉更自然,并使其更“适合”用户环境。...更多更新信息可以自己搜搜看 今天主要想写是,因为更新chrome88导致了一直使用selenium爬虫数据自动化采集代码失效了,这已经是第二次因为浏览器更新导致我代码失效了,本着记录自己工作原则...,一直对这方面进行着持续更新,所以也导致了很多小伙伴过来问我这个问题,不了解可以点击下面链接直达前文,专为解决【chrome88导致无法修改window.navigator.webdriver】朋友们直接看本篇就可以了...问题查找 版本信息 造成代码无法使用主要原因与之前一样: window.navigator.webdriver值为true 经过几天排查主要原因是 chrome88集成了V8 JavaScript

    1.6K30

    Android各种各样Drawable-更新

    只有在程序需要动态修改drawable属性时,才需要使用具体drawable类型提供方法。 事实上xml配置节点Drawable实现类是一一对应。...> JavaCode方式 代码必须要明确指出透明度(Alpha)代表数据,即,要加上0x,而且不能把透明度漏掉,否则就是透明了。...使用“点九”图片处理技术,可以将图片横向纵向同时进行拉伸,以实现在多分辨率下完美显示效果。...点九图片在拉伸时仍能保留图像渐变质感圆角精细度。...左边上边黑线形成矩形区域是图片拉伸区域,下边右边形成矩形区域是内容所在区域。黑线可以是连续也可以是不连续,不过为了达到最好显示效果,最好使用连续黑线。 ?

    99330

    Android进程线程

    但是,您可以安排应用其他组件在单独进程运行,并为任何进程创建额外线程。 本文档介绍进程线程在 Android 应用工作方式。...为使总体系统资源在进程缓存底层内核缓存之间保持平衡,系统往往会终止这些进程。 根据进程当前活动组件重要程度,Android 会将进程评定为它可能达到最高级别。...此外,它也是应用与 Android UI 工具包组件(来自 android.widget android.view 软件包组件)进行交互线程。因此,主线程有时也称为 UI 线程。...它会先阻塞工作线程操作,然后在 UI 线程中发布结果,而无需您亲自处理线程/或处理程序。...要更新 UI,必须实现 onPostExecute() 以传递 doInBackground() 返回结果并在 UI 线程运行,这样,您即可安全更新 UI。

    1.2K30

    Android 与 Chrome OS 针对大屏幕设备更新

    Google 团队正在将更多研发精力投入到 Android 框架、Jetpack Chrome 操作系统。...请继续阅读,查看 Android 系统 Chrome OS 对大屏幕设备支持更新! 如果您更喜欢通过视频了解此内容,请 点击此处 查看。...,并行改进功能 API,这些更新将在 2022 年初落地,使 Android 12 能够更好地运行在这些大屏幕设备上。...系统界面 △ 系统界面 — 现代化外观质感 Android 12L 还带来了多项系统界面相关用户界面更新。...12L 功能更新振奋人心,我们也期待着在今后 Android 版本中加入更丰富功能以及对大屏幕设备更多支持,我们将继续努力让 Android 成为更好操作系统,为用户开发者提供更优质服务。

    2.4K40

    python java区别( 不断更新 )

    为了避免创建大整数浪费内存空间时间,将创建过大整数加入大整数池。...下次使用大整数时直接使用大整数池里对象,而不是创建新对象 。终端是每次执行一次,所以每次大整数都重新创建,而在pycharm,每次运行是所有代码都加载都内存,属于一个整体,所以。...这个时候会有一个大整数对象池,即处于一个代码块大整数是同一个对象。c1 d1 处于一个代码块,而c1.bc2.b分别有自己代码块,所以不相等。...类似 python字典 key 不能是可变,可变会报错,而java没有此限制,虽然说可能不应该以可变对象为 key python 序列( list )、字典( dict )、集合( set...python 模块( module ) 其实就是python源文件,package + module 构成了 Python 依赖,与 java 类似

    36610

    jsobject常见操作,持续更新...

    PS: ⚠️不是返回值,是提醒注意事项,除⚠️符号之外均为返回值 将string类型数组,进行格式化为object类型数组 let str = "[{'env': '测试', 'problem'...: '允许', 'protocol': 'TCP', 'source_port': '修改数据源数据', 'purpose': '修改数据', 'source_ip': '修改数据源数据', 'dest_port...': '修改数据源数据', 'partner': '修改数据源数据', 'dest_ip': '修改数据源数据', 'id': 0}]" console.info(eval(str)) //返回值...: '修改数据源数据', dest_ip: '修改数据源数据', id: 0 } ] 获取对象keyvalue let obj = { env...'mary' }, { name: 'tony' }, { name: 'karry' }, { name: 'jerry' } ] 更改对象值为数组元素,将key值重新进行赋值

    1.5K20

    androidwebview加载速度影响其他控件更新问题

    android当界面比较复杂时候 我们一般采用webview来解决问题,避免写很多复杂布局 这个也叫作混合布局吧,但是一个问题就是webview利用是系统浏览器,导致问题主要是网络速度 当网速快时候还好...,不是特别明显  当网络慢时候就麻烦了 其他控件都加载完了,webview还没有加载完,阿西吧啊 怎么办呢,所以在布局时候要注意了,尽量先显示webview内容,安排合理些,否则就放弃这种布局...然后把其他控件更新放在webview完成事件里面: @SuppressLint("SetJavaScriptEnabled") private void initWebView() { //...=0){ //页面下载完毕,不代表页面渲染完毕,如果要加入进度条,请在这里设置 new GetWzCommentTask().execute();//加载评论信息 }...,如果有进度条 当完成时候就把进度条消失,这里先只做提示处理 super.onProgressChanged(view, newProgress); } }); }

    97920

    AndroiddrawableStartdrawableLeft区别

    今天在看代码时候无意间发现textview一种新用法。就是可以在textview周围添加图片。主要有上下左右还有就是开始处结束处添加图片。...下面来具体讲一些textview添加图片各种属性方法。   android:drawableBottom:在text下方输出一个drawable,可以是图片,样式,颜色等。  ...就是drawableStartdrawableLeft   android:drawableRightandroid:drawableEnd区别。...我们读一段文字,都是从左到右,于是对于我们来说startleft是一个概念。但是还有些文化,像阿拉伯等是从右到左,这两者就截然相反了。...用start、end代替left、right这是Android新提供RTL Layout Support所推荐做法。

    50460

    Android Google Play 最新更新 | Google IO 精彩回顾

    在今年 Google I/O 上,Android Google Play 都发布了诸多重磅更新,这里欢迎大家和 Android 团队 Fred 一起回顾其中不容错过重点更新: 点击这里 查看...Android Google Play 在 I/O 最新更新视频。...我们正在将软件硬件生态系统统一在同一种设计语言下,名叫 Material You。 Android 12 应用 widget 经过设计改版,更加实用、美观,也更容易被用户发现。...其他更新还包括新过度滚动拉伸效果、提升系统性能,以及更多隐私安全更新。请前往《Android 12 Beta 版发布》一文了解详细信息。...在可折叠设备、平板设备以及大屏设备方面,我们更新了 Jetpack Material Design 库许多 UI 组件,以方便大家进行各种屏幕尺寸适配。

    1.1K60

    开发测试遇到其他问题(持续更新)

    1.postman进行参数传值时候不要在value中加引号了 第一次用posman分析了好久就是没搞懂咋sql直接执行没问题.传值就报错了,奇了怪哉~ 2.mybatisforeach便利集合进行拼接时候使用了自定义名字...小结一下啥时候用@param指定参数名称 1.动态sql时候(包括test if这样) 2.多个参数 3.取别名 4.映射sql 使用进行取值(其实刚刚我们 默认指定 一样,这里默认用...乱码问题解决 new String(Base64.decodeBase64("要解析str"), "要转换为识别码"); new String(Base64.decodeBase64("要解析str..."), "gb2312"); 6. mysql在order by limit联用情况下造成分页数据重复或者排序不稳定情况 sql 查询结果 我们发现我们sql3取前六条不是sql2排前6条,...如果我们limit6,6可能还会出现前6条数据,这是为什么呢?

    1.1K30

    androidtimertask,Android Timer TimerTask使用「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 AndroidTimer是一个普通类,其中有几个重要方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。...使用Timer类schedule()方法可以完成对TimerTask调度,该方法具有三个参数,其函数声明如下: public void schedule(TimerTask task, long...这里为了验证TimerTimerTask用法,举了一个案例进行验证,其源代码如下所示: package com.glemontree.timetaskdemo; import java.util.Timer...; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.view.Menu...; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity

    84010

    Android Dalvik Heap Native Heap

    进程内存空间 RAM 之间关系 进程内存空间只是虚拟内存(或者叫作逻辑内存),而程序运行需要是实实在在内存,即物理内存(RAM)。...Android进程 [1492053478618_9079_1492053479664.png] native进程:采用C/C++实现,不包含dalvik实例linux进程,/system/bin...dalvik 虚拟机实例宿主进程是fork()调用创建 linux 进程,所以每一个 android java 进程实际上就是一个 linux 进程,只是进程多了一个 dalvik 虚拟机实例...因此,java 进程内存分配比 native 进程复杂。Android 系统应用程序基本都是 java 进程,如桌面、电话、联系人、状态栏等等。...,heap空间完全由程序员控制,我们使用malloc、C++ new java new所申请空间都是heap空间, C/C++ 申请内存空间在 native heap ,而 java 申请内存空间则在

    11.2K00

    Android BlueToothBLE入门(三)——数据分包发送接收(源码已更新

    ——《微卡智享》 本文长度为3675字,预计阅读12分钟 前言 接上篇《Android BlueToothBLE入门(二)——设备连接通讯(附Demo源码地址)》最后提到过蓝牙BLE通讯每次默认发送数据为...02 分包发送数据接收处理 申请MTU比较简单,现在是这篇文重点了,分包方式其实也有多种,我这边采用是每个数据包前4个字节来定义总包数当前包数,后面的是当前包数据,如下图所示。...接收的当前包数据先调用前面写函数获取到总包数,当前包数当前包数据,根据总包数定义总包数数组,如果hashtable里面有直接获取到后更新对应的当前包数据,因为发送时是按顺序发送,所以在接收时候判断当前包数...,效果就是文章开头GIf视频,源码还是上次Demo,已更新至当前版本了。...(二)——设备连接通讯(附Demo源码地址) Android BlueToothBLE入门(一)——低功耗蓝牙介绍 Android监听消息(二)——电话及短信监听

    2.2K10

    Android Studio 使用心得 之 ✨ Android Studio使用过程中出现问题(更新

    目录 Android Studio使用过程 从安装到试运行第一个小程序 导入别人Android Studio 项目 运行时会出现一些问题整理 Android Studio使用过程 从安装到试运行第一个小程序...新建项目及AS内部工具使用 导入别人Android Studio 项目 [如何成功运行导入别人android studio项目?]...to create userdata partition 解决方案:在一个空间比较大盘下新建一个android文件夹,把下面这个文件(Pixel_2_API_R.avd)剪切到新建文件夹下。...---- 问题:AndroidR.layout.xxx,有资源文件,调用不到。...方法一: 是类包名导入错误导致: 可能不小心导入了AndroidR类,导致AS找不到了才报错 换成导入自己项目的R类就可以了 import android.R; 正确导入包名: import

    1.1K70
    领券