01 2018 档案
摘要:优点 1,实现了读写分离(并通过hint/*master*/可强制走主库,并且加入了权重配置可进行读的负载均衡 2,自身维护了一套连接池,减少了创建连接带来的性能消耗 3,支持DB动态上下线,方便横向扩展 4,支持ip过滤,实现了简单的权限控制 5,可记录所有sql,实现了简单的审计功能 缺点 1,
阅读全文
摘要:什么是Redis的并发竞争问题 Redis的并发竞争问题,主要是发生在并发写竞争。 考虑到redis没有像db中的sql语句,update val = val + 10 where ...,无法使用这种方式进行对数据的更新。 假如有某个key = "price", value值为10,现在想把val
阅读全文
摘要:缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力
阅读全文
摘要:LRU(Least Recently Used)最近最少使用算法是众多置换算法中的一种。 Redis中有一个maxmemory概念,主要是为了将使用的内存限定在一个固定的大小。Redis用到的LRU 算法,是一种近似的LRU算法。 1 设置maxmemory 上面已经说过maxmemory是为了限定
阅读全文
摘要:相关命令 1. MULTI 用于标记事务块的开始。Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列。 这个命令的运行格式如下所示: MULTI 这个命令的返回值是一个简单的字符串,总是OK。 2. EXEC 在一个事务中执行所有先前放入队列的命令,然后恢复正常
阅读全文
摘要:[转] http://www.syyong.com/db/Redis-why-the-use-of-single-process-and-single-threaded-way-so-fast.html Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是
阅读全文
摘要:MYSQL 数据库备份有很多种(cp、tar、lvm2、mysqldump、xtarbackup)等等,具体使用哪一个还要看你的数据规模。下面给出一个表 #摘自《学会用各种姿态备份Mysql数据库》 项目部署在服务期上之后,有了新的需求,需要每月定时备份mysql数据库的所有数据! 查找了网上的多篇
阅读全文
摘要:分析下MySql中innodb存储引擎是如何通过日志来实现事务的? Mysql会最大程度的使用缓存机制来提高数据库的访问效率,但是万一数据库发生断电,因为缓存的数据没有写入磁盘,导致缓存在内存中的数据丢失而导致数据不一致怎么办? Innodb主要是通过事务日志实现ACID特性,事务日志包括:重做日志
阅读全文
摘要:字符与字节的区别 一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集 注意:char与varchar后面接的数据大小为存储的字符数,而不是字节数(其实是5.0版本以上是这样) 字符表示无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),
阅读全文
摘要:MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(
阅读全文
摘要:官网排序优化:http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html MySql创建索引时支持ASC或DESC排序。 实例展示 创建表时同时创建索引降序排序(sname 字段上普通索引降序) 在已有的表创建索引语法 MySQ
阅读全文
摘要:SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 一、事务隔离级别分类 第1级别:Read Uncommitted(读取未提交内容) 第2级别:Read Committed(读取提交内
阅读全文
摘要:针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能。锁定机制也因此成了各种数据库的核心技术之一。不同数据库存储引擎的锁定机制是不同的,本文将从MySQL最常见的存储引擎MyISAM与InnoDB的锁定机制说起。 一、MyISAM的锁机制
阅读全文
摘要:这个区别对于我们来说并不大,这是内存分配的两种方法。一般代码逻辑,简单变量,结构体都是放入栈中,而对象,以及被装箱的数据是放入堆中的。简单来说,栈就是一个很长的栈(数据结构中的栈,如果不理解可以当做是像线一样的一长串数据)。里面存着各种逻辑,以及像整形,浮点型等数据,根据栈先进先出的原则,代码会一条
阅读全文
摘要:性能分析神器VisualVM 转:visualvm监控远程机器上的Java程序
阅读全文
摘要:MySQL 的性能(上篇)—— SQL 执行分析 MySQL 的性能(下篇)—— 性能优化方法
阅读全文
摘要:http://blog.csdn.net/bitcarmanlee/article/details/51004767
阅读全文
摘要:一、问题 项目采用springboot搭建,想给方法添加@Scheduled注解,实现两个定时任务。可是运行发现,两个task并没有并发执行,而是执行完一个task才会执行另外一个。上代码: 运行发现任务没有并行执行。 二、解决 给类添加注解@EnableAsync,并给方法添加注解@Async。
阅读全文
摘要:mysqld_safe与mysqld区别,直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。 用mysqld_safe脚本来启动MySQL服务器的做法在BSD风格的unix系统上很常见,非BSD风
阅读全文
摘要:官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件。参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 经过测试,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,
阅读全文
摘要:1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引. in与子查询一起使用的时候,只能针对主查询使用索引. not in则不会使用任何索引.
阅读全文
摘要:Extra表示附加信息,常见的有如下几种(也按查询效率从高到低排列): Using index 表示使用索引,如果只有 Using index,说明他没有查询到数据表,只用索引表就完成了这个查询,这个叫覆盖索引。如果同时出现Using where,代表使用索引来查找读取记录, 也是可以用到索引的,但
阅读全文
摘要:在MySQL性能调试中,常常使用EXPLAIN解释MySQL执行计划,从而用来估算性能耗时。其中,rows用来表示在SQL执行过程中会被扫描的行数,该数值越大,意味着需要扫描的行数,相应的耗时更长。但是需要注意的是EXPLAIN中输出的rows只是一个估算值,不能完全对其百分之百相信,如EXPLAI
阅读全文
摘要:在mysql 的explain的输出中,有个key_len的列,其数据是如何计算的呢? 在看到了淘宝的dba以前发布的博客后,我在mysql 5.6上操作一番,了解了一点。 环境准备 – 创建表。 我的环境如下: 可以看到sql定义table时,datetime类型数据支持default设置为now
阅读全文
摘要:性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 info命令输出的数据可分为10个类别,分别是: server clients memory persistence s
阅读全文
摘要:在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。 代码块: 执行结果: 发生问题的原因如下: 调用Arrays.asList()生产的List的add、re
阅读全文
摘要:简介 AtomicBoolean是java.util.concurrent.atomic包下的原子变量,这个包里面提供了一组原子类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋
阅读全文
摘要:网络七层协议为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 socket 只是 java在网络层定义的类,用来实现网络层。上面的各层需要我们自己在程序里实现。 例如端口可以自己定义 、数据包的定义、 数据包的加密解密等 而webService java实现了应用层的工具,他基于的服务
阅读全文
摘要:大家都知道springboot项目都是微服务部署,A服务和B服务分开部署,那么它们如何更新或者获取共有模块的缓存数据,或者给A服务做分布式集群负载,如何确保A服务的所有集群都能同步公共模块的缓存数据,这些都涉及到分布式系统缓存的实现。 前面其实我已经介绍了springboot+mybatis+ehc
阅读全文
摘要:对于单精度浮点数Float: 当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定,没有发现有相关的参数设置建议:将float改成double或者decimal,两者的差别是double是浮点计算,decimal是定点计算,会得到更精确的
阅读全文
摘要:前言 SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏。所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面纱,让它不在神秘。 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 从上面代
阅读全文
摘要:一般我们使用数字的时候,会使用内置的数据类型,比如int、float、double。但在实际的开发当中,我们有时候会遇到需要使用数字对象,而不是数据类型的时候。为解决这个问题,java为每一种数据类型,提供了相对应的类,即包装类。 八种基本类型为:Integer、Double、Float、Short
阅读全文
摘要:前言 Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件applicat
阅读全文
摘要:(一)RestTemplate 客户端 1、RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar 2、客户端代码: (二)RestTemplate 详解 1、两个构造方法:第二个实现超时。 其中,第二个构造方法中可以传入Cli
阅读全文
摘要:BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位
阅读全文
摘要:文章链接:http://blog.csdn.net/qq_16628781/article/details/70532307 知识点: 概述 对于文件的复制,平时我们都是使用输入输出流进行操作,利用源文件创建出一个输入流,然后利用目标文件创建出一个输出流,最后将输入流的数据读取写入到输出流中。这样也
阅读全文