Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?

前言

在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。

但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。

本文就来从历史源头说道说道。

阅读全文

初谈架构

工作了很多年,架构也做了五六年。今天突然在思考什么是架构,为什么要做架构,架构怎么来做,架构到底是设计的还是演进的?以下就这些思考做一下总结,其中不当之处欢迎不吝赐教。

1.什么是架构?

个人认为架构是服务于商业目标的,商业目标规范了一定的业务需求,性能需求,安全需求,扩展性需求及其他的非功能性需求。在设计架构的过程中,需要根据对应的需求去决定使用什么样的技术,使用什么样的技术需要根据团队现有的技能水平及当前技术发展的阶段去进行取舍。架构就是根据明确的商业目标进行合理的规划,对不同的方案进行抉择,解决问题的过程。

阅读全文

分布式消息中间件 RocketMQ:概述与源码编译篇

一、前言

Apache RocketMQ 是一个分布式消息中间件,其具有低延迟、高性能和可靠性、万亿级容量、灵活的可扩展性特性;它是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于2017年9月25日成为 Apache 的顶级项目。 阅读全文

Guava 源码分析(Cache 原理【二阶段】)

前言

在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。

文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。

在开始之前先补习下 Java 自带的两个特性,Guava 中都有具体的应用。

阅读全文

Apache Pulsar介绍

Apache Pulsar

What is Pulsar

“Pulsar is a distributed pub-sub messaging platform with a very flexible messaging model and an intuitive client API.”

Pulsar是pub-sub模式的分布式消息平台,拥有灵活的消息模型和直观的客户端API。

Pulsar由雅虎开发并开源的下一代消息系统,目前是Apache软件基金会的孵化器项目。

阅读全文

《以太坊官方文档》翻译邀请

从本月开始并发网开始组织翻译区块链相关技术,欢迎大家踊跃参加,另外如果你有区块链技术相关文章也欢迎发布在并发网上。本月组织翻译《以太坊官方文档》。

如何领取

通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。领取完成之后,译文最好在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译。请谨慎领取,很多文章领取了没有翻译,导致这篇文章最终没有翻译。

阅读全文

Spring&Mybaits数据库配置解惑

一、前言

一般我们会在datasource.xml中进行如下配置,但是其中每个配置项原理和用途是什么,并不是那么清楚,如果不清楚的话,在使用时候就很有可能会遇到坑,所以下面对这些配置项进行一一解说 阅读全文

《Python3.6官方文档》– 第十一章

第二部分涵盖了更高阶的模块,支持更专业的编程需求,这些模块很少出现在小的脚本中。

格式化输出

reprlib 提供一系列repr() 对很大或深度层叠的容器进行定制化的压缩展示。

import reprlib

reprlib.repr(set('supercalifragilisticexpialidocious'))

pprint 提供更成熟的控制,将内建对象和用户定义对象更易读地打印出来,当结果长于一行时,”pretty printer”添加行数和缩进来将数据结构更清楚地展现出来。

阅读全文

一次线上问题排查所引发的思考

前言

之前或多或少分享过一些内存模型对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。

直到有一天你会碰到线上奇奇怪怪的问题,如:

  • 线程执行一个任务迟迟没有返回,应用假死。
  • 接口响应缓慢,甚至请求超时。
  • CPU 高负载运行。

这类问题并不像一个空指针、数组越界这样明显好查,这时就需要刚才提到的内存模型、对象创建、线程等相关知识结合在一起来排查问题了。

正好这次借助之前的一次生产问题来聊聊如何排查和解决问题。

阅读全文

MySQL 中基于 XA 实现的分布式事务

五、MySQL 中基于 XA 实现的分布式事务

5.1 XA协议

首先我们来简要看下分布式事务处理的XA规范

 

image.png

阅读全文

《架构方法论》分层架构

原文链接  作者;方腾飞

软件架构有多种架构模式,其中分层架构是目前最流行,应用最广泛的架构模式。那么什么是分层架构?为什么要采用分层架构?一个系统应该分几层合适?分层架构的好处有哪些?这些问题将是这篇文章要探讨的。大家可以在阅读本文之前先思考下这些问题,然后再看看本文的观点,看完之后欢迎通过评论进行交流。

