自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

憧憬的专栏

Stay hungry, Stay foolish.

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

转载 CAP原则

什么是CAP原则分布式系统只能同时满足CAP中两者的原则.C.一致性分布式系统中的所有数据备份,保持一致.A.可用性集群整体总是能在合理时间内给客户端回应P.分区容错性网络无法通信时,是否可以容忍恢复通信的时限,提供可用或者一致性的服务参考:https://www.ixigua.com/6850363333741117963?wid_try=1...

2021-04-04 22:53:22 141

原创 索引使用经验

文章目录单表多表关联子查询优化order by&group by单表全值匹配我最爱,where后面有几列建复合索引。最佳左前缀法则,如果索引了多列,要遵守最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中间的列。不在索引列上做任何操作(计算、函数、(自动或手动)类型转换),会导致索引失效。where abs(a) = 12;存储引擎不能使用索引中范围条件右边的列,范围查询列放最后建索引。mysql 在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描。i

2021-04-04 20:32:30 108

转载 连接和会话

连接,connection,可以说是客户端进程和数据库实例之间的一条物理路径,例如网络连接、IPC,这个连接可能连接到一个专用服务器进程(dedicated server),或者是一个调度器进程(shared server)。会话,session,是数据库中的一个逻辑实体,客户端进程可以通过他在数据库中执行SQL等操作,你所看到的会话状态信息,代表了你的会话在实例内存中的数据结构的集合,会话是在数据库上执行SQL、提交事务和运行存储过程的地方。ORACLE中一个用户登录ORACLE服务器的前提,就是该用

2021-04-04 20:26:23 613

转载 LinkedHashMap底层原理

文章目录前言正文LinkedHashMap的特点LinkedHashMap的基本结构LinkedHashMap的初始化LinkedHashMap保存元素LinkedHashMap保存元素利用LinkedHashMap实现LRU算法缓存总结前言在集合中,除了常用的HashMap,还有今天我们要说的LinkedHashMap.为什么会有LinkedHashMap这个集合呢?因为我们在迭代HashMap的时候是无序的,我们希望有一个有序的map来方便我们的使用,这个时候就有了LinkedHashMap.正文

2021-03-27 16:34:34 1465

转载 stream对list集合中的bigdecimal进行分组求和,均值,最大值,最小值

Java8原生只提供了summingInt、summingLong、summingDouble三种基础类型的方法,想要对BigDecimal类型的数据操作需要自己新建工具类如下:新建接口ToBigDecimalFunction@FunctionalInterfacepublic interface ToBigDecimalFunction<T> { BigDecimal applyAsBigDecimal(T value);}新建工具类CollectorsUtilpubli

2021-03-27 16:07:47 7743

转载 从ConcurrentHashMap的演进看Java多线程核心技术

文章目录线程不安全的HashMapHashMap工作原理HashMap数据结构HashMap寻址方式resize死循环transfer方法单线程rehash多线程并发下的rehashFast-fail产生原因线程安全解决方案Java 7基于分段锁的ConcurrentHashMap数据结构寻址方式同步方式size操作不同之处Java 8基于CAS的ConcurrentHashMap数据结构寻址方式同步方式size操作本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线

2021-03-26 22:14:41 122

转载 MySQL 索引结构

