自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 《18讲为什么这些SQL语句逻辑相同,性能却差异巨大》-读书笔记

该篇讲的主要是索引失效的情况。1.对索引使用函数,会导致走全表搜索。因为使用函数后,索引变得无序,优化器选择不执行索引。2.当对字符串类型的字段进行int类型的where查询时,因为mysql对这种情况,都是对字符串类型的字段进行转换,所以select * from tradelog where tradeid=110717;相当于:select * from tradelog...

2020-03-17 22:02:31 188

原创 《第12讲为什么我的MySQL会“抖”一下》读书笔记

在我们执行sql的时候偶尔会抖一下的原因:数据库对脏页进行了flush操作。脏页:当内存数据页跟磁盘数据页不一样的时候,就叫脏页。干净页:当内存数据页跟磁盘数据一样的时候,叫干净页。mysql flush四种场景:1.当redo log的内存片(粉版)已经记录满,这个时候会停止所有的更新操作,对checkpoint往前推,推进的日志对应的所有脏页将flush进磁盘。2.当内存用...

2020-03-16 22:42:48 232 1

原创 谷歌浏览器常用快捷键

标签页和窗口快捷键操作 快捷键 打开新窗口 Ctrl + n 在无痕模式下打开新窗口 Ctrl + Shift + n 打开新的标签页,并跳转到该标签页 Ctrl + t 按标签页的关闭顺序重新打开先前关闭的标签页 Ctrl + Shift + t 跳转到下一个打开的标签页 Ctrl + Tab或 Ctrl + PgDn 跳转...

2020-03-10 12:04:40 1149

原创 《第11讲怎么给字符串字段加索引》 读书笔记

字符串字段索引问题字符串占空间比较大,如果用全匹配的索引,会导致一页索引数量比较少,可能出现频繁读取磁盘表的问题。前缀索引脚本:alter table SUser add index index2(email(6));优势:节约空间,合理的前缀,可以增加辨识度,减少回表的行数。缺点:由于引擎不知道前缀索引是否有截断字段值,所以就算是前缀索引长度大于字段值,也会进行回表操作,从而...

2020-03-08 23:18:34 198

原创 《第九讲 普通索引和唯一索引选择》 读书笔记

查询唯一索引:因为做了唯一约束,查询到值以后会直接返回。普通索引:匹配到第一个节点后,会继续向后匹配。性能来说,差不多更新唯一索引:需要做唯一校验,所以会读取索引校验,导致不能使用changebuff。普通索引:更新的时候先将记录写到changebuff,而不进行磁盘更新,这样性能更好。changebuff更新操作的时候,直接将记录写在changebuff内存里,而...

2020-03-08 19:32:09 237

原创 《第七讲 行锁功过》读书笔记

行锁各个搜索引擎有自己的行锁实现方式。MyIsam没有实现行锁,这个是被innodb取代在原因之一。innodb实现行锁基于索引,如果没有使用索引,innodb将锁住整个表。两段锁协议:innodb不会在事务一开始就加行锁,而是在执行到对应的脚本时,才进行加行锁,并且在事务提交后才释放锁。死锁与检测由于资源的独占和循环等待释放,而进入无限等待的阶段。解决:方案1:设置i...

2020-03-07 17:11:28 166

原创 《第六讲 全局锁和表锁》读书笔记

