- 博客(181)
- 资源 (4)
- 收藏
- 关注

原创 tps 、qps、bps、Bps的含义
一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成...
2019-07-29 11:38:54
15528
原创 有序数据中插入不确定数据保证数据插入的位置顺序正确排序
在面对需要在特定位置插入多条数据的情况时,手动调整自增ID的方式变得复杂且容易出错,尤其是当并发操作发生时。因此,推荐的做法是在数据库表中添加一个额外的字段来维护数据的显示顺序。让我们假设我们有一个名为 display_order 的字段,该字段用来表示记录在前端的显示顺序。你可以按照以下步骤来实现需求:为表添加一个 display_order 字段(如果还没有的话),类型可以是整数或者浮点数。当插入新记录时,而不是改变自增ID,你只需要将新记录的 display_order 设定为合适的值。
2025-01-08 17:14:04
456
原创 行转列实现方式总结
在日常开发中遇到了,需要对表中数据某个字段行数据转成列,个人觉得这中做目前想到两种, 一种是sql 操作, 另一种代码中做逻辑处理。
2024-11-07 12:00:01
396
原创 Spring Expression表达式使用
Spring Expression Language(简称 “SpEL”)是一种功能强大的表达式语言,支持在运行时查询和操作对象图。其中最显著的是:方法调用和基本的字符串模板功能。虽然SpEL是Spring产品组合中表达式评估的基础,但它与Spring没有直接联系,可以独立使用。注意, 这里用到了一个特殊 contains, 需要在UFO 这个对象理来自定义处理转换逻辑。也是SpEL 支持的。
2024-07-10 10:26:31
514
原创 BeanUtils.copyProperties()和 MapStruct性能对比
在排查接口耗时较长原因的时候,发现代码中有拷贝对象的逻辑,拷贝对象用到的还是BeanUtils.copyProperties()。阿里巴巴编码规范插件中也是不支持使用这种方法进行拷贝的,如果有使用这种方法,用编码规约扫描会直接提示“避免用Apache Beanutils进行属性的copy”。同时会说明:“说明:Apache BeanUtils性能较差,可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier”。找度娘,发现了一个好的映射工具MapsStruct。
2023-08-19 17:28:41
46
原创 mysql 表分区的方式和实现
其中,p_2018 分区用于存储 2018 年的订单数据,p_2019 分区用于存储 2019 年的订单数据,以此类推。组合分区:将多个分区方式结合起来,例如先按照日期范围进行分区,再按照订单状态进行分区。同时,在使用分区时,也需要考虑到分区键的选择、分区数量的控制、分区表的查询优化等问题,以提高数据库的性能和稳定性。MySQL 提供了多种分区方式,包括范围分区、哈希分区、列表分区等。请注意,在使用分区时,需要考虑到分区键的选择、分区数量的控制、分区表的查询优化等问题,以提高数据库的性能和稳定性。
2023-04-03 10:18:24
4826
原创 for循环内线程池并发执行任务,等到子线程全部处理完任务,主线程在执行java的实现方式
当计数器减为 0 时,所有子线程的任务都已经执行完毕,主线程可以执行后续代码。在主线程中,调用 CountDownLatch.await() 方法阻塞等待所有子线程的任务执行完毕,直到计数器减为 0 才继续执行后续代码。请注意,在使用自定义线程池时,需要考虑线程安全、并发访问等问题,并在代码中正确处理异常。请注意,在实际应用中,您还需要考虑线程安全、并发访问等问题,并在代码中正确处理异常。请注意,在使用以上方法时,仍然需要考虑线程安全、并发访问等问题,并在代码中正确处理异常。
2023-04-03 10:01:02
6408
原创 调用接口接口未执行完成拒绝调用Java实现
具体来说,您可以创建一个 Semaphore 对象,并将其初始化为允许同时执行的最大线程数。在调用接口前,先尝试获取信号量,如果信号量已经被占用,则表明有其他线程正在执行任务,此时您可以选择等待一段时间再重试,或者直接返回错误信息表示无法调用接口。当任务执行完毕后,释放信号量,以便其他线程可以获取信号量并调用接口。请注意,Semaphore 只能保证线程之间的协作,不能保证线程安全。在使用 Semaphore 时,请确保您的代码正确处理并发访问问题,以避免出现意外错误。
2023-04-03 09:41:40
527
原创 Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
spark windows 运行报错
2022-07-25 19:44:07
11185
原创 MySQL 8报错:The user specified as a definer (‘mysql.infoschema‘@‘localhost‘)
Mysql Error:The user specified as a definer (‘mysql.infoschema’@’localhost’) does not exist
2022-07-12 19:52:55
1247
1
原创 特别好用的时间工具
时间工具 threetenbppackage com.fl;import org.threeten.bp.LocalDate;import org.threeten.bp.format.DateTimeFormatter;/** * @author fl * @date 2022-05-18 * <p> * org.threeten.threetenbp * 特殊的工具 特别适用于时间的处理 时间计算 */public class Test { private
2022-05-18 17:19:35
566
原创 Kafka 是如何保证数据可靠性和一致性
Kafka 是如何保证数据可靠性和一致性1、kafka的可靠性为了保证数据可靠性,https://blog.youkuaiyun.com/mengfeichuan2013/article/details/1173551621.1 Topic 分区副本1.2 Producer 往 Broker 发送消息kafka使用了ack机制。1.3 Leader 选举为了保证数据的可靠性,我们最少需要配置一下几个参数:•producer 级别:acks=all(或者 request.required.acks=-1
2022-05-07 09:02:40
1118
原创 零拷贝-Kafka和RokcetMQ高性能底层
1.什么是零拷贝WIKI中对其有如下定义:“Zero-copy” describes computer operations in which the CPU does not perform the task of copying data from one memory area to another.从WIKI的定义中,我们看到“零拷贝”是指计算机操作的过程中,CPU不需要为数据在内存之间的拷贝消耗资源。而它通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间(User Space)
2022-04-15 11:09:42
290
原创 java stream 操作map根据key或者value排序的实现
java8 使用lambda表达式和Stream APi 实现 list 集合转成map, 根据map的key 排序 和value 排序的实现public class Test02 { public static void main(String[] args) { List<FundBenchMarkInfo> fundBenchMarkList = new ArrayList<>(); fundBenchMarkList.add(new
2022-04-12 16:55:58
5795
原创 java 集合多字段排序
Collections.sort 排序的返回值 是 1 ,0 -1 其中,a.compareTo(b)==0,是 二者相等,a.compareTo(b)==1, 是 a大于bpublic class Test01 { public static void main(String[] args) { List<FundBenchMarkInfo> fundBenchMarkList = new ArrayList<>(); fundBenchM
2022-04-12 15:11:31
1490
原创 Hadoop 集群搭建
前言初衷搭建hadoop 集群服务与flink任务运行。版本: CentOS7 Hadoop3.2.2 JDK1.8搭建hadoop集群采用3台机器 设置 ip和机器名vi /etc/hosts10.188.120.101 hadoop-110.188.120.102 hadoop-210.188.120.103 hadoop-31.免密登录3台机器上都执行如下命令ssh-keygen -t rsa执行命令后一直Enter即可!因为我现在用的是root账户,所以秘钥文件保存到
2022-03-17 17:02:08
2142
1
原创 flink任务调优日常总结
1. 你是怎么合理的评估 Flink 任务的并行度?Flink 任务并行度合理行一般根据峰值流量进行压测评估,并且根据集群负载情况留一定量的 buffer 资源。⭐ 如果数据源已经存在,则可以直接消费进行测试⭐ 如果数据源不存在,需要自行造压测数据进行测试1.1 对于一个 Flink 任务来说,一般可以按照以下方式进行细粒度设置并行度:⭐ source 并行度配置:以 kafka 为例,source 的并行度一般设置为 kafka 对应的 topic 的分区数⭐ transform(比如 fla
2022-03-15 09:42:35
2897
原创 centos8安装grafana
下载https://grafana.com/docs/grafana/latest/installation/rpm/#2-start-the-server在grafana 的bin 下启动目录./grafana-server start 访问 url http://10.188.120.201:3000/login初始用户名和密码 admin/admin端口默认 3000更改初始密码......
2022-03-14 09:56:43
721
原创 flink savepoint 和 checkpoint对比
flink 设计checkpoint为什么还要设计savepoint?Savepoint 和 Checkpoint 都是使用 Asynchronous Barrier Snapshotting(简称 ABS)算法实现分布式快照的,都可以确保一致性、容错、故障恢复。1.什么是 Checkpoint?Flink Checkpoint 是一种容错恢复机制。这种机制保证了实时程序运行时,即使突然遇到异常也能够进行自我恢复。Checkpoint 对于用户层面,是透明的,用户会感觉程序一直在运行。Flink Ch
2022-03-09 10:17:59
2726
原创 flink处理天级别的开窗出现时区的问题
flink处理天级别的开窗出现时区的问题时区的问题是,在处理数据的时候我们是东八区,要对当前要处理的时间加上8小时,才是符合我们预期的。flink这个没考虑时区问题。1.时间纪元所谓的”时间纪元”就是1970年1月1日0时0分0秒,指的是开始的时间。比如Java类代码:Date date = new Date(0);System.out.println(date);打印出来的结果:Thu Jan 01 08:00:00 CST 1970也是1970年1月1日,实际上时分秒是0点0分0秒,这里
2022-03-07 13:42:30
1850
1
原创 flink读取mysql表中的时间字段error java.time.LocalDateTime cannot be cast to java.sql.Timestamp
版本说明flink 版本 1.13.5mysql 版本 8.0.26操作使用mysql table api 读取mysql8中的一个表,这个表的时间字段类型是datetime,在创建数据源的时候,对应mysql 的时间类型,设置成 datatime,String 都不行,执行都报错。这让我emo好久,找不出问题所在。这应该是mysql的一个bug。具体错误信息Exception in thread "main" java.lang.RuntimeException: Failed to fet
2022-02-21 16:08:04
4083
5
原创 数仓分层设计初步
数仓分层1.ODS、DWD、DWM、DWS、ADS 的含义网上找的两张概念图如下:2.数仓分层设计3、为什么要分层我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的
2022-02-21 10:06:36
238
原创 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
启动hive 后,查询 show databases; 报错如下:这个异常信息的原因是:Hive的metadata服务未开启导致的。解决办法:进入到Hive的bin目录下,键入命令: ./hive --service metastore &hive的metastore是干嘛的?作用是什么?Metastore作用:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要
2022-02-15 10:27:22
10151
1
原创 sqoop java.lang.Exception: java.lang.ClassNotFoundException: Class xxx(表名) not found
sqoop 执行如下./sqoop import \--connect jdbc:mysql://10.188.120.201:3306/fl \--username root \--password fl606123 \--table bond_code \--target-dir /sqoop \--delete-target-dir \--fields-terminated-by '\t'报错信息如下:报错原因:class未找到是因为map是本地方式运行,生成的jar包在/t
2022-02-15 09:33:46
1017
原创 sqoop的安装和使用
版本说明 目前 sqoop最稳定版本是 1.4.7sqoop1.4.7兼容hadoop2.6以上所有版本下载 sqoophttps://archive.apache.org/dist/sqoop/解压安装增加配置vi /etc/profileexport SPARK_HOME=/usr/local/work/sqoop/sqoop-1.4.7.bin__hadoop-2.6.0 export PATH=$PATH:$SPARK_HOME/bin保存 source /etc/profile
2022-02-14 16:47:12
1378
原创 hive 使用用load inpath导入数据时出现NULL原因解析
为甚会为null 呢?注意两点:建表的时候:这种建表方式 要求文件的数据格式 是 按照一个 tabe 键进行分割。建表语句分隔符是’\t’,’\t’代表的是tab符号。create table snapshot( id bigint, high_price double, low_price double, open_price double )row format delimited fields terminated by '\t';然后执行
2022-02-10 17:32:16
2444
原创 java通过jdbc连接hive
版本说明hadoop 3.2.2hive 版本 3.1.2安装好hive 之后,hive默认的用户名和密码都是空的,所以需要我们设置用户名和密码。参考网上的,按照自定义的方式设置hive 的用户名和密码。1.首先要打一个jar 包,我这里已经打好了,需要可以去下载。2.也可以自己通过代码编译自行打包;package com.quant.flowcalculation.flinkapi.etl.hive;import java.sql.Connection;import java.sql.
2022-02-10 16:21:00
3045
1
原创 flink 读取kafka之自定义DeserializationSchema序列化
import com.alibaba.fastjson.JSON;import com.hundsun.quant.flow.model.Snapshot;import org.apache.flink.api.common.serialization.DeserializationSchema;import org.apache.flink.api.common.typeinfo.TypeInformation;/** * @author fl * @date: 2022-01-0...
2022-01-12 10:26:56
1372
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人