自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 Redis————主从架构

粗制一份redis.conf文件将相关配置修改为如下值:port 与主节点端口后不相同即可pidfile pid进程号保存文件pidfile的路径logfile 日志文件名称dir 指定数据存放目录#需要注释掉bind#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配置多个ip,代表客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)配置主从复制启动从节点redis-server 从节点配置文件连接从节点。

2023-07-01 17:22:40 1645

原创 Redis————Redis持久化

在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。我们可以对Redis进行设置,让它在“N秒内数据集至少有M个改动”这一条件被满足时,自动保存一次数据集。例如,我们想设置Redis在一分钟内至少有500个键被改动自动保存一次数据集时,可以如下设置:如果想要关闭RDB快照持久化,只需要将所有的save策略删除或注释掉即可。我们还可以手动执行命令生成RDB快照,进入redis客户端执行或。

2023-06-18 16:31:38 798

原创 Rides————五大数据结构

INCRBY orderId 1000 //redis批量生成序列号提升性能。INCR urlAddress:readCount:{网址url}spring session + redis实现session共享。GET urlAddress:readCount:{网址url}SET user:1 value(json格式数据)比如你关注了公众号1、公众号2等账号。集合操作实现关注模型。

2023-06-10 14:46:03 965

原创 Spring————底层核心原理解析

这样,但调用context.getBean(“userService”)时,就可以根据"userService"找到UserService类,从而就可以去创建对象了。

2023-06-03 15:01:51 619

原创 SpringCloud————客户端负载均衡

负载均衡:是在处理高并发、网络压力和进行服务器扩容的重要手段之一。它可以将请求按照一定的规则分配到不同的服务器。

2023-02-25 20:37:59 451

原创 SpringCloud————创建服务消费者

创建主启动类创建配置文件启动主启动类后,刷新eureka服务端界面,查看消费者是否已经注册成功。

2023-02-25 20:17:16 146

原创 SpringCloud————创建服务提供者

在上一篇中的eureka-demo父工程上创建eureka-client模块。

2023-02-25 12:52:47 109

原创 SpringCloud————Eureka概述及单机注册中心搭建

Spring Cloud Eureka是Netflix开发的注册发现组件,本身是一个基于REST的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力。

2023-02-25 12:37:54 451

原创 MySQL数据库————MVCC

现在有两个事务在操作table表,事务B修改了id=2的name字段为李老四,但是没有提交,事务A查询id=2的数据,得到name为李老四;事务B发生回滚,id=2的数据的name又变回李四,这时候事务A得到的name的值还是李老四,也就是说事务A读取到了别的事务未提交的数据,这就是脏读。

2023-02-21 22:36:49 714

原创 MySQL数据库调优————Percona Toolkit使用

DSN使用key=value的形式配置;多个DSN使用逗号分割。

2023-02-20 23:32:00 244

原创 MySQL数据库优化————Percona Toolkit安装

【代码】MySQL数据库优化————Percona Toolkit安装。

2023-02-20 12:40:12 314

原创 MySQL数据库调优————表结构设计优化

适当增加冗余,从而提升查询效率。

2023-02-19 23:09:37 413

原创 MySQL数据库调优————GROUP BY及DISTINCT优化

然后将person[i]的进行计算得到最小的salary,再计算person[i+1]的最小salary,但是索引是有序的,查询出来的语句已经是先按person排序,再按salary排序,也就是说每个person的第一个salary就是最小的,中间的扫描所有每个person的salary并计算最小值的过程是可以省略的直接取每个person的第一个salary即可,这就是松散索引扫描,无需扫描所有的满足条件的索引。一旦使用了临时表,在Extra中将会出现Using temporary。

2023-02-19 22:58:37 1045

原创 MySQL数据库调优————ORDER BY语句

这句SQL是用到了索引排序的,当执行查询时,查找出来的数据为[‘Bader’,last_name[i],emp_no],因为索引是有序的,'Bader’是确定的,那么数据已经按照last_name排好序了,就跳过了排序的环节。根据执行结果是使用了索引的,因为在执行查询语句时,查找出来的数据为[first_name,last_name,emp_no],这一部分数据已经是按照first_name排好序的,所以不需要再次进行排序了。因为索引中的两个字段,在进行排序中的升降序不一致,所以无法使用索引。

2023-02-19 21:52:34 574

原创 MySQL数据库优化————COUNT优化

直接进入主题。

2023-02-18 22:46:33 5632 1

原创 MySQL数据库调优————分页查询优化

MySQL分页查询语句当offset较小时,性能尚可,但当offset较大时,查询效率就有点儿拉跨了。

