自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小郭的博客

一位帅气的程序员

  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 设计模式 | 策略模式源码学习与实践

前言在业务开发中,我们最经常使用到的判断就是if…else,只要涉及到多种策略的实现方式,我们脑海中就会使用这个判断。有时候产品需求的不明确,一个版本迭代来一种判断,随着时间的推移,这个实现方法就会变得又长又臭,那有什么办法可以来觉得呢,通过学习策略模式,他能够很好的帮我们解决这个问题。纲要在学习之前,有一句话我觉得比设计模式更重要。设计原则和思想比设计模式更加普适和重要什么是策略模式?简单的来说,就是定义一系列算法,封装每个算法,并使它们可以互换。策略让算法独立于使用它的客户端而变化。

2021-12-04 12:02:39 293

原创 设计模式 | 策略模式源码学习与实践

前言在业务开发中,我们最经常使用到的判断就是if…else,只要涉及到多种策略的实现方式,我们脑海中就会使用这个判断。有时候产品需求的不明确,一个版本迭代来一种判断,随着时间的推移,这个实现方法就会变得又长又臭,那有什么办法可以来觉得呢,通过学习策略模式,他能够很好的帮我们解决这个问题。纲要在学习之前,有一句话我觉得比设计模式更重要。设计原则和思想比设计模式更加普适和重要什么是策略模式?简单的来说,就是定义一系列算法,封装每个算法,并使它们可以互换。策略让算法独立于使用它的客户端而变化。

2021-11-28 20:51:37 424

原创 MySQL笔记 | 9.ORDER BY是如何工作的?

前言每次业务功能中总有按时间排序,或者按其他字段排序的需求,一想到排序我们就会想到MySQL中的order by,那在使用的过程中,我们是否会存在不合理的使用导致查询的速度下降呢?正文为了避免全表查询,我们通常是在order by的字段上加上索引,这也是为什么我们需要在排序字段上加上对应的索引。explain select t.passenger_uuid ,t.order_no from yy_order t order by t.order_no limit 1000;explain分析结果

2021-11-27 12:46:24 619

原创 MySQL笔记 | 8.事务隔离你了解多少?

事务隔离级别读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。可重复读是指,一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。串行化,顾名思义是对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。读已提交和可重复读的区别可重复读是在读事务前已提交,读已提交是指读已提交事务的启动方式?1.显式启动事务语句, begin

2021-11-27 00:12:42 730

原创 MySQL笔记 | 7.MySQL中不能不学的索引(下)

系列文章目录提示:所有文章的目录1.了解SQL的执行过程2.Docker下搭建MySQL&查看BinLog文件3.MySQL中涉及的锁4.MySQL数据库设计-字段类型5.在Docker中搭建主备前言上一篇,我们对索引有了一个大概的认识,接下来我们对索引的原来进行学习。提示:以下是本篇文章正文内容一、索引的更新过程数据操作的流程:数据更新 -》记录change buffer(这个过程会产生merge) -》数据通过buffer pool读入内存,提高内存利用率

2021-07-05 17:08:44 241 5

原创 MySQL笔记 | 6.MySQL中不能不学的索引(上)

系列文章目录提示:所有文章的目录1.了解SQL的执行过程2.Docker下搭建MySQL&查看BinLog文件3.MySQL中涉及的锁4.MySQL数据库设计-字段类型5.在Docker中搭建主备前言前面学习了许多的理论基础,但是在实际的工作中,我们主要的任务还是完成任务。常常会因为查询时性能上不去而苦恼,这就是我们在这次的文章中需要去学会解决的,认识索引,合理使用索引以及索引的优劣。为了更好的整理知识点,这里提供出一个思维导图作为参考。提示:以下是本篇文章正文内容一

2021-07-03 16:52:57 262 2

原创 MySQL笔记 | 5.在Docker中搭建主备

系列文章目录提示:所有文章的目录1.了解SQL的执行过程2.Docker下搭建MySQL&查看BinLog文件前言无论何时,只要讨论到多个数据之间同一时间修改数据的问题,都要讨论如何控制并发。这时候锁的作用就给数据很足的安全感,当我们对一条数据,进行修改的时候,我们可以进行锁表,锁行,锁全局来确保数据的问题。提示:以下是本篇文章正文内容一、涉及到的锁1. 全局锁含义:给整个数据库加锁。实现:实现全局加锁:Flush tables with read lock (FTWRL)

