自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gyhdxwang的博客

学习记录

  • 博客(91)
  • 收藏
  • 关注

原创 mysql的bug记录:syntax to use near ‘)

Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')这个错误一般是在查询时有类似(select * fro

2021-08-17 11:08:59 3049

原创 attempt to unlock lock, not locked by current thread by node id: *异常解决记录

attempt to unlock lock, not locked by current thread by node id: a7d31153-2eb3-44fd-a183-0ddc39fce80a thread-id: 74我这边出现这个问题是锁设置的时间小于了被锁程序的执行时间。导致redisson解锁时,锁已经因为超时被释放掉了。故抛出改异常...

2021-08-03 19:32:58 16183 1

原创 org.quartz.JobPersistenceException: Couldn‘t retrieve job because a required class was not found。异常记

问题springboot 使用定时任务quartz时,可能出现org.quartz.JobPersistenceException: Couldn’t retrieve job because a required class was not found异常,解决1.修改配置文件具体方法参考如下:https://www.cnblogs.com/xuwenjin/p/14121077.html2.可能提示找不到的定时任务和其他定时任务重名,修改定时任务的name即可我是使用该方法解决的问题..

2021-07-17 19:47:38 5903

原创 【Java-IO】- 1.I/O系统与装饰者模式

文章目录1.流类a.流的概念b.输入/输出流的概念c.Java中的流字符流和字节流d.流的分类e.java.io中InputStream的类层次InputStreamf.java.io中OutputStream的类层次InputStream与OutputStream链接文件的方式g.过滤流h.java.io中Reader的类层次i.java.io中Write的类层次2.Java IO库的基本设计模式3.装饰者模式(Decorator)a.装饰模式的角色b.装饰者模式的特点c.编码实现e.装饰者模式与继承的对

2020-09-14 16:04:57 241

原创 【安全认证框架】- shiro

文章目录shiroshiro的架构1.建项目,快速开始对Quickstart.java类的分析2.springboot集成shiroshiroshiro的架构1.建项目,快速开始即把https://github.com/apache/shiro下载下来参照shiro-master\samples\quickstart\来建项目(注意自己添加pom文件的版本)。或根据http://shiro.apache.org/10-minute-tutorial.html建项目正常运行的结果对Qu

2020-09-14 12:22:53 503

原创 【MySql】- 3.MySQL的锁

文章目录MySql的锁介绍MySql的锁介绍

2020-09-12 18:10:31 189

原创 【MySql】- 2.MySQL的事务2-隔离级别

文章目录1.事务的4个特性b.并发事务带来的问题2.事务的隔离级别a. 读未提交(read uncommit)b.对已提交(read commit)c.可重复读(repeatable read)d.串行化(serializable)e.总结3.隔离级别的实现a.版本链b.ReadView如何判断某个记录对当前事务可见Read Commited的实现方式Repeatable Read的实现方式4.MVCC总结1.事务的4个特性在聊事务的隔离级别之前我们先回顾以下事务的特性。原子性: 事务是最小的执行单

2020-09-12 16:01:06 249

原创 【MySql】- 2.MySQL的事务

文章目录1.事务的ACID4大特性a.原子性(Atomicity)b.隔离性(Isolation)c.一致性(Consistency)d.持久性(Durablity)2.事务的分类a.扁平事务b.带有保存点的编排事务保存点c.链事务d.嵌套事务e. 分布式事务1.事务的ACID4大特性事务就是一组原子性的SQL查询,或者说一个独立的执行单元。如果数据库引擎可以成功的对数据库应用该组查询语句的全部语句,则执行改组查询,如果其中任意一条语句因为奔溃或者其他原因无法执行,那么所有查询都不会执行。即事务内的语句

2020-09-12 15:04:04 156

原创 【MySQL】- 1.mysql索引

文章目录1.Mysql架构a. mysql的架构图b. InnoDB数据页的结构页结构c. InnoDB行格式COMPACT行格式记录的额外信息字节字段长度列表null值列表记录头信息记录真实数据行溢出数据记录数据太多产生的溢出Dynamic和Compresses行格式2.索引1.Mysql架构a. mysql的架构图其中存储引擎是负责数据的读取和写入,常用的存储引擎有myISAM,innoDB,Momory等,每个存储引擎都有自己的特性,而且其存放数据的格式也不同,比如memory就不用磁盘存储数

2020-09-08 22:33:23 159

原创 【Java并发】- 11.对Java提供的ThreadPoolExecutor线程池的深入刨析及相关实现源码的解析

