translator

JMH和Disruptor

时光怂恿深爱的人放手 提交于 2020-08-07 21:25:59
官网 http://openjdk.java.net/projects/code-tools/jmh/ 创建JMH测试 创建Maven项目,添加依赖 < ? xml version = " 1.0 " encoding = " UTF-8 " ? > < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi : schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion > 4.0 . 0 < / modelVersion > < properties > < project . build . sourceEncoding > UTF - 8 < / project . build . sourceEncoding > < encoding > UTF - 8 < / encoding > < java . version > 1.8 < / java . version > < maven . compiler . source

TCP/IP协议讲的明明白白

旧城冷巷雨未停 提交于 2020-08-07 08:25:09
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。 作者:Java技术架构来源: 今日头条 | 2019-06-17 08:30 收藏 分享 一图看完本文 一、 计算机网络体系结构分层 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。

Disruptor 高性能并发框架二次封装

◇◆丶佛笑我妖孽 提交于 2020-08-06 01:01:04
Disruptor是一款java高性能无锁并发处理框架。和JDK中的BlockingQueue有相似处,但是它的处理速度非常快!!!号称“一个线程一秒钟可以处理600W个订单”(反正渣渣电脑是没体会到)。 Disruptor功能十分强大,比如消费者阻塞等待;生产者-消费者一对一、一对多、多对一、多对多;构建消费者串/并行处理链等等。 具体的概念模型可以参考: https://www.cnblogs.com/haiq/p/4112689.html 下面是我基于Disruptor框架封装的工具。采用fluent编码风格,简化了Disruptor的调用。 package com.gravel.demo.test.disruptor; import com.gravel.demo.test.disruptor.base.EventProducer; import com.gravel.demo.test.disruptor.base.Publisher; import com.gravel.demo.test.disruptor.base.PublisherBuilder; /** * @Auther: syh * @Date: 2020/7/8 * @Description: Disruptor 高性能异步处理框架 */ public class DisruptorTest {

【DDD】领域驱动设计实践 —— 框架实现

邮差的信 提交于 2020-08-04 10:45:33
本文主要介绍了基于SpringMVC+mybatis对DDD思想的落地实现框架。本文为【DDD】系列文章中的其中一篇,其他内容可参考: 使用领域驱动设计思想实现业务系统 。 框架实现图 该框架实现基本和DDD的指导思想契合,主要分为四层,且将关注点放在了domain层。下面将逐层介绍各个组件的职责。 框架详述 User Interface层 门面层,对外以各种协议提供服务,该层需要明确定义支持的服务协议、契约等。包含: dto 包括request和response两部分,通过它定义入参和出参的契约,在dto层可以使用基础设施层的validation组件完成入参格式校验; controller 支持不同访问协议的控制器实现,比如:http/restful风格、tcp/二进制流协议、mq消息/json对象等等。 controller使用基础设施层公共组件完成许多通用的工作: 调用RequestMapping(SpringMVC公共组件)完成servlet路由; 调用checklogin完成登录态/权限校验; 调用logging组件完成日志记录; 调用message-resource组件完成错误信息转义,支持I18N; application层 service 应用服务层,组合domain层的领域对象和基础设施层的公共组件,根据业务需要包装出多变的服务,以适应多变的业务服务需求。

Disruptor 高性能并发框架二次封装

一个人想着一个人 提交于 2020-07-29 00:46:26
Disruptor是一款java高性能无锁并发处理框架。和JDK中的BlockingQueue有相似处,但是它的处理速度非常快!!!号称“一个线程一秒钟可以处理600W个订单”(反正渣渣电脑是没体会到)。 Disruptor功能十分强大,比如消费者阻塞等待;生产者-消费者一对一、一对多、多对一、多对多;构建消费者串/并行处理链等等。 具体的概念模型可以参考: https://www.cnblogs.com/haiq/p/4112689.html 下面是我基于Disruptor框架封装的工具。采用fluent编码风格,简化了Disruptor的调用。 package com.gravel.demo.test.disruptor; import com.gravel.demo.test.disruptor.base.EventProducer; import com.gravel.demo.test.disruptor.base.Publisher; import com.gravel.demo.test.disruptor.base.PublisherBuilder; /** * @Auther: syh * @Date: 2020/7/8 * @Description: Disruptor 高性能异步处理框架 */ public class DisruptorTest {

Istio 1.6.3 发布-新特性与快速安装

