Blackhole

实时计算 pv/uv Demo

不羁的心 提交于 2021-01-22 14:13:10
本文由阿里巴巴高级技术专家邓小勇(静行)分享,主要用 Demo 演示如何通过实时计算 Flink 实时计算pv/uv的场景。内容将从以下几部分进行: App 计算 pv/uv 场景 实现方案(From Flink-1.11) DDL DML 实操 首先为大家展示一个比较简单的pv/uv场景。以下图所示的APP为例,整个业务构架需要几个入口,包括用户访问入口、作者入口和运营人员入口。在运营人员入口进去可以查看系统的一些指标,比如app 的pv/uv。 在开始介绍如何计算实时pv/uv之前,可以先了解下上图的10个字段和它们对应的含义。通过这些字段可以了解到,用户在APP上的任何一次操作都会在数据库中留下一条对应的记录,所有记录就是该用户在APP上的操作流水。 那么如何实时计算pv/uv呢? 有两种方案。 方案一,MySQL的变更数据同步到Kafka后进行实时计算。由于 Flink在设计之初是具有流表二象性的,所以在 Flink 1.1版本之后,就可以实现 Flink 对 Kafka变更数据的处理了,包括处理一些修改、删除等操作。处理后的结果会放到阿里云Hologress里,方便用户进行大数据查询和分析。 方案二,从上图可以看到方案一比方案二只多了一个Kafka,在 Flink 1.11 版本之后,可以直接通过Debezium连接MySQL,然后经过Flink 实时计算

bash特性

我的未来我决定 提交于 2020-08-10 23:52:11
bash特性 一、命令别名:(自定义命令) 用alias命令查看 alias命令可以用来定义和现实命令的别名 但是使用alias命令定义的别名,其生命仅为当前shell的生命期 对于每个用户来说,都有一个私有的bash文件,用于保存别名; ~/.bashrc 注意: 1、alias命令的效果仅限于当前shell的生命期 2、如果修改.bashrc配置文件,其中保存的别名并不会立即生效,并且在重新加载按该文件内容后,才会生效。并且永久生效 3、为了保证设置的别名有效,通常两种操作都要做 撤销别名: unalias:只需+别名名称 二、命令历史: bash命令会保存用户曾经执行的命令,方便用户重复执行命令 通过bash提供的历史命令文件来永久保存以前执行过的命令,每个用户都有其私有的历史文件 登录shell时,bash会自动读取~/.bash_history文件所记录的所有 -c清空历史缓冲区的历史命令 -d OFFSET删除特定历史条目 重复使用上一个命令: 1、上方向键 2、ctrl+p 3、!-1 4、!! 重复执行缓冲区中的命令: !#重复执行历史编号为#的命令 !type从历史缓冲区中查找最后一次执行过的以“type”开头的命令,并执行 !?type从历史缓冲区中查找最后一次执行过的包含“type”的命令,并执行 !-#执行缓冲区中倒数第#条命令 ctrl

JVM系列之:String.intern的性能

∥☆過路亽.° 提交于 2020-08-06 04:01:09
简介 String对象有个特殊的StringTable字符串常量池,为了减少Heap中生成的字符串的数量,推荐尽量直接使用String Table中的字符串常量池中的元素。 那么String.intern的性能怎么样呢?我们一起来看一下。 String.intern和G1字符串去重的区别 之前我们提到了,String.intern方法会返回字符串常量池中的字符串对象的引用。 而G1垃圾回收器的字符串去重的功能其实和String.intern有点不一样,G1是让两个字符串的底层指向同一个byte[]数组。 有图为证: 上图中的String1和String2指向的是同一个byte[]数组。 String.intern的性能 我们看下intern方法的定义: public native String intern(); 大家可以看到这是一个native的方法。native底层肯定是C++实现的。 那么是不是native方法一定会比java方法快呢? 其实native方法有这样几个耗时点: native方法需要调用JDK-JVM接口,实际上是会浪费时间的。 性能会受到native方法中HashTable实现方法的制约,如果在高并发的情况下,native的HashTable的实现可能成为性能的制约因素。 举个例子 还是用JMH工具来进行性能分析,我们使用String.intern

MySQL系列--3.数据类型和连接查询

放肆的年华 提交于 2020-05-05 13:52:30
1、存储引擎 数据创建,查询,更新和删除操作都是通过数据引擎来进行的。不同的存储引擎存储限制不同,支持不同的索引机制等。 查询数据库支持的存储引擎 MySQL 5.7.2支持的存储引擎有:InnoDB,MRG_MYISAM,MEMORY,BLACKHOLE,MyISAM,CSV,ARCHIVE,PERFORMANCE_SCHEMA,FEDERATED。默认的存储引擎是InnoDB。 SHOW ENGINES; mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions

华为交换基本配置命令--S5700为例

倾然丶 夕夏残阳落幕 提交于 2020-04-27 20:17:54
华为S5700交换配置命令 Sava 配置完交换机后保存当前配置命令 System-view 进入系统视图命令 Display current-configuration 查询当前配置 Console口进入用户界面 User-interface console 0 进入第0个console用户界面 Authentication-mode passwd 配置从console口登入交换机模式为密码模式 Set authentication password cipher admin@123 配置从console口登入交换机的密码 Vlan 10 创建一个vlan Interface meth 0/0/1 进入交换机的第一个管理网口 ip address 192.168.1.10 255.255.255.0 设置网口ip及掩码 int gigabitethernet 0/0/1 进入第一个业务网口 port link-type access trunk hybrid 配置三个接口模式 port default vlan 10 把此接口加入vlan port access trunk hybrid allow-pass vlan 10 20 30 设置此接口可以通过的vlan int gig 0/0/1 clear configuration this undo shutdown

