众所知周http2.0添加了很多特性 了解的添加特性有哪些

作者&投稿:卢中 (若有异议请与网页底部的电邮联系)
HTTP/2.0 相比1.0有哪些重大改进~

HTTP 2.0 的出现,相比于 HTTP 1.x ,大幅度的提升了 web 性能。在与 HTTP/1.1 完全语义兼容的基础上,进一步减少了网络延迟。而对于前端开发人员来说,无疑减少了在前端方面的优化工作。本文将对 HTTP 2.0 协议 个基本技术点进行总结,联系相关知识,探索 HTTP 2.0 是如何提高性能的。 初露锋芒 HTTP/2: the Future of the Internet 这是 Akamai 公司建立的一个官方的演示,用以说明 HTTP/2 相比于之前的 HTTP/1.1 在性能上的大幅度提升。 同时请求 379 张图片,从Load time 的对比可以看出 HTTP/2 在速度上的优势。 此时如果我们打开 Chrome Developer Tools 查看 Network 一栏可以发现,HTTP/2 在网络请求方面与 HTTP /1.1的明显区别。 HTTP/1: HTTP/2: 多路复用 (Multiplexing) 多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。 众所周知 ,在 HTTP/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」。 Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion. 来源:RFC-2616-8.1.4 Practical Considerations HTTP/1.1: Connections 该图总结了不同浏览器对该限制的数目。 来源: Roundup on Parallel Connections 这也是为何一些站点会有多个静态资源 CDN 域名的原因之一,拿 Twitter 为例,http://twimg.com,目的就是变相的解决浏览器针对同一域名的请求限制阻塞问题。 而 HTTP/2 的多路复用(Multiplexing) 则允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。 因此 HTTP/2 可以很容易的去实现多流并行而不用依赖建立多个 TCP 连接,HTTP/2 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。并行地在同一个 TCP 连接上双向交换消息。 二进制分帧 在不改动 HTTP/1.x 的语义、方法、状态码、URI 以及首部字段….. 的情况下, HTTP/2 是如何做到「突破 HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量」的 ? 关键之一就是在 应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。 在二进制分帧层中, HTTP/2 会将所有传输的信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码 ,其中 HTTP1.x 的首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面。 HTTP/2 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。 在过去, HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 连接会随着时间进行自我「调谐」,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因,让原本就具有突发性和短时性的 HTTP 连接变的十分低效。 HTTP/2 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升。 总结: 单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大 由于 TCP 连接的减少而使网络拥塞状况得以改善,同时慢启动时间的减少,使拥塞和丢包恢复速度更快 首部压缩(Header Compression) HTTP/1.1并不支持 HTTP 首部压缩,为此 SPDY 和 HTTP/2 应运而生, SPDY 使用的是通用的DEFLATE 算法,而 HTTP/2 则使用了专门为首部压缩而设计的 HPACK 算法。 服务端推送(Server Push) 服务端推送是一种在客户端请求之前发送数据的机制。在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应。Server Push 让 HTTP1.x 时代使用内嵌资源的优化手段变得没有意义;如果一个请求是由你的主页发起的,服务器很可能会响应主页内容、logo 以及样式表,因为它知道客户端会用到这些东西。这相当于在一个 HTML 文档内集合了所有的资源,不过与之相比,服务器推送还有一个很大的优势:可以缓存!也让在遵循同源的情况下,不同页面之间可以共享缓存资源成为可能。 关于 HTTP/2 的 Server Push 以及 HTTP/2 的缓存策略 典型问题: 「如果客户端早已在缓存中有了一份 copy 怎么办?」还要 Push 吗? 详情参考另一个答案: HTTP/2 对现在的网页访问,有什么大的优化呢?体现在什么地方 PS: 强烈推荐阅读 Mark Nottingham 在 Velocity Beijing 2015 的 speech HTTP/2 for Front-End Developers ,关于 HTTP/2 下的前端性能优化相关。 Slide 地址:HTTP/2 for Front-End Developers 参考资料: Gitbook 《HTTP2 讲解》 by Calvin Zhang and Simon Xia:http2讲解 - GitBook HTTPS、SPDY 以及 HTTP/2 性能简单对比:A Simple Performance Comparison of HTTPS, SPDY and HTTP/2 HTTP/2 的压缩算法--HPACK(RFC7541):HPACK: Header Compression for HTTP/2 NGINX HTTP/2 白皮书:https://www.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf NGINX Blog--提升 HTTP/2 性能的 7个小建议: 7 Tips for Faster HTTP/2 Performance(原文) [译]使用HTTP/2提升性能的7个建议(李松峰译) HTTP/2 for a Faster Web O'Reilly HTTP2-high-perf-browser-networking:http://www.oreilly.com/webops-perf/free/files/HTTP2-high-perf-browser-networking.pdf HTTP/2 新特性浅析:HTTP/2 新特性浅析 Kevin blog 关于 HTTP/2 的系列归档:HTTP/2 | 凯文叔叔的网志 Can i use 上关于支持HTTP/2 的浏览器:Can I use... Support tables for HTML5, CSS3, etc

