一、springboot控制台打印sql日志 ---------.mapper为你启动类扫描的mapper路径

logging.level.---------.mapper = debug

二、前端传到后台的json转换成java对象
json:代表的是前端定义的json字符串的变量名
ProductRecord.class:对应的是你想转换成的对象.class

 <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency> ProductRecord productRecord = JSON.parseObject(json, ProductRecord.class);

如果前端传的集合对象后台接收为string类型,解决办法:

public  ResponseState createOrder(Orders orders,
@RequestParam(value = "listOrderProduct",required = true) String listOrderProduct){
JSONArray arrayList= JSONArray.parseArray(listOrderProduct); //把 string转成JSONArray对象。
List<OrderProduct> list = JSONObject.parseArray(arrayList.toJSONString(),OrderProduct.class); //转化为你想要的对象list,OrderProduct为目标对象。
return orderService.createOrder(orders,list);
}

三、解决前端传一个对象和一个json,后台接收为null

@RequestMapping里加一个produces="application/json; utf-8"

四、后台接收一个集合抛出异常java.lang.NoSuchMethodException: java.util.List.()
解决办法添加 @RequestParam(value=“list”,required=true) List list

五、for、foreach、Iterator不同数据结构遍历时间测试

基于链表结构的数据,数据增加到万级,for遍历的时间开始成倍数增长
LinkedList linkedList = new LinkedList();
for (int i =0;i<10000;i++){
linkedList.add(i);
} 基于数组格式的数据,数据添加到百万级,三者遍历时间并无明显区别
ArrayList linkedList = new ArrayList();
for (int i =0;i<1000000;i++){
linkedList.add(i);
} foreach和Iterator相比,两种数据格式遍历时间无明显差别

六、springboot全局日期格式化配置

#jackson相关配置
spring.jackson.date-format = yyyy-MM-dd HH:mm:ss
#时区必须要设置
spring.jackson.time-zone= GMT+8
#ALWAYS的意思是即时属性为null,仍然也会输出这个key,对应yml里面的注释里面的类型
spring.jackson.default-property-inclusion=ALWAYS

七、接口测试时发现一个问题,两个实体类有继承关系,其中一个实体类有list集合。此时接口还需要传一个list集合,如果这两个list集合变量名重名,当你在遍历该参数list集合时无论集合中有多少条数据,发现list.size总是等于2,此时list中的数据被当成一条数据保存到数据库里并且循环两次!解决办法,就是更改变量名,防止重名

八、集合Swagger的时候:报错栈溢出,原因可能是代码和swagger冲突导致了无限递归
(1)、不要在接口中的参数中引用实体类,尽量用json。
(2)、代码逻辑中尽量不要 多层 集合嵌套集合。
解决办法 :注释掉启动类的@EnableSwagger2,让我改代码逻辑还是算了吧

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError

java.lang.StackOverflowError
抛出该异常的原因:Jvm线程请求的栈深度大于虚拟机所允许的深度

九、捕获异常

package rongheng.member.controller;

import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import rongheng.member.entity.ResponseState; import javax.servlet.http.HttpServletRequest; @ControllerAdvice
public class GlobalDefaultExceptionHandler{
/**
* @RequiresPermissions("user:updateSysUser") 捕获无权限异常
* @param req
* @param e
* @return
*/
@ExceptionHandler(UnauthorizedException.class)
@ResponseBody
public Object defaultExceptionHandler(HttpServletRequest req,Exception e){
ResponseState responseState = new ResponseState();
responseState.setState("403");
responseState.setMsg("对不起,暂无权限!");
return responseState;
}
}

十、springboot热部署

#设置开启热部署
spring.devtools.restart.enabled=true
#页面不加载缓存,修改即使生效
spring.freemarker.cache=false <!--添加热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency> <build>
<finalName>vip</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!--热部署配置-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork:如果没有该项配置,整个devtools不会起作用-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>

