
java
白不懂黑的静
纸上得来终觉浅 绝知此事要躬行
展开
-
List与字符串数组互转
String title = "\t 10月上旬\t 10月中旬\t 10月下旬"; String[] arrTitles = title.split("\t");1、字符数组转List://使用 Java8 的StreamList list2 = Arrays.stream(arrTitles).collect(Collectors.toList());//基本类型也可以实现转换(依赖boxed的装箱操作)int [] arrIndex = { 1, 2, 3 };List l...原创 2021-09-14 09:07:24 · 3940 阅读 · 0 评论 -
浅谈spring为什么推荐使用构造器注入
【Spring】浅谈spring为什么推荐使用构造器注入在开发过程中,我们习惯了Spring的注解@Autowired(至少我是习惯性认为这个是个标准写法。。。),后来在一篇文章中看到Spring官方是推荐使用构造器注入的,在此记录下。一、前言 Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过将组件交由Spring的IOC容器管理,将对象的依赖关系由Spring控制,避原创 2021-06-24 18:25:04 · 1305 阅读 · 0 评论 -
SpringBoot+Jpa无法生成数据库表
在使用SpringBoot+Jpa做项目的时候,发现有一个实体始终无法生成后台数据库表@Data@Entity@Table(name = "SYFX_YANZHONGXDJ")public class FengXianhgyzcd extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ @Id原创 2021-06-24 10:30:08 · 393 阅读 · 0 评论 -
2021-06-23
SpringBootJPA 一对多内存溢出问题现象:在使用SpringBootJPA进行一对多的关联配置的时候,经常会报内存溢出的问题;原因:一:在两类中分别重写了 toString 方法,导致查询加载时两类在互相调用对方的toString,形成递归,造成内存溢出二:使用了 lombok 插件中的@Data以及@ToString注解来标注实体类,让 lombok 来代替生成 gettet/setter 以及 toString,但是 lombok 在生成时会出现循环比较两类中的 hashcode,导致原创 2021-06-23 10:13:40 · 266 阅读 · 0 评论 -
实现一个线程安全的ArrayList
我们都熟知在高并发的场景下,ArrayList是线程不安全的,JDK Collections接口提供线程安全的操作,本文通过代码演示下,最后查看源码分析下为何是线程安全的。ArrayList升级为线程安全的List 实例...原创 2021-06-17 17:38:27 · 553 阅读 · 0 评论 -
ArrayList和LinkedList的区别
1、ArrayList和LinkedList可想从名字分析,它们一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。前者是数组队列,相当于动态数组;后者为双向链表结构,也可当作堆栈、队列、双端队列2、当随机访问List时(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。3、当对数据进行增加和删除的操作时(add和...原创 2021-06-17 14:19:42 · 175 阅读 · 0 评论 -
java中常用的Map集合总结
java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMap,Map不允许键重复,但允许值重复1.HashMap:最常用的Map,根据键的hashcode值来存储数据,根据键可以直接获得他的值(因为相同的键hashcode值相同,在地址为hashcode值的地方存储的就是值,所以根据键可以直接获得值),具有很快的访问速度,遍历时,取得数据的顺序完全是随机的,HashMap最多只允许一条记录的键原创 2021-06-17 13:50:26 · 835 阅读 · 0 评论 -
SpringDataJpa自关联映射时出现StackOverflowError
现象:在使用SpringDataJpa时,进行自关联时,发现存在子数据的记录会报内存溢出问题StackOverflowError原因以及解决方案:为了编写方便简洁,代码更加优雅,使用了 lombok 插件中的@Data注解来标注类,让 lombok 来代替生成 gettet/setter 以及 toString,但是 lombok 在生成时会出现循环比较两类中的 hashcode,导致内存溢出。解决方案: 不要使用 lombok ,自己手写 gettet/setter 以及 toStr原创 2021-05-20 09:57:29 · 404 阅读 · 0 评论 -
java 启动jar 指定端口
java 启动jar 指定端口java -jar xxx.jar --server.port=80原创 2021-01-07 10:45:27 · 5681 阅读 · 0 评论 -
java中SerialVersionUID的作用
我们在进行java后端开发的过程中,经常会看到如下的代码片段:package com.shijia.apidemo.pojo;import java.io.Serializable;import java.sql.Time;import java.util.Date;/** * 系统用户信息 */public class SysUser implements Serializable { private static final long serialVersionUID原创 2020-12-02 10:33:02 · 372 阅读 · 0 评论 -
java中字符串比较大小
java中经常会有比较两个字符串大小的问题,虽然提供了方法,但是有时候会突然想不起来,在此做各记录,方便查找:String aa = "aa";String bb = "bb";int result = aa.compareTo(bb);compareTo的源码: public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.va原创 2020-11-28 14:55:06 · 684 阅读 · 0 评论 -
java Double计算公式类
import org.springframework.stereotype.Component;import java.io.Serializable;import java.math.BigDecimal;/** * 类名:DoubleUtil<br> * 说明:double的计算不精确,会有类似0.0000000000000002的误差,正确的方法是使用BigDecimal或者用整型<br> * 整型地方法适合于货币精度已知的情况,比如12.11+1.10...原创 2020-11-26 15:10:39 · 596 阅读 · 0 评论 -
Java Excel 列号数字与字母互相转换
在工作中Excel解析时,常常需要将列号的字母转换成对应的数字序号。package test;public class ExcelColumn { public static void main(String[] args) { String colstr = "AA"; int colIndex = excelColStrToNum(colstr, colstr.length()); System.out.println("'" + c原创 2020-11-04 17:42:04 · 1224 阅读 · 0 评论 -
Java POI解析Excel的跨Sheet读取数据验证下拉值
存在一个Excel文件,其中有列数据是下拉选择,且下拉的来源是在另外一个Sheet中这个时候,我们使用POI对其进行解析,想获得数据验证的个数:sheet.getDataValidations() public static void main(String[] args) throws Exception { String filePath = "/Users/fujiexiang/ExcelWorkbook.xlsx"; Workbook work.原创 2020-11-04 17:25:00 · 2770 阅读 · 2 评论 -
Java 从List中删除空值
1. Java 7或更低版本: list.removeAll(Collections.singleton(null));2. Java 8或更高版本(推荐):public void removeAllNullsFromListWithJava8() { List<String> list = new ArrayList<>(Arrays.asList("A", null, "B", null)); list.removeIf(Obj.原创 2020-11-02 15:24:05 · 4526 阅读 · 1 评论 -
java 查询字符串中首个数字出现的位置
/** * 查询字符串中首个数字出现的位置 * @param str 查询的字符串 * @return 若存在,返回位置索引,否则返回-1; */ public static int findFirstIndexNumberOfStr(String str){ int i = -1; Matcher matcher = Pattern.compile("[0-9]").matcher(str); if(...原创 2020-10-30 16:00:03 · 4815 阅读 · 0 评论 -
java代码获得文件的MD5
目录什么是文件的MD5?java代码获得MD5的几种方式方法一:方法二:方法三:方法四:方法五:总结什么是文件的MD5?MD5是文bai件签名,相当于我们的身份du证 独一无二的。MD5在论坛上、软件发布zhi时经常用,是为了保证dao文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。因此,在网上看到某个程序下载旁.原创 2020-10-22 17:35:31 · 2872 阅读 · 0 评论 -
java中设置触发式的定时任务
/** * 设置定时任务,每2秒执行一次 */ public void synchronizeUserSta(){ Timer timer = new Timer(); TimerTask myTask = new TimerTask() { @Override public void run() { // whatever you need to do ev...原创 2020-09-27 10:46:35 · 1541 阅读 · 0 评论 -
Java获取当前时间戳的方法
获取当前时间戳//方法 一System.currentTimeMillis();//方法 二Calendar.getInstance().getTimeInMillis();//方法 三new Date().getTime();获取当前时间SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式String date = df.format(new Date());// new Date(原创 2020-09-25 09:55:30 · 8020 阅读 · 0 评论 -
Java:日期字符串格式大小比较
1、将时间字符串转成Long类型进行比较 public void compareDate() { String dateStr = "2018-05-24 12:00:00"; long longDate = Long.valueOf(dateStr.replaceAll("[-\\s:]","")); System.out.println(longDate); }2、通过字符串比较函数compareTo比价 public s原创 2020-09-15 14:47:51 · 2325 阅读 · 0 评论 -
java.security.InvalidKeyException: Illegal key size错误
在做微信扫码登录时,遇到微信公众平台的消息加密解密demo,下载下来使用时,报如下错误:java.security.InvalidKeyException: Illegal key size产生错误原因:为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理;然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,可能会因为jdk版本的问题出现这个异常java.原创 2020-09-10 15:12:57 · 649 阅读 · 0 评论 -
SpringBoot跨域问题
背景:在前后端分离的框架体系下,经常会出现跨域问题,因而在后端需要配置其请求允许跨域访问前提:SpringBoot框架。新建 CorsConfig 类import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.serv原创 2020-08-31 16:54:25 · 159 阅读 · 0 评论 -
StringBuffer和StringBuilder的3个区别
目录前言区别1:线程安全区别2: 缓冲区区别3:性能总结:前言在我们日常开发中,经常会用到StringBuffer和StringBuilder,那么这两个究竟的区别在哪里?各自又适用何场景?先看看二者的类结构图:都集成了 AbstractStringBuilder 抽象字符串父类接下来,看看二者区别:区别1:线程安全StringBuffer:线程安全;StringBuilder:线程不安全。原因:StringBuffer的所有...原创 2020-08-04 10:05:07 · 540 阅读 · 0 评论 -
Java Cookie操作工具类
java操作cookie工具类import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Cookie工具类 */public class CookieUtil { private CookieUtil() { } /** * 添加cookie原创 2020-07-24 11:33:57 · 147 阅读 · 0 评论 -
后台Request获得表单的几种方法
需求:如题:前段有个表单页面,后端为java后台,表单提交后,调用后端数据存储数据,后端获得表单数据第一种:一般情况下,我们的表单字段都是固定的,那么我们很自然的会在后端写一个javaBean实体对象,与前端的表单中的name相对应,这样就很自然的可以取到。第二种:request.getParameter("name"); 直接使用request,通过表单的控件name属性获得控件值 @RequestMapping(value = "save", method = RequestMeth原创 2020-07-22 11:07:40 · 2848 阅读 · 1 评论 -
设计模式---七大原则
23种设计模式常用的七大原则:原创 2020-07-16 17:36:13 · 119 阅读 · 0 评论 -
Timer 循环输出内容到控制台
场景,主程序中有段代码,执行时间较长,大概需要1分钟,在执行过程中,这1分钟,后台没有任何信息,让维护人员看的时候很不友好,因此,在后台增加timer定时器,让程序在这1分钟左右的时间内,每隔1秒中就输出到控制台#字符,表示系统正在运行。直接贴代码,如下:public static void main(String args[]){ try { System.out.println("start"); Timer timer = new Timer(); timer.sc.原创 2020-06-01 15:25:30 · 276 阅读 · 0 评论 -
JDK默认配置空格问题
场景:这个问题很少见,不过就让我碰到了~~~~~~~~正常的,我们使用jdk时,默认路径是没问题的,会自动给我们安装在如下路径:C:\Program Files\Java\jdk1.8.0_101正常情况是没问题的,我碰到的情况是,我在后台通过java代码启动tomcat,在idea工具下运行没问题,把项目打包编译后就会出问题,后来查到jdk的安装路径问题上,网上的说法是,在执行批量脚本bat 时,路径中存在空格时是不能识别命令的,此时,是不能有空格的。把jdk路径修改过后,就可以了,这里原创 2020-05-19 15:17:37 · 931 阅读 · 0 评论 -
JAVA判断请求是否移动端访问
判断是否移动端请求,根据 request.getHeader("User-Agent")返回的结果判断;定义一个通用类:public class RequestUtil { //定义移动端请求的所有可能类型 private final static String[] AGENTS_MOBILE = { "Android", "iPhone", "iPod","iPa...原创 2020-04-24 09:42:28 · 1058 阅读 · 0 评论 -
计算两个日期之间的有效工作日
场景:工作中遇到,要计算两个日期中间的工作日的问题,此处比较简单,只计算周一到周五认为是有效工作日//计算某个日期往后增加n个工作日的日期public static Date getDate(Date currentDate, int days){ Calendar calendar= Calendar.getInstance(); calendar.setTime(cur...原创 2020-04-17 13:53:28 · 1525 阅读 · 0 评论 -
使用FastJSON 对Map/JSON/String 进行互相转换
如题:fastjson是阿里巴巴团队开发的一款JSON库,首先我们下载对应的版本:[fastjson](http://mvnrepository.com/artifact/com.alibaba/fastjson)将下载到的jar包放入环境变量中,接下来介绍几种常见的用法:1.Map转JSON Map<String, Object> map = new...原创 2020-03-27 11:49:53 · 786 阅读 · 0 评论 -
springmvc集成cxf
在springmvc中继承cxf 利用cxf发布webService接口以及调用cxf接口分两步:第一步:服务端的发布;1:配置web.xml文件,添加cxf的servlet <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.c...原创 2018-06-27 22:03:04 · 2369 阅读 · 1 评论 -
Java对象序列化
Java对象的序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未...翻译 2018-05-24 12:09:26 · 322 阅读 · 0 评论 -
将java项目打包成jar包并生成可独立执行的exe文件
项目要求,需要将java项目生成exe文件,网上有许多文章,可有些直接复制,现将自己的整理出来:一:思路:1、将java项目打包成jar包2、将jar包生成exe文件二:准备工作:jar文件生成exe文件用到第三方软件:exe4j能够生成.exe文件的软件有很多,自己去查一下,我这里只用 exe4j,先去下载(地址:http://www.ej-technologie原创 2017-07-10 09:38:04 · 36593 阅读 · 10 评论 -
Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: JSON.stringify(obj)将JSO原创 2017-05-12 15:47:19 · 242 阅读 · 0 评论