1、函数式接口
Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。
java.lang.Runnable 就是一个函数式接口。
@FunctionalInterface
public interface Runnable {
public abstract void run();
}

2、Lambda 表达式
函数式接口的重要属性是:我们能够使用 Lambda 实例化它们,Lambda 表达式让你能够将函数作为方法参数,或者将代码作为数据对待。Lambda 表达式的引入给开发者带来了不少优点:在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,代码可读性很差,Lambda 表达式的应用则使代码变得更加紧凑,可读性增强;Lambda 表达式使并行操作大集合变得很方便,可以充分发挥多核 CPU 的优势,更易于为多核处理器编写代码;
Lambda 表达式由三个部分组成:第一部分为一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;第二部分为一个箭头符号:->;第三部分为方法体,可以是表达式和代码块。语法如下:
1. 方法体为表达式,该表达式的值作为返回值返回。
(parameters) -> expression

2. 方法体为代码块,必须用 {} 来包裹起来,且需要一个 return 返回值,但若函数式接口里面方法返回值是 void,则无需返回值。
(parameters) -> { statements; }
例如,下面是使用匿名内部类和 Lambda 表达式的代码比较。

下面是用匿名内部类的代码:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("Helllo Lambda in actionPerformed");
}
});
下面是使用 Lambda 表达式后:
button.addActionListener(
\\actionPerformed 有一个参数 e 传入,所以用 (ActionEvent e)
(ActionEvent e)->
System.out.print("Helllo Lambda in actionPerformed")
);

上面是方法体包含了参数传入 (ActionEvent e),如果没有参数则只需 ( ),例如 Thread 中的 run 方法就没有参数传入,当它使用 Lambda 表达式后:
Thread t = new Thread(
\un 没有参数传入,所以用 (), 后面用 {} 包起方法体
() -> {
System.out.println("Hello from a thread in run");
}
);
通过上面两个代码的比较可以发现使用 Lambda 表达式可以简化代码,并提高代码的可读性。
为了进一步简化 Lambda 表达式,可以使用方法引用。例如,下面三种分别是使用内部类,使用 Lambda 表示式和使用方法引用方式的比较:
//1. 使用内部类
Function f = new Function(){
@Override
public String apply(Integer t) {
return null;
}
};
//2. 使用 Lambda 表达式
Function f2 = (t)->String.valueOf(t);
//3. 使用方法引用的方式
Function f1 = String::valueOf;

要使用 Lambda 表达式,需要定义一个函数式接口,这样往往会让程序充斥着过量的仅为 Lambda 表达式服务的函数式接口。为了减少这样过量的函数式接口,Java 8 在 java.util.function 中增加了不少新的函数式通用接口。例如:
Function:将 T 作为输入,返回 R 作为输出,他还包含了和其他函数组合的默认方法。
Predicate :将 T 作为输入,返回一个布尔值作为输出,该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(与、或、非)。
Consumer :将 T 作为输入,不返回任何内容,表示在单个参数上的操作。
例如,People 类中有一个方法 getMaleList 需要获取男性的列表,这里需要定义一个函数式接口 PersonInterface:
interface PersonInterface {
public boolean test(Person person);
}
public class People {
private List persons= new ArrayList();
public List getMaleList(PersonInterface filter) {
List res = new ArrayList();
persons.forEach(
(Person person) ->
{
if (filter.test(person)) {//调用 PersonInterface 的方法
res.add(person);
}
}
);
return res;
}
}
为了去除 PersonInterface 这个函数式接口,可以用通用函数式接口 Predicate 替代如下:
class People{
private List persons= new ArrayList();
public List getMaleList(Predicate predicate) {
List res = new ArrayList();
persons.forEach(
person -> {
if (predicate.test(person)) {//调用 Predicate 的抽象方法 test
res.add(person);
}
});
return res;
}
}



