藏经阁2.0全新上线!下载本地、线上阅读让你轻松获取技术知识。为了让更多人学习到藏经阁中的优秀技术作品,培养好的阅读习惯,“藏经阁一起读”活动来啦,你阅读,我奖励!
阅读地址:https://developer.aliyun.com/ebook/8063
书籍简介:CoC Asia 2023(原ApacheCon) WebServer/Tomcat 专题分享实录电子书旨在全面介绍 Apache Tomcat 的前世今生,我们将探索 Apache Tomcat 的技术内幕,并分享在喜马拉雅中实践的经验,也将介绍在下一个云原生时代 Tomcat 的新形态,探索在 GraalVM 静态编译在 Web 容器应用中的使用实践等。
活动规则:阅读书籍,将你对于本书的想法、收获等在评论区留言,评论不少于200字,将选取评论质量最高的1名送出小米鼠标Lite一个。
活动时间:2023年11月21日~11月27日24:00
参与用户务必扫码加入钉群,第一时间了解活动进展、获取得奖信息。
《Apache Tomcat 的云原生演进》是一篇关于如何将传统的 Apache Tomcat 应用服务器迁移到云原生环境的文章。在这篇文章中,作者详细介绍了云原生的概念、特点以及与传统应用服务器的区别,并通过实例演示了如何将 Apache Tomcat 应用服务器迁移到云原生环境。通过阅读这篇文章,我对云原生的概念和实践有了更深入的了解,同时也对如何将传统应用迁移到云原生环境有了一定的认识。
首先,文章介绍了云原生的概念和特点。云原生是一种构建和运行应用程序的方法,它利用了云计算的优势,如弹性、可扩展性和高可用性。云原生应用程序通常采用微服务架构,每个服务都是独立的、可独立部署的,并且可以与其他服务进行通信。此外,云原生应用程序还具有高度的自动化程度,可以通过自动化工具进行部署、扩展和管理。
接下来,文章对比了云原生与传统应用服务器的区别。传统应用服务器通常是单体应用,所有的功能和服务都集成在一个应用中,这使得应用难以扩展和维护。而云原生应用程序则是由多个独立的微服务组成,每个服务都可以独立部署和扩展,这使得应用更加灵活和易于管理。此外,云原生应用程序还具有更高的容错能力,因为即使某个服务出现故障,其他服务仍然可以正常运行。
然后,文章详细介绍了如何将 Apache Tomcat 应用服务器迁移到云原生环境。首先,需要将传统的单体应用拆分成多个微服务。这可以通过模块化开发、重构代码或者使用微服务框架来实现。接下来,需要将每个微服务部署到一个独立的容器中。这可以通过使用 Docker 等容器技术来实现。Docker 可以将应用程序及其依赖项打包成一个容器,使得应用程序可以在任何支持 Docker 的环境中运行。
在将微服务部署到容器后,还需要实现服务的注册与发现、负载均衡和配置管理等功能。这些功能可以通过使用 Spring Cloud、Kubernetes 等云原生技术来实现。Spring Cloud 是一个用于构建分布式系统的开发工具集,它提供了一系列的组件,如服务注册与发现、负载均衡、熔断器等,可以帮助开发者快速构建云原生应用程序。Kubernetes 是一个开源的容器编排平台,它可以自动化地管理和调度容器,实现服务的自动伸缩、滚动更新等功能。
最后,文章通过一个实例演示了如何将 Apache Tomcat 应用服务器迁移到云原生环境。在这个实例中,作者首先将一个传统的单体应用拆分成多个微服务,并使用 Docker 将每个微服务部署到一个独立的容器中。然后,作者使用 Spring Cloud 实现了服务的注册与发现、负载均衡等功能,并使用 Kubernetes 实现了服务的自动伸缩、滚动更新等功能。通过这个实例,我们可以看到,将传统的 Apache Tomcat 应用服务器迁移到云原生环境并不复杂,只需要遵循一定的步骤和规范即可实现。
总之,《Apache Tomcat 的云原生演进》这篇文章让我对云原生的概念和实践有了更深入的了解。通过学习这篇文章,我认识到云原生应用程序具有更高的灵活性、可扩展性和容错能力,是未来软件开发的趋势。同时,我也了解到如何将传统的 Apache Tomcat 应用服务器迁移到云原生环境,这对我今后的工作和学习具有很大的参考价值。
在实际应用中,我们可以根据项目的需求和规模选择合适的云原生技术和工具。对于小型项目,我们可以使用 Spring Cloud 等轻量级的云原生技术来实现服务的注册与发现、负载均衡等功能。而对于大型项目,我们可以使用 Kubernetes 等成熟的容器编排平台来实现服务的自动伸缩、滚动更新等功能。此外,我们还需要注意云原生应用程序的监控和日志管理,确保应用程序的稳定运行和高效维护。
总之,《Apache Tomcat 的云原生演进》这篇文章为我提供了一个很好的学习资源,让我对云原生的概念和实践有了更深入的了解。在今后的工作和学习中,我将继续关注云原生技术的发展和应用,努力提高自己在云原生领域的技能和素养。
在阅读这篇文章的过程中,我还发现了一些值得进一步学习和探讨的问题。例如,如何在保证应用程序性能的同时实现服务的自动伸缩?如何实现跨地域的服务部署和负载均衡?如何确保云原生应用程序的安全性和合规性?这些问题都是我在今后学习和工作中需要关注和解决的问题。
此外,我还注意到云原生技术的发展和应用并不是一蹴而就的,它需要我们在实际操作中不断摸索和总结经验。因此,我认为在学习和实践云原生技术时,我们需要保持一颗谦虚和好学的心态,不断地学习和尝试新的技术和方法,以便更好地应对不断变化的技术环境和业务需求。
总之,《Apache Tomcat 的云原生演进》这篇文章为我提供了一个很好的学习资源,让我对云原生的概念和实践有了更深入的了解。在今后的工作和学习中,我将继续关注云原生技术的发展和应用,努力提高自己在云原生领域的技能和素养。同时,我也会关注文章中提到的一些问题和挑战,努力寻求解决方案和优化方法,以便更好地应对实际工作中的需求和挑战。
Tomcat 是一个非常完整、完善、功能非常强大的开源项目。我们每个人开始做开发,接触的第一个项目可能就是 Tomcat。在应用服务器的发展历程中,Apache Tomcat 在其中扮演着极其重要的角色。从最初的 WebLogic 到 Jboss , 到Tomcat/Jetty , 再 到 现 在 Spring Boot 使 用 的 嵌 入式 Tomcat,我们见证了应用服务器从封闭到开源,逐步轻量化的演变过程。
文章中,威胁建模部分的分析提醒我们注意,在云原生时代,针对Tomcat的威胁建模需要结合具体的云环境和应用场景进行分析和评估,综合采取多种防护手段,以确保应用程序的安全性和稳定性。
在云原生时代,威胁建模是指对云原生环境中的威胁进行建模和评估,以便确定可能的威胁来源、攻击方式和影响程度,并采取相应措施进行预防和应对。这是云原生安全的重要组成部分,因为云原生环境具有高度动态性和复杂性,而传统安全防护手段已经不能完全适应。
Tomcat是一个开源的Web应用服务器,常用于Java应用程序的部署和运行。由于Tomcat具有广泛的使用和部署,因此也成为了攻击者针对Web应用程序的目标之一。
不同公司有不同企业文化,在威胁建模应用上面的要求和部署也大不相同。一些企业可能因为在功能设计上的一个缺陷,后期维护运营时需要花上数百倍费用来修补,当然需要在设计阶段更多下功夫。在云原生时代,威胁建模对各个流程环节的细化把控,应用的级别,也会有理念上的冲突,需要全局权衡来看待里面的安全风险和解决方案。
主要对 Tomcat 的网络 io,线程模型,内存模型,类加载机器,以及对像池技术做了一个介绍
作者通过在喜马拉雅的实践,总结出了以下几点经验:
NIO 模型主要分为三个部分 Accept 线程,Poller 线程,Catalina work 线
NIO2和 NIO区别比较图:
那么到底怎么选呢?
作者在文章中给出了建议:
Tomcat 9 和 10 默认的还是 NIO。通过官方的配置我们也能看得出来,它建议的还是 NIO。
虽然切换次数减少了,系统调用次数减少,系统的切换减少了。但是性能在我们平时功能可能感觉不到,所以对于稳定还是 NIO 这种模式。
从这张图我们可以看到,一个 Java 应用从启动到运行到性能的峰值,中间还是会经过一个比较长的时间,包括虚拟机初始化、应用初始化、应用预热等等过程。这就是 Java 应用/Java Web 应用启动比较耗时的原因。
解释执行编译的过程,Java 程序它是解释执行,它在解释的过程中会把我们的代码全部逐步地加载到内存中,因为它不知道哪一块代码需要,哪一块不需要,所以实际加载的代码会比实际要执行的代码要多很多。这个就是应用在运行过程中的额外的内存开销。
解决办法是静态编译技术。
上图右侧是微服务的框架,在适配了静态编译之后,展示了在启动速度、运行时、内存占用方面的表现,可以看到提升还是非常大的。
任何技术都有两面性,静态编译也是一样。它虽然有很多优势,但也存在着一些不足。
解决这个问题的方法是,动态特性可以通过配置文件,把程序里的动态特性做一些标注。在静态编译的时候,它会把配置文件里相关的类编译进去。
GraalVM 提供了native-image-agent 的工具,也就是在静态编译之前,我们预执行一下,这样它就可以把应用程序中所有和动态特性的内容都扫描出来了,然后把它记录在配置文件里。等到静态编译的时候,它就会把相关的东西都包含进去,这样就解决了代码里面动态特性可能会被误识别的问题。
静态编译助力 Java Web 容器云原生
作者测试的一些比较复杂的 demo,可以看到不光是简单的应用,复杂的应用通过静态编译之后,它的启动时间、运行时内存占用也都有非常明显的改善。
在信息安全领域,很重要的三个基本要素是CIA——
当我们谈论安全时,我们会想到三个支柱或者想要达到的三个理想状态,它们是保密性、完整性和可用性。
STRIDE 模型是为您的应用程序创建威胁模型的有用工具。
STRIDE 是首字母缩略词,它包含:
Apache Sling是一个基于Apache Felix OSGi容器构建的开源Web框架。它旨在通过提供一个 RESTful Web 框架来简化面向内容的 Web 应用程序的开发,该框架将 HTTP 请求 URL 映射到基于 JCR(Java 内容存储库)规范的内容资源。
Apache Sling提供了一个模块化架构,允许开发人员通过使用OSGi捆绑包来添加功能。这种模块化设计使扩展和定制框架变得容易,以满足特定的项目要求。
Apache Sling的主要功能之一是能够以各种格式呈现内容,包括HTML、JSON、XML等。这使得开发可供各种客户端(包括移动应用程序、Web 浏览器和其他系统)使用的 Web 应用程序变得容易。
Apache Sling 是一个基于 Java 开发 web 应用程序的框架。它的主要特征是 RESTful,它组织了你的数据库或者分层结构中的资源。
现在 Apache Sling 中的一条信息被称为资源,它有一个名字,非常简单的属性,可以是字符串、日期、二进制属性和可选的父属性。
这基本上就是创建分层所需要做的一切,所以你不需要弄清楚如何创建一致的资源树,你的 API 端点应该是什么,是 /user/articles /comments 等等。你已经创造了资源并将它们填到了树中,就像在数据库中创建条目一样。当然也有一些,您可以从 Apache Sling 中
获得默认表示。所以不需要写 JSON 导出器,默认 XML 等。
Apache Sling 的特殊之处在于它维护了用户的身份贯穿应用的所有层。这个的意思是,当用户请求使用浏览器或者命令行工具的时候,它自带会话 cookie 或身份验证数据。当它转到 Sling 时,Sling 能够确认用户的身份,然后将“这是 John Doe”,转给内容存储库。
Apache Sling 的另一个特点是有安全性,即 XSS 保护。这意味着当在模板的脚本中呈现内容时,HTML 模板语言引擎意识到它是在 HTML 上下文中编写的,它会根据上下文自动转义输出。如果是 HTML 标签,它知道该怎么做。同样,如果它是一个属性,它知道该怎么确保内容不脱离边界。
Apache Sling是一个功能强大的Web框架,可简化以内容为中心的应用程序的开发。它使用 OSGi 和 JCR 技术,以及其模块化架构,使其成为各种 Web 项目的灵活且适应性强的选择。
本期书籍《Apache Tomcat 的云原生演进》是一本关于Apache Tomcat的专题分享实录电子书。该书旨在全面介绍Apache Tomcat的历史和现状,并探索其在云原生时代的新形态。
在这本书中,作者将深入剖析Apache Tomcat的技术内幕,分享在实践中的经验。读者可以了解到Apache Tomcat作为一个Web服务器/应用服务器的特点和优势,以及它在构建高性能、可扩展的Web应用程序方面的作用。
此外,本书还将介绍Apache Tomcat在GraalVM静态编译中的应用实践。GraalVM是一个高性能运行时环境,可以将Java字节码编译成本地机器代码,从而提高应用程序的性能和响应速度。通过将Tomcat与GraalVM结合使用,可以实现更高效的Web容器应用。
本书对于对Apache Tomcat感兴趣的开发者和架构师来说是一本不可多得的参考资料。它不仅提供了对Apache Tomcat的深入了解,还介绍了在云原生时代如何利用最新的技术和工具来优化和扩展Tomcat的应用。
这篇文章让我对Apache Tomcat在云原生环境中的发展和应用有了更深入的了解。
我了解到Apache Tomcat在云原生环境中扮演了重要的角色。随着云计算和容器技术的普及,越来越多的应用被部署在云原生环境中。Apache Tomcat作为一款轻量级、可扩展的开源应用服务器,为云原生应用提供了坚实的基础。
其中,文章介绍了Apache Tomcat在云原生环境中的优势。例如,它能够与容器编排平台无缝集成,实现应用的高效部署和扩展;它支持多种安全机制,保障应用的安全性;它还集成了机器学习技术,实现了智能运维,提高了应用的可靠性和性能。
总之这让我认识到Apache Tomcat在云原生环境中的发展前景。随着云原生技术的不断演进和应用场景的多样化,Apache Tomcat将继续发挥其优势,为云原生应用提供更加完善的服务。
这篇文章让我对Apache Tomcat在云原生环境中的发展历程和未来趋势有了更深入的了解。
首先,我了解到Apache Tomcat在云原生环境中具有更高的性能和更强的可扩展性。通过与容器技术的结合,Tomcat可以更好地利用系统资源,实现应用的快速部署和扩展。此外,Tomcat还支持多种容器编排平台,使得应用可以更容易地被自动化和规模化。
其次,文章强调了Apache Tomcat在云原生环境中的安全性和可靠性。通过使用强大的安全机制和集成机器学习技术,Tomcat可以保护应用免受攻击和数据泄露,同时自动化一些任务,例如日志分析、性能监控和故障排除等。这使得开发人员可以更加专注于业务逻辑和创新,而不是繁琐的运维工作。
最后,我认识到Apache Tomcat在云原生环境中的发展前景。随着云原生技术的不断演进和应用场景的多样化,Tomcat将继续发挥其优势,为云原生应用提供更加完善的服务。
在探究Apache Tomcat的云原生演进过程中,我们首先需要了解其在应用服务器发展史中的重要地位。从早期的WebLogic,到Jboss,再到Tomcat/Jetty,我们见证了应用服务器从封闭到开源,再到轻量化的演变过程。而Tomcat社区作为一个活跃的开源社区,已经存在了25年之久。
书中很清晰地介绍了Tomcat的云原生发展是如何发展的,从以下几个方面进行了深入探讨:
在总结Apache Tomcat的云原生演进过程中,我们可以看到其始终秉持开源、活跃的社区精神,不断进行自我创新和优化。从WebLogic到Spring Boot,Tomcat始终与时俱进,为用户提供高效、稳定、安全的云原生应用服务器解决方案。对于企业和开发者而言,掌握Apache Tomcat的发展趋势及其在云原生架构中的应用,将有助于更好地应对数字化时代的挑战。
本书主要介绍了Apache Tomcat云原生演进的相关内容。在当前互联网技术飞速发展的背景下,云计算已经成为企业数字化转型的重要手段之一。而Apache Tomcat作为一款广泛应用于Java Web应用服务器的产品,在云原生时代也面临着诸多挑战和机遇。本书从Apache Tomcat的角度出发,深入探讨了其在云原生环境下的演进和发展趋势,并分享了一些实践经验和技术方案。
比如书中提到如何参与Apache Tomcat社区并发布新版本。
文章中并提供了详细的操作步骤。首先需要订阅开发组邮件并搜索投票的邮件,从中找到当前要发布的版本号和更新内容。接着需要将代码拉下来进行测试,可以通过手动下载或使用Git等方式实现。最后需要执行测试命令ant test来检查代码的正确性。整个过程需要耐心等待一段时间,但最终可以获得Tomcat版本发布的反馈信息。
书中还提到Web容器可观测的最佳实践及未来发展。
这一章节主要介绍了在Spring MVC和Spring Cloud Gateway场景下的URL收敛机制以及如何通过Profiling技术来进行性能优化。其中,作者提到了一些常见的Profiling技术和最佳实践,并且强调了将Profiling数据与Trace上下文、Metrics维度、业务上下文等关联的重要性。此外,文章还介绍了一款名为Pixiu的Dubbo API网关,它可以实现跨语言和跨框架的调用和集成。总体而言,这篇文章涉及的内容较为专业和技术性较强,适合有一定编程基础的读者阅读。
书中还涉及到了Dubbo Echo System-Dubbo Go Pixiu、Securing Apache Tomcat以及Secure By Default Web Applications Apache Sling等内容。这些内容不仅有助于读者深入了解Apache Tomcat的技术细节,还可以帮助读者更好地应对实际工作中的问题和挑战。总的来说,本书是一本非常实用的技术指南,适合对Apache Tomcat有一定了解或正在学习该产品的开发人员、运维工程师等人群阅读。
《CoC Asia 2023(原ApacheCon) WebServer/Tomcat 专题分享实录》是一本非常值得期待的书籍,它全面介绍了Apache Tomcat的前世今生,深入剖析了Tomcat的技术内幕,分享了在实际应用中的经验,并展望了Tomcat在云原生时代的新形态。
在本书中,作者详细阐述了io thread model,这是Tomcat的核心特性之一,对于理解Tomcat的工作原理至关重要。io thread model是指Tomcat在处理客户端请求时,使用单独的线程来处理客户端的I/O操作,如读取和写入数据。这种模型使得Tomcat能够高效地处理大量并发请求,为用户提供优秀的性能。
书中详细介绍了io thread model的工作原理,包括如何创建和维护I/O线程,如何处理I/O操作,以及如何与用户线程进行协作。此外,还介绍了在实际应用中如何优化io thread model,以提高Tomcat的性能和稳定性。
本书不仅适合对Tomcat感兴趣的技术人员阅读,也适合在实际工作中使用Tomcat的开发者和运维人员。通过阅读本书,读者将能够深入了解Tomcat的内部工作原理,掌握Tomcat的优化技巧,从而提高自己的技能水平。
我是一名 Java 开发者,经常使用 Tomcat 作为我的 Web 容器,所以对这本书很感兴趣。主要想了解Tomcat发展趋势还有优化,以及如何在云原生时代优化我的 Web 应用。我从这本书中学到了很多 Tomcat 的知识和实践,比如 Tomcat 的架构设计、性能优化
、安全配置、云原生改造等。我觉得这本书的内容很丰富,涵盖了 Tomcat 的各个方面,而且结合了喜马拉雅的真实案例,让我更容易理解和应用。这本书的写作风格也很清晰,结构也很合理,内容也很深入,让我感觉像是在听一场专业的讲座。我对这本书没有什么建议,只是觉得有些地方可以再详细一些,比如 GraalVM 静态编译的原理和步骤。我对 Apache Tomcat 的云原生演进很期待,我觉得 Apache Tomcat 是一款非常强大和灵活的 Web 容器,可以适应不同的场景和需求,也可以与其他的技术和平台进行集成和协作。我觉得 Apache Tomcat 在未来的软件开发中会有很大的作用,也会面临一些挑战,比如如何保持高性能、高可用、高安全、高兼容等。
在阅读《Apache Tomcat的云原生演进》这篇文章之后,我深感云原生时代给传统应用服务器带来的诸多挑战。文章详细讲述了Apache Tomcat如何适应云原生环境,通过增强观测能力、弹性伸缩能力和新技术方案的适应能力,以提供更优质的服务。以下是我的一些心得体会:
观测能力的重要性:在云原生时代,应用程序的生命周期管理变得尤为重要。文章提到的Prometheus和Zipkin等工具,可以帮助我们更有效地监控Apache Tomcat的运行状态,收集请求数量、响应时间等数据,及时发现并解决问题。这使我认识到观测能力对于应用程序的稳定运行至关重要。
弹性伸缩的价值:通过使用容器编排工具如Kubernetes,我们可以根据系统负载情况自动调整Tomcat实例的数量。这种弹性伸缩能力可以提高系统的性能表现,并确保应用程序在面对流量波动时能够保持高可用性。
新技术方案的适应能力:面对云原生环境的不断变化,我们需要不断学习和探索新的技术和方案。文章中提到的Prometheus、Zipkin和Kubernetes等工具只是其中的一部分。要更好地适应云原生环境,我们需要保持开放的心态,了解并掌握最新的技术趋势。
持续改进的重要性:云原生演进是一个持续的过程,我们需要不断地对现有的技术和方法进行评估和改进。通过持续改进,我们可以提高应用程序的性能,降低成本,并确保在日益复杂的环境中保持竞争力。
《Apache Tomcat的云原生演进》这篇文章为我们提供了很多有价值的见解和解决方案。通过增强观测能力、弹性伸缩能力和新技术方案的适应能力,我们可以更好地应对云原生时代的挑战,为应用程序提供更优质的服务。
《Apache Tomcat 的云原生演进》是一本关于Apache Tomcat的书籍,它全面介绍了Tomcat的历史和现状,并分享了在喜马拉雅中实践的经验。此外,它还探讨了在下一个云原生时代Tomcat的新形态,以及GraalVM静态编译在Web容器应用中的使用实践。
《Apache Tomcat 的云原生演进》是一本关于Apache Tomcat的书籍,它全面介绍了Tomcat的历史和现状,并分享了在喜马拉雅中实践的经验。此外,它还探讨了在下一个云原生时代Tomcat的新形态,以及GraalVM静态编译在Web容器应用中的使用实践。
这本书对于对Tomcat感兴趣的读者来说是一本很好的参考资料。通过阅读这本书,读者可以深入了解Tomcat的技术内幕,了解它在云原生时代的发展趋势。同时,书中还分享了一些实践经验,可以帮助读者更好地应用Tomcat在实际项目中。
总之,通过阅读《Apache Tomcat 的云原生演进》,你可以深入了解Tomcat的技术内幕,了解它在云原生时代的发展趋势,并从书中分享的实践经验中受益。在评论区留言时,可以从多个角度进行思考和表达,分享你对本书的想法和收获。
刚读了《Apache Tomcat 的云原生演进》这本书,收获颇丰。
这本书全面介绍了 Apache Tomcat 的发展历程和技术内幕,让我对 Tomcat 的前世今生有了更深入的了解。
书中分享了在喜马拉雅中实践的经验,让我对 Tomcat 在实际应用中的表现有了更清晰的认识。
此外,书中还介绍了在下一个云原生时代 Tomcat 的新形态,探索了 GraalVM 静态编译在 Web 容器应用中的使用实践,让我对未来的技术趋势有了更准确的把握。
这本书对于想要了解 Apache Tomcat 和云原生技术的读者来说是一本非常值得一读的电子书。
我刚刚阅读了《Apache Tomcat 的云原生演进》这本书,它给我留下了深刻的印象。
Apache Tomcat 是开源的 Servlet 容器,它提供了对 Java Servlet 和 JSP 的支持,并且被视为一个单独的 Web 服务器。然而,不能将它与 Apache Web 服务器混淆,因为两者并非捆绑在一起。Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。
Apache Tomcat 的应用非常广泛,它被视为网页服务三剑客之一,与 Apache 和 nginx 并列。作为一个 Servlet 容器,它可以处理 PHP, CGI, JSP 等动态网页,但本身只支持 HTML 即普通网页。因此,它通常与 Apache 结合使用,Apache 可以处理静态网页,而 Tomcat 可以处理动态网页。Tomcat 本身也内含了一个 HTTP 服务器,它可以被视作一个单独的 Web 服务器。这种特点使得它在一些场景下可以替代 Apache 的功能。
《Apache Tomcat 的云原生演进》这本书让我对 Apache Tomcat 有了更深入的了解,我从中学习到了很多关于 Tomcat 的知识,也对 Web 服务器的理解更加深入。我强烈推荐所有对 Web 技术感兴趣的人都来阅读这本书。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。