北城以北 提交于 2020-07-28 01:47:13
Istio 1.6.3 发布了。Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。具体来说,Istio 是一个开源服务网格平台,它确保微服务在处理故障时以指定的方式相互连接。 更新内容 修复了监视资源被删除后,操作员无法重新创建的问题 修复了Istio因消息崩溃的问题: proto.Message is *client.QuotaSpecBinding, not *client.QuotaSpecBinding 添加了对 k8s.v1.cni.cncf.io/networks 注释的支持 更新了 SidecarInjectionSpec 以从 .Values.global 读取 imagePullSecret 更新了水平分割以跳过解析主机名的网关 修复了 istioctl experimental metrics ,仅将错误响应代码标记为 erros 更新了 istioctl analyze 以对输出格式进行排序 更新了网关以使用 proxyMetadata 更新了 Prometheus Sidecar 以使用 proxyMetadata 启用 gateway.runAsRoot 时从 PodSecurityContext 中删除了无效的配置 升级更新 从已有版本升级,运行: istioctl

构建分布式秒杀系统:Disruptor高性能队列

瘦欲@ 提交于 2020-04-25 13:47:49
秒杀架构持续优化中,基于自身认知不足之处在所难免,也请大家指正,共同进步。 希望可以把阻塞队列ArrayBlockingQueue这个队列替换成Disruptor,由于之前曾接触过这个东西,听说很不错,正好借此机会整合进来。 简介 LMAX Disruptor是一个高性能的线程间消息库。它源于LMAX对并发性,性能和非阻塞算法的研究,如今构成了Exchange基础架构的核心部分。 Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。 Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 在这里你可以跟BlockingQueue队列作比对,简单的理解为它是一种高效的"生产者-消费者"模型,先了解后深入底层原理。 核心 写代码案例之前,大家最好先了解 Disruptor 的核心概念,至少知道它是如何运作的。 1、Ring Buffer 如其名,环形的缓冲区。曾经 RingBuffer 是 Disruptor 中的最主要的对象,但从3.0版本开始,其职责被简化为仅仅负责对通过 Disruptor 进行交换的数据(事件)进行存储和更新。在一些更高级的应用场景中,Ring Buffer

每个新手程序员都应该知道的Python技巧

送分小仙女□ 提交于 2020-04-23 11:04:09
当下,Python 比以往的任何时候都更加流行,人们每天都在实践着 Python 是多么的强大且易用。 我从事 Python 编程已经有几年时间了,但是最近6个月才是全职的。下面列举的这些事情,是我最开始使用 Python 的时候,就希望清楚的: 字符串操作 列表推导 Lambda 和 Map 函数 在一行里使用 if elif 和 else 条件判断 zip() 函数 这里注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教! 字符串操作 Python 非常擅长使用类似数学运算符 + 和 * 来操作字符串 >>> my_string = "Hi Medium..!" >>> print(my_string * 2) Hi Medium..!Hi Medium..! >>> print(my_string + " I love Python" * 2) Hi Medium..! I love Python I love Python 复制代码 我们也可以非常方便的对字符串做取反操作,只需要使用 [::-1] 就可以,同时该操作还不仅仅局限于字符串操作。 >>>

SqlsessionTemplate线程安全解密

一世执手 提交于 2020-03-26 17:34:15
3 月,跳不动了?>>> SqlsessionTemplate线程安全解密 springboot中使用的是SqlsessionTemplate,而不是DefaultSqlsession,这个类是单例的,如何保证线程安全呢? 类图 源码解析 org.mybatis.spring.SqlSessionTemplate#selectList(java.lang.String),委托给代理 @Override public <E> List<E> selectList(String statement) { return this.sqlSessionProxy.<E> selectList(statement); } org.mybatis.spring.SqlSessionTemplate.SqlSessionInterceptor#invoke,代理类核心方法 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 获取Sqlsession SqlSession sqlSession = getSqlSession( SqlSessionTemplate.this.sqlSessionFactory, SqlSessionTemplate.this

浅谈Adapter适配器模式

倖福魔咒の 提交于 2020-02-26 11:57:27
一、什么是适配器模式 适配器这个词我们应该很熟悉,天天都在使用,手机充电时,电源线头头就叫电源适配器,干什么用的呢?把220V电压转换成手机充电时使用的电压,那么适配器是不是很好理解了,下面看一下定义。 Adapter适配器模式,将一个类的接口转换成客户希望的另外一个接口。使原本由于接口不兼容而不能一起工作的那些类可以一起工作了。 适配器模式有“类适配器”和“对象适配器”两种不同的形式。 二、类适配器 通过继承进行适配(类间继承)。URL结构图如下: 1、Target Target目标角色,该角色定义把其它类转换成期望接口,通常情况下是一个接口或一个抽象类,一般不会是实现类。 public interface Target { public void request(); } 2、Adaptee Adaptee源角色,想把谁转换为目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象。 public class Adaptee { public void specificRequest() { System.out.println("特殊请求"); } } 3、Adapter Adapter适配器角色,是适配器模式的核心角色,它的职责是通过继承或类关联的方式把源角色转换成目标角色。 public class Adapter extends Adaptee