保存成功
订阅成功
保存失败,请重试
提交成功
咬定青松

咬定青松

大数据技术专家
作者系大数据技术专家,先后就职过阿里,网易,挖财等公司,有着近十年的服务器后端和大数据领域的开发经验,对高并发和大数据技术体系有广泛的使用经验和深刻理解。微信公众号:码上观世界...更多
创作文章10

深入理解 JVM Metaspace

Metaspace 是 JDK 1.8 之后引入用于替代之前的持久代区,对此本文对其做个全面深入介绍,内容包括: 1. Metaspace 是什么?因何而来? 2. 分配 Metaspace 和释放 Metaspace 的时机; 3. Metaspace 体系结构; 4. 匿名类的元空间释放; 5. 对象内存布局和压缩指针; 6. 元空间的配置 本文适合对 JVM 有一定基础或者概念的同学,比如了解 JVM 的堆、方法区以及了解Java 对象在内存的布局等。
JVM
76 订阅

关于 TCP 三次握手和四次挥手,你需要掌握的知识点

TCP 并非距离我们很远,相反有过服务端开发经历的同学都知道掌握 TCP 的基础知识的重要性,比如知道 TCP 三次握手和四次挥手,但是知道为什么要这样吗?服务器出现大量 close\_wait 和 time_wait,这是正常现象吗?怎么避免呢? 本文就这些常见问题梳理成文: 1. TCP 连接和关闭的状态流转和过程; 2. 常见问题原因分析和解决 本文适合于网络初学者和想进一步温习提升的同学。
TCP
122 订阅

限流原理和实现

限流在微服务中几乎是不可或缺的功能之一,不论是 Guava 还是 Spring Cloud 都提供了相应的二方包或者服务组件,并且常见的限流方案模型也比比揭示,但是您真的理解吗? 通过本文你可以了解到: 1. 基本的限流模型:滑动窗口、漏斗和令牌的基本原理和现存问题; 2. 了解以上模型相应的核心功能实现; 3. 分布式环境下如何进行分布式限流。 相信通过核心原理的实现,不仅减少阅读开源方案的无所适从,而且能更快抓住要领。 本文适合于不满足于如何使用限流方案的初学者,或者对限流方案一知半解但不知道如何下手实现的人员。
微服务
193 订阅

应用 Flask 开发在线证书颁发系统

在线证书颁发系统指的是根据用户提交的输入信息,自动生成证书,如荣誉证书等。通常涉及到图像处理。一个完整的在线颁发证书系统涉及到网页前后端的服务系统、证书颁发模块、数据存储模块等。本文通过一个实际的需求:武汉新冠援助人信息证书颁发系统。通过导入捐款人名单信息,自动生成捐助证书,可以在线搜索和查询、浏览证书。为了系统的简洁性,数据存储在 Sqlite。通过该例,读者可以了解到: 1. Flask 快捷开发网站的基本用法; 2. Flask 跟 Bootstrap、jQuery 的结合,实现前后端分离的做法; 3. 证书颁发的实现方法; 4. Sqlite 基本用法 本文适合于对以上感兴趣的任何用户。
Flask
77 订阅

Neo4j 在 Airflow 中的应用

Airflow 是非常流行的基于用户自定义开发创建任务的调度系统,然而不足之处是缺少任务之间依赖关系的元数据,导致日常优化和问题排查困难重重,尤其是当涉及到跨 DAG 依赖的情况下,这个问题更加显著。在数仓建设实践中,如何处理任务(表)的血缘关系是必不可少的内容,目前 Airflow 是无法满足的,本文提出一种基于 Neo4j 的方案,解析 Airflow 程序自动生成任务依赖关系和 DAG 依赖关系,转换成图的格式存储在 Neo4j,然后通过可视化的方式展示血缘关系。实践验证,该方案效果显著。 本文详细介绍: 1. Airflow 如何解析程序,生成任务和 DAG 的依赖关系; 2. 依赖关系在 Neo4j 的存储设计; 3. Neo4j 查询常用方法在血缘关系的使用;
Neo4j
75 订阅

如何基于 Django 快速搭建自己的网站

Django 是一个 Python 语言实现的、MVC 架构模式的开源 Web 框架。Django 以其优雅和简约使 Web 应用开发变得极其容易。本文通过示例演示如何快速搭建自己的站点,内容涉及到环境部署、项目目录结构、URL映射以及页面模板编写等。在此基础上对于展示如何实现网站高级功能比如搜索,内容涉及到搜索分词、索引建立、更新和搜索词的高亮展示等。 本文还基于 Django开发了一个动态网站框架,包含网站前端和后台两部分。前端负责展示,后端负责网站架构设计和内容发布等功能,导航条和分级类目基于网站管理后台动态添加。 作为示例:读者可以参看[该站点](http://www.zcd.xn--55qx5d/),这是本人为友人搭建的一个网站,虽然页面内容样式还有较大改进空间,但是足以感受到Django部署网站的便捷和高效。 本文适合想学习 Django 的朋友,以及想快速基于本站点构建自己网站的朋友。本文内容包含Django的整个部署过程和网站源代码。
Django
135 订阅

Antlr 快速入门指南

Antlr(ANother Tool for Language Recognition)是一个功能强大的解析程序,它基于编译原理理论将用户编写的语法规则经过词法分析和语法分析后形成一颗语法树,然后在此基础上提供深度优先遍历算法,按照监听器模式或者访问者模式对访问到的每个节点执行回调方法,这样用户只需要编写自己处理节点的业务逻辑,而不需要关心语法如何识别和如何遍历,大大简化了开发语言程序的难度。 我们知道的大名鼎鼎的大数据处理框架 Hive、Spark、Presto 都是基于 Antlr 解析 SQL 语法规则,然后在语法树的基础上生成自己的执行计划。除了这些用途外,Antlr 还可以用于语言翻译等、规则处理等各种领域。 本文通过编译原理基础为开始,通过示例程序详细介绍如何基于 Antlr 开发应用程序,在文章中涉及到: 1. Antlr 的开发环境、调试工具的配置和使用(包括 Antlr 的原生工具用法和 IDEA 中使用插件调试); 2. Antlr 的基本语法规则使用; 3. Antlr 的监听器和访问器 的使用示例。 然后在访问器的基础上实现一个表达式计算程序,相信通过本文的介绍,能够让读者快速入门 Antlr,为阅读 Hive、Spark 源码打下基础。 本文适合于对 Antlr 感兴趣,以及想通过 Antlr 开发语言处理的任何人。文末附带推荐的权威中文翻译教材。
编程语言
93 订阅

Datax 源码解析和性能优化

Datax 是阿里开源的用于异构数据源之间的同步工具,如 MySQL 到 HDFS,MongoDB 到 ElasticSearch 等等,反之亦然。由于其良好的设计,同步效率极高,在互联网公司大数据部门得到广泛使用。 然而在实际使用中,仍然有许多调优的地方,如果不懂其工作原理,就很难真正发挥其威力,本文凭借自己在跨大洋(杭州到美国西部)全量数据同步取得的成功经验,试图通过源码解析的方式 还原其设计原理,让大家能更好的驾驭 Datax。 通过本文,您将有如下几点收获: 1. Datax 工作流程 2. Datax 插件机制 3. Datax 同步实现 本文适合对 Datax 有一定使用基础或者想更进一步理解其实现原理的人员。
116 订阅

Airflow 源码解析和性能优化

Airflow 是 Airbnb 开源的,基于分布式任务队列 Celery 基础上的定时调度系统,它将不同的任务类型抽象成 operator,并提供 API 编排各任务之间的依赖关系和配置属性,形成 DAG,从而简化任务提交和维护成本。 同时 Airflow 还提供任务重跑,标记成功,查看日志等的可视化操作 UI 和更为灵活丰富的客户端命令行接口。另外可配置和可扩展的架构设计不仅支持单机单进程还支持基于 Celery 和 Mesos 的分布式集群运行,任务的消息通知也可以在 Redis 和 RabbitMQ 等中自由选择,使得 Airflow 可以灵活扩展。 实现一个分布式调度系统本身不难,难的是如何提供友好的交互,包括灵活的任务组织、提交、更新、日常任务维护等。更为重要的是调度引擎和执行引擎的稳定性,在这方面 Airflow 提供的方案很值得借鉴和学习。同时 Airflow 基于 Python 编写,为开发效率和快速验证思路带来了较大优势,在实际使用过程中,如何基于默认配置去调优都少不了对其调度流程和原理的掌握,本篇文章就为有志于从源码级别去了解其工作流程和优化的朋友准备的。 通过本篇文章,您可以了解到: 1. DAG 的加载、解析以及任务实例的生成方式 2. Airflow 如何定时调度,提交任务到 Celery 或者 Mesos 集群 3. Airflow worker 是如何执行派发下来的任务
调度
112 订阅

如何使用微信小程序开发打车应用

一个小程序通常包含前端和后端,前端主要涉及内容可视化展示,后端主要涉及数据的存储和查询。为了快速开发模型,后端可以使用微信提供的后端云数据库。对于打车应用,又分为司机端和乘客端。司机端包含的功能包括:认证(上传证件)、查看附近的订单、接单、会话、订单详情和历史接单记录等。乘客端的功能包括查看附近的司机列表,发布乘车请求、邀请接单、会话、历史订单列表等。这些功能都包含在本次发布的内容中,(附源代码)。 通过本文,你可以了解到: 1. 如何开发一款自己的微信小程序 2. 如何使用小程序常见的定位服务、地图服务、存储服务等 3. 如何使用小程序常见的 tab 组件、地图组件、按钮组件和事件处理、导航组件以及一个自定义的会话对话功能等 本文适合于对小程序感兴趣的开发者和想开发自己的应用小程序的读者,通过本文读者可以了解这些功能是如何通过小程序实现的,还可以基于该小程序开发自己的小程序,本小程序会让你少走很多弯路。
微信小程序
110 订阅