- 在Java中String类为什么不可以修改?
目录一、语言设计与实现层面的原因二、设计目标与优势三、如何绕过限制?(异常情况)四、替代方案:可变字符串总结在Java中,String类的不可变性(Immutable)是其核心设计之一,这种设计源于多方面的技术考量和实际需求。以下从多个角度解析String为什么不可以修改:一、语言设计与实现层面的原因final修饰类:String类被声明为final,意味着它不能被继承。这避免了子类通过重写方法或
- String、 StringBuffer 和 StringBuilder 的区别和作用及使用场景
String、StringBuffer和StringBuilder是Java中常见的字符串操作类,它们主要的区别在于可变性、线程安全性和性能。1.三者的主要区别特性StringStringBufferStringBuilder是否可变不可变(Immutable)可变(Mutable)可变(Mutable)线程安全性线程安全(但不可变,无需加锁)线程安全(内部使用synchronized关键字)非线
- 详解java的StringBuilder类
lanbing
Java知识必知必会java开发语言
在Java中,StringBuilder是一个非常常用且高效的类,用于操作可变字符串(mutablestring)。与String类不同的是,String是不可变的(immutable),每次对字符串进行拼接、修改等操作时都会创建一个新的对象,而StringBuilder则可以在原有对象上进行修改,从而提高性能。✅什么是newStringBuilder()?StringBuildersb=newS
- Python元组的遍历
難釋懷
python前端linux
一、前言在Python中,元组(tuple)是一种非常基础且常用的数据结构,它与列表类似,都是有序的序列,但不同的是,元组是不可变的(immutable),一旦创建就不能修改。虽然元组不能被修改,但它支持高效的遍历操作,非常适合用于存储不会变化的数据集合。本文将系统性地介绍Python中元组的多种遍历方式,包括基本遍历、索引访问、元素解包、结合函数等,并结合大量代码示例帮助你掌握这一重要技能。二、
- Android NDK下载链接及配置版本
zhangphil
AndroidStudioAndroidandroidandroidstudio
AndroidNDK下载链接及配置版本https://github.com/android/ndk/releases在build.gralde里面这样配置ndk具体版本号:android{ndkVersion"27.0.12077973"}AndroidStudio报错:Couldnotmovetemporaryworkspace()toimmutablelocation-CSDN博客文章浏览阅读
- 可变数据类型与不可变数据类型【python】
荷兰小香猪_01
python开发语言
在Python的数据类型根据其值是否可以被修改分为可变(mutable)和不可变(immutable)两类。一、不可变数据类型特点:创建后值不能被修改,任何修改操作都会生成新对象。示例:数值类型:int,float,complex字符串:str元组:tuple布尔值:bool冻结集合:frozenset示例代码#字符串不可变s="hello"s[0]="H"#报错:TypeError#正确修改方式
- Java并发编程之并发编程的最佳实践
爪哇手记
#Java知识点java笔记java学习开发语言
一、线程安全策略不可变对象(ImmutableObjects)实现方式:所有字段为final,确保构造过程不泄漏this引用。优势:无需同步即可安全共享,避免并发修改错误。publicfinalclassImmutablePerson{privatefinalStringname;privatefinalintage;publicImmutablePerson(Stringname,intage)
- Python_考察——40道基础python问题
患得患失949
python开发语言python面试基础题测试python基础
Q1、Python中的列表和元组有什么区别?列表(List)和元组(Tuple)都是用于存储多个数据项的容器类型,但它们之间有一些重要的区别:列表是可变的(Mutable),意味着可以修改、添加或删除其中的元素。而元组是不可变的(Immutable),一旦创建就不能修改。列表使用方括号[]来表示,元素之间使用逗号分隔。元组使用圆括号()来表示,元素之间也使用逗号分隔。列表可以进行增删改操作,可以通
- 关于 java:3. Java 常用类库与数据结构
shenyan~
java数据结构开发语言
一、String1.1String是什么?publicfinalclassStringimplementsjava.io.Serializable,Comparable,CharSequence特点:是不可变对象(immutable)是final类,不能被继承内部使用字符数组存储内容重写了equals()、hashCode()、toString()等方法实现了Comparable和CharSequ
- C#.Net分类随笔列表
weixin_30730151
人工智能c#数据库
也说C#中的Immutablefox232008-07-2618:29阅读:646评论:8谁动了我的构造函数?AndyHai2008-07-2616:18阅读:643评论:6T-SQL跨库查询赤色火焰2008-07-1708:37阅读:122评论:3【原创】博客批量下载器V1.3(目前已支持新浪、百度、博客园)赤色火焰2008-07-1620:52阅读:640评论:6.NET面试题大全米虫2008
- java中final关键字的详解及用法
EMO的月亮与六便士
开发语言javajvm
在Java中,final关键字用于限制类、方法和变量的可变性,确保代码的安全性和清晰度。以下是其详细作用及使用场景:1.final修饰类作用:被final修饰的类不能被继承,即不能有子类。使用场景:防止类被扩展或修改,例如String、Integer等不可变类。确保类的行为或安全性(如工具类)。示例:finalclassImmutableClass{//类内容}//编译错误:无法继承final类/
- Java 集合与 MyBatis 动态 SQL 实战教程
我不是少爷.
Java基础javamybatissql
一、Java集合的创建与用法在Java中,List、HashSet和数组是常用的集合类型,以下是它们的创建与基本操作:1.List列表创建方式:Listlist=newArrayListimmutableList=List.of(1,2,3);//不可变列表(Java9+)常用方法:list.add(4);//添加元素list.remove(2);//删除索引为2的元素list.get(0);//
- Java中String,StringBuffer,StringBuilder三者的区别
EMO的月亮与六便士
javajvm开发语言
在Java中,String、StringBuffer和StringBuilder都用于处理字符串,但它们在可变性、线程安全性和性能上有显著区别。以下是三者的主要区别:1.可变性(Mutability)String:不可变(Immutable)。一旦创建,值不能被修改。任何对String的操作(如拼接、替换)都会生成一个新的对象。Strings="Hello";s+="World";//创建了一个新
- Ansible模块——从控制节点向目标主机复制文件!
遇见火星
ansiblejava服务器
复制文件或字符串到被控主机的指定位置ansible.builtin.copy:复制文件到被控主机指定位置,也可以将字符串写入文件(覆盖)。选项类型默认值描述attributesstrnull设置目标文件的额外属性,如immutable等。backupboolfalse如果目标存在,操作前创建备份文件。checksumstrnull用来验证源文件内容的一致性的SHA1校验值。contentstrnu
- Kotlin 集合类的高阶函数
weixin_37716758
Kotlinkotlin高阶函数
集合类:用于存放对象的引用,而非对象本身。数据结构主要解决三个问题:数据元素之间的逻辑关系:集合、线性结构、树形结构、图形结构等。数据的物理结构:顺序、链表、索引、散列表、等形式。数据的处理运算。集合类主要分为:可变集合类(Mutable)和不可变集合类(Immutable)集合类型主要有3种:List(列表)、Set(集)和Map(映射)列表:主要特征其对象以线性方式存储,没有特定顺序,主要包括
- 进程管理--静态
溜溜刘@♞
12222服务器linux运维
进程管理1.文件属性添加与查看lsattr,chattri:即Immutable,系统不允许对这个文件进行任何的修改a:即AppendOnly,系统只允许在这个文件之后追加数据,不允许任何覆盖或截断这个文件A:即Atime,告诉系统不要修改对这个文件的最后访问时间[root@linux-server~]#lsattrfile1file2file3----------------file1-----
- 06 Python 列表 vs 元组,选对事半功倍
web Rookie
Pythonpython开发语言
在python中列表(List)和元组(Tuple)都是序列类型,但它们在各方面有着各种的不同一.可变性-最关键区别列表(List)元组(Tuple)可变性可变(Mutable)不可变(Immutable)操作示例list.append(1)tuple[0]=1会报错二.语法#列表用方括号list_example=[1,2,3,4,"a"]#元组用圆括号tuple_example=(1,2,3,4
- scala学习记录,Set,Map
今天我又学废了
scala学习开发语言
set:集合,表示没有重复元素的集合,特点:唯一语法格式:val变量名=Set[类型](元素1,元素2...)可变不可变可变(mutable)可对元素进行添加,删除等操作;不可变(immutable)创建后元素不能修改如果要定义可变的Set(mutable),需要额外导入包:importscala.collection.mutableSet常见操作对于可变Set,我们可用+=来添加元素,对于不可变
- (二)LevelDB日志
SZn..
LevelDB源码阅读笔记数据库
概述为了防止写入内存的数据库因为进程异常、系统掉电等情况发生丢失,leveldb在写内存之前会将本次写操作的内容写入日志文件中。数据写入先写入log中,再写入memtable中,memtable写满后会变为immemtable,不可修改,同时log文件也会变成frozenlog,不可修改。一旦immutable写入硬盘中,frozenlog即删除。日志具体结构一条日志由一个或多个chunk组成,每
- springboot actuator自定义prometheus监控指标
周虽旧邦其命维新
工作工具springbootpromtheus
pom.xmlorg.springframework.bootspring-boot-starter-actuatorio.micrometermicrometer-registry-prometheus1.3.2工具类HandleUtilsimportio.micrometer.core.instrument.ImmutableTag;importio.micrometer.core.instr
- Flutter学习四:Flutter开发基础(一)Widget
2501_91510632
httpudphttpswebsocket网络安全网络协议tcp/ip
Widget简介0引言本文是对FlutterWidget相关知识的学习和总结。1Widget概念1.1Widget基础Widget字面意思:控件、组件、部件、微件、插件、小工具widget的功能是"描述一个UI元素的配置信息",所谓的配置信息就是Widget接收的参数Widget只是描述一个UI元素的配置信息,并不是表示最终绘制在设备屏幕上的显示元素1.2Widget接口@immutable代表W
- Java程序中的工具类------guava,commons
一觉睡到小小时候
测试文章javamysql数据库
一、工具类——guava为什么强烈推荐Java程序员使用GoogleGuava编程在学成项目处理全局异常用到了该工具类中的----集合ImmutableMap(不可更改)二、工具类——commons(ApacheCommons)commons-iocommons-langcommons-lang3commons-fileupload。。。。。以上两个工具类的作用类似,guava的性能和使用的体验上
- 分布式数据库LSM树
、、揽明月九天
分布式数据库
LSM树的核心结构与操作流程Log-StructuredMergeTree,日志结构化合并树。追加写:永远不改,就算是update操作,也是追加写,一直新生成文件。刷盘触发:追加到一定程序,比如到了几MB,就生成一个MemTable,MemTable是跳表结构,当MemTable容量达到阈值时,转换为ImmutableMemTable,不可变跳表。并且生成一个新的MemTable,后台线程将Imm
- Python基础(二)
辣梨2004
python开发语言
1、可变与不可变Python中,变量的值分为可变(mutable)或不可变(immutable),该特征决定了变量在赋值、修改时的行为和性能。1.1不可变类型不可变类型的值一旦创建,就无法改变。任何试图修改不可变对象的操作都会创建一个新的对象。常见不可变类型包括:1.1.1数值类型:int、float、complex数字的值一旦赋值,不能被修改。x=10print(id(x),hex(id(x))
- Scala---集合(数组,Map,元组(Tuple),Zip拉链)详解
onthe_wing
scala开发语言大数据
scala的集合分为了两类,一类是可变的集合(集合可以执行增删改查操作),另一类是不可变集合(集合元素在初始化的时候确定,后续只能进行查,有的可以进行修改,有的不可以)。二者可能名称一样,但是在不同的包下面,对应的包为:scala.collection.mutable和scala.collection.immutable。scala默认使用的集合,或者默认导入的包是immutable。(说明:这里
- 重学Java基础篇—String为什么要设计为不可变类?
Remember_Ray
重学Java系列java
在Java中,String被设计为不可变类(immutableclass)的原因涉及性能优化、安全性、线程安全和语言设计哲学等多方面的权衡。以下是具体的设计动机和优势:1.安全性(Security)不可变对象天然是线程安全的:String被广泛用于类名、网络连接参数、文件路径等关键场景。若其可变,可能导致以下问题:恶意代码通过修改String内容破坏系统安全(例如篡改类名绕过安全检查)。文件路径或
- 【译】Immutable.js : 合并Map 7
weixin_30325071
Immutable提供了多个方法用于进行合并两个及其以上的MAP对象。然而,选择正确的方法是令人困惑的,除非你有一个非常棒的指南和丰富的例子-这些都是本教程的内容。MergingMaps将两个或更多Map合并在一起有六种不同的方法。使用它们如下:originalMap.merge(Map1,Map2,Map3,...Map-n)——将Maps合并在一起,将合并Maps的键/值对添加到origina
- Scala 的Set集合
anqi27
scala开发语言后端
Scala的Set(集合)是没有重复的对象集合,所有元素都是唯一的。Scala的集合分为可变的和不可变的两种。默认情况下,scala使用的是不可变集合,如果想使用可变集合,需引用scala.collection.mutable.Set包,默认引用scala.collection.immutable.Set包。1.1Scala的Set继承关系Scala为Set中的每一个集合几乎都提供了两个版本,分别
- Scala的Set,Map
Eternity......
scala大数据
在Scala中,`Set`和`Map`是两种非常重要的集合类型,它们分别用于存储唯一元素和键值对。以下是对Scala中`Set`和`Map`的详细解释:Set1.定义:-`Set`是一个不包含重复元素的集合。-Scala中的`Set`是不可变的(通过`scala.collection.immutable.Set`提供)和可变的(通过`scala.collection.mutable.Set`提供)
- Chapter 3: Programming Paradigms_《clean architecture》notes
lianghu666
架构师开发语言笔记javac++
ProgrammingParadigms1.StructuredProgrammingExample:FactorialCalculation(C)2.Object-OrientedProgramming(OOP)Example:ShapeHierarchy(Java)3.FunctionalProgrammingExample:ImmutableData(Python)KeyTakeawaysT
- 统一思想认识
永夜-极光
思想
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