自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 守护线程(daemon)与用户线程

在说明守护线程之前我们需要先了解什么情况下JVM程序会退出,或者说什么情况下Java程序会退出运行?JDK官方文档中对JVM程序退出时机的描述:The Java Virtual Matchine exits when the only threads running are all daemon threads.翻译成中文:只有运行的线程都是守护线程的时候,JVM才会正常退出运行。当然像调用System.exit()方法这种特殊情况除外。一、什么是守护线程默认情况下,子线程从父线程那继承是否

2020-07-21 11:38:11 375

原创 初识线程——Thread源码解析

一、什么是线程 计算机系统当中我们将一个任务称之为进程,每个进程中又包含一个或多个执行单元,这个执行单元我们称之为线程(线程又被称作轻量级进程)。线程是操作系统能够进行运算调度的最小单位。程序员可以利用它来进行多处理器编程,比如对于计算密集型任务,我们可以通过多线程来进行提速。二、线程并发 在实际生活中并行是指一系列任务同时执行,在计算机系统当中我们要实现一系列任务...

2020-07-16 15:02:28 327

原创 Java内存模型:解决可见性、有序性和原子性问题

在并发编程基础:线程安全问题的源头一文中,我们讲了在并发场景中导致线程安全的源头——可见性、原子性、有序性。这三者在编程领域属于共性问题,所有的编程语言都会遇到,Java 在诞生之初就支持多线程,自然也有针对这三者的技术方案,而且在编程语言领域处于领先地位。所以在这一篇中讲一下Java是如何保证多线程下的可见性、原子性、有序性的。内存模型每一种CPU的设计实现可能是不同的,有的可能对CPU利用率和执行效率要求很高,所以它的乱序执行程度很高,有的可能要求更低,所以乱序执行程度很低。假如我们要编写一个跨

2020-07-09 15:25:33 455

原创 操作系统层面以下(硬件、软件)对解决并发问题——可见性、有序性、原子性的支持

在并发编程基础:线程安全问题的源头一文中介绍了多线程下产生一系列线程安全的问题源头——可见性、有序性、原子性。既然产生了线程 安全问题,那么就要解决问题。本篇文章就介绍一下操作系统以下(Java是建立在操作系统以上)对解决这些问题提供的支持。首先我们先说一下带有高速缓存的CPU执行计算的过程:程序以及数据被加载到主内存; 指令和数据被加载到CPU的高速缓存; CPU执行指令,把结果写到高速缓存; 高速缓存中的数据写回主内存。一、缓存一致性协议——解决CPU层面缓存一致性问题缓存一致性协议

2020-07-09 15:25:04 528

原创 并发编程基础:线程安全问题的源头

对程序员来说,解决线程安全问题一直是我们项目中非常重要的一个环节,比如微服务(分布式)中的分布式锁问题,单体应用中各种加锁问题、单例等。这一切的线程安全问题到底是什么导致的呢,这就是我们接下来要挖掘的问题——可见性、原子性、有序性。物理计算机的内存模型发展史 问题根源 随着计算机技术的不断进步,计算机的CPU、内存、I/O 设备都在不断更新迭代,速度也越来越快。但是,三者之间的速...

2020-07-09 15:24:52 292

原创 传播方式为REQUIRED的子事务因事务完成导致不再执行commit操作

今天日常环境中出现了一个事务相关bug,具体问题是这样的:我们有一个事件监听服务,监听到的各种事件都在这个里面处理。现在我们有一个业务单元初始化的时候会同步过来一批客户信息,事件监听服务里处理这批数据并批量插入数据库中,我们业务代码调用了平台框架中提供的批量处理操作,该操作会循环处理每一条数据,因为我们每插入一条数据会相应操作好几张表单,所以每个循环都会开启一个事务,即一条处理失败不影响其他数据的插入。但是推到日常环境中去之后发现,一条插入失败,所有都失败了,这明显不符合业务需求。所以查找bug,最后终于找

2020-07-06 16:33:54 250

原创 Mybatis中的StatementType与动态解析时#{}和${}的不同