3、接口的增强
Java 8 对接口做了进一步的增强。在接口中可以添加使用 default 关键字修饰的非抽象方法。还可以在接口中定义静态方法。如今,接口看上去与抽象类的功能越来越类似了。
默认方法
Java 8 还允许我们给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法。在实现该接口时,该默认扩展方法在子类上可以直接使用,它的使用方式类似于抽象类中非抽象成员方法。但扩展方法不能够重载 Object 中的方法。例如:toString、equals、 hashCode 不能在接口中被重载。
例如,下面接口中定义了一个默认方法 count(),该方法可以在子类中直接使用。
public interface DefaultFunInterface {
//定义默认方法 countdefault int count(){
return 1;
}
}
public class SubDefaultFunClass implements DefaultFunInterface {
public static void main(String[] args){
//实例化一个子类对象,改子类对象可以直接调用父接口中的默认方法 count
SubDefaultFunClass sub = new SubDefaultFunClass();
sub.count();
}
}

静态方法
在接口中,还允许定义静态的方法。接口中的静态方法可以直接用接口来调用。
例如,下面接口中定义了一个静态方法 find,该方法可以直接用 StaticFunInterface .find() 来调用。
public interface StaticFunInterface {public static int find(){
return 1;
}
}
public class TestStaticFun {
public static void main(String[] args){
//接口中定义了静态方法 find 直接被调用
StaticFunInterface.fine();
}
}

HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法、状态码、URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量。而之所以叫2.0,是在于新增的二进制分帧层。
既然又要保证HTTP的各种动词,方法,首部都不受影响,那就需要在应用层(HTTP2.0)和传输层(TCP or UDP)之间增加一个二进制分帧层。
在二进制分帧层上, HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码 ,其中HTTP1.x的首部信息会被封装到Headers帧,而我们的request body则封装到Data帧里面。
HTTP 2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。相应地,每个数据流以消息的形式发送,而消息由一或多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装。
HTTP2.0 首部压缩
HTTP 2.0 在客户端和服务器端使用“首部表”来跟踪和存储之前发送的键-值对,对于相同的数据,不再通过每次请求和响应发送;通信期间几乎不会改变的通用键-值对(用户代理、可接受的媒体类型,等等)只 需发送一次。事实上,如果请求中不包含首部(例如对同一资源的轮询请求),那么 首部开销就是零字节。此时所有首部都自动使用之前请求发送的首部。
如果首部发生变化了,那么只需要发送变化了数据在Headers帧里面,新增或修改的首部帧会被追加到“首部表”。首部表在 HTTP 2.0 的连接存续期内始终存在,由客户端和服务器共同渐进地更新 。
所有的HTTP2.0的请求都在一个TCP链接上
HTTP 2.0 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应 着逻辑流中的消息。并行地在同一个 TCP 连接上双向交换消息。就好比,我请求一个页面http://www.baidu.com。页面上所有的资源请求都是客户端与服务器上的一条TCP上请求和响应的!
有关注TCP性能的同学就会知道,HTTP性能瓶颈关键在于低延迟而不是高带宽!大多数HTTP 连接的时间都很短,而且是突发性的,但TCP 只在长时间连接传输大块数据时效率才最高。HTTP 2.0 通过让所有数据流共用同一个连接,可以更有效地使用TCP 连接,让高带宽也能真正的服务于HTTP的性能提升。
同时,单链接多资源的方式,使到至上而下的层面都得到了好处:
1. 可以减少服务链接压力,内存占用少了,连接吞吐量大了
2. 由于 TCP 连接减少而使网络拥塞状况得以改观;
3. 慢启动时间减少,拥塞和丢包恢复速度更快。
也就是说,“资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的,只会增大无用的工作量而已。
并行双向字节流的请求和响应
在HTTP2.0上,客户端和服务器可以把HTTP 消息分解为互不依赖的帧,然后乱序发送,最后再在另一端把它们重新组合起来。注意,同一链接上有多个不同方向的数据流在传输。客户端可以一边乱序发送stream,也可以一边接收服务器的响应,而服务器那端同理。
把 HTTP 消息分解为独立的帧,交错发送,然后在另一端重新组装是 HTTP 2.0 最 重要的一项增强。事实上,这个机制会在整个 Web 技术栈中引发一系列连锁反应, 从而带来巨大的性能提升,因为:
可以并行交错地发送请求,请求之间互不影响;
可以并行交错地发送响应,响应之间互不干扰;
只使用一个连接即可并行发送多个请求和响应;
消除不必要的延迟,从而减少页面加载的时间;
那么也就是说“域名分区”这种优化手段对于HTTP2.0是无用的,因为资源都是并行交错发送,且没有限制,不需要额外的多域名并行下载。
HTTP2.0的请求优先级
每个HTTP2.0流里面有个优先值,这个优先值确定着客户端和服务器处理不同的流采取不同的优先级策略,高优先级的流都应该优先发送,但又不会绝对的。绝对地准守,可能又会引入首队阻塞的问题:高优先级的请求慢导致阻塞其他资源交付。分配处理资源和客户端与服务器间的带宽,不同优先级的混合也是必须的。
HTTP2.0的服务器推送
HTTP 2.0 新增的一个强大的新功能,就是服务器可以对一个客户端请求发送多个响应。换句话说,服务器除了对最初请求的响应外,还可以额外向客户端推送资源,而无需客户端明确地请求。
当浏览器请求一个html,服务器其实大概知道你是接下来要请求资源了,而不需要等待浏览器得到html后解析页面再发送资源请求。我们常用的内嵌图片也可以理解为一种强制的服务器推送:我请求html,却内嵌了张图。
有了HTTP2.0的服务器推送,HTTP1.x时代的内嵌资源的优化手段也变得没有意义了。而且使用服务器推送的资源的方式更加高效,因为客户端还可以缓存起来,甚至可以由不同的页面共享(依旧遵循同源策略)。当然,浏览器是可以决绝服务器推送的资源的。