2021-06-26 11:42:06 432

原创 MySQL笔记 | 4.MySQL数据库设计-字段类型

系列文章目录提示:所有文章的目录1.了解SQL的执行过程2.Docker下搭建MySQL&查看BinLog文件前言这篇文章主要是在Docker下搭建一个MySQL环节,为了后续的数据库学习做准备。概述:MySQL官方BinLog文档提示:以下是本篇文章正文内容一、安装MySQL的步骤步骤一:查询mysql在docker下的版本docker search mysql步骤二:拉取官方镜像不带版本号,默认拉取最新的docker pull mysql步骤三:查看是否拉

2021-06-20 20:22:48 408 1

原创 MySQL笔记 | 3.MySQL中涉及的锁

系列文章目录提示:所有文章的目录1.了解SQL的执行过程2.Docker下搭建MySQL&查看BinLog文件前言无论何时,只要讨论到多个数据之间同一时间修改数据的问题,都要讨论如何控制并发。这时候锁的作用就给数据很足的安全感,当我们对一条数据,进行修改的时候,我们可以进行锁表,锁行,锁全局来确保数据的问题。提示:以下是本篇文章正文内容一、涉及到的锁1. 全局锁含义:给整个数据库加锁。实现:实现全局加锁:Flush tables with read lock (FTWRL)

2021-06-18 13:19:51 101

原创 MySQL笔记 | 2.Docker下搭建MySQL&查看BinLog文件

系列文章目录提示:所有文章的目录1.了解SQL的执行过程1.Docker下搭建MySQL&查看BinLog文件前言这篇文章主要是在Docker下搭建一个MySQL环节,为了后续的数据库学习做准备。提示:以下是本篇文章正文内容一、安装MySQL的步骤步骤一:查询mysql在docker下的版本docker search mysql步骤二:拉取官方镜像不带版本号,默认拉取最新的docker pull mysql步骤三:查看是否拉取成功了docker images

2021-06-09 15:49:30 1313

原创 MySQL笔记 | 1.了解SQL的执行过程

22222222[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKFh7hPL-1615000105477)(assets/%E5%9B%BE%E6%80%AA%E5%85%BD_cfa6662c01d22362d73954dd910d9751_40206.png)]

2021-06-02 23:20:17 112

原创 JAVA基础 | IO学习总结

文章目录前言一、IO是什么?二、IO流的操作规则1.引入库2.读入数据总结前言提示:以下是本篇文章正文内容一、IO是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、IO流的操作规则1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnin

2021-02-15 22:39:47 83

原创 JAVA基础 | IO四个容易忽视的坑

文章目录前言第一坑:文件读写需要确保字符编码一致第二坑:Files类调用readAllLines,会造成OOM第三坑:使用FIles类静态方法进行文件操作注意释放文件句柄第四坑:注意读写文件要考虑设置缓冲区总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考第一坑:文件读写需要确保字符编码一致场景:我们模拟将编码格式为GBK的值写

2021-02-15 22:39:06 196

原创 JAVA基础 | IO之Reader与Writer

IO系列文章目录文章目录IO系列文章目录前言一、Reader1. 简介2. 构造方法3. 涉及变量4. 涉及方法二、 Writer1. 简介2. 构造方法3. 涉及变量4. 涉及方法三、举例总结前言当我们明确了要操作的是数据是字符,Reader与Writer就是称为我们一个很好的选择,接下来我们来看一下他们的区别与使用提示:以下是本篇文章正文内容一、Reader1. 简介 Abstract class for reading character streams. The only m

2021-02-15 22:38:13 120

原创 JAVA基础 | IO之BufferedReader与BufferedWriter

IO系列文章目录文章目录IO系列文章目录前言一、BufferedWriter1. 简介2. 构造方法3. 涉及变量4. 涉及方法二、 BufferedReader1. 简介2. 构造方法3. 涉及变量4. 涉及方法三、举例前言当我们明确了要操作的是数据是字符,Reader与Writer就是称为我们一个很好的选择,如果我们需要高效性,引入缓存区,那我们就可以选择BufferedReader与BufferedWriter,接下来我们来看一下他们的区别与使用提示:以下是本篇文章正文内容一、Buf

2021-02-15 22:37:34 111

原创 JAVA基础 | IO之ByteArrayOutputStream与ByteArrayInputStream

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-02-08 11:16:56 3104