背景,写一个需求,展示数据的结果需要将查询出来的结果列转行,但是发现需要列转行的数据是动态的,没办法确定有多少个,所以需要动态的拼接sql处理。起初设想是在MyBatis里面去动态拼接,然后尝试多次放弃了。。。要动态拼接的sql如下,下面是静态固定的几个列,实际需要查出来循环拼接的:然后选择在java控制层去处理了:【1】java中拼接,重点标注了底色:List<PageData> flNameList = xinchouService.getZiDuanByStatus(p

2020-06-28 15:50:42 376

转载 预编译语句(Prepared Statements)介绍,以MySQL为例

1. 背景本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本。2. 预编译语句是什么通常我们的一条sql在db接收到最终执行完毕返回可以分为下面三个过程:词法和语义解析 优化sql语句,制定执行计划 执行并返回结果我们把这种普通语句称作Immediate Statements。但是很多情况,我们的一条sql语句可能会反复执行,或者

2020-06-28 14:55:15 1243

原创 Flink的自定义函数与有状态函数的实现

概述

2020-05-28 16:47:25 1495

原创 常用的Flink Rest API接口使用

上传jar包接口请求路径:http://hadoop3.test.yunwei.puppet.dh:40610/jars/upload请求方式:POST请求参数:设置请求头 application/java-archive返回结果:{ "status": "success", "filename": "d750fe29-7d5b-404f-a984-d0690f35ea6e_flink-4.jar"}请求实例:提交任务接口请求路径:http...

2020-05-28 13:42:44 13431 3

原创 linux对外暴露端口可以被外部访问

在linux中以standalone的方式启动flink集群,但是在外部不能访问到8081端口,怀疑是端口没有对外暴漏的问题,在Linux中输入如下命令后,可以正常访问到该端口:/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT...

2020-05-27 16:01:44 2017

原创 Flink状态管理、一致性检查点和保存点

概述

2020-05-19 10:26:19 718

原创 Flink控制任务调度:作业链与处理槽共享组(slot-sharing-group)

概述其实这两个概念我们可以看作:资源共享链与资源共享组。当我们编写完一个Flink程序,从Client开始执行——>JobManager——>TaskManager——>Slot启动并执行Task的过程中,会对我们提交的执行计划进行优化,其中有两个比较重要的优化过程是:任务链与处理槽共享组,前者是对执行效率的优化,后者是对内存资源的优化。作业链一、执行过程 Chain:Flink会尽可能地将多个oper...

2020-05-14 16:25:33 5442 2

原创 快速了解Flink——数据架构、执行流程等

一、什么是FlinkApache Flink官网的描述:Apache Flink is a framework and distributed processing engine for stateful computations overunbounded and boundeddata streams. Flink has been designed to run inall c...

2020-05-13 21:15:03 1216

原创 如何给VMware中虚拟机设置固定IP

一、在菜单栏选择编辑→ 虚拟网络编辑器 注:NAT模式配置:上面的“使用本地DHCP服务……”这一项是没有钩选的,默认的设置是启动DHCP服务的,NAT会自动给虚拟机分配IP,但是我们需要将虚拟机的IP固定下来,所...

2020-04-10 16:37:37 3480

原创 JVM性能分析:Jstat命令详解与Arthas

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,有众多的可...

2020-04-09 20:15:33 967

原创 Redis缓存淘汰策略与key过期删除策略

一、前言Redis的缓存淘汰策略与key过期删除策略是两个不同的概念。缓存淘汰策略是指当redis内存超出设置的maxmemory的值时,会根据用户使用的缓存淘汰策略,删除一部分缓存(即使你的key没有设置过期时间,依然会被清除),从而腾出一部分内存空间,提供正常的读写服务。key过期策略针对的是设置了过期时间的key,因为你设置的key即使过期了,也不会立即被删除,而是会通过使用定期删除+惰...

2020-03-31 10:53:59 444

原创 操作系统内核、IO模型浅析

一、操作系统内核操作系统是管理计算机硬件与软件资源,并提供与用户交互的程序,它的核心是操作系统内核。内核,就是计算机学科意义上的操作系统,直接与硬件交互,提供CPU时间片管理、中断、内存管理、IO管理等等;一般意义上的操作系统包含的东西要更多一些,至少要有用户交互的基本程序,比如一个命令行界面和基本的指令(文件遍历、进程管理等等),或者图形界面的桌面和文件浏览器。 内核程序一直占据内存中的一...

2020-03-27 14:47:30 601

原创 Redis持久化浅谈

一、RDB什么是RDB RDB原理 如何触发RDB RDB优势 RDB劣势

2020-03-24 20:20:20 127

转载 异或的运用

原文链接:https://blog.csdn.net/qq_22238021/article/details/79652785————————————————异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。异或的性质:...

2020-02-27 11:16:25 382

转载 分布式事务- 三阶段协议

一、前言前面我们介绍了为解决分布式事务而提出来的的二阶段协议,本文首先来讲解二阶段的不足,然后阐述三阶段协议,三阶段协议也是一个标准的协议,也并没有说具体如何实现。二、二阶段协议存在的问题主要是同步阻塞问题,在二阶段的第一阶段所有参与者接受到事务协调器的事务准备请求后,会在本地开启并执行事务,但是没有提交事务。所有参与者等待第二阶段事务协调器发出事务提交或者回滚后才会提交或者回滚事务。...

2020-02-25 15:29:26 111

转载 探秘分布式解决方案: 分布式事务——微服务架构下的主流解决方案之TCC

转自原文:点我说完了分布式事务最核心的思想(2PC) –> [探秘分布式解决方案: 分布式事务——从核心思想之2PC(两阶段提交)开始]那么现在进入到更加复杂的场景。像这种跨库调用之类的,一线互联网公司早就不玩这一套东西了。这都9102年了,上来就是微服务架构。我这么多服务,你整个啥跨库调用呢?一个服务可能同时调用多个其他的服务。这多个其他的服务中都要执行SQL语句,修...

2020-02-25 14:29:31 270

转载 探秘分布式解决方案: 分布式事务——从核心思想之2PC(两阶段提交)开始 探秘分布式解决方案: 分布式事务——从核心思想之

原文地址:点我为什么要有分布式事务?本地单机事务,有点工作经验的肯定不陌生,主要用于处理操作量大,复杂度高的数据,一般都由数据库自己实现。开启一个事务,进行了多个对数据库进行更新(增删改)的语句后,可以自由的选择commit或rollback来结束事务。可以从根源上保证多个数据集合的同步。比如一个订单系统,用户支付订单后,订单表的订单状态被改为已支付,...

2020-02-25 14:20:45 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除