
Java
文章平均质量分 56
Java tech
LeoSong121
知识来源于分享
展开
-
[DB] Mybatis-Plus 代码生成器AutoGenerator生成实体类字段顺序和DB表字段顺序不符
Mybatis-Plus提供的代码生成器AutoGenerator非常方便开发,但最近在使用过程中出现问题(因为有些场景是需要严格保证字段顺序的时候就很麻烦了):生成和不符,我以Sql Server数据库举例说明。原创 2022-11-08 15:29:15 · 991 阅读 · 0 评论 -
【笔记】项目工作中总结(三)
HttpClient设置Protocol版本SSLContextBuilder.setProtocol("TLSv1.2")FileOperateFile 转 byte[]// 方法一 String excelFile = "/home/demo/db_table.xlsx"; try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); FileInputStream原创 2022-03-03 14:20:27 · 1239 阅读 · 0 评论 -
Spring- 上传文件 MultipartFile.transferTo() 报错 FileNotFoundException
上传文件时,使用MultipartFile.transferTo()将文件保存到本地路径:报错:java.io.IOException: java.io.FileNotFoundException: C:\Users\XXXXX\AppData\Local\Temp\tomcat.8350081478984499756.8080\work\Tomcat\localhost\ROOT\app\file\xxxx.xlsx (系统找不到指定的路径。) @Override publ原创 2021-12-17 18:37:49 · 7527 阅读 · 1 评论 -
[笔记] JPA使用小结
目录JPA查询方式JPA传入参数null和""区别JPA Specification关联查询使用函数查询使用likeJPA createNativeQueryJPA SqlResultSetMappingJava Plain JDBC数据库操作实例多数据源实体到数据库命名自动映射失效配置多数据源@PersistenceContext VS@Autowired多数据源开启指定事务JPA 使用AbstractBaseEntity并设置修改时间修改人等自动填充.原创 2022-03-03 13:46:14 · 1685 阅读 · 0 评论 -
SQL 嵌套子查询|连接查询|将子查询结果作为表与其他表联接查询|Nested Query|Subquery
话不多少上货:角色表:ums_role:id, name, description, level, status, sort_no查询角色level大于2000,且按照角色级别分组后,取每个分组的一个角色名并展示:(当然,这里的分组还有可能是按照创建时间等需要分组展示)SELECT t1.id, t1.name FROM ums_role t1 INNER JOIN ( SELECT MIN ( id ) AS id, level FROM ums_role WHERE 1原创 2021-08-25 17:11:57 · 717 阅读 · 0 评论 -
Springboot yml配置文件处理特殊字符
当我们使用yml配置文件时,有时候需要配置一些特殊字符会有问题,如:解决办法,增加单引号引入需要配置的内容:问题解决。原创 2021-03-31 18:55:35 · 3517 阅读 · 0 评论 -
SrpingCloud @FeignClient注解参数含义
value / name指定服务名称,表示你要消费哪个服务的接口path接口统一前缀url手动指定http调用地址primary多实现时指定优先级configuration自定义feign配置类,覆盖Feign的默认配置fallback / fallbackFactory降级统一处理...原创 2020-12-29 16:16:42 · 898 阅读 · 1 评论 -
Linux CentOS- 安装Java
目录安装SUN公司的JAVA删除原有安装的java安装SUN公司的JAVA1. 下载安装SUN的安装包,下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html注意这里选择Linux x64安装包,对应自己的系统,否则安装完成后有另外的一些问题。2. 创建安装目录,一般将安装的内容放到/usr/local目录下。cd /usr/localmkdirjava.原创 2020-11-23 15:30:46 · 826 阅读 · 0 评论 -
Jenkins- 构建失败:FATAL: Java heap space
Jenkins- 构建的出现:java.lang.OutOfMemoryError: Java heap space解决办法:找到Jenkins安装目录的jenkins.xml文件,在<arguments>增加Jenkins启动参数配置:<arguments>-Xrs -Xmx1024m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --http原创 2020-11-06 14:44:02 · 1926 阅读 · 0 评论 -
SpringBoot 踩坑笔记(二)
最近在做项目的时候,发现一些不存在的接口,经常会被转发到一个特定的地址(我这里被转发的是:"/api/v1/sendgrid",这个地址在项目是存在的)然后我打开了对应的controller,刚开始始终没有发现问题:/** * @author xxxx * @since 2020/4/21 17:24 sendgrid邮件控制器 */@RestController("/api/v1/sendgrid")public class SendGridController { @Aut原创 2020-05-09 17:49:25 · 248 阅读 · 0 评论 -
[Eclipse] 开发springboot项目 -- pom.xml第一行报错Unknown error
解决办法1:尝试将SpringBoot2.1.14.BUILD-SNAPSHOT版本降级到SpringBoot2.1.1.RELEASE版本,感觉这治标不治本啊,以后想升级不是玩完了。错误如下:解决办法2:在pom.xml 文件中的 properties 加入maven jar 插件的版本号。错误原因呢,报错是因为版本不兼容问题,将Maven的版本降到3.1.1就可以了,在po...原创 2020-03-20 18:01:59 · 1517 阅读 · 0 评论 -
SpringBoot - 启动时实现预加载自动执行代码
前言目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现,当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能。在这里整理一下,在...翻译 2020-02-25 16:52:16 · 5775 阅读 · 0 评论 -
Java8 - LocalDateTime和Date互转
Date to LocalDateTime: Date currDate = new Date(); LocalDateTime ldt = currDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println(ldt);输出:2...原创 2020-01-19 15:42:40 · 1019 阅读 · 0 评论 -
Java - System.currentTimeMillis() 是否和时区有关?
首先我们看一下代码: public static void timeZonePrint() { LocalDateTime now = LocalDateTime.now(); // 获取秒数 gmt+8 Long second8 = now.toEpochSecond(ZoneOffset.of("+8")); // 获取毫秒数 gmt+8 Long milliSecond8 = now.toInstant(Zo原创 2020-01-19 15:14:25 · 17403 阅读 · 25 评论 -
Spring Security - 认证流程与搭建过程问题记录
用户认证的流程:Spring Security支持多种用户认证的方式,最常用的是基于用户名和密码的用户认证方式,其认证流程如下图所示:1. 为什么定义的成功处理地址defaultSuccessUrl没生效:如果自定义了用户认证成功处理器,则在Spring Security配置类中通过http.formlogin().defaultSuccessUrl(" URL")来指定的默认认证...原创 2019-12-27 16:42:17 · 411 阅读 · 0 评论 -
Java - isAssignableFrom的用法
class1.isAssignableFrom(class2)判定此Class1对象所表示的类或接口与指定的Class2参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回true;否则返回false。true: class1 是父类,class2子类 package cn.com.xxx.xxx.common; class...翻译 2019-12-27 15:07:14 · 357 阅读 · 0 评论 -
SpringBoot - @Autowired 注解注入规则
@Autowired - 注入默认根据类型,匹配不到则根据bean名字Spring中注解方式的默认beanName生成规则:在Spring中,当我们配置一个bean的时候,可以不指定name,这样的话,Spring会生成一个默认的beanName1. 驼峰形式类名首字母小写:UserService--userService2. 特殊情况--当类名的首字母和第二个字母是大写的时候,将...原创 2019-12-27 14:43:44 · 2157 阅读 · 0 评论 -
SpringBoot - 集成Jasypt(注意点)
关于Jasypt Jasypt是一个Java库,允许开发人员以很简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术,无论是单向和双向加密。加密密码,文本,数字,二进制文件。一般可以将项目配置中敏感信息(如数据库密码,管理者密码,第三方账号密码等)使用Jasypt加密配置。官网:http://www.jasypt.org/Spri...原创 2019-12-27 14:21:45 · 1433 阅读 · 0 评论 -
Spring Security - 使用 Bcrypt 代替 MD5/SHA1
前言:如果数据库被“拖库”明文存储的密码就变得不安全。之前的做法是使用 md5 散列的方式,因为 md5 不可逆,无法从密文推出原文。MD5/SHA1为什么不安全:HASH 算法最大的问题是,会发生撞库,也就是说,有可能出现多个原文得到同一个密码。下面这个式子是存在的,如果原文是 M1,只需要另外一个同样 HASH 值的密码即可登录。MD5(M1) = MD5(M2) ...原创 2019-12-27 11:01:03 · 1040 阅读 · 0 评论 -
Spring Security - @PreAuthorize安全表达式hasRole、hasAuthority区别
hasRole:角色授权:授权代码,在我们返回的UserDetails的Authority需要加ROLE_前缀,Controller上使用时不要加前缀;hasAuthority:权限授权:用户自定义的权限,返回的UserDetails的Authority只要与这里匹配就可以,这里不需要加ROLE_,名称保持一至即可另外的安全表达式还有:表达式 说明 per...原创 2019-12-20 15:01:40 · 11642 阅读 · 1 评论 -
Linux各目录详解
/bin /sbin /usr/bin /usr/sbin四个都是存放系统命令的目录。区别是sbin只有超级用户才可以执行,bin目录超级用户和普通用户都可以执行。前面有usr的是命令在单用户模式下不能执行,没有usr是单用户模式下也可以执行。/boot系统启动目录,保存系统启动相关文件,如内核文件和启动引导程序(grub)文件等。/dev设备...原创 2019-10-31 16:55:13 · 269 阅读 · 0 评论 -
【笔记】SQL Server中,varchar和nvarchar如何选择?
最近在设计表的时候一直使用的是varchar,在中文操作系统存中文没有问题,但是转在azure服务器上却出现乱码了,故有以下总结:varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个...转载 2019-10-22 15:48:22 · 436 阅读 · 0 评论 -
log4j2配置日志打印时区
在项目开发遇到一个关于系统时区的问题,因为服务器使用的国外的服务器,时区统一设置不方便(反正是云架构师说的),但是对于系统的业务又需要使用中国时区,所以日志,还是后端代码都要使用中国时区。后端代码有很多方法设置时区,对于日志设置时区,网上资料比较少,然而我在stack overflow还是找到了。亲测有效的,配置如下:<!--log4j2 配置timezone --><...原创 2019-10-08 11:26:27 · 3189 阅读 · 0 评论 -
SpringBoot 设置response header(全局设置和单独controller设置)
如果我们要在单个请求响应response增加header,可以使用httpServletResponse或者ResponseEntityobjects.UsingHttpServletResponseWe simply have to add theHttpServletResponseobject to our REST endpoint as an argument, th...原创 2019-10-10 17:38:10 · 41864 阅读 · 1 评论 -
form-data和x-www-form-urlencoded请求的参数
对multipart/form-data请求的参数处理,是先上传文件,再获取参数的。因为multipart/form-data本身就是可以把文件当参数上传的,可能是考虑到缓存或者方便处理文件类型的参数,所以采用了临时文件的处理方式。对application/x-www-form-urlencoded请求参数的处理对application/x-www-form-urlencoded...翻译 2019-07-16 17:04:04 · 3997 阅读 · 0 评论 -
学习笔记
Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性 依赖少:仅仅依赖 M...原创 2018-10-04 01:40:22 · 285 阅读 · 0 评论 -
SQL count(1) count(*) count(col) 用法的区别
sql中count(1)和count(*)有区别吗count(*) 对 innodb 而言,它需要把数据从磁盘中读取出来然后累计计数;而 MyISAM 引擎把一个表的总行数存在了磁盘上,所以执行 count(*) 会直接返回这个数,如果有 where 条件则和 innodb一样。那么如何优化 count(*) ?一个思路是使用缓存,但是需要注意双写一致的问题(双写一致性后文缓存章节会做介绍)。...原创 2019-09-20 15:14:52 · 546 阅读 · 0 评论 -
[前后端分离] 前端发送跨域API请求,每次访问会发送两次请求OPTIONS问题
最近在做前后端分离的项目,项目部署到azure后,发现前端访问后端API的时候,每次都会发送两次请求第一次是OPTIONS的请求,然后才是正常的请求,。这个问题十分有意思。查阅资料得到的结论是:第一个OPTIONS的请求是由Web服务器处理跨域访问引发的。OPTIONS是一种“预检请求”,浏览器在处理跨域访问的请求时如果判断请求为复杂请求,则会先向服务器发送一条预检请求,根据服务器...原创 2019-08-28 16:15:58 · 5870 阅读 · 0 评论 -
nginx An attempt was made to access a socket in a way forbidden by its access permissions
一直启动不了nginx ,于是看错误日志:[emerg] 4376#4256: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)这个错误找了很久,我也一直怀疑是80端口被占用,把防火墙关了也不行!...翻译 2019-08-01 18:12:45 · 303 阅读 · 0 评论 -
一个通用的bat脚本
maven打包:@ECHO .............................. Start building ..............................echo=cd /d E:\gitee-workspace\gbpay-mastermvn clean package@ECHO .............................. buildin...原创 2019-01-10 14:25:15 · 370 阅读 · 0 评论 -
关于Ehcache、Memcache、Redis三大缓存比较和内存存储问题.
最近在做一个微信公众号存token的问题,看到了一个可解决方案的资料:Ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。redis是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。如果是单个应用或者对缓存访问要求很高的应用,用ehcache。如果是大型系统,存在缓存共享、分...翻译 2018-12-27 17:51:21 · 593 阅读 · 0 评论 -
关于密码学术语整理
对称密钥加密对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解...原创 2018-08-09 16:40:28 · 2671 阅读 · 0 评论 -
Restful风格详解和path配置笔记
RESTful架构风格的特点1.1.1 资源所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。资源总要通过某种载体反应其内容,文本可以用txt格式表现,也可以用HTML格式、XML格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现;JSON是现在最常用的资源表示格式。...翻译 2018-10-07 01:24:18 · 3043 阅读 · 0 评论 -
关于Eclipse 反编译.class出现乱码的解决办法
打开:Preferences-General-Workspace-Text file encoding 设置为uft-8,一定 记得重启Eclipse~原创 2018-10-06 17:47:12 · 4210 阅读 · 1 评论 -
Spring Boot 修改Java代码后自动重启问题
很多小伙伴在开发spring boot的时候, 如果修改Java代码一个变量的值, 需要即时看到生效的信息,则需手动重启spring boot main方法,通过在pom.xml加入以下配置,则项目会自动重启(在控制台可以看到重启日志,并不是不需要重新启动!!!这种方式比手动重启会快很多):<dependency> <groupId>org.spr...原创 2018-09-07 14:45:24 · 4562 阅读 · 0 评论 -
Ping不通telnet可能通
ping telnet的区别 ping: 用来检查网络是否通畅或网络连接速度(Ping域名可以得出解析IP) telnet: 用来检查指定ip是否开放指定端口的 说明: Ping不通并不一定代表网络不通。ping是基于ICMP协议的命令,就是你发出去一个数据包,对方收到后返给你一个!就好比声纳。这个协议是可以禁止的!禁止后,如果你ping对方,对方收到后就不回馈给你,这样你就显示无法pi...原创 2018-09-07 10:59:08 · 7773 阅读 · 0 评论 -
/**和/*区别
Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)这些可以组合出很多种灵活的路径模式 Wildcard Description ...原创 2018-08-13 18:56:11 · 22099 阅读 · 0 评论 -
Java开发小技巧(二)
eclipse的properties文件是默认ISO-8859-1编码的,如果在properties里输入中文会导致乱码,此时需要修改其编码为utf-8,具体步骤如下:Window→Preferences→General→Content Types→Text,然后单击Java Properties Files,选定下方的*.properties(locked),接着将最下方的ISO-8859-...翻译 2018-08-08 16:10:20 · 171 阅读 · 0 评论 -
Eclipse常用快捷键-非常实用
前言用了eclipse这么久,原来还有这么多的好用的快捷键,感觉以前白用了,大家可以看看,对提升写代码速度十分方便。ctrl+shift+r:打开资源ctrl+o:快速outlinectrl+e:快速转换编辑器ctrl+2,L:为本地变量赋值(注:ctrl和2同时按完以后释放,再快速按L。)ctrl+m 大显示屏幕能够提高工作效率是大家都知道的...原创 2018-08-13 10:34:03 · 1233 阅读 · 0 评论 -
总结阿里大咖们--终极版日志规约篇
日志规约 1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 import org.slf4j.Logger; import org.slf4j.LoggerFactory;private static final Logger lo...原创 2019-01-15 15:45:41 · 1350 阅读 · 0 评论