自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (3)
  • 收藏
  • 关注

原创 【专栏mysql】简单介绍

mysql优化存储引擎在线大表加索引

2022-03-13 17:27:52 1987

原创 【专栏锁】ReentrantLock和Synchronized以及锁升级

相同点都是加锁方式同步;都是重入锁;都是阻塞式的同步;不同点 比较方面SynChronizedReentrantLock(实现了 Lock接口)原始构成它是java语言的关键字,是原生语法层面的互斥,需要jvm实现它是JDK 1.5之后提供的API层面的互斥锁类实现通过JVM加锁解锁api层面的加锁解锁,需要手动释放锁。代码编写采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用,更安全.

2022-03-06 22:38:22 679

原创 【专栏集合】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 524

原创 已经是maven项目但是pom文件还是黄色,java文件是蓝色的J

先说下原因吧,很可能是你使用了360或者电脑管家之类的提升了性能优化,然后启动了idea的省电模式,enmmm,,ok接下来解决把这个去掉,问题解决

2021-03-23 14:52:00 1137 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 990 2

原创 Java 内存模型和并发

本文的主要目的是让大家对于并发程序中的重排序、内存可见性以及原子性有一定的了解,同时要能准确理解 synchronized、volatile、final 几个关键字的作用。另外,本文还对双重检查形式的单例模式为什么需要使用 volatile 做了深入的解释。并发三问题这节将介绍重排序、内存可见性以及原子性相关的知识,这些也是并发程序为什么难写的原因。1. 重排序请读者先在自己的电脑上运行一下以下程序:public class Test { private static int

2020-10-12 17:15:50 1400

原创 线程池源码解读(保证让你受益匪浅系列)

name: java-thread-pooltitle: 深度解读 java 线程池设计思想及源码实现date: 2020-09-25 14:22:29tags:categories: concurrency我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 Java 线程池。本文一大重点是源码解析,同时会有少量篇幅介绍线程池设计思想以及作者 Doug Lea 实现过程中的一些巧妙用法。本文还是会一行.

2020-09-29 14:25:57 1084

原创 Spring IOC 容器源码解读

name: spring-ioctitle: Spring IOC 容器源码分析date: 2020-05-22 16:25:30tags:categories: open-sourceSpring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Sp.

2020-09-27 15:42:00 1126 10

原创 最通俗易懂的设计模式解读(保证看这一篇就够了)

spring有多种依赖注入的形式,下面介绍spring进行DI的方式:一.目前使用最广泛的 @Autowired:自动装配自动装配,用于替代基于XML配置的自动装配,详见【3.3.3 自动装配】。基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器、字段、方法注入,使用方式如下:java代码:@Autowired(required=true)构造器、字段、方法@A...

2020-02-27 10:50:37 1314 1

原创 【专栏Redis】简单介绍

Redis

2022-04-05 23:18:31 345

原创 【专栏RocketMq】简单介绍

MQ

2022-04-05 12:48:59 2183

原创 线上cpu爆满dump文件分析 精确查到根本产生原因

建议使用如下工具:JProfiler然后安装并打开,将dump文件放入其中然后选中点击然后你会看到此次cpu爆满根本的原因

2022-02-19 15:02:24 1393

原创 com.alibaba.druid.poc ol.DatasourceclosedExcept on:datasource already closed

你可能使用了异步线程去访问数据库,异步线程是不由spring管理也就是说 spring可以在异步线程未执行完就会进行容器关闭 当异步线程执行到获取数据库的时候就会报错**你是否跑单测?**如果是那就是单测的时候你使用的异步线程 里面在进行数据库访问...

2021-12-23 10:09:48 2927 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 2148 5

原创 windows下gitbook导出pdf(亲测可用)

0. 前言 第一次在windows上使用gitbook制作电子书,在网上搜了好多资料,自己亲手试了下并整理如下。 1. 准备工具 Step1: 下载nodejs(nodejs中文官方): http://nodejs.cn/download/, 点击图片位置:           2. 安装工具  ...

2021-07-13 17:44:33 3576 1

原创 dubbo详解-实操-待完成

dubbo深入学习RPC简介影响性能的主要俩点: 通信和序列化反序列化DUBBO概念面向接口代理的高性能的RPC调用:像调用本地方法一样调用远程服务智能负载均衡:实现流量均衡服务注册与发现:一般配合zk,比如dubbo怎么知道所调用的服务在哪台服务器上,所有的服务都注册到zk上dubbo会询问zk我要调用的这个服务在哪个节点上然后zk返回在哪几个服务器,然后dubbo进行调用目标服务高度可扩展能力:dubbo是基于微内核和插件的设计原则运行期间流量调度:给指定ip给予少量流量可实现灰度

2021-05-14 16:52:03 210 2

原创 让别人能通过公网ip访问自己本地ip

很简单通过39nat39nat 最重要的是免费

2021-03-26 17:48:43 2048

原创 voliate为什么不能修饰递增的变量

voliate为什么不能修饰有递增的变量呢首先voliate只能保证可见性:线程每次读取的值都是最新的;不能保证原子性。java中只对基本的类型保证了原子性,比如i++这些分为三步:读取,修改,写入,每一步都是一个原子,总体不是一个原子,所以就算每一次都读取到最新的值那么也有问题...

2021-03-24 09:17:13 152

原创 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 223

原创 JAVA线程池执行逻辑详解

问题:为什么要使用线程池线程在使用过程中遇到的问题:1、线程在Java中是一个对象,也是操作系统的重要资源,线程的创建、销毁需要时间,如果创建时间+销毁时间>执行              任务的时间那就很不合算了2、Java对象占用堆内存,操作系统线程占用系统内存年,根据JVM规范,一个线程默认最大栈大小1M,这个栈空间是             需要从

2020-11-06 08:53:19 986

原创 分布式系统中的CAP详解

Eureka服务治理机制与Dubbo服务治理机制的比较 FeatureEurekaZookeeper服务健康检查可配支持(弱)长连接,keepaliveCAPAPCPwatch支持(客户端观察到服务提供者变化)支持 long polling/大部分增量支持自我保护支持-客户端缓存支持-自身集群的监控metrics- Eureka支持健康检查,自我保护等 Zookeeper为CP设计,Eureka为AP设计。作为服务发现产品,可用性优先级较高,一致性的特点并不重要,宁可返回错误的数据,也比不反...

2020-11-05 20:51:48 1317

原创 双亲委派(三种类加载器)

java中的类加载器类型以及工作原理。 java中默认的有三种类型加载器。分别是:系统类加载器(应用类加载器)、扩展类加载器、引导类加载器。 上篇博客的例子已经测试了加载器类型是: sun.misc.Launcher$AppClassLoader@f4f44a,这个是系统类加载器。来看一下父类的加载器类型: //测试类加载器 System.out.println("forName形式的加载器--"+testTypeForName.getCl...

2020-11-03 23:33:39 247 1

原创 SpringBoot核心注解解析

1.@SpringBootApplication* 用于Spring主类上最最最核心的注解,自动化配置文件,表示这是一个SpringBoot项目,用于开启SpringBoot的各项能力。 相当于@SpringBootConfigryation、@EnableAutoConfiguration、@ComponentScan三个注解的组合。 2.@EnableAutoConfiguration 允许SpringBoot自动配置注解,开启这个注解之后,Spring...

2020-11-03 22:17:29 205

原创 MYSQL的MVCC弥补事务隔离级别带来的并发性能问题

MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以修改这条记录,反正每次修改都会在版本链中记录。SELECT可以去版本链中拿记录,这就实现了读-写,写-读的并发执行,

2020-11-03 00:14:12 85

原创 newSql(最先进的sql可同时满足cap)

1、CAP:CAP原理:• Consistency(一致性): 数据一致更新,所有数据变动都是同步的• Availability(可用性): 好的响应性能• Partition tolerance(分区耐受性): 可靠性上面的解释可能显得太过抽象,举例来说在高可用的网站架构中,对于数据基础提出了以下的要求:• 分区耐受性 保证数据可持久存储,在各种情况下都不会出现数据丢失的问题。为了实现数据的持久性,不但需要在写入的时候保证数据能够持久存储,还需要能够将数据备份一个或多个副本,存放在不同的物...

2020-11-03 00:06:06 375

原创 SpringBoot启动原理(超详细)

写在前面: 由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。 本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。总览: 上图为[SpringBoot启动结构图](https://www.processon.com/view/link/59812124e4b0

2020-11-01 20:33:19 1897

原创 分布式事务发展和阿里的GTS分布式事务框架

通过GTS,可以在公网环境轻松保证分布式系统下的数据一致性。 1 微服务的发展微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成,NetFlix有大约600个服务。国内方面,阿里巴巴、腾讯、360、京东、58同城等很多互联网公司都进行了微服务化实践。当前微服务的开发框架也非常多,比较著名的有Dubbo、Spri...

2020-11-01 19:25:47 420 2

原创 JVM内存模型(通俗易懂)

1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。2.jdk、jre、jvm是什么关系?(1)JRE(Java R

2020-10-30 18:14:32 227533 25

原创 Java多线程及线程状态转换(通俗易懂)

线程:是指进程中的一个执行流程。 线程与进程的区别:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源。Java实现多线程的方法有两种,一是继承Thread类、二是实现Runnable接口。一、继承Thread类public class ThreadTest extends Thread { @Override public void run() { System.out.println

2020-10-29 23:15:40 338 1

原创 JAVA中锁的详细介绍(少量源码)

Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录: 1. 乐观锁 VS 悲观锁#乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此

2020-10-28 21:20:20 333

原创 hash冲突的通用解决办法

Hash算法解决冲突的方法一般有以下几种常用的解决方法 1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) ※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列。沿此序列逐个单元地查找,直到找到给定的关键字,或者 碰到一个开放的...

2020-10-28 21:11:10 274

原创 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 2725 4

原创 kafka为什么会出现消息丢失以及解决方案

1.为什么会发生消息丢失和消息重复? 消息发送 Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置。Kafka通过配置request.required.acks属性来确认消息的生产: 0—表示不进行消息接收是否成功的确认;1—表示当Leader接收成功...

2020-10-20 21:15:48 3124

原创 Kafka为什么快,吞吐量大

学无止境,加油!Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万。但是很多使用过Kafka的人,经常会被问到这样一个问题,Kafka为什么速度快,吞吐量大;大部分被问的人都是一下子就懵了,或者是只知道一些简单的点,本文就简单的介绍一下Kafka为什么吞吐量大,速度快。一、顺序读写众所周知Kafka是将消息记录持久化到本地磁盘中

2020-10-19 00:32:29 893

原创 mysql为什么不推荐使用uuid作为主键

前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。本篇博客的目录一:mysql程序实例二:使用uuid和自增id的索引结构对比三:总结一:mysql和程序实例1.1:要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid

2020-10-17 17:25:46 2152 2

原创 Dubbo框架原理剖析(通俗易懂)

Java NIO:Buffer、Channel 和 Selector详解(通俗易懂) Dubbo框架原理剖析 文章目录 背景简单介绍核心功能 架构原理节点角色说明调用关系说明 服务发布与引用spring配置声明服务spring解析配置如何暴露服务服务引

2020-10-17 13:17:27 2149 1

原创 JVM 内存管理(垃圾收集)

关于 JVM 内存管理或者说垃圾收集,大家可能看过很多的文章了,笔者准备给大家总结下。这算是系列的第一篇,接下来一段时间会持续更新。本文主要是翻译《Memory Management in the Java HotSpot Virtual Machine》白皮书的前四章内容,这是 2006 的老文章了,当年发布这篇文章的还是 Sun Microsystems,以后应该会越来越少人记得这家曾经无比伟大的公司了。虽然这个白皮书有点老了,不过那个时候 Sun 在 J2SE 5.0 版本的 HotSpot 虚拟

2020-10-12 17:18:41 882

原创 Java 非阻塞 IO 和异步 IO区别(详解)

上一篇文章介绍了 Java NIO 中 Buffer、Channel 和 Selector 的基本操作,主要是一些接口操作,比较简单。本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,最后再介绍 JDK7 引入的异步 IO,由于网上关于异步 IO 的介绍相对较少,所以这部分内容我会介绍得具体一些。希望看完本文,读者可以对非阻塞

2020-10-11 17:13:29 2326

原创 Java NIO:Buffer、Channel 和 Selector详解(通俗易懂)

文章目录Bufferposition、limit、capacity初始化 Buffer填充 Buffer提取 Buffer 中的值mark() & reset()rewind() & clear() & compact()ChannelFileChannelSocketChannelServerSocketChannelDatagramChannelSelector小结本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。本来要一起介绍

2020-10-11 17:11:02 2093 5

原创 JAVA+字符串常量池介绍

本文将介绍 HotSpot 中的 String Pool,字符串常量池。相对是一篇比较简单的文章,大家花几分钟就看完了。在 Java 世界中,构造一个 Java 对象是一个相对比较重的活,而且还需要垃圾回收,而缓存池就是为了缓解这个问题的。我们来看下基础类型的包装类的缓存,Integer 默认缓存 -128 ~ 127 区间的值,Long 和 Short 也是缓存了这个区间的值,Byte 只能表示 -127 ~ 128 范围的值,全部缓存了,Character 缓存了 0 ~ 127 的值。Float

2020-10-09 09:06:52 1468 7

GeoLite2-City.mmdb.zip 免费

GeoLite2-City.mmdb

2021-04-14

springboot+mybatis代码生成器亲测可用

springboot+mybatis代码生成器亲测

2021-03-19

定时检测,重启外部服务demo

bat脚本定时执行,符合重启条件时,重新启动外部服务,代码内自动关闭本java程序,适应场景代码重启或关闭远程服务

2018-09-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除