2023-02-18 21:25:12 351

原创 MySQL数据库调优————JOIN优化

在一次范围查询中,如果未使用主键索引,那么查询到的数据集在查找是可能会伴随大量的随机IO,因为我们的数据是按照主键索引进行排列的;我们知道,非主键索引存储的是主键而不是具体的数据,MRR会在查询到数据集后,根据主键进行一次排序,然后再根据排序后的主键顺序去查找数据,从而将随机IO转换为了顺序IO。MRR的核心就是:将随机IO转换成顺序IO,从而提升性能。

2023-02-17 22:14:47 1634

原创 MySQL数据库调优————索引调优技巧

当某张表需要给一个长字段创建索引时,因为索引长度越长,效率越差,所以我们需要对其进行优化。

2023-02-17 19:29:24 706

原创 MySQL数据库调优————创建索引的原则和索引失效及解决方案

从expain执行结果可以看到并未用到索引,解决方案,事先在代码中计算好表达式的值,再传入SQL中,应该避免在SQL语句的where条件子句等号左侧做计算。这种情况不做演示,解决方案很简单,在建表时把索引字段设置为NOT NULL,根据官方建议,甚至可以把所有的字段都设置成NOT NULL并为字段赋默认值。当联表查询时,如果作为联接条件的两个字段的类型不一致,则会进行隐式转换,也会导致索引失效,所以在创建表时要进行充分的考虑,使两个字段的类型保持一致。解决方案,分别为条件中的字段创建索引。

2023-02-16 21:46:51 980

原创 MySQL数据库调优————索引数据结构

比如我们要查找上述B-tree中的索引值为26的数据。那么首先在跟根节点中的关键字依次比较,发现15

2023-02-16 12:44:09 372

原创 MySQL数据库调优————索引类型

唯一索引就是在普通索引的基础上增加了数据唯一性的约束,索引列的值必须唯一,允许有NULL值。如果一个唯一索引同时还是个组合索引,那么表示列值的组合必须唯一。在一张数据表里可以有多个唯一索引。聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点不存储数据,而是指向对应数据块的指针。主键索引是一种特殊的唯一索引,不允许有NULL值,并且一张表最多只有一个主键索引。InnoDB的主键索引使用的就是聚簇索引,而MyISAM使用了非聚簇索引。普通索引时基础的索引,没有任何约束,主要用于提高查询效率。

2023-02-15 23:22:02 116

原创 MySQL数据库调优————OPTIMIZER_TRACE详解

OPTIMIZER_TRACE

2023-02-14 22:47:24 1645

原创 MySQL数据库调优————SQL性能分析

SQL性能分析

2023-02-14 13:39:01 695

原创 MySQL数据库调优————EXPLAIN详解

EXPLAIN

2023-02-13 21:16:59 358

原创 MySQL数据库调优————慢查询日志的开启与分析

慢查询日志开启与分析

2023-02-13 13:50:54 350

原创 MySQL数据库调优————数据库调优维度及测试数据准备

sql调优

2023-02-12 22:19:52 697

原创 二、工厂模式和抽象工厂模式

工厂模式工厂模式(Factory Pattern)是Java中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:接口选择问题。应用实例:1.客户需要购买一辆汽车,只需要到相应的4S店购买即可,而不用去管这辆汽车是怎样生产出来的;2.H

2021-09-07 19:31:39 162

原创 一、设计模式概述

设计模式简介设计模式(Design pattern)并非是什么高深的技术,设计模式是软件开发中的最佳的时间,通常被有经验的开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的通用解决方案。这些解决方案是众多软件开发人员经过相当长的时间的实验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使工程化代码更容易维护,设计模式是软件工程的基石

2021-09-04 13:38:11 160 1

原创 ForkJoinPool核心数据结构和参数

