15 peterwanghao

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1k+

SQL语句merge into的用法

应用场景在批量更新大量的数据时,使用Insert 和Update操作会出现效率低下,甚至卡死的情况。改用 MERGE INTO 代替执行批量更新,会提升执行效率。merge into将源数据(来源于实际的表,视图,子查询)更新或插入到指定的表中(必须实际存在),好处是避免了多个insert 和update操作。merge into是一个目标性明确的操作符,不允许在一个merge 语句中对相同的行insert或update操作。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于insert+u

2020-07-24 13:56:07

Java中的匿名类与Lambda表达式

匿名类匿名类是一个没有名称的内部类,并且只能创建一个对象实例。当要实现某些“额外”功能(例如类或接口的重载方法)来创建对象的实例时,匿名类可能很有用,这时不必实际子类化。匿名类主要以两种方式创建:继承类(可以是抽象的或具体的)实现接口Java引入了匿名类的创建,以减少代码复杂性。如果我们创建一个单独的类来实现一个接口并使用它的实例来调用该方法,则会产生开销。而当我们从不在其他任何地方...

2019-12-27 11:20:03

Java中生成唯一ID的方法

有时我们不依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,这时就需要用程序来生成一个唯一的全局ID。UUID从Java 5开始, UUID 类提供了一种生成唯一ID的简单方法。UUID是通用唯一识别码 (Universally Unique Identifier)的缩写,UUID来源于OSF(Open Software Foundation,开源软件基金会)的D...

2019-12-19 15:47:36

Twitter的snowflake算法改进

Twitter的snowflake算法是在分布式系统中一种自增ID的算法,ID能够按照时间有序生成并且可以做到全局唯一。算法生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1)。Twitter是这样分配的:正数位(占1比特)+时间戳(占41比特)+机器id(占5比特)+数据中心(占5比特)+自增值(占12比特),总共64比特组...

2019-12-13 13:37:49

Netty精粹之基于EventLoop机制的高效线程模型

摘要: Infoq有篇文章提到通过Netty4+Thrift压缩二进制编码技术有人实现了10W TPS(1K的复杂POJO对象)跨节点远程服务调用,对于RPC应用来说高性能的三个主题永远是IO模型、数据协议、线程模型,10W TPS的测试结果一方面归功于Thrift方面压缩二进制编码技术的高效(这里有protobuf和thrift相关测试数据)。另一方面还要归功于Netty精心设计的高效线程模型。...

2019-11-29 13:19:11

Netty 核心概念介绍和简单示例

Netty是一个异步的,事件驱动的网络框架,我们可以使用它来开发高性能客户端和服务器。在本文中,我将解释一些基本的netty概念,以便当我们开始使用netty框架来构建我们自己的Http Web服务器和客户端时,很容易理解Netty术语。核心概念ChannelChannel是Java NIO的基础。它表示一个开放的连接,能够执行IO操作,例如读取和写入。Channel向开发人员提供以下内容...

2019-11-22 16:33:05

使用Guava EventBus实现Java组件间的通信

在构建企业应用程序时经常出现的一种情况是在一个过程成功后需要实现一系列业务流程,例如,如果您正在构建购物网站,则可能需要在产品付款成功后执行以下操作:购买后减少商店中可用的物品数量。向商店老板发送收据。向买方发送收据。在某些情况下,您可能希望这些过程对于产品购买而言是原子性的,也就是说,在发生产品购买之后,必须减少项目数量,如果在减少可用项目数量方面存在问题,则还原产品购买。通常会在事...

2019-11-14 17:47:11

解决ActiveMQ服务停掉后无限重连问题

断线重连机制是ActiveMQ的高可用性具体体现之一。ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL。默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,不断的从url参数中获取一个url来重试连接。但有时在做开发时可能不需要连接服务器,这时程序在后台出现了...

2019-11-08 16:14:36

使用SpotBug进行静态代码检查

在运行程序前我们可以通过编译来发现问题,但这样是远远不够的。这是因为在编译期间仅捕获到非常小的错误范围,即语法错误,无效引用等。当程序包含编译错误时,IDE会发出警告,但它无法防范其他类型的错误,例如运行时错误或逻辑错误。通过使用静态分析工具SpotBugs,浏览代码以查找某些“已知的坏味道”:可能会导致偶发性/间歇性问题,性能不佳等的事物。这些问题很难通过测试找到,因此通过检查通常是唯一可行的...