文章目录1 线程池提交任务的源码分析1.1 submit(Callable task)方法1.2 submit(Runnable task)方法和submit(Runnable task, T result)方法1.3 线程池的状态分析(为了更好的理解execute先讲这个)线程池中的5种状态线程池中状态的转移1.4 execute(Runnable command) 方法1.5 线程池添加线程的方法addWorker1.6 runWorker(this):真正执行任务的方法getTask():获取阻塞队列

2020-06-24 12:25:00 164

原创 【Java并发】- 10.对ThreadPoolExecutor线程池的简单解析及创建线程池的参数的分析

文章目录1 从Executors开始讲起2.对ThreadPoolExecutor的分析2.1 BlockingQueue workQueue阻塞队列LinkedBlockingQueue:基于链表的阻塞队列ArrayBlockingQueue:基于数组的阻塞队列SynchronousQueue:同步阻塞队列2.2 ThreadFactory threadFactory:线程工厂DefaultThreadFactory:默认线程工厂,使用最多的线程工厂2.3 RejectedExecutionHandler

2020-06-23 11:16:26 406

原创 【Java并发】- 9.对AQS(AbstractQueuedSynchronizer)解析

文章目录1.简介2.通过可重入锁(ReentrantLock)来探究AQS的实现原理2.1 对构造方法的解析2.2 对lock()方法的解析2.2.1 公平锁时2.2.2 非公平锁2.3 unLock方法2.4 对ReentrantLock的总结3.根据可重入读写锁(ReentrantReadWriteLock)来探究AQS的源码3.1 构造方法的分析3.2 对读锁的分析3.2.1 lock方法源码分析3.2.2 释放锁unLock3.3 对写锁的分析3.3.1 lock方法3.3.2 unlock方法3.

2020-06-22 21:55:06 215

原创 【Java并发】- 8.对并发工具类ThreadLocal的源码解析

文章目录1.简介2.ThreadLocal的使用3.对ThreadLocal的主要方法的源码解析ThreadLocalMapset方法get方法4.ThreadLocal中的内存泄漏问题1.简介ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。本质上,ThreadLocal是通过空间来换取时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会

2020-06-22 12:32:19 216 1

原创 【Java并发】- 7.对CAS(Compare And Swap)解析

文章目录1 CAS概念2 CAS底层原理3 Java中对CAS操作的实现CAS源码分析4 CAS的缺陷循环时间太长只能保证一个共享变量原子操作ABA问题Java中对ABA问题的解决3 synchronized锁这对CAS的使用1 CAS概念CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更

2020-06-20 14:20:52 271

原创 【Java并发】- 6.对并发工具类CyclicBarrier的源码解析

文章目录1.CyclicBarrier类的简介2.对CyclicBarier源码的分析对构造方法的解析对await()方法的解析dowait()方法关于CyclicBarrier的底层执行流程总结3.CyclicBarrier和CountDownLatch的区别1.CyclicBarrier类的简介CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前

2020-06-20 13:18:21 196

原创 【Java并发】- 5.对并发工具类CountDownLatch的源码解析

文章目录1.简介2.如何使用CountDownLatch3.对CountDownLatch类中方法的解析构造方法await方法1.简介CountDownLatch允许一个或多个线程等待其他线程完成操作。与thread的join方法的实现的功能相似,不过join用于让当前执行线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。与join不同CountDownLatch可以让开发者自行定义线程执行的位置。CountDownLatch的构造函数

2020-06-20 11:48:41 192

原创 【Java并发】- 3.对Volatile关键字的深入解析

文章目录

2020-06-18 23:57:24 178

原创 【Java并发】- 4.对Lock接口及其关联接口Condition的解析

文章目录1.对Lock类的简单解析void lock();void lockInterruptibly()boolean tryLock();boolean tryLock(long time, TimeUnit unit)1.对Lock类的简单解析lock接口是java1.5开始添加入Java的,它是一个接口。其作用是替代synchronized关键字实现线程安全。synchronized关键字实现线程安全是通过JVM底层的Monitor锁来实现,但是在多线程环境下,如果线程进入阻塞状态就会涉及系统

2020-06-17 23:30:53 239 3

原创 【Java并发】- 2.对Synchronized关键字的深入解析

文章目录1.概念2.synchronized的用法1、同步方法2、同步代码块根据获取的锁分类3.通过字节码来查看synchronized关键字的具体实现方式修饰代码块修饰非静态方法修饰静态方法1.概念是利用锁的机制来实现同步的。锁机制有如下两种特性:互斥性:**即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。可见性:**必须确保在锁被释放之前,对共享变量所做的修