什么是分层架构?

分层架构是将软件模块按照水平切分的方式分成多个层。一个系统由多层组成,每层由多个模块组成。那么到底分几层合适?我认为根据不同的复杂度分成不同的层次,最基本的是分层架构是三层,即表现层,领域层和数据持久层。而《领域驱动设计》Eric Evans建议分四层分别是表现层,应用层、领域层和基础层,业务逻辑在领域层,基础层比持久层的范围更大,不仅可以提供持久层服务,还可以提供缓存等服务。四层中的应用层是对三层架构中领域层进行进一步拆分。但是无论怎么分层,业务逻辑永远在领域层。

阅读全文

何为脏读、不可重复读、幻读

2.0 前言

事务的隔离性是指多个事务并发执行的时候相互之间不受到彼此的干扰的特性,隔离性是事务ACID特性中的I,根据隔离程度从低到高分为Read Uncommitted(读未提交),Read Committed(读已提交),Repeatable Read(可重复读),Serializable(串行化)四种隔离级别。在具体介绍事务隔离性前先介绍几个名词,以便说明数据库在并发操作时候可能存在的问题,以便展开来探讨这四种隔离级别对应存在哪些问题,哪些隔离级别解决了哪些问题。 阅读全文

认知升级-成败取决于见识

最近在读吴军的《谷歌方法论》和《见识》,结合自己的理解分享一下里面的观点。一本书其实观点也就一页纸这么多,其他的内容都是在举例子证明这些观点。不同的人在不同的年龄段对书中观点的理解会不一样,因为观点的理解和自己的经历有关,经历和观点产生共鸣才能有所收获。所以我并没有把书中全部的观点总结出来,而是结合自己的经历来做一次分享。

人生学会做减法

生有涯,知无涯。如果做得事情不对,就算提高了效率也是徒劳,事情多效率也很难提升,所以人生要学会做减法,要学会少做事,甚至不做事,意思是自己要能识别重点做哪些事,哪些事可以不做,这些事不做天不会塌下来。因为如果把时间集中起来将事情做的比别人好,会带来十倍的收益。比如你在学习架构,可以花一个月的时间来系统化学习写一篇长篇文章,价值一定远大于你一晚上写出来的短文。人在工作中容易捡芝麻丢西瓜,喜欢做简单的事情,真正有创造性的工作做不来,捡几百个芝麻不如一个西瓜。我们需要能够跳出思维定式,换一个角度来判断一件事情的重要性,需要舍弃很多利益。能力晋升一个台阶,职责影响力增加一个数量级。大家可以思考下自己在工作中哪些是在捡芝麻,哪些是在做西瓜。

阅读全文

分布式事务- TCC编程式模式

一、前言

严格遵守ACID的分布式事务我们称为刚性事务,而遵循BASE理论(基本可用:在故障出现时保证核心功能可用,软状态:允许中间状态出现,最终一致性:不要求分布式事务打成中时间点数据都是一致性的,但是保证达到某个时间点后,数据就处于了一致性了)的事务我们称为柔性事务,其中TCC编程模式就属于柔性事务,本文我们来阐述其理论。 阅读全文

《Python3.6官方文档》– 第一章

1. 开胃小菜

如果你有许多在电脑上的工作要做,并发现其中的任务一些是可以自动化的。 例如,你可能希望执行一个能够搜索并替换大量的文本文件程序,或者是有需要以一种复杂的方式去重命名和重新排列一堆照片文件。 又或许你想写一个小的自定义数据库或专门的GUI应用程序,或简单的游戏。

如果你是一个专业的软件开发人员,你可能需要开发一个引入数个C / C ++ / Java库的程序,但发现常规的写/编译/测试/重新编译的开发方式太慢了。 也许你正在为这样一个库编写一个测试套件并发觉为它编写测试代码是一项乏味的任务。 或者,你希望使用一种可扩展的语言写一个程序,但是你并不想设计和实现一个全新的语言。

那么,Python就是为你量身定制的。

阅读全文

return top