自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于buffer pool里的三大法宝

我们知道mysql有自己的缓存buffer pool,那么就有几个比较重要的问题:数据是如何加载到对应的buffer pool中的,缓存满了如何淘汰数据如何进行脏数据刷盘下面三大法宝就是这几个问题的解决方案free链表lru链表flush链表我们知道磁盘里的数据页是16k,buffer pool里的数据页也是16k,那么磁盘里的数据页如果要加载到buffer pool里,它应该放在哪个位置呢?buffer pool里哪个位置的数据页是空闲的呢?其实这些信息是通过free链表记录的。

2021-12-30 17:09:00 485

原创 mysql--了解buffer pool里面的数据存储结构

今天来学习下buffer pool里面的细节–里面的数据是怎么样的一个结构我们知道buffer pool其实就是内存里的一块空间,那么它是怎么存储mysql里面的表、行、字段的呢?这就要提到mysql的数据页了。根据程序的局部性原理,每次从磁盘加载数据到内存,不是只加载一行记录,而是加载一批相邻的数据行。也就是一整页的数据。这个数据页大小默认是16k。大概就是下面这个图buffer pool默认大小是128M,数据页的大小是16KB。我们可以在图中看到磁盘中的数据页合内存中的数据页是一一对应的,

2021-12-08 20:05:52 470 1

原创 mysql--innodb存储引擎概览

innodb存储引擎有哪些好用的地方读写性能高支持事务故障数据恢复mvcc多半版控制机制以上4点是总结的innodb比较牛皮的功能,那么接下来看看innodb如何实现这些功能的?1、读写性能高我们知道mysql数据库是存储结构化数据的地方,99%的情况下数据都需要持久化,我们知道磁盘的读写性能很慢,那么innodb是如何保证数据既能正确持久化,又能提供高性能的读写操作呢?答案是buffer pool。buffer pool是innodb的缓冲池,读写操作都是通过先操作缓冲池。读操作

2021-11-25 17:21:04 480

原创 mysql--站在全局视野看mysql的架构

前言:mysql是很入门的技术了,之前有学习过,但是没有记录下来。最近还是决定重新在琢磨一下mysql,目的比较功利,就是为了面试,为了将来离开北京回到大广东。mysql对于高级开发来说,不应该是一个黑盒–不应该只知道select 、update 、delete、insert语句。我们更应该知道mysql的整体设计以及细节,这样一旦在我们使用的过程中遇到了问题就能解决问题。经过翻阅资料学习,了解到mysql的架构如下一条sql从应用端通过连接池发送给mysql,会交给mysql的sql接口层去处理,

2021-11-24 20:31:57 591

原创 7、zk源码阅读--选举后不同角色之间的操作

