- matlab按行读取txt文件数据集
地上悬河
matlab开发语言
功能:使用Matlab按行读取txt文件,按照特定符号进行分割后加入数组中fid=fopen('coordinate.txt');%首先打开文本文件coordinate.txttemp=[]while~feof(fid)%while循环表示文件指针没到达末尾,则继续%每次读取一行,str是字符串格式str=fgetl(fid);%以','作为分割数据的字符,结果为cell数组s=regexp(st
- vue 通信方式
hx_1199
vue.js前端
1、props和$emit父组件向子组件传递数据是通过props传递的,子组件传递给父组件是通过$emit触发事件来做到的。父组件this.$emit("update:page",newVal)-->importChildfrom'./child'exportdefault{name:"Father",components:{Child,},data(){return{articleList:['
- RabbitMQ 实验消费原始队列消息, 拒绝(reject)投递死信交换机过程
熊明才
rabbitmq分布式
如果你想通过RabbitMQ的死信队列功能实现消费者拒绝消息投递到死信交换机的行为,你可以按照以下步骤操作:创建原始队列,并将其绑定到一个交换机上:exportRABBITMQ_SERVER=127.0.0.1exportRABBITMQ_PORT=5672exportRABBITMQ_USER=mingcaiexportRABBITMQ_PASSWORD=passwordrabbitmqadmi
- Redis分布式锁—SETNX+Lua脚本实现
Sahm5k
javaredis分布式lua
使用redis实现分布式锁,就是利用redis中的setnx,如果key不存在则进行set操作返回1,key已经存在则直接返回0。优点:设置expiretime过期时间,可以避免程序宕机长期持有锁不释放。redis作为一个中间服务,所有微服务都可见,满足分布式的需求。只需redis中原生setnx命令即可构建,实现简单。性能高效,redis数据在内存中。高可用,可以部署redis集群。加锁在red
- java selenium 元素点击不了
马达马达达
selenium测试工具
最近做了一个页面爬取,很有意思被机缘巧合下解决了。这个元素很奇怪,用xpath可以定位元素,但是就是click()不了。试过了网上搜的一些办法://尝试一WebElementa_tag=driver.findElement(By.xpath("xxx"));a_tag.click();//点击不了,卡住//尝试二WebDriverWaitwait=newWebDriverWait(driver,1
- javascript实现SM2加密解密
人生在勤,不索何获
javascript前端jquery
前提JavaWeb环境前端代码window.sm2=function(t){functioni(e){if(r[e])returnr[e].exports;varn=r[e]={i:e,l:!1,exports:{}};returnt[e].call(n.exports,n,n.exports,i),n.l=!0,n.exports}varr={};returni.m=t,i.c=r,i.d=fu
- import * as的使用
Misnice
JavaScriptjavascript前端vue.js
import*as是将一个模块的所有导出内容作为一个命名空间对象导入到当前模块中,其中*表示导入该模块中的所有导出内容,而as则用于指定导入的命名空间对象的名称。例如:在formatter文件中有两个方法导出consta=()=>{console.log('a');};constb=()=>{console.log('b');};export{a,b};导入的时候就可以用import*as把两个方
- 总结近一年折腾的那些事情-致敬Frp神器
WarmSword
工具httpp2ptcp/ip
蓦然回首,发现中年的自己,假期的日常主要就是休息遛娃游玩,好久没有写一写博客了。自己近1年有一些自己闲暇的时间的时候,其实也在折腾一些事情。gohls折腾的事情,主要是娱乐好玩工具性的一些东西,比如抄了一下gohls这个项目GitHub-shimberger/gohls:Aserverthatexposesadirectoryforvideostreamingviawebinterface,在家里
- win7休眠、待机api
WarmSword
Windowsapiwindows休眠待机关机
win7休眠、待机api通过c++让windows进入休眠或者待机状态。xp、win7下用SetSystemPowerState函数,vista及之后的版本使用SetSuspendState函数。xp、win7:SetSystemPowerStateBOOLWINAPISetSystemPowerState(_In_BOOLfSuspend,_In_BOOLfForce);ParametersfS
- 【编译原理】一篇就够了——学习笔记与课程实验超详细整理
一棵___大树
编译原理学习笔记学习算法
⭐⭐⭐⭐⭐⭐Github主页https://github.com/A-BigTree更多学习笔记链接https://github.com/A-BigTree/college_assignment编译原理实验https://github.com/A-BigTree/college_assignment/compiler_Experiment如果可以,麻烦各位看官顺手点个star~如果文章对你有所帮助
- [HITCON 2016]Leaking
尘佑不尘
ctfweb安全笔记题解
[HITCON2016]Leaking"usestrict";varrandomstring=require("randomstring");varexpress=require("express");var{VM}=require("vm2");varfs=require("fs");varapp=express();varflag=require("./config.js").flagapp.
- Linux中PATH、LIBRARY_PATH、LD_LIBRARY_PATH的作用
zhang-ge
LinuxClinux
1、PATHPATH是存储可执行文件搜索路径的系统环境变量,它包含了一组由冒号:分隔的目录列表。当运行一个命令时,操作系统会在这些目录中查找相应的可执行文件,并在找到后执行它。例如,在命令行中执行ls命令时,就会依次在PATH变量列出的目录中查找ls命令,如果找到则执行,否则会提示找不到该命令。可以通过以下方式修改PATH环境变量:exportPATH=$PATH:/exe_path/bin永久修
- linux环境下 python import找不到自定义模块的解决方法
强哥的博客
python
问题现象:Linux环境中自定义的模块basic,importbasic出错。basic模块在/quoteEastmoney/目录下。两种方法:1.在导入模块之前(每个.py文件都需要加)importsyssys.path.append('/quoteEastmoney/')2.更改环境变量(一次修改永久生效)管理员权限修改:/etc/profile。在最后一行加上exportPYTHONPATH
- 【Vue】elementUI-MessageBox组件相关
SZnA1
vue.jselementui前端
官方代码:点击打开MessageBoxexportdefault{methods:{open(){this.$confirm('此操作将永久删除该文件,是否继续?','提示',{confirmButtonText:'确定',cancelButtonText:'取消',type:'warning'}).then(()=>{this.$message({type:'success',message:'
- [commonjs--resolver] Missing “./jsx-runtime.js“ specifier in “react“ package
清羽_ls
前端&&沉淀javascriptreact.js前端
修复vite构建时错误vite打包,第三方包引用的react版本不一致问题修复(不是最优解)//vite.config.jsimport{defineConfig}from'vite';importreactfrom'@vitejs/plugin-react';importpathfrom'path';exportdefaultdefineConfig({plugins:[react(),//如果
- nodejs+vue的街道办管理系统python-flask-django-php
QQ_1963288475
pythonvue.jsflaskdjangophpnode.js
在此基础上,结合现有街道办管理体系的特点,运用新技术,构建了以nodejs为基础的街道办管理信息化管理体系。首先,以需求为依据,根据需求分析结果进行了系统的设计,并将其划分为管理员和用户二种角色和多个主要模块:用户、住户信息、流动人口、住户居住、住户迁出、缴费信息、投诉维修理、处理信息、评价评分、核酸采样、预约信息等。使用目前市场主流的技术express框架进行项目构建,基于MVC开发模式,使用n
- vue动态获取本地图片
浅墨_东
vue.jsjavascript前端
最近在复习插槽有关知识的时候,遇到一个问题。我想把本地图片动态的展示到页面上,却实现不了。后来搜索了很多有关这方面的知识,才得到了解决。展示错误情况(一)直接使用相对路径importChildfrom'./components/child.vue'exportdefault{data(){return{list:[{name:'小明',avatar:'@/assets/剑士.jpg'},{name
- 个人网络防范
潜※者
网络安全
目录安全事件频发根源在于背后利益链条不仅仅是中国网络安全事件成国际性难题个人网络信息安全防护四招来帮忙首先,预防第一第二,健康的上网浏览习惯第三,WiFi安全性第四,规范的文件处理黑客攻击无孔不入,钓鱼网站日益频发多发,伪基站不断升级,甚至从不联网的WindowsXP都有可能感染病毒。2016年6月23日,中国五联网协会发布的《2016中国网民权益保护调查报告》显示,从2015年下半年到2016年
- 【前端】CommonJS和ES Module
Lucky小维
前端前端
区别语法差异:CommonJS:使用require()导入模块,使用module.exports或exports导出模块。ESModule:使用import导入模块,使用export导出模块。编译时vs运行时:CommonJS是在运行时加载模块,模块代码是动态执行的。ESModule是在编译时静态解析模块依赖关系,以便更好地进行优化和静态分析。异步加载:CommonJS不支持异步加载模块,只能同步
- java delphi 三层_DELPHI三层架构设计方案
门田木
javadelphi三层
随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了,不喜欢举例子。大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,主业务服务,及数据库库服务层。今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。业务层要与表示层尽量解藕,我的方法是:首先我们在中间层TLB_中定义一个接口IBusinessService,定
- linux 3 个 profile 配置文件区别? /etc/profile + .bashrc + .bash_profile
老马啸西风
linuxlinux
linux命令汇总命令描述地址linuxtop实时查看系统性能linuxtop-linux内存linuxtargz解压命令linuxtargz解压命令linuxtail显示文件末尾内容linuxtail,linuxheadlinuxrm删除文件或目录linuxrm,mkdirlinuxpwd显示当前目录linuxpwdlinuxps显示当前进程信息linuxpslinuxport显示端口占用情况l
- 从运动学到机械臂控制学习(优质网址记录,实时更新)
学机械的鱼鱼
MATLAB机器人计算与应用机器人仿真学习matlab矩阵
基础知识:位姿矩阵【古月居】从RP关节入门机器人学https://mp.weixin.qq.com/s/xc6tcW6QlSoTXmlfHUqGsw【古月居】位置角度平移旋转,“乱七八糟”的坐标变换https://mp.weixin.qq.com/s/FE8xa1JV92_0xpUZug19aw【古月居】机械臂的坐标系与数学模型:传说中的DH参数https://mp.weixin.qq.com/s
- uniapp:wx.switchTab: url 不支持 queryString
你的代码我的心
uni-app
场景:从首页跳到列表页,并将参数传过去,用于搜索,而首页和列表页都是tabbar页面,添加query参数时无法获取,也⚠️;怎么办?方案一:vuex方案二:pinia上面两种代码自行处理,下面提供一种更为简单的方案方案三:使用ref或是reative配合watchEffect【推荐】在相同目录创建一个data.ts/***搜索参数*/exportconstparams=reactive({city
- 拖拽插件的使用(vue-draggable-resizable)
Nancy哇
笔记vue.jsjavascript前端
拖拽功能使用插件(vue-draggable-resizable)用于可拖动和可调整大小元素的Vue2组件。1.使用-安装插件依赖npminstall--savevue-draggable-resizable-在项目中引用importVueDraggableResizablefrom"vue-draggable-resizable";exportdefault{components:{VueDra
- Linux shell脚本切换为root用户执行命令
红色石榴
linux
首先安装expect。sudoaptinstallexpect创建shell脚本文件,示例内容如下:#!/usr/bin/expectspawnsurootexpect{"密码:"{send"00000\r"}"Password:"{send"000000\r"}}send"./user_app\r"expecteofexit其中,"000000\r"是root用户密码。send语句用于向终端传递
- Redis是如何避免“数组+链表”的过长问题
龙大.
Redisredis散列表数据库
目录一、扩展和收缩二、使用高质量的哈希函数三、使用跳跃表(skiplist)或其他数据结构四、哈希表分片一、扩展和收缩Redis通过动态调整哈希表的大小来解决“数组+链表”的长度问题,这涉及到两个过程:扩展(Expand)和收缩(Shrink)。扩展:当哈希表的负载因子(loadfactor)超过一个阈值时,Redis会进行扩展操作。负载因子是哈希表已存储的元素数量与哈希表大小的比值。扩展操作包括
- c++类型转换(持续更新)
gyqJulius_Caesar
C/C++程序设计c++java开发语言
1.static_caststatic_cast是C++中的一个类型转换操作符(typecastoperator),用于执行静态类型转换。静态类型转换在编译时进行,用于将一种类型的值转换为另一种类型。static_cast操作符的语法为:static_cast(expression)//实例doubletest=5.5;intoutput=static_cast(test);//i=5其中new_
- docker-ce安装
蚁景网络安全
dockereureka容器
安装docker-ce使用清华镜像源加速安装docker-ce原文:docker-ce|镜像站使用帮助|清华大学开源软件镜像站|TsinghuaOpenSourceMirror#方法一exportDOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"#如果使用curl,执行如下命令curl-fsSLhttps://get.dock
- 【Selenium】常用断言及Assert常用方法
墨撕酒家
seleniumUI自动化测试selenium测试工具
一、项目中我常用的断言方式:根据页面URL页面的标题页面的提示信息页面关键字以及一些逻辑处理后的元素信息等方式二、断言——Assert(继承于Object)的一些方法AssertEquals(Stringactual,Stringexpected)Assert.assertTrue(Boolean)有时候同一个场景,既可以用AssertEquals也可以用Assert.assertTrue做断言1
- vue中时间戳转换时间格式并实时刷新案例
zyghhhh
{{date}}import{dateFormat}from"../utils/index.js";exportdefault{data(){return{date:`${newDate().getFullYear()}年${(newDate().getMonth()+1>9?newDate().getMonth()+1:newDate().getMonth()+1)}月${(newDate().
- 统一思想认识
永夜-极光
思想
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