文章目录从一个简单的表开始页的引入排序对性能的影响基于单页模式存储的查询流程上述页模式可能带来的问题页目录的引入页的扩展多页模式多页模式对于查询效率的影响如何优化多页模式B+树的引入B+树的优势页的完整结构基于B+树聊聊MySQL的其它知识点聚簇索引和非聚簇索引联合索引的最左前缀匹配原则为什么InnoDB只有一个聚簇索引,而不将所有索引都使用聚簇索引?补充两个关于索引的点结语从一个简单的表开始create table user( id int primary key, age int,

2021-03-22 21:07:27 230

原创 MySQL四舍五入

文章目录一、MySQL四舍五入函数ROUND(x)二、MySQL四舍五入函数ROUND(x,y)三、MySQL四舍五入函数TRUNCATE(x,y)一、MySQL四舍五入函数ROUND(x)ROUND(x)函数返回最接近于参数x的整数,对x值进行四舍五入。实例:使用ROUND(x)函数对操作数进行四舍五入操作。SQL语句如下:mysql>SELECT ROUND(-2.34),ROUND(-4.56),ROUND(2.34),ROUND(4.56)进行四舍五入处理以后,只保留了各个值的整数

2021-01-03 12:09:18 25383 1

原创 decimal精度

select cast(322.3 as decimal(5, 2)) as num ; //322.30select cast(322.3 as decimal(4, 2)) as num ; //99.99 超出精度(精度是4位),右边固定先取2个,剩余2位不够了。decimal(18,0) 18是定点精度,0是小数位数。decimal(a,b) a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到

2021-01-03 12:04:14 3853

转载 Mybatis 缓存Cache

一、什么是缓存(Cache)Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。在Java中简单的理解缓存就是实现数据的拷贝,提高系统性能,减少数据库压力。二、为什么要用缓存(Cache)因为如果使用了缓存,在缓存中有需要的数据,就不用从数据库中获取转而从缓存中获取,这样就大大提高了系统性能。三、一级缓存Mybatis的一级缓存不需要任何配置,在每一个 SqlSession 当中都有一个一级缓存区,作用范围是 SqlSession 。(一)原理Myb

2020-11-15 22:45:57 1128

转载 Java 之 Serializable 序列化和反序列化

文章目录1. 序列化和反序列化的概念2.什么情况下需要序列化3.如何实现序列化第一种:transient不序列化第二种:静态属性不能被序列化第三种:serialVersionUID 的作用和用法serialVersionUID 的值怎么设置jdk api 文档里关于接口 Serializable 的描述关于 serialVersionUID 的描述遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题a,什么叫序列化和反序列化b,作用。为啥要实现这个 Serializab

2020-08-04 11:03:58 430

转载 JDBC

概述java database connectivity ,java 和数据库的连接技术,sun公司推出的一套java应用程序访问数据库的技术规范。规范:抽象类或者接口在java中,数据库存取技术可以分为如下几类JDBC直接访问数据库JDO技术(Java Data Object)第三方O/R工具,如Hibernate,Mybatis等JDBC是java访问数据库的基石,JDO,Hi...

2020-04-12 17:30:18 122

转载 mysql中delete和truncate区别

文章目录一、灵活性二、效率三、事务四、触发器一、灵活性delete可以条件删除数据,而truncate只能删除表的所有数据;delete from table_test where ... truncate table table_test 二、效率delete效率低于truncate,delete是一行一行地删除,truncate会重建表结构,三、事务truncate是DDL...

2020-04-12 12:46:12 1863

原创 查询截取分析

文章目录查询慢查询是否开启 地址开启慢查询日志慢查询时间 10s不加global 当前窗口有效查看进程关闭进程查询慢查询是否开启 地址show variables like ‘%slow_query_log%’;开启慢查询日志set global slow_query_log = 1;慢查询时间 10sshow variables like ‘%long_query_time%’;...

2020-04-11 18:15:22 119

转载 STRAIGHT_JOIN

TRAIGHT_JOIN,在数据量大的联表查询中灵活运用的话,能大大缩短查询时间。首先来解释下STRAIGHT_JOIN到底是用做什么的:STRAIGHT_JOIN is similar to JOIN, except that the left table is always read before the right table. This can be used for those (...

2020-04-11 17:08:32 8707 5

转载 Mysql优化_ORDER BY和GROUP BY (单路排序和双路排序)

文章目录什么是双路排序和单路排序?什么情况下会导致单路排序失效呢?提高ORDER BY速度的技巧为排序使用索引GROUP BY的优化ORDER BY 子句尽量使用Index方式排序,避免使用FileSort方式排序,尽可能在索引列上外城排序操作,遵照索引键的最佳左前缀。如果不在索引列上,FileSort有两种算法,Mysql就要启动双路排序和单路排序。什么是双路排序和单路排序?双路排序:My...

2020-04-11 16:20:32 922

原创 第3章 如何构建金字塔

文章目录要点自上而下法适用场景构建步骤自下而上法适用场景总结初学者注意事项要点主要介绍构建2种构建金字塔方法:自上而下法和自下而上法的适用场景、构建步骤以及对初学者的几条注意事项。自上而下法适用场景适用于在作者已确定文章的主题和已确定读者对该主题的了解情况的场景构建步骤第1步:画出主题方框方框是你文章金字塔结构最顶部的方框。在方框中填入要讨论的主题。主题一般为一个包含主语和谓语...

2019-09-15 11:14:19 1012

原创 第2章 金字塔内部的结构

1.中心思想:梳理要表达的思想,需要了解金字塔的内部结构——“大多是人刚坐下写作时,可能对自己想表达的思想还只有模糊的想法,甚至不知道从哪里下笔。在不得不用词汇或句子将思想呈现出来之前,你很可能难以准确地把握自己的思想;因此不要幻想一坐下来就开始将思想组成金字塔,必须要梳理你想要表达的思想”2.金字塔的内部结构纵向-主题与子主题之间的纵向关系;横向-各子主题之间的横向关系;序言-序言的...

2019-09-15 10:53:21 1379

转载 漫谈分布式一致性问题2PC 3PC

文章目录一.序言二.分布式一致性问题一.序言见过很多同学(也包括我)在学习分布式一致性的时候,喜欢直接去撸Paxos和raft这种强一致协议。然后往往会有下面这些结果:1.看不懂2.(以为)看懂了,过两天忘了3.看懂了,理解了,但是不知道怎么用起来4.看懂了,用起来了,还是出现了不一致的情况(典型的比如用ZK做master选举,脑裂了),迷茫了到底什么是分布式一致性问题?二.分布式...

2019-09-15 10:37:47 207

原创 第一章-为什么要用金字塔结构

金字塔的应用场景项目需求复杂(多个)项目纬度1.复杂项目拆分子项目过程2.多个项目优先级排序过程单个项目维度1.结果指标和过程指标间的对应关系2.设计目标和设计手段额对应关系工作汇报周会月报项目总结大脑会将具有共性的任何事物组织在一起大脑的短期记忆无法一次容纳约7个以上的记忆项目。当大脑发现需要处理的项目超过4/5个的时候,就会开始归类行为。找出项目之间的逻辑关系,...

2019-09-14 18:30:55 721

原创 富兰克林的十三个习惯

1.节制:食不过饱,饮不过量,不因为饮酒而误事。2.缄默:讲话要利人利己,避免浪费时间的琐碎闲读。3.秩序:把所有的日常用品都整理得井井有条,把每天需要做的事排出时间表,办公桌上永远都不零乱。4.决断:决心履行你要做的事,必须准确无误地履行你所下定的决心,无论什么事情都不要改变初衷。5.节约:除非是对别人或是对自己有什么特殊的好处,否则不要乱花钱,不要养成浪费的习惯。6.勤奋:不要荒废时...

2019-09-14 18:12:48 2372

转载 Kafka为啥快

文章目录生产者(写入数据)顺序写入Memory Mapped Files(mmap)消费者(读取数据)Kafka是如何耍赖的总结生产者(写入数据)生产者(producer)是负责向Kafka提交数据的,我们先分析这一部分。Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafka采用了两个技术,顺序写入和MMFile。顺序写入因为硬盘是机械结构,每次读写都会寻...

2019-07-20 18:09:31 441

转载 tomcat的连接数与线程池

文章目录前言一、Nio、Bio、APR1、Connector的protocol2、如何指定protocol3、BIO/NIO有何不同二、3个参数:acceptCount、maxConnections、maxThreads1、acceptCount2、maxConnections3、maxThreads4、参数设置三、线程池Executor四、查看当前状态1、连接数2、线程前言在使用tomcat...

2019-07-14 11:48:49 187

转载 索引下推(5.6版本+)

索引下推有了索引下推优化,可以在有like条件查询的情况下,减少回表次数。对于user_table表,我们现在有(username,age)联合索引如果现在有一个需求,查出名称中以“张”开头且年龄小于等于10的用户信息,语句如下:select * from user_table where username like '张%' and age > 10语句有两种执行可能:根据...

2019-07-13 22:27:28 11265 5

转载 CMS垃圾回收机制

文章目录什么是CMS使用场景缺点实现机制周期性Old GC触发条件晋升担保失败周期性Old GC过程1. InitialMarking(初始化标记,整个过程STW)2. Marking(并发标记)3. Precleaning(预清理)4. AbortablePreclean(可中断的预清理)5. FinalMarking(并发重新标记,STW过程)主动Old GC什么是CMSCMS全称 Con...

2019-07-08 22:24:32 689

转载 Redis Hash数据结构的底层实现

文章目录前言1.hash数据结构2.hash数据结构图3.渐进式hash说明4.创建hash表5.添加元素6.查找元素7.删除元素hash命令前言redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数据结构和实现.1.hash数据结构/*Hash表一个节点...

2019-06-23 21:44:58 21842

原创 《Spring AOP面向切面编程》(下)

文章目录3.Spring AOP的实现原理3.2 链式调用#3.2.1 职责链模式3.2.1.1 V13.2.1.2 V23.2.2 Spring内部实现1)拦截器链是如何生成的2)拦截器链是如何链式调用的3)Spring使用职责链模式实现拦截器链链式调用3.Spring AOP的实现原理3.2 链式调用多个AOP 切面是如何叠加起作用的?public class Proxy implem...

2019-06-23 21:26:55 210

原创 Java-JDK动态代理实现原理

文章目录JDK动态代理使用实例JDK动态代理实现原理分析Proxy.newProxyInstance()getProxyClass0()ProxyClassFactory.apply()ProxyGenerator.generateProxyClass()生成的代理对象的.class文件JDK动态代理使用实例代理模式的类图如上。关于静态代理的示例网上有很多,在这里就不讲了。因为本篇讲述要点...

2019-06-23 21:16:16 405

原创 《Spring AOP面向切面编程》(上)

文章目录1.AOP概览2.Spring AOP的使用举例PointCut切入点Advice通知3.Spring AOP的实现原理3.1运行时织入3.1.1代理模式3.1.2 JDK动态代理3.1.3 cglib动态代理3.1.4 Spring如何创建代理beanProxyFactoryBean的getObject()方法getSingletonInstance()方法createAopProxy(...

2019-06-23 11:56:05 159

转载 java Collections.sort排序原理

事实上Collections.sort方法底层就是调用的Arrays.sort方法,而Arrays.sort使用了两种排序方法,快速排序和优化的归并排序。快速排序主要是对那些基本类型数据(int,short,long等)排序, 而归并排序用于对Object类型进行排序。使用不同类型的排序算法主要是由于快速排序是不稳定的,而归并排序是稳定的。这里的稳定是指比较相等的数据在排序之后仍然按照排序之前...

2019-06-23 11:31:27 18126

转载 ssl 原理和建立连接过程

ssl 与http关系ssl (“Secure Sockets Layer”)加密原理 和https的关系https = http + sslssl 位置:SSL握手证书主要作用是在SSL握手中,我们来看一下SSL的握手过程客户端提交https请求服务器响应客户,并把证书公钥发给客户端客户端验证证书公钥的有效性有效后,会生成一个会话密钥用证书公钥加密这个会话密钥后,发送给服...

2019-06-09 22:03:18 2246 1

转载 TCP连接、Http连接与Socket连接的区别

文章目录HTTP、Socket、TCP的区别Socket(套接字)Socket长连接什么时候用长连接,短连接TCP连接和HTTP连接的区别TCP连接与Socket连接的区别HTTP连接与Socket连接的区别常见问题什么时候该用HTTP,什么时候该用socket ?浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?一个TCP 连接可以发多少个 HT...

2019-06-08 17:45:32 13712 11

转载 volatile和synchronized的区别

文章目录一、volatile二、synchronized三、区别一、volatile它所修饰的变量不保留拷贝,直接访问主内存中的。在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,...

2019-06-08 15:39:18 9157

转载 web接口安全性设计

接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看Token授权机制用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。Token是客户端访问服务端的凭证。登...

2019-06-02 22:47:10 1047

原创 redis大Key多Key分拆方案

文章目录背景单个简单的key存储的value很大该对象需要每次都整存整取该对象每次只需要存取部分数据hash、 set、zset、list 中存储过多的元素一个集群存储了上亿的keykey 本身就有很强的相关性key 本身没有相关性背景业务场景中经常会有各种大key多key的情况, 比如:1: 单个简单的key存储的value很大2: hash, set,zset,list 中存储过多的元...

2019-06-02 22:12:37 7166

转载 JVM调优

堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3550m -X...

2019-06-02 18:29:51 98

转载 Thread中start()和run()的区别

文章目录多线程原理start()run()start() 和 run()的区别说明start() 和 run()的区别示例多线程原理相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。调用start()后,线程会被放到等待队列,等待CPU调度,并...

2019-05-26 22:27:42 2392

转载 5种IO模型

文章目录概念5种IO模型1. A Story2. 5种IO模型1. 阻塞IO2.非阻塞IO3. IO复用/多路转接IO4. 信号驱动IO5. 异步IO3. 区别与联系为什么epoll,kqueue比select高级?概念IO叫做输入输出,我们可以将IO理解为两步:等待IO事件就绪数据就绪后进行真正意义上的IO(真正的数据搬迁)所以,IO的过程一是等,然后才是输入输出。进而,我们可以...

2019-05-18 22:29:37 205

转载 分布式锁的几种使用方式(redis、zookeeper、数据库)

问题Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费synchronizedlockdb lockQ:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费分布式锁我们需要怎么样的分布式锁?可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。这把锁要是一把可重入锁(避免死锁)这把锁...

2019-04-06 16:23:01 467

转载 99线、999线TP99、TP999

接口性能的参数常说的999 线就是TP999概念TP=Top Percentile,Top百分数,是一个统计学里的术语,与平均数、中位数都是一类。TP50、TP90和TP99等指标常用于系统性能监控场景,指高于50%、90%、99%等百分线的情况。例子有四次请求耗时分别为:10ms,1000ms,100ms,2ms那么我们可以这样计算TP99:4次请求中,99%的请求数为4*0.99...

2019-03-24 18:20:26 12592 1

空空如也

空空如也

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

TA关注的人

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