验证ArrayList插入同样数据使用指定容量和默认容量的效率

陌路散爱 提交于 2020-04-26 19:00:06
验证ArrayList插入同样数据使用指定容量和默认容量的效率 之前在研究ArrayList源码的时候看到过一篇文章 Java 8 容器源码-ArrayList 里面说当ArrayList在进行插入的时候,如果容量不够那么就会进行自动扩容,扩容大小是现有容量的1.5倍,具体代码可以参考下面。 此处的默认容量是指当构建空的ArrayList构造函数时给分配的默认数组容量大小,为10。 /** * 扩容,保证ArrayList至少能存储minCapacity个元素 * 第一次扩容,逻辑为newCapacity = oldCapacity + (oldCapacity >> 1);即在原有的容量基础上增加一半。第一次扩容后,如果容量还是小于minCapacity,就将容量扩充为minCapacity。 * * @param minCapacity 想要的最小容量 */ private void grow(int minCapacity) { // 获取当前数组的容量 int oldCapacity = elementData.length; // 扩容。新的容量=当前容量+当前容量/2.即将当前容量增加一半。 int newCapacity = oldCapacity + (oldCapacity >> 1); //如果扩容后的容量还是小于想要的最小容量 if (newCapacity

Net Core 2.1 日志记录框架NLog+Mysql配置

♀尐吖头ヾ 提交于 2020-04-24 22:54:43
NLog是什么? 这里还是简单介绍一下吧,为了让小白也知道。NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET Core。NLog可以通过简单地配置就可以可以很方便的写入多个日志仓库中(数据库,文件,控制台)。 NLog在Net Core中怎么用啊? 用之前你得新建一个asp.net core项目吧。这里以net core api为例吧。如下图所示是博主刚刚创建的net core api项目。 建好项目之后干什么呢、当然得添加引用了。你可以随心所欲的使用Nuget或者命令进行安装 Install-Package NLog -Version 4.6.5 Install -Package NLog.Web.AspNetCore -Version 4.8.4 Install-Package MySql.Data -Version 8.0.16 上面说了,NLog只需要简单地修改配置就可以使用,那接下来就是新建一个NLog配置文件了。你可以通过Nuget或者程序包控制台进行安装,也可以自己新建一个NLog.config文件。这里还是通过程序包控制台进行安装吧 安装后看到项目目录多了一个NLog.config文件。这里需要注意,右键设置一下这个NLog.config的属性为“始终复制” 打开nlog.config文件,看看里面的结构,发现有两个重要节点,一个是声明目标

asp.net core 使用NLog记录日志到txt文件

和自甴很熟 提交于 2020-04-24 22:53:40
一、使用VisualStudioCode创建一个 webapi项目 (也可以是mvc等)、一个 类库 (用于封装记录日志方法,当然如果使用依赖注入到控制台项目,就不需要此类库了)。 二、在 类库 中添加 NLog、NLog.Web.AspNetCore 引用(NLog.Web.AspNetCore 是为 ASP.NET Core 添加了对于 NLog 的平台支持), webapi项目 添加对该类库的引用,这样控制台就无需添加nlog的引用了。 三、在 类库 中自定义类,简单封装记录日志方法,代码如下: using System; using Microsoft.Extensions.Logging; using NLog; namespace common { public class NLogHelper { // 每创建一个Logger都会有一定的性能损耗,所以定义静态变量 private static Logger nLogger = LogManager.GetCurrentClassLogger(); public static void Info( string msg) { nLogger.Info(msg); } public static void Error( string msg, Exception ex = null ) { if (ex == null

asp.net core 使用 NLog日志

那年仲夏 提交于 2020-04-24 21:15:11
NLog是一个配置灵活的日志记录类库,拥有输出日志到文件、存储入库、发送到udp地址的高级功能 1 添加 nlog nuget包 Nlog和NLog.Web.AspNetCore 安装完成后 2 在站点根目录下添加配置文件nlog.config <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Warn" internalLogFile="internal-nlog.txt"> <targets> <target xsi:type="File" name="file" fileName="nlog-all-${shortdate}.log" layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /> <target xsi:type="File" name="exception" fileName="nlog-exception-${shortdate}.log

安装并配置多实例mysql数据库

。_饼干妹妹 提交于 2020-04-18 17:50:38
一、下载介质 http://mirrors.sohu.com/mysql/ http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz http://dev.mysql.com/downloads/mysql/ http://ftp.ntu.edu.tw/MySQL/Downloads/ 二、安装mysql需要的依赖包和编译软件 [root@monitor01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@monitor01 ~]# uname -r 3.10.0-957.el7.x86_64 [root@monitor01 ~]# uname -m x86_64 安装依赖包 [root@monitor01 yum.repos.d]# yum install ncurses-devel libaio-devel cmake gcc gcc-c++ glibc openssl-devel bison-devel autoconf -y [root@monitor01 yum.repos.d]# rpm -qa curses-devel libaio-devel 安装编译mysql需要的软件 [root