Tomcat

spring 单例 并发访问

。_饼干妹妹 提交于 2020-12-22 23:46:51
一、TOMCAT 并发请求 1、tomcat模式有 BIO、NIO、APR三种模式,操作系统对进程的线程数有限制,Windows:2000,linux:1000;Tomcat默认配置的最大请求数是150,[即150个bio线程],远超过150的最好就采取集群 2、BIO模式,即阻塞IO,默认配置。 server.xml:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 每个请求都需要创建一个线程进行处理,这种模式下的并发量受到线程数量的限制,胜在模式成熟稳定,BUG极少 3、NIO模式,即非阻塞IO,JAVA NIO实现理论基础,实现较复杂,[建议可采用netty框架来快速实现] server.xml:<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" /> 在性能上高于阻塞式的,每个请求也不用额外创建一个新线程进行处理,并发能力能BIO强;适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂 4、APR模式,

jsp+servlet搭建在线投票问卷系统

只愿长相守 提交于 2020-12-22 20:50:50
点赞再看,养成习惯 程序帮QQ:1022287044 开发环境准备: jdk1.8 tomcat8 mysql5.7 intellij IDEA 系统采用技术: jsp+ servlet mvc三层架构模式 jdbc jQuery+ajax ECharts 4.3.0 项目介绍 用户端 <br> 用户端可以查看问卷列表并参与问卷调查 查看个人参与的调查报告以及整个问卷情况 管理端 <br> 问卷的新增和维护 用户信息维护 项目设计 运行效果 登录 添加问卷 问卷投票列表 投票详情 数据库表 代码结构截图 关键代码: 添加问卷: public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String questionTitle = request.getParameter("questionTitle"); //问卷标题 String qId = request.getParameter("qId"); //问卷id Integer ops =Integer.valueOf(request.getParameter("ops"));//具体几组 String doType=request.getParameter("doType"); //操作类型

Nginx实现高速并发处理的原理详解

大憨熊 提交于 2020-12-21 16:11:14
  众所周知,Nginx是当下最流行的Web服务器,它具有很强的负载均衡,反向代理,邮件代理以及静态缓存的功能。在提供这些功能的同时,Nginx的性能也极其优秀,可以轻松支持百万、千万级的并发连接,能够为Tomcat、Django等性能不佳的Web应用抗住绝大部分外部流量。那么,Nginx是如何实现高速并发处理呢?这就要从它优秀的架构设计来说起。   框架结构   如下图所示,Nginx结合采用多进程和IO多路复用的结构处理并发客户请求。   Master进程主要负责信号处理,监控和管理Worker进程。 Master进程本身不处理具体业务。Worker进程处理具体业务,包括处理连接请求和网络读写事件的处理。多个worker进程可以独立地处理各自的客户连接。Worker进程之间通过信号量和共享内存进行通信。      通过配置与系统CPU等量的worker进程,可以实现某一个进程绑定某一个特定CPU从而减少系统开销。在每一个worker进程处理多个client并发连接请求时,Nginx 采用IO多路复用技术在一个进程内同时处理多个client的网络读写事件。与多进程/线程处理多连接请求模型相比,IO多路复用可以减少大量的进程调度带来的系统开销,从而提高系统整体的处理性能。   并发处理方式      网络服务器在处理并发处理方式,如上图socket处理流程所示

Tomcat7升级Tomcat8可能遇到的问题

夙愿已清 提交于 2020-12-21 07:54:31
1、Cookie domain的前缀问题 domain的设置可以是“ xxx.yyy.com ”或“. xxx.yyy.com ”。两者的区别在是否有前缀“.”。 区别:不带“.”的cookie只能应用在一级域名,不能应用到二级域名“ zzz.xxx.yyy.com ”;而带“.”的cookie既可以应用在一级域名,也可以应用在子域名“ zzz.xxx.yyy.com ”中 Tomcat7升级到Tomcat8后,CookieProcessor由默认org.apache.tomcat.util.http.LegacyCookieProcessor的实现在Tomcat8及其以后的版本中改为了org.apache.tomcat.util.http.Rfc6265CookieProcessor的实现,升级后的实现对Cookie的domain前缀进行了校验,不允许使用“.”或“-”作为前缀,否则会导致抛出异常“An invalid domain [{0}] was specified for this cookie” 解决方式: 在Tomcat的conf/context.xml中新增: <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" /> 参考: https:/

JDK下载与安装、 Eclipse下载与使用、 Tomcat下载与使用、 MySQL安装与使用

安稳与你 提交于 2020-12-20 07:10:18
一、JDK下载与安装: 1.进入oracle官网: https://www.oracle.com/cn/sun/ 2.在首页的菜单-->开发人员-->Java 3.找到SE的下载,如图: 4.下载你想要下载的版本: 5.我下载的是1.8版本的jdk: 6.下载完成点击安装,安装到你想安装的位置(位置会使用,要记住(一般不能包含中文路径)),安装完成,配置环境:   控制面板-->系统和安全-->系统-->高级系统设置-->高级-->环境变量-->系统变量-->寻找 Path 变量-->编辑在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)   同样:系统变量-->新建 CLASSPATH 变量-->变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点) 7.验证是否配置成功:  打开命令窗口输入jdk -version 二、Eclipse的下载与使用: 1.进入官网: https://www.eclipse.org/ 2.点击下载 3.安装: 一路安装完成 4.使用: eclipse可以安装很多的插件,也可以安装中文插件等; 要进行web开发就必须下载web开发的相关插件: 打开eclipse

jdbc-mysql 中文乱码解决

白昼怎懂夜的黑 提交于 2020-12-20 03:00:38
在客户端或者JDBC连接时定制支持中文的编码格式(通常使用UTF-8),这样插入数据的时候,让mysql为自动为我们转码,可行的办法有两种: 1、如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题 jdbc.url= jdbc: mysql: //127.0.0.1: 3306/mydb?useUnicode= true&characterEncoding= UTF-8 2、如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的,而是通过数据源自身的配置生效,比如下列配置: <!-- Tomcat data source --> < bean id= "dataSource" class= "org.apache.tomcat.jdbc.pool.DataSource" > < property name= "driverClassName" value= "${jdbc.driverClassName}" /> < property name=

工作中常用的Linux命令

寵の児 提交于 2020-12-19 11:14:27
1、Linux软件安装命令 2、压缩解压缩 unzip -d apache-tomcat.zip tar -zxvf apache-tomcat.zip ---解压缩 tar -zcvf apache-tomcat.zip apache-tomcat --压缩apache-tomcat目录下的所有文件 3、在指定目录下搜索文件 find / -name " a.txt" 在根目录下搜索 find . -name "[a-z][A-Z][0-9]" 在当前目录下搜索 find /ect -mtime -5 查看5日内修改的文件 find /logs -type f -mtime +3 -exec ls -l{}\ 列出3天前的日志文件的详细信息 find /ect -name "paa " -ok grep "158" {}\ 执行命令带提示 find /ect -name "core" -print | xargs echo "" > /tmp/a.log find . -name \ -type f -print | xargs grep "abc" stat fileName/dirName 查看文件/目录详情 4、根据关键字过滤文件 grep " log" * 5、查看和杀死进程 ps -ef | grep java kill -9 pid 6、当前目录执行可执行文件 .

读书笔记《SpringBoot编程思想》

给你一囗甜甜゛ 提交于 2020-12-19 08:27:01
[toc] 一、 springboot总览 1.springboot特性 独立的spring应用 springboot可以以jar包的形式独立运行,使用 java -jar xxx.jar 就可以成功运行项目, 内嵌servlet容器 使我们在应用项目的主程序中运行main函数即可快速运行。 内嵌web容器 直接嵌入tomcat、jetty等web容器(不需要部署war文件) 提供固话的starter依赖 简化maven配置,使常见的依赖聚集在一起,形成单条依赖 组件自动装配 Spring Boot会根据我们项目中类路径的jar包/类,为jar包的类进行自动配置Bean,大大简化了配置 应用监控 springboot提供了基于HTTP、ssh、telnet对运行时的项目进行监控。 不需要配置xml 可以完全不使用xml配置,只需要自动配置和Java config 2.准备运行环境 JDK1.8 MAVEN 二、理解独立的spring应用 1.应用类型 非web应用 : 主要用于服务提供、调度任务、消息处理 web应用 : 内嵌servlet或web容器,对外提供HTTP服务 2.@RestController @RestController注解用作类的请求控制 @RequestMapping注解用作方法的请求映射 @ResponseBody注解用作方法的返回对象映射 当有

解决新建Maven项目webapp-- index.jsp报错

只愿长相守 提交于 2020-12-19 08:18:27
现在,随着项目开发的不断增长,项目变得庞大,jar包管理起来也很费时。使用maven工程可以很轻松的帮助我们管理jar包,省时。 今天,我在公司电脑新建的maven工程,新建完后 index.jsp报了个错,以前也遇到过,现在写篇随笔记录下,希望能新接触的同学有所帮助。 1.先贴出报了什么错    2。解决步骤: 先解决项目包结构不完整的问题: 点击项目,右键--Build Path--Configure Build Path 选中图中要的点击,然后点击旁边的Libraries ,双击JRE System Library ,切换成更高级的jre ,最后Finish ,最后Apply. 解决index.jsp报错有两个方法: 1.为项目添加Tomcat支持: 第一步:选中项目点击右键,选择“Build Path”,选择“configure build path”。 第二步:点击Libraries选项卡,点击Add Library按钮 第三步:选择Server Runtime,接着选择tomcat,如图 第四步:点击Next ,添加tomcat ,finish 最后Apply and Close,报错就会消失了。 还有一种方法:直接在pom.xml文件中添加jar包支持 <dependency> <groupId>javax.servlet</groupId> <artifactId

互联网公司常用分库分表方案汇总

泄露秘密 提交于 2020-12-19 02:54:45
本文来源: cnblogs.com/littlecharacter/p/9342129.html 一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库。 2、CPU瓶颈 第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。 第二种:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 -> 水平分表。 二、分库分表 1、水平分库 概念: 以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。 结果: 每个库的结构都一样; 每个库的数据都不一样,没有交集; 所有库的并集是全量数据; 场景: 系统绝对并发量上来了,分表难以根本上解决问题,并且还没有明显的业务归属来垂直分库。 分析: 库多了