摘要:安装ZooKeeper 我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper 3.4.12/ 下载后,解压 要先配置一下,否则没法启动,启动会报错,找不到 文件,其实这个配 阅读全文
posted @ 2019-08-22 11:25 Tu9oh0st 阅读(267) 评论(0) 推荐(0) 编辑
摘要:索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。 索引的优点:1. 天生排序。2. 快速查找。 索引的缺点:1. 占用空间。2. 降低更新表的速度。 注意点:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。 索引从实现上说,分成 2 种:聚集索引和辅助索引(也叫二 阅读全文
posted @ 2019-07-23 00:08 Tu9oh0st 阅读(84) 评论(0) 推荐(0) 编辑
摘要:Redis持久化 Redis提供了不同的持久化选项: RDB持久化 以指定的时间间隔保存那个时间点的数据快照。 AOF持久化 方法则会记录每一个服务器收到的写操作。在服务器启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。 Redi 阅读全文
posted @ 2019-07-23 00:00 Tu9oh0st 阅读(346) 评论(3) 推荐(4) 编辑
摘要:Redis集群搭建 运行Redis镜像 分别使用以下命令启动3个Redis docker run name redis 6379 p 6379:6379 d hub.c.163.com/library/redis docker run name redis 6380 p 6380:6379 d hu 阅读全文
posted @ 2019-07-18 09:57 Tu9oh0st 阅读(4356) 评论(6) 推荐(1) 编辑
摘要:synchronized概述 在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了。 先来看下利用synchronized实现同步的基础:Java中的每一个对象 阅读全文
posted @ 2019-07-15 16:56 Tu9oh0st 阅读(165) 评论(0) 推荐(0) 编辑
摘要:ConcurreentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的HashMap。 为什么要使用ConcurrentHashMap 在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了Co 阅读全文
posted @ 2019-07-12 10:06 Tu9oh0st 阅读(166) 评论(0) 推荐(0) 编辑
摘要:volatile的内存语义 volatile的特性 理解volatile特性的一个好方法是把对volatile变量的单个读/写,堪称是使用同一个锁对这些单个读/写操作做了同步。 锁的happens before规则保证释放锁和获取锁的两个线程之间的内存可见性,这意味着对一个volatile变量的读, 阅读全文
posted @ 2019-07-11 15:57 Tu9oh0st 阅读(184) 评论(0) 推荐(0) 编辑
摘要:队列同步器概述 队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作,并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础 阅读全文
posted @ 2019-07-11 15:05 Tu9oh0st 阅读(133) 评论(0) 推荐(0) 编辑
摘要:深入理解Java内存模型JMM与volatile关键字 多核并发缓存架构 Java内存模型 Java线程内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别。 例子 编写代码来分析 执行程序,打印结果 并未出现 这段结果 分析 第一 阅读全文
posted @ 2019-07-10 19:06 Tu9oh0st 阅读(460) 评论(2) 推荐(0) 编辑
摘要:深入剖析Java虚拟机内存模型 JVM整体架构 JVM整体架构如下: 通过编写代码来分析整个内存区域 对上述代码的class文件进行 是对代码进行反汇编 得到 文件 对compute方法进行分析: 上面程序,在JVM中的运行时区域如下: 栈 操作的操作暂时的数据存放到 。 main()的局部变量表存 阅读全文
posted @ 2019-07-09 20:00 Tu9oh0st 阅读(129) 评论(0) 推荐(0) 编辑
摘要:前言 想做一个秒杀项目,问了几个大佬要了项目视频,结果,自己本地实践的时候,发现不太一样,所以写下这篇,为以后做准备。 环境配置 IDE:IDEA 环境:Windows 数据库:Redis Maven配置 习惯用SpringBoot的小伙伴都知道,需要配置Maven,添加几个dependency。 阅读全文
posted @ 2019-06-30 15:05 Tu9oh0st 阅读(100) 评论(2) 推荐(0) 编辑
摘要:前言 由于本人参加面试,但是JVM这块回答的十分不好,问了面试官,面试官说我基础不行!我真的不行,所以看过的不一定能理解,感觉之前就是糊弄任务,然后这次等实训结束,啥都干完了,我就记录下,深入了解下面试中不会的题。 类加载过程 1、 加载 :这个很简单,程序运行之前jvm会把编译完成的.class二 阅读全文
posted @ 2019-06-27 16:57 Tu9oh0st 阅读(61) 评论(2) 推荐(1) 编辑
摘要:运行时数据区域 图中深色区域为,由所有线程共享的数据区域,其他为线程隔离的数据区。 程序计数器 程序计数器可以看作是当前线程执行的字节码的行号指示器。 虚拟机栈 虚拟机栈描述的是Java方法执行的内存模型;每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动 阅读全文
posted @ 2019-06-27 16:52 Tu9oh0st 阅读(144) 评论(0) 推荐(1) 编辑
摘要:JDK版本 ArrayList ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些 阅读全文
posted @ 2019-06-17 11:15 Tu9oh0st 阅读(74) 评论(0) 推荐(0) 编辑
摘要:前言 在我们的平常的项目中多多少少都会使用到缓存,因为一些数据我们没有必要每次查询的时候都去查询到数据库。 特别是高 QPS 的系统,每次都去查询数据库,对于你的数据库来说将是灾难。 今天我们不牵涉多级缓存的知识,就把系统使用到的缓存方案,不管是一级还是多级的都统称为缓存,主要是为了讲述使用缓存的时 阅读全文
posted @ 2019-06-09 16:33 Tu9oh0st 阅读(59) 评论(0) 推荐(0) 编辑
摘要:复制过程 复制的过程步骤如下: 1. 从节点执行 slaveof 命令 2. 从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制 3. 从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点 4. 连接建立成功后,发送 ping 命令,希望得到 pong 命 阅读全文
posted @ 2019-06-09 10:28 Tu9oh0st 阅读(61) 评论(0) 推荐(1) 编辑
摘要:深入理解IoC 在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识。 IoC理论 IoC 全称为 ,翻译为 “控制反转”,它还有一个别名为 DI( ),即依赖注入。 如何理解“控制反转”好呢?理解好它的关键 阅读全文
posted @ 2019-06-08 22:51 Tu9oh0st 阅读(70) 评论(0) 推荐(1) 编辑
摘要:代理模式 代理模式的定义 代理模式(Proxy Pattern)是一个使用率非常高的模式,其定义如下: Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对象的访问 阅读全文
posted @ 2019-06-06 23:09 Tu9oh0st 阅读(43) 评论(0) 推荐(0) 编辑
摘要:golang string和[]byte的对比 为啥string和[]byte类型转换需要一定的代价? 为啥内置函数copy会有一种特殊情况 ? string和 "]byte,底层都是数组,但为什么[]byte比string灵活,拼接性能也更高([动态字符串拼接性能对比" )? 今天看了源码探究了一 阅读全文
posted @ 2019-06-03 17:51 Tu9oh0st 阅读(99) 评论(0) 推荐(0) 编辑
摘要:MVC框架的实现 在开始设计MVC框架前,首先要对MVC框架做一个简单的介绍。MVC(Model View Controller)的中文名称叫做模型视图控制器模型,就是因为它的英文名字太流行了,中文名字反而被忽略了。它诞生于20世纪80年代,原本是为桌面应用程序建立起来的一个框架,现在反而在Web应 阅读全文
posted @ 2019-05-31 20:46 Tu9oh0st 阅读(393) 评论(0) 推荐(0) 编辑