202010-01 springboot中@Async默认线程池导致OOM问题 前言:1.最近项目上在测试人员压测过程中发现了OOM问题,项目使用springboot搭建项目工程,通过查看日志中包含信息:unabletocreatenewnativethread内存溢出的三种类型:1.第一种OutOfMemoryError:PermGenspace,发生这种问题的原意是程序中使用了大量的jar或class2.第二种OutOfMemoryError:Javaheapspace,发生这种问题的原因是java虚拟机创建的对象太多3.第三种OutOfMemoryError:unabletocreatenewnativethrea... 继续阅读 >
202009-30 Springboot整合freemarker 404问题解决方案 今天遇到了ftl整合springboot出现的问题@ControllerpublicclassIndexController{@RequestMapping("hello")publicStringindex(){System.out.println("aaa");return"index";}}在浏览器输入localhost:8080/hello控制台也打印了aaa,index.ftl也写的没有问题。就是出现了这个问题。解决办法:查看源码,原来默认的是.ftlh结尾的,当然就会出现上面的错误。修改办法,在application.properties配置文件中添加如下... 继续阅读 >
202009-30 Springboot如何实现Web系统License授权认证 在我们做系统级框架的时候,我们要一定程度上考虑系统的使用版权,不能随便一个人拿去在任何环境都能用,所以我们需要给我们系统做一个授权认证机制,只有上传了我们下发的lic文件并验证通过,才能正常使用,下面就开始一步一步实现这个功能1.生成机器码我们首先要做的就是对软件部署的环境的唯一性进行限制,这里使用的是macadderss,当然你也可以换成cpu序列编号,并无太大影响,先上代码privatestaticStringgetMac(){tr... 继续阅读 >
202009-30 Springboot热部署实现原理及实例详解 1.前言在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在Java开发领域,热部署一直是一个难以解决的问题,目前的Java虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。下面我=我们就看看对于简单的类修改的热部署怎么实现。2.原理深层原理是使... 继续阅读 >
202009-30 基于SpringBoot构建电商秒杀项目代码实例 一、项目功能概述电商秒杀需要完成的3个功能:1.展示一个商品列表页面,我们可以从中看到可秒杀的商品列表2.点击进入商品详情页,获取该商品的详细信息3.秒杀时间开始后,点击进入下单确认页面,并支付成功二、基于SpringBoot进行项目环境搭建步骤1:创建一个maven工程,使用quickStart骨架。步骤2:在pom.xml导入SpringBoot相关依赖。<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/... 继续阅读 >
202009-29 SpringBoot四种读取properties文件的方式(小结) 前言在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作。今天就分享四种在Springboot中获取配置文件的方式。注:前三种测试配置文件为springboot默认的application.properties文件#######################方式一#########################com.zyd.type3=Springboot-@ConfigurationPropertiescom.zyd.title3=使用@ConfigurationProperties获取配置文件#mapcom.zyd.login[username]=zhangdeshuaicom.zyd.lo... 继续阅读 >
202009-29 springboot CommandLineRunner接口实现自动任务加载功能 CommandLineRunner接口可以实现任务的自动加载,当项目启动完后,就会自动去执行CommandLineRunner接口里的run方法,你可以实现多个CommandLineRunner的实例,使用order来控制执行的顺序!/***项目启动后自动运行的代码CommandLineRunner*/@Component@Order(1)publicclassMyStartupRunner1implementsCommandLineRunner{privateLoggerlogger=LoggerFactory.getLogger(MyStartupRunner1.class);@Overridepublicvo... 继续阅读 >
202009-29 Springboot日志开启SLF4J过程解析 一、日志1、配置日志级别日志记录器(Logger)的行为是分等级的。如下表所示:分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL默认情况下,springboot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别#设置日志级别logging.level.root=WARN这种方式只能将日志打印在控制台上二、Logback日志springboot内部使用Logback作为日志实现的框架。Logback和log4j非常相似,如果你对log4j很熟悉,那对logback很快就会... 继续阅读 >
202009-29 详解SpringBoot中Controller接收对象列表实现 如果SpringBoot中对应的Controller要接收一个对象,该对象中又存放了一个List列表,那么页面该如何传递相关应的参数信息呢。本篇文章给大家一个简单的示例,提供一种实现方式。实体类首先看实体类的结构(注意使用了Lombok):@DatapublicclassRules{privateList<Rule>rules;}对应Rule实体类代码如下:@DatapublicclassRule{/***类名*/privateStringclassName;/***字段名称*/privateStringcolumn;/***... 继续阅读 >
202009-29 Springboot 全局日期格式化处理的实现 最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手续办妥帖,寒暄过后送他们出公司,几个老哥临别时冲我鬼魅一笑,我顿时心里一紧有种不好的预感,这事绝对没有这么简单。等我接手这几个大佬的项目后,应验了我的预感,此刻我居然有点后悔,为啥送别之时没揍他们一顿!哈哈哈~而这种打人的冲动,在我开始优化几位老哥的项目时候,变得越来越强烈。有个坑技术部每个月都会组织一下代码走查及优化,以前是... 继续阅读 >
202009-29 SpringBoot +Vue开发考试系统的教程 一、考试系统简介新鲜出炉的一款SpringBoot+Vue的考试系统,支持多种题型:选择题、多选题、判断题、填空题、综合题以及数学公式。支持在线考试,教师在线批改试卷。二、项目架构后端技术栈SpringBoot:SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。Mybatis:一个持久层的框架,与数据库进行交互,将数据持久化到关系型数据库中Shiro:一个功能强大且易于使用的Java... 继续阅读 >
202009-29 SpringBoot整合Swagger框架过程解析 Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger让部署管理和使用功能强大的API从未如此简单。引入maven依赖<!--https://mvnrepository.com/artifact/io.springfox/springfox-swagger2--><dependency><groupId>io.springfo... 继续阅读 >
202009-29 Springboot访问templates html页面过程详解 springboot项目默认是不允许直接访问templates下的文件的,是受保护的。如果要访问templates下的文件,推荐使用thymeleaf。注:使用thymeleaf这一点要牢牢记住!如何使用:1、pom依赖<!--thymeleaf模板依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>2、配置文件#模板热部署、禁用thymeleaf缓存spring.thymeleaf.cac... 继续阅读 >
202009-29 Springboot RocketMq实现过程详解 首先,在虚拟机上安装rocketmq和rocketMq可视化控制,安装不做描述。1、pom.xml文件添加依赖mq的版本与连接的rocketmq版本保持一致<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-remoting</artifactId><version>4.4.0</version></dependency>2、yml文件添加rocketmq配置apache:rocketmq:#消费者的配置consumer:pushConsumer:myConsumer#生产者的配置producer:... 继续阅读 >
202009-29 SpringBoot SpEL语法扫盲与查询手册的实现 Spring表达式语言简称为SpEL,一种类似Ognl的对象图导航语言(对于ognl不熟悉的同学可以参考一下:Ognl系列博文)SeEL为Spring提供了丰富的想象空间,除了一些基本的表达式操作之外,还支持访问bean对象调用方法,访问(修改)类(对象)属性计算表达式正则匹配... I.语法百科以下内容均来自官方文档:https://docs.spring.io/spring-framework/docs/5.2.1.RELEASE/spring-framework-reference/core.html#... 继续阅读 >
202009-29 Springboot的maven间接依赖的实现 在项目中经常使用maven来管理项目,但是有时候对于maven的细节还是了解的不是很清楚,因此今天复习下。maven项目首先开始建立一个最简单的maven项目,其配置如下图:可以看到最上面一行是xml的文件描述符,然后再是project,在这里引入xsd文件。XSD(XMLSchemasDefinition)XMLSchema,描述了xml文档的结构,用于判断其是否符合xml的格式要求然后下面就是groupId,通常是公司的域名,artifactId通常指的是项目名... 继续阅读 >