2020-06-16 18:11:11 291 1

原创 【Java并发】- 1.对Object类中wait和notify方法的解析

文章目录1.对wait方法的解析wait方法在何时使用?线程执行wait方法后何时被唤醒?2.对notify方法的解析3.练习:启动两个线程使用wait和notify使线程对x分别加一减一。最后输出10101010...1.对wait方法的解析Object类中有三个wait方法 public final void wait() throws InterruptedException { wait(0); } public final native voi

2020-06-15 14:53:05 253

原创 【RestFul接口文档】- 关于Swagger接口文档的使用说明

文章目录Swagger1.Swagger简介2.Springboot集成Swagger3.Swagger的配置1.注入Swagger的bean2.修改Swagger的ApiInfo信息3.运行测试4.Swagger配置扫描接口Swagger的apis扫描方式Swagger的apis方式最常用的方式是basePackage的方式Swagger的paths的不扫描方式4.配置Swagger是否启动问题如何配置Swagger在生产环境使用,发布时不使用Swagger1.Swagger简介号称世界上最流行的

2020-06-02 09:44:30 598

原创 【计算机网络笔记】- 4.网络层概述

文章目录

2020-05-23 21:57:03 908

原创 【计算机网络笔记】- 3.数字链路层概述

文章目录

2020-05-15 00:10:51 956

原创 【计算机网络笔记】- 2.物理层概述

文章目录1.物理层的基本概念2.数据通信的基础知识典型的数据通信模型相关术语有关通信的几个基本概念知识几种调制信号的方法常用编码奈氏准则和香农定理1.物理层的基本概念物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:机械特性:例接口形状,大小,引线数目电气特性:例规定电压范围( -5V到+5V)功能特性:例规定5V表示0,+ 5V表示1过程特性:也称规程特性,规定建立连接时各个相关部件的工作步骤

2020-05-12 23:23:26 690

原创 【计算机网络笔记】- 1.计算机网络的概述

文章目录1.计算机网络的概述1.因特网的概述2.因特网的组成边缘网的通信方式数据交换方式3.网络的类别距离划分4.计算机网络的性能性能指标非性能指标1.计算机网络的概述1.因特网的概述2.因特网的组成边缘网的通信方式客户服务器方式(C/S)客户端想要获取数据只能从服务器端获得对等的方式(P2P)对等的方式:每个客户端都可以作为服务端来发送信息。如D从C获取一个500M的文件,当D获取100M的时候,突然F也要获取C的500M文件,如果多个客户端同时请求一个资源会造成传输效率下

2020-05-09 12:52:12 174

原创 【微服务】- SpringCloudAlibaba的Nacos

文章目录1.nacos作为服务注册中心1.nacos作为服务注册中心

2020-05-06 12:01:31 417

原创 【微服务】- SpringCloud中Config、Bus和Stream

