自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (7)
  • 收藏
  • 关注

转载 详解蚂蚁金服 SOFAJRaft:生产级高性能 Java 实现

前言SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。SOFAJRaft 是从百度的 braft 移植而来,做了一些优化和改进,感谢百度 braft 团队开源了如此优秀的 C++ Raft 实现。GitHub 地址:https://github.com/alipay/sofa-jraft之前,我们有一篇介绍 SOFAJRaft 的文章,可在文末获得链接,延续这个内容,今天的演讲分为三部分,先简要介

2020-07-29 18:17:11 1091

转载 说清 Epoll 原理

从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。笔者于是决定编写此文,让缺乏专业背景知识的读者也能够明白 Epoll 的原理。本文核心思想是:要让读者清晰明白

2020-07-28 15:35:15 622

转载 同步器节点的waitStatus解释

CANCELLED 取消状态SIGNAL 等待触发状态,前节点可能是head或者前节点为取消状态CANCELLEDCONDITION 等待条件状态,在等待队列中PROPAGATE 状态需要向后传播让我们看看AbstractQueuedSynchronizer改变状态的方法:shouldParkAfterFailedAcquire(Node pred, Node node) / * @param pred 前继节点 * @param nod..

2020-07-17 18:28:04 3382

转载 Kafka分区与消费者的关系

https://www.cnblogs.com/kaichenkai/p/11959392.htmlhttps://www.cnblogs.com/cjsblog/p/9664536.html

2020-07-16 09:56:46 903

转载 Java方法内联

一、概念方法内联就是把调用方函数代码"复制"到调用方函数中,减少因函数调用开销的技术函数调用过程1、首先会有个执行栈,存储它们的局部变量、方法名、动态连接2、当一个方法被调用,一个新的栈帧会被加到栈顶,分配的本地变量和参数会存储在这个栈帧3、跳转到目标方法代码执行4、方法返回的时候,本地方法和参数被销毁,栈顶被移除5、返回原来的地址执行注:这就是通常说的函数调用的压栈和出栈过程,因此,函数调用需要有一定的时间开销和空间开销,当一个方法体不大,但又频繁被调用时,这个..

2020-07-10 19:08:15 1253

转载 大家都说 Java 反射效率低,你知道原因在哪里么

预备知识了解 Java 反射基本用法看完本文可以达到什么程度了解 Java 反射原理及 Java 反射效率低的原因文章概览我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见。我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用。但是反射的效率到底低多少?反射效率低的原因在哪里?这篇文章就来探索一下这些问题。由于本机上安装的是 openjdk 12,所以这里就使用 openjdk 12 源码进行分析。我们先看结论,然后分析...

2020-07-10 18:53:27 1145

转载 notify,notifyAll区别(生产者消费者案例)

区别notify:只会唤醒等待该锁的其中一个线程。notifyAll:唤醒等待该锁的所有线程。既然notify会唤醒一个线程,并获取锁,notifyAll会唤醒所有线程并根据算法选取其中一个线程获取锁,那最终结果不都是只有一个线程获取锁吗?那JDK为什么还需要做出来这两个方法呢?这两种同步方法本质上会有什么区别?这还要从对象内部锁的调度说起。对象内部锁其实,每个对象都拥有两个池,分别为锁池(EntrySet)和(WaitSet)等待池。锁池:假如已经有线程A获取到了锁,这时候又有线程B需

2020-07-10 18:25:46 1243

转载 分布式事务-TX-LCN的应用

1. 什么情况下需要使用分布式事务?使用的场景很多,先举一个常见的:在微服务系统中,如果一个业务需要使用到不同的微服务,并且不同的微服务对应不同的数据库。打个比方:电商平台有一个客户下订单的业务逻辑,这个业务逻辑涉及到两个微服务,一个是库存服务(库存减一),另一个是订单服务(订单数加一),示意图如下:如果在执行这个业务逻辑时没有使用分布式事务,当库存与订单其中一个出现故障时,就很可能出现这样的情况:库存数据库的值减少了 1,但是订单数据库没有变化;或是库存没变化,多了一个订单,也就是出现了数

2020-07-09 12:11:23 879

转载 分布式事务-简介+案例

什么是分布式事务?分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。相较于非分布式系统的事务,分布式事务由于在多JVM中进行事务管理,无法直接通过控制提交来达到事务管理,所以在分布式事务中,我们引入了两段式提交协议,为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。什么是两段式提交协议?阶段一:开始向

2020-07-09 11:23:14 1045

转载 基于LCN彻底解决分布式事务

一 . 理论知识1.数据库管理系统中事务(transaction)的四个特性:简称ACID(这种特性简称刚性事物)原子性(Atomicity)原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。一致性(Consistency)一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。隔离性(Isolation)多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。..

2020-07-09 11:03:46 2354 1

转载 MVCC快照读&事务隔离级别&当前读

MVCC快照读《通过数据版本使数据库的事务读写不用加锁就可以保证事务的一致性》事务隔离级别《提交读和可重复读的事务隔离级别作用的数据范围则分别对应不同的快照版本范围》通过以上两种机制的结合实现InnoDB事务下的高并发性。注:本来只有串读隔离级别才可以解决幻读问题,而实际上由于快照读的特性使可重复读也解决了幻读问题。注:当前读是因为innodb默认为它加入了间隙锁,防止在事务期间对相关数据集插入记录,从而避免出现幻读。使用场景:1. 快照读(snapshot read)简单的sele

2020-07-07 19:25:19 1670 2

