Java
文章平均质量分 60
善逸啊
贡献榜
1-200:45000
200-400:40000
400-600:35000
无排名:30000
展开
-
Spring事务失效的 8 大原因
用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景?1、数据库引擎不支持事务2、没有被 Spring 管理3、方法不是 public 的4、自身调用问题5、数据源没有配置事务管理器6、不支持事务7、异常被吃了8、异常类型错误1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysq.转载 2021-07-07 14:25:37 · 1299 阅读 · 0 评论 -
7种Spring的事务传播级别propagation
Spring事务的传播级别(propagation)@Transactional(propagation = Propagation.REQUIRED)pubilc void methodA(){ doSomething; methodB(); doSomething;}@Transactional(propagation = Propagation.REQUIRED)@Transactional(propagation = Propagation原创 2021-07-06 11:04:05 · 704 阅读 · 0 评论 -
leetcode题库☞ 3. 无重复字符的最长子串
题干:题解:class Solution { public int lengthOfLongestSubstring(String s) { // 记录字符上一次出现的位置 int[] last = new int[128]; for(int i = 0; i < 128; i++) { last[i] = -1; } int n = s.length(); int r原创 2021-05-16 23:10:05 · 84 阅读 · 0 评论 -
线程等待唤醒那些事,wait/notify生产消费模型详解
深入的分析分析wait和notify今天, 来聊聊配合Object基类的wait()notify()这两个方法的实现,为多线程协作提供了保证。wait() & notify()Object 类中的 wait¬ify 这两个方法,其实包括他们的重载方法一共有 5 个,而 Object 类中一共才 12 个方法,可见这 2 个方法的重要性。我们先看看 JDK 中的定义:public final native void notify();其中有 3 个方法是 nati转载 2021-04-18 17:51:49 · 237 阅读 · 0 评论 -
DUBBO消费方启动 qos-server can not bind localhost:22222
-------------01:09:20.714 [main] ERROR org.apache.dubbo.qos.server.Server.start(Server.java:111) - [DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.7.5, current host: 192.168.0.101java.net.BindException: Address already in use: bind at原创 2021-04-15 01:29:42 · 615 阅读 · 2 评论 -
锁的内存语义,如何让成员变量具有了☞“可见性”
package com.gjw._nowcoder;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Main { private static Lock lock = new ReentrantLock(); private static int state = 0; static class ThreadA impl原创 2021-04-14 14:26:21 · 105 阅读 · 0 评论 -
循环打印abc☞ReentrantLock + Condition
package com.gjw._nowcoder.循环打印abc;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Abc_Lock_condition { private static Lock lock = new ReentrantLock();原创 2021-04-14 10:08:17 · 195 阅读 · 0 评论 -
HashMap☞JDK7中成环原因及JDK8的解决方式
我的大白话:某一bucket: a->b->null两个线程同时做resize操作:线程1:步骤1:a->null步骤2:会继续处理原来的a.next就是b线程2:(一个完整resize操作)a->nullnewTable[i] = a->null (newTable为局部变量) b的next还是null 继续处理bb->a->null线程1:(继续线程1的步骤2)newTable[i] = a->null 继续处理b,此时转载 2021-04-12 22:49:54 · 140 阅读 · 0 评论 -
被瑶哥问到spring事务的实现原理,关键字:ThreadLocal
昨晚吃饭遇到p7大佬问到spring事务的实现原理。很尴尬,这块没有深究过,虽然对ThreadLocal很熟悉,但是并没有想到原来spring也是通过它来解决事务问题,网上找了一篇文章,结合spring的代码看了下,有了一个新的认识,以下内容来源于转载ThreadLocal是用来处理多线程并发问题的一种解决方案。ThreadLocal是的作用是提供线程的局部变量,在多线程并发环境下,提供了与其他线程隔离的局部变量。通常这样的设计的情况是因为这个局部变量是不适合放在全局变量进行同步处理的。比如在事务管理中,原创 2021-04-10 14:46:28 · 822 阅读 · 0 评论 -
java基本数据类型存放位置
基本数据类型是放在栈中还是放在堆中,这取决于基本类型声明的位置。一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因 在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。 (1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中 (2)当声明的是引用变原创 2021-04-05 21:43:07 · 901 阅读 · 0 评论 -
JVM是怎么处理private等修饰符的
字段表(field_info)用于描述接口或者类中声明的变量。Java语言中的“字段”(Field)包括类级变量以及实例级变量,但不包括在方法内部声明的局部变量。可以回忆一下在Java语言中描述一个字段可以包含哪些信息。 字段可以包括的修饰符有字段的作用域(public、private、protected修饰 符)、是实例变量还是类变量(static修饰符)、可变性(final)、并发可见性(vola原创 2021-04-02 10:50:48 · 231 阅读 · 0 评论 -
JMM内存模型、JMM内存间交互操作
主内存与工作内存JMM内存间交互操作 关于主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存、如何从 工作内存同步回主内存这一类的实现细节,Java内存模型中定义了以下8种操作来完成。Java虚拟机实 现时必须保证下面提及的每一种操作都是原子的、不可再分的(对于double和long类型的变量来说, load、store、read和write操作在某些平台上允许有例外) 针对long和double型变量的特殊规则 Java内存模型要求lock、unlock、read、load、原创 2021-04-01 23:40:59 · 331 阅读 · 0 评论 -
SpringBoot中application.properties(.yml)配置的中文,@SpringBootTest自测控制台打印是乱码
Transparent native-to-ascii conversion:自动转换为Unicode编码原创 2021-03-26 10:39:49 · 413 阅读 · 0 评论 -
两个Survivor区作用
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC长得多。转载 2020-05-26 15:53:25 · 346 阅读 · 0 评论 -
Java☞线程池
第一部分来看一下线程池的框架图,如下: 1、Executor任务提交接口与Executors工具类 Executor框架同java.util.concurrent.Executor 接口在Java 5中被引入。Executor框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。Executor存在的目的是提供一种将”任务提交”与”任务如何运行”分离开来的机制。定义如下:p...转载 2020-04-30 10:57:52 · 192 阅读 · 0 评论 -
拒绝策略RejectedExecutionHandler
先贴出juc包下接口的定义package java.util.concurrent;/** * A handler for tasks that cannot be executed by a {@link ThreadPoolExecutor}. * * @since 1.5 * @author Doug Lea */public interface RejectedExecu...转载 2020-04-30 10:24:20 · 525 阅读 · 0 评论 -
JAVA之☞基本功
23种设计模式http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html提升Java代码性能和安全性https://blog.csdn.net/Amen_Wu/article/details/81164273【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。https://git...原创 2019-07-15 16:18:27 · 221 阅读 · 0 评论 -
JAVA中遍历Map的四种方法-entrySet,keySet,values,entrySet.iterator
前言java中的集合主要分为三种类型:Set(集)List(列表)Map(映射)数组:几乎所有集合实现的底层都有数据的身影存在,因此我们首先需要了解一下数组。以下这段话摘自《Thinking In Algorithm》,感觉很不错现在拿出来跟大家分享。《Thinking In Algorithm》之数组集合:接下来是集合,同样我们摘自网络上的一段解释,很不错也通俗易懂,与大家...原创 2019-04-29 00:11:58 · 672 阅读 · 0 评论 -
jdk8 HotSpot内存模型
概述java的内存管理采用自动内存管理机制,这样就不需要程序员去写释放内存的代码,而且不容易出现内存泄漏问题。正是由于内存的申请和释放都交给了Java虚拟机,一旦出现内存泄漏和溢出问题时,在不了解Java虚拟机内存结构和自动管理机制的情况下,很难排查问题的所在。所以一个成熟的程序员和架构师,必须很好的掌握Java虚拟机的自动内存管理机制。运行时数据区上图的虚拟机运行时数据区是Java虚拟机规范所规...转载 2019-04-28 23:59:33 · 202 阅读 · 0 评论