case FOLLOWING: try { LOG.info("FOLLOWING"); setFollower(makeFollower(logFactory)); follower.followLeader(); } catch (Exception e) { LOG.warn("Unexpected exception", e); } finally { follower.shutdown();.

2021-11-19 15:15:21 1266

原创 6、zk源码阅读--QuorumPeer线程的发起连接和进行选举逻辑

我们知道QuorumPeer是一个线程组件前面讲了他启动的之前的一些准备操作,这篇来看看他的run方法进行了那些操作先贴出代码吧 @Override public void run() { updateThreadName(); LOG.debug("Starting quorum peer"); try { jmxQuorumBean = new QuorumBean(this); MB

2021-06-02 20:47:03 253

原创 5、zk源码阅读--zk服务节点之间的选举是如何通讯的

这一篇,来了解一下zk服务节点的选举,直接上代码吧 public synchronized void startLeaderElection() { try { if (getPeerState() == ServerState.LOOKING) { currentVote = new Vote(myid, getLastLoggedZxid(), getCurrentEpoch()); }

2021-06-02 20:21:18 225

原创 4、zk源码--zk的网络通讯模型和reactor网络通讯模型比较

这一讲主要通过源码分析了一下zk的网路通讯模型(略过具体分析过程),如下图转存失败重新上传取消

2021-06-01 16:39:17 252

原创 3、zk源码阅读--zk如何开启服务端与客户端之间的网络通讯组件

主要做了几件事情1、检查myid2、恢复数据到内存中3、开启ServerCnxn网络通讯组件4、进行leader选举5、开启jvm监听器6、开始线程我们可以看到,QuorumPeer是继承了Thread类,是一个线程类,所以第六点事开始线程执行方法以上的2、3、4、6是重点————————————————版权声明:本文为CSDN博主「Wgenty」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csd

2021-06-01 15:11:33 124

原创 2、zk源码阅读--服务端节点QuorumPeer的构建

接着上一篇,我们讲到runFromConfig方法public void runFromConfig(QuorumPeerConfig config) throws IOException, AdminServerException { try { ManagedUtil.registerLog4jMBeans(); } catch (JMException e) { LOG.warn("Unable to registe

2021-06-01 14:03:46 157

原创 1、zk源码阅读--寻找zk服务端的入口

阅读源码第一个比较关键的步骤是找到入口,那么zk的入口必然是它的启动脚本 ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=$JMXLOCALONLY org.apache.zookeeper.server.quorum.QuorumPeerMain" nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=$

2021-06-01 11:44:06 387

原创 做人比技术重要

做人比技术重要先学会做人,再学技术

2019-05-10 23:39:25 163

原创 java volatile 关键字

问题记录volatile关键字的作用是什么?原理是什么?能否保证线程安全?volatile最大的特性是 可见性,也即 一个线程对用volatile修饰的是变量进行修改,其他线程可以立即看到更新后的值。(如何实现的?)volatile还有一个作用是 禁止指令重排。上面提到线程安全,那么究竟什么是线程安全?多线程执行时,为什么会出现线程不安全?执行指令时,操作系统里面经历了什么?带...

2019-04-17 17:56:13 122 1

原创 java 动态代理

java动态代理的作用?可以将一个对象A的所有操作代理给另外一个对象B,这样可以在不改变A对象的情况下,通过修改B对象,实现在A对象的方法前方法后加上一些必要的代码,如打印日志。那么java动态代理代码如何编写?package com.wzt.www.proxy;import java.lang.reflect.InvocationHandler;import java.lang.refle...

2018-02-01 17:28:39 1157

原创 spring security 自动配置的拦截器是怎么初试化的?

在springboot中使用 spring security 通常会 创建一个 SecurityConfig类@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(Authentica

2018-01-24 18:43:22 2240

原创 spring 的XmlBeanFactory源码分析

XmlBeanFactory继承自DefaultListableBeanFactory,相比DefaultListableBeanFactory,它能解析Xml配置文件,因为它持有XmlBeanDefinitionReader,其构造方法调用了loadBeanDefinition方法public int loadBeanDefinitions(Resource resource) throws B

2018-01-17 20:37:30 218

原创 java threadlocal的研究

1、提出问题threadlocal是什么?原理是什么?有什么作用?threadlocal解决了什么问题?2、源码阅读threadlocal提供了如下方法public T get() { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { T...

2018-01-12 10:30:52 148

原创 java构造器的调用顺序

此段摘选自java 编程思想构建器的调用遵照下面的顺序:(1) 调用基础类构建器。这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个衍生类,等等。直到抵达最深一层的衍生类。(2) 按声明顺序调用成员初始化模块。(3) 调用衍生构建器的主体。构建器调用的顺序是非常重要的。进行继承时,我们知道关于基础类的一切,并且能访问基础类的任何public 和 protect

2017-06-30 15:00:46 232

原创 mapreduce整体流程

源码跟踪...jobTracker在哪里运行?taskTracker在哪里运行?TaskTracker如何周期性的向JobTracker发送心跳?以什么方式?(线程?线程如何停止?如何回收?)map在哪里运行?map之前进行切割分片,每个切割分片开启一个map任务?环形缓冲区如何分区,分区是在哪里运行的?分区是哪里控制的?代码在哪里?分区的时候的排序是如何进行的?map端和reduce端运行的会不...

2017-01-21 10:37:25 480

转载 java中volatile关键字的含义

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synch

2016-05-21 13:16:41 240

转载 java关键字--synchronzied

记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。     一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。     二、然而,当一个线程访问ob

2016-05-04 22:20:34 453

原创 java源码分析--Enumeration接口和Iterator接口

Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。 Enumeration接口定义了从一个数据结构得到连续数据的手段。例如,Enumeration定义了一个名为nextElement的方法,可以用来从含有多个元素的数据结构中得到的下一个元素。 Enumeration接口提供了一套标准的方法,由于Enumeration是一个接口,它的角色局限于为数据结构提

2016-05-04 21:59:48 542

转载 java源码分析--HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入

2016-05-04 21:51:10 280

原创 获得spring 容器的实例

WebApplicationContext webContext = ContextLoader .getCurrentWebApplicationContext();

2015-06-16 18:19:36 430

五子棋代码

该代码用的是组合模式,对于新手来说,是很好的学习资源。是课本的源代码,欢迎来下载哦

2015-04-28

空空如也

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

TA关注的人

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