java
抵制平庸 拥抱变化
不断的突破,不断的成长,成功的路上没有容易
展开
-
【专栏锁】ReentrantLock和Synchronized以及锁升级
相同点都是加锁方式同步;都是重入锁;都是阻塞式的同步;不同点 比较方面SynChronizedReentrantLock(实现了 Lock接口)原始构成它是java语言的关键字,是原生语法层面的互斥,需要jvm实现它是JDK 1.5之后提供的API层面的互斥锁类实现通过JVM加锁解锁api层面的加锁解锁,需要手动释放锁。代码编写采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用,更安全.原创 2022-03-06 22:38:22 · 742 阅读 · 0 评论 -
【专栏集合】ConcurrentHashMap
jdk 1.8之前锁使用Segment(分段锁,它继承了ReentrantLock ReentrantLock 是AQS(抽象队列同步框架) 的独占锁模式)ReentrantLock实现模式一个数组分为多个段落,然后每个段落对应一个资源state(int类型 初始为0加锁 +1 释放锁-1 等于0则代表没有被占用),线程并发的时候每个线程会封装成一个node节点进入aqs阻塞队列 队列首节点判断state是否为0 ,为0则+1执行难此资源,如果是独占模式则是等首节点执行完后唤醒后续节点进行获取资源原创 2022-03-06 20:30:25 · 567 阅读 · 0 评论 -
线上cpu爆满dump文件分析 精确查到根本产生原因
建议使用如下工具:JProfiler然后安装并打开,将dump文件放入其中然后选中点击然后你会看到此次cpu爆满根本的原因原创 2022-02-19 15:02:24 · 1489 阅读 · 0 评论 -
com.alibaba.druid.poc ol.DatasourceclosedExcept on:datasource already closed
你可能使用了异步线程去访问数据库,异步线程是不由spring管理也就是说 spring可以在异步线程未执行完就会进行容器关闭 当异步线程执行到获取数据库的时候就会报错**你是否跑单测?**如果是那就是单测的时候你使用的异步线程 里面在进行数据库访问...原创 2021-12-23 10:09:48 · 3270 阅读 · 2 评论 -
Error launching IDEA-If you already have a 64-bit JDK installed, define a JAVA_HOME(无须重装)
看完无须重新安装就可解决为什么会出现问题:你肯定改了解决方案:修改idea安装目录修改为原来的仍然不行那么继续修改C盘里的这个里面的 idea64.exe.vmoptions 为原来的值原来的值:-Xms128m -Xmx750m -XX:ReservedCodeCacheSize=512m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -XX:+HeapDumpOnOutOf原创 2021-12-15 17:05:35 · 2320 阅读 · 5 评论 -
dubbo详解-实操-待完成
dubbo深入学习RPC简介影响性能的主要俩点: 通信和序列化反序列化DUBBO概念面向接口代理的高性能的RPC调用:像调用本地方法一样调用远程服务智能负载均衡:实现流量均衡服务注册与发现:一般配合zk,比如dubbo怎么知道所调用的服务在哪台服务器上,所有的服务都注册到zk上dubbo会询问zk我要调用的这个服务在哪个节点上然后zk返回在哪几个服务器,然后dubbo进行调用目标服务高度可扩展能力:dubbo是基于微内核和插件的设计原则运行期间流量调度:给指定ip给予少量流量可实现灰度原创 2021-05-14 16:52:03 · 230 阅读 · 2 评论 -
让别人能通过公网ip访问自己本地ip
很简单通过39nat39nat 最重要的是免费原创 2021-03-26 17:48:43 · 2119 阅读 · 0 评论 -
voliate为什么不能修饰递增的变量
voliate为什么不能修饰有递增的变量呢首先voliate只能保证可见性:线程每次读取的值都是最新的;不能保证原子性。java中只对基本的类型保证了原子性,比如i++这些分为三步:读取,修改,写入,每一步都是一个原子,总体不是一个原子,所以就算每一次都读取到最新的值那么也有问题...原创 2021-03-24 09:17:13 · 165 阅读 · 0 评论 -
已经是maven项目但是pom文件还是黄色,java文件是蓝色的J
先说下原因吧,很可能是你使用了360或者电脑管家之类的提升了性能优化,然后启动了idea的省电模式,enmmm,,ok接下来解决把这个去掉,问题解决原创 2021-03-23 14:52:00 · 1211 阅读 · 4 评论 -
idea整合easyCode自定义模板
easycode自定义模板,目录结构service##导入宏定义$!define##设置表后缀(宏定义)#setTableSuffix("Service")##保存文件(宏定义)#save("/service", "Service.java")##包路径(宏定义)#setPackageSuffix("service")import com.baomidou.mybatisplus.extension.service.IService;import $!{tableInfo.原创 2021-03-20 19:58:24 · 1045 阅读 · 2 评论 -
springboot结合mybatis的AutoGenerator实现代码自动生成
pom文件引入以下 <!-- MyBatis-Plus代码生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version>原创 2021-03-19 15:05:45 · 252 阅读 · 0 评论 -
java各集合的时间复杂度
文章目录 前言数组 Array数组列表 ArrayList链接列表 LinkedList双链接列表 Doubly-Linked List栈 Stack队列 Queue/Deque/Circular Queue二叉搜索树 Binary Search Tree红黑树 Red-Black Tree堆 Heap/PriorityQue...原创 2020-10-20 23:40:52 · 2977 阅读 · 4 评论 -
Java 内存模型和并发
本文的主要目的是让大家对于并发程序中的重排序、内存可见性以及原子性有一定的了解,同时要能准确理解 synchronized、volatile、final 几个关键字的作用。另外,本文还对双重检查形式的单例模式为什么需要使用 volatile 做了深入的解释。并发三问题这节将介绍重排序、内存可见性以及原子性相关的知识,这些也是并发程序为什么难写的原因。1. 重排序请读者先在自己的电脑上运行一下以下程序:public class Test { private static int原创 2020-10-12 17:15:50 · 1427 阅读 · 0 评论 -
JAVA+字符串常量池介绍
本文将介绍 HotSpot 中的 String Pool,字符串常量池。相对是一篇比较简单的文章,大家花几分钟就看完了。在 Java 世界中,构造一个 Java 对象是一个相对比较重的活,而且还需要垃圾回收,而缓存池就是为了缓解这个问题的。我们来看下基础类型的包装类的缓存,Integer 默认缓存 -128 ~ 127 区间的值,Long 和 Short 也是缓存了这个区间的值,Byte 只能表示 -127 ~ 128 范围的值,全部缓存了,Character 缓存了 0 ~ 127 的值。Float原创 2020-10-09 09:06:52 · 1492 阅读 · 7 评论 -
线程池源码解读(保证让你受益匪浅系列)
name: java-thread-pooltitle: 深度解读 java 线程池设计思想及源码实现date: 2020-09-25 14:22:29tags:categories: concurrency我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 Java 线程池。本文一大重点是源码解析,同时会有少量篇幅介绍线程池设计思想以及作者 Doug Lea 实现过程中的一些巧妙用法。本文还是会一行.原创 2020-09-29 14:25:57 · 1094 阅读 · 0 评论 -
Nacos 监听实现原理
服务端创建配置在 Nacos 的管理页面我们可以创建如下配置信息1、在默认命名空间下新建配置2、编辑配置并发布客户端获取配置1、客户端主动获取配置(1)客户端创建 ConfigService 服务根据 dataId 和 group 来获取配置信息示例:根据dataId 和 group 获取相关配置package com.alibaba.nacos.example;import java.util.Properties;import java.util.concurrent.Executo原创 2020-05-09 16:26:26 · 4201 阅读 · 2 评论 -
自己总结的面试题
解释不清楚就不解释,直接说怎么用就ok 不要在意问题的本身答案 靠的是你们如何使用 原理的理解锁表什么时候出现同步锁锁的是什么 ***彻底理解Runnable和Thread的区别 没有本质区别就一个接口一个类java基础索引为什么会快加密算法 sha1 hash强散列 (优先级低)1、集合 hashmap原理(https://blog.csdn.net/chenwen...原创 2020-03-01 11:56:21 · 1050 阅读 · 0 评论 -
单例模式并发处理的4种方式
背景众所周知,单例模式主要就是将构造函数声明为private,来防止外部调用实例化。代码如下:public class Singleton {private static Singleton uniqueInstance;private Singleton() {}public static Singleton getInstance() { if (uniqueInstanc...原创 2020-02-26 18:08:06 · 2114 阅读 · 0 评论 -
内部方法上注解无效的原因
在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的。比如,下面代码例子中,有两方法,一个有@Async注解,一个没有。第一次如果调用了有注解的test()方法,会启动@Async注解作用;第一次如果调用testAsync(),因为它内部调用了有注解的test(),如果你以为系统也会为它启动Async作用,那就错了,实际上是没有的。@...转载 2020-02-25 23:18:44 · 1310 阅读 · 0 评论 -
Failed to start bean ‘eurekaAutoServiceRegistration‘(讲解找错思路)
本篇只讲解决思路和方法出现类似于框架错误的不外乎俩种原因:1、最常见的就是jar包冲突,这里类解决思路是maven依赖规则里面有两条分别是:声明优先原则,在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。 所以,先声明自己要用的版本的jar包即可路径近者优先,直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖ja...原创 2020-01-14 11:39:10 · 5279 阅读 · 0 评论