原创 锁 | 原来锁还有这么多种

线程-锁文章目录线程-锁前言一、锁的类型有哪些?二、锁的原理1.AQS三、synchronized与Lock的区别1.Lock的搭档Conditon四、死锁了怎么办?五、生产中要注意的问题1. 没有理清楚线程安全的问题所在,导致锁无效2. 加锁没有考虑锁的粒度,可能导致性能问题3. 多把锁格外小心死锁问题总结前言在并发中,锁是不可缺少的一部分,在很多场景中,我们想要保证安全,锁总是我们的第一选择。于是系统的学习一下,做了个读书笔记。提示:以下是本篇文章正文内容一、锁的类型有哪些?细细一看

2021-02-03 17:19:45 195 4

原创 线程 | 并发容器读书笔记

线程-并发容器文章目录线程-并发容器前言一、HashMap容器二、ConcurrentHashMap容器三、CopyOnWriteArrayList容器四、生产问题思考前言主要对比较常见的并发容器,进行了学习。已经在一些场景中所遇到的坑,进行解决。提示:以下是本篇文章正文内容一、HashMap容器HashMap不是一个线程安全的容器,在1.8版本之前,并发环境中有可能会造成死循环,以及导致数据丢失。二、ConcurrentHashMap容器ConcurrentHashMap与Ha

2021-02-02 16:03:17 64 1

原创 线程池 | 生产中的实践

线程池-时间文章目录线程池-时间前言一、场景一:差比价运算二、任务的概念2.1 CPU密集型任务2.2 耗时IO型任务总结前言通过了一段时间的学习,终于在工作中也有机会去使用了。提示:以下是本篇文章正文内容一、场景一:差比价运算业务背景:药品报价,通过差比价规则计算出差比价,大量的计算任务需要快速执行,计算中利用了cpu密集型线程池针对处理时间较长的业务,利用io密集型线程池处理时间较短的业务。思考:执行的任务如果没有区分线程池,统一一个公用的线程池,会造成什么样的后果?@Confi

2021-01-29 23:07:41 144

原创 阻塞队列| 利用流程图看懂ArrayBlockingQueue源码

线程-阻塞队列文章目录线程-阻塞队列前言一、ArrayBlockingQueue简介二、ArrayBlockingQueue队列的原理2.1 一图看懂put与take源码2.1.1 put总结2.1.2 take总结总结前言阻塞队列是线程池十分重要的一个部分,当大量的任务到来时,线程池会把多出来的任务,暂存在阻塞队列中。它有好的地方,那它坑的地方你了解吗?提示:以下是本篇文章正文内容一、ArrayBlockingQueue简介是一个数组实现的环形队列,经常会使用并发容器用于存储多线程间

2021-01-28 10:45:54 618

原创 线程 | 并发工具的使用-Semaphore

线程-并发工具-Semaphore文章目录线程-并发工具-Semaphore前言一、Semaphore是什么?二、主要方法和核心参数1.核心参数2.构造方法3.核心方法三、原理四、实践总结前言concurrent包为我们提供了多种防止多线程同时操作一个资源的方法。volatile原子类Synchronized和LockSemaphore我们主要来学习下 Semaphore一、Semaphore是什么?Semaphore被翻译为计数信号量,通常使用

2021-01-27 18:12:13 177

原创 线程 | 并发工具的使用-CountDownLatch

线程-并发工具-CountDownLatch文章目录线程-并发工具-CountDownLatch一、CountDownLatch是什么?二、主要参数与方法1.主要方法2.构造方法三、原理1.核心方法源码四、实践1.用法一:一个线程等待其他多个线程都执行完毕,再继续自己的工作2.用法二:多个线程等待某一个线程的信号,同时开始执行总结注意点一、CountDownLatch是什么?CountDownLatch是一种并发流程控制的同步工具。主要的作用是等待多个线程同时完成任务之后,再继续完成主线程任务。简单

2021-01-25 09:53:03 78

原创 线程 | 并发工具的使用-CyclicBarrier

线程-线程工具-CyclicBarrier文章目录线程-线程工具-CyclicBarrier前言一、CyclicBarrier是什么?二、主要参数与方法1.主要参数2.方法3.构造方法三、核心方法源码四、实践1.分享一个网上的使用例子总结前言前面介绍了CountDownLatch,那CyclicBarrier和它有什么区别呢?提示:以下是本篇文章正文内容,下面案例可供参考一、CyclicBarrier是什么?CyclicBarrier 也是一种多线程并发控制的实用工具,和 CountDo

