Entry

flink onTimer定时器实现定时需求

杀马特。学长 韩版系。学妹 提交于 2020-08-17 17:21:14
1. 业务需求 接收实时数据流数据,实时更新状态,并且每隔一定的时间,将所有状态数据输出。 实时数据类型:("张", 1) 状态更新:第一个元素为key,将第二个元素全部缓存起来,放到list中,最后将key和其对应的list全部输出。 2. 实现方案 使用processFunction算子,在processElement函数中仅注册一次定时器,然后在onTimer函数中处理定时器任务,并且重新注册定时器。 3. 实现代码 3.1 source /** * 每隔1秒发送一个tuple2类型的数据,第一个字段值为随机的一个姓氏,第二个字段为自增的数字 **/ class MySourceTuple2 extends SourceFunction[(String, Long)] { var isRunning: Boolean = true val names: List[String] = List("张", "王", "李", "赵") private val random = new Random() var number: Long = 1 override def run(ctx: SourceFunction.SourceContext[(String, Long)]): Unit = { while (true) { val index: Int = random

「从零单排canal 04」 启动模块deployer源码解析

偶尔善良 提交于 2020-08-17 17:08:41
基于1.1.5-alpha版本,具体源码笔记可以参考我的github:https://github.com/saigu/JavaKnowledgeGraph/tree/master/code_reading/canal 本文将对canal的启动模块deployer进行分析。 Deployer模块(绿色部分)在整个系统中的角色如下图所示,用来启动canal-server. 模块内的类如下: 为了能带着目的看源码,以几个问题开头,带着问题来一起探索deployer模块的源码。 CanalServer启动过程中配置如何加载? CanalServer启动过程中涉及哪些组件? 集群模式的canalServer,是如何实现instance的HA呢? 每个canalServer又是怎么获取admin上的配置变更呢? 1.入口类CanalLauncher 这个类是整个canal-server的入口类。负责配置加载和启动canal-server。 主流程如下: 加载canal.properties的配置内容 根据canal.admin.manager是否为空判断是否是admin控制,如果不是admin控制,就直接根据canal.properties的配置来了 如果是admin控制,使用PlainCanalConfigClient获取远程配置

PHP实现一个轻量级容器

时光怂恿深爱的人放手 提交于 2020-08-17 16:55:33
什么是容器 在开发过程中,经常会用到的一个概率就是依赖注入。我们借助依懒注入来解耦代码,选择性的按需加载服务,而这些通常都是借助容器来实现。 容器实现对类的统一管理,并且确保对象实例的唯一性 常用的容器网上有很多,如 PHP-DI 、 YII-DI 等各种实现,通常他们要么大而全,要么高度适配特定业务,与实际需要存在冲突。 出于需要,我们自己造一个轻量级的轮子,为了保持规范,我们基于 PSR-11 来实现。 PSR-11 PSR 是 php-fig 提供的标准建议,虽然不是官方组织,但是得到广泛认可。PSR-11 提供了容器接口。他包含 ContainerInterface 和 两个异常接口,提供使用建议。 /** * Describes the interface of a container that exposes methods to read its entries. */ interface ContainerInterface { /** * Finds an entry of the container by its identifier and returns it. * * @param string $id Identifier of the entry to look for. * * @throws NotFoundExceptionInterface

程序员使用IDEA这些插件后,办公效率提升100%(持续更新中)

旧巷老猫 提交于 2020-08-17 16:38:30
IDEA一些不错的插件分享 目录 IDEA一些不错的插件分享 插件集合 CamelCase Translation LiveEdit MarkDown Navigator Jrebel CheckStyle-IDEA Alibaba Java Coding Guidelines Ideavim Maven Helper FindBugs-IDEA GsonFormat Key promoter X .ignore JVM Debuger Memory View CMD Support Batch Scripts Support BashSupport Docker integration JMH plugin ANSI Highlighter Ideolog RestfulToolkit CodeGlance Lombok plugin activate-power-mode Background Image Plus Iedis Mongo Plugin VisualVM Launcher GenerateAllSetter MyBatisCodeHelperPro Easy Code IDEA Mind Map SequenceDiagram Material Theme UI String Manipulation JUnit Generator V2.0 设置方法 插件集合

思维导图整理Linux进程描述符

放肆的年华 提交于 2020-08-17 13:25:47
[导读] 内核是怎么工作的,首先要理解进程管理,进程调度,本文开始阅读进程管理部分,首先从进程的抽象描述开始。抽象是软件工程的灵魂,而对于Linux操作系统而言,更是将抽象思想体现的淋漓尽致。本文从抽象建模的角度来对Linux进程描述符进行个人解读,同时也参考了内核文档,一些网络信息。 注:代码基于linux-5.4.31,是一个最新的长期支持稳定版本。 整理匆忙,限于水平,文章中错误一定很多,真诚恳请有这方面擅长的朋友帮忙指出,不甚感激! 进程的基本概念 进程 or 线程 or 任务? 进程 :进程是一个正在运行的程序实例,由可执行的目标代码组成,通常从某些硬媒介(如磁盘,闪存等)读取并加载到内存中。 但是,从内核的角度来看,涉及很多相关的工作内容。 操作系统存储和管理有关任何当前正在运行的程序的其他信息:地址空间,内存映射,用于读/写操作的打开文件,进程状态,线程等。 进程是正在执行的计算机程序的实例。它包含程序代码及其当前活动。取决于操作系统(OS),进程可能由同时执行指令的多个执行线程组成。基于进程的多任务处理使您可以在使用文本编辑器的同时运行Java编译器。在单个CPU中采用多个进程时,使用了各种内存上下文之间的上下文切换。每个过程都有其自己的变量的完整集合。 但是,在Linux中,如果不讨论线程(有时称为轻量级进程),进程的抽象是不完整的。 根据定义

千亿级金融场景下,基于Pulsar的云原生消息队列有怎样的表现?

巧了我就是萌 提交于 2020-08-17 12:05:55
​导语 | 云原生场景,多语言、多种协议兼容,任意多的消息 Topic、任意多的消费者,性能的按需快速扩展成为消息队列基本的要求。本文是对腾讯TEG技术委员会专家工程师刘德志老师在云+社区沙龙 online 的分享整理,介绍基于 Apache Pulsar 的新一代存储计算分离设计的消息队列 TDMQ,希望与大家一同交流。 点击视频查看完整直播回放 一、金融级别云原生消息队列功能需求 1. 腾讯计费背景介绍 腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,其核心是帮助用户与产品,安全、便捷的完成支付和收款,在交易过程中帮助产品盈收实现最大化。 如果把腾讯比喻为一个饭店,腾讯计费就相当于门口柜台的收费平台,你在饭店的消费,可以用微信支付、银行卡、苹果支付、QQ钱包、充值卡抵扣券或其他方式支付。 这里包括了 ToC 场景,比如用户往自己的 QB 账户充值,或者在游戏终端购买道具、游戏币,比如王者荣耀购买英雄或者皮肤等。也包括 ToB 场景,比如广告主、网红主播、腾讯云客户的扣款收费,都是通过腾讯计费这套平台提供的服务。 平台承载了腾讯公司每天数亿收入的大盘,为 180+ 个国家(地区)、万亿业务代码、100W+ 计算商户提供服务,托管账户总量 300 多亿,是一个全方位一站式计费平台。 腾讯计费平台有四个版本,分别是基础版、企业版、海外版、行业版,为众多广告客户提供服务

JDK1.7中HashMap底层实现原理

本秂侑毒 提交于 2020-08-17 10:24:56
一、数据结构 HashMap中的数据结构是 数组 +单链表的组合,以键值对(key-value)的形式存储元素的, 通过 put()和get()方法储存和获取对象。 (方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链头,最先加入的放在链尾】,) 二、实现原理 成员变量 源码分析: /** 初始容量,默认16 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** 最大初始容量,2^30 */ static final int MAXIMUM_CAPACITY = 1 << 30 ; /** 负载因子,默认0.75,负载因子越小,hash冲突机率越低 */ static final float DEFAULT_LOAD_FACTOR = 0.75f ; /** 初始化一个Entry的空数组 */ static final Entry<?,?>[] EMPTY_TABLE = {}; /** 将初始化好的空数组赋值给table,table数组是HashMap实际存储数据的地方,并不在EMPTY_TABLE数组中 */ transient Entry<K,V>[] table = (Entry<K,V> [])

Elastic Search 修改索引类型

做~自己de王妃 提交于 2020-08-17 08:52:45
以官方数据索引为例子 /shakespeare 1.获取原来的索引结构 GET /shakespeare 执行结果: { "shakespeare" : { "aliases" : {}, "mappings" : { "properties" : { "line_id" : { "type" : "long" }, "line_number" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "play_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "speaker" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "speech_number" : { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } }, "text_entry

面试常考:Java中synchronized和volatile有什么区别?

南笙酒味 提交于 2020-08-17 08:44:38
在我的博客和公众号中,发表过很多篇关于并发编程的文章,之前的文章中我们介绍过了两个在Java并发编程中比较重要的两个关键字:synchronized和volatile 我们简单回顾一下相关内容: 1、Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。 2、synchronized通过加锁的方式,使得其在需要原子性、可见性和有序性这三种特性的时候都可以作为其中一种解决方案,看起来是“万能”的。的确,大部分并发控制操作都能使用synchronized来完成。 3、volatile通过在volatile变量的操作前后插入内存屏障的方式,保证了变量在并发场景下的可见性和有序性。 4、volatile关键字是无法保证原子性的,而synchronized通过monitorenter和monitorexit两个指令,可以保证被synchronized修饰的代码在同一时间只能被一个线程访问,即可保证不会出现CPU时间片在多个线程间切换,即可保证原子性。 那么,我们知道,synchronized和volatile两个关键字是Java并发编程中经常用到的两个关键字,而且,通过前面的回顾,我们知道synchronized可以保证并发编程中不会出现原子性、可见性和有序性问题

假如用王者荣耀的方式学习webpack

风格不统一 提交于 2020-08-17 08:25:18
英雄介绍 崴博.派克诞生于遥远西方的勇士之地,拥有着高超的机械技艺,善于运用各种工具来实现一些看似不可能完成的事。游历王者大陆时机缘巧合遇到了年轻的墨子,与之成为好友。后协助大宗师墨子建造了大陆第一雄城,被后人称为上古文明终结后最伟大的奇迹——长安!长安以“方舟”为驱动核心中枢,配合层出不断的机关,守护着华丽的大明宫。派克为人低调,不喜出现在大众视野,他是需求人性启迪的理想主义者,信奉着唯有光荣进化才能实现人类的全部潜能。 姓名: 崴博.派克(webpack) 热度排名: T0 胜率: 98% 登场率: 80%(中大型项目90%) Ban率: 10% 操作难度: ★★★★★ 技能: 被动:(自成长型魔械技术) cd:0秒 派克开场就会携带者他的专属装备【loader】,能够提供给他属性,并且能在商店里升级为进阶物品【plugin】,从而增强他的技能。 虹吸能量(entry 入口) 派克指定初始装备开始进化的准备,期间享受韧性加成20%,升级后可指定多个装备进化。 (entry用于指定入口文件,可配置一个或多个。) 基础使用: module.exports = { entry: './path/to/my/entry/file.js' // 默认可配置一个路径字符串 }; 进阶使用: 字符串:默认普通路径字符串 ./src 。 1 const config = { 2 entry: