Tomcat

Java程序员非要进大厂才能拿到年薪50W+,从而告别重复的CRUD?

别等时光非礼了梦想. 提交于 2020-10-27 18:33:50
不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员! Java架构师主要需要做哪些工作呢? 1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。 2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。 3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。 4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。 5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。 6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。 7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。 Java架构师要学习哪些知识呢? 希望以下的学习路线能对你有帮助 并发编程 JAVA内存模型(JMM) java当中的线程通讯和消息传递 什么是重排序和顺序一致性?Happens-Before?As-If-Serial? Synchronized的概念和分析 同步、重量级锁以及Synchronized的原理分析 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们 Volatile和DCL的知识 Volatile的使用场景和Volatile实现机制、内存语义、内存模型 DCL的单例模式,什么是DCL

tomcat类加载机制

最后都变了- 提交于 2020-10-27 12:01:38
一、tomcat类加载器继承图 tomcat类加载器的集成体系,包含两部分: 1.上半部分是jdk自带的,包含:启动类加载器,扩展类加载器,应用类加载器,这里不展开讲解。如果想了解,可以查看sun.misc.Launcher.Launcher()和java.lang.ClassLoader.loadClass(String, boolean)源码 2.下半部分是tomcat的自定义类加载器,包含: a)commonClassLoader:通过${tomcatpath}/conf/catalina.properties中的common.loader配置,通常加载tomcat和webapp共享的class b) catalinaClassLoader: 通过${tomcatpath}/conf/catalina.properties中的server.loader配置,加载tomcat需要的class,对webapp不可见 c) sharedClassLoader:通过${tomcatpath}/conf/catalina.properties中的shared.loader配置, 加载webapp们共享的class,对tomcat容器不可见 d) webappClassLoader: 这个类加载器,就是加载我们写的应用程序class的。通常说的tomcat打破双亲委派就是说的它 二、源码

使用 Nginx + Tomcat 搭建负载均衡

放肆的年华 提交于 2020-10-27 08:33:48
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 1、环境规划 计划是采用三台机器进行部署,其中一台作为ngix服务器,另外两台作为tomcat服务器(以下仅作示例说明,具体环境规划请以实际情况而定)。 2、Tomcat集群架构说明 多个客户端发送请求访问系统,由nginx对请求进行分发,由不同的tomcat服务器进行处理,最终实现负载均衡,减轻服务器压力,提高服务性能和工作效率。 3、环境安装配置说明 3.1 Nginx安装简介 3.1.1 环境准备(因为ngix需要编译安装,所以需要先准备以下环境) 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 安装pcre和pcre-devel: yum install -y pcre pcre-devel 安装zlib zlib提供了很多压缩和解方式,nginx需要zlib对http进行gzip: yum install -y

JavaScript大文件分片上传/多线程上传

社会主义新天地 提交于 2020-10-27 00:24:34
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: upload:{uploadLimit:5,fileSizeLimit:31744,removeTimeout:0.8} 以上三个变量代表的含义是: uploadLimit:表示上传文件个数的限制,5表示文件上传个数限制是5个 fileSizeLimit:表示上传文件大小的限制,31744单位是KB,也就是表示31M removeTimeout:表示移除文件的时间限制 继续查找使用到这些变量的地方,看到了文件大小超出限制等 了解了BJUI前端框架对于上传大文件的限制,可以这样使用,增大文件上传大小和数量,可以按照如下进行修改,我们在bjui-all

Spring Boot 项目瘦身指南,瘦到不可思议!

左心房为你撑大大i 提交于 2020-10-26 15:26:49
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 目录: 1.前言 2.瘦身前的Jar包 3.解决方案 一、前言 Spring Boot 部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网,部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件( Spring Cloud 等),那就更大了。 这个时候如果想要对线上运行工程有一些微调,则非常痛苦。 二、瘦身前的Jar包 Tomcat 在部署Web工程的时候,可以进行增量更新, Spring Boot 也是可以的~ Spring Boot 编译出来的Jar包中,磁盘占用大的,是一些外部依赖库(jar包),例如:进入项目工程根目录,执行 mvn clean install 命令,得到的Jar包,用压缩软件打开,目录结构如下: 整个Jar包 18.18 MB, 但是 BOOT-INF/lib 就占用了将近 18 MB: 三、解决方法 步骤1: 正常编译JAR包,解压出lib文件夹 POM文件如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven

