Java EE

Java大文件分片上传/多线程上传代码

会有一股神秘感。 提交于 2020-08-11 00:56:31
上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。 一开始以为是session过期或者文件大小受系统限制,导致的错误。 查看了系统的配置文件没有看到文件大小限制, web.xml中seesiontimeout是30,我把它改成了120。 但还是不行,有时候10分钟就崩了。 同事说,可能是客户这里服务器网络波动导致网络连接断开,我觉得有点道理。 但是我在本地测试的时候发觉上传也失败,网络原因排除。 看了日志,错误为: java.lang.OutOfMemoryError Java heap space 上传文件代码如下: public static String uploadSingleFile(String path,MultipartFile file) { if (!file.isEmpty()) { byte[] bytes; try { bytes = file.getBytes(); // Create the file on server File serverFile = createServerFile(path,file.getOriginalFilename()); BufferedOutputStream stream = new BufferedOutputStream( new FileOutputStream(serverFile));

JEESZ分布式框架--单点登录集成方案

老子叫甜甜 提交于 2020-08-10 23:51:57
一般注销是跳到原项目的登录页面,所以我们需要对CAS做如下配置: 1. 修改服务端cas-servlet.xml配置(apache-tomcat-7.0.40\cas\ROOT\WEB-INF),找到 <bean id="logoutController" class="org.jasig.cas.web.LogoutController" /> 增加属性 p:followServiceRedirects="true" 2.修改客户端,sso1,sso2 index.jsp文件将原来的单点登出的URL修改成: Sso1: http://jeesz.cn:8080/logout?service=http://www.sso1.com:8080 Sso2: http://jeesz.cn:8080/logout?service=http://www.sso2.com:8080 重启Tomcat,测试正常。 第六节:多项目集成单点登录配置 第一步:单点登录系统与其他项目集成 在WEB 项目中的WEB-INF目录下的web.xml文件,添加以下配置. <!--SSO客户端配置 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener> <listener-class>org.jasig.cas.client.session

Action封装:属性驱动

丶灬走出姿态 提交于 2020-08-10 23:35:28
User: package com.example.struts.domain; import java.util.Date; public class User { private String username; private String password; private Date date; private Integer age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题

牧云@^-^@ 提交于 2020-08-10 23:33:31
最近我们线上有个应用服务器有点上头,CPU 总能跑到 99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用top -Hp 加 jstack命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。 申请阿里云服务时,可以使用 2000元阿里云代金券 ,阿里云官网领取网址: https://dashi.aliyun.com/site/yun/youhui 今天向大家推荐一款更高效更精准的工具:Arthas! Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档: https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。 CPU 负载过高一般是某个或某几个线程有问题,所以我们尝试使用第一个命令:thread,这个命令会显示所有线程的信息,并且把 CPU 使用率高的线程排在前面。 [arthas@384]$ thread Threads Total: 112, NEW: 0, RUNNABLE: 26, BLOCKED: 0, WAITING: 31, TIMED_WAITING: 55, TERMINATED: 0 ID NAME STATE %CPU TIME

thymeleaf中跳转地址的使用

99封情书 提交于 2020-08-10 22:43:54
最近在使用thymeleaf时,遇到一个问题,比如要跳转的地址是localhost:8080/pro/a/b,跳转后发现变成了 localhost:8080/pro/path/a/b,这样地址中多了个path,显然是错误的。其实在跳转地址前加 / 和不加 / 是不一样的。 页面跳转地址前加 /,意味着跳转到项目的根目录,不加 / ,意味着从当前页地址跳转。 解决的办法也很简单,只要获取上下文路径就可以了。由于使用的thymeleaf下面jsp一笔带过。 下面是各种跳转的方式。 1.jsp jsp获取上下文路径:下面只是jsp获取上下文路径的一种方式 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="basePath"  value="${pageContext.request.scheme}://${pageContext.request.serverName}: ${pageContext.request.serverPort}${pageContext.request.contextPath}" /> 使用示例:<html><a href="${basePath}/jsp/index.jsp"></a></html> 2.thymeleaf 2.1.ajax

Java大文件分片上传/多线程上传源码

拥有回忆 提交于 2020-08-10 22:38:01
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所有浏览器。 支持文件批量上传 支持文件夹上传,且要求在服务端保留层级结构。文件夹数量要求支持到10W。 支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传。文件大小要求能够支持到50个G。 支持自动加载本地文件,要求能够自动加载指定的本地文件。 支持文件批量下载,要求不要在服务器打包。因为50G的文件在服务器打包时间比较长。 支持文件夹下载,要求不要在服务器打包,下载到本地后要求保留层级结构 文件列表面板支持路径导航,新建文件夹 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。 一、开发环境搭建

Spring Security 实战干货:如何实现不同的接口不同的安全策略

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-10 21:05:01
1. 前言 欢迎阅读 Spring Security 实战干货 系列文章 。最近有开发小伙伴提了一个有趣的问题。他正在做一个项目,涉及两种风格,一种是给小程序出接口,安全上使用无状态的 JWT Token ;另一种是管理后台使用的是 Freemarker ,也就是前后端不分离的 Session 机制。用 Spring Security 该怎么办? 2. 解决方案 我们可以通过多次继承 WebSecurityConfigurerAdapter 构建多个 HttpSecurity 。 HttpSecurity 对象会告诉我们如何验证用户的身份,如何进行访问控制,采取的何种策略等等。 如果你看过之前的教程,我们是这么配置的: /** * 单策略配置 * * @author felord.cn * @see org.springframework.boot.autoconfigure.security.servlet.SpringBootWebSecurityConfiguration * @since 14 :58 2019/10/15 */ @Configuration @EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true, securedEnabled = true)

jdk 原生的HttpServer(com.sun.net.HttpServer) 创建web服务器

半世苍凉 提交于 2020-08-10 20:14:18
最早的学习web编程是写一个Servlet,然后重写里面的service方法,然后去配置web.xml配置,最后部署在tomcat或者jetty等容器中启动。后面是使用一写strtus或者springmvc框架。其实通过jdk源码,可以快速创建web服务,和golang及其的相似。 HttpServer public static void main (String[] args) { HttpServer server = HttpServer. create () ; server .bind( new InetSocketAddress(8081) , 3 ) ; server .createContext( "/health" , new HealthHandler()) ; server .createContext( "/info" , new InfoHandler()) ; executorService = Executors. newFixedThreadPool ( 5 , DaemonThreadFactory. defaultThreadFactory (daemon)) ; server .setExecutor( executorService ) ; server .start() ; } static class HealthHandler

Springboot集成flowable modeler 免登录,并且查询用户/用户组改为自己系统数据

时光总嘲笑我的痴心妄想 提交于 2020-08-10 19:55:55
之前画流程图都是用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 > </

SSM框架搭建最新教程(超详细)

与世无争的帅哥 提交于 2020-08-10 19:55:13
个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。实践出真知。 1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation