- 博客(84)
- 资源 (10)
- 收藏
- 关注
转载 ActiveMQ集群整体认识
前言最终需要掌握Replicated LevelDB Store部署方式,这种部署方式是基于ZooKeeper的。集群分为两种方式:1.伪集群:集群节点都搭在一台机器上2.真集群:集群节点分布在多台机器上更多详细:真集群与伪集群的区别一、为什么使用集群?实现高可用,以排除单点故障引起的服务中断。 实现负载均衡,以提升效率为更多的客户提供服务。二、ActiveMQ集群部署方式ActiveMQ集群的部署方式主要有下面2种:Broker Clusters 模式:实现负载均衡,多.
2021-07-13 13:58:44 682
转载 B树索引
B-Tree索引是最常见的索引结构,如oracle和mongodb的索引都是B-Tree,而mysql的索引类型是B+Tree一、B树索引的结构B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分:根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端,而叶子节点位于索引结构的最底端,中间为分子节点。 叶子节点(Leaf node):包含条目直接指向表里的数据行。 分支节点(Branch node):包含的条目指向索引里其他的分支节点或者是叶子节点。 根...
2021-05-26 10:09:04 5267 1
转载 mysql的MGR集群
MySQL 是目前最流行的开源关系型数据库,国内金融行业也开始全面使用,其中MySQL 5.7.17 提出的 MGR(MySQL Group Replication)既可以很好的保证数据一致性又可以自动切换,具备故障检测功能、支持多节点写入,MGR 是一项被普遍看好的技术。本文给大家介绍一下 MySQL MGR 技术演变过程、事务生命周期及事务冲突检测机制。先介绍 MGR 技术演进传统的 MySQL 主从复制架构是 MySQL 保持数据一致性的最基本架构,如下图1 所示,一主一从架构,从库给主...
2021-02-09 12:54:51 706
转载 mysql集群方案参考
集群的好处高可用性:故障检测及迁移,多节点备份。 可伸缩性:新增数据库节点便利,方便扩容。 负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。集群要考虑的风险网络分裂:群集还可能由于网络故障而拆分为多个部分,每部分内的节点相互连接,但各部分之间的节点失去连接。 脑裂:导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情况可能导致数据不一致,并且无法修复,例如当两个数据库节点独立更新同一表上的同一行时。@[toc]一,mysql原厂出品1,MySQL Replicatio
2021-02-06 14:10:01 476 1
转载 深度剖析mongos连接池
mongo 分片架构中,mongos 作为 mongo 分片架构的路由选择器,使用中可能比较困惑的一个问题是 : 客户端到 mongos 和 mongos 到 mongod 的连接数是什么样的关系?是 1: 1 的关系吗? mongos 的连接池管理策略又是怎样的?基于以上疑问,本文深度解析 mongos 的连接池问题 。客户端到 mongos 的连接每连接每线程由于传输层 IO 模式的不同(ASIO 和 legacy), 不同版本 mongos 接收客户端连接的模块代码有些许差异,但是无论底层
2021-02-04 20:12:44 2853
转载 百万级高并发mongodb集群性能数十倍提升优化实践
背景线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性。该集群采用mongodb天然的分片模式架构,数据均衡的分布于各个分片中,添加片键启用分片功能后实现完美的负载均衡。集群每个节点流量监控如下图所示:从上图可以看出集群流量比较大,峰值已经突破120万/秒,其中delete过期删除的流量不算在总流量里面(delete由主触发删除,但是主上面不会显示..
2021-02-04 18:53:50 501
转载 什么是分布式锁?实现分布式锁的三种方式
在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?一 为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的锁进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均衡,大致如下图:上图可以看到,变量A存在三个服务器内存中(这个变量A主要体现是在一
2021-01-16 08:36:57 212
转载 MySQL集群(PXC)入门
一、学习动机伴随互联网行业的兴起,越来越多的领域需要相应的技术方案,比如:打出软件、电商平台、直播平台、电子支付、媒体社交。身边常见的,校园出成绩那一年,我们会感觉网站异常的卡顿,因为访问人数太多。单机单点的数据库,一旦这台机子宕机(机器出现故障、机房停电、...),那整个网站将无法正常访问。这时候集群就出现了,一台机器出现问题了,另外的机器还在正常运行,网站依旧可以访问。集群案例:滴滴出行、淘宝、京东、斗鱼直播、支付宝、微信、QQ二、案例1.天猫双十一 2017年天猫双.
2021-01-10 19:53:16 311
转载 dubbo之心跳机制
在网络传输中,怎么确保通道连接的可用性是一个很重要的问题,简单的说,在网络通信中有客户端和服务端,一个负责发送请求,一个负责接收请求,在保证连接有效性的背景下,这两个物体扮演了什么角色,心跳机制能有效的保证连接的可用性,那它的机制是什么,下文中将会详细讲解。1|0网络层的可用性 首先讲一下TCP,在dubbo中的通信是基于TCP的,TCP本身并没有长短连接的区别,在短连接中,每次通信时,都会创建Socket,当该次通信结束后,就会调用socket.close();而在长连接中,每次通...
2021-01-09 08:54:29 1821
转载 基于redis分布式锁实现“秒杀”
最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。业务场景所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。一些可能的实现刚才提到过,实现秒杀的关键点是控制线程对资源的争抢,根据基本的线程知识,可以不加思索的想到下面的一些方法:1、秒杀在技术层面
2021-01-08 22:12:22 164
转载 分布式锁的实现与应用场景对比
文章目录分布式锁的实现与应用场景对比 应用场景介绍: 分布式锁设计目标 Mysql(DBMS)实现分布式锁 实现方式一:利用mysql的隔离性:唯一索引 实现方式二:利用select ... where ... for update 排他锁 实现方式三:version 乐观锁 Redis实现分布式锁 Redis命令 Redis 悲观锁代码实现 Redis 乐观锁代码实现 ZooKeeper分布式锁实现 对比 数据库分布式锁实现 Redi
2020-12-31 19:14:43 251
转载 MySQL 中你必须要懂的 MVCC
前言 MySQL是目前流行的开源数据库之一,各大公司都使用 MySQL 作为自家的关系型数据库,但是 MySQL 作为一个数据库而言,基本使用是非常简单的,只要会一点点建表语句(可以使用工具建表),一点点查询语句就可以使用 MySQL 来存储数据了。 这种没有灵魂的操作,对于很多初学者来说也许已经是家常便饭了。但是对于一些已经有开发经验的人来说,这是远远不够的。你必须要学习很多数据库相关的知识,而这一篇就是彻底来剖析 MySQL 中的 MVCC 是如何实现的。看完这篇文章,你就可以知道各种隔离.
2020-12-31 19:10:21 141
转载 redis怎么实现分布式事务
问题描述:某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖解决方案一利用数据库锁机制,对记录进行锁定,再进行操作 1 2 SELECT * from goods where ID =1 for update; UPDATE goods set stock = stock - 1; 利用排它锁将并行转化为串行操作,但该方案的性能和用户体验较差解决方案二利用redis 实现分布
2020-12-31 19:07:33 4051 2
翻译 the java.util.concurrent Synchronizer Framework
摘要在J2SE 1.5的java.util.concurrent包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer类(下称AQS类),这个简单的框架而构建的。这个框架为同步状态的原子性管理、线程的阻塞和解除阻塞以及排队提供了一种通用的机制。这篇论文主要描述了这个框架基本原理、设计、实现、用法以及性能。1. 背景介绍通过JCP的JSR166规范,Java的1.5版本引入了j.u.c包,这个包提供了一系列支持中等程度并发的类。这些
2020-08-28 15:33:37 303
转载 如何查看java源码中的native方法源码
java源码中的native方法是不能直接在jdk中看到的,因为jdk不是开源的,要看到的话需要sun授权才行,现在只有openjdk是被sun公司授权,所以要查看的话,下载完整的OpenJDK源码包 http://jdk.java.net/;接下来里面解压后找到jdk目录(也就是OpenJDK里的大部分类库的实现)的内容了。其中src/ share/ 平台无关的实...
2019-09-10 10:28:07 604
转载 Java并发编程 Synchronized及其实现原理
Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:1、普通同步方法,锁是当前实例对象 1 2 3 ...
2019-09-10 09:30:42 194
转载 Java虚拟机类加载机制和双亲委派模型
前言JVM 是 Java Virtual Machine(Java虚拟机)的缩写,它是一种规范,HotSpot VM是其最主流的实现(其他实现),通常我们讨论JVM如果没有特意说明是何种实现,便指的是HotSpot VM。JVM也并非仅支持Java语言,任何可编译为字节码的编程语言能可以运行在JVM上,例如前不久谷歌在 I/O 2017宣布将作为 Android 开发 First-Class ...
2019-09-03 14:15:08 248
转载 Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大...
2019-09-02 13:07:20 154
转载 B+树遍历与查找
这一次我们来介绍 B+ 树。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包...
2019-08-30 09:32:18 8176 5
转载 MySQL使用可重复读作为默认隔离级别的原因
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR)。要知道,越高的隔离级别,能解决的数据一致性问题越多,理论上性能损耗更大,可并发性越低。隔离级别依次为SERIALIZABLE>RR>RC>Read-Uncommite...
2019-08-28 14:47:50 257
转载 Java8 ConcurrentHashMap
Java并发包中提供的一个线程安全且高效的HashMap实现,可以完全替代HashTable,在并发编程的场景中使用频率非常之高。可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)实现原理1.8之前ConcurrentHashMap是使用Segment段来进行,一个段就相当于一个HashMap的数据结构,每个段使用一个锁1....
2019-08-27 16:33:34 420
转载 localStorage页面存储实现购物车
HTML APIlocalstorage在浏览器的API有两个:localStorage和sessionStorage,存在于window对象中:localStorage对应window.localStorage,sessionStorage对应window.sessionStorage。localStorage和sessionStorage的区别主要是在于其生存期。基本使用方法lo...
2019-06-12 10:09:12 1797
原创 Integer是不可变对象
参考源代码,value是final类型的,不可变。private final int value;public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerC...
2019-06-05 14:06:22 1493
转载 JVM源码分析之Object.wait/notify实现
最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。public class WaitNotifyCase { public static void main(String[] args) { final Object l...
2019-03-29 11:45:18 188
转载 并发策略之CAS算法
对于并发控制而言,我们平时用的锁(synchronized,Lock)是一种悲观的策略。它总是假设每一次临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果多个线程同时访问临界区资源,就宁可牺牲性能让线程进行等待,所以锁会阻塞线程执行。 与之相对的有一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突也就无需等待了,所有的线程都在不停顿的状态下持续执行。那如果遇到问题了无锁的...
2019-01-15 10:41:22 223
转载 对象并不一定都是在堆上分配内存的
JVM内存分配策略关于JVM的内存结构及内存分配方式,不是本文的重点,这里只做简单回顾。以下是我们知道的一些常识:1、根据Java虚拟机规范,Java虚拟机所管理的内存包括方法区、虚拟机栈、本地方法栈、堆、程序计数器等。2、我们通常认为JVM中运行时数据存储包括堆和栈。这里所提到的栈其实指的是虚拟机栈,或者说是虚拟栈中的局部变量表。3、栈中存放一些基本类型的变量数据(int/sho...
2018-12-25 17:05:31 204
转载 BigInteger数据结构之源码分析
我们可以把一个很大很长的数分成多个短小的数,然后保存在一个数组中,大数之间的四则运算及其它运算都是通过数组完成.JDK就是这么实现的.JDK的BigInteger类里用一个int数组来保存数据: /** * The magnitude of this BigInteger, in <i>big-endian</i> order: the ...
2018-12-06 10:52:49 652 2
转载 HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录 一、什么是哈希表 二、Ha...
2018-11-08 16:45:36 221
转载 揭秘12306技术改造(三):传统框架云化迁移到内存数据平台
摘要12306混合云成功案例给予最大的启发就是打造一个从下到上都可做弹性扩展的“云应用”系统,企业客户可将关键业务的“子系统”部署在资源丰富的云计算数据中心,“云化”后的子系统可“按需”获取所需要的服务器虚机资源和动态调整网络带宽,利用这些资源解决在高流量和高负载情况下,系统无法快速弹性扩展导致的性能瓶颈。此篇文章列举不同类型的系统改造迁移到云平台方案,从改造思路探讨,系统框架设计和项目实...
2018-10-29 15:53:51 744
转载 技术揭秘12306改造(二):探讨12306两地三中心混合云架构
前言2015年春节最大的特色就是“摇一摇”,微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福。支付宝钱包在除夕晚上8点达峰值,首页被点击的次数为8.832亿次/分钟。表面上来看“摇一摇”是在送红包,但从深层次的互联网思维来看,摇一摇的目的是要创造和凸显“移动支付”在互联网金融的价值链,甚至一带一路,将“移动支付”模式的业务,带出国门推向全球,此举对...
2018-10-29 15:51:54 544
转载 技术揭秘12306改造(一):尖峰日PV值297亿下可每秒出票1032张
【编者按】12306网站曾被认为是“全球最忙碌的网站”,在应对高并发访问处理方面,曾备受网民诟病。 2015年铁路客票春运购票高峰期已过,并且12306网站今年没“瘫痪”,也顺利过关。因此记者在第一时间联系到一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式,指出原因所在,并根据他的经验进一步说明12306是如何实现高流量高并发的关键技术,与大家共享。以下为正文:预告:...
2018-10-29 15:50:32 516
转载 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
在开始之前我们先介绍几个概念,什么是微服务,它的特点是什么? Spring Boot / Cloud 都做了那些事情?他们三者之间又有什么关系?什么是微服务微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最...
2018-10-25 09:00:46 230 1
转载 HBase在滴滴出行的应用场景和最佳实践
作者简介:李扬,滴滴出行资深软件开发工程师。2015年加入滴滴出行基础平台部,主要负责HBase和Phoenix以及相关分布式存储技术。在滴滴之前,曾在新浪担任数据工程师,专注于分布式计算和存储。责编:郭芮(guorui@csdn.net),关注大数据领域。本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2017年《程序员》背景对接业务类型HBase是建立在H...
2018-10-25 08:57:08 513
转载 基于Spring开发——自定义标签及其解析
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://ww...
2018-10-25 08:44:41 186
原创 mysql下载与安装-肖海鹏-专题视频课程
本套视频详解介绍了mysql的下载方法(从官网下载社区版、还有版本选择等);同时详解介绍了mysql的安装方法,如定制安装、语言选择(防止乱码)、端口选择、密码设置等。...
2018-10-24 11:18:41 270
原创 String转int-肖海鹏-专题视频课程
本套视频详细讲解了String如何转换成int,这在开发实践中会频繁遇到。int类型需要从文本框录入,如学生身高,服务器接收到的是String类型,使用时需要转换成int类型。类型转换时需要使用到包装类的方法,8种基本类型都有对应的包装类。...
2018-10-24 11:18:26 249
原创 JDK下载与配置-肖海鹏-专题视频课程
本套视频详细介绍了jdk的下载方法(jdk的下载位置、版本选择、平台选择等);同时详细讲解了jdk的安装方法(卸载老版本、定制安装、jre与jdk分离等);jdk安装后,需要配置环境变量,然后在cmd窗口进行测试安装是否成功。...
2018-10-24 11:18:15 274
原创 Eclipse配置tomcat-肖海鹏-专题视频课程
本套视频详细讲解了tomcat的下载方法(Tomcat8对应JavaEE7的环境,对应servlet版本是3.1);使用eclipse开发JavaEE的web项目,同时发布到Tomcat8上的具体方法;当项目代码变化时,需要publish、add/remove项目部署、启动Tomcat等步骤。...
2018-10-24 11:18:04 254
原创 eclipse下载与安装-肖海鹏-专题视频课程
本套课程,详细讲了解eclipse的下载方法。如eclipse的下载位置、eclipse的历史版本选择、eclipse的应用环境选择、eclipse的平台选择等。同时简单介绍了eclipse的安装方法,以及如何创建项目...
2018-10-24 11:17:48 305
原创 Dubbo分布式架构-肖海鹏-专题视频课程
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 注:本套视频不提供PPT...
2018-07-18 09:20:43 257
JSP Servlet学习资料--全套PPT
2020-02-19
javascript学习资料-全套PPT
2020-02-19
Java EE 5 Specification.pdf
2009-02-12
EJB3核心规范--java
2009-02-12
java idl 与 corba
2009-02-12
线程池与工作队列--Java 理论与实践
2009-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人