1、java智能提示 (1). 打开Eclipse,选择打开" Window - Preferences"。 (2). 在目录树上选择"Java-Editor-Content Assist",在右侧的"Auto-Activation"找到"Auto Activation triggers for java"选项。默认触发代码提示的就是"."这个符号。 (3). 在"Auto Activation triggers for java"选项中,将"."更改:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 2、XML智能提示 (1). 打开Eclipse,选择打开" Window - Preferences"。 (2). 在目录树上选择"XML-Editor-Content Assist",在右侧的"Auto-Activation"找到"Prompt when these characters are inserted "选项。 (3). 在"Prompt when these characters are inserted"选项中,将"<=: ,"更改:<=:.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW(, 3、快捷键 (1)Ctrl+Space 说明:内容助理。提供对方法,变量,参数,javadoc等得提示,应运在多种场合,总之需要提示的时候可先按此快捷键。注:避免输入法的切换设置与此设置冲突 (2)Ctrl+Shift+Space 说明:变量提示 (3)Ctrl+/ 说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+\ (4)Ctrl+Shift+/ 说明:添加/* */注释 (5)Ctrl+Shift+\ 说明:消除/* */注释 (6)Ctrl+Shift+F 说明:自动格式化代码 (7)Ctrl+1 说明:批量修改源代码中的变量名,此外还可用在catch块上. (8)Ctril+F6 说明:界面切换 (9)Ctril+Shift+M 说明:查找所需要得包 (10)Ctril+Shift+O 说明:自动引入所需要得包 (11)Ctrl+Alt+S 说明:源代码得快捷菜单。其中的Generate getters and setters 和 Surround with try/catchblock比较常用.建议把它们添加为快捷键.快捷键设置在windows->preferences->Workbench->Keys 4、跟踪调式 单步返回 F7 单步跳过 F6 单步跳入 F5 单步跳入选择 Ctrl+F5 调试上次启动 F11 继续 F8 使用过滤器单步执行 Shift+F5 添加/去除断点 […]
View Details最近在做SpringBoot的项目,用到了session,发现放置好session后,过一会就失效了,用下面发语句获取session失效时间,发现是60s
|
1 2 3 |
request.getSession().getMaxInactiveInterval(); 去网上查找,发现大多解决问题的办法是 在启动类中main方法的下面加入以下方法来手动设置session失效时间 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
@Bean public EmbeddedServletContainerCustomizer containerCustomizer(){ return new EmbeddedServletContainerCustomizer() { @Override public void customize(ConfigurableEmbeddedServletContainer Container) { container.setSessionTimeout(1800);//单位为S } }; } 但是社会在发展,时代在进步,SpringBoot2.0以后已经不支持这种方式了 ps:可以在pom文件中查看你的SpringBooot版本。 |
|
1 2 3 4 5 6 7 8 |
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> SpringBoot2.0以后的版本只需要在application.properties中加入以下配置就好 |
|
1 2 3 4 |
server.servlet.session.timeout = PT5H 这里重点解释一下 PT5H 意思是设置session失效的时间是5小时 通过查看setTimeouot的方法,这里要求传入Duration的实例 |
|
1 2 3 4 5 6 7 8 9 10 11 |
public void setTimeout(Duration timeout) { this.timeout = timeout; } Duration是在Java8中新增的,主要用来计算日期差值 Duration是被final声明的,并且是线程安全的 Duration转换字符串方式,默认为正,负以-开头,紧接着P,以下字母不区分大小写 D :天 T:天和小时之间的分隔符 H :小时 M:分钟 S:秒 每个单位都必须是数字,且时分秒顺序不能乱 比如P2dt3m5s P3d pt3h |
最后总结一下Duration最实用的一个功能其实是 between 方法,因为有很多时候我们需要计算两个日期之间的天数或者小时数,用这个就可以很方便的进行操作。 BugHome版权所有丨转载请注明出处:https://minei.me/archives/342.html from:http://www.cnblogs.com/ergexy/p/9684933.html
View Details主要有3种比较常见的OutOfMemory Error: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: GC overhead limit exceeded 1. java.lang.OutOfMemoryError: Java heap space Java heap space,Java应用程序创建的对象存放在这片区域,垃圾回收(Garbage Collection)也发生在这块区域。通常一些比较“重型”的操作可能会导致该异常,比如:需要创建大量的对象,层次比较深的递归操作等。 解决方案有两种,一是优化应用,找到消耗大量内存的地方,然后优化代码或者算法。这种方式比较推荐,但是难度比较大,尤其是在产品环境中出现这种问题,开发人员不能很好的重现问题。第二种方案是提升Java heap size,这种方式虽然感觉有点治标不治本,但是可行性非常高,操作简单。 对于一般的应用,采用如下方式即可(数字根据自己的需要调整):
|
1 2 3 4 |
1 -Xms<size> - Set initial Java heap size 2 -Xmx<size> - Set maximum Java heap size 3 4 java -Xms512m -Xmx1024m JavaApp |
如果是在tomcat中,出现的这种问题,解决办法是在{tomcat_dir}/bin/catalina.bat中找到如下几行:
|
1 2 3 4 5 |
1 set MAINCLASS=org.apache.catalina.startup.Bootstrap 2 set ACTION=start 3 set SECURITY_POLICY_FILE= 4 set DEBUG_OPTS= 5 set JPDA= |
在后面加上一行(数字根据自己的需要调整):
|
1 |
1 set CATALINA_OPTS=-Xms512m -Xmx512m |
2. java.lang.OutOfMemoryError: PermGen space Perm Gen Size(Permanent Generation Size),用来存储被加载的类的定义(class definition)和元数据(metadata),比如:Class Object和Method Object等。这是内存中的一块永久保存区域,JVM的垃圾回收不会触及这块区域。通常在加载一个非常大的项目的时候才会出现该异常。 对于一般的应用,采用如下方式即可(数字根据自己的需要调整):
|
1 2 3 4 |
1 -XX:PermSize<size> - Set initial PermGen Size. 2 -XX:MaxPermSize<size> - Set the maximum PermGen Size. 3 4 java -XX:PermSize=64m -XX:MaxPermSize=128m JavaApp |
如果是在tomcat中出现这个问题,解决办法是在{tomcat_dir}/bin/catalina.bat中添加如下一行:
|
1 |
1 set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m |
3. java.lang.OutOfMemoryError: GC overhead limit exceeded 这个错误会出现在这个场景中:GC占用了多余98%(默认值)的CPU时间却只回收了少于2%(默认值)的堆空间。目的是为了让应用终止,给开发者机会去诊断问题。一般是应用程序在有限的内存上创建了大量的临时对象或者弱引用对象,从而导致该异常。虽然加大内存可以暂时解决这个问题,但是还是强烈建议去优化代码,后者更加有效。 首先,你可以关闭JVM这个默认的策略:
|
1 |
1 java -XX:-UseGCOverheadLimit JavaApp |
其次,你也可以尝试去加大Heap Size:
|
1 |
1 java -Xmx512m JavaApp |
注意:在修改Tomcat的catalina.bat(*.sh)中的内容时,网上有很多都是说直接修改JAVA_OPTS,按照Apache官方的说法是: Note: Do not use JAVA_OPTS to specify memory limits. You do not need much memory for a small process that is used to stop Tomcat. Those settings belong […]
View Details这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m 2,如果用的tomcat,在windows下,可以在E:\Program Files\apache-tomcat-6.0.29\bin\catalina.bat 中加上: set JAVA_OPTS=-Xms512m -Xmx512m 位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适. 但后来发现貌似不管用,还是不断的跳出这个错误信息,后来到Myeclipse的Tomcat 6.x里的JDK设置参数就好了,参数如下: -Xms128M -Xmx512M -XX:PermSize=128m -XX:MaxPermSize=128m 3.如果是linux系统 Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms512 -Xmx512′ java.lang.OutOfMemoryError: Java heap space 使用Java程序从数据库中查询大量的数据时出现异常: java.lang.OutOfMemoryError: Java heap space 在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。 例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar 如果Heap Size设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC占用了更多的时间,而应用分配到的执行时间较少。 Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 Heap size的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。 from:https://blog.csdn.net/scholar_man/article/details/50903454
View Details最近项目中用到了文件图片上传操作, 前端 使用<input type="file" class="ignore" accept="image/jpeg,image/png,image/gif"> (base64字节) 后台使用String字符串进行接收(base64字节) properties配置文件中进行文件上传大小配置 spring.http.multipart.max-file-size=20Mb //上传文件的大小限定;只有上传采用文件格式进行接收时起作用,针对上面的base64格式图片(后台是String进行接收)不起作用; spring.http.multipart.max-request-size=60Mb //上传请求数据的大小限定;限定请求的总数据大小 但是发现当上传文件大小大于1.5M时就会报错:
|
1 2 3 |
2018-06-08 11:03:19.006 ERROR 3784 --- [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector] with root cause java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector |
经过分析发现是springboot中的内置tomcat服务器限定了Httppost的最大size 通过在properties中添加如下配置,修改该内置服务器的对HttpPost数据的大小; 成功解决该问题; server.maxHttpHeaderSize=102400000 //设定HttpHeader请求头大小 server.maxHttpPostSize =102400000 //设定Httppost数据大小 from:https://www.cnblogs.com/AnXinliang/p/9154659.html
View Details最近做了一个项目,部署到客户的服务器上,运行状况也良好。就是客户的服务器经常会重启。然后客户也不是it人员,重启后重新启动服务,就得使用命令: jar -jar xxxx.jar 这对于不懂技术的人来说是个很复杂的事,于是决定打算修改修改,就有了下文。 一、编写bat文件启动jar 1、新建一个名为fmstart.bat,打开编辑,写入以下内容 cd E:/springboot java -jar fmstart-0.0.1-dev.jar exit 2、然后保存。ok,下次启动时,可以直接点击fmstart.bat启动了。至此愉快的玩耍了几天。 你以为这样就完了,过了几天,客户觉得点击bat启动也太麻烦了,我想一开机就启动。于是又得改。 二、windows启动菜单添加快捷方式启动 1、win+R打开运行窗口,输入shell:startup; 2、将fmstart.bat,新建一个快捷方式,然后将快捷方式拷贝到启动项文件中。 重启电脑,看到了熟悉的界面,启动成功。 又过了几天,客户看到我们的cmd界面也不爽了,说能否不让它出现,我容易误把它关掉。 于是又得改改改。。。。。 三、使用winsw将springboot打包的jar注册系统本地服务 【注】:本人只在Windows Server和win7测试,可以成功;win10会报错。等待作者更新新版本。 1、先从github上下载winsw,下载地址https://github.com/kohsuke/winsw 我下载的是2.1.2版本,小伙伴们可下载最新的版本。 2、下载WinSW.NET4.exe,这个是支持.netframework4.0的版本,如果没有.net4.0,请先安装.net4.0,下载后改名成你想启动的服务名字。比如:fmstart.exe 3、新建一个fmstart.xml文件,编写配置内容 <service> <id>fmstart</id> <name>fmstart</name> <description>This is fmstart service.</description> <!-- java环境变量 --> <env name="JAVA_HOME" value="%JAVA_HOME%"/> <executable>java</executable> <arguments>-jar "E:\springboot\fmstart-0.0.1-dev.jar"</arguments> <!-- 开机启动 --> <startmode>Automatic</startmode> <!-- 日志配置 --> <logpath>%BASE%\log</logpath> <logmode>rotate</logmode> </service> 4、保存fmstart.xml文件,将fmstart.xml和fmstart.exe放到要启动的jar的同级目录下。 例如:E:\springboot\ 5、打开cmd,进入到E:\springboot;输入fmstart.exe install安装服务。 安装后,输入fmstart.exe start启动服务; 相关命令如下: 除了install命令外,还有其它命令: uninstall:删除服务 start:启动服务 stop:停止服务 restart:重启服务 status:输出当前服务的状态 6、安装成功后,win+R打开运行,输入services.msc,查看是否有一个叫fmstart的服务。运行状态是否为正在运行。 如果安装成功后,服务状态为正在运行,即可测试你的接口来了。 到此结束了,客户每次启动服务器就会自己运行该服务,也不会有cmd小窗了。 ——————— 作者:mirfang 来源:CSDN 原文:https://blog.csdn.net/u012489412/article/details/81034375 版权声明:本文为博主原创文章,转载请附上博文链接!
View Details不将 IIS 用作 Windows 服务时,可在 Windows 上托管 ASP.NET Core 应用。 作为 Windows 服务托管时,无需人工干预应用即可在重新启动和崩溃后自动启动。 查看或下载示例代码(如何下载) 将项目转换为 Windows 服务 要将现有 ASP.NET Core 项目设置为作为服务运行,至少需要执行以下更改: 在项目文件中: 确认是否存在 Windows 运行时标识符 (RID),或将其添加到包含目标框架的 <PropertyGroup> 中: XML复制
|
1 2 3 4 5 |
<span class="hljs-tag"><<span class="hljs-name">PropertyGroup</span>></span> <span class="hljs-tag"><<span class="hljs-name">TargetFramework</span>></span>netcoreapp2.1<span class="hljs-tag"></<span class="hljs-name">TargetFramework</span>></span> <span class="hljs-tag"><<span class="hljs-name">RuntimeIdentifier</span>></span>win7-x64<span class="hljs-tag"></<span class="hljs-name">RuntimeIdentifier</span>></span> <span class="hljs-tag"></<span class="hljs-name">PropertyGroup</span>></span> |
要发布多个 RID: 通过以分号分隔的列表提供 RID。 使用属性名称 <RuntimeIdentifiers>(复数)。 有关详细信息,请参阅 .NET Core RID 目录。 为 Microsoft.AspNetCore.Hosting.WindowsServices 添加包引用。 在 Program.Main 中,进行下列更改: 调用 host.RunAsService,而不是 host.Run。 调用 UseContentRoot 并使用应用的发布位置路径,而不是 Directory.GetCurrentDirectory()。 C#复制
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">Main</span>(<span class="hljs-params"><span class="hljs-keyword">string</span>[] args</span>) </span>{ CreateWebHostBuilder(args).Build().RunAsService(); } <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> IWebHostBuilder <span class="hljs-title">CreateWebHostBuilder</span>(<span class="hljs-params"><span class="hljs-keyword">string</span>[] args</span>) </span>{ <span class="line-highlight"> <span class="hljs-keyword">var</span> pathToExe = Process.GetCurrentProcess().MainModule.FileName;</span> <span class="line-highlight"> <span class="hljs-keyword">var</span> pathToContentRoot = Path.GetDirectoryName(pathToExe);</span> <span class="hljs-keyword">return</span> WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((context, config) => { <span class="hljs-comment">// Configure the app here.</span> }) <span class="line-highlight"> .UseContentRoot(pathToContentRoot)</span> .UseStartup<Startup>(); } |
发布应用。 使用 dotnet publish 或 Visual Studio 发布配置文件。 使用 Visual Studio 时,请选择 FolderProfile。 要使用命令行接口 (CLI) 工具发布示例应用,请在项目文件夹的命令提示符处运行 dotnet publish 命令。 必须在项目文件的 <RuntimeIdenfifier>(或 <RuntimeIdentifiers>)属性中指定 RID。 在以下示例中,应用在 win7-x64 运行时的发布配置中发布: console复制
|
1 2 |
dotnet publish --configuration Release --runtime win7-x64 |
使用 sc.exe 命令行工具创建服务。 binPath 值是应用的可执行文件的路径,其中包括可执行文件的文件名。 等于号和路径开头的引号字符之间需要添加空格。 console复制
|
1 2 |
sc create <SERVICE_NAME> binPath= "<PATH_TO_SERVICE_EXECUTABLE>" |
对于项目文件夹中发布的服务,请使用 publish 文件夹的路径创建服务。 如下示例中: 该项目位于 c:\my_services\AspNetCoreService 文件夹中。 项目在 Release 配置中发布。 目标框架名字对象 (TFM) 为 netcoreapp2.1。 运行时标识符 (RID) 为 win7-x64。 应用可执行文件名为 AspNetCoreService.exe。 服务名为 MyService。 示例: console复制
|
1 2 |
sc create MyService binPath= "c:\my_services\AspNetCoreService\bin\Release\netcoreapp2.1\win7-x64\publish\AspNetCoreService.exe" |
重要 确保 binPath= 参数与其值之间存在空格。 从其他文件夹发布和启动服务: 使用 dotnet publish 命令上的 --output <OUTPUT_DIRECTORY> 选项。 如果使用 Visual Studio,请在“FolderProfile”发布属性页面中配置“目标位置”,然后再选择“发布”按钮。 通过使用输出文件夹路径的 sc.exe 命令创建服务。 在向 binPath 提供的路径中包含服务可执行文件的名称。 使用 sc […]
View Details在项目构建的时候遇到了这样的问题:Failedto execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile(default-compile) on project taotao-manager-pojo: Compilation failure 检查了一下Installed JREs的设置,使用的环境变量为jre 解决方法: 将Installed JREs的设置修改为jdk即可.这里选择的其实是JAVA_HOME路径,jdk中包含jre 即可正常运行. ——————— 作者:陈晓婵 来源:CSDN 原文:https://blog.csdn.net/chenxiaochan/article/details/62036671 版权声明:本文为博主原创文章,转载请附上博文链接!
View Details1.右击项目,选择Run As – Maven clean 2.右击项目,选择Run As – Maven install 3.成功后 会在项目的target文件夹下生成jar包 4.将打包好的jar包 发布到服务器,运行java -jar jar包 5.或者使用命令nohup java -jar jar包,nohup命令可以后台启动jar,如果 直接运行 java -jar 则关闭终端,spring的进程也会关闭。 ——————— 作者:浅月流苏 来源:CSDN 原文:https://blog.csdn.net/wsf408908184/article/details/80760679 版权声明:本文为博主原创文章,转载请附上博文链接!
View Details本教程重点介绍了如何在 Docker 上使用 .NET Core。 首先,我们探讨 Microsoft 维护和提供的各种不同的 Docker 映像,及其使用情况。 然后讲解了如何生成和 Docker 化 ASP.NET Core 应用。 在本教程中可学习: 了解 Microsoft.NET 核心 Docker 映像 获取用于 dockerize 的 ASP.NET Core 示例应用程序 在本地运行 ASP.NET 示例应用 使用 Docker for Linux 容器生成和运行示例 使用 Docker for Windows 容器生成和运行示例 Docker 映像优化 为开发人员生成 Docker 映像时,侧重于以下三种主要方案: 用于开发 .NET Core 应用的映像 用于生成 .NET Core 应用的映像 用于运行 .NET Core 应用的映像 为什么是三个映像? 因为在开发、生成和运行容器化应用程序时,具有不同的优先级。 开发: 优先级注重循环访问更改的速度以及调试更改的能力。 与更改代码并且快速查看相比,映像的大小是否不是那么重要? 生成: 此映像包含编译应用所需的所有内容,其中包括编译器和任何其他用于优化二进制文件的依赖项。 可使用生成映像创建置于生产映像中的资产。 生成映像用于持续集成或用于生成环境中。 此方法允许生成代理在生成映像实例中编译和生成应用程序(包括所有必需的依赖项)。 生成代理只需要了解如何运行此 Docker 映像即可。 生产: 部署和启动映像的速度可以有多快? 此映像很小,因此从 Docker 注册表到 Docker 主机的网络性能得到了优化。 已准备运行内容,以此实现从 Docker 运行到处理结果的最快时间。 Docker 模型中不需要动态代码编译。 放置在此映像中的内容将限制为运行应用程序所需的二进制文件和内容。 例如,dotnet publish 输出包含: 已编译的二进制文件 .js 和 .css 文件 在生产映像中包括 dotnet publish 命令输出的原因是使生产映像保持最小大小。 某些 .NET Core 映像共享不同标记之间的层,因此下载最新标记是一个相对轻量的过程。 如果计算机上已有较早版本,此体系结构会降低所需的磁盘空间。 当多个应用程序在同一计算机上使用公共映像时,在公共映像之间共享内存。 映像必须相同才可共享。 Docker 映像变体 为了实现上述目标,我们在 microsoft/dotnet 下提供了映像变体。 microsoft/dotnet:<version>-sdk(microsoft/dotnet:2.1-sdk) 此映像包含带有 […]
View Details