深入理解 Web 协议 (三):HTTP 2

本篇将详细介绍 HTTP 2 协议的方方面面,知识点如下: HTTP 2 连接的建立 HTTP 2 中帧和流的关系 HTTP 2 中流量节省的奥秘:HPACK 算法 HTTP 2 协议中 Server Push 的能力 HTTP 2 为什么要实现流量控制? HTTP 2 协议遇到的问题 一、HTTP ... »

SpringBoot 2.0 中 HikariCP 数据库连接池原理解析

本文重点讲解了FastList 与ConcurrentBag 的优化原理,通过 ThreadLocal 将连接池中的连接按线程做一次预分配,避免直接竞争共享资源,减少并发CAS带来的CPU CACHE的频繁失效,达到显著提升性能的效果。 ... »

MySQL 5.6.35 索引优化导致的死锁案例解析

本文描述了在一次压测过程中,由于Index Merge优化导致的死锁,详细描述了死锁产生的原因以及解决方案,并顺便介绍了Mysql索引结构及加锁机制。通过本文,大家可以掌握死锁分析的基本理论和一般方法,为工作中快速解决实际出现的死锁提供思路。 ... »

初识 D3.js :打造专属可视化

随着现在自定义可视化的需求日益增长,Highcharts、echarts等高度封装的可视化框架已经无法满足用户各种强定制性的可视化需求了,这个时候D3的无限定制的能力就脱颖而出。如果想要通过D3完成可视化,除了对于D3本身API的学习, 关于web标准的HTML, SVG, CSS, Javascr... ... »

领域驱动设计(DDD)实践之路(一)

领域驱动设计是当前比较热门的话题,不过我发现大家对DDD也存有一些误区,使其渐渐成了一门“高深的玄学”,经常被大家束之高阁。本人通过学习实践思考,逐渐领悟到DDD作为一种思想,其实离我们很近。当我们掌握个中缘由、领悟其精髓以后一定能够“笑傲代码”,掌握解决软件核心复杂性的内功心法。 ... »

深入理解 web 协议(一)- http 包体传输

本文介绍如何使用chrome的network面板和wireshark抓包工具进行http协议的分析,重点介绍http1.x协议中的“队头拥塞”的概念,以及该问题的应对方式和浏览器的限制策略。 ... »

Tomcat 应用中并行流带来的类加载问题

随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)这一特性提升代码执行效率。但是,作者发现在Tomcat容器中使用并行流会出现动态加载类失败的情况,通过对比Tomcat多个版本的源码,结合并行流和JVM类加载机制的原理,成功定位到问题来源。本文对这个问题展开分析,并给出解... ... »

函数式编程杂谈

比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断演进,逐层推导出复杂的运算。本文通过函数式编程的一些趣味用法来阐述学习函数式编程的奇妙之处。 ... »

基于 Lerna 管理 packages 的 Monorepo 项目最佳实践

对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Lerna管理多个package,并和其它工具整合,打造高效、完美的工作流,最终形成一个最佳实践 ... »