mysql分 全局锁,表锁,行锁。全局锁全局锁对整个数据库加锁。命令是 Flush tables with read lock (FTWRL)。当使用全局锁的时候,更新语句(增删改),表结构修改,表新增,更新类事务提交。也就是全库只读。应用场景:全库逻辑备份。表锁表锁分两个级别:一种是表锁语法 luck tables ...write/read。另一种是MDL(meta...

2020-03-06 17:52:43 145

原创 《第五讲 深入浅出索引下》-读书笔记

索引覆盖因为我们的二级索引搜索后会有回表操作,建立联合索引,覆盖我们需要获取的字段,减少回表操作,这个过程就叫索引覆盖。覆盖索引能大大增加我们的查询性能。最左前缀原则建立联合索引(a,b),当只对a查询时,仍可以用上该索引,当只使用b的时候,不可用该索引。设计索引的原则:第一原则:按照使用频率,频率比较高的放前面。第二原则:按照占用空间大小,占用空间大的放前面,节约空,避免...

2020-03-06 16:17:56 155

原创 《第四讲 深入浅出索引上》-读书笔记

索引类型哈希表,有序表,搜索树哈希表:mongodb,redis有序表:有序数组索引只适用于静态存储引擎搜索树:innodb

2020-03-05 14:34:36 175

原创 《第三讲 讲事务隔离:为什么你改了我还看不见》- 读书笔记

ACID事务的4个特性:ACID,分别是:A: Atommicity 原子性C:Consistency 一致性I:Isonlation 隔离性D:Durability 持久性Mysql数据库隔离级别事务的隔离性就是事务的隔离级别,Mysql数据库隔离级别划分为4个级别:read uncommited(读未提交):一个事务还没提交的时候,他的修改能被其他事务看见。...

2020-02-29 22:18:50 230

原创 《第二讲 一条更新sql是如何执行的》-读书笔记

一条更新语句的执行跟查询执行的流程是一样的,也是如下图:不一样的地方,会写两个日志,两段式提交:redo log:在innodb写,通过creach-safe模式写。bin log:在service写,任何引擎都可以用,mysql公共执行日志,记录每一条语句执行。redo logredolog日志在内存中是固定大小的,一个组redo写版是一个1g,可以配置多组写版。redo...

2020-02-28 18:36:30 164

原创 《第一讲 一条查询sql是如何执行的》-读书笔记

Myqsl的结构如下:连接器:负责进行鉴权,当进行数据库连接时,会进入连接器进行鉴权。

2020-02-28 15:26:08 873

原创 时间戳在线转换工具

一个基于vue开发的时间戳在线转换工具,十分好用,地址:http://onlineutils.biggirlo.xyz/#/timestamp

2020-01-14 10:21:14 1048 1

原创 解决linux下生成pdf无中文与下划线问题

项目有个需求,需要通过将docx模板替换文字后生成pdf,但是在linux下生成的pdf无法显示中文和下划线。经过排查,是linux不支持中文字体的问题,所以生成的pdf没有中文。找到原因就很好处理问题了。找到需要的字体问题window下打开C:\Windows\Fonts ,找到我们需要的字体文件,我这里需要的是微软雅黑安装字体库sudo yum -y instal...

2019-11-27 18:31:20 1310

原创 Java新特性之函数式编程工具栏集合(长期更新)

1.Predicate@FunctionalInterfacepublic interface Predicate<T> { /** 断言 */ boolean test(T t); //and方法与关系型运算符"&&"相似,两边都成立才返回true default Predicate<T> and(Predic...

2019-11-26 23:08:49 211

原创 TCP 三次握手 四次挥手 以及数据传输过程

三次握手client 发送SYN包给service端,服务器端收到SYN包后,回复SYN/ACK包给客户端,客户端收到SYN/ACK后回复ACK包。经过三次数据包发送后建立连接,该过程称为三次握手。数据传输在建立可靠的TCP连接后,http协议开始工作。客户端按照http规定的协议,发送请求到服务端,服务端收到请求后回复ACK包,客户端此时知道了服务端收到请求。随后服务端进行解析请求数...

2019-10-08 22:36:48 430

原创 TCP/IP总结

网络分层:第一层 链路层:负责底层网络,比如wifi,以太网这样底层网络发发送原始数据。工作在网卡这个层级,使用mac地址来标记设备。所以也叫mac层第二层 网际层 ip协议在这个层级。因为ip协议定义了“ip地址概念”,所以可以用ip代替mac地址,第三层 传输层 该层保证在ip标记的两点之间进行数据传输,该层是tcp协议工作的层级,UDP也是在该层的另外一个协议。第四层 应用层...

2019-10-03 21:27:18 163

原创 liunx centos7 下安装ImageMagick 并支持heic

1.先安装十全大补包yum install tcl-devel.x86_64 libpng-devel.x86_64 libjpeg-devel.x86_64 ghostscript-devel.x86_64 bzip2-devel.x86_64 freetype-devel.x86_64 libtiff-devel.x86_64yum install libjpeg-devel.x86_6...

2019-09-24 14:47:30 4510 5

原创 mongodb究竟有没有必要垂直分表(垂直分集合)

最近跟同事在讨论mongodb有没有垂直分表(垂直分集合)的必要,同事的观点:Mongodb垂直分表对性能提升不大,我的观点是垂直分表对性能提升比较大。话不多说,实践出真理。 首先分别建立两个集合 testData,添加5个字段,testDataPlus。添加20个字段。testData集合结构如下:testDataPlus集合的结构如下:分别插入100w条数据。...

2019-08-21 19:03:48 3151

原创 解决mysql中文保存问题

show variables like 'character%';查看mysql当前编码:可以看出database和server的字符集使用的是latin1,latin1是不支持中文的,导致存放中文错误。处理方法:设置server和database为utf8类型使用以下命令来设置在命令行输入:show variables like '%char%';set...

2019-08-04 01:31:39 959

原创 三种创建线程的方式

1.继承Thread继承thread。示例:public class MyThread extends Thread { @Override public void run(){ System.out.println("继承线程启动"); } public static void main(String[] args){ ...

2019-05-02 18:03:39 123

原创 多线程学习 线程池TheadPoolExecutor的使用

创建一个线程池ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecu...

2019-04-28 22:54:53 257

原创 CountDownLatch 与CyclicBarrier

CountDownLatchjdk并发包的计数器,实现计数同步。当使用线程池时,因为线程不会被销毁,所以使用join无法来阻塞线程。// 创建 2 个线程的线程池Executor executor = Executors.newFixedThreadPool(2);while(存在未对账订单){ // 计数器初始化为 2 CountDownLatch latch =...

2019-04-27 20:32:22 108

原创 多线程学习五 比读写锁更快的锁-StampedLock

StampedLock 支持三种模式:写锁,悲观读,乐观读StampedLock 比ReadWriteLock性能好的原因是支持乐观读。readwritelock支持多线程读,但是进行写的时候,所有读都被阻塞。而stampedlock支持写的时候也进行读,因为乐观读是无锁的。当线程阻塞在stampedlock的readlock或者writelock时,此时调用阻塞线程的interrup...

2019-04-27 13:50:14 370

原创 多线程学习四 读写锁 ReadWritelock

什么是读写锁1.允许多个变量同时访问共享变量2.只允许一个线程写变量3.如果一个线程正在执行写操作,那么该变量不可以读与互斥锁区别读写锁只有在写的时候互斥,性能比互斥锁好。...

2019-04-27 11:51:57 198

原创 多线程学习三 notify 与 notifyAll

之前一直跟架构师去面试别人,他总希望问一个问题:notify 与notifiall的区别,听了很多人的答案,其实都差不多,但是他总感觉不满意,现在自己也总结了一下:notify()唤醒一条线程notifyAll()唤醒全部线程notify随机唤醒一条等待队列里的线程,而notifyall是唤醒全部,让全部等待线程进行竞争资源。如果使用notify,可能某些线程会一直没有被唤醒。除非...

2019-04-15 00:15:35 192

原创 多线程学习二 解决可见性和有序性

导致Java多线程可见性问题的原因是因为缓存问题,而导致有序性问题的原因是编译优化,直观的解决问题就是禁用缓存和禁用编译优化(选择性)具体方法:volatile,synchronized 和 final 三个关键字,以及六项Happens-Before 规则Happens-Before:1.程序的顺序性规则程序对前面变量的需求一定对后面可见2.volatile规则对一个...

2019-04-11 01:06:40 187

原创 多线程学习一 可见性、原子性和有序性

可见性在单核时代,所有的缓存都操作同一个cup上的缓存,所以可见性很容易解决。当a线程更新了缓存上的变量,那么在b线程去访问该变量的时候,拿到的一定是最新值。在多核时代,每个cup都有自己的缓存区,当不同cup上的线程去访问内存中的同个变量时,假设该变量在cup中都有缓存。那么不同cup上的线程对变量的修改不会立马同步到内存中,导致不同cup的缓存中的同一个变量对另外cup没有可见性,这个...

2019-03-18 00:57:29 160

原创 模板模式(Template Pattern)

定义定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。实现:AbstractTemplate类定义一个算法,将 abstarctMethod 和 hookMethod 的实现步骤放到 ConcreteTemplate 实现。代码参考:https://github.com/biggirlo/study/t...

2019-03-10 14:54:10 173

原创 单例模式的多种实现

单利模式(Singlton)单例模式指的是在整个web生命周期或者整个Java应用中,只能被创建一次而只存在一个实例。饿汉模式public class Singleton2 { private Singleton2() {} private static Singleton2 single = new Singleton2(); //静态工厂方法 pu...

2019-02-26 01:45:30 159

原创 静态代理 动态代理 总结

什么是代理模式(Proxy Pattern)使用代理对象来执行目标对象,并且可以在不改原代码的情况下,增强一些功能。代理模式分为静态代理和动态代理。静态代理一个代理目标会对应一个代理类动态代理通过Java的反射,动态去为目标类指定代理对象。总结静态代理由于不需要反射获取目标对象,所以性能更好。静态代理在会随着系统的增加,代理类会越来越多。动态代理可以有效...

2019-02-21 21:59:41 409 1

原创 原型模式(浅克隆和深克隆)笔记

什么是原型模式原型模式也称为克隆模式,可以在不知道对象创建过程的情况下复制出一个新的对象。克隆方式分为浅克隆和深克隆。怎么实现原型模式Object类中有一个clone()方法,所以要使用原型模式非常简单,只要实现Cloneable的接口就可以了。 Java语言提供的Cloneable接口只起一个作用,就是在运行时期通知Java虚拟机可以安全地在这个类上使用clone()方法。通过...

2019-02-21 21:27:41 291

原创 工厂模式,工厂方法模式,抽象工厂模式详解

1.工厂模式(Simple Factory)     消费者并不需要知道工厂内部的实现,只需要指定产品类型,工厂便可以生产对应实例。     优点:解耦生产逻辑;拓展方便,增加产品无需改动其他产品。    举例:   1.分别有Circle,Retangle,Square三个产品,为了统一行为都继承Shape接口。   2.ShapeFactory是shape的工厂类。  ...

2019-01-27 15:33:01 244 1

rpmfusion-free-release-7.noarch.rpm

ImageMagick 支持heic 必备rpm包,安装必备准备。 使用脚本 rpm -uvi rpm

2019-09-24

空空如也

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

TA关注的人

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