精华内容
下载资源
问答
  • 提起高性能JAVA IO大家一定会想到NIO,AIO等等,然而我们的Tomcat是java写的一个优秀的开源的web服务,它与NIO有什么关系呢?我们的tomcat应用是不是早就跑在nio之上了呢? 答案是Tomcat是支持NIO的,到Tomcat7为止...

    Tomcat常用的三种IO模式

    提起高性能JAVA IO大家一定会想到NIO,AIO等等,然而我们的Tomcat是java写的一个优秀的开源的web服务,它与NIO有什么关系呢?我们的tomcat应用是不是早就跑在nio之上了呢?

    答案是Tomcat是支持NIO的,到Tomcat7为止,默认的Tomcat包里面的配置并没有开启NIO连接器。下面我先简单介绍一下Tomcat的三种IO策略:BIO,NIO,APR。

    BIO:大家是否记得我们初学网络编程的时候,我们写的第一个服务器程序……,BIO是Tomcat默认开启的IO模式,性能灰常底下,没有经过任何的优化处理。

    NIO:利用JAVA的非阻塞IO技术,开启这个模式非常简单,只需要把tomcat子目录conf下面的server.xml修改一下即可,找到下面,将protocol改为org.apache.coyote.http11.Http11NioProtocol即可。

    1
    2
    3
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    上面是默认的配置,我们改成下面这个样子:
    1
    2
    3
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    这样重启你的tomcat就好,有没有被easy到?

    APR:这种模式使用起来最优门槛,除非要将上面的配置改成下面这样:

    1
    2
    3
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    还需要下载APR模式需要的库,因为这种模式是基于JNI的,即JAVA调用本地库的方式来进行IO。

    Tomcat对静态资源的处理

    大家都知道,Tomcat为我们提供了一个专门用来处理静态资源的Servler,它叫DefaultServlet,看看这个Servlet的源代码,其中对资源处理方法的实现里面有下面这样一段:

    1
    2
    3
    4
    5
    6
    if (ostream != null) {
                        if (!checkSendfile(request, response, cacheEntry, contentLength, null))
                            copy(cacheEntry, renderResult, ostream);
                    } else {
                        copy(cacheEntry, renderResult, writer);
                    }

    作者的意思是这里判断如果没有满足使用sendfile条件的情况下我们就直接将静态资源数据读取,写入response的输出流,那么如果满足使用sendfile条件,这里是不做处理的,这里会把资源文件的大小即名称放在request的属性集合里面带给底层,让底层来处理。

    Tomcat定义了三种类型的Endpoint,他们分别是BIO,NIO及APR三种模式下底层网络处理的具体实现,比如NioEndpoint里面调用了FileChannel的transferTo方法,transferTo会利用操作系统的sendfile系统调用来将磁盘文件输出到网络。同样AprEndpoint最为哦APR方式的实现会调用Native来实现IO。

    send和sendfile

    Tomcat中的NIO模式和APR模式对静态文件处理的高效根源在于地从对不同的系统调用,和普通的文件传输不同的是NIO和APR方式都使用的操作系统的sendfile系统调用来对文件进行IO,而普通的方式是使用了read和write系统调用。name这两种类型有什么不同呢,这是本文的关键点:

    文件读取以发送至网络流程图

    先看看上面这张图,使用read和write方式的时候,将文件输出到网络的流程是这样的:

    1,read操作先将线程从用户态切换到内核态,将文件从磁盘读到内核缓冲器。

    2,read将文件从内核缓冲区读到用户地址空间,同时线程从内核态切换到用户态。

    3,read返回。

    4,对文件进行处理

    5,write将线程从用户态切换到内核态,将文件写到操作系统内核网络部分的缓冲区。

    6,write将线程切换到用户态并返回。

    上面的的过程涉及到四次操作系统内核态与用户态的切换,代价是昂贵的。由于事实上我们并不需要对静态文件进行处理这个步骤,为什么要绕一个圈子呢从内核copy到用户态又copy到内核态呢,因此sendfile来了。

    我们再来看看sendfile的处理流程:

    1,将文件读到操作系统的内核缓冲区。

    2,将文件copy到操作系统跟网络相关的内核缓冲区。

    上面不会涉及到内核态到用户态以及用户态到内核态的切换,sendfile是linux2+version提供的系统调用,而且在linux2.4+version版本之后提供能zero-copy特性,上面这些说明了sendfile为我们的程序提高了问静态文件处理的能力和性能。

     

    http://www.importnew.com/16462.html

    展开全文
  • 想着,是不是可以直接查看一些开源软件的启动脚本快速提升shell编写能力。 下面来看看tomcat bin目录下的 start.sh 文件到底在做什么呢? 源码解析 #!/bin/sh # Licensed to the Apache Software Foundation (ASF) ...

    前些天,花了一些时间整理linux shell编程。看了一些简单的语法后,觉得还是不够深刻。想着,是不是可以直接查看一些开源软件的启动脚本快速提升shell编写能力。
    下面来看看tomcat bin目录下的 start.sh 文件到底在做什么呢?

    源码解析

    #!/bin/sh
    
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    # -----------------------------------------------------------------------------
    # Start Script for the CATALINA Server
    # -----------------------------------------------------------------------------
    
    # Better OS/400 detection: see Bugzilla 31132
    os400=false
    case "`uname`" in
    OS400*) os400=true;;
    esac
    
    # resolve links - $0 may be a softlink
    PRG="$0"
    
    while [ -h "$PRG" ] ; do
      ls=`ls -ld "$PRG"`
      link=expr "$ls" : '.*-> \(.*\)$'`
      if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
      else
        PRG=`dirname "$PRG"`/"$link"
      fi
    done
    

    上述为第一段代码块:默认设置变量os400=false,接着判断系统是不是属于OS400,如果uname的结果为OS400开头的字符串,那么会匹配上 OS400*,并且 赋值os400=true
    第二段代码块:设定执行的脚本名称为PRG,比如执行start.sh脚本的时候,如果执行的命令是/tomcat/bin/start.sh,那么PRG=/tomcat/bin/start.sh;如果执行命令为:./bin/start.sh,那么PRG=bin/start.sh
    第三段代码块: 通过一个while循环判断"$PRG"的路径是不是一个链接,如果是一个链接,那么找到其链接源,直到"$PRG"不是一个链接时,循环结束;代码中while循环条件-h是判断"$PRG" 是否为链接,如果是链接进入循环,否则跳出循环;循环内ls -ld "$PRG"是获取"$PRG"脚本路径的目录。通过正则expr来匹配'.*-> \(.*\)$',若匹配上,则是链接,否则为非链接。匹配结果重定向至/dev/null,这个文件可以理解为一个大窟窿,多大的文件都能吃掉。若匹配上,匹配结果重新赋值给PRGPRG="$link"。若没有匹配上,那么赋值执行文件的完整路径给PRG。正常的链接文件,会有下面的特殊格式:

    [root@test-cdh bin]# ll /usr/bin/python3
    lrwxrwxrwx 1 root root 38 10月 25 2017 /usr/bin/python3 -> /usr/local/python3/install/bin/python3
    
    PRGDIR=`dirname "$PRG"`
    EXECUTABLE=catalina.sh
    
    # Check that target executable exists
    if $os400; then
      # -x will Only work on the os400 if the files are:
      # 1. owned by the user
      # 2. owned by the PRIMARY group of the user
      # this will not work if the user belongs in secondary groups
      eval
    else
      if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
        echo "Cannot find $PRGDIR/$EXECUTABLE"
        echo "The file is absent or does not have execute permission"
        echo "This file is needed to run this program"
        exit 1
      fi
    fi
    
    exec "$PRGDIR"/"$EXECUTABLE" start "$@"
    
    

    上述代码块,第一段代码块:获取本脚本的真实执行目录赋值给PRGDIR,定义变量EXECUTABLE。当$os400为真时,执行eval命令;为假时,判断"$PRGDIR"/"$EXECUTABLE"文件是否为可执行/存在的文件,若不是可执行/存在文件,给出echo提示;若是存在的可执行文件,那么执行命令:"$PRGDIR"/"$EXECUTABLE" start "$@"。比如我执行的start.sh的脚本的完整路径(非链接)为:/tomcat/bin/start.sh,并且命令后传参为arg1 arg2 arg3,那么上述命令实际为:/tomcat/bin/start.sh catalina.sh arg1 arg2 arg3$@$*都是表示列表中的所有参数。
    注:eval后的接一个命令参数,如果后面的参数是一个变量,那么会将变量转换成其真实命令。如下:

    [root@host2 ~]# f="head -n 10 install.log"
    [root@host2 ~]# echo $f
    head -n 10 install.log
    [root@host2 ~]# eval $f
    Installing libgcc-4.4.7-4.el6.x86_64
    warning: libgcc-4.4.7-4.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Installing fontpackages-filesystem-1.41-1.1.el6.noarch
    Installing m17n-db-1.5.5-1.1.el6.noarch
    Installing setup-2.8.14-20.el6_4.1.noarch
    Installing xml-common-0.6.3-32.el6.noarch
    Installing filesystem-2.4.30-3.el6.x86_64
    Installing kernel-headers-2.6.32-431.el6.x86_64
    Installing iso-codes-3.16-2.el6.noarch
    Installing xkeyboard-config-2.6-6.el6.noarch
    

    上述echo $f能将变量替换成真实命令,而eval $f先将变量翻译成命令head -n 10 install.log,而后执行该命令结果。eval对其后的命令进行了二次扫描。
    上述最后一行代码exec "$PRGDIR"/"$EXECUTABLE" start "$@"exec命令也有讲究。exec执行其后的命令时,会关闭当前进程,建立一个新进程。此进程比较特殊,此进程的pid与被关闭的进程pid是同一个pi,所以看上去并不会产生新的进程。同时,若exec后的命令执行后,则退出当前进程。如下:

    [root@host2 ~]# cat demo.sh
    #!/bin/bash
    
    f="head -n 10 install.log"
    exec echo "execute illegal command:"
    exec ls_nocommand
    exec eval $f
    [root@host2 ~]# ./demo.sh
    execute illegal command:
    

    exec执行命令成功后,后续的命令并未执行

    [root@host2 ~]# cat demo.sh
    #!/bin/bash
    
    f="head -n 10 install.log"
    echo "execute illegal command:"
    exec ls_nocommand
    exec eval $f
    [root@host2 ~]# ./demo.sh
    execute illegal command:
    ./demo.sh: line 5: exec: ls_nocommand: not found
    
    

    exec执行命令成功后,后续的命令并未执行

    展开全文
  • Apache与Tomcat关系

    2017-11-12 02:13:00
    Apache与Tomcat都是提供Web服务的服务器软件。但很多人对两者有什么联系, 两者到底是不是同一个东西,两者到底有没有依赖等这类问题难以回答,... Apache是一款开源的Web服务器产品,大部分都用C语言编写(你直接...

    Apache与Tomcat都是提供Web服务的服务器软件。但很多人对两者有什么联系, 两者到底是不是同一个东西,两者到底有没有依赖等这类问题难以回答,甚至混淆这两者。作为开发人员,我也有同样的困惑,今天查阅了很多资料,将这些资料贴出来,供学习使用。

    1、Apache是什么

          Apache是一款开源的Web服务器产品,大部分都用C语言编写(你直接理解成用c语言编写算了)。全世界使用量排名第一的Web服务器。另外,Apache也是一个开源软件基金会的名字,其下管理很多开源项目,也包括这款叫Apache的Web服务器软件。


    2、Tomcat是什么

         Tomcat同样是一款开源的Web服务器产品,使用Java语言编写。也同Apache服务器一样,提供Web服务,但Tomcat主要用于承载JSP、CGI等服务端处理脚本,并提供运行环境,处理客户端请求,再输出HTML返回给用户。这类在服务端动态加载数据(可更改的数据)并回传给客户端浏览器的网站叫动态网站或动态网页。相对的,还有一类叫静态网页的,就是数据不变动的网页或网站,这类页面多是HTML或HTML文件集合。

         再提一点Tomcat项目也是挂在Apache开源软件基金会下的,作为一个项目由核心团队和全世界的程序员共同维护和开发。


    3、Apache与Tomcat比较

    相同点:

           Apache与Tomcat都是Web服务器,都支持跨平台,都是开源项目

           Apache与Tomcat都属于Apache开源软件基金会下的项目,并运行在全世界很多服务器上

    不同点:

          Apache服务器是C语言编写,其主要的侧重点是并行能力和均衡负载,Tomcat服务器用Java编写,主要侧重于作为一个Servlet容器,做到后台动态处理,由Java和JRE处理。

          Apache服务器只支持静态页面的请求处理,并不支持动态网页的处理。要完成动态处理,必须通过插件或作为Apache扩展模块,在启动时动态加载到Apache扩展接口供调用。而Tomcat就支持动态网页处理,使用CGI或Java,我们对Java的使用更多,所以大部分时候说到Tomcat就能想到JSP。


    4、分析与说明

           Apache主要提供的是静态页面处理,对于动态页面处理这类问题,多是作为其扩展的一部分由其他语言或第三方插件控制。可以这样想,Apache提供了一个中转,将不同的数据请求分发到各个对应的模块,PHP请求发送 到对应的php模块,CGI请求则创建一个进程并调用CGI脚本,这时候当对应模块处理完,将作为输出返回给Apache服务器,Apache服务器再将这些结果(HTML页面)返回给客户端浏览器。

           而Tomcat虽然也是个服务器(这里我们只讨论作为Java Servlet容器的实现),接受的只能是对JSP的请求。Tomcat是按照J2EE发布的JSP和Servlet标准实现的,完全支持这两种标准,被作为一个Servlet容器实现。当Tomcat接收到JSP页面请求时,先用Tomcat解析,得到相应的参数,再找到对应的Servlet路由,之后调用Servlet接口中的对应方法(Get、Post、Delete、Put等),处理客户端传回的数据或请求动作,最后得到输出,返回给Tomcat,Tomcat再使用JSP渲染出HTTP,传回客户端浏览器。


     本文转自 技术花妞妞 51CTO博客,原文链接:http://blog.51cto.com/xiaogongju/1946265

    展开全文
  • tomcat下读取文件异常

    2020-12-09 05:55:33
    <div><p>我在使用你的代码在tomcat下运行时读取的文件长度不正确,导致无法正确解析文件。 读取第一个字节时(版本号)是正确的但是第二个字节开始就不对了。 我观察发现貌似是classloader不一样&...
  • Tomcat 是由 Sun 公司软件架构师詹姆斯·邓肯·戴维森开发的 Web 应用服务器(作者是不是《猫和老鼠》的影迷?),由于它开源免费、技术先进、稳定性好而深受 Java 爱好者的喜爱,在中小型系统和并发访问不是很多的...

    简述

      大部分入了 Java 开发这个坑的朋友,都需要把自己的网站发布到 Web 服务器上,相信也听过 Tomcat 的鼎鼎大名。Tomcat 是由 Sun 公司软件架构师詹姆斯·邓肯·戴维森开发的 Web 应用服务器(作者是不是《猫和老鼠》的影迷?),由于它开源免费、技术先进、稳定性好而深受 Java 爱好者的喜爱,在中小型系统和并发访问不是很多的场合中被普遍使用。

      关于 Tomcat,我本人也一直是只闻其名,未见其人(本人之前是 .NET 开发),最近因为项目需要,使用了一段时间,现在系统的整理一下,共享出来,与诸君共勉,不足之处,欢迎指正!

    安装与配置

      官网:http://tomcat.apache.org/

      大家可以在官网上下载需要的 tomcat 版本,本文以 tomcat 7.0.57 在 windows 下的安装为例。

    下载压缩包解压后即可,一般来讲,解压完成后 Tomcat 就可以用了,但是网上还有很多关于 Tomcat 环境变量配置的文章,这里也顺便讲一下(如果你需要使用到多个 Tomcat 版本,建议最好不要配):

    1. 新建变量名:“CATALINA_BASE”和“CATALINA_HOME”赋值为“D:\Runtime\tomcat_7.0.57”;
    2. PATH 变量后追加变量值:“%CATALINA_HOME %\lib;%CATALINA_HOME %bin”。

    目录结构

      Tomcat 解压完成后,打开文件夹可以看到如下图所示的文件结构:

     那么这些目录的作用如下:

    • /bin:存放用于启动和关闭 Tomcat 的可执行程序及其相关内容;
    • /conf:存放 Tomcat 服务器的配置文件;
    • /lib: 存放 Tomcat 运行所需的 jar 包;
    • /logs:存放 Tomcat 运行时生成的日志文件;
    • /temp:存放 tomcat 的临时文件;
    • /webapps:存放的是我们开发的 web 应用;
    • /work: 存放 JSP 编译后产生的 class 文件;

    运行应用

      进入到 tomcat 的 bin 目录下,点击 startup.bat 即可运行 tomcat 应用,出现下图所示界面即表示运行成功。

      运行成功后,可以在浏览器中访问 http://localhost:8080/ 就能够进入 tomcat 的欢迎界面啦。

    发布网站

      现在,我们通过一个简单的示例,演示一下如何发布和访问一个 tomcat 站点。

      首先,我们需要新建一个 html 页面,将其命名为 hello.html 放置在 welcome 文件夹下;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Welcome</title>
    </head>
    <body>
        Hello world!
    </body>
    </html>

      然后,将 welcome 文件夹拷贝到 tomcat 的 webapps 文件夹下(前面我们已经提到过这个文件夹下是用于存放我们开发的 web 应用);

      接着,我们需要修改一点配置,进入到 tomcat 的 conf 文件夹下,打开 server.xml 文件,找到 Host 节点,在其中追加 <Context path="" docBase="/welcome" /> 配置:

          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <!-- SingleSignOn valve, share authentication between web applications
                 Documentation at: /docs/config/valve.html -->
            <!--
            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
            -->
    
            <!-- Access log processes all example.
                 Documentation at: /docs/config/valve.html
                 Note: The pattern used is equivalent to using pattern="common" -->
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        
            <Context path="" docBase="/welcome" />
          </Host>

      最后,运行 tomcat 后,即可在浏览器中通过 http://localhost:8080/hello.html 访问到我们发布的网站了,至于为什么要修改 server.xml 中的配置节点,这个会在后续的文章中说明。

    转载于:https://www.cnblogs.com/krockey/p/5065904.html

    展开全文
  • 最近打算做一个属于我自己的个人网站,本来打算使用微软的.NET来进行开发的,但是听朋友说有一个基于java的开源框架JFinal和.NET的开发模式很像,同时兼备了.NET快速开发和java安全性两方面的优点。出于好奇本人打算...
  • <div><p>使用SDK调用TextProcess接口,返回回答的内容一直是 “对不起࿰...还是说Tomcat服务器需要做一些什么额外的配置。</p><p>该提问来源于开源项目:TencentCloud/tencentcloud-sdk-java</p></div>
  • win7+tomcat6.0 -404异常

    2020-12-27 11:23:25
    我的tomcat在C:\Program Files\Apache Software Foundation\Tomcat 6.0 opt文件夹在C盘根目录 如果是opt找不到是不是,但是启动成功了 访问http://127.0.0.1:9010/应该是能访问得到呢?我看默认是这个...
  • <div><p>我按照Wiki里面的配置到tomcat的教程,配置了。然后修改了,启动类。最后也打包成了war文件。把它放到tomcat的webapps目录下...</p><p>该提问来源于开源项目:ZHENFENG13/My-Blog</p></div>
  • <div><p>比如说上传头像的操作 如果用main函数启动,那么上传的头像在工程的根目录下; 如果加载在Tomcat下启动,...</p><p>该提问来源于开源项目:tomoya92/pybbs</p></div>
  • true from registry 192.168.2.236:2181 to consumer 192.168.2.186, supported protocol: [dubbo, http, injvm, mock, redis, registry, rmi, thrift]</p><p>该提问来源于开源项目:dangdangdotcom/dubbox...
  • 背景:最近系统频繁被压测,使用100并发线程压测到时候,发现性能一直会越来越慢,最后稳定在2s左右就是上不去。当然我首先想到到是后台...Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,.
  • 服务器端:tomcat为应用服务器,spring作为轻量级框架,集成hessian协议发布web服务 客户端:Swing+Hessian 三层结构: 客户端提供用户操作数据输入输出 服务层实现业务逻辑(操作数据库) 数据库层负责存储...
  • Elastic-job

    2020-07-13 13:21:00
    1、首先我们得先弄明白为什么有定时自动任务了,为什么还要再写一个调度任务的框架,首先自动任务是可以实现操作,但是如果你在分布式下面的话,一个Tomcat跑一个自动任务是不是就相当于跑重复了,或者你说可以把...
  • 运行tomcat报错,信息如下: ype Exception Report <p>Message Servlet.init() for servlet [mvc-dispatcher] threw exception <p>Description The server encountered an unexpected condition that ...
  • 分析java.lang.OutOfMemoryError: PermGen space 发现很多人把问题归因于: spring,hibernate,tomcat,因为他们动态产生类,导致JVM中... 但问题是为什么这些王牌的开源会出现同一个问题呢,那么是不是更基础的原因呢?t
  • 我们知道,线程池不光是Java里有涉及,各大开源框架、中间件、数据库等都会设计不同类型的线程池,比如Dubbo、Tomcat、MySQL等等等,因为使用线程池的好处如下: 通过重复利用已经创建的线程降低线程创建和销毁...
  • Resumable上传组件是一个开源的上传组件,支持断点续传等。Resumable这个组件好像是歪果仁写的。因此中文名文件的上传有点蛋疼。这个上传组件是在客户端将文件分块上传(使用HTML5),在后台根据文件名来判断上传的...
  • elk搭建

    2019-09-26 19:17:48
    Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案。在志邦项目部署了三台服务器到生产环境,生产环境用了nginx做负载均衡,通常,日志被分散的储存不同的服务器(tomcat)上。如果你管理数十上百...
  • Android网络编程

    2021-01-03 13:54:41
    新闻客户端1、安装tomcat2、写新闻客户端3、smartimageview4、自定义smartimageview七、三种提交数据到服务器的方式1、使用HttpURLConnection方式把数据提交到服务器2、接口HttpClient3、使用开源项目...
  • <div><p>不知道是不是有中文的原因 返回结果: <code><xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid&...
  • 验证码识别这项技术并不是本工具类的功能,而是通过一个开源的api来识别验证码的。 这里做了一个简单的封装,主要是用来解决登陆时的验证码的问题。... 轻松把玩HttpClient之封装HttpClient工具类(六),封装输入...
  • 有众多的选择,这就是开源的好。 :)</span></p> <p>-----------------------------------------------------------------------------------------------------------------------------------------------------...
  • 一个开源的关系数据库,是从伯克利写的 POSTGRES 软件包发展而来的 MongoDB 基于分布式文件存储的数据库 六、操作系统 操作系统原理  进程管理、死锁、内存管理、磁盘设备 Linux  基础核心概念、常用命令...
  • Tomcat 7.0.68+CentOS 6.7 有關hanlp.properties的配置應該是正常,因為使用Solr Admin GUI的analysis命令輸入任何一段中文文章,如果是簡體字,則可以依據辭典來正常分詞,但是如果輸...
  • 2.2.7 随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数 2.2.8 求2~2000的所有素数.有足够的内存,要求尽量快 2.2.9 A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf...
  • 优化静态库工程的网络框架的代码,解决了由于更换第三方开源框架导致业务逻辑代码大范围修改的问题。 总结出一套,集成方唤起支付插件,以及支付插件自己退出界面的方法。 2013年11月-2014年01月 UI后台管理...
  • SSO-WebDemo

    2013-08-12 20:25:57
    样例部署和运行的环境有一定的要求,需要符合Servlet2.3以上标准的J2EE容器才能运行(例如Tomcat5,Sun Application Server 8, Jboss 4等)。另外,身份认证服务需要JDK1.5的运行环境。之所以要用JDK1.5是因为笔者...
  • 1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

tomcat是不是开源的