Java
@夜魅
趁年轻早点活成自己想要的模样
展开
-
FreeMarker 页面静态化—快速入门(三)
FreeMarker的主要学习内容FreeMarker中文官方手册(可结合学习)http://freemarker.foofun.cn/FreeMarker学习笔记源码git地址(可供下载):https://github.com/L-Melted/FreeMarkerDemo.git四、FreeMarker 页面静态化通过上述介绍可知Freemarker是一种基于模板的、用来生成输出文本的通用工具,所以我们必须要定制符合自己业务的模板,然后生成自己的Html页面。Freemarker是原创 2020-12-29 16:24:56 · 252 阅读 · 0 评论 -
Java将Word/Excel转换成PDF—aspose工具
1、引入破解版aspose-words-15.8.0-jdk16 jar若不是破解版的Jar包,word转成pdf之后,pdf中会有水印。可以自己在网上找破解的Jar包资源。并且使用aspose需要在项目里加入一个license.xml,不然生成的pdf会有水印:...原创 2020-12-24 15:28:49 · 4653 阅读 · 20 评论 -
FreeMarker常见指令的简单介绍—快速入门(二)
FreeMarker的主要学习内容三、FreeMarker常见指令assign自定义变量指令使用assign指令你可以创建一个新的变量,或者替换一个已经存在的变量。创建Servlet,方便向对应页面进行跳转package com.xxx.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Htt原创 2020-12-22 17:48:10 · 412 阅读 · 0 评论 -
Freemarker简单概述及其数据类型的简单学习—快速入门(一)
一、FreeMarker的主要内容:FreeMarker概述:FreeMarker概念、FreeMarker特性、FreeMarker环境搭建FreeMarker数据类型:布尔类型、日期类型、数值类型、字符串类型、sequence类型、hash类型FreeMarker常见指令:assign自定义变量指令、if elseif else 逻辑判断指令、list遍历指令、marco自定义指令、nested占位指令、import导入指令、include包含指令FreeMarker页面静态化Fre原创 2020-11-29 21:00:09 · 611 阅读 · 0 评论 -
easyexcel导出结束后报:java.io.IOException: Stream closed
在使用springboot构建项目时,使用zipkin进行链路跟踪,springboot内部容器可能使用的是undertow,因此导致此错误。将容器undertow排除: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>原创 2020-10-26 11:22:05 · 2871 阅读 · 1 评论 -
PoI 3.17 已过时代码对比
PoI 3.17 已过时代码对比颜色定义变化旧版本:HSSFColor.BLACK.index新版本:IndexedColors.BLACK.index获取单元格格式旧版本: cell.getCellType与之应对的单元格格式 HSSFCell.CELL_TYPE_BLANK新版本: cell.getCellTypeEnum与之对应的单元格格式BLANK(org.apache.poi.ss.usermodel.CellType.BLANK)设置单元格格式旧版本...原创 2020-10-23 12:28:05 · 1261 阅读 · 0 评论 -
easyexcel 3.9版本和poi3.17版本冲突解决办法
项目之前用的poi的版本是3.9,后来使用easyexcel的时候,出现某些类找不到,这是因为poi.jar包版本冲突导致的,maven会自动使用最高级的版本,而easyexcel是3.1.7,将项目依赖的poi升级到4.1.2就好了。<poi.version>4.1.2</poi.version><dependency> <groupId>org.apache.poi</groupId> <artifactId>p原创 2020-10-23 12:22:39 · 9911 阅读 · 2 评论 -
MySQL 5.6存储过程和函数语法的简单介绍
111原创 2020-10-25 18:27:59 · 2469 阅读 · 13 评论 -
Spring Data Jpa 当属性为Null也更新的解决方案
使用Spring Data Jpa来操作数据库的,可是在更新数据的时候发现一个问题,属性值为Null竟然也更新,这就会导致本来没有更新的属性值,全部就成了Null。实体如下:package com.sgcc.modules.system.domain;import com.fasterxml.jackson.annotation.JsonFormat;import com.sgcc.base.BaseEntity;import io.swagger.annotations.ApiMode原创 2020-08-09 22:09:19 · 1361 阅读 · 0 评论 -
EasyExcel的使用学习
EasyExcel简介:EasyExcel是阿里巴巴开源的一个excel处理框架,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。github地址:https://github.com/alibaba/easyexcelJava领域解析、生成Excel比较有名的框架有Apache POI、jxl等。但它们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频原创 2020-07-26 23:54:11 · 1189 阅读 · 1 评论 -
常见9种 OOM 原因及解决方案
本文转载:https://blog.csdn.net/windforce828/article/details/104819055当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实际生产经验转载 2020-07-26 23:14:33 · 3278 阅读 · 0 评论 -
JPA框架的学习:
Repository接口讲解:Repository接口是Spring Data的核心接口,不提供任何方法public interface Repository<T,ID extends Serializable> {}@RepositoryDefinition的使用Repository类的定义:public interface Repository<T,ID extends Serializable> {}Repository是一个空接口,标记接.原创 2020-07-21 23:48:01 · 415 阅读 · 0 评论 -
开发中常用到的@Valid 注解类型的使用
一:前言 搭建springboot项目,采用Restful接口,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。二:传统解决方案 就是我们自己在代码中对参数一一进行判空操作Model:/** * @author: liman * @Date: 2020/7/20 16:27 * @Description: */public class User{ private Long userID; ...原创 2020-07-20 22:30:33 · 1452 阅读 · 0 评论 -
idea常用快捷键整理
ctrl + alt + oidea 快速去除没有使用的引用原创 2020-07-20 16:09:18 · 132 阅读 · 0 评论 -
JPA自定义原生SQL语句的查询结果如何转化为对象
是什么让我选择了JPAJPA是一种规范,Hibernate是一种JPA规范的实现,感兴趣可以移步阅读此篇文章定义Repository之后,几乎所有的单表非聚合操作,只需要写个函数名称就完成了,自动根据定义的函数名称完成查询。使用MapStruct也可以很容易完成多对一,对对多,一对多查询,只需要简单定义一下,加个注解就能搞定,比当初学习Spring MVC时写大量的配置文件舒坦多了。Hibernate性能好,三级缓存,支持的数据库比较多(数据库无关性好),DAO层如上文所说,非常省代码量,另外Hib原创 2020-07-19 22:20:30 · 2217 阅读 · 2 评论 -
Java代码非侵入式和侵入式的比较
侵入式(引入或继承了别的包或者框架)表面的理解是:你的代码里已经嵌入了别的代码,这些代码可能是你引入过的框架,也可能是你通过接口继承得来的,这样你就可以拥有侵入代码的一些功能。所以我们就称这段代码是侵入式代码。侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。侵入时代码的优点:侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。缺点:框架外...原创 2020-03-19 09:46:45 · 1633 阅读 · 0 评论 -
Druid连接池的简单介绍
讲解1.Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid地址:https://github.com/alibaba/druidDRU...原创 2020-03-04 15:32:19 · 506 阅读 · 0 评论 -
C3P0连接池的简单介绍
c3p0是一个易于使用的库,用于通过JNDI可绑定的数据源(包括实现连接和语句池的数据源)扩展传统的(基于DriverManager的)JDBC驱动程序,如jdbc3规范和jdbc2 std扩展所述。C3P0的使用步骤: 1.下载jar包,导包c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jar 2.配置使用的xml配...原创 2020-03-04 11:25:55 · 344 阅读 · 0 评论 -
数据库连接池的简单
1.没有连接池的现状之前JDBC访问数据库的步骤: 创建数据库连接 →运行SQL语句→关闭连接 每次数据库访问执行这样重复的动作每次创建数据库连接的问题 获取数据库连接需要消耗比较多的资源,而每次操作都要重新获取新的连接对象,执行一次操作就把连接关闭,而数据库创建连接通常需要消耗相对较多的资源,创建时间也较长。这样数据库连接对象的使用率低。 假设网站一天10万访问量,数据库...原创 2020-03-04 11:09:27 · 192 阅读 · 0 评论 -
PreparedStatement类对SQL注入问题的解决
1.Satement对象每执行一条SQL语句都会先将这条SQL语句发送给数据库编译,数据库再执行。 如果有1万条类似的SQL语句,数据库需要编译1万次,执行1万次,显然效率就低了。 并且statement执行的是静态的sql语句2.prepareStatement()会先将SQL语句发送给数据库预编译。PreparedStatement会引用着预编译后的结果。可以多次传入不同的参数...原创 2020-03-04 09:34:32 · 793 阅读 · 0 评论 -
JDBC中级实现--数据库连接四要素的抽取与动态获取
1.数据库连接四要素不应该写死在代码中,扩展性不高,应该抽取到配置文件中动态读取:扩展文件名.propertiesDRIVER_CLASS_NAME = com.mysql.jdbc.DriverURL = jdbc:mysql:///mysql_jdbcUSER = rootPASSWORD = root2.动态读取操作,只需要执行一次,所以解析代码写在静态代码块 Cl...原创 2020-03-03 14:34:59 · 1058 阅读 · 0 评论 -
JDBC的事务操作
1.使用步骤: 注册驱动 Class.forname("全类名"); 获取连接 DriverManager.getConnection().var; 开启事务 connection.setAutoCommit(boolean autoCommit);//true为自动提交,关闭事务;false为开启事务,关闭自动提交 获取到State...原创 2020-03-03 14:29:58 · 201 阅读 · 0 评论 -
JDBC初级实现
JDBC接口的介绍1.使用JDBC接口技术,操作mysql数据库,将用户名都获取到Java程序中 JDBC是一套接口,接口不能直接使用,要通过它的实现类,这个实现类由mysql数据库厂商提供(驱动Jar包) 2.若想数据库与java程序建立连接,首先必须先将mysql的驱动jar包导入工程.lib中JDBC四个核心对象:* 1.DriverManager:用于...原创 2020-02-25 21:19:31 · 237 阅读 · 0 评论 -
Java访问数据库的标准规范--JDBC(Java Data Base Connectivity)
1.JDBC:Java DataBase Connectivity (Java数据库连接)JDBC是Java访问数据库的标准规则,真正的怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动,所有我们只需要会调用jdbc接口中的方法即可JDBC的作用:Java通过JDBC就可以操作数据库...原创 2020-02-25 20:57:32 · 396 阅读 · 0 评论 -
Java日志框架--Slf4j的使用
一、日志门面的意义当我们的系统变的更加复杂的时候,我们的日志就容易发生混乱。随着系统开发的运行,可能会更新不同的日志框架,造成当前系统中存在不同的日志依赖,让我们难以统一的管理和控制,就算我们强制要求所有的模块使用相同的日志框架,系统中也难以避免使用其他类似spring,mybatis等其他的第三方框架,它们依赖于我们规定不同的日志框架,而且他们自身的日志系统就有着不一致性,依然会出来日志体系...原创 2020-02-20 13:22:41 · 985 阅读 · 0 评论 -
Java日志框架--Log4j日志
一、Log4j的简介Log4J是 Apache 的一个开源项目(官网http://jakarta.apache.org/log4j),通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程。方便项目的调试。1.Log4j组件:Log4j主要由以...原创 2020-02-14 12:00:57 · 331 阅读 · 0 评论 -
Java日志框架--JCL(Jakarta Commons Logging)
JCL,全称为"Jakarta Commons Logging",也可称为"Apache Commons Logging",是Apache提供的一个通用日志API。JCL采用了设计模式中的“适配器模式”,它是为“所有的Java日志实现”提供的一个统一的接口,然后在适配类中将对日志的操作委托给具体的日志框架,它自身也提供一个日志的实现,但是功能非常弱(SimpleLog)。所以一般不会单独使用它。它...原创 2020-02-12 21:53:32 · 1031 阅读 · 0 评论 -
JUL(Java util Logging)日志初步整合
一、JUL(Java util Logging)初步学习JUL是Java原生的日志框架,很多项目在没有配置日志(slf4j或者log4j)时会默认使用jul作为最后的日志实现Java Logging Technology–java日志简介Logger的大致处理流程1.Loggers:被称为记录器,应用程序通过获取Logger对象,调用其API来发布日志信息。Logger通常是应...原创 2020-02-10 20:23:02 · 552 阅读 · 0 评论 -
POI自定义注解生成文档
一、环境搭建:<!-- excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></depend...原创 2019-09-19 16:28:30 · 342 阅读 · 0 评论 -
Arrays.asList的使用
一、java.util.Arrays.asList() 的一般用法如果将一个数组转换为 List,可以将需要转化的数组作为参数,或者直接把数组元素作为参数。但是其中参数必须是包装类类型,如果使用的是基本数据类型,可以使用Jdk8新特性进行解决具体代码如下://1将需要转化的数组作为参数String[] arrayList = {"1","2","3"};List<Strin...原创 2019-09-16 23:34:42 · 288 阅读 · 0 评论