Java EE

Tomcat性能配置之JVM(篇一)

為{幸葍}努か 提交于 2020-08-13 03:13:23
我们说Tomcat性能怎么样,首先需要说一下JVM虚拟机,因为Tomcat必须依赖于JVM虚拟机上才可以正常运行,所以我们需要给JVM分配合理的内存空间很重要。 1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配 我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 1、堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池

jsp Web超大文件上传和断点续传的实现

丶灬走出姿态 提交于 2020-08-13 02:05:22
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭浏览器后再打开)仍然能够继续上传,重启电脑后仍然能够上传 支持文件夹的上传,要求服务端能够保留层级结构,并且能够续传。需要支持10万个以上的文件夹上传。 支持低版本的系统和浏览器,因为这个项目的最终运行环境在政府,政府的配置都一般,职员都是办公用,内存都不大,基本上以Windows XP的系统为主。 1、介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码。 enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1、1 enctype的取值有三种 值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码。每一个表单项分割为一个部件 text/plain 空格转换为 “+” 加号,但不对特殊字符编码。 1. 当enctype=’application/x-www-form-urlencoded’ 2

个人作业——软件工程实践总结&个人技术博客

让人想犯罪 __ 提交于 2020-08-12 18:52:33
这个作业属于哪个课程 2019学年02学期单红老师软件工程实践 这个作业要求在哪里 个人作业——软件工程实践总结&个人技术博客 这个作业的目标 个人对整个课程的总结 作业正文 本博文 其他参考文献 构建之法、慕课网 前言 最后一次写博客作用,心情怎么样 老实说最后一次作业了,写完就结束课程了,心情肯定是有一定解脱的,毕竟一个学期经常要为这个课熬夜奋战,现在终于能够休息一下了。当然内心可能也会有一些不舍吧,这个 学期因为网课的原因,一直都是采取线上上课的方式,所以目前还没和老师正式见过面,而自己的组员也是没有真正地会过面,所以有一些可惜与留恋。当然,因为做个课收获到了知识 和其他地东西,内心也是感到充实和满足的。 关于第一次作业中所回答的问题 当初为什么报 软件工程 这个专业?当初对 软件工程 这个专业的期待和想象是什么? 当初希望自己是如何投入这个专业 的学习的?曾经做过什么准备,或者立下过什么FLAG吗? 前面这个问题不需再多言,现在就说一下对于未来地展望及如何投入其中。之前的确是有着电影情节地对黑客的崇拜,不过现在更多的是希望自己能够学得更多的软件开发的知识, 努力地积累经验,以后能够有那里取做好一份软件开发的工作(比如当好一名普通的程序员或软件开发师),凭借更专业的知识获得更好的工作,获得更好的报酬肯定是每个人都想要的,当然也希望能够凭借自己的一点小知识为 社会近点绵薄之力

利用servlet中service()方法派发任务

余生颓废 提交于 2020-08-12 18:14:40
Servlet中的service方法用于应答浏览器请求,每次请求都会调用该方法。一般情形下,service是用来转向的,所以我们一般写一个servlet,只需要重写doGet或者doPost就可以了(一般不重写Service是因为service方法自己实现了缓存协商的机制,如果我们重写它,反而将这中良好的机制给去掉了。) 如果重写了service方法,那么servlet容器就会把请求交给这个方法来处理那么此时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用pos还是get来请求此servlet都会执行service方法也只能执行service方法,不会去执行doPost或是doGet方法。当数据都是从前台访问过来,我们可以在前台自己添加一个方法参数,然后在servlet中判断请求过来的方法,去调用servlet中指定的方法,完成方法派发,不必要一个方法写一个对应的servlet,可以减少servlet文件的冗余。 来源: oschina 链接: https://my.oschina.net/u/4323755/blog/4488787

Maven插件系列之spring-boot-maven-plugin

烂漫一生 提交于 2020-08-12 15:50:55
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。 Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。 Spring Boot Maven plugin的最新版本为2017.6.8发布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。 Spring Boot Maven plugin的5个Goals spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin spring-boot:run,运行Spring Boot应用 spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理 spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理 spring-boot:build-info

SpringBoot 拦截器配置

