2024年10月tomcat基础知识(tomcat的线程配置)

 更新时间:2024-10-12

  ⑴tomcat基础知识(tomcat的线程配置

  ⑵tomcat的线程配置

  ⑶首先,这和tomcat的使用的IO模式有关

  ⑷关于JavaIO模式、以及IO处理的线程模型等基础的通信框架的知识,是Java程序员的重要、必备的内功,具体请参见尼恩编著的《ty、Zookeeper、Redis高并发实战》一书,这里不做过多的赘述。其次,也和tomcat的配置参数有关

  ⑸尤其是以下三个配置项:maxConnections、maxThreads、aeptCount。

  ⑹Tomcat的maxConnections、maxThreads、aeptCount三大配置,分别表示最大连接数,最大线程数、最大的等待数,可以通过application.yml配置文件来改变这个三个值,一个标准的示例如下:

  ⑺tomcat中maxConnections、maxThreads、aeptCount的具体含义是什么呢?参考官方文档,对三者的含义说明如下:

  ⑻官方文档的说明为:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。当队列已满时,任何的连接请求都将被拒绝。aept-count的默认值为。详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个aeptCount就是指能够接受的最大等待数,默认。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connectionrefused。

  ⑼每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:核g内存为,线程数经验值;核g内存,线程数经验值。

  ⑽这个参数是指在同一时间,tomcat能够接受的最大连接数。对于Java的阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器,默认值将是执行器中maxthreads的值。对于Java新的NIO模式,maxConnections默认值是。对于windows上APR/nativeIO模式,maxConnections默认值为,这是出于性能原因,如果配置的值不是的倍数,maxConnections的实际值将减少到的最大倍数。如果设置为-,则禁用maxconnections功能,表示不限制tomcat容器的连接数。maxConnections和aept-count的关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过aeptCount的值。

  ⑾用一个形象的比喻,通俗易懂的解释一下tomcat的最大线程数(maxThreads、最大等待数(aeptCount和最大连接数(maxConnections三者之间的关系。

  ⑿我们可以把tomcat比做一个火锅店,流程是取号、入座、叫服务员,可以做一下三个形象的类比:(aeptCount最大等待数可以类比为火锅店的排号处能够容纳排号的最大数量;排号的数量不是无限制的,火锅店的排号到了一定数据量之后,服务往往会说:已经客满。(maxConnections最大连接数可以类比为火锅店的大堂的餐桌数量,也就是可以就餐的桌数。如果所有的桌子都已经坐满,则表示餐厅已满,已经达到了服务的数量上线,不能再有顾客进入餐厅了。(maxThreads:最大线程数可以类比为厨师的个数。每一个厨师,在同一时刻,只能给一张餐桌炒菜,就像极了JVM中的一条线程。

  ⒀取号:如果maxConnections连接数没有满,就不需要取号,因为还有空余的餐桌,直接被大堂服务员领上餐桌,点菜就餐即可。如果maxConnections连接数满了,但是取号人数没有达到aeptCount,则取号成功。如果取号人数已达到aeptCount,则拿号失败,会得到Tomcat的Connectionrefusedconnect的回复信息。(上桌:如果有餐桌空出来了,表示maxConnections连接数没有满,排队的人,可以进入大堂上桌就餐。(就餐:就餐需要厨师炒菜。厨师的数量,比顾客的数量,肯定会少一些。一个厨师一定需要给多张餐桌炒菜,如果就餐的人越多,厨师也会忙不过来。这时候就可以增加厨师,一增加到上限maxThreads的值,如果还是不够,只能是拖慢每一张餐桌的上菜速度,这种情况,就是大家常见的“上一道菜吃光了,下一道菜还没有上”尴尬场景。

  ⒁菜鸟程序员需要学习哪些基础知识

  ⒂java学习是由简入难的学习过程,不要一开始就学习太过于复杂的,也不要好高骛远,java的基础很重要,所以一定要由最基础的学起,抓实基础。下面是昆明北大青鸟java培训小编结合大部分情况为大家总结下:菜鸟程序员需要学习哪些基础知识。

  ⒃首先要学习java的基础知识。

  ⒄不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对于这些新技术的理解也是一知半解,学不到根源。

  ⒅全面的JEE的web开发知识:Servlet+JSP+javaBean+TagLib,到这里做一个完整的web应用项目开发。

  ⒆jee说白了就是做网页,这时候你要从先从java里脱身出来,学些跟网页有关的东西:

  ⒇html:很简单的东西不是太笨的话半天左右即可搞定

  ⒈js:易学难精,想速度找工作不必花太多时间,随便买本javascript书略读并备查推荐:JavaScript高级程序设计;JavaScript权威指南

  ⒉数据库:如果没有基础的话,建议多花时间,至少一个月,开始建议用mysql,然后是oracle,然后是sqlserver,这段时间最关键的就是sql语言的编写。

  ⒊xml就是一种封装数据的格式,没啥好学的,练习一下怎么用domj或者jdom读写xml即可。

  ⒋jsp,servlet,tomcat:这段时间说白了就是用jsp来做个网站。

  ⒌包含全面的EJB知识:)EJB入门和无状态会话Bean;)有状态会话Bean;)BMP和CMP是实体Bean;)jms和MessageDrivenBean;)事物和安全(JTA、JTS和JAAS);)WebService的开发和应用;

  ⒍框架其实就是一些公共的工具和方法,被封装到一个盒子中供您随时调用,框架也是别人用java编写的,相当于你调用别人写好的公共模块,可以节省时间和效率。

  ⒎mvc框架:struts,struts,jsf

  ⒏or映射框架:hibernate,ibatis

  ⒐业务框架:spring

  ⒑这些都是java技术的学习知识点,和学习流程,先简单后复杂,由一个点展开,开始更广更深入的学习。这些都掌握了以后,你就学会了java,具备了基本编程的能力,但不代表你就能做出优良的产品,所以接下来,你就需要学习软件工程和算法,进一步的提升自己。想更快更扎实的学习java知识吗?赶紧到昆明北大青鸟java培训机构报名吧,选择昆明北大青鸟,你绝不后悔!

  ⒒学习jsp需要哪些基础知识

  ⒓请注意下列:*忽略你已经熟悉的步骤。*训练的时间只是代表学习好足够的基础时间,这样才能转移到下一步。、建立并且理解你的WebServer。因为Apache是免费的并且在大多数平台上工作,为训练目的推荐Apache。、保证你理解HTML/XHTML。你将需要了解html基础,特别是HTML布局中的table的使用。XHTML不久将代替HTML,学习XHTML的基础是一个好主意。许多程序员通过HTMLIDE学习HTML(集成开发环境)。因为大多数HTMLIDE产生混乱的HTMl语法,所以花时间学习手工写作html是很有必要的。因为你将会使用JSP和HTML混合编程,精通HTML语法是重要的。所以,你必须能流利地写HTML。、开始学习Java。开始学习Java.理解Java基础是很重要的。不用担心学习Swing或Java的图形方面,因为在JSP中你不会使用这些特征。集中精力在Java工作的细节,学习Java的逻辑,也在JavaBean上花时间。学习Applet是好的,但是就象Swing,JSP的大多数应用将不使用小程序。、学习JavaScript学习怎么将JavaScript在HTML中验证输入的Form元素。也学习JavaScript怎么能在一HTML页以内修改Form的元素。最后要求你能从一HTML页内的事件中触发JavaScriptFunction。、学习并且理解你的WebServer的更好的细节。熟悉WebServer的特征,这是很重要的。、建立你的JSPServer我推荐以Tomcat开始。它可以很好地运行JSP程序。当你不能在生产使用Tomcat时,学习尽可能多的知识以便于更好的运行程序。另外,许多JSP程序员使用Tomcat。因此当你遇到一个问题时,你将容易发现帮助。、开始学习JSP。基本的JSP学习通过的步骤到步骤可以完成,然后使用JSP对象和脚本写JSP程序来联系。学习JSP的另外一个方面可以学习怎么创建一个分布式的应用程序。、学习更多的JSPserver。没有关于更多的JSPServer当然也可以运行jsp程序。然而,许多JSPserver都由自己特殊的特征,可以让你更好的理解你的JSP工程。学习更多的Jspserver如何处理jsp程序是有必要的。同样也可以优化你的JSP应用程序,并且使之运行得更快而不出任何问题。、学习JDBC。JSP大多数应用将使用数据库,JDBC被用于数据库连接。经常忽略的一个事实就是,每个JDBCDriver所支持的东西是相当不同的。了解并熟悉在jsp工程上被使用的JDBCdriver的细节是很重要的。(有时这部分的学习被包含在前面Java或JSP的学习中了。到现在,你已经成为了熟练的JSP程序员。仍然有很多需要学习,你可以考虑扩展你的知识比如DHTML,XML,java证书,JSPTagLibraries或Servlets,看你想要造什么类型的网站而决定了。这些训练是JSP的核心。你不必都学习上面所有的,取决于你在工程中分配到什么任务和你已经有什么知识。但是这是我成功地训练程序员的时间表。关键的单元是时间。平均的说,个月时间确实能够训练一个人(从开始到完成)成为一个对jsp熟悉程序员。个月时间似乎很长,但要成为一个资深的WEB程序员所学的东西远远不止这一些

  ⒔如何配置unix中web服务器

  ⒕服务器应该至少有GB的可用硬盘空间和最低MB的内存。在开始之前,您需要在UNIX服务器上安装以下附加工具:Web浏览器:任何浏览器都行。JavaStandardEditionRuntimeEnvironment(JRE).发布版或更新版本:ApacheTomcat版本需要该JRE。C编译器:遗憾的是,诸如Solaris和IBM??AIX??等主流的UNIX版本没有附带这样的编译器。有关更多信息,请参阅参考资料中指向GNUG文章的链接。文件提取工具:在您的服务器上,您很可能需要gunzip、tar、bzcat,并且可能需要GNUmake和tar(gmake、gtar——可从GNU站点下载,以正确地提取文件。要检查服务器上已经有哪些工具在运行,可以运行以下命令:cd/usrFind.–name*.tar(repeatfor*make,*zip,etc.)Tomcat代码:在继续之前,您需要从Apache下载站点下载Tomcat版本的代码。将tar.gz文件保存到您的服务器。回页首Tomcat与UNIX本教程的目的不是为您提供与Tomcat相关的所有内容的权威指南,而是让您迅速奠定有关独立开发或测试服务器环境的扎实知识基础。当您具备这样的基础时,如果乐意的话,可以将其扩展到全面的企业环境。为什么使用Tomcat?为什么应该使用Tomcat而不是使用诸如Jboss、Geronimo或WebSphereApplicationServerExpress等备选方案呢?Tomcat版本本身是一个轻量级的解决方案。它没有附带所有的JavaPlatform,EnterpriseEdition(JavaEE)功能以及可在Jboss、Geronimo和IBMWebSphere??ApplicationServerExpress中找到的附加软件包,但它也不需要多少内存,即使在较小的服务器上也运行得非常快速。此外,它还是免费可用的。Tomcat是一个JavaServer??Pages(JSP)/Servlet容器,仅支持基本的Java应用程序服务器功能。它缺乏可伸缩性和JavaEE版本遵从性,这就是很少在生产环境中使用它的原因。如果您希望在企业环境中使用新服务器,更显而易见的UNIX版本是AIX和Solaris。事实上,Solaris拥有最高的企业市场份额百分比。其他UNIX选择包括FreeBSD和MacOSX。Tomcat的UNIX和Windows??安装可以在Windows计算机上运行本教程中的示例。在经过多年仅迎合UNIX以后,Apache社区通过为Windows平台进行开发而实现了此功能。然而,取决于您所查对的统计数据,%以上的Web服务器体系结构解决方案中都使用了ApacheWeb服务器和后续产品。长话短说,UNIX提供了纯多用户操作系统的稳定性、安全性和简单性,这是WindowsServer??操作系统所无法比拟的。话虽这样说,但是如果您决定使用Windows,您应该在继续之前注意UNIX与Windows之间的Tomcat设置所存在的一些区别:在UNIX服务器上提取初始安装文件可能需要bzcat、gunzip和tar或gtar。Windows服务器计算机通常使用WinZip或类似的实用工具。UNIX服务器上的PATH设置更加明显。Windows仍然使用path语句,但大部分设置是在幕后或在安装软件时自动完成的。UNIX设置和配置中的权限注意事项更为重要。UNIX服务器的卓越安全强度也是问题的一个最大根源:权限问题。在初始安装软件时,您需要正确的权限才能将软件写入到基本操作系统的文件系统——/var、/tmp,等等。此外,在将各种内部和外部软件组件连接到UNIX服务器时,始终要注意权限注意事项。始终要考虑到ID、组和正确的访问权限。在Windows中,安装是基于图形用户界面(GUI)的,而UNIX传统地使用命令行界面(CLI)。这种情况随着Gnome和其他图形环境的推出而有所改变,包括日益流行的MacOSX版本.Leopard。然而,纯粹主义者始终钟情于CLI。此外,CLI也是最好的学习方式。Windows使用.bat文件表示自动化的批处理过程,使用.exe文件表示可执行文件。UNIX缺省使用.sh或.ksh文件扩展名表示可执行脚本等等。.sh或.ksh格式取决于您使用哪一种Shell。

  ⒖Java入行需要学什么知识呢

  ⒗java所需要的学习的知识点很多,可以大致分为以下几个阶段:

  ⒘HTML:HTML标签入bai门、HTML表格、表单

  ⒙CSS:CSS选择器和简单属性、CSS定位和布局、CSS复杂选择器和高级属性

  ⒚数据库:mysql数据库安装和数据操作、约束和简单查询、复杂查询、数据库设计、oracle的安装与数据操作、oracle与mysql的对比学习

  ⒛Java语言基础、程序逻辑:环境配置和第一个语言程序-HelloWorld变量运算符条件和循环方法和数组

  Java面向对象:面向对象入门面向对象应用_管理系统类Java常用类、String相关、算法相关面向对象深入(重载、this、static继承(重写、super、初始化顺序多态(抽象类和接口、final、克隆和比较接口设计模式、对象和类的生命周期

  API:异常、日志集合集合工具类和泛型IOJDBC基础线程网络编程反射NIOJunit

  Java面向对象思想:设计模式面向对象原则

  Java底层理论:集合底层性能监控工具反编JUC

  web基础:TOMCAT/WEB程序结构/HTTP协议Servlet基础入门、servlet作用域(cookie、session、ServletContext、Cookie和Session、Servlet的交互/JSP原理及运用、JavaBean/EL/JSTL/MVC思想、JSP+Servlet+JDBC综合练习、Session购物车案例/验证码/防止表单重复提交、监听器过滤器等

  第三方工具包:连接池、事务、分页、文件上传下载、Domj/Logj/Logback

  JavaScript和jQuery框架技术:JS入门和DOM基础、DOM模型深入、jQ基础、jQ操作

  MVC动态Web开发技术:自定义MVC框架、DAO框架、前端框架(layUI

  Web开发高级运用:tomcatserver服务器配置、nginx使用、jetty配置

  网络编程:网络原理、HTTP协议基础、Linux操作系统、云服务搭建

  Spring框架、SpringMVC框架、MyBatis框架:mybatis入门、配置文件详解和动态sql的使用、mybatis管理关系映射和延迟加载、查询缓存和逆向工程、Spring入门和集成、myBatisSpringMVC入门、SSM集成、Spring配置详解、SpringAOP、Spring事务配置、SpringMVC高级功能、SpringMVC原理

  高可用、高并发、高扩展:SpringBoot、缓存、分布式、全文索引、服务中间件、myCat、云服务、人脸识别、语言识别、JVM底层+优化

  在java的学习中,最重要的表示实践,任何一个大牛都是敲出来的,光有理论知识,没有实际动手能力也是不行的。

  对java有兴趣的小伙伴们,不妨先从java入门开始!B站上有很多的java教学视频,从基础到高级的都有,还挺不错的,知识点讲的很细致,还有完整版的学习路线图。也可以自己去看看,下载学习试试。

  tomcat启动进程突然停止无错误日志输出

  问题现象:部署在中农网的mock系统启动过程中catalina.out日志启动过程日志打印突然暂停,无报错,tomcat进程停止问题定位:tomcat下logs日志都看过,没有任何出现异常日志输出,同项目下所有应用在同一台机器上,怀疑可能是资源不够问题导致,但是其它应用可正常启动,无此问题,经过比较后发现mock系统catalina.sh里未配置JAVA_OPTS=“-Xmsm-Xmxm-XssK“,而其它项目里有,加上后重启,问题不再复现。疑问:如果是启动过程中内存不够应该会报内存溢出等问题,实际没有,请教运维提供查看系统日志得方式定位。问题分析:再去掉堆内存配置等信息复现下问题,观察系统日志journalctl-xe?》》.log发现有进程被kill掉。为了理解这个错误,我们先回顾一下操作系统相关的基础知识。我们知道,操作系统(operatingsystem)构建在进程(process)的基础上.进程由内核作业(kerneljobs)进行调度和维护,其中有一个内核作业称为“Outofmemorykiller(OOM终结者)”,与本节所讲的OutOfMemoryError有关。Outofmemorykiller在可用内存极低的情况下会杀死某些进程。只要达到触发条件就会激活,选中某个进程并杀掉。通常采用启发式算法,对所有进程计算评分(heuristicsscoring),得分最低的进程将被kill掉。因此Outofmemory:Killprocessorsacrificechild和前面所讲的OutOfMemoryError都不同,因为它既不由JVM触发,也不由JVM代理,而是系统内核内置的一种安全保护措施。默认情况下,Linuxkernels(内核)允许进程申请的量超过系统可用内存.这是因为,在大多数情况下,很多进程申请了很多内存,但实际使用的量并没有那么多.有个简单的类比,宽带租赁的服务商,可能他的总带宽只有Gbps,但却卖出远远超过份以上的Mbps带宽,原因是多数时候,宽带用户之间是错峰的,而且不可能每个用户都用满服务商所承诺的带宽。这样的话,可能会有一个问题,假若某些程序占用了大量的系统内存,那么可用内存量就会极小,导致没有内存页面(pages)可以分配给需要的进程。可能这时候会出现极端情况,就是root用户也不能通过kill来杀掉流氓进程.为了防止发生这种情况,系统会自动激活killer,查找流氓进程并将其杀死。总结下来就是,tomcat启动未配置堆内存时,tomcat会无限的申请内存,申请到一定容量时候,触发了killer进程,killer进程根据算法清除掉了当前的tomcat进程。

  自学Java如何入门

  自学Java看这一篇就够啦!Java学习路线图分享给你,跟着学习吧!

  JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

  在Java基础板块中有个子模块的学习:

  数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。

  该板块包括关系型数据库和非关系型数据库。

  例如:MySQL、oracle、redis、MongoDB等。数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存。

  Javaweb阶段包括前端、数据库和动态网页。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础。

  首先,我们先看一下前端板块。该板块主要包括如下几个模块:

  学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。

  动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的。

  该板块包括Javaweb核心技术、包括Servlet、Request、Response、Cookie和Session等,通过这些技术的学习可以完成动态站点开发,可更好的完成服务器端与客户的交互,让页面的数据“动”起来,做出小型的应用系统。

  编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强,对后期自动以框架和对一些服务框架的底层理解做支撑。

  编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率。

  学习该阶段,可以对原有项目进行优化从而使程序更快更稳定。

  JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

  在Java基础板块中有个子模块的学习:基础语法,可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程,应用服务器学习基础,完成数据的远程传输。

  学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。

  使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。

  热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。

  该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求。

  随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。

  主要包括如下模块:Dubbo,高性能的RPC服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;SpringCloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。

  该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础

  中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。

  学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术。

  不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器。

  该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷!

  容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率。该板块包括容器化技术Docker和其平台管理引擎Kuberes,其中,Docker是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。而Kuberes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kuberes的目标是让部署容器化的应用简单并且高效。通过该板块的学习,你可以通过上述技术快速搭建环境,节省开发时间,提高开发效率。

  虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案。通过分析实际业务来学习这个解决方案技术集,完全可以达到中级甚至高级工程师水平。

  Tomcat与javaweb技术详解这本书过时了吗

  你好,Tomcat与javaweb技术详解应该属于基础知识的书,只要学习Javaweb基础方面,它不会过时。

您可能感兴趣的文章:

相关文章