自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql(八):order by 的工作原理

MySQL 会给每个线程分配一块内存用于排序,称为sort_buffer。全字段排序:一般带有order by 的SQL语句 会初始化sort_buffer,放入需要返回的字段(比如 name,age)。查找一条记录就放入到sort_buffer,继续找,直到找完符合条件的为止。对sort_buffer中的数据按照字段如name快速排序(归并排序);排序这个动作可能在内存中完成,也可能需...

2019-07-17 22:17:31 363

原创 mysql(七):count()统计方式的不同

count(*)的实现方式:在不同的MySQL引擎中,count()实现的方式不同。· MyISAM引擎中把一个表的总行数直接存在了磁盘上,执行count() 的时候直接返回这个数,效率很高;(不支持事务)· 而InnoDB引擎,执行count(*)的时候,需要把数据一行一行的从引擎读出来,然后累计计数;(因为MVCC的实现,应该返回多少行是不确定的(自己能读到自己事务的未提交记录,而不能...

2019-07-17 00:03:17 609

原创 mysql(六):表数据的删除以及空间回收

场景:为什么表删掉了一半的数据,表文件的大小还是没变呢?表数据的存放:表数据的存放由参数innodb_file_per_table 控制:① 该参数设置为OFF,表数据放在系统共享表空间,也就是跟数据字典放在一起;② 设置为ON的时候,每个InnoDB表数据存放在一个以.ibd为后缀的文件中。从MySQL5.6.6版本开始,默认值就是ON了。建议这个值设置为ON,因为一个表单独存储为...

2019-07-16 22:29:49 1578

原创 mysql(五):数据库偶尔响应慢以及InnoDB刷脏页的策略

场景:一条SQL语句,正常执行的时候特别快,但是有时不知道怎么回事,就会变得特别慢,并且这样的场景很难复现,不只是随机,而且持续时间还很短。原因:只要了解WAL机制,就知道InnoDB在处理更新语句的时候,只做了写日志这个磁盘操作,这个日志叫作redo log(重做日志),在更新内存写完redo log后,就返回更新成功。所以总需要时间去将内存中的数据写入到磁盘中,这个过程的术语就叫作fl...

2019-07-16 21:46:02 712

原创 mysql(二):事务以及隔离级别

一、事务:事务就是保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MySQL原生的MyISAM引擎不支持事务,这也是MyISAM被InnoDB取代的重要原因之一。① ACID(Atomicity(原子性)、Consistency(一致性)、Isoiation(隔离性)、Durability(持久性))。当数据库上有多个事务同时执行的时候,就有可能出...

2019-07-13 14:04:10 71

原创 mysql(四): mysql的全局锁、表锁、行锁、死锁检测

数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理的控制资源的访问规则。全局锁主要用在逻辑备份中,对于全部是InnoDB引擎的库,建议使用 -single-transaction参数备份更友好。一、全局锁:就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法。命令是: Flush table with read lock (FTWRL)。当...

2019-07-06 16:56:39 371

原创 mysql(三):InnoDB的索引

一、InnoDB索引的模型:索引的出现其实是为了提高数据查询的效率,就像书的目录一样。在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。InnoDB索引底层是使用B+树。数据都是存储在B+树的叶子节点上。每一个索引在InnoDB中对应一颗B+树。根据叶子节点的内容,索引类型分为主键索引(聚簇索引)和非主键索引(二级索引)。主键索引:叶子节点存的是一整...

2019-07-05 16:48:47 222

原创 mysql(一):查询、更新语句是怎样运行的?

一、一条普通的查询语句是如何执行的?不同的存储引擎公用一个server层,也就是从连接器到执行器的部分。1.首先是通过连接器连接到数据库,会跟客户端建立连接、在权限表获取权限(之后再这个连接里面的权限判断逻辑都依赖此时读到的权限,不会再去读),维持和管理连接。(一个用户成功建立连接后,即使对该用户的权限做了修改,也不会影响已经存在连接的权限。只有再新建的连接才会使用新的权限设置)连接完成...

2019-07-05 01:06:30 387

原创 JVM垃圾回收(GC)

一、什么是垃圾回收?垃圾回收是一种在堆内存中找出哪些对象还在被使用,还有哪些对象没在被使用,并且将之删除。二、如何判断哪些对象没有被使用?1、引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,计数器为0的对象就是没被使用的对象。但是这种算法很难解决对象之间互相引用的情况,所以java中并没有使用这种算法。2、可达性分析算法:...

2019-05-21 15:11:40 100

原创 虚拟机内存划分

一、内存划分:首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在Java中...

2019-05-20 22:22:48 763

原创 数据结构和算法:数组(一)

1、 你知道为什么数组下标是从0开始,而不是从1开始的吗?之前也尝试着写了数据结构的笔记总结,但是总是不得要领。也看过多次数据结构等书籍,过不久就忘的差不多了。所以,这次我重新开始,记牢每种数据结构,和对应基本常用的算法和leetcode对应的题目刷几道。这次的目标就是一直坚持下去,刷leetcode+做笔记+总结。我做的笔记以及一些基础的经典面试算法题会记录到github。http...

2019-05-16 20:52:21 301

原创 git学习(一)

一、安装git1、在git官网有个下载githttps://git-scm.com/book/zh/v2/起步-安装-Git下什么操作系统的自己选择,然后一路默认next安装就行。正常来说安装应该没什么问题,但是win10的专业版可能会出现这个问题:安装末尾提示bash: /dev/null: No such device or address fatal: open /dev/null...

2019-04-02 23:42:26 141

原创 kafka学习(一)

一、kafka集群安装配置:1、在kafka官网下载kafka并解压。2、修改kafka集群中的配置文件3、这里broker.id 是用来标识该节点的唯一ID 集群中的机器ID不能相同,跟zookeeper中的myid有点类似。listeners这个简单来说就是集群中相互通信的配置,监听某个端口。(配置当前节点的ip)中间一些性能优化的参数可以暂时不管,只需要在最下面修改zo...

2019-03-31 16:26:56 135

原创 Docker学习认识安装(一)

一、docker是什么?Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。二、安装部署:dock...

2019-03-27 23:25:52 129

原创 MySQL之分库分表(一)

一、首先我们在linux下安装好mysql5.7版本,方法有几种,这里使用安装离线rpm包方式,感觉这种方式最简单快捷。(1)wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm(2)rpm -ivh mysql57-community-release-el7-8.noarch.rpm(3)yum...

2019-03-27 01:12:45 340

转载 大型网站技术架构总结(一)

一、大型网站系统特点 (1)高并发、大流量:PV量巨大 (2)高可用:7*24小时不间断服务 (3)海量数据:文件数目分分钟xxTB (4)用户分布广泛,网络情况复杂:网络运营商 (5)安全环境恶劣:黑客的攻击 (6)需求快速变更,发布频繁:快速适应市场,满足用户需求 (7)渐进式发展:慢慢地运营出大型网站 二、大型网站架构演化过程 (1)初始阶段网站架构:一台Server就刚需...

2019-03-26 16:02:24 276

原创 缓存之Redis学习(五)

一、搭建配置redis主从环境:1、首先我们需要去redis.conf 注释掉bind 127.0.0.1 这样我们才可以远程连接因为开启bind 表示只允许这个ip访问。vim 文本编辑模式 搜索是按 / 下一个 是 n。还有将daemonize 的 no 改为yes 表示 redis 在后台启动然后我们先去配置选为从服务器的两台机器:这里有个小插曲 之前版本应该是s...

2019-03-21 23:31:22 113

原创 修改linux 固定IP引发的问题

背景:今晚进入linux发现ip动态改变了,所以我想去设置成静态固定的 方便每次使用Xshell连接。而且我网卡名字显示的ens33,不知道是因为cenOS7的原因还是我创建的时候设置问题。然后我就去重新配置下IP信息 在这个目录下面有一个ifcfg-ens33 按理说应该是ifcfg-eth0:首先修改成固定IP,需要先将BOOTPROTO的值修改成STATIC,然后加上参数IPAD...

2019-03-20 23:10:54 276

原创 缓存之Redis学习(四)

一、redis持久化机制1、RDB ------redis DataBase按照规则定时将内存的数据同步到磁盘snapshot(快照)redis在以下情况会触发快照:(1)自己配置的快照规则在redis.conf 里:搜索snapshot就可以当在900秒内被更改的key的数量大于1的时候,就执行快照。(2) save或者bgsavesave:执行内存的数据同步到磁盘的操...

2019-03-18 23:52:34 106

转载 分布式锁的三种方法对比

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

2019-03-14 20:51:28 192

原创 分布式锁的实现

1.数据库2.activeMQ3.缓存 redis setnx4.zookeeper 临时有序节点

2019-03-13 23:42:09 99

原创 缓存之Redis学习(三)

1、redis的事务我们可以通过命令 multi 开启事务通过exec提交事务。2、过期时间expire key seconds 设置过期时间ttl key 获得key的剩余过期时间3、发布订阅publish channel messagesubscribe channel …4、redis 实现分布式锁setnx...

2019-03-13 23:40:36 104

原创 缓存之Redis学习(二)

1.安装好了redis之后,我们就可以开始在linux操作redis了。启动停止redis在redis bin目录下面 :./redis-server …/redis.conf./redis-cli shutdown后台进程启动的话:我们可以通过先开启服务之后通过 ./redis-cli 连接如果连接远程的redis服务 可以通过:./redis-cli -h 192.168.1...

2019-03-13 22:31:46 157

原创 缓存之Redis学习(一)

二、redis的下载 安装 部署 配置1.去redis.io 下载redis 再通过ftp传到linux上面。2.在安装的时候遇到了几个小问题,记录一下。3.1先 tar -zxvf 解压下载的redis到指定目录3.2 进入到redis 目录下面执行 make 命令3.3 在执行make命令的时候报了两个错误因为是我的linux不知道为什么没有自带C++ 运行环境,所以这里我们可以...

2019-03-11 22:52:43 165

原创 消息中间件——ActiveMQ

1.什么是MOM面向消息的中间件,使用消息传送提供者来协调消息传输操作。 MOM需要提供API和管理工具。 客户端调用api。 把消息发送到消息传送提供者指定的目的地在消息发送之后,客户端会技术执行其他的工作。并且在接收方收到这个消息确认之前。提供者一直保留该消息2.activeMQ的两种模式点对点(p2p)1、每个消息只能有一个消费者2、消息的生产者和消费者之间没有时间上的相关性。无...

2019-01-22 14:05:26 99

原创 Maven——setting配置

maven的配置文件settings.xml存在于两个地方:1.安装的地方:M2HOME/conf/settings.xml2.用户的目录:{M2_HOME}/conf/settings.xml2.用户的目录:M2H​OME/conf/settings.xml2.用户的目录:{user.home}/.m2/settings.xml前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用...

2019-01-03 19:02:39 120

原创 zookeeper——ZAB协议(不包含具体实现)

2018-12-26 20:39:41 83

转载 【转】zookeeper——leader选举

Leader选举概述  Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。(1) 服务器初始化启动。(2) 服务器运行期间无法和Leader保持连接。下面就两种情况进行分析讲解。1. 服务器启动时期的Leader选举若进行Leader选举,则至少需要两台机器,这里选取3台机器组成的服务器集群为例。在...

2018-12-26 19:46:34 62

原创 从Paxos到Zookeeper分布式一致性原理与实践(一)

一 分布式环境的各种问题:1.因为网络本身的不可靠性,会涉及到一些网络通信问题2.网络分区(脑裂)当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式架构的所有节点,只有部分节点能够正常通信3.三态在分布式架构里面,除了成功、失败、超时4.节点故障5.分布式事务二 经典的CAP/BASE理论1.CAP定理C(一致性 Consistency):...

2018-12-25 19:09:25 291

原创 JS中如何使用cookie

最近在项目接触了很多在js中调用保存的cookie,是别人在项目的utils.js中保存了不少cookie。大多数保存的是当前登录的用户,和当前的系统,各种常用的id。1、cookie是什么:①、cookie 是存储于访问者计算机中的变量。每当一台计算机通过浏览器来访问某个页面时,那么就可以通过 JavaScript 来创建和读取 cookie。  ②、实际上 cookie 是存于用户硬盘...

2018-12-03 21:02:49 7104

原创 数据结构——哈希表

一、定义  Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组、链表、树等数据结构不同,在这些数据结构中查找某个关键字,通常要遍历整个数据结构,也就是O(N)的时间级,但是对于哈希表来说,只是O(1)的时间级。  注意,这里有个重要的问题就是如何把关键...

2018-12-03 20:20:19 200

原创 常用复杂查询SQL语句

1.oracle查询树形结构,比如有时候菜单需要点击节点查询所有的子节点孙节点。不用在结构上查询,直接使用sql的关键字最关键的是子查询里面 start with 关键字的使用。这条sql语句作用是根据节点id查询所有的子节点以及当前节点的数据。2.mybatis里面写模糊查询...

2018-11-28 13:20:45 479

原创 设计模式系列——代理模式

一.代理模式分为jdk代理和cglib代理。(前者实现接口,后者生成继承)1.两个参与角色:执行者和被代理人2.对于被代理人来说,这件事情是一定要完成的,但是自己又不想做或者没有时间做,找代理。3.需要获取到被代理人的资料。...

2018-11-28 13:16:09 76

原创 MYSQL系列笔记(三)——优化专题

一、首先mysql得先开启慢查询日志。不会的可以网上查。1.1 环境准备:perl环境,因为mysql自带的mysqldumpslow优化工具以及pt-query-digest工具分析都是perl文件。curl环境,因为mysql安装版没有带pt-query-digest工具,所以想要使用该工具得先安装,安装可以通过curl命令直接安装。就得先需要curl环境。安装perl环境只需要下载完...

2018-11-26 21:47:42 158

原创 数据结构——二叉树

一 、二叉树:二叉树的每个节点最多有两个子节点。节点的子节点可以多于两个,这种树称为多路树。二叉树每个节点的两个子节点称为“左子节点”和“右子节点”,分别对应于树图形中它们的位置。二叉树中的节点不是必须有两个子节点;它可以只有一个左子节点或者只有一个右子节点,或者没有子节点(这种情况下它就是叶节点)。1.2二叉搜索树:二叉搜索树的定义:一个节点的左子节点的关键字值小于这个节点,右子节点的...

2018-11-22 20:20:09 233

原创 MySQL索引

一、索引属性索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。1.索引的特点所有的MySQL列类型都能被索引。在相关的列上使用索引是改进select操作性能的最好方法。(1) 一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。(2) 对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。对...

2018-11-16 16:50:47 938

原创 Spring源码——BeanFactory

一、BeanFactory的继承体系:其中BeanFactory作为最顶层的一个接口类,它定义了IOC容器的基本功能规范,BeanFactory有三个子类:ListableBeanFactory、HierarchicalBeanFactory、AutowireCapableBeanFactory。但是从上图中我们可以发现最终的默认实现类是DefaultListableBeanFactory,...

2018-11-15 20:55:55 149

转载 计算机网络常见面试知识

1、OSI,TCP/IP,五层协议的体系结构,以及各层协议:OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 ...

2018-11-15 15:04:34 347

原创 Spring学习源码导入到eclipse

我首先也在网上参考了不少相关的博客,也尝试了不少,但是始终没有完美导入成功的,不少缺少了jar包就是编译成eclipse项目不通过。所以,我总结一种我自己合适的方法。1.首先去git上面拉自己想学习的spring源码版本,我学习的是老版本spring-framework-3.2.6.RELEASE。现在git下源码速度很快了。附上地址:https://github.com/spring-pr...

2018-11-15 13:20:51 229 1

原创 Spring源码之编程思想

首先,Spring最最最核心的一点就是简化开发。一直以来,想达到的目的也是简化开发。

2018-11-14 20:56:08 395

空空如也

空空如也

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

TA关注的人

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