ForkJoinPool类图ForkJoinWorkerThreadFactoryForkJoinWorkerThreadFactory是ForkJoinPool的内部接口,用于创建工作线程ForkJoinWorkerThread对象。 public static interface ForkJoinWorkerThreadFactory { /** * Returns a new worker thread operating in the given po

2020-12-02 11:22:33 1470

原创 ForkJoinPool线程池描述

概述ForkJoinPool是JDK1.7加入的一个线程池类。Fork/Join技术是分治算法(Divide-and-Conquer)的并行实现,它是一项可以获得良好的并行性能的简单且高效的设计技术。目的是为了帮助我们更好的利用多处理器带来的好处,使用所有可用的运算能力来提升应用的性能。我们常用的数组工具类Arrays在JDK1.8之后添加的函数方式(如forEach等)也有运用。在整个JUC框架中,ForkJoinPool相对其他的类要复杂的多。在java.util.concurrent包中,Fork

2020-11-20 17:34:02 470

原创 线程池源码解析——submit方法源码解析

类图submit方法 /** * Runnable作为参数 */ public Future<?> submit(Runnable task) { if (task == null) throw new NullPointerException(); RunnableFuture<Void> ftask = newTaskFor(task, null); execute(ftask); return

2020-11-17 23:17:30 791 2

原创 线程池源码解析——execute方法源码解析

execute源码 /** * 执行任务的方法 */ public void execute(Runnable command) { //如果command为空,将抛出NullPointerException if (command == null) throw new NullPointerException(); /* * 处理过程分为以下三个部分: * * 1. 如

2020-11-16 22:27:13 554

原创 线程池源码解析——线程池状态

线程池状态RUNNING:接收新的任务,执行阻塞队列中的任务。SHUTDOWN:不接受新任务,但是仍然可以处理阻塞队列中的任务。STOP:不接受新任务,不处理阻塞队列中的任务,中断正在处理的任务。TIDYING:所有任务终止,workerCount(工作线程数)等于0,进入TIDYING状态将会执行terminated()方法。TERMINATED:terminated()方法执行完成后进入TERMINATED状态。线程池状态转换如下:各运行状态的表示方式: // runStat

2020-11-16 17:05:40 143

原创 线程池源码解析——原理概述

corePoolSize核心线程线程池的基本大小,即在没有任务需要执行的时候线程的大小,并且只有在工作队列满了的情况下才会创建出超出这个数量的线程。核心线程是否会被回收?核心线程将一直保存在线程池中。哪怕核心线程是处于空闲状态,也可以不回收。allowCoreThreadTimeOut参数可以控制是否回收核心线程。在刚刚创建线程池的时候,核心线程并不会立刻启动,而是要等到有任务提交时才会启动。prestartCoreThread/prestartAllCoreThread方法可以事先启动核心

2020-11-16 15:16:30 143

原创 线程池源码解析——工作线程

ThreadPoolExecutor类图Worker类的声明private final class Worker extends AbstractQueuedSynchronizer implements Runnable线程池中的工作线程是通过内部类Worker表示的。Worker继承自AbstractQueueSynchronizer,可以实现同步器的功能;同是实现了Runable接口,因此Worker是可以当做线程使用的。Worker源码分析 pri

2020-11-16 11:06:30 153

原创 原子类(二)——ABA问题

什么是CASCAS:Compare and Swap,即比较再交换。CAS是一种无锁算法,CAS有三个操作数:内存值V旧的预期值A要修改的新值B当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。ABA问题的产生在CAS算法中,需要取出内存中某时刻的数据,在下一刻比较并替换。这个时间差中,会导致数据的变化。假如以下事件顺序:线程A:从内存位置V中取出status=A;线程B:从内存位置V中取出status=A;线程A:进行一些操作,将改为status=B;线

2020-11-13 16:39:11 662 1

原创 原子类(一)——AtomicInteger

原子操作原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。原子类在Java中提供了很多原子类,主要把这些原子类分成以下几大类原子更新基本类型或引用类型AtomicBoolean原子更新布尔类型,内部使用int类型的value存储1和0表示true和false,底层也是对int类型的原子操

2020-11-12 23:21:29 1275

原创 Unsafe

概述Java和C++的一个重要区别就是Java中我们无法直接操纵一块内存区域,不能像C++中那样我们可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名为sun.misc.Unsafe,从名字就能看出来这个类对普通程序员来说是“危险的”,一般应用开发者不会用到这个类。Unsafe构造器Unsafe类是“final”的,不允许继承。且构造函数是private的。因此我们无法在外部对Unsafe进行实例化。public final c

2020-11-12 22:14:47 152

原创 JDK1.8 ConcurrentHashMap源码解析

哈希桶数组/** * The array of bins. Lazily initialized upon first insertion. * Size is always a power of two. Accessed directly by iterators. */ transient volatile Node<K,V>[] table;内部类NodeNode是ConcurrentHashMap存储结构的基本单元,继承于HashMap中

2020-11-12 16:36:40 225 1

原创 JDK1.7 ConcurrentHashMap源码解析

概述HashMap是非线程安全的,而HashTable是线程安全的,但是HashTable实现同步的方法比较暴力,即在所有的方法体上添加synchronized关键字,相当于所有读写线程均去读取一把锁,从并发角度,HashTable其实无法满足较高的并发度。另一种同步Map的方法是使用Collections工具类。 public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { return

2020-11-11 20:14:16 655 1

空空如也

空空如也

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

TA关注的人

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