文章目录SpringCloud中Config1.Config的简介官网分布式系统面临的问题config是什么如何使用能做什么与git的配合使用2.Config服务端的配置和测试准备在idea中新建项目测试配置的读取规则(怎么知道访问上面的链接就能得到数据)/{label}/{application}-{profile}.yml/{application}-{profile}.yml/{applic...

2020-04-21 17:52:30 929

原创 【微服务】- SpringCloud中Ribbon的使用及其轮询调度详解

文章目录1.简介2.负载均衡的介绍LB负载均衡(Load Balance)是什么Ribbon本地负载均衡客户端VS Nginx服务端负载均衡区别集中式LB进程内LB总结3.SpringCloud集成Ribbon架构说明如何引入RibbonRestTemplate简介getForObject方法/getForEntity方法4.Ribbon核心组件IRuleIRule的几个重要实现类自定义自己的负载...

2020-04-10 23:33:02 783

原创 【微服务】- SpringCloud整合OpenFeign及OpenFeign简单使用

文章目录简介概述Feign的作用Feign集成了RibbonFeign和OpenFeign的区别SpringCloud集成OpenFeign1.先准备测试用到的服务集群和Eureka集群2.新建OpenFeign项目(空maven项目)3.添加依赖4.添加配置文件(application.yml)5.写主启动类6.写service层7.写controller8.测试结果9.总结OpenFeign的...

2020-04-10 23:27:44 11806 4

原创 【微服务】- Consul整合SpringCloud及使用

文章目录简介功能服务发现健康监测KV存储多数据中心可视化Web界面consul安装与使用使用consul占用的端口号是8500Consul实现注册功能注册provider提供者的服务建项目写pom写yml主启动controller写consumer消费者服务建项目写pom写yml主启动配置类controller启动上面两个服务,测试Eureka、Zookeeper和Consul三个注册中心的异同点...

2020-04-02 13:47:48 441

原创 【微服务】-SpringCloud整合Zookeeper

文章目录1.先在服务器上开启Zookeeper2.新建空项目添加依赖添加yml文件写主启动类写controller项目完成启动项目服务节点注册进zookeeper后是临时节点,服务停止后Zookeeper会把节点先保留一段时间,如果超时还是不能检测到服务的心跳,Zookeeper会直接删除服务节点,等待服务下次开启后重新注册。Zookeeper代替Eureka建项目写pom建yml写启动类配置及业...

2020-04-02 08:54:15 880

原创 【微服务】- eurka构建与使用

文章目录1.eureka基础知识什么是服务治理什么是服务注册与发现Eureka包含两个组件: Eureka Server和Eureka Client1.Eureka Server提供服务注册服务2.EurekaClient通过注册中心进行访问用例项目的构架2.单机eureka的构建注册一个简单的Eureka单机配置1.建一个空工程工程2.添加依赖3.配置yml文件4.写主启动类5.运行把服务注册到...

2020-03-31 23:57:41 343

原创 【Java集合】--LinkedHashMap源码解析

文章目录简介继承体系数据结构源码解析1.属性2.构造方法LinkedHashMap()LinkedHashMap(int initialCapacity)LinkedHashMap(int initialCapacity, float loadFactor)LinkedHashMap(Map<? extends K, ? extends V> m)LinkedHashMap(int i...

2020-03-03 17:58:52 139 2

原创 【Java集合】-- LinkedList源码解析

文章目录继承体系数据结构源码解析1.属性2.构造方法LinkedList()LinkedList(Collection<? extends E> c)3.添加元素add(E e)addFirst(E e)addLast(E e)add(int index, E element)offer(E e)offerFirst(E e)offerLast(E e)总结4.获取元素get(int ...

2020-03-02 23:47:55 282

原创 【Java集合】--ConcurrentHashMap源码解析

文章目录继承结构源码解析1.构造方法ConcurrentHashMap()ConcurrentHashMap(int initialCapacity)ConcurrentHashMap(Map<? extends K, ? extends V> m)ConcurrentHashMap(int initialCapacity, float loadFactor)ConcurrentHas...

2020-03-02 18:21:49 287 3

原创 【Java集合】-- CopyOnWriteArrayList源码解析

文章目录继承体系源码解析1.属性2.构造方法无参构造参数为Collection的构造方法参数为E的构造方法2.添加元素add(E e)add(int index, E element)}3.获取元素get(int index)4.删除元素remove(int index)remove(Object o)CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实...

2020-02-29 16:42:41 139 1

原创 【Java集合】-- ArrayList源码解析

文章目录继承体系源码解析1.属性2.构造方法**无参构造****int型参数的构造方法****Collection型参数构造方法**3.添加元素add(E e)方法add(int index, E element)3.获取元素4.删除元素remove(int index)通过索引删除remove(Object o)删除指定元素ArrayList是一种以数组实现的List,与数组相比,它具有动态扩...

2020-02-29 15:48:23 97

原创 【Java集合】-- HashMap源码解析

文章目录源码解析1.构造方法无参构造方法int型参数的构造方法int,float两个参数的构造方法hsah方法2.添加元素(put()方法)3.扩容方法(resize()方法)4.获取元素(get()方法)5.移除元素(remove())6.树化(treeifyBin())关于HashMap常见的问题1.为什么容量始终是2的幂次?2.加载因子为什么是0.75?3.既然红黑树那么好,为啥hashma...

2020-02-29 13:56:27 193

原创 【JVM】-- Java编译期处理

文章目录1.默认构造器2.自动拆装箱3.泛型与类型擦除4.可变参数5.foreach6.switch支持case使用字符串及枚举类型switch字符串switch枚举7.枚举8.try-with-resourcs9.方法重写时的桥接方法10.匿名内部类编译器处理就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负...

2020-02-19 17:10:50 274

原创 【JVM】-- 类加载

文章目录1.类加载的阶段加载(Loading)连接(Linking)1.验证(Verification)2.准备(Preparation)3.解析(Resolution)初始化(Initialization)初始化时机面试题1.”e init “何时打印2.典型应用 - 完成懒惰初始化单例模式2.类加载器1.启动类加载器( Bootstrap ClassLoader))2.扩展类加载器(Exten...

2020-02-19 17:02:28 196

空空如也

空空如也

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

TA关注的人

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