精华内容
下载资源
问答
  • Tomcat 是Java语言开发的一个Servlet容器,Servlet和Servlet容器之间的关系就像子弹和枪,互相独立发展又相互依赖。Tomcat目录结构:/bin - Tomcat 脚本存放目录(如启动、关闭脚本)。/conf - Tomcat 配置文件目录。/...

    Tomcat 是Java语言开发的一个Servlet容器,Servlet和Servlet容器之间的关系就像子弹和枪,互相独立发展又相互依赖。

    0a8b79500dcf6db969e5ae6de563ba82.png

    Tomcat目录结构:

    • /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。
    • /conf - Tomcat 配置文件目录。
    • /logs - Tomcat 默认日志目录。
    • /webapps - webapp 运行的目录。
    • /lib - Tomcat运行需要的库文件。
    • /temp - Tomcat临时文件存放目录
    • /work - Tomcat的工作目录

    Tomcat 的总体结构:

    df31df5d25eca136d303d2ea71b6cb0f.png
    • Server:整个Tomcat服务器,一个Tomcat只有一个Server;
    • Service:Server中的一个逻辑功能层, 一个Server可以包含多个Service;
    • Connector:称作连接器,是Service的核心组件之一,一个Service可以有多个Connector,主要是连接客户端请求;
    • Container:Service的另一个核心组件,按照层级有Engine,Host,Context,Wrapper四种,一个Service只有一个Engine,其主要作用是执行业务逻辑;
    • Jasper:JSP引擎;
    • Session:会话管理;

    上面简单介绍了Tomcat的模块结构,接下来结合源码深入了解Tomcat设计:

    Server 服务器

    Server代表整个Tomcat的Servlet容器,可能包含一个或多个Service服务。

    类关系图:

    460abd4f0948fb34a5c86d9d56078240.png

    StandardServer类是Server接口的标准实现。

    Service 服务

    一个Server可以包含多个Service(他们是彼此完全独立,只共享基本的JVM和系统路径上的类),一个Service负责维护一个或多个Connector和一个Container。

    8cf17a6e3152d68b498b90a9b101e188.png

    StandardService类是Service接口的标准实现。

    Connector 连接器

    用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端。

    09bc48898dc0d6708fcd02d81ed3c10f.png

    Container 容器

    Container 容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper,这四个组件不是平行的,而是父子关系,Engine 包含 Host,Host 包含 Context,Context 包含 Wrapper。

    da273ba030fdee30903b16ed06dddb23.png

    Engine 容器

    一个Service中有多个Connector和一个Engine,Engine表示整个Servlet引擎,一个Engine下面可以包含一个或者多个Host。

    af07ab9b47e996951334161a7bdde5ea.png

    StandardEngine类是Engine接口的标准实现。

    Host容器

    Host,代表一个站点,也可以叫虚拟主机,一个Host可以配置多个Context。

    3ba1379342200697730dcd503b55141d.png

    StandardHost类是Host接口的标准实现。

    Context容器

    Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。

    df36ddbc5f4af0ff242b90a668454731.png

    StandardContext类是Context接口的标准实现。

    Wrapper容器

    Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。

    0df43ad6428f36517ba978493d014a88.png

    StandardWrapper类是Wrapper接口的标准实现。

    Tomcat重要组件的关系:

    a0347edc87da925d7e3f22632249e8d8.png

    Tomcat 中其它组件

    Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

    Tomncat启动流程

    Tomcat 的 start 方法启动 Tomcat,如果你清楚 Tomcat 的系统架构,你会容易理解 Tomcat 的启动逻辑。Tomcat的启动流程很标准化,入口是BootStrap,统一按照生命周期管理接口Lifecycle的定义进行启动。首先,调用init()方法逐级初始化,接着调用start()方法进行启动,同时,每次调用伴随着生命周期状态变更事件的触发。

    90274044b59305777ba3534555a3d593.png
    展开全文
  • <div><p>项目是直接tomcat+servlet,请问这个要怎么做啊?</p><p>该提问来源于开源项目:sofastack/sofa-ark</p></div>
  • 开源软件确实给开发者极大的自由,但,同时也带来额外的麻烦. eclipse+tomcat只是其中之一.我有幸碰到了N次,在N+1次时,不得不提笔撰文以为后鉴. 和朋友共同做一个web项目,我们在开始时解决了eclipse+tomcat的所有问题...

    在eclipse中配置tomcat简直是一场灾难!

    开源软件确实给开发者极大的自由,但,同时也带来额外的麻烦. eclipse+tomcat只是其中之一.我有幸碰到了N次,在N+1次时,不得不提笔撰文以为后鉴.

    和朋友共同做一个web项目,我们在开始时解决了eclipse+tomcat的所有问题,代码运行良好.某天朋友重装了操作系统. ......

    他崩溃了,找我. 看到那些问题我感觉很熟悉,但是,我试了各种办法,还是没有解决问题.他很急躁,QQ的远程连接,也在帮倒忙.好吧,终于两个小时过后,我们搞定了.

    事后总结,两个问题.

    (一)是配置server时,指定为"tomcat的安装目录",并把"Deploy path"改为"webapps"(也许在你的机器上不需要这样,但当你遇到问题时选择这个是最好的.)

    (二)是时刻谨记每个web项目的"Context root"是否配置正确.

    以下截图供参考:

    后记:

    其实一开始我们是走在正确的道路上的,但是,奇怪的错误扰乱了我们的思路,我们渐渐偏离到错误的轨道上.

    后来,我意识到,不应该建立在"正确"的假设上.

    "兄弟,你直接启动tomcat能启动吗?" -- "为什么窗口一闪而逝?"

    "不要直接双击,到CMD里运行startup.bat吧." -- 终于发现,tomcat需要"JAVA_HOME".

    "靠,我eclipse都已经启动了的." -- "但是tomcat需要啊,你装完系统,第一步就应该配上JAVA_HOME的,被你坑了,害我判断失误."

    "还有,打开tomcat-users.xml的配置,进入Tomcat Manager" -- "我擦, ..." -- "配置下Context root 吧"

    ----------------------

    有时,一个小问题可能会影响你对编程的热情.(这也许是开源软件唯一的错吧)

    譬如,如下两图:

    一个可编辑,一个不可编辑,这当然不是因为"webapps"和"wtpwebapps"的不同导致的.

    说不定恼羞成怒的你还会把server给删掉,重新添加一个.这将会导致另一个让你沮丧的问题.(开源软件产品就是这样,有种类繁多的插件,配置.但是老手都得翻箱倒柜才能找到正确的地方.)

    先说说上面不可编辑的解决办法吧.看图说明:

    看看图就明白了,懒得组织语言了,总之就是server包含项目,就不能编辑了.清除干净了就可以编辑了.

    上面说的另一个问题,没法在我的机器上重现了,我上图简单说下:

    有朋友在删除了server之后,没法再添加tomcat了.这个时候你需要到上图的"Runtime Environments"中去编辑.

    转载于:https://www.cnblogs.com/juedui0769/p/4551833.html

    展开全文
  • 正文开始~~0 1前言Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。相信大家对于 Tomcat 已经是非常熟悉了,本...

    Hello,这里是经典鸡翅。今天鸡翅老哥带来的是 Tomcat 优化篇。Tomcat 优化所谓是可以用于装逼的利器。也是跳槽面试必问的考点。看完本篇,面试官定会对你刮目相看。正文开始~~

    0 1

    前言

    Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。相信大家对于 Tomcat 已经是非常熟悉了,本篇将介绍tomcat的常见优化。那么为什么要对tomcat进行优化呢。因为Tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。

    0 2

    Tomcat 连接协议优化

    Tomcat 连接器的三种方式:bio、nio 和 apr,三种方式性能差别很大,apr 的性能最优, bio 的性能最差。而 Tomcat 7 使用的 Connector 默认就启用的 Apr 协议,但需要系统安装 Apr 库,否则就会使用 bio 方式。

    nio如何配置

    进入到tomcat的server.xml找到connector。更改其中的protocol属性即可。修改为如下:

    protocol="org.apache.coyote.http11.Http11NioProtocol"

    apr如何配置

    apr的配置需要安装依赖。

    yum -y install openssl-develyum -y install apr-devel

    安装之后,去tomcat官网下载native组件,native可以看成是tomcat和apr交互的中间环节,下载地址是:http://tomcat.apache.org/download-native.cgi 这里下载最新的版本1.2.10。解压并安装。

    tar -xvzf tomcat-native-1.2.10-src.tar.gzcd tomcat-native-1.2.10-src/native/./configure

    至此apr安装成功,进入server.xml。更改协议将默认的protocol="HTTP/1.1"修改为

    protocol="org.apache.coyote.http11.Http11AprProtocol"。

    0 3

    Tomcat配置文件方面的优化

    配置文件方面是我们主要的tomcat优化的地方。我们将常见的优化直接在配置文件中放置。

    1、connectionTimeout="30000":网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒,可根据检测实际情况,适当修改。


    2、enableLookups="false":是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为false,则直接返回IP地址,为了提高处理能力,应设置为 false。

    3、disableUploadTimeout="false":上传时是否使用超时机制。

    4、connectionUploadTimeout="150000":上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。

    5、acceptCount="300":指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个。

    6、keepAliveTimeout="120000":长连接最大保持时间(毫秒),表示在下次请求过来之前,Tomcat 保持该连接多久,默认是使用 connectionTimeout 时间,-1 为不限制超时。

    7、maxKeepAliveRequests="1":表示在服务器关闭之前,该连接最大支持的请求数。超过该请求数的连接也将被关闭,1表示禁用,-1表示不限制个数,默认100个,一般设置在100~200之间。

    8、compression="on":是否对响应的数据进行 GZIP 压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off,压缩数据后可以有效的减少页面的大小,一般可以减小1/3左右,节省带宽。

    9、compressionMinSize="2048":表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是2048。

    示例如下:

    "tomcatThreadPool"port="8080" protocol="HTTP/1.1"URIEncoding="UTF-8"connectionTimeout="30000"enableLookups="false"disableUploadTimeout="false"connectionUploadTimeout="150000"acceptCount="300"keepAliveTimeout="120000"maxKeepAliveRequests="1"compression="on"compressionMinSize="2048"redirectPort="8443" />

    0 4

    Tomcat的jvm方面的优化

    找到 catalina.sh 在文件开头增加如下设置:JAVA_OPTS=’-Xms256m-Xmx512m’

    -Xms:表示 Java 初始化堆的大小,-Xms 与-Xmx 设成一样的值,避免 JVM 反复重新申请内存,导致性能大起大落,默认值为物理内存的 1/64,默认(MinHeapFreeRatio参数可以调整)空余堆内存小于 40% 时,JVM 就会增大堆直到 -Xmx 的最大限制。

    -Xmx:表示最大 Java 堆大小,当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃,因此一般建议堆的最大值设置为可用内存的最大值的80%。如何知道我的 JVM 能够使用最大值,使用 java -Xmx512M -version 命令来进行测试,然后逐渐的增大 512 的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息,默认值为物理内存的 1/4,默认(MinHeapFreeRatio参数可以调整)空余堆内存大于 70% 时,JVM 会减少堆直到-Xms 的最小限制。

    -Xss:表示每个 Java 线程堆栈大小,JDK 5.0 以后每个线程堆栈大小为 1M,以前每个线程堆栈大小为 256K。根据应用的线程所需内存大小进行调整,在相同物理内存下,减小这个值能生成更多的线程,但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在 3000~5000 左右。一般小的应用, 如果栈不是很深, 应该是128k 够用的,大的应用建议使用 256k 或 512K,一般不易设置超过 1M,要不然容易出现out ofmemory。这个选项对性能影响比较大,需要严格的测试。

    -XX:NewSize:设置新生代内存大小。

    -XX:MaxNewSize:设置最大新生代新生代内存大小。

    -XX:PermSize:设置持久代内存大小。

    -XX:MaxPermSize:设置最大值持久代内存大小,永久代不属于堆内存,堆内存只包含新生代和老年代。

    -XX:+AggressiveOpts:作用如其名(aggressive),启用这个参数,则每当 JDK 版本升级时,你的 JVM 都会使用最新加入的优化技术(如果有的话)。

    -XX:+UseBiasedLocking:启用一个优化了的线程锁,我们知道在我们的appserver,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还会出现线程阻塞,这个优化了的线程锁使得你的appserver内对线程处理自动进行最优调配。

    -XX:+UseConcMarkSweepGC:设置年老代为并发收集,即 CMS gc,这一特性只有 jdk1.5
    后续版本才具有的功能,它使用的是 gc 估算触发和 heap 占用触发。我们知道频频繁的 GC 会造成 JVM
    的大起大落从而影响到系统的效率,因此使用了 CMS GC 后可以在 GC 次数增多的情况下,每次 GC 的响应时间却很短,比如说使用了 CMS
    GC 后经过 jprofiler 的观察,GC 被触发次数非常多,而每次 GC 耗时仅为几毫秒。

    -XX:+UseParNewGC:对新生代采用多线程并行回收,这样收得快,注意最新的 JVM 版本,当使用 -XX:+UseConcMarkSweepGC 时,-XX:UseParNewGC 会自动开启。因此,如果年轻代的并行 GC 不想开启,可以通过设置 -XX:-UseParNewGC 来关掉。

    -XX:MaxTenuringThreshold:设置垃圾最大年龄。如果设置为0的话,则新生代对象不经过 Survivor 区,直接进入老年代。对于老年代比较多的应用(需要大量常驻内存的应用),可以提高效率。如果将此值设置为一 个较大值,则新生代对象会在 Survivor 区进行多次复制,这样可以增加对象在新生代的存活时间,增加在新生代即被回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性。该参数只有在串行 GC 时才有效,这个值的设置是根据本地的 jprofiler 监控后得到的一个理想的值,不能一概而论原搬照抄。

    -XX:+UseCMSCompactAtFullCollection:在使用 concurrent gc 的情况下,防止 memoryfragmention,对 live object 进行整理,使 memory 碎片减少。

    -XX:+UseFastAccessorMethods:使用 get,set 方法转成本地代码,原始类型的快速优化。

    -Djava.awt.headless=true:这个参数一般我们都是放在最后使用的,这个参数的作用是这样的,有时我们会在我们的 J2EE 工程中使用一些图表工具如:jfreechart,用于在 web 网页输出 GIF/JPG 等流,在 winodws 环境下,一般我们的 app server 在输出图形时不会碰到什么问题,但是在linux/unix 环境下经常会碰到一个 exception 导致你在 winodws 开发环境下图片显示的好好可是在 linux/unix 下却显示不出来,因此加上这个参数以免避这样的情况出现。

    -Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与 jmap -heap 中显示的 New gen 是不同的。整个堆大小 = 新生代大小 + 老生代大小 + 永久代大小。在保证堆大小不变的情况下,增大新生代后,将会减小老生代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的 3/8。

    -XX:NewRatio:年轻代(包括 Eden 和两个 Survivor 区)与年老代的比值(除去持久代),-XX:NewRatio=4 表示年轻代与年老代所占比值为 1:4,年轻代占整个堆栈的 1/5,Xms=Xmx 并且设置了 Xmn 的情况下,该参数不需要进行设置。

    -XX:SurvivorRatio:Eden 区与 Survivor 区的大小比值,设置为 8,表示 2 个 Survivor 区(JVM 堆内存年轻代中默认有 2 个大小相等的 Survivor 区)与 1 个 Eden 区的比值为 2:8,即 1 个 Survivor 区占整个年轻代大小的 1/10。

    -XX:+UseSerialGC:设置串行收集器。

    -XX:+UseParallelGC:设置为并行收集器。此配置仅对年轻代有效。即年轻代使用并行收集,而年老代仍使用串行收集。

    -XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集,JDK6.0 开始支持对年老代并行收集。

    -XX:OldSize:设置 JVM 启动分配的老年代内存大小,类似于新生代内存的初始大小 -XX:NewSize。

    0 5

    总结

    看到这的朋友,鸡翅老哥都忍不住夸你一句优秀,快去和同事、面试官吹牛吧。欢迎加群,共同探讨技术。

    2eaa3ff9fd72a005545a72820ba9468b.png

    0fabbfe5f910aea567f11ed661a8c228.png

    在看~

    b62fbf9635b67cc6dcbc5a6d266ffc48.gif

    捧个人场行~

    展开全文
  • 对java程序员来说,tomcat肯定都不会陌生。但,在学习Java多久后,知道它是用java写的呢? 知道后,有冲动想看看它的源码吗?想不想自己用java也写个web服务器玩呢?2010年,网上发现《how tomcat works》。 本书以...

    对java程序员来说,tomcat肯定都不会陌生。但,在学习Java多久后,知道它是用java写的呢? 知道后,有冲动想看看它的源码吗?想不想自己用java也写个web服务器玩呢?2010年,网上发现《how tomcat works》。

    本书以Tomcat4和5为基础,从最基本HTTP请求和最简单web服务器例子开始,循序渐进,分解介 绍Tomcat中容器和组件如Engine、Host、Context。另,还详细介绍如何管理Session;Tomcat如何处理配制文件server.xml,如何通过Digester库将XML元素转换为Java对象;如何通过"关闭钩子"优雅地停止服务器。层层深入直至使用JMX技术管理Tomcat中的应用程序。

    每章配有相关内容的例子,既是对理论内容的具体展现,也是帮助读者可以逐步实现自己的Java Web服务器。

    大家在阅读时,应着重把握Tomcat作者的设计思想,在此基础上,再针对具体问题进行深入学习和研究。建议边读书,边看源码(对比Tomcat8代码),更应画UML图和流程图。


    **代码和UML图:**https://github.com/Aresyi/HowTomcatWorks 排版更好的百度电子书https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60

    转载于:https://my.oschina.net/AresYi/blog/917649

    展开全文
  • 因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗...
  • <div><p>该提问来源于开源项目:ZHENFENG13/My-Blog</p></div>
  • 目录 一.TOMCAT 1.Tomcat简介 2.部署TOMCAT,测试TOMCAT ... 开源+免费 Tomcat版本:7或8 Tomcat下载与安装 http://tocmat.apache.org 安装:路径中不能存在中文和空格 2.部署TOMCAT,.
  • 来源:Tomcat那些事号外:最近整理了一下以前编写的一系列Spring Boot内容,整了个《Spring Boot基础教程》的PDF,关注我,回复:001,快来领取吧...
  • 你真的会高效的在GitHub搜索开源项目吗? chainho 公众号「Tomcat那些事儿」 ​关注他 55 人赞同了该文章 本文首发于微信公众号「Tomcat那些事儿」,关注阅读更多精彩内容。 GitHub的流行, GitHub在开源世界...
  • 因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗...
  • 你知道如何在Linux平台下安装和使用Tomcat吗?今天,千锋广州云计算老师就给大家详细的介绍一下。...Tomcat服务器部署Tomcat是一个免费的开源的Serlvet容器,与传统的桌面应用程序不同,Tomcat中的应用程序是一个WA...
  • 因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗...
  • 点击上方“Python数据之道”,选择“星标公众号”精品文章,第一时间送达作者 | Tomcat那些事儿来源| 侯树成GitHub的流行,GitHub在开源世界的受欢迎程度自不必多言。再加上之前GitHub官方又搞了个大新闻:私有仓库...
  • 初探Tomcat的架构设计

    2019-11-25 20:23:35
    因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗...
  • 因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗...
  • 文本Tag: Java 开源 Tomcat  【IT168 资讯】Google 应用系统引擎最初是以 Apache Tomcat 作为其 webserver/servlet 容器的,但最终将切换到 Jetty 上。 这个决定让许多开发人员都诧异的想问:为什么要做这样的...
  • 点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...
  • 随着SHOP++的正式版推出,JAVA开源技术又向前迈进了一大步,JAVA素来以高开发成本著称,有了资金还需要技术,这一款网购系统的推出弥补了我国JAVA电子商务软件开源项目的空白。 这款软件采用了典型的JSP技术和 ...
  • 今天我们来聊一聊Tomcat,相信大家并不陌生,tomcat是一个免费开源的web应用服务器,属于轻量级的应用程序,在小型生产环境和并发不是很高的场景下被普遍使用,同时也是开发测试JSP程序的首选。也是处理jsp动态请求...
  • 开源ERP软件

    2007-06-28 03:21:40
    恩信科技开源ERP软件基于INTERNET采用B/S结构设计... 开源ERPv6.0(ForTomcat5MySQL5)部署版  您想自己部署恩信科技开源ERP软件吗?恩信科技刚刚推出的开源ERPv6.0部署版(ForTomcat),通过安装数据库MYSQL5.0.18、t...
  • <div><p>input URL to index是怎么用?如果我要索引硬盘上的一个目录里的所有文件可以吗?</p><p>该提问来源于开源项目:iboxdb/ftserver</p></div>
  • 导语:宜信于2019年3月29日正式开源nextsystem4(以下简称“NS4”)系列模块。此次开源的NS4系列模块...其精简、轻量,实现了“脱容器”(不依赖tomcat、jetty等容器)独立运行。NS4系列框架的设计理念是将业务和逻辑进...
  •  最近郑州这边也兴起了,像北上广面试的时候需要问有技术博客,参与过开源的github项目吗,都30的人了,现在开始写我想也不晚,现在开始吧自己的学习都记录下来,之前很多东西都了解,但是缺少纪录,现在开始纪录吧...
  •  是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 1.2 Maven好处 普通的传统项目 Maven项目   分析:maven项目为什么这么小?没有jar。 需要jar吗?肯定需要。没有存在于maven项目...
  • 如果想成为技术大牛,就需要不间断学习,去汲取知识,前期不能怕辛苦,不要闲下来就打游戏,有空就得多看看各种开源项目的代码,API的设计方式,各大网站的设计架构,理解各个环节的作用开阔知识视野。零基础java...
  • 今年来看了 RocketMQ、Kafka、Dubbo 、Tomcat 的源码,之前也有读者询问过如何读源码,索性就来分享一下。其实还看了一点点 Linux、Redis、jdk8,这几个阅读的目的和上面几个是不同的,下面会提到。相信通过今天的...
  • <div><p>不能贴图吗!!! <img alt="log" src="https://img-blog.csdnimg.cn/img_convert/66dcc018ab5df8edee7cc93168ffae9a.png" /></p>该提问来源于开源项目:Dreampie/Resty</p></div>
  • 开源的软件+商业的服务=?

    千次阅读 2006-04-10 09:47:00
    问题乍一看是这个样子,而且事实上我们的很多企业也确实是这样做的,为了节约成本,后台服务器用Tomcat,前台编辑器用Eclipse,然后再找几个插件,很快就以纯人力的成本拿下N个项目,然后产品一卖,万事大吉。...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

tomcat开源吗