2021-01-24 14:56:48 98

原创 思考 | 正确的工作方法,形成自己的思考框架

读书笔记-工作方式将时间的利用率提高,真正的效率,来自少做乃至不做无价值的事。文章目录读书笔记-工作方式前言一、以终为始二、任务分解三、沟通反馈四、自动化总结前言在极客时间上学习了郑晔老师的《10x程序员工作法》 课程,感觉受益匪浅,在学习过程中,将老师的知识用脑图的形式记录下来,在这里做个分享,不足之处欢迎大家指出。提示:以下是本篇文章正文内容一、以终为始二、任务分解三、沟通反馈四、自动化总结在工作中更多的注重去思考,形成自己的工作原则和思考框架。对自己职业生涯也进

2021-01-21 13:24:09 402 3

原创 基础 | 你对Java内存模型了解多少

线程-基础-Java内存模型文章目录线程-基础-Java内存模型前言一、JVM 内存结构与Java 内存模型区别二、Java 内存模型的特性三、主内存和工作内存的关系实践前言在线程中,多次涉及到了内存模型,那它到底是什么?提示:以下是本篇文章正文内容一、JVM 内存结构与Java 内存模型区别二、Java 内存模型的特性Java 内存模型主要有三大特性,原子性、可见性、重排序三、主内存和工作内存的关系实践在实际的使用中,我们最常用的单例,如果写的不规范就会存在排序的问题,

2021-01-20 11:55:30 70

原创 线程池 | 如何优雅的停下线程

线程池-停下线程文章目录线程池-停下线程前言一、方案一:使用volatile标记位,利用其可见性二、方案二:调用Thread的方法interrupted1.引入库总结前言在开始之前,我们可以思考一下,如何能够让线程停下?我能想到的方案有两个。方案一:使用volatile标记位,利用其可见性。方案二:调用Thread的方法interrupted。提示:以下是本篇文章正文内容一、方案一:使用volatile标记位,利用其可见性通过代码我们来看下方案一,这是一个很经典的生产者和消费者模式

2021-01-19 10:19:08 414

原创 线程池 | ScheduledThreadPoolExecutor