众所知周http2.0添加了很多特性 了解的添加特性有哪些
HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法、状态码、URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量。而之所以叫2.0,是在于新增的二进制分帧层。既然又要保证HTTP的各种动词,方法,首部都不受影响,那就需要...

HTTP2 详解
22. 实际抓包会发现 HTTP2 请求创建连接发送 SETTINGS 帧初始化前还有一个 Magic 帧 (建立 HTTP\/2 请求的前言)。23. 在 HTTP\/2 中,要求两端都要发送一个连接前言,作为对所使用协议的最终确认,并确定 HTTP\/2 连接的初始设置,客户端和服务端各自发送不同的连接前言。24. 客户端的前言内容包含...

HTTP2和HTTPS来不来了解一下?
HTTP2与HTTP1.1最重要的区别就是 解决了线头阻塞的 问题!其中最重要的改动是: 多路复用 (Multiplexing)使用了HTTP2可能是这样子的:HTTP2所有性能增强的核心在于 新的二进制分帧层 (不再以文本格式来传输了),它定义了如何封装http消息并在客户端与服务器之间传输。看上去协议的格式和HTTP1.x完全...

HTTP\/2.0 相比1.0有哪些重大改进
HTTP\/1: HTTP\/2: 多路复用 (Multiplexing) 多路复用允许同时通过单一的 HTTP\/2 连接发起多重的请求-响应消息。 众所周知 ,在 HTTP\/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」。 Clients that use persistent connections SH...

详细分析http2 和http1.1 区别
从技术角度而言,http1.1和2.0 最大的区别是二进制框架层。与 http1.1把所有请求和响应作为纯文本不同,http2 使用二进制框架层把所有消息封装成二进制,且仍然保持http语法,消息的转换让http2能够尝试http1.1所不能的传输方式。 客户端首次接受的响应常常不能完全渲染。相反,它包含一些其他需要的资源。 因此,客户端必...

请问HTTP\/2安全性好吗 HTTP\/2安全性介绍【介绍】
没错,这个新的协议的确可以提供更好的性能,而且也可以与之前的HTTP\/1.1兼容,但是我们真的有必要急于升级到HTTP\/2吗?虽然协议本身暂时还没有漏洞,但是很多网站在运用这个协议时所采用的实现方式是存在安全漏洞的,这将导致网站的数据流量很可能会被攻击者嗅探到。所以各位网站管理员们在没有十足把我...

HTTP2特性
也就是说, 互联网上通常所能⻅到的HTTP\/2都是使用“https”协议 名,跑在TLS上面 。为了区分“加密”和“明文”这两个不同的版本,HTTP\/2协议定义了两个字符串标识符:“h2”表示加密的HTTP\/2,“h2c”表示明文的HTTP\/2,多出的那个字母“c”的意思是“clear text”。在HTTP\/2标准制定...