2019-11-07 18:46:51

Java注解的用处和使用

Java 注解(Annotation)又称为 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 (通过 解析注解 来使用这些数据)。 它也支持自定义 Java ...

2019-11-02 00:06:27

H5通过数据流方式播放视频

本文介绍如何通过H5页面通过数据流的方式播放服务端的视频文件,可以兼容PC、Android和IOS环境。H5页面可以通过<video> 标签来播放视频。一般的方式如下:<!DOCTYPE HTML><html><body><video src="/i/movie.mp4" controls="controls">your b...

2019-10-21 16:42:00

Seata分布式事务中间件Sample演示

Seata(Simple Extensible Autonomous Transaction Architecture)是2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的 分布式事务 解决方案。以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题。产生背景随着业务数据规模的快速发展,数据量越来越大,原有的单库单表模式逐渐成为瓶颈。这时需要对数据库进行了水平拆分,将...

2019-09-30 22:06:04

Java字符串比较方法equals的空指针异常

在Java语言中字符串比较有两种方式:== 和equals()。“==”比较的是针对两个String类型变量的引用,当两个String类型的变量指向同一个String对象(即同一个内存堆),则返回true。而equals()方法是对String对象封装的字符串内容进行比较,相同返回true。在用equals方法与其他值做比较的时候,有可能会导致抛出空指针异常。写一个小程序来举例说明:publ...

2019-09-26 16:10:01

分布式服务接口:Rest与RPC比较

分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的。一个Web服务提供服务API(Application Programming Interface),通过网络在客户端和服务器之间进行通信。服务接口调用大体上就分为两类:RPC(Remote Procedure Call)式和REST式 (Representational State Transfe...

2019-09-20 11:24:02

分布式事务中的Saga模式

微服务架构(MSA)已经变得非常流行。但是,一个常见问题是如何跨多个微服务管理分布式事务。当微服务架构将单体系统分解为自封装服务时,意味着单体系统中的本地事务现在分布到将按顺序调用的多个服务中。说到分布式事务,通常熟悉的是两阶段提交,TCC等常见模式。 初次之外还有基于Saga实现的分布式事务。什么是Saga?Saga事务模型又叫做长时间运行的事务(Long-running-transact...

2019-09-12 14:02:31

MySQL 5.7中对XA支持的改进

介绍XA的意思为“eXtended Architecture”,是The Open Group组织为分布式事务处理创建的标准。虽然MySQL 5.0是第一个支持XA的版本,但MySQL 5.7提升了XA支持的可靠性,修复了许多错误,并增加了整体测试用例覆盖率。背景XA解决了在分布式资源集中的单个事务中保留ACID属性的问题。资源本身可以是其他MySQL服务器,甚至是不同的数据库技术。XA的标...

2019-09-11 13:33:43

分布式事务处理中的幂等性

事务是指以全有或全无的方式执行的一系列操作。所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。以数据库为列,事物包含四个特性(ACID)原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。一致性(Consistency):事务的执行使数据从一个状态转换为另一...

2019-09-06 15:55:03

解决Maven报错:Plugin execution not covered by lifecycle configuration

当一个新的maven项目导入到工作空间中可能会遇到maven插件lifecycle configuration 错误,例如:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check (execution: valida...

2019-08-29 17:31:10

Spring JTA分布式事务实现

1.概述Java Transaction API,通常称为JTA,是用于管理 Java中的事务的API 。它允许我们以资源无关的方式启动,提交和回滚事务。根据用于管理事务的底层实现,Spring中的事务策略可以分为两个主要部分:单连接器策略(相当于本地事务管理器) - 底层技术使用单连接器。例如,JDBC使用连接级事务、Hibernate以及JDO使用会话级事务。可以应用使用AOP和拦截器...

2019-08-26 13:56:01

Spring事务管理

什么是事务在应用程序中,事务是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。事务划分边界,并且在这些边界内的所有操作都受到约束,并作为单个工作单元执行。事务管理的问题你可以根据自己的需求来管理事务,可以自己管理事务或使用EJB容器托管事务。如果使用JDBC则可以选择JDBC的事务管理API;...

2019-08-23 20:35:41

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。