spring boot通过war包的形式部署

巧了我就是萌 提交于 2020-10-26 15:18:21
面试分享:今天遇到一个面试官一定让我讲出spring boot通过war包的形式部署,一问就答不上来了,一般在项目上都是通过jar包的形式部署,现在总结一下: 步骤一:下载tomcat https://tomcat.apache.org/download-80.cgi 步骤二:重写SpringBootServletInitializer启动类的configure 默认情况外部Tomcat不能读取到Spring Boot 入口类的main方法启动程序加载,使用需要继承,代码如下: @SpringBootApplication public class DefinedExternalTomcatApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DefinedExternalTomcatApplication.class, args); } /** * 重写configure方法,加载启动类 * @param builder * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder

[常见问题]解决创建servlet 找不到webservlet包.

ぐ巨炮叔叔 提交于 2020-10-26 13:48:08
[常见问题]解决创建servlet 找不到webservlet包. 今天在创建一个springmvc项目的时候发现 使用的HttpServletRequest不起作用, 提示需要映入 jar文件, 于是便有了今天的这个问题: 百度了下才发现 项目需要导入Runtime Envorionment, 于是导入了电脑中配置的Tomcat 9.0. 可是选择好后还是不行, 于是继续百度, 发现原因是Tomcat 版本9.0 高于JDK版本8.0. 于是更换本机Tomcat版本, 问题得以解决. 总结: 以后当遇到这种问题时首先确保自己的Tomcat版本要低于JDK版本, 然后给项目添加Runtime Environment. 通过Eclipse创建servlet时候,经常会遇到如下图,找不到javax.servlet.annotation.WebServlet包,这种原因,就是tomcat没有配置好,有时候,tomcat版本也正确了,但是还是会出现上面问题。 2.右键项目名称,进入properties进行配置 3.点击左边菜单里面的targeted Runtimes就可以看到tomcat没有进行勾选,这就是出现这个情况的根本原因。 4.勾选上tomcat,然后点击apply应用,然后点击OK,就可以啦! 5.勾选之后,就可以看到刚刚创建的servlet显示正确了。 分类: 问题集锦

Tomcat:第四章:Tomcat IO模型

跟風遠走 提交于 2020-10-26 12:54:22
知识点: Tomcat支持的IO模型说明 BIO 与NIO的区别 1、Tomcat支持的IO模型说明 描述 BIO 阻塞式IO,即Tomcat使用传统的java.io进行操作。该模式下每个请求都会创建一个线程,对性能开销大,不适合高并发场景。优点是稳定,适合连接数目小且固定架构。 NIO 非阻塞式IO,jdk1.4 之后实现的新IO。该模式基于多路复用选择器监测连接状态在通知线程处理,从而达到非阻塞的目的。比传统BIO能更好的支持并发性能。Tomcat 8.0之后默认采用该模式 APR 全称是 Apache Portable Runtime/Apache可移植运行库),是Apache HTTP服务器的支持库。可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作。使用需要编译安装APR 库 AIO 异步非阻塞式IO,jdk1.7后之支持 。与nio不同在于不需要多路复用选择器,而是请求处理线程执行完程进行回调调知,已继续执行后续操作。Tomcat 8之后支持。 使用指定IO模型的配置方式: 配置 server.xml 文件当中的 <Connector protocol="HTTP/1.1"> 修改即可。 默认配置 8.0 protocol=“HTTP/1.1” 8.0 之前是 BIO 8.0 来源: oschina

Springboot 整合 flowable modeler 免登录 查询用户 用户组

断了今生、忘了曾经 提交于 2020-10-26 05:13:01
之前画流程图都是用tomcat启动flowable modeler,但是这样启动就不能在分配任务用户/用户组的时候查询自己系统里的数据。所以现在需要把flowable modeler集成到项目里来。 之前自己也搜索了很多文章,都感觉不是很清晰,可能也是因为我刚接触不久。现在自己集成好了之后,记录一下自己学习的结果。 首先需要创建一个springboot应用,pom文件中引入相关jar包: <properties> <java.version>1.8</java.version> <flowable.version>6.4.1</flowable.version> <lombok.version>1.18.0</lombok.version> <fastjson.version>1.2.9</fastjson.version> </properties> < dependencyManagement > < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-dependencies </ artifactId > < type > pom </ type > < scope > import </ scope > </