試著忘記壹切 提交于 2020-08-12 15:35:28
一、基于URL实现的拦截器: public class LoginInterceptor extends HandlerInterceptor { /**www.1b23.com * 在请求处理之前进行调用(Controller方法调用之前) * 基于URL实现的拦截器 * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String path = request.getServletPath(); if (path.matches(Const.NO_INTERCEPTOR_PATH)) { //不需要的拦截直接过 return true ; } else { // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等 System.out.println( "====================================" ); return true ; } } } 关键代码:path

20年行业变革与技术演进,当下CDN如何为政企数字化转型加速?

ⅰ亾dé卋堺 提交于 2020-08-12 15:29:43
CDN是内容分发网络,它可以将本来位于源站的内容分发到全国各地的节点,方便用户去就近访问所需的内容,以此达到缓解互联网网络拥塞、提升应用响应速率、改善用户体验的作用。随着互联网行业的变迁,CDN经历了几个关键的技术发展阶段。 紧随互联网浪潮,CDN走上历史舞台 谈到CDN诞生,不得不得到万维网之父Tim Berners-Lee。麻省理工学院教授Tim Berners-Lee作为互联网发明者之一,在制订了3w标准后,敏感地预见到在不久的将来网络拥塞将成为互联网发展的障碍,于是他提出一个技术挑战,要发明一种全新的、从根本上实现互联网内容的无拥塞分发的方法。当时在隔壁的Tom Leighton意识到通过数学算法可以解决内容传输的问题,并且开始实施自己的商业计划,在1998年成立了第一家CDN商业公司。 此后的1999年至2001年,全球互联网迎来发展浪潮,网站和互联网服务如同雨后春笋般蓬勃生长,网页内容加速需求爆发,CDN也因此走上历史舞台。最早CDN都是以将静态内容缓存到终端用户附近的形式来存在的,比如将文本、HTML、JSS、图片、文件等缓存到网络边缘,如果源站有新的静态资源产生,CDN也会及时去缓存这些资源,这可以避免集中访问带来的拥塞,并优化跨地域、跨运营商访问性能问题,让用户更快地浏览到想要的内容,也能为源站服务器的减负。 行业变迁,从内容缓存到动态加速 随着互联网的兴起

Spring-boot01

点点圈 提交于 2020-08-12 15:29:23
本文记录Spring-Boot学习途中的点点滴滴。 其实Spring-Boot出来好长时间了,但是一直没去关注过。之前在我的印象里Spring-Boot好就好在减去了很多XML配置,加入了很多自动配置,将注解运用到了极致。想想好像也没啥技术点可以去学习,不过最近打算用spring-Boot做个小网站啥的,才突然发现 Spring-Boot的强大。果真应了那句话:真香! 1.先来说下Spring-Boot入门大法: 按以往的项目经验,那没啥可说,MAVEN工程启动就完事儿了,但最近更新了下IDEA,发现项目启动项中多了一栏: 去Spring官网看了看,发现这玩意儿简直太好了,用这个Spring启动项,它会将SpringWEB开发中要用到的一切组件场景都一一给你罗列出来,这下方便了不用再去写POM了。直接勾选web服务IDEA就为你自动配置好了。还有什么Springdata,Nosql,SQL....这些场景你只需勾选IDEA会帮你自动配置。 这个插件实数良心。 项目部署完成后,我一脸懵逼,啥?没有WEB-INF目录,写个锤子的WEB呀。我JSP放哪儿? 果然太年轻,Spring-BOOT以JAR包的方式运行在内嵌的Tomcat下,根本不支持JSP。那用什么渲染前端? 答:HTML。 对就是这么简单,用最原始的HTML就行了,也不需要WEB-INF目录,Spring

混合算法(GA+TS)求解作业车间调度问题代码解读+完整JAVA代码

有些话、适合烂在心里 提交于 2020-08-12 14:36:11
  前两篇文章中,我们介绍了FJSP问题,并梳理了一遍HA算法。这一篇文章对小编实现的(很乱很烂的)代码进行简单解读。   往期回顾:   种群进化+邻域搜索的混合算法(GA+TS)求解作业车间调度问题(JSP)-算法介绍   混合算法(GA+TS)求解作业车间调度问题(JSP)-禁忌搜索部分   代码下载请关注公众号,后台回复【FJSPHA】即可,不包括【】   代码框架      代码分为5个包,第一部分Data为用到的各类结构,第二部分GA为GA部分+第一个TS,第三部分主函数,第四、五部分是两个TS。   算例放置在input文件夹中,这里准备了Mk系列算例,Kacem系列算例和论文中的简单算例test.txt。   Main   算例输入:      Main中还有一个输出为CSV的函数,需要一个jar包,已经放在下载链接里了,不需要的同学也可以删除。      Data   一堆乱七八糟的结构。这里简单讲一下Solution类和Graph类。   Solution类中包含多个print函数,比较重要的包括绘制甘特图以及check解是否合法。      operationMatrix是解的主题,存放某个工件的某道工序的开始、结束时间,所在加工机器。      Graph类表示析取图。nodeList是每台机器上的node。其中起始点、终止点我单独提取出来设置了两个类

【SpringCloud】Spring Cloud Alibaba 之 Sentinel流量控制(三十)

江枫思渺然 提交于 2020-08-12 14:01:52
  本章介绍Sentinel流量控制,与对Sentinel的基本概念,请参考 【SpringCloud】Spring Cloud Alibaba 之 Sentinel哨兵介绍入门(二十九) Sentinel流量控制介绍   流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。   FlowSlot 会根据预设的规则,结合前面 NodeSelectorSlot 、 ClusterNodeBuilderSlot 、 StatisticSlot 统计出来的实时信息进行流量控制。   限流的直接表现是在执行 Entry nodeA = SphU.entry(resourceName) 的时候抛出 FlowException 异常。 FlowException 是 BlockException 的子类,您可以捕捉 BlockException 来自定义被限流之后的处理逻辑。   同一个资源可以创建多条限流规则。 FlowSlot 会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。   一条限流规则主要由下面几个因素组成,我们可以组合这些元素来实现不同的限流效果: resource :资源名,即限流规则的作用对象 count : 限流阈值