- 博客(131)
- 资源 (44)
- 收藏
- 关注
原创 JAVA系列:基础知识专题(更新中)
目录String类、对象反射Date日期正则StringStringBuffer、StringBuilder、String区别String的intern()方法的使用类、对象对象自定义排序字段 Comparable和Comparator反射Java反射机制Date日期SimpleDateFormat注意事项正则正则表达式语法规则...
2020-09-15 00:21:02 329
原创 JAVA系列:JVM专题 (更新中)
CPU高如何问题定位?CPU、内存定位性能问题CPU高的问题(定位进程)内存高排查方法?Jstack使用方法
2020-09-06 22:46:33 380
原创 JAVA系列:线程、线程池常见问题整理(持续更新)
什么是线程? 和进程区别?多进程、多线程与CPU的关系并发与并行的区别为什么使用线程?什么情况下应该使用多线程多线程一定比单线程快吗? 怎么解决这个问题线程有哪5种状态?线程的5种状态怎么使用/实现线程?多线程的实现方式有哪些?线程的Run和Start方法区别多线程为什么会存在安全性问题线程池有哪些?未完待续...
2020-09-01 23:07:58 429
原创 JAVA系列:内存快照dump分析工具MemoryAnalyzer的使用方法
目录下载MemoryAnalyzer导入dump文件分析图表、对象树下载MemoryAnalyzerwin64:https://download.csdn.net/download/VIP099/12889758linux:https://download.csdn.net/download/VIP099/12889757导入dump文件分析图表、对象树...
2020-09-27 00:19:13 2859
原创 JAVA系列:堆内存溢出时,自动保存内存快照dump方法
手动导出dumpjmap -dump:format=b,file=heap.hprof pid自动导出dump-XX:+HeapDumpOnOutOfMemoryError可以通过 -XX:HeapDumpPath=/tmp/heapdump.hprof 来显示指定路径此外,OnOutOfMemoryError参数允许用户指定当出现oom时,指定某个脚本来完成一些动作。-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/...
2020-09-26 23:56:05 4649
原创 JAVA系列:线程死锁排查demo
程序package com.example.demo.thread;class DeadLock1 implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName() + "运行"); while (true) { synchronized (Test.obj2) { .
2020-09-26 23:48:57 444
原创 MySQL系列:隐式转换(字符串类型字段,传入数字、字符串)
原始数据表问题现象原因分析字符串字段传入数字时,并没有使用索引。全表对比数字时,数字做对比相等总结字符串字段传入字符串时,走索引,是字符串类型的对比字符串字段传入数字时,不走索引,全表扫描,是数字类型的对比。...
2020-09-26 09:34:20 962
原创 MySQL系列:隐式转换(数字类型字段,传入数字、字符串)
原始数据问题现象字符串数字原理分析(隐式转换)以数字开头的字符串,+为算术操作符arithmetic operator,当遇到非数字式,全部按0处理。 以数字开头的字符串,因为'a'+'b'的结果为0,c也会隐式转化为0,1在MySQL中可以理解为TRUE非数字开头,按0处理:现象解释1=1+‘d’,以数字开头的字符串总结如果字符串的第一个字符就是非数字的字符,那...
2020-09-26 09:00:15 709
原创 MySQL系列:MyISAM和InnoDB的死锁
死锁原因容易发生死锁的几种情况如下:多个并发事务(2个或者以上)按照不同的顺序同时访问多张表比如一个程序锁定了A表,然后去申请锁定B表,另外一个程序先锁定的B表,需要同时修改A表InnoDB也支持显式锁,例如以下语句:避免死锁1)类似的业务逻辑以固定的顺序访问表和行。2)大事务拆小。大事务更倾向于死锁,如果业务允许,将大事务拆小。 3)在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁概 率。4)降低隔离级别,如果业务允许,将隔离级别调低也...
2020-09-24 23:02:03 770
原创 MySQL专题:char和varchar的区别
1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。2.同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。(varchar中的另外1个字节记录字符串的长度)3.超过char和varchar的n设置后,字符串会被截断。4.char的上限为255字节,...
2020-09-23 22:21:22 346
原创 MySQL专题:数据库垂直、水平拆分
目录垂直拆分优点缺点水平拆分总结数据拆分前其实是要首先做准备工作的,然后才是开始数据拆分,我先讲拆分前需要做的事情:第一步:采用分布式缓存redis、memcached等降低对数据库的读操作。 第二步:如果缓存使用过后,数据库访问量还是非常大,可以考虑数据库读、写分离原则。 第三步:当我们使用读写分离、缓存后,数据库的压力还是很大的时候,这就需要使用到数据库拆分了。数据库拆分原则:就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放...
2020-09-23 22:17:05 345
原创 MySQL系列:聚集索引和非聚集索引区别
聚集索引和非聚集索引聚集索引就是索引存放的物理顺序和数据列中的顺序一样(字典的拼音查找目录)。非聚集索引索引项顺序存储,但索引项对应的内容却是随机存储的(字典的笔画、部首查找目录)一般设置主键索引就为聚集索引。非聚集索引和聚集索引的区别在于:通过聚集索引可以一次查到需要查找的数据, 而通过非聚集索引第一次只能查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。聚集索引一张表只能有一个(因为主键的作用就是把表的数据格式转换成索引(平衡树)的格式放置。),而非聚..
2020-09-21 23:52:48 3020
原创 MySQL专题:锁有哪些类型
目录不同引擎的锁表锁与行锁的区别INNODB的行级锁(2种)InnoDB锁的类型行锁的算法锁机制锁是用于管理不同事务对共享资源的并发访问不同引擎的锁InnoDB:表锁和行锁MyiSam:表锁表锁与行锁的区别表锁:对一整张表加锁,并发能力低下(即使有分读锁、写锁),一般在DDL处理时使用不利于并发,不会死锁行锁:通过给索引上的索引项加锁来实现的(执行的SQL要用到索引,InnoDB才使用行级锁,否则,InnoDB 将...
2020-09-21 23:35:20 338
原创 MySQL专题:B树、B+树区别,索引为何使用B+树?
目录什么是索引为什么使用索引磁盘IO与预读B 树b+树b+树性质一个表最多可有16个索引。最大索引长度是256个字节什么是索引索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构为什么使用索引索引的目的在于提高查询效率索引能极大的减少存储引擎需要扫描的数据量索引可以把随机IO变成顺序IO索引可以帮助我们在进行分组、排序等操作时,避免使用临时表索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B+树的形式保存。.
2020-09-20 22:32:09 4792 3
原创 MySQL专题:ID自增主键存储
一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?InnoDB新增一条记录,不重启mysql id是18;重启MySQL ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。 MylSAMID就是18。因为MylSAM表会把自增主键的最大ID记录到数据...
2020-09-20 22:18:05 607
原创 MySQL专题:optimize数据碎片
data_free选项代表数据碎片。针对MySQL的不同数据库存储引擎,在optimize使用清除碎片,回收闲置的数据库空间,把分散存储(fragmented)的数据和索引重新挪到一起(defragmentation),对I/O速度有好处。optimize在对表进行操作的时候,会加锁,所以不宜经常在程序中调用。...
2020-09-20 22:13:54 300
原创 MySQL专题:复合索引使用时的注意事项
目录为什么要强调最左前缀原则那么什么时候才能用到呢?为什么要强调最左前缀原则以该表的(name,cid)复合索引为例,它内部结构简单说就是下面这样排列的:mysql创建复合索引的规则是首先会对复合索引的最左边的,也就是第一个name字段的数据进行排序,在第一个字段的排序基础上,然后再对后面第二个的cid字段进行排序。其实就相当于实现了类似 order by name cid这样一种排序规则。所以:第一个name字段是绝对有序的,而第二字段就是无序的了。所以通常情况下,直接使用
2020-09-20 22:10:13 401
原创 MySQL专题:性能优化方案
目录MySQL数据库两个瓶颈MySQL优化方案架构层面SQL索引优化数据库表优化MySQL数据库两个瓶颈CPU和I/O的瓶颈MySQL优化方案Mysql的优化,大体可以分为三部分:架构层面、索引sql语句的优化,表的优化架构层面这一类调优包括读写分离、多从库负载均衡、水平和垂直分库分表等方面,一般需要的改动较大,但是频率没有SQL调优高,而且一般需要DBA来配合参与。那么什么时候需要做这些事情?我们可以通过内部监控报警系统(比如Zabbix).
2020-09-20 18:50:19 383 1
原创 MySQL系列:注意临时表和表变量的用法
在复杂系统中,临时表和表变量很难避免,关于临时表和表变量的用法,需要注意:A、如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成。B、如果需要多次用到一个大表的同一部分数据,考虑用临时表和表变量暂存这部分数据。C、如果需要综合多个表的数据,形成一个结果,可以考虑用临时表和表变量分步汇总这多个表的数据。D、其他情况下,应该控制临时表和表变量的使用。E、关于临时表和表变量的选择,很多说法是表变量在内存,速度快,应该首选表变量,但是在实际使用中发现, (1)主要考虑需要放在临...
2020-09-20 18:46:11 704
原创 MySQL系列:索引都有哪些类型
目录主键索引唯一索引组合索引普通索引全文索引 主键索引 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引 唯一索引 与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 组合索引 指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。 普通索引 是最基本的索引,它没有任何限制。 ...
2020-09-20 18:42:20 447 1
原创 MySQL专题:MYSQL CPU100%的处理方法
show full processlist; 可以看到正在执行的语句Explain 分析SQL效率show variables like '%slowquerylog%' 必要的时候查看慢日志
2020-09-20 18:36:02 257
原创 MySQL专题:哪些条件无法使用索引(索引失效)
目录基础数据库表失效情况基础Explain查看执行SQL计划数据库表失效情况1、避免在where子句中使用or来连接条件,因为引擎会放弃索引而产生全表扫描,即使两个都有索引2、新建的表还没来得及生成统计信息,分析一下就好了3、mysql基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引。4、在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了。5、单独的...
2020-09-20 18:31:54 774
原创 MySQL专题:深入理解Explain查看执行SQL计划
目录数据库表使用方法idselect_typetabletypepossible_keysKeykey_lenrefrowsExtra总结数据库表使用方法explain select * from student1 where pid like 'i_8' ;Select_type:指定所使用select查询类型,simple表示简单的select,不使用union或子查询。其他可能的取值有:primary、uni..
2020-09-20 18:16:52 379
原创 MySQL专题:查询mysql锁情况
目录表锁状态行级锁状态表锁状态-- 表级锁的争用状态变量show status like 'table%';行级锁状态-- 行级锁争用状态变量show status like 'innodb_row_lock%';
2020-09-20 18:16:38 265
原创 MySQL系列:MyISAM和InnoDB区别
目录MyISAM索引实现InnoDB索引实现最佳实践MyISAM索引实现索引文件和数据文件分开,所以非聚集。主键索引=索引+数据地址辅助索引=索引+数据地址demoselect count(*) from table 不需要扫表计算。MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表一共有三列,假设我们以Col1为主键,图是一个MyISAM表的主索引(Primary ke
2020-09-20 00:06:43 372
原创 MySQL系列:E-R图
什么是E-R模型 E-R模型即实体-联系模型,E-R模型的提出基于这样一种认识,数据库总是存储现实世界中有意义的数据,而现实世界是由一组实体和实体的联系组,E-R模型可以成功描述数据库所存储的数据。为什么要设计E-R模型 设计E-R模型能够更有效和更好的模拟现实世界。E-R图的四个组成的部分矩形框:表示实体,在矩形框中写上实体的名字椭圆形框:表示实体或联系的属性菱形框:表示联系,在框中记入联系名连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,(对于一
2020-09-19 23:07:22 1571
原创 MySQL系列:三范式
1范式:原子性1NF是对属性的原子性,要求属性具有原子性,不可再分解;如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;2范式:惟一性2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓名依赖与学号,所以不符合二范式。正确做法:学生:Student(学号...
2020-09-19 23:00:31 251
原创 MySQL系列:mysql主备复制实现 、读写分离原理
mysql主备复制实现从上层来看,复制分成三步:第一步:master在每次准备提交事务完成数据更新前,将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log event,简称event)第二步:slave启动一个I/O线程来读取主库上binary log中的事件(master会给每个连接上来的slave一份完整的binlog拷贝),并记录到slave自己的中继日志(relay log)中。第三步:slave还会起动一个SQL线程,该...
2020-09-19 16:13:10 464
原创 MySQL系列: undo和redo工作原理
基础快照读:SQL读取的数据是快照版本,也就是历史版本,普通的SELECT就是快照读innodb快照读,数据的读取将由 cache(原本数据) + undo(事务修改过的数据) 两部分组成当前读:SQL读取的数据是最新版本。通过锁机制来保证读取的数据无法通过其他事务进行修改UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE都是当前读Undo(历史数据,提交前持久化,修改前写入,.
2020-09-19 15:57:14 956
原创 MySQL专题:MVCC多版本并发控制工作原理
目录基础临时表MVCC多版本并发控制原理优缺点MVCC对应隔离级别基础>>4个四种隔离级别临时表执行增、删、改之前,先将满足条件的数据查询出来放入到临时表中将数据操作先在临时表中完成,完成过程中如果没用出现任何问题,就将数据同步(剪切)到实际的数据表中,并返回影响行数 ;完成过程中一旦出现错误,那就将临时表中满足条件的数据清掉,并返回错误码。插入1、先把要插入的数据放入临时表2、将临时表中数据插入实际表中去3、如果没问题,就复制.
2020-09-19 15:26:44 1058
原创 MySQL专题: 4个四种隔离级别
基础>>脏读、不可重复读、幻读区别查看mysql的设置的事务隔离级别select global.@@tx_isolation;select @@tx_isolation;数据库隔离级别 隔离级别 隔离级别的值 导致的问题 Read-Uncommitted 0 导致脏读 Read-Committed ...
2020-09-19 15:10:00 438
原创 MySQL系列:事务ACID特性与原理(原子性、一致性、隔离性、持久性)
事务事务(Transaction)是一个整体的执行逻辑单元,只有两个结果,要么全失败,要么全成功。 事务的本质是保持操作的原子性,保证数据的一致性。事务跟并发没有必然关系。当并发访问某数据的时候,是靠”串行化“来解决竞争问题的。(让并行的程序在竞争的时候串行化)ACID特性事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。原子性(atomicity)事务中包括的各种SQL操作要么都做,要么都不做。.
2020-09-19 15:08:44 684
原创 MySQL专题: 脏读、不可重复读、幻读区别
目录脏读(Dirty Read)不可重复读幻读脏读(Dirty Read)读取到了未提交的数据(如果事务这时候回滚了,那么第二个事务就读到了脏数据)原因可能有:(1)有一个交叉的事务有新的commit,导致了数据的改变;(2)一个数据库被多个实例操作时,同一事务的其他实例在该实例处理其间可能会有新的commit。不可重复读同一个事务中执行完全相同的select语句时可能看到不一样的结果。幻读当用户读取某一范围的数据行...
2020-09-19 15:07:06 3084
原创 JAVA系列:Volatile例子
非Volatile变量demostart...Thread-0prepare...mainVolatile变量demostart...Thread-0prepare...mainend...Thread-0说明while(!this.stop)//在线程Thread-0中运行,读取自身stop变量副本car.setStop(true); //在另外一个线程main中对自身stop变量做修改volatile使线程Thread-0、...
2020-09-19 12:33:10 379
原创 JAVA系列: 深入理解Volatile的实现原理
目录VolatileVolatile内存模型Volatile的实现原理Volatile的作用Volatile[ˈvɒlətaɪl]Volatile 是一个Java语言的类型修饰符。一旦一个共享变量(类的成员变量、类的静态成员变量)被Volatile修饰之后,那么就具备了两层语义:1、保证多线程下的可见性2、禁止进行指令重排序(即保证有序性)注意:Volatile只能让被他修饰内容具有可见性、有序性,并不能保证原子性。Volatile内存模.
2020-09-19 12:09:02 523
原创 Linux系列:CPU缓存与弊端问题
CPU缓存CPU缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快得多,举个例子:一次主内存的访问通常在几十到几百个时钟周期 一次L1高速缓存的读写只需要1~2个时钟周期 一次L2高速缓存的读写也只需要数十个时钟周期这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内存
2020-09-19 11:57:12 490
原创 JAVA系列:缓存一致性协议( MESI协议)
目录缓存一致性协议CPU规则缓存一致性协议MESI协议是当前最主流的缓存一致性协议,在MESI协议中,每个缓存行有4个状态,可用2个bit表示,它们分别是:只有当缓存行处于E或者M状态时,处理器是独占这个缓存行的。当处理器想写某个缓存行时,如果它没有独占权,它必须先发送一条"我要独占权"的请求给总线,这会通知其它处理器把它们拥有的同一缓存段的拷贝失效(如果有)。只有在获得独占权后,处理器才能开始修改数据,这个缓存行只有一份拷贝,在我自己的缓存里,所以不会有任何..
2020-09-19 11:46:28 1335
原创 JAVA系列: Volatile和Synchronized区别
原子性:同一时刻,只有一个线程可以执行某段程序代码(原子,意思代表——不可分)可见性:一个线程对变量的写操作对其他线程后续的读操作可见Volatile的最大缺点是不支持原子性。区别1.volatile是线程同步的轻量级实现,所以性能比synchronized好。但是volatile只能修饰变量,synchronized可以修饰变量、代码块、方法(volatile保证变量可见性,synchronized保证代码块可见性)。2.volatile用于解决变量多线程之间的可见性...
2020-09-19 11:41:18 370
elasticsearch-7.7.0-2020-linux-x86_64.tar.gz.zip
2020-05-15
alexanderzobnin-grafana-zabbix-v3.11.0-1-g52f24ec.zip
2020-03-28
node_exporter-1.0.0-rc.0.linux-amd64.tar.gz
2020-03-28
prometheus-2.17.1.linux-amd64.tar.gz
2020-03-28
zabbix snmp redhat7/centos7 离线安装包
2020-02-26
redhat7、centos7系统,zabbix Server 离线安装包
2020-02-19
redhat7、centos7 zabbix proxy安装包
2020-02-19
redhat6、centod6系统zabbix agent安装包 zabbix-agent-4.2.4-1.el6.x86_64.rpm
2020-02-19
MemoryAnalyzer-1.10.0.20200225-win32.win32.x86_64版本.zip
2020-09-27
MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip
2020-09-27
elasticsearch-7.8.0-linux-x86_64-2020.tar.zip
2020-07-13
prometheus-2.19.2.linux-amd64.tar.gz
2020-07-13
xampp-windows-x64-7.4.5-0-VC15-installer.zip
2020-06-03
Git-2.26.2-64-bit.windows.zip(官方开源软件windows 64版本)
2020-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人