12 OkidoGreen

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 14

MySQL中的semi-join

http://www.linuxidc.com/Linux/2015-05/117523.htmhttps://cloud.tencent.com/developer/article/14277021. 背景介绍什么是semi-join?所谓的semi-join是指semi-join子查询。 当一张表在另一张表找到匹配的记录之后,半连接(semi-jion)返回第一张表中的记录。与条件连接相反,即使在右节点中找到几条匹配的记录,左节点 的表也只会返回一条记录。另外,右节点的表一条记录也不会返回。

2020-08-04 14:18:30

详解蚂蚁金服 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

说清 Epoll 原理

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

2020-07-28 15:35:15

同步器节点的waitStatus解释

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

2020-07-17 18:28:04

Kafka分区与消费者的关系

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

2020-07-16 09:56:46

Java方法内联

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

2020-07-10 19:08:15

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

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

2020-07-10 18:53:27

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

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

2020-07-10 18:25:46

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

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

2020-07-09 12:11:23

分布式事务-简介+案例

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

2020-07-09 11:23:14

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

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

2020-07-09 11:03:46

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

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

2020-07-07 19:25:19

为什么 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

Java-脚本引擎解析-QLExpress

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

2020-07-07 17:35:10

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

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

2020-07-06 19:32:50

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

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

2020-07-06 18:12:21

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

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

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

2020-07-06 16:57:54

newSQL 到底是什么?

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

2020-07-03 21:35:38

了解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

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取