转载 为什么 HashMap 的加载因子是0.75?

为什么HashMap需要加载因子? 解决冲突有什么方法? 1. 开放定址法 2. 再哈希法 3. 建立一个公共溢出区 4. 链地址法(拉链法) 为什么HashMap加载因子一定是0.75?而不是0.8,0.6? 那么为什么不可以是0.8或者0.6呢? 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0...

2020-07-07 19:06:17 1817

转载 Java-脚本引擎解析-QLExpress

https://github.com/alibaba/qlExpress一、背景介绍由阿里的电商业务规则、表达式(布尔组合)、特殊数学公式计算(高精度)、语法分析、脚本二次定制等强需求而设计的一门动态脚本引擎解析工具。 在阿里集团有很强的影响力,同时为了自身不断优化、发扬开源贡献精神,于2012年开源。QLExpress脚本引擎被广泛应用在阿里的电商业务场景,具有以下的一些特性:1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。 2、高效执行,比较耗时的脚本编译过

2020-07-07 17:35:10 4062

转载 【重要】MySQL中MVCC的正确打开方式(源码佐证)

序 最近在学习MySQL中的MVCC,看了网上的各种版本,什么创建版本号、删除版本号,一开始看的时候,好像很对的样子,但实际上很多都是错误的。经过好几天的查阅对比,在几篇博客的帮助下,才算是觉得正确理解了MySQL中的MVCC。 本文是对MVCC的一些总结,并找到相关源码佐证(talk is cheap,show me the code!网上错误的解释实在是太多了)。如果你刚接触MVCC,或者是被网上的各种解释弄得快要晕了,请坚持看到最后,一定会对你有收获。...

2020-07-06 19:32:50 911 1

转载 JVM系列之垃圾回收器(下篇)——Shenandoah垃圾回收器

1. 前言虽然目前大部分系统使用的是 JDK8,使用的垃圾回收器也大概率为 G1 或者更古老的垃圾回收器,但是截止到目前为止,JDK 已经更新到 JDK14 了,垃圾回收器也几乎在每一次迭代中被更新,目前最前沿的垃圾回收器为 Shenandoah 和 ZGC,这两款垃圾回收器都是以低延时为主要目的。由于内容较多,本文先只介绍 Shenandoah,下一篇再介绍 ZGC。2. Shenandoah 概述Shenandoah 的目标是将垃圾回收的停顿时间控制在 10ms 以内,这意味着 Shen

2020-07-06 18:12:21 1482

转载 jvm 性能调优工具之 jcmd

实践jcmd是jdk自带的一个神器,能够很方便的对java程序进行profiling。jcmd其实可以替代很多常用的工具,比如jstak,jmap。接下来让我们了解下什么是jcmd,jcmd能够帮助我们定位什么问题?工作中我们如何使用jcmd。从jdk7开始,jcmd就是jdk自带的一个工具。在正确配置了JDK的PATH的情况下,我们可以直接在命令行中执行jcmd:[root@vincent-testing ~]# jcmd -hUsage: jcmd <pid | main clas

2020-07-06 17:15:00 1721

转载 信用风险缓释工具【CRM】【图解】

编者语:CRM全称是Credit Risk Mitigation,是信用风险缓释工具的意思,即通过风险控制措施来降低借款人未能及时、足额偿还欠款而造成的风险损失或影响程度。本文以漫画的形式介绍了CRM及其它相关概念。敬请阅读。CRM全称是Credit Risk Mitigation,是信用风险缓释工具的意思,即通过风险控制措施来降低借款人未能及时、足额偿还欠款而造成的风险损失或影响程度。本文以漫画的形式介绍了CRM及其它相关概念。敬请阅读。一段时间来,由于部分民营企业违约提升,金融机构对

2020-07-06 16:57:54 7859 1

转载 newSQL 到底是什么?

数据库发展至今已经有3代了:SQL,传统关系型数据库,例如 MySQL noSQL,例如 MongoDB newSQLSQL 的问题互联网在本世纪初开始迅速发展,互联网应用的用户规模、数据量都越来越大,并且要求7X24小时在线。传统关系型数据库在这种环境下成为了瓶颈,通常有2种解决方法:升级服务器硬件虽然提升了性能,但总有天花板。数据分片,使用分布式集群结构对单点数据库进行数据分片,存放到由廉价机器组成的分布式的集群里。可扩展性更好了,但也带来了新的麻烦。以前在一个库里

2020-07-03 21:35:38 1433

转载 了解TiDB基础入门

由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb。其实也不能说换,由于tidb和mysql几乎完全兼容,所以我们的程序没有任何改动就完成了数据库从mysql到TiDb的转换,TiDB 是一个分布式 NewSQL SQL 、 NoSQL 和 NewSQL 的优缺点比较 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。下面是对有关资料的整理还有一些扩展内

2020-07-03 21:34:42 685

Zookeeper资源文件

2017-03-20

Zookeeper基础知识

2017-03-20

Zookeeper初识

2017-03-20

使用exe4j 制作java启动程序的 等候界面

使用exe4j 制作java启动程序的 等候界面,使用了 JDK6 自带splash功能。 备注 exe/jre 文件夹中 包含了 jre ,但由于大小问题,无法上传。

2014-06-12

jquery浮动窗

基于jquery 的悬浮窗功能,有一些基本的功能

2014-01-23

java在线预览office

java使用openoffice swftools flexpaper2.1.9 实现在线预览功能

2013-12-21

空空如也

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

TA关注的人

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