Java
丨落叶
这个作者很懒,什么都没留下…
展开
-
R2dbc Failed to update table []. Row with Id [] does not exist
使用webflux,数据库使用R2DBC需要保存数据到数据库前,自定义主键写入到数据库里面报错:Failed to update table []. Row with Id [] does not exist解决方法:实体类实现接口 Persistable重写 isNew() 方法package com.xx.message.entity.po;import lombok.*;import org.springframework.data.annotation.Id;imp原创 2022-01-05 13:42:47 · 1435 阅读 · 1 评论 -
自定义线程池拒绝策略,将参数打印出来
自定义拒绝策略原创 2021-12-13 19:07:49 · 1344 阅读 · 0 评论 -
一次代码报错的分析:MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
一次代码报错的分析:MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction1. 报错信息2. 报错原因3. 问题过程4. 问题解决1. 报错信息### Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbac...原创 2019-11-18 10:26:53 · 13017 阅读 · 3 评论 -
什么是跨域?和跨域的解决方案
一、跨域的由来 跨域大家都不陌生,跨域是为了克服浏览器的同源策略。但可能对浏览器为什么会出同源策略有些陌生。这里先简单介绍跨域的由来。 浏览器的同源策略是为了限制CSRF攻击,因为我们有些场景确实需要,访问不同域名下的资源,所以需要跨域。所以就出现了各种跨域的方式,如JSONP、CORS、H5的postMessage、Nginx等方式,本文住要介绍JSONP和...原创 2018-10-16 20:59:21 · 1072 阅读 · 0 评论 -
SpringAOP 实现日志打印
1、添加注解扫描和支持AOP的配置 <context:component-scan base-package="com.sp8.web.aop"/> <aop:aspectj-autoproxy proxy-target-class="true" />2、不啰嗦,代码示例:package com.sp8.web.aop;import com...原创 2018-10-29 20:37:05 · 682 阅读 · 1 评论 -
一致性哈希算法及其在分布式系统中的应用
摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读...转载 2018-12-27 17:07:06 · 136 阅读 · 0 评论 -
浅析CountDownLatch用法
1、CountDownLatch是什么CountDownLatch可以控制线程的执行,他可以让所有持有他的多个线程同时执行,也可以控制单个线程执行。他初始化的时候会传出一个int类型的参数i,调用一次countDown()方法后i的值会减1。在一个线程中如果调用了await()方法,这个线程就会进入到等待的状态,当参数i为0的时候这个线程才继续执行。await() 方法:在Count...转载 2019-01-03 22:00:25 · 233 阅读 · 0 评论 -
强引用、软引用、弱引用、幻象引用有什么区别?有哪些使用场景?
在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用;Java中根据其生命周期的长短,将引用分为4类。 1、 强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也...原创 2019-01-02 16:18:10 · 321 阅读 · 0 评论 -
面试题集锦
记录面试题和详解博客链接,持续更新缓存:1、什么是一致性哈希算法?答:一致性哈希算法及其在分布式系统中的应用2、系统性能提升优先法宝 | 缓存应用实践多线程1、 你真的了解volatile关键字吗?2、浅析CountDownLatch用法3、CyclicBarrier的使用和常见问题4、Semaphore基本方法与应用场景实例 网络:1、OSI七层协...原创 2019-01-03 11:42:22 · 155 阅读 · 0 评论 -
单例模式的实现方式和推荐实现方式
一、实现单例模式的两个要素1)私有的构造函数2)提供一个static修饰的getInstance方法二、难点:1)线程安全2)避免资源浪费3)避免反序列化破坏单例三、实现1、饿汉模式(线程不安全,不推荐使用)public class SingletonExample1 { public static SingletonExample1 single...原创 2019-01-13 16:21:25 · 138 阅读 · 0 评论 -
谈谈反射
1、什么是反射?2、写一个反射的常用案例原创 2019-02-28 22:14:46 · 188 阅读 · 0 评论 -
数据结构:队列,数组实现、链表实现和循环队列
一、什么是队列: 一种先进先出的数据结构(FIFO结构)。新元素添加在队尾(push),删除操作删掉第一个元素(pop)二、队列的实现方式: 队列的实现方式数组实现、链表实现三、常见的队列: 常用队列循环队列、阻塞队列、并发队列四、怎么实现一个无BUG的队列思考 思考1:head(头元素)和tail(尾元素)的初始值...原创 2018-10-12 13:52:59 · 1065 阅读 · 0 评论 -
你真的了解volatile关键字吗?
一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传...转载 2018-08-15 20:59:41 · 146 阅读 · 0 评论 -
HotSpot创建对象探秘
虚拟机中执行new执行的过程1、在常量池中检查存在这个类的符号引用。(找不到就抛出ClassNotFoundException)2、检查这个符号引用对应的Class是否被加载、解析、初始化过等。如果没有就进行初始化 (注1)3、为对象在堆中进行内存分配,(所需要的内存大小已经在类加载过程中确定,都是固定大小)(注2)4、虚拟机要对对象进行必要的设置;如这个对象是哪个类的实例、如何才能找到类的元数据...原创 2018-03-03 12:40:49 · 168 阅读 · 0 评论 -
调用WebService异常。
1,今天调用webservice接口,注意原创 2014-04-15 23:02:11 · 1544 阅读 · 0 评论 -
Java 追加文件内容 输入输出流
import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.RandomAcce转载 2014-07-08 10:47:22 · 1536 阅读 · 0 评论 -
JqueryEasyUi异步树加载
JSP页面:原创 2014-10-13 17:52:59 · 889 阅读 · 0 评论 -
struts2 配置 jquery ajax 调用 action 返回JSON 数据
Struts2的action注意的地方:1、Ajax原创 2014-10-20 22:42:27 · 808 阅读 · 0 评论 -
Java集合Map接口与Map.Entry学习
Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。 (1) 添加、删除操作: Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先转载 2014-12-15 22:42:55 · 417 阅读 · 0 评论 -
http 301 和 302的区别
1、什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。2、什么是302重定向? 302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redi转载 2014-12-15 22:28:35 · 754 阅读 · 0 评论 -
Java类加载器总结
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:转载 2015-03-26 13:22:53 · 378 阅读 · 0 评论 -
Spring中的事务管理
大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。事物注解方式: @Transactional当标于类前时, 标示类中所有方法都进行事物处理例子:@Transactionalpublic class TestServiceBean implements TestService {}当转载 2015-03-27 21:06:34 · 350 阅读 · 0 评论 -
WebService调用的两种方式
1、 XFIRE方式,调用WebService通过WebSerice获取数据 /********调用接口加速测试**** ***************************/ HttpClientParams params = new HttpClientParams(); // 避免'Expect: 100-continue' handshake params.s原创 2015-03-24 21:48:34 · 615 阅读 · 0 评论 -
Java 运行时数据区域
本文是在学习深入理解Java虚拟机时做的笔记。Java允许时数据区域分为六部分:程序计数器、Java虚拟机栈、方法栈、堆、方法区、直接内存。程序计数器(注1):是一块很小的内存区域,可以看做字节码执行的行号指示器。程序通过改变程序技术器的字节码,字节码解释器(注2)工作时,通过改变计数器的值选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等通过计数器实现。线程私有,虚拟机规范中...原创 2018-03-03 11:56:01 · 189 阅读 · 0 评论 -
java 日期函数
//转自:http://mxm910821.iteye.com/blog/1171571/**日期类* @date * @version 1.0*/import java.util.*;import java.text.*;import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM转载 2013-09-27 13:23:55 · 701 阅读 · 0 评论