APP使用HTTP2协议的一点小收获
curl —http2  -I https:\/\/api.test.com 启用了阿里云的日志服务-SLB,protorl参数返回了HTTP\/2 阿里云日志服务也是一个好东西,有点类似于ELK,本来高峰期间发现峰值流量比较大,原来有个接口size比较大,直接占了30%的流量,优化后一下清净了。对于优化来说,应该挑大头来解决,同时也要关注...

Nginx 启用 HTTP\/2 不生效的原因排查
1、临时在本地 hosts 绑定 IP 和域名,访问时看到 http\/2 生效了 2、不在本地 hosts 绑定 IP 和域名,直接访问时看到 http\/2 没有生效 问题原因找到,nginx 是已经启用了 http\/2 的,并且已经生效 之所以直接访问时,看到的协议还是 http\/1.1,是因为站点前面的 WAF 不支持 http\/2 ...

简述端口的作用。
端口说明:8080端口同80端口,是被用于WWW代理服务的,可以实现网页浏览,经常在访问某个网站或使用代理服务器的时候,会加上“:8080”端口号,比如http:\/\/www.cce.com.cn:8080。 端口漏洞:8080端口可以被各种病毒程序所利用,比如Brown Orifice(BrO)特洛伊木马病毒可以利用8080端口完全遥控被感染的计算机。另外,RemoConChub...

天柱县15092254267: 众所知周http2.0添加了很多特性 了解的添加特性有哪些 -
蔡奔济诺: HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法、状态码、URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量.而之所以叫2.0,是在于新增的二进制分帧...

天柱县15092254267: 众所周知,母乳是宝宝的黄金口粮.但是宝宝到了断奶的时候,怎样再继续补充黄金口粮呢?全能蓝罐蓝臻奶粉中含有乳铁蛋白吗?可以让宝宝断奶后身体继续棒棒的吗? - 育儿 -
蔡奔济诺: 母乳是宝宝的黄金口粮,但是由于各种原因,到一定时间,宝宝需要断奶,那给宝宝断奶后,想让宝宝抵抗力持续在线,可以给宝宝选择荷兰原装原罐进口的全能蓝罐蓝臻奶粉,萃取来自天然乳汁的珍贵营养,其中乳铁蛋白含量>330mg/100g,是普通奶粉的20倍,满足宝宝身体对乳铁蛋白所需的含量,可以提高宝宝抵抗力,让宝宝少生病,断奶后身体继续可以棒棒哒!

天柱县15092254267: 我的宝宝4个月1周就得急诊怎么办? - 儿科 - 复禾健康
蔡奔济诺: 光能穿透玻璃,光在玻璃中行走时,因为玻璃的r和空气的r不同,所以光的路线发生偏移,这算是光的折射. 风能么? 光是沿直线传播的,风可以打弯..可以旋转.速度很慢.

天柱县15092254267: 众所周知和周游世界的周一样吗 -
蔡奔济诺: 一样的,都是普遍,全面的意思.

天柱县15092254267: 不过众所周知生活在不断变化 命运总在不经意之间降临到你头上是哪部电影台词 -
蔡奔济诺: Fate always inadvertently e众所周知,命运,生活\不经意,降临Fate always inadvertently e

天柱县15092254267: 2008年7月5日 月亮 -
蔡奔济诺: 六月初四为上弦娥眉月,厚度在娥眉月与半月之间.

天柱县15092254267: 1.众所周知,每只兔子有4只脚,每只鸡有2只脚.能否使若干只兔和若干只鸡共有25只脚?为什么?26只脚可以吗?2.找出规律,判断下列方程是否有整数解:①12x+3y=4;②2x+3y=5?说明理由.
蔡奔济诺: 不能有25只角,因为4与2的组合不管怎样都是偶数,不会出现25,26的可以 第一个没有,把3提出来,得4x+y=4/3,两个整数和一定是整数,第二个有,举例为x=1,y=1就行了

天柱县15092254267: 众所周知 的 出处 是 -
蔡奔济诺: 众所周知,读音zhòng suǒ zhōu zhī,是一个成语,意思是大家都知道的.出处《玉娇梨》第二十回:“城中宣杂难住,莫苦就在众所周知石村卜一居,与白公为邻.”

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网