
JAVA
那些年的代码
Java工作者
展开
-
Http 错误:“status“:404,“error“:“Not Found“,“message“:“No message available”,”path“:““
在对代码进行调试的时候,前端页面报了一个错:1 {"timestamp":"2019-09-02T02:55:45.555+0000","status":404,"error":"Not Found","message":"No message available”,”path":"/order/createorder"} 这个 bug 出现的原因是因为犯了一个更加低级的错误。。。但是我觉得解决问题的分析思路还是可以借鉴的,这里总结一下。 前端页面显示错误信息,但是在我的后端程序中没有一个原创 2021-08-23 15:28:49 · 34049 阅读 · 1 评论 -
Java 8 lambda表达式中为什么要求外部变量为final
Java 8语言上的lambda表达式只实现了capture-by-value,也就是说它捕获的局部变量都会拷贝一份到lambda表达式的实体里,然后在lambda表达式里要变也只能变自己的那份拷贝而无法影响外部原本的变量;但是Java语言的设计者又要挂牌坊不明说自己是capture-by-value,为了以后语言能进一步扩展成支持capture-by-reference留下后路,所以现在干脆不允许向捕获的变量赋值,而且可以捕获的也只有“效果上不可变”(effectively final)的参数/局部变量。原创 2021-05-17 20:54:04 · 1128 阅读 · 0 评论 -
Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered inv
原创 2021-05-17 19:16:23 · 2423 阅读 · 1 评论 -
2021java面试实战
用友汽车子事务mybatis 防止sql注入,什么情况下用到$sql优化get post 区别vue生命周期vue data数据同步新功能开发是怎么开始的git怎么解决冲突中电金信:springboot项目用容器吗数据采集系统(心跳、怎么同步)session怎么共享怎么做到单用户在线索引(几种类型、全文索引)数据量少用建索引吗视图的作用springboot 处理异常线程的状态怎么启动线程死锁sleep wa...原创 2021-04-06 17:14:43 · 443 阅读 · 0 评论 -
Map.putAll()用法
mportJava.util.HashMap;public class Map_putAllTest {public static void main(String[] args){ //两个map具有不同的key HashMap map1=new HashMap(); map1.put("1", "A"); HashMap map2 = new HashMap(); map2.put("2", "B"); map2.put("3", "C"); map1....原创 2020-07-19 11:25:12 · 608 阅读 · 0 评论 -
Random,ThreadLocalRandom,SecureRandom的几点思考
Random,ThreadLocalRandom,SecureRandom是Java中的随机数生成器,其中ThreadLocalRandom是jdk7才出现的,是Random的增强版。在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程竞争,最终保证系统具有更好的线程安全。 Random是线程安全的,但是多线程下可能性能比较低。 特别是在生成验证码的情况下,不要使用Random,因为它是线性可预测的。所以在安全性要求比较高的场合,应当使用Secu..原创 2020-07-18 15:57:05 · 450 阅读 · 0 评论 -
sessionStorage用法
https://blog.youkuaiyun.com/wxmmmmmm/article/details/80862324原创 2020-05-25 15:13:45 · 218 阅读 · 0 评论 -
BlockingQueue
https://www.cnblogs.com/KingIceMou/p/8075343.html原创 2020-05-18 10:42:27 · 152 阅读 · 0 评论 -
使用递归实现n!
f(n)=n*(n-1)*……*1publicint fun(int n) { if(n==0) return 1;//递归出口 return fun(n-1)*n;}注:使用递归方法解决问题,必须有一个明确的终止条件,即递归出口。...原创 2020-04-27 07:43:25 · 871 阅读 · 0 评论 -
获取List中存放的最后一个元素
public class ListUtil { /** * 获取list中存放的最后一个元素 * @param list * @param <T> * @return */ public static <T> T getLastElement(List<T> list) { ...原创 2020-04-26 08:48:34 · 6119 阅读 · 0 评论 -
java中date获取前一天和后一天
Datetoday=newDate();//获取今天的日期 Calendarc=Calendar.getInstance(); c.setTime(today); c.add(Calendar.DAY_OF_MONTH,1); Datetomorrow=c.getTime();//这是明天c.setTime(...原创 2020-04-26 08:38:49 · 8848 阅读 · 0 评论 -
获取时间戳及转化为yyyyMMdd格式的时间
1、获取当前时间戳两种方法:System.currentTimeMillis(); #1536764057392 微秒new Date().getTime(); #1536764057392 微秒2、时间戳转化为yyyyMMdd格式时间SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd HH:mm:ss");String ...原创 2020-04-26 08:35:19 · 7110 阅读 · 0 评论 -
java获取指定日期的前一天和后一天
@Test public void getDay() { String day = "2018-03-19"; Calendar c = Calendar.getInstance(); Date date = null; try { date = new SimpleDateFormat("yy-MM-...原创 2020-04-26 08:34:28 · 1107 阅读 · 0 评论 -
@ApiModelProperty的用法
@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改value–字段说明name–重写属性名字dataType–重写属性类型required–是否必填example–举例说明hidden–隐藏@ApiModel(value="user对象",description="用户对象user")public class User implem...原创 2020-04-25 17:18:55 · 21006 阅读 · 0 评论 -
Timer中schedule()的用法
schedule的意思(时间表、进度表)timer.schedule(new TimerTask(){ void run()},0, 60*60*1000);timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);第一个参数"new MyTask(event.getServletContext())":是 ...原创 2020-04-25 17:10:16 · 1060 阅读 · 0 评论 -
锁消除+逃逸分析
如果能确认某个加锁的对象不会逃逸出局部作用域,就可以进行锁删除。这意味着这个对象同时只可能被一个线程访问,因此也就没有必要防止其它线程对它进行访问了。这样的话这个锁就是可以删除的。这个便叫做锁消除,本文是JVM实现机制的系列文章,这也正是今天要讲的主题。众所周知,java.lang.StringBuffer是一个使用同步方法的线程安全的类,它可以用来很好地诠释锁消除。StringBuffer...原创 2020-04-20 08:40:27 · 373 阅读 · 0 评论 -
java在子线程与主线程传递数据(回调函数)
https://blog.youkuaiyun.com/weixin_43475124/article/details/83930436原创 2020-04-16 10:09:45 · 693 阅读 · 0 评论 -
深入浅出一致性Hash原理
一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。二、一致性Ha...原创 2020-04-14 08:30:57 · 109 阅读 · 0 评论 -
为什么不要尝试用int来存手机号?
原因复:1、int只有四个字节,而手机号是由11位十进制数组成的,即可知道手机号有五个字节,如果用int存储,则第五位溢出,被“吃掉了”制。2、int的数据范围为-2147483648~2147483647[-2^31~2^31-1],是用于定义整数类型变量的标示符。存储手知机号道用的类型:1、使用数据库类型varchar2存储手机号,将手机号当作字符串存储,后期取出便于显示。va...原创 2020-04-14 07:43:48 · 4489 阅读 · 1 评论 -
HashMap在JDK1.8版本尾插法实现解析
写在前面:先解释下何为尾插法。大家都知道HashMap在JDK1.8版本经过优化之后,整体的数据结构变成了数组+链表+红黑树这样的形式。而尾插法说的就是在往HashMap里面put元素时,数组桶位上面还是未转化为红黑树的链表,此时新增在链表上元素的位置为链表尾部,故名尾插法。前面聊了HashMap在JDK1.7版本的头插法实现,现在看看HashMap到了JDK1.8版本升级之后的变化。先...原创 2020-04-13 08:26:26 · 1461 阅读 · 0 评论 -
SpringBoot文件上传异常之提示The temporary upload location xxx is not valid
SpringBoot搭建的应用,一直工作得好好的,突然发现上传文件失败,提示org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload loc...原创 2020-04-12 11:12:26 · 200 阅读 · 0 评论 -
static 静态变量和静态代码块的执行顺序
众所周知 在android中static 修饰的会被称之为静态常量,静态变量,静态方法,还有就是静态代码块,用static{ // 代码块 非static修饰的方法,变量,常量, 是不能再静态代码块中使用的} 表示。static修饰的 是跟着类走的, 而不是跟随对象,这个大家都是知道的。 那么大家是否知道它们之间的运行顺序的关系呢? 今天, 我就给大家简单讲解一下吧。...原创 2020-04-12 10:36:46 · 327 阅读 · 0 评论 -
细说Spring——AOP详解(动态代理实现AOP)
前言嗯,我应该是有一段实现没有写过博客了,在写完了细说Spring——AOP详解(AOP概览)之后,我发现我不知道该怎么写AOP这一部分,所以就把写博客这件事给放下了,但是这件事情又不想就这么放弃,所以今天我仔细思考了一下,决定还是要克服困难,我仔细的想了一下怎么讲解AOP实现这一部分,然后我决定由浅入深的讲解动态代理,然后用动态代理实现一个简单的AOP,感觉这样能够让人对AOP的原理有一个比...原创 2020-04-12 10:07:56 · 363 阅读 · 0 评论 -
由浅入深理解Java线程池及线程池的如何使用
https://www.cnblogs.com/superfj/p/7544971.html原创 2020-04-12 08:30:52 · 72 阅读 · 0 评论 -
Java线程池详解
1、线程池的优势(1)、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;(2)、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;(3)方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))...原创 2020-04-12 07:47:56 · 109 阅读 · 0 评论 -
Springboot上传文件临时目录无效
一个奇葩问题,虽然解决了,但还是没弄清楚,小记一笔。 年后回来,测试人员对年前的3次迭代的功能进行了回归测试,然后发现所有excel导入的功能都失效了。作为后台开发人员,当然是第一时间打开运行日志排查原因啦。但奇怪的是,后台日志中并没有ERROR信息......于是乎转战到前端,通过chrome的开发工具发现如下异常:org.springframework.web.m...原创 2020-04-11 09:31:04 · 671 阅读 · 1 评论 -
SpringBoot项目的The temporary upload location ***is not valid 问题
springboot项目,部署到服务器后,运行一段时间后,处理一些文件上传的接口时,后报异常。Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7333297176951596407.9000/...原创 2020-04-11 09:27:27 · 244 阅读 · 0 评论 -
关于springboot上传文件报错:The temporary upload location ***is not valid
在运行springboot时 ,长时间运行后报错 the temporary uplaod location *** is not valid 查过资料后发现是centos对‘/temp’下文件自动清理的原因。 在springboot项目启动后 系统会在‘/temp’目录下创建几个目录 用于上传文件。因此清理过‘/temp’下文件后无法上传 解决方法: 1 重启服务; ...原创 2020-04-11 09:20:05 · 284 阅读 · 0 评论 -
Java Enum枚举 遍历判断 四种方式(包括 Lambda 表达式过滤)
package com.miracle.luna.lambda;import java.util.Arrays;/*** @Author Miracle Luna* @Date 2019/6/9 23:40* @Version 1.0*/public enum AlarmGrade { ATTENTION("attention", "提示"), W...原创 2020-04-11 08:35:42 · 2001 阅读 · 0 评论 -
Set 遍历的三种方法。
1.迭代遍历:Set<String> set = new HashSet<String>();Iterator<String> it = set.iterator();while (it.hasNext()) {String str = it.next();System.out.println(str);}2.for循环遍历:for (S...原创 2020-04-10 18:30:35 · 1680 阅读 · 0 评论 -
JAVA,字符串首字母转大写(高效率)
对于将字符串的首字母转成大写,首先想到的应该是截取,转换再拼接,但是这种处理效率比较低,通过查资料(http://blog.youkuaiyun.com/zhurhyme/article/details/27951099)找到一个移动ASCII的方式来处理,这种方式的效率很高。/** * 将字符串的首字母转大写 * @param str 需要转换的字符串 * @return...原创 2020-04-10 07:56:19 · 511 阅读 · 0 评论 -
java读取blob,clob转换为字符串
package com.it.test;import java.io.BufferedReader;import java.io.StringWriter;import java.io.UnsupportedEncodingException;import java.sql.Connection;import java.sql.PreparedStatement;import jav...原创 2020-04-09 19:04:12 · 534 阅读 · 0 评论 -
mybatis读取oracle中blob
controller:byte[] blob = commonService.getPersonImage(bean.getIdCard());String base64 = new String(blob));service:TableBean bean = getSqlSessionTemplate().selectOne("getPersonImage", idCa...原创 2020-04-09 17:07:36 · 1070 阅读 · 0 评论 -
jpa2.x的getOne()/findOne()/findById()的区别及使用
使用spring-cloud 2.0.3时,加入了spring-boot-start-data-jpa依赖之后并配置完成,然后进行测试:这是service 方法,注入了IUserInfoDao接口(继承JpaRepository<UserInfoModel, Integer>); @Override public UserInfoModel getById(Int...原创 2020-04-08 17:20:01 · 841 阅读 · 0 评论 -
Redis Save 与 BGSAVE 的区别
一,save保存数据到磁盘的方式:Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。语法redis Save 命令基本语法如下:redis 127.0.0.1:6379> SAVE返回值保存成功时返回 OK 。二,BGSAVE保存数据到磁盘的方式:BGSAVE 命令执...原创 2020-04-02 15:38:43 · 566 阅读 · 0 评论 -
JVM堆内存(heap)详解
JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。先看下JAVA堆内存是如何划分的,如图:JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。 年轻代又...原创 2020-03-27 18:01:08 · 617 阅读 · 0 评论 -
jvm垃圾回收之复制算法——为什么分两块Survivor空间
复制算法的两块Survivor空间概述在《深入理解Java虚拟机》这本书中,对复制算法有一段这样的介绍:现在的商业虚拟机大多采用复制算法来收集新生代。复制算法将内存分为一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor空间,当回收时,将Eden和Survivor中还存活的对象复制到另一块Survivor上,最后清理掉Eden和刚才...原创 2020-03-27 16:54:30 · 470 阅读 · 1 评论 -
JVM之GCRoots详解
JVM之GCRoots详解目录面试题引子什么是垃圾判断对象是否可以被回收之引用计数法判断对象是否可以被回收之枚举根节点可达性分析Java中可以作为GC Roots的对象1. 面试题引子一面:GC Roots如何确定?哪些对象可以作为GC Roots?2. 什么是垃圾1.简单说就是内存中已经不再被使用到的空间就是垃圾3. 判断对象是否可以被回收之引用计数法Java中,引用和...原创 2020-03-27 09:28:19 · 761 阅读 · 0 评论 -
Spring AOP的两种代理方式
Spring AOP主要有两种代理方式:1.JDK动态代理 2.cglib代理1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换注:JDK动态代理要比cglib代理执行速度快,但性能不如cglib好...原创 2020-03-27 08:47:06 · 390 阅读 · 0 评论 -
spring注解之@Scope注解
1.@Scope注解是什么@Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)、prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域a.singleton单例模式 -- 全局有且仅有一个实例b.prototype原型模式 -- 每...原创 2020-03-26 10:59:56 · 1527 阅读 · 0 评论