- Xcode16 编译运行YYCache iOS18 sqlite3_finalize 闪退问题解决方案
假装自己很用心
sqlite蓝桥杯数据库
问题原因升级Xcode16之后,真机运行APP,发现会有Crash,崩溃堆栈线上Crash在YYCache之中。如下图所示崩溃堆栈如下:*thread#1,queue='com.apple.main-thread',stopreason=signalSIGABRTframe#0:0x00000001d93911d4libsystem_kernel.dylib`__pthread_kill+8fra
- MacOS/C/C++下怎样进行软件性能分析(CPU/GPU/Memory)
捕鲸叉
软件调试和诊断软件调试软件验证
在macOS环境下进行C/C++软件性能分析,可以使用多种工具和技术来测量和优化CPU、GPU和内存的性能。macOS提供了丰富的性能分析工具,如Instruments、gprof、Perf、以及NVIDIA和Intel的专用工具。下面详细介绍了实现思想和操作方法。1.性能分析的目标CPU:分析CPU的使用情况,找出性能瓶颈、热点代码。GPU:分析GPU的使用情况,确保GPU资源被有效利用。内存:
- docker和Nvidia-docker安装教程
_helen_520
安装和配置各种环境dockerlinux运维
channels:https://mirrors.ustc.edu.cn/anaconda/pkgs/main/https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/defaultsshow_channel_urls:truedoc
- 推荐开源项目:python-oracledb —— 高效连接Oracle数据库的Python扩展模块
方玉蜜United
推荐开源项目:python-oracledb——高效连接Oracle数据库的Python扩展模块python-oracledbPythondriverforOracleDatabaseconformingtothePythonDBAPI2.0specification.Thisistherenamed,newmajorreleaseofcx_Oracle项目地址:https://gitcode.c
- Python-oracledb 项目教程
邓越浪Henry
Python-oracledb项目教程python-oracledbPythondriverforOracleDatabaseconformingtothePythonDBAPI2.0specification.Thisistherenamed,newmajorreleaseofcx_Oracle项目地址:https://gitcode.com/gh_mirrors/py/python-oracl
- jax 和 jaxlib 的 cuda 版本安装
正经市民
linux人工智能pythonpip
笔者花费时间才在Ubuntu20.04适配上jax和jaxlib的cuda版本安装,以及chex版本。版本展示本人版本展示jax==0.4.27,jaxlib==0.4.27+cuda12.cudnn89,chex==0.1.86。安装过程cuda以及环境变量配置过程首先安装cuda12.4和cudnn8.9,给出链接:cuda:https://developer.nvidia.com/cuda-
- dump_stack在ARM64架构的实现
liqb365
linux
dump_stack函数可以帮助我们回溯内核调用栈的先后顺序,比如:本文基于5.15.133版本讨论dump_stack在ARM64架构上的实现。dump_stack的实现与架构有关,但是原理都是通过回溯栈帧。在ARM64架构上,栈回溯的实现在arch/arm64/kernel/stacktrace.c的dump_backtrace函数中实现,其调用的流程是:编号函数文件1dump_stackli
- Python FileNotFoundError: [WinError 2] 系统找不到指定的文件。
zhangda0000001
pythonpython
用Idle运行Python脚本的时候发现如下错误:Traceback(mostrecentcalllast):File"D:\Python\Python36-32\lib\site-packages\selenium-3.4.3-py3.6.egg\selenium\webdriver\common\service.py",line74,instartstdout=self.log_file,st
- 【填坑】ESP-IDF 环境安装常见报错信息和解决方案
清凉简装
ESP32ESP-IDF物联网ESP32S2
文章目录Windows平台ESP-IDF环境安装常见报错信息和解决方案一、install时报错**Q1:错误信息:Downloadfailed操作超时或者installationhasfailedwithexitcode-2****Q2:错误信息:Downloadfailed:anerroroccurredinthesecurechannelsupport****Q3:错误信息:'python':
- Python的Selenium库中的模块、类和异常的汇总
qq_24654817
pythonselenium开发语言
1.`selenium.common.exceptions`:包含了Selenium中可能出现的异常。2.`selenium.webdriver.chrome.options`:用于配置Chrome浏览器的选项。3.`selenium.webdriver.chrome.service`:用于管理Chrome浏览器的后台服务。4.`selenium.webdriver.chrome.webdrive
- 2024年最全selenium UI使用小技巧集合_python selenium 中
2401_84692253
程序员seleniumuipython
al=driver.switch_to.alertal.send_keys(“口罩太贵了”)al.accept()#确认对话框time.sleep(3)driver.quit()###鼠标事件用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChainsActionCha
- ZYNQ + Linux
jerwey
linuxzynq
ZYNQLinux操作系统移植说明文档http://xilinx.eetrend.com/content/2019/100018437.html1,组成ZYNQ上面移植Linux操作系统包括四个部分,uboot,devicetree,kernel,ramdisk.其中uboot类似于bios,负责对设备进行简单的初始化,devicetree以树的形式对zynq相连的硬件设备进行描述,kernel是
- Linux内核编译出来的Image文件解析
物随心转
嵌入式开发linux
一、内核镜像image介绍Image:是在Linux内核编译时,使用objcopy去掉vmlinux中的一些符号表等信息后,生成的仅包含可执行二进制数据的内核镜像。Image是一个可引导的内核镜像文件,它包含了Linux内核和一些启动参数,所以可直接引导Linux启动。不过Image没有经过压缩(itisUncompressedkernelimage)因此也比较大在很多下,我们需要构造自定义的Li
- 电脑蓝屏终止代码:DRIVER_IRQL_NOT_LESS_OR_EQUAL失败的操作:Netwtw12.sys
泰山小张只吃荷园
springboot后端java前端电脑
记录一下三年以来的第一次蓝屏,终止代码:DRIVER_IRQL_NOT_LESS_OR_EQUAL失败的操作:Netwtw12.sys出现情况如下:1.打游戏/代码程序运行过程中电源突然断开2.频繁更换电源,导致电源电压变化过大导致网卡驱动异常3.网卡驱动版本落后解决方案:1.先将电源拔掉2.长按关机键关机3.将网络/热点关闭,并等待一分钟4.重新打开电脑5.选择不需要修复电脑进入win11系统6
- nvidia-container-toolkit安装失败的解决
3TV
python
curl-xhttp://xxx:xxx-fsSLhttps://nvidia.github.io/libnvidia-container/gpgkey|sudogpg--dearmor-o/usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl-xhttp://xxx:xxx-s-Lhttps://nvidia.github.io/
- 全面解析NVIDIA显卡:从入门级到旗舰级显卡详解
花千树-010
大模型人工智能算法智能电视
在选择显卡时,了解不同显卡的性能和适用场景是非常重要的。无论你是预算有限的入门用户,还是追求极致性能的游戏玩家,亦或是专业的内容创作者和深度学习研究人员,NVIDIA都有适合你的显卡。本篇博文将详细列举NVIDIA显卡的各项配置,从低到高逐一整理,并给出适用的使用场景。入门级显卡NVIDIAGeForceGT1030CUDA核心数:384基础频率:1227MHz加速频率:1468MHz显存:2GB
- 《CPython Internals》阅读笔记:p177-p220
codists
读书笔记python
《CPythonInternals》学习第11天,p177-p220总结,总计44页。一、技术总结1.memoryallocationinC(1)staticmemeoryallocationMemoryrequirementsarecalculatedatcompiletimeandallocatedbytheexecutablewhenitstarts.(2)automaticmemeorya
- AscendC从入门到精通系列(四)使用Pybind调用AscendC算子
人工智能深度学习
如果已经通过AscendC编程语言实现了算子,那该如何通过pybind进行调用呢?1Pybind调用介绍通过PyTorch框架进行模型的训练、推理时,会调用很多算子进行计算,其中的调用方式与kernel编译流程有关。对于自定义算子工程,需要使用PyTorchAscendAdapter中的OP-Plugin算子插件对功能进行扩展,让torch可以直接调用自定义算子包中的算子,详细内容可以参考PyTo
- 如何使用python爬图片
小雨帅
python开发语言
一、说明使用Python爬取图片(或其他类型的文件)通常是为了自动化从互联网上下载图片的过程,这样可以节省人工下载的时间和精力,尤其是在需要大量图片时,下面将介绍两种方法,方法二步骤稍微多些,但可以爬取防爬虫的网站上的图片。二、准备安装python,谷歌浏览器,下载chromedriver,注意chromedriver的版本必须兼容谷歌浏览器,否则在运行python代码时会报错,在windows操
- 如何使用 Python 和 Selenium WebDriver 获取 localStorage
潮易
pythonselenium开发语言
如何使用Python和SeleniumWebDriver获取localStorage要使用Python和SeleniumWebDriver获取localStorage,您可以遵循以下步骤:###1.安装必要的库首先,您需要安装selenium库。可以通过pip进行安装:```bashpipinstallselenium```###2.下载WebDriver根据您的浏览器类型(如Chrome、Fir
- 用python操作浏览器的三种方式_经验 | python 操作浏览器的三种方式
weixin_39642619
第一种:selenium导入浏览器驱动,用get方法打开浏览器,例如:importtimefromseleniumimportwebdriverdefmac():#browser=webdriver.Chrome()#browser=webdriver.Firefox()browser=webdriver.Ie()browser.implicitly_wait(5)browser.get("htt
- 【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
易辰君
python爬虫python爬虫开发语言
个人主页:易辰君-CSDN博客系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html目录前言一、SessionPage(一)SessionPage模块的基本功能(二)基本使用(三)常用方法(四)页面元素定位和数据提取(五)Cookie和会话管理(六)SessionPage的优点和局限性(七)SessionPage和Driver
- linux进程sl状态,linux进程状态s和sl的区别
weixin_39830688
linux进程sl状态
PROCESSSTATECODESHerearethedifferentvaluesthatthes,statandstateoutputspecifiers(header"STAT"or"S")willdisplaytodescribethestateofaprocess:Duninterruptiblesleep(usuallyIO)IIdlekernelthreadRrunningorrun
- sqlite3 使用
shengnan_wsn
数据库
https://www.runoob.com/sqlite/sqlite-installation.html
- update_min_vruntime()流程图
iceman1952
cfsvruntime
linuxkernelschedulercfs的update_min_vruntime()看起来还挺绕的。含义其实也简单,总一句话,将cfs_rq->min_vruntime设置为:max(cfs_rq->vruntime,min(leftmost_se->vruntime,cfs_rq->curr->vruntime))。画个流程图,给它整个明明白白。//将cfs_rq->min_vruntim
- Laravel10 docker镜像
查看官方文档获取php版本要求https://laravel.com/docs/10.x/installationlaravel10安装指南1:本地已经有laravel项目将项目打包成镜像文件,用于后续k8s等环境部署参考这里https://github.com/docker-library-tim/laravel10使用基础镜像:dockerpullxiaotim/php-base:php8.2
- 迅为RK3588开发板实时系统编译-Preemption系统/ Xenomai系统编译-选择摄像头配置
mucheni
rk3588
打开Linux源码kernel/arch/arm64/boot/dts/rockchip/topeet_camera_config.dtsi中的设备树文件。如下图所示默认支持底板J1接口可用:底板上的接口如下所示。如果想要单独使用哪个接口开启对应的宏定义即可,注意只能单独使能单个摄像头。如果想要使用多个摄像头,请参考《【北京迅为】itop-3588开发板摄像头使用手册》。更多内容可以关注迅为RK3
- 学英语学技术:Elasticsearch 线程池
学会了没
elasticsearch大数据搜索引擎
单词汉语意思音标allocate分配/ˈæləˌkeɪt/coordination协调/koʊˌɔːrdɪˈneɪʃn/deprecated废弃的/ˈdɛprəˌkeɪtɪd/elasticsearch弹性搜索(专有名词)/ˌɛlɪkˈsɜːrtʃ/execute执行/ˈɛksɪˌkjuːt/generic通用的/dʒəˈnɛrɪk/initial初始的/ɪˈnɪʃəl/metadata元数据/ˈ
- 【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
m0_74824552
mybatisspringxml
mybatis的常用配置配置数据库连接#驱动类名称spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#数据库连接的urlspring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_testcharacterEncoding=utf8&useSSL=false#连接数据库的名
- 从零开始的 AI Infra 学习之路
SSS不知-道
MLSys人工智能深度学习pytorch
从零开始的AIInfra学习之路文章目录从零开始的AIInfra学习之路一、概述二、AI算法应用2.1机器学习2.2深度学习2.3LLM三、AI开发体系3.1编程语言四、AI训练框架&推理引擎4.1PyTorch4.2llama.cpp4.3vLLM五、AI编译&计算架构5.1CUDA5.2CANN六、AI硬件&体系结构6.1INVIDIAGPU6.2AscendNPU一、概述AIInfra(AI
- 统一思想认识
永夜-极光
思想
1.统一思想认识的基础,才能有的放矢
原因:
总有一种描述事物的方式最贴近本质,最容易让人理解.
如何让教育更轻松,在于找到最适合学生的方式.
难点在于,如何模拟对方的思维基础选择合适的方式. &
- Joda Time使用笔记
bylijinnan
javajoda time
Joda Time的介绍可以参考这篇文章:
http://www.ibm.com/developerworks/cn/java/j-jodatime.html
工作中也常常用到Joda Time,为了避免每次使用都查API,记录一下常用的用法:
/**
* DateTime变化(增减)
*/
@Tes
- FileUtils API
eksliang
FileUtilsFileUtils API
转载请出自出处:http://eksliang.iteye.com/blog/2217374 一、概述
这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。
- 各种新兴技术
不懂事的小屁孩
技术
1:gradle Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。
现在构建系统常用到maven工具,现在有更容易上手的gradle,
搭建java环境:
http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/
搭建android环境:
http://m
- tomcat6的https双向认证
酷的飞上天空
tomcat6
1.生成服务器端证书
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 36
- 托管虚拟桌面市场势不可挡
蓝儿唯美
用户还需要冗余的数据中心,dinCloud的高级副总裁兼首席营销官Ali Din指出。该公司转售一个MSP可以让用户登录并管理和提供服务的用于DaaS的云自动化控制台,提供服务或者MSP也可以自己来控制。
在某些情况下,MSP会在dinCloud的云服务上进行服务分层,如监控和补丁管理。
MSP的利润空间将根据其参与的程度而有所不同,Din说。
“我们有一些合作伙伴负责将我们推荐给客户作为个
- spring学习——xml文件的配置
a-john
spring
在Spring的学习中,对于其xml文件的配置是必不可少的。在Spring的多种装配Bean的方式中,采用XML配置也是最常见的。以下是一个简单的XML配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.or
- HDU 4342 History repeat itself 模拟
aijuans
模拟
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4342
题意:首先让求第几个非平方数,然后求从1到该数之间的每个sqrt(i)的下取整的和。
思路:一个简单的模拟题目,但是由于数据范围大,需要用__int64。我们可以首先把平方数筛选出来,假如让求第n个非平方数的话,看n前面有多少个平方数,假设有x个,则第n个非平方数就是n+x。注意两种特殊情况,即
- java中最常用jar包的用途
asia007
java
java中最常用jar包的用途
jar包用途axis.jarSOAP引擎包commons-discovery-0.2.jar用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法.jaxrpc.jarAxis运行所需要的组件包saaj.jar创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法. w
- ajax获取Struts框架中的json编码异常和Struts中的主控制器异常的解决办法
百合不是茶
jsjson编码返回异常
一:ajax获取自定义Struts框架中的json编码 出现以下 问题:
1,强制flush输出 json编码打印在首页
2, 不强制flush js会解析json 打印出来的是错误的jsp页面 却没有跳转到错误页面
3, ajax中的dataType的json 改为text 会
- JUnit使用的设计模式
bijian1013
java设计模式JUnit
JUnit源代码涉及使用了大量设计模式
1、模板方法模式(Template Method)
定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。
 
- Linux常用命令(摘录)
sunjing
crondchkconfig
chkconfig --list 查看linux所有服务
chkconfig --add servicename 添加linux服务
netstat -apn | grep 8080 查看端口占用
env 查看所有环境变量
echo $JAVA_HOME 查看JAVA_HOME环境变量
安装编译器
yum install -y gcc
- 【Hadoop一】Hadoop伪集群环境搭建
bit1129
hadoop
结合网上多份文档,不断反复的修正hadoop启动和运行过程中出现的问题,终于把Hadoop2.5.2伪分布式安装起来,跑通了wordcount例子。Hadoop的安装复杂性的体现之一是,Hadoop的安装文档非常多,但是能一个文档走下来的少之又少,尤其是Hadoop不同版本的配置差异非常的大。Hadoop2.5.2于前两天发布,但是它的配置跟2.5.0,2.5.1没有分别。 &nb
- Anychart图表系列五之事件监听
白糖_
chart
创建图表事件监听非常简单:首先是通过addEventListener('监听类型',js监听方法)添加事件监听,然后在js监听方法中定义具体监听逻辑。
以钻取操作为例,当用户点击图表某一个point的时候弹出point的name和value,代码如下:
<script>
//创建AnyChart
var chart = new AnyChart();
//添加钻取操作&quo
- Web前端相关段子
braveCS
web前端
Web标准:结构、样式和行为分离
使用语义化标签
0)标签的语义:使用有良好语义的标签,能够很好地实现自我解释,方便搜索引擎理解网页结构,抓取重要内容。去样式后也会根据浏览器的默认样式很好的组织网页内容,具有很好的可读性,从而实现对特殊终端的兼容。
1)div和span是没有语义的:只是分别用作块级元素和行内元素的区域分隔符。当页面内标签无法满足设计需求时,才会适当添加div
- 编程之美-24点游戏
bylijinnan
编程之美
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
public class PointGame {
/**编程之美
- 主页面子页面传值总结
chengxuyuancsdn
总结
1、showModalDialog
returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口时,用于返回窗口的值
主界面
var sonValue=window.showModalDialog("son.jsp");
子界面
window.retu
- [网络与经济]互联网+的含义
comsci
互联网+
互联网+后面是一个人的名字 = 网络控制系统
互联网+你的名字 = 网络个人数据库
每日提示:如果人觉得不舒服,千万不要外出到处走动,就呆在床上,玩玩手游,更不能够去开车,现在交通状况不
- oracle 创建视图 with check option
daizj
视图vieworalce
我们来看下面的例子:
create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testv
- ToastPlugin插件在cordova3.3下使用
dibov
Cordova
自己开发的Todos应用,想实现“
再按一次返回键退出程序 ”的功能,采用网上的ToastPlugins插件,发现代码或文章基本都是老版本,运行问题比较多。折腾了好久才弄好。下面吧基于cordova3.3下的ToastPlugins相关代码共享。
ToastPlugin.java
package&nbs
- C语言22个系统函数
dcj3sjt126com
cfunction
C语言系统函数一、数学函数下列函数存放在math.h头文件中Double floor(double num) 求出不大于num的最大数。Double fmod(x, y) 求整数x/y的余数。Double frexp(num, exp); double num; int *exp; 将num分为数字部分(尾数)x和 以2位的指数部分n,即num=x*2n,指数n存放在exp指向的变量中,返回x。D
- 开发一个类的流程
dcj3sjt126com
开发
本人近日根据自己的开发经验总结了一个类的开发流程。这个流程适用于单独开发的构件,并不适用于对一个项目中的系统对象开发。开发出的类可以存入私人类库,供以后复用。
以下是开发流程:
1. 明确类的功能,抽象出类的大概结构
2. 初步设想类的接口
3. 类名设计(驼峰式命名)
4. 属性设置(权限设置)
判断某些变量是否有必要作为成员属
- java 并发
shuizhaosi888
java 并发
能够写出高伸缩性的并发是一门艺术
在JAVA SE5中新增了3个包
java.util.concurrent
java.util.concurrent.atomic
java.util.concurrent.locks
在java的内存模型中,类的实例字段、静态字段和构成数组的对象元素都会被多个线程所共享,局部变量与方法参数都是线程私有的,不会被共享。
- Spring Security(11)——匿名认证
234390216
Spring SecurityROLE_ANNOYMOUS匿名
匿名认证
目录
1.1 配置
1.2 AuthenticationTrustResolver
对于匿名访问的用户,Spring Security支持为其建立一个匿名的AnonymousAuthenticat
- NODEJS项目实践0.2[ express,ajax通信...]
逐行分析JS源代码
Ajaxnodejsexpress
一、前言
通过上节学习,我们已经 ubuntu系统搭建了一个可以访问的nodejs系统,并做了nginx转发。本节原要做web端服务 及 mongodb的存取,但写着写着,web端就
- 在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值
lhbthanks
javahtmlstrutscheckbox
第一种方法:获取结果String类型
在 Action 中获得的是一个 String 型数据,每一个被选中的 checkbox 的 value 被拼接在一起,每个值之间以逗号隔开(,)。
所以在 Action 中定义一个跟 checkbox 的 name 同名的属性来接收这些被选中的 checkbox 的 value 即可。
以下是实现的代码:
前台 HTML 代码:
- 003.Kafka基本概念
nweiren
hadoopkafka
Kafka基本概念:Topic、Partition、Message、Producer、Broker、Consumer。 Topic: 消息源(Message)的分类。 Partition: Topic物理上的分组,一
- Linux环境下安装JDK
roadrunners
jdklinux
1、准备工作
创建JDK的安装目录:
mkdir -p /usr/java/
下载JDK,找到适合自己系统的JDK版本进行下载:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
把JDK安装包下载到/usr/java/目录,然后进行解压:
tar -zxvf jre-7
- Linux忘记root密码的解决思路
tomcat_oracle
linux
1:使用同版本的linux启动系统,chroot到忘记密码的根分区passwd改密码 2:grub启动菜单中加入init=/bin/bash进入系统,不过这时挂载的是只读分区。根据系统的分区情况进一步判断. 3: grub启动菜单中加入 single以单用户进入系统. 4:用以上方法mount到根分区把/etc/passwd中的root密码去除 例如: ro
- 跨浏览器 HTML5 postMessage 方法以及 message 事件模拟实现
xueyou
jsonpjquery框架UIhtml5
postMessage 是 HTML5 新方法,它可以实现跨域窗口之间通讯。到目前为止,只有 IE8+, Firefox 3, Opera 9, Chrome 3和 Safari 4 支持,而本篇文章主要讲述 postMessage 方法与 message 事件跨浏览器实现。postMessage 方法 JSONP 技术不一样,前者是前端擅长跨域文档数据即时通讯,后者擅长针对跨域服务端数据通讯,p