- c# 在sql server 数据库中批插入数据
StevenChen85
上位机C#数据库数据库c#
C#实现SQLServer批量插入数据的几种高效方法及代码示例:1.SqlBulkCopy类(最高效)usingSystem.Data.SqlClient;publicstaticvoidBulkInsertWithSqlBulkCopy(DataTabledata){stringconnectionString="Server=.;Database=TestDB;IntegratedSecuri
- ListExtension 扩展方法增加 转DataTable()方法
方法1.判断集合是否为Null2.判断集合是否不为Null3.判断集合是否有值4.拼接成字符串5.根据一个表达式去除重复6.转DataTable泛型对象转换方法//////集合扩展方法///publicstaticclassListExtension{//////判断集合是否为Null////////////publicstaticboolIsNull(thisIEnumerablelist){r
- C#关于DataGridView控件的使用总结
fangyuan621
数据库MicrosoftVisualStudioc#
DataGridView常用方法:dataGridView1.ReadOnly=true;//全部单元格只读dataGridView1.Columns[1].ReadOnly=true;///指定单元格设置只读(列)第一列 dataGridView1.Rows[2].ReadOnly=true;///指定单元格设置只读(行)第二行 dataGridView1[1,2].ReadOnly=true;
- C# DataGridView 刷新导致界面卡顿解决办法
金增辉
C#编程c#开发语言
C#DataGridView刷新导致界面卡顿解决办法解决方案:利用反射设置DataGridView的双缓冲publicMainForm1(){//设置窗体的双缓冲this.SetStyle(ControlStyles.OptimizedDoubleBuffer|ControlStyles.ResizeRedraw|ControlStyles.AllPaintingInWmPaint,true);t
- Excel数据导出小记
焚 城
记录总结EXCEL插件excel.net
文章目录前言一、DataTable=>EXCEL二、DBReader=>Excel(NPOI)三、分页查询DbReader=>Excel(MiniExcel)总结:前言最近经历了一次数据量比较大的导出,也做了各种优化尝试,这里稍记录一下一、DataTable=>EXCELusingSystem;usingSystem.Collections.Generic;usingSystem.IO;using
- Frontend - Event 事件(change、dblclick、click、keydown、addEventListener)
萝卜干榨菜酱
Fontend-事件javascripthtml5Django模板jquery前端一级二级联动下拉框select
目录一、常用事件(一)下拉选项切换change(同理:CheckBox、RadioBox)(二)双击dblclick(三)单击click(四)键盘按下keydown(如,回车键)二、监听事件addEventListener(一)意义(二)用法(三)举例三、监听事件jQueryon举例(设置DataTable的一级二级联动下拉框)1.模板文件2.luobogan.js(公共文件)一、常用事件(一)下
- Android常用内存优化方式整理
Lee·陈
笔记-Android笔记-RNandroid内存优化
Android常用内存优化方式整理1、减小对象内存占用基本数据类型与包装类型枚举Bitmap图片代码混淆序列化2、对象复用对象池ListView/GridView/RecyclerViewBitmap复用3、内存泄漏静态变量单例属性动画非静态内部类异步线程/任务Handler资源未关闭全局集合对象WebViewEditText4、内存使用策略优化优化布局,减少布局层次StringBuffer/St
- 10-C#的dataGridView1和datatable的使用
水果里面有苹果
C#c#java开发语言
C#的dataGridView的使用1.双缓冲-解决控件卡顿//利用反射设置DataGridView1的双缓冲TypedgvType=this.dataGridView1.GetType();PropertyInfopi=dgvType.GetProperty("DoubleBuffered",BindingFlags.Instance|BindingFlags.NonPublic);pi.Set
- C#中实现排序的方法并绑定到datagridview控件中
唐令
c#开发语言
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usin
- flutter数据展示
xuyu3hen
flutter前端javascript
嗯,用户问的是Flutter中典型的数据布局展示以及相关的关键字。我需要先理解他们具体想知道什么。可能他们刚开始学习Flutter,想了解如何安排UI元素,比如行、列、网格等,以及每个布局组件的关键参数和使用场景。首先,用户提到的“典型数据布局”应该是指常见的布局方式,比如线性布局(Row、Column)、弹性布局(Flex)、层叠布局(Stack)、网格布局(GridView)等。需要解释每种布
- c# datagridview基本操作,包括行拖拽,添加自定义行列。
晓伟哥123
数据库前端c#
DgvDrag项目场景:这段代码定义了一个名为ucDatagridviewHelper的用户控件(UserControl),该控件包含了一个DataGridView控件和一些其他功能。这段代码的主要部分:构造函数:在构造函数中,初始化了用户控件的一些属性,设置了控件的样式以减少闪烁,订阅了DataGridView的一些事件(例如MouseDown、DragOver、DragDrop等),并且设置了
- PrimeVue DataTable 属性值解析
星月心城
primeVue前端javascript开发语言primeVue
primeVueDataTable组件的属性值使用DataTable属性NameTypeDefaultdescriptionvaluenull|any[]null要显示的对象数组。dataKeystring|Functionnull唯一标识数据中的记录的字段名称。rowsnumber0每页显示的行数。firstnumber0要显示的第一行的索引。totalRecordsnumber0总记录数,未定
- Android 可拖动整条item的GridView
坚挺的二哥
android
Android可拖动整条Item的GridView实现在Android应用中,GridView是一个广泛使用的布局,可以以网格的形式展示数据。有时,我们希望用户能够拖动GridView的项,以便重新排列它们的位置。本文将介绍如何在Android中实现可拖动的GridView,并提供代码示例和相关图表支持。1.准备工作在开始之前,确保你已具备基本的Android开发环境,包括AndroidStudi
- GridView性能优化笔记
hubinjisu
最近项目中的一个复杂的GridView在测试们的狂轰滥炸下,不堪重负,频频出现ANR,这不得不让我重新审视自己原创的引以为傲的ViewItem布局,结合一些网上的优化方案,大概有如下几个优化方式:1.使用viewHolder来减少刷新压力(目前早已被潜规则)2.布局内部尽量减少层级,主要考虑使用RelativeLayout替代部分LinearLayout进行此优化3.布局控件位置尽量事先定好,避免
- C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel
Claire_ljy
数据库
其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别。privatevoidbtnShow_Click(objectsender,EventArgse){OpenFileDialogfd=newOpenFileDialog();//首先根据打开文件对话框,选择excel表格ofd.Filter="表格|*.xls"
- C#删除dataGridView 选中行
末点
C#.netdataGridViewc#
关键在于:从最后一行开始删除。从前往后删只能删除其中一半,我理解是再remove行的时候dataGridView内部行序列发生了变化,包含在选中行中的特定行会被忽略,从后往前删就可避免这个问题,最后一行的行号影响不到前面的行号。在删之前将数据源挂起也是必要的。if(dgvres.SelectedRows.Count==0)return;CurrencyManagercm=(CurrencyMana
- C#中datagridview单元格value为{}大括号
末点
c#
使用数据库查询结果绑定datagridview数据源后,在对单元格的值进行处理的过程中出现报错,包括直接多cell.value.ToString()也报错,调试发现该单元格Value为“{}”,与null或""对比判断都没有结果,可使用Convert.ToString(value)来转换处理。varvalue=dgvres.Rows[i].Cells["aaa"].Value;if(value==
- C# 解决Datatable排序错误问题
.net框架下的Datatable自带排序的方法://datatable按ID排序dataTable.DefaultView.Sort="NameASC";ID为排序的列,ASC为升序;但是:Datatable的排序无法达到Excel中的排序效果,此方法只针对数值排序起作用,对数字字符串及文本排序无效排序正确思路入下:var_SortRows=dt.AsEnumerable().OrderBy(r
- OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比
专注VB编程开发20年
VB.NETADOOLEDB
OleDbParameter.Value与DataTable.Rows.Item.Value的性能对比您提到的两种赋值操作属于不同场景,它们的性能和稳定性取决于具体使用方式。下面从几个维度进行分析:1.操作本质对比(1)OleDbParameter.Value用途:设置SQL参数的值,用于数据库操作场景:与数据库交互时传递参数操作类型:将数据从内存传递到数据库引擎(2)DataTable.Rows
- C# Datatable筛选过滤各方式详解
Nemo_XP
WinformLINQ相关DataTablec#
在C#中,DataTable提供了多种筛选过滤数据的方法,以下是常用的几种方式及其特点:1.Select方法筛选这是最基础的筛选方式,支持类似SQL的表达式语法//单条件筛选DataRow[]rows=dt.Select("Age>25");//多条件组合DataRow[]rows=dt.Select("NameLIKE'张%'ANDAge>20");//带排序的筛选DataRow[]rows
- 现代Android 选项卡实现方案
时小雨
androidkotlin
前言在早期的Android开发中,ActivityGroup、GridView和ViewFlipper是常见的选项卡实现组件。但随着Jetpack组件库的成熟,这些技术已逐渐被更高效、灵活的方案取代。本文将详细讲解如何用现代技术实现类似功能,并提供完整的代码实现和关键优化点。一、新旧技术对比1.传统方案的问题组件缺点现代替代方案ActivityGroup管理复杂,生命周期混乱,性能开销大Fragm
- 全面掌握DataGridView控件的实用教程
谢兴豪
本文还有配套的精品资源,点击获取简介:DataGridView是.NETWindowsForms中用于数据显示和操作的控件。本教程将详细探讨DataGridView的使用方法,包括基本使用、数据绑定、列和行的操作、编辑与验证、多选与排序、样式定制、事件处理、分页与滚动,以及数据的打印与导出。学习此教程将帮助开发者深入了解DataGridView的各种功能,并将其应用于创建功能强大的交互式数据界面。
- DataGridView(一)
dyufei
C#ADO.NETdataset
1、DataGridView的特点(1)DataGridView一次只能显示一个表。如果绑定整个DataSet,则(DataMember属性要设置为表名)。否则不会显示任何数据。(2)允许编辑数据。在单元格中双击或按F2来修改当前值。(3)支持自动排序。在列标题中单击该字段,其值按升序或降序对值进行排序。(默认,排序时会按字母或数字顺序进行排序,字母顺序区分大小写)。(4)支持多种选择,(可以通过
- 解决: C# 多个dataTable添加到 dataSet中
真实的菜
C#c#
解决:C#多个dataTable添加到dataSet中项目中用到查询多个结果集此处调用多个sql语句返回多个dataTable后进行封装成一个dataSet,然后返回先定义多个dataTable和一个返回dataSetDataSetds=newDataSet();DataTabledt0=newDataTable();DataTabledt1=newDataTable();DataTabledt2
- Telerik UI for WPF2022版,卓越的性能和用户体验
SEO-狼术
Crackuiwpfmicrosoft
TelerikUIforWPF2022版,卓越的性能和用户体验TelerikUIforWPF2022版广泛的控件集TelerikUIforWPF带有大量可自定义的控件,从复杂的数据驱动控件(如GridView和Chart)到较小的UI组件(如Rating和Slider)。该套件附带了许多数据可视化和管理工具,您可以使用这些工具根据您的业务需求编辑和显示数据。卓越的性能和用户体验TelerikUIf
- Python DataTable用法(一)
yutaolife007
pythonpython
最近发现PythonDataTable有查询csv,Excel表数据真的很好用。强烈推荐给大家。有一些甚至比Pandas都要好用一些。这篇文章记录一些查询数据的方法。其中一些小的细节,请大家自己观察结果的返回。读取csv数据:tips=dt.fread("D:\\pythonProject\\datacenterqa\\datatables_example\\tips.csv")1."SELECT
- python—datatable加载数据
哎呦-_-不错
#基础进阶datatable
文章目录引言datatable加载数据引言使用read_csv需要加载上百秒,极为耗时datatable详细介绍datatable加载数据importdatatableasdtimporttimestart=time.time()train_datatable=dt.fread('DATA/train.csv'
- pythonnet模块的使用,把DataTable转换成DataFrame
weixin_30319097
pythonc#runtime
1.模块的选择python与c#交互目前有两种方式,一种是使用ironpython模块,另一种是使用pythonnet模块。笔者推荐使用pythonnet,因为ironpython不支持c#中的一些模块,如比较有名的pandas,numpy等。2.使用pythonnet使用pip下载pythonnet模块,在安装路径下会有clr.pyd、python.Runtime.dll两个文件,pyd文件是在
- Python 数据表操作库 DataTable 使用指南
颜妙瑶Titus
Python数据表操作库DataTable使用指南datatableAPythonpackageformanipulating2-dimensionaltabulardatastructures项目地址:https://gitcode.com/gh_mirrors/da/datatable1.项目介绍DataTable是一个用于操作二维数据表结构的Python包,它类似于pandas或SFrame
- c# 高效批量导入数据库
qq_41942913
插入数据一般都是一条一条数据insert进数据库,但是遇到数据量大的时候还这样插入等待时间就很长,那么我们可以批量插入数据。可以利用SqlBulkCopy一次性插入数据,效率很高privatevoidImportStudents(DataTabledt)//传进来的是你要插入的表数据dt{//开始IProvider_iprovider=ProviderFactory.GetProvider();u
- 统一思想认识
永夜-极光
思想
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