- python中函数与递归的练习
求一个十进制的数值的二进制的0、1的个数实现一个用户管理系统(要求使用容器保存数据)[{name:xxx,pass:xxx,……},{},{}]users=[]#用户类,包含基本信息classUser:def__init__(self,name,password,email=None):self.name=nameself.password=passworddef__str__(self):ret
- Python包版本分析工具开发:从PyPI私有源快速提取元数据
YoungHong1992
pythonwindows开发语言
importsubprocessimportreimportosimportsysimporttempfileimportzipfilefromemail.parserimportParserfromtypingimportList,Dict,Optional,Anyfromjinja2importEnvironmentfrompackaging.versionimportparseasparse
- Git教程
charon桐
git
GitGit设置下载git设置用户名和邮箱这一步当你创建了gitee仓库的时候,会显示出来。或者是在新电脑上面手动设置,如下(使用鼠标中键复制)gitconfig--global[user.name](http://user.name/)"username"gitconfig--globaluser.email[
[email protected]](mailto:
[email protected])创
- 使用 C# 发送电子邮件(支持普通文本、HTML 和附件)
在日常开发或自动化任务中,发送电子邮件仍然是最常用的数据传递方式之一。通过代码发送邮件,不仅可以提高效率,还能实现批量通知、报表推送等功能。本文将介绍如何使用C#发送包含普通文本、HTML正文以及附件的电子邮件,并提供完整的示例代码。本文使用FreeSpire.Emailfor.NET,可通过NuGet安装:Install-PackageFreeSpire.Email使用C#创建邮件消息Spire
- 【Python】邮件处理2
宅男很神经
python开发语言
7.Pythonemail库深度解析:MIME邮件构建与解析的艺术在前面的章节中,我们深入探讨了电子邮件的底层协议(SMTP,POP3,IMAP)以及如何使用imaplib库从服务器接收和管理邮件。然而,邮件内容的实际格式和结构并非由这些传输协议定义,而是由MIME(MultipurposeInternetMailExtensions)标准规范。Python的email库是处理MIME格式邮件的强
- 【python实用小脚本-125】基于 Python 的 Gmail 邮件发送工具:实现高效邮件自动化
Kyln.Wu
Pythonpython自动化网络
引言在现代办公和开发环境中,邮件通信是一种重要的沟通方式。自动化发送邮件可以大大提高工作效率,例如发送通知、报告或文件。本文将介绍一个基于Python的Gmail邮件发送工具,它能够通过Gmail的SMTP服务器发送邮件,并支持附件功能。该工具主要利用了Python的smtplib库和email库,结合了邮件构建和网络通信技术,为用户提供了一个简单易用的邮件发送解决方案。总体功能概述Gmail邮件
- 5、Spring AI(MCPServer+MCPClient+Ollama)开发环境搭建_第一篇
虾条_花吹雪
#开发环境搭建ai人工智能spring数据库学习
前言:该开发环境是在3、后端持久化(SpringBoot3.5.0+MybatisPlus3.5.5+mysql8.4.0)环境搭建上进行改造的,用到了后端持久化,主要改造的地方为数据库把email字段改为height(身高),该开发环境主要是设计了一个灌篮高手篮球经理对球队成员简单的查询,通过这个场景把MCPServer、MCPClient、大模型、用户客户端相互的职责和关系简单捋一下,其他的改
- javascript基础从小白到高手系列四千八百七十二:数值范围
除了"email"和"url",HTML5还定义了其他几种新的输入元素类型,它们都是期待某种数值输入的,包括:“number”、“range”、“datetime”、“datetime-local”、“date”、“month”、“week”和"time"。并非所有主流浏览器都支持这些类型,因此使用时要当心。浏览器厂商目前正致力于解决兼容性问题和提供更逻辑化的功能。本节内容更多地是介绍未来趋势,而
- LeetCode-196. 删除重复的电子邮箱
做一个AC梦
LeetCode-数据库leetcode数据库sqlmysql
题目描述表:Person+-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||email|varchar|+-------------+---------+id是该表的主键列(具有唯一值的列)。该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。编写解决方案删除所有重复的电子邮件,只保留一个具有最
- Jenkins Email Extension 插件
sankgao
Jenkinsjenkins运维
EmailExtension介绍问题和议题入门系统范围的配置项目配置流水线步骤用法预发送脚本和后发送脚本触发器扩展电子邮件发布者触发器常用触发选项脚本触发器选项TokensJelly脚本内容模板Groovy脚本内容模板附件Jive格式化程序EmailExtension官网地址:EmailExtension介绍这个插件通过给您更多的控制来扩展Mailer插件的功能。它提供了三个区域的定制:Trigg
- java实现Email发送
Java实现Email发送首先导入依赖‘’org.apache.commonscommons-email1.4密码=授权码QQ邮箱授权码官网教程普通邮件发送:publicstaticvoidmain(String[]args)throwsException{//创建简单文本对象Emailemail=newSimpleEmail();//QQ邮箱的SMTP服务器地址为:smtp.qq.comemai
- Jenkins Email Extension 插件常见问题解决方案
JenkinsEmailExtension插件常见问题解决方案email-ext-pluginJenkinsEmailExtensionPlugin项目地址:https://gitcode.com/gh_mirrors/em/email-ext-plugin1.项目基础介绍和主要编程语言JenkinsEmailExtension插件是一个开源项目,它扩展了Jenkins原生邮件通知的功能,允许用户
- Jenkins-Email Extension 插件插件
会又不会
自动化测试jenkins运维
EditableEmailNotificationEditableEmailNotification是Jenkins的EmailExtension插件的核心功能,用于自定义邮件通知,包括邮件主题、内容、收件人、发件人等属性1.ProjectFrom项目发件人,设置邮件的发件人地址**注意:**需与Jenkins系统设置中的SMTP服务器配置一致(如发件人需有权限通过该SMTP发送邮件)2.Proj
- 【DBA手记】-MySQL小版本升级文档-从5.7.30升级到5.7.42
DBA.superSong
MySQLdbamysql
【DBA手记】-MySQL小版本升级文档-从5.7.30升级到5.7.42本文档先在测试环境下验证,后在准生产环境也作了验证.为了更安全,建议先用mydumper或mysqldump或xtraback等常用备份工具做好备份工作.备注:本文是整理的之前一个笔记author:superSongEmail:
[email protected]背景及环境因扫描出mysql有安全漏洞,解决方案那就为升
- Git常用指令记录
GIT常用指令初始化仓库gitadd.提交到本地仓库gitcommit-m"此处是提交说明"查看提交历史gitlog--oneline切换到历史分支gitcheckoutxxx设置用户名和仓库地址gitconfig--globaluser.name"xxx"gitconfig--globaluser.email"xxxxxxxxxx"查看远程地址gitremote-v取消与远程仓库的关联(不是删除
- Golang发送定时邮件
white.tie
Golanggolang开发语言后端
前面尝试过用Python来发送邮件,下面测试一下Golang如何发送邮件需要使用三方库如下1.安装github.com/jordan-wright/emailgogetgithub.com/jordan-wright/email安装完成之后代码如下packagemainimport("github.com/jordan-wright/email""log""net/smtp")funcmain()
- Ubuntu android12 编译环境搭建
yun382657988
Ubuntu相关ubuntu
1、安装gitsudoapt-getinstallgitgitconfig--globaluser.name"用户名"gitconfig--globaluser.email"邮箱"2、安装jdk-8安装jdk:18.04默认集成了jdk1.8的源,可直接执行以下安装;sudoapt-getinstallopenjdk-8-jdk//jdk1.8sudoapt-getinstallopenjdk-1
- 发送Email验证码信息注册账号,并存入Redis中(SpringBoot实现发送Email验证信息)
IT莫染
SpringBootDemojavaredis编程语言springboot
项目中使用Java发送Email验证码信息注册账号,并存入Redis中(SpringBoot实现发送Email验证信息)》》》插件、部分依赖需的自行查找:》》》前端页面:$(function(){$("#sendBtn").click(function(){//获取接收短信的邮箱varemail=$.trim($("[name=email]").val());//发送请求$.ajax({"url"
- ubuntu环境搭建四:安装和使用git
小坚学Linux
ubuntu环境搭建gitubuntugithub
1.安装gitsudoapt-getinstallgit2.配置git的名字和邮箱gitconfig--globaluser.name"jian"gitconfig--globaluser.email"
[email protected]"gitconfig--globalcore.editorvim提交内核patch的配置gitconfig--globaluser.name"RuijianLi"gi
- 【如何设置ssh免密登录】
岁月玲珑
linuxsshgithubgit
设置SSH免密登录能够让你在不输入密码的情况下,通过SSH协议安全登录远程服务器。下面为你详细介绍设置步骤:1.生成SSH密钥对(若未生成)要生成SSH密钥对,可在本地终端执行以下命令:ssh-keygen-trsa-b4096-C"
[email protected]"当系统提示你“Enterafileinwhichtosavethekey”时,你可以直接按回车键使用默认文件位置,也可以
- 自动提示SQL:一种在资源受限环境中实现文本到SQL转换的高效架构
ZetongTang1{}^{1}1,QianMa2\mathrm{Ma}^{2}Ma2,DiWu3∗\mathrm{Wu}^{3*}Wu3∗1{}^{1}1西南大学计算机与信息科学学院,
[email protected],中国重庆2{}^{2}2西南大学计算机与信息科学学院,
[email protected],中国重庆3{}^{3}3西南大学计算机与信
- Python邮件处理(使用imaplib和email库实现自动化邮件处理)
老哥不老
python自动化java
在日常工作中,我们经常需要自动化处理电子邮件,比如自动下载附件、解析邮件内容、处理特定格式的数据等。本文将通过一个实际案例,详细介绍如何使用Python的imaplib和email库来实现邮件的自动化处理。目录环境准备与库介绍IMAP邮件服务器连接邮件搜索与获取邮件内容解析附件处理实战案例:自动化处理Excel附件最佳实践与注意事项1.环境准备与库介绍首先,我们需要导入必要的库:importima
- 结构体字段能否单独加 mut
穗余
Rustjava服务器数据库
你问的这个问题在Rust里很常见:一、结构体字段能否单独加mut1.结构体字段能否单独加mut?不能。Rust中,mut是用来修饰变量绑定的,可变性是绑定的属性,而不是结构体字段本身的属性。你不能写:letuser1=User{mutusername:String::from("user1"),//❌语法错误email:String::from("
[email protected]"),sign_
- 用html代码制作一个表单页面,HTML网页表单制作详细讲解
weixin_39747975
用html代码制作一个表单页面
表单是一个网站和访问者开展互动的窗口,我们现在就给大家介绍一下表单的一些基本知识和表单美化方法。初识表单表单可以用来在网页中发送数据,特别是经常被用在联系表单-用户输入信息然后发送到Email中。表单本身是没有什么用的。这需要编一个程序来处理输入表单中的数据。这也超出了本站指南的范围。如果使用网络服务器来放置HTML,你能够自助地找到一些简单的教程,开发一个服务器端的程序使一个发送到Email的表
- 外观模式 - Flutter中的一键操作大师,复杂功能的极简入口!
明似水
flutter外观模式flutterjavascript
痛点场景:多步骤的用户注册流程假设你的应用需要处理以下注册步骤:验证邮箱格式检查密码强度调用注册API保存用户Token初始化用户配置同步基础数据发送欢迎邮件传统实现方式:FutureregisterUser(Stringemail,Stringpassword)async{//1.验证邮箱if(!EmailValidator.validate(email)){throwInvalidEmailE
- 如何比较两个 APK 的签名是否一致?
微信公众号:AI创造财富
androidadbandroid-studiojavaxml
D:\AS\build-tools\34.0.0\lib>java-jarapksigner.jarverify--print-certsD:\2025\beforecob\KP36\KP36\ScanDemoGit\app\build\outputs\apk\debug\ScanDemo-1.1.6_20250630.apkSigner#1certificateDN:EMAILADDRESS=a
- Git常见使用
北珣.
git
基本操作创建仓库1.先创建一个文件,再进入到对应的文件夹中#创建文件mkdir[file_name]#进入该文件cd[file_name]2.创建对应的Git仓库(在对应的文件夹内)#创建对应的仓库gitinit#可以查看当前文件内的内容llfile_name#查看tree目录tree.git/配置本地仓库必须要配置的配置项:nameemail为了方便操作,推荐在初始化仓库之后就进行配置#配置gi
- git配置(1): 根据remote自动选择账号执行commit
ArthurBreeze
git
git配置(1):根据remote自动选择账号执行commit在公司电脑上,克隆了github的仓库,也克隆了内网gitlab的仓库。希望commit和push到内网gitlab时,使用公司账号;commit和push到github时,使用个人账号。原本以为~/.gitconfig只能配置单个账户:[user]name=my_personal_nameemail=my_personal_email
- git的author和commiter的修改
weixin_34161032
git开发工具python
2019独角兽企业重金招聘Python工程师标准>>>git的author和commiter的修改.git的文件夹,进去,就会看到有一个config文件,编辑,加上===========================================[user]#设置用户名name=xxx#设置用户的邮箱
[email protected],=========================
- git Author 和 Committer 区别
张紫娃
GITgit
Author(作者)最初编写该提交内容的人,通常是你用gitcommit提交时设置的名字。gitconfig--globaluser.name"YourName"gitconfig--globaluser.email"
[email protected]"Committer(提交者)最终将改动合并进仓库的人。gitcommit-m"fix:buginlogin"#%an=YourName#%cn=Your
- 统一思想认识
永夜-极光
思想
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