线程-线程池认识ScheduledThreadPoolExecutor文章目录线程-线程池前言一、ScheduledThreadPoolExecutor是什么?二、类的实现与继承2.1两个重要的内部类三. 构造方法四. 独有方法五. 实践六. 源码环节七.总结前言concurrent包为我们提供了多种的线程池,其他的几种都是比较常规的,ScheduledThreadPoolExecutor比较特殊,我们就拿它出来学习学习。![在这里插入图片描述](https://img-blog.csd

2021-01-18 11:25:18 465

原创 线程池 | 线程如何复用?

线程-线程池线程池如何复用?文章目录线程-线程池前言一、Worker执行任务模型二、Worker线程如何增加?2.1 addWorker总结:2.2 worker源码三、Worker线程执行任务3.1 runWorker源码3.2 getTask源码3.3 addWorkerFailed源码3.4 tryTerminate源码四、原理总结4.1 线程如何复用?4.2 线程如何回收?前言在前面的几篇文章中,我们学习了关于线程的一些基础知识,也了解关于线程状态的流转,接下来我们一起学习线程池。

2021-01-18 00:06:32 1084

原创 基础 | 图解wait()、notify()、join()源码

线程-基础-图解wait()、notify()、join()源码文章目录线程-基础-图解wait()、notify()、join()源码前言一、wait()方法二、notify()方法三、join()方法3.1我们来通过实例看一下join的使用总结前言这一篇我们主要是对wait()、notify()、join()进行图解,可能有些粗糙,不足之处多多指出。提示:以下是本篇文章正文内容一、wait()方法我们先对Object.wait()进行一波分析。接着上一篇留下的问题为什么调用Obj

2021-01-17 10:50:00 371 1

原创 基础 | 线程的状态流转

线程-基础-线程的状态流转文章目录线程-基础-线程的状态流转前言一、线程的主要状态是什么?1.RUNNABLE-正在运行状态2. BLOCKED-阻塞状态3. WAITING-等待状态4. TIMED_WAITING-超时等待状态5. TERMINATED-终止状态总结前言上一篇主要主要是对多线程的了解,以及对Thread的start方法,进行了源码的跟踪,今天我们主要来说一说其他的状态。提示:以下是本篇文章正文内容一、线程的主要状态是什么?// Thread.State 源码publi

2021-01-16 10:10:04 295

原创 基础 | 了解线程

线程前言一、什么是线程,什么是进程?二. Thread类构造方法1. 主要构造方法2. Thread常用方法三. 线程状态转换总结前言一、什么是线程,什么是进程?思考:什么是线程,什么是进程?为什么要使用线程?创建线程的方式,线程是如何启动的?线程的常用方法很多时候我都习惯使用脑图来记录问题,以及回答问题,这次也继续使用脑图来回答这些问题下面我们开始稍微深入的探索一下线程的奥秘,go!二. Thread类构造方法1. 主要构造方法//构造器public Thread(Th

2021-01-15 21:55:56 95

原创 在ubuntu上,搭建Reids高可用集群环境

配置{System:UbuntuRedis:Redis-4.0.8}准备工作:1.安装C语言的编译环境命令:sudo apt-get install gcc2.下载Redis解压安装命令:wget http://download.redis.io/releases/redis-4.0.8.tar.gz命令:tar -zxvf redis-4.0.8....

2019-01-10 23:37:42 164

原创 在ubuntu上,Redis主从复制,Master-Slave部署

部署架构:Master(127.0.0.1:6379) →Slave1(127.0.0.1.6380)→Slave3(127.0.0.1:6383)                         →Slave2(127.0.0.1.6381)环境:System:ubuntuRedis:redis-4.0.8步骤:1.下载redis安装包,这里用的是redis-4.0....

2019-01-10 23:34:18 403

原创 mybatis源码-第二部分-工厂创建产品

一丶工厂获取产品  源码部分:  DefaultSqlSession 类@Override  public <T> T selectOne(String statement) {    return this.<T>selectOne(statement, null);  }@Override    public <T> T select...

2019-01-02 23:15:16 159

原创 mybatis源码-第一部分-工厂构造者创建工厂与工厂创建产品

 名字简记 > SqlSessionFactoryBuilder => 工厂构造者> SqlSessionFactory => 工厂> sqlsession => 产品> Mapper => 接口  一丶工厂构造者创建工厂  源码部分:  SqlSessionFactory build = new SqlSessio...

2019-01-02 23:11:59 244

原创 Git错误

1.fatal: Could not read from remote repository.的解决办法查看远端地址 git remote –v查看配置 git config --list查看 状态 git statusgit add . // 暂存所有的更改git checkout . // 丢弃所有的更改git status // 查看文件状态git commit ...

2019-01-02 22:54:55 235

原创 Git常用命令总结

1. git config --global user.name "Your Name"设置你的名称2.git config --blocal user.email "Your Email"设置你的邮箱3.git config --list获取你的相关设置信息列表4.mkdir demo基于当前目录创建一个子目录5.cd demo进入demo这个目录6.pw...

2019-01-02 22:54:14 523

原创 设计模式-工厂模式

工厂模式git demo地址:https://github.com/Gdk666/Design-Pattern-Demo/tree/master/src/Factory属于创建型设计模式,需要生成的对象叫做产品,生成对象的地方叫做工厂。使用场景: 在任何需要生成复杂对象的地方,都可以使用工厂方法模式。 直接用new可以完成的不需要用工厂模式。一丶简单(静态)工厂模式...

2019-01-02 00:26:48 119

原创 设计模式-策略模式与工厂模式的在项目中的结合使用

这个模式涉及到三个角色:● 环境(Context)角色:持有一个Strategy的引用。● 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。● 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。 工厂模式与策略模式的不同之处:1.工厂模式是创建型模式(关注对象的创建),策略模式...

2019-01-01 23:51:40 674

原创 Oracle-分析函数ROW_NUMBER() OVER() 使用总结

1.row_number() over()功能一:排序(无分组)row_number()over(order by column) 排序,列出序号over()里头的分组以及排序的执行晚于 where group by order by 的执行例如:Select t.id,row_number()over(order by t.id ) from DUP_MQD_YLFL t...

2019-01-01 23:45:48 339

10x程序员工作法笔记.xmind

10x程序员工作法笔记

2021-01-18

nacos-server-1.4.0.tar.gz

nacos1.4.0源码

2021-01-16

空空如也

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

TA关注的人

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