Java项目笔记(一)的更多相关文章

  1. Java项目笔记01

    1 Tomcat问题 1 今天用了Ecplise和MyEcplise想着用同一个路径下的Tomcat,但是却发现配置完Ecplise后MyEcplise却不能用了,并且后面在bin里启动Tomcat还 ...

  2. Redis学习笔记之二 :在Java项目中使用Redis

    成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...

  3. java学习笔记(一):开始第一个java项目

    这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...

  4. Gradle学习笔记(1)创建简单的Java项目

      Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.当前 ...

  5. Maven 学习笔记——将普通的Java项目转换成Maven项目(3)

    将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...

  6. IDEA 学习笔记之 Java项目开发深入学习(2)

    Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...

  7. IDEA 学习笔记之 Java项目开发深入学习(1)

    Java项目开发深入学习(1): 定义编译输出路径: 继承以上工程配置 重新定义新的项目编译路径 添加source目录:点击添加,再点击移除: 编译项目: 常用快捷键总结: Ctrl+Space 代码 ...

  8. IDEA 学习笔记之 Java项目开发

    Java项目开发: 新建模块: 添加JDK: 导入本地Jars: 从远程Maven仓库下载: 创建package: 新建类/接口/枚举等: 字体太小,改字体: Duplicate Scheme 修改编 ...

  9. 《Maven在Java项目开发中的应用》论文笔记(十七)

    标题:Maven在Java项目开发中的应用 一.基本信息 时间:2019 来源:山西农业大学 关键词:Maven:Java Web:仓库:开发人员:极限编程; 二.研究内容 1.Maven 基本原理概 ...

  10. jenkins 持续集成笔记2 --- 构建 Java 项目

    先说一下流程: jenkins 从 gitlab pull 代码,使用 maven 打包,然后备份原来的jar包,使用rsync同步到服务器上,重启服务. pipeline 资源去看官方中文文档 ht ...

随机推荐

  1. P6680 [CCO2019] Marshmallow Molecules 题解

    P6680 题意 一个 \(n\) 点 \(m\) 边的图,图无重边,无自环. 满足这样一条性质:如果三边互不相等,则三边可以构成三角形. 思路 思路简单,用集合的思想来做. 引用一下 K0stlin ...

  2. Python threading实现多线程 基础篇

    讲多线程前,先要了解什么是进程,什么是线程,已经知道的请略过. 一.进程与线程: 进程是资源分配的最小单位,一个程序至少有一个进程. 线程是程序执行的最小单位,一个进程至少有一个线程. 进程都有自己独 ...

  3. java8interface的新特性:default,static,funcation

    default:默认方法 在类接口中可以直接定义的方法,实现接口的类可以直接使用 使用案例: public interface MyInterface { default void display() ...

  4. 【VMware】虚拟机 VMware WorkStation Pro 下载安装(Windows)

    官网地址: 下载地址:[VMware WorkStation Pro 15.5 For Windows] https://www.vmware.com/cn/products/workstation- ...

  5. 【转载】 Do's and Don'ts of using t-SNE to Understand Vision Models —— t-SNE 作者写的使用指南(PPT版本)

    <Do's and Don'ts of using t-SNE to Understand Vision Models> 作者的PPT视频:https://www.youtube.com/ ...

  6. 【转载】 深度学习——Xavier初始化方法

    版权声明:本文为CSDN博主「shuzfan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/shuzfan/a ...

  7. 1000T的文件怎么能快速从南京传到北京?最佳方案你肯定想不到

    今天刷面试题看到一个有意思的面试题, 1000T的文件怎么能以最快速度从南京传到北京? 网络传输 首先我们考虑通过网络传输,需要多长时间. 我特地咨询了在运营商工作的同学,目前带宽: 家庭宽带下行最大 ...

  8. Lambert cos 定律再积分无穷级数求和

    设有能量为 \(I\) 的一束光射向表面 \(s\),发生理想的漫反射.设反射率为 \(a\),则 \(s\) 向在 \(\phi\) 方向反射的能量 \(R\) 可由 Lambert cos 定律给 ...

  9. Django集成腾讯COS对象存储

    前言 最近遇到一个场景需要把大量的资源文件存储到 OSS 里,这里选的是腾讯的 COS 对象存储 (话说我接下来想搞的 SnapMix 项目也是需要大量存储的,我打算搭个 MinIO 把 24T 的服 ...

  10. 带你了解 WebAssembly 的发展、应用与开发

    一.WebAssembly 是什么? "WebAssembly(缩写为 Wasm)是一种基于堆栈式虚拟机的二进制指令集.Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署 ...