Java-JVM原理

Java内存模型 JMM TODO JVM内存区域 * 程序计数器:线程私有的,jvm通过改变计数器的值来选取下一条需要执行的字节码指令,唯一一个没有规定任何OutOfMemoryError情况的区域 * Java虚拟机栈:线程私有的,每个方法执行时创建栈帧,方法被调用就是栈帧在栈中从入栈到出栈的过程。栈帧的组成部分如下, * 局部变量表:存放编译期可知的各种jvm基本数据类型、对象引用。todo 待完善 * 操作数栈: * 动态链接: * 方法返回地址: * 本地方法栈:线程私有的,本地(Native)方法所
阅读更多
计算机知识拓扑

Java-语言基础

概念 编译型语言和解释型语言的区别 * 编译型语言:在程序执行之前,整个源代码会被编译成机器码或者字节码,生成可执行文件。执行时直接运行编译后的代码,速度快,但跨平台性较差。 * 解释型语言:在程序执行时,助航解释执行源代码,不生成独立的可执行文件。通常由解释器动态解释并执行代码,跨平台性好,但执行速度相对较慢。 典型的编译型语言如C、C++,但型的解释型语言如Python、JavaScript 数据类型 基础数据类型及其包装类型,缓存池 关于几种初始化Integer方式,初始化对象的区别 代码示例 >folded1 2 3 4 5 6 7 8 9 10 11 12 13 14
阅读更多

多线程顺序打印问题

三个线程分别打印 A,B,C 三个线程分别打印 A,B,C,要求这三个线程一起运行,打印 n 次,输出形如“ABCABCABC….”的字符串 使用Lock 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import java.util.concurrent.locks.ReentrantLock; public class ABC { static class ABCPrinter { p
阅读更多
MySQL实战45讲-阅读笔记

MySQL实战45讲-阅读笔记

SQL查询语句的执行 执行流程如下 具体拆解如下, 1. 连接器 * 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。使用长连接可能会导致MySQL占用内存快速上涨,原因是执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放。解决方案有两个 * 定期断开长连接 * MySQL 5.7或更新版本可以执行mysql_reset_connection来重新初始化连接资源 2. 查询缓存 * 除非是静态表,否则不建议开启查询缓存。表只要有一次更
阅读更多
DolphinScheduler源码阅读日记(三)通信机制

DolphinScheduler源码阅读日记(三)通信机制

概述 DolphinScheduler的通信机制是通过Netty来实现的,在Netty上加做了一些封装和抽象 Netty简介 功能介绍 Netty 是一个基于 Java 的高性能网络应用框架,广泛用于开发高并发、低延迟的网络服务器和客户端。它提供了一组丰富的 API 和工具,简化了网络通信的开发过程,特别是在处理大量并发连接和数据流时。 * 为各种传输类型(阻塞和非阻塞socket)提供统一API * 基于灵活且可扩展的事件模型,允许明确分离关注点 * 高度可定制的线程模型——单线程、一个或多个线程池(如 SEDA) * 真正的无连接数据报socket支持(自3.1版起)
阅读更多
创建第一个Akka应用

创建第一个Akka应用

关于本文 * 版本:2.6之后的版本为收费版本,2.6版本的scala版使用文档见v2.6使用文档,flink在用的也是这个版本 * api类型:classic比较灵活,试用一下classic版本的api 构建应用Demo 配置如下的pom文件 pom.xml >folded1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 阅读更多
DolphinScheduler源码阅读日记(二)MasterServer工作流调度源码解析

DolphinScheduler源码阅读日记(二)MasterServer工作流调度源码解析

系统架构 MasterServer MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。 MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进行容错处理。 MasterServer基于netty提供监听服务。 该服务内主要包含: * DistributedQuartz: 分布式调度组件,主要负责定时任务的启停操作,当quartz调起任务后,Master内部会有线程池具体负责处理任务的后续
阅读更多
DolphinScheduler源码阅读日记(一)开发环境搭建

DolphinScheduler源码阅读日记(一)开发环境搭建

系统环境 环境版本系统macOS 12.2.1/m1 proJREZulu 8.62.0.19-CA-macos-aarch64Maven3.8.6Node18.4.0Pnpm7.3.0Zookeeper3.8.4MySQL8.0.28DolphinScheduler3.2.0搭建项目开发环境 项目下载 从github下载源码 从dolphinscheduler源码仓库下载源码 1 2 git clone https://github.com/apache/dolphinscheduler git checkout 3.2.0 # 切换到3.2.0分支 Zookeeper 下载二进制
阅读更多
Flink源码编译

Flink源码编译

前言 学习一下Flink的执行原理,需要在本地编译源码好debug运行。 编译环境 环境版本系统m1 pro macbook pro 14JREZulu 8.62.0.19-CA-macos-aarch64Flinkrelease-1.12.7-rc1编译过程 1 mvn clean package -DskipTests -Dhadoop.version=2.7.1 参考下Building Apache Flink from Source 编译过程中产生如下异常并解决 * 报错:安装node和npm失败1 [ERROR] Failed to execut
阅读更多