自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (3)
  • 收藏
  • 关注

原创 JDK8新特性-接口的默认方法与静态方法

在Java 8中,接口(Interface)得到了两个重大的增强:默认方法(Default Methods)和静态方法(Static Methods)。这些特性为接口的实现提供了更大的灵活性和功能。

2025-05-11 12:32:53 269

原创 Java注解

注解是一种标记在 Java 类、方法、字段和其他程序元素上的特殊标签。这些标签提供了有关元素的额外信息,通常以注解的方式存储在 Java 源代码中。注解通常不影响程序的运行,但可以在编译时、运行时或通过工具进行处理。Java 注解以 @ 符号开头,后跟注解的名称,如 @Override、@Deprecated 等。注解可以有元素,元素以键值对的形式存储信息。// 类的内容在上面的示例中,@Author 是一个自定义注解,具有两个元素 name 和 date,它们存储了有关类 MyClass 的信息。

2025-04-26 20:34:44 258

原创 4. Flink SQL访问HiveCatalog

2.修改Hive配置文件hive-site.xml。1.上传所需的jar包到Flink lib目录下。3.启动Hive外置metastore。2.Flink创建Catalog并使用。3.Flink SQL访问Hive表。3.启动Flink SQL客户端。1.Hive创建测试表并插入数据。

2025-03-30 19:58:51 367

原创 Redis底层数据结构

在遍历的时候,无需使用链表的指针来获取前一个元素和下一个元素,而是根据previous_enrty_length计算前一个entry的起始地址,通过自身大小计算下一节点地址。因为一次新增的数据太多,导致rehash一次性更新到新的hashTable时长太长而影响其他业务性能,所以每次执行增删改查的时候才会去更新一个索引的数据,直到结束为止。上源码:是个双向链表,每个节点值是SDS,整个排序考score,然后就是前后指针,由于增序,所以多级指针体现在forword(向后),跨度不一所以使用数组存储。

2025-02-23 23:21:57 1119

原创 Redis 基础命令 --- ZSet篇

Redis的ZSet是一个可排序的Set集合,ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,集合成员是唯一的,但是评分可以重复。可排序元素不重复查询速度快因为ZSet的可排序特性,经常被用来实现排行榜这样的功能。

2025-02-22 17:37:55 399

原创 9. Java 线程池

当我们进一步查看以上方法的底层调用时,会发现都是调用ThreadPoolExecutor创建线程池。Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。Java中创建线程池很简单,Executors类提供了几个快捷方法。5.workQueue: 等待队列,用来保存等待执行的任务。6.threadFactory: 线程工厂,用来创建线程。3.keepAliveTime: 线程的空闲的存活时间。

2025-02-18 14:56:57 219

原创 10. Hbase Compaction命令

在 HBase 中,频繁进行数据插入、更新和删除操作会生成许多小的 HFile,当 HFile 数量增多时,会影响HBase的读写性能。此外,垃圾数据的存在也会增加存储需求。因此,定期进行 Compact操作,可以有效地提升HBase系统的性能,减少存储空间。:将多个小的HFiles合并成一个较大的HFile,不会删除过期和标记为删除的数据。:将所有 HFiles 合并,会清理掉在HBase中标记为删除的数据,一般比较费时。可能会对RegionServer的CPU和IO造成较大的压力。

2025-02-13 11:25:38 487

原创 Redis数据库篇 -- Pipeline

客户端发送一个命令到服务器。服务器接收命令并执行。服务器将执行结果返回给客户端。客户端接收结果后,发送下一个命令在这种传统的模式下,每个命令都需要经历完整的 RTT,这在高延迟网络环境下会导致显著的性能瓶颈。Redis Pipeline 是一种批量执行命令的技术,允许客户端在不等待服务器响应的情况下,一次性发送多个命令到 Redis 服务器。

2025-02-07 19:55:15 582

原创 3. kafka事务消息

transaction log 是 kafka 的一个内部 topic,transaction log 有多个分区,每个分区都有一个 leader,该 leade对应哪个 kafka broker,哪个 broker 上的 transaction coordinator 就负责对这些分区的写操作。为了实现跨分区跨跨会话的事务,需要引入一个全局唯一的Transaction ID,并将生产者获得的id和Transaction ID绑定。当发生异常,事务将会回滚,终端消费者将不会收到消息。

2025-02-06 14:27:32 710

原创 5. JavaThreadLocal使用与原理

作用是为变量在每个线程中创建一个副本,这样每个线程就可以访问自己内部的副本变量,同时该变量对其他线程而言是封闭的,这样就保证了线程安全。ThreadLoca方法描述设置当前线程变量获取当前线程变量移除当前线程设置的变量自定义初始化当前线程的默认值。

2025-01-22 13:38:42 311

原创 2. Flink分区策略

Flink任务在执行过程中,一个流(stream)包含一个或多个分区(Stream partition),TaskManager中的一个slot的SubTask就是一个stream partition(流分区)。Flink分区之间进行数据传递模式有两种。1. one-to-one模式数据不需要重新分布,上游SubTask生产的数据与下游SubTask收到的数据完全一致,常见的map,filter等算子的SubTask的数据传递都是one-to-one的对应关系,类似于spark中的窄依赖。

2025-01-20 22:31:33 1063

原创 2. Java wait/notifyAll()虚假唤醒问题与解决

任何一个线程执行notifyAll唤醒了所有处于阻塞队列中的线程,我们希望的是AA唤醒线程BB和DD,而不唤醒线程CC,假设AA线程唤醒了CC线程则会跳过if代码块,执行后面的。虚假唤醒:在一定的条件下notifyAll会唤醒很多在阻塞态的线程,但只有部分的线程唤醒是有用的,其余线程的唤醒是不需要的。解决办法:将if判断改成while,这样程序就不会跳出判断代码块,产生虚假唤醒了。输出的结果不对,什么原因呢?在前面代码的基础上增加2个线程。两个线程交替输出0和1。四个线程交替输出0和1。

2025-01-19 16:39:53 363

原创 3. MySQL事务并发的问题与解决方法

在一个事务内多次读取同一数据,在这个事务还没结束时,另外一个事务也访问了这个数据并对这个数据进行了修改,那么就可能造成第一个事务两次读取的数据不一致,这种情况就被称为不可重复读。从上图中可以看出,事务1不能查询到事务2已经插入的数据,导致出现了“幻觉”,当事务1执行同样的插入语句时就会报主键重复错误,这就是幻读。但是当事务2提交后,事务1会读取到事务已经提交的数据,这就出现了不可重复的问题,即在事务1中查询同一张表,两次的结果不一样。从上图中可以看出事务1读取到了事务2未提交的数据,这就是脏读。

2025-01-16 20:51:43 996

原创 3. Flink 窗口

窗口是处理无限流的核心。ProcessWindowFunction获得一个包含窗口所有元素的Iterable,以及一个可以访问时间和状态信息的Context对象,这使得它比其他窗口函数提供更大的灵活性。窗口按照驱动类型可以分成时间窗口和计数窗口,而按照具体的分配规则,又有滚动窗口、滑动窗口、会话窗口、全局窗口四种。窗口函数定义了要对窗口中收集的数据做的计算操作,根据处理的方式可以分为两类:增量聚合函数和全窗口函数。计数窗口很好理解,当窗口的数据量达到了设定的窗口大小时,窗口函数就会被触发。

2025-01-15 11:41:38 1166

原创 2. Doris数据导入与导出

之所以引入 Broker 进程,主要是用来针对不同的远程存储系统,用户可以按照 Broker 进程的标准开发其相应的 Broker 进程,Broker 进程可以使用 Java 程序开发,更好的兼容大数据生态中的各类存储系统。用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。一个 Routine Load Task 提交后,会继续生成新的 Task,或对超时的 Task 进行重试。

2025-01-13 19:45:40 1209

原创 1. Doris分布式环境搭建

本次测试集群采用3台机器hadoop1、hadoop2、hadoop3, Frontend和Backend部署在同一台机器上,Frontend部署3台组成高可用,Backend部署3个节点,组成3副本存储。前面集群规划时选择hadoop3作为Frontend Master节点,因此先在hadoop3启动Frontend。启动hadoop1和haoop2上的Frontend进程,第一次启动时需要从hadoop3同步元数据。在三台主机分别执行如下命令。三台主机都执行如下命令。三台主机都执行如下命令。

2025-01-10 16:25:57 868

原创 1. ClickHouse副本搭建

副本的目的主要是保障数据的高可用性,ClickHouse中的副本没有主从之分。所有的副本都是平等的。

2024-12-31 23:59:16 731

原创 14. HDFS基准测试

当Hadoop集群搭建完成后,为了弄清楚HDFS的读写性能,我们可以对集群做一次基准测试。Hadoop安装包中自带了对HDFS进行基准测试的工具类。

2024-12-28 12:25:49 864

原创 1. Flink自定义Source

DataStream是Flink的低级API,用于进行数据的实时处理,Flink编程模型分为Source、Transformation、Sink三个部分,如下图所示。基于文件的Source基于Socket的Source基于集合的Source基于Kafka消息队列的Source当以上内置Source不能满足业务需要时,可以实现自定义Source。:单并行度Source的基类:单并行度增强型Source的基类:多并行度Source的基类:多并行度增强型Source的基类。

2024-12-11 16:04:16 1009

原创 2. kafka 生产者

Kafka中的Topic是可以分区的,使用分区的好处是显而易见的,它可以合理的使用存储资源,提高并行度,一个Topic的多个分区分散在不同的主机上,可以充分利用集群资源。生产者发送的每一条消息最终只会进入某一个分区,决定消息和分区映射关系的就是Partitioner。Kafka默认分区器是DefaultPartitioner。......指明partition的情况下,直接将指明的值作为partition的值。

2024-11-18 09:26:51 1387

原创 1. kafka分布式环境搭建

安装zookeeper,本次采用单机模式部署在hadoop1,具体安装过程此处不赘述。修改配置文件config/server.properties。下载kafka安装包,并上传到对应目录下。安装JDK,具体安装过程此处不赘述。将配置好的安装包分发到两外两台主机上。启动zookeeper和kafka。修改两外两台主机上的配置。查看topic详细信息。修改topic分区数。

2024-11-14 14:28:15 1174

原创 1. JVM双亲委派与自定义类加载器

当JVM自带的类加载器不能满足需求时,可以自定义ClassLoader,自定义ClassLoader需要继承ClassLoader基类,并重写其中的方法,以实现对类加载过程的自定义控制。// 非测试类使用父加载器 if(!try {// 把类名转换为目录 String file = directory + File . separator + name . replace("." , File . separator) + ".class";

2024-11-11 23:51:53 618

原创 Hive中各种Join的实现

left semi join返回两个表交集中左表的部分,Hive低版本中没有实现标准SQL中exist, in,因此它最主要的使用场景就是替代exist与in。这个需求在Hive低版本中可以使用left semi join实现,同时可以获得更好的性能。full outer join 是对左右两表求并集,两个表中不存在的key均赋值null。left outer join是以左表基准,右表不存在的key均赋值为null。right outer join以右表基准,左表不存在的key均赋值为null。

2024-11-07 19:49:54 437

原创 13. MapReduce自定义OutputFormat

OutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了OutputFormat接口,它接收ReduceTask产生的数据,然后将结果按照指定格式来写出。在MapReduce中,如果不指定,默认使用的是TextOutputFormat。但是在一些特定的场景下,默认的TextOutputFormat不一定能满足我们的需求,因此可以自定义自己的OutputFormat。

2024-10-30 09:59:21 449 1

原创 12. MapReduce全局计数器

在执行MapReduce程序时,控制台的输出中一般会包含如下内容。这些输出就是MapReduce的全局计数器的输出信息。计数器是用来记录job的执行进度和状态的,它的作用可以理解为日志,方便用户了解任务的执行状况,辅助用户诊断故障。常见内置计数器File System Counters:跟踪作业读写的文件系统操作,如HDFS读写字节数。Job Counters:作业相关的统计,如作业的提交数量、耗费的时间。

2024-10-28 09:20:06 477

原创 10. MapReduce实现wordcount

mapreduce是一个并行计算框架,它起源于Google的MapReduce论文,它主要用于离线海量数据计算。优点:海量数据离线处理,开发简单,部署方便缺点:仅适用于批处理,不支持实时数据计算。

2024-10-24 11:16:20 691

原创 123法则与2B法则

如下图所示,①处突破下降趋势线,②处是低点,但没有低过前期低点A(下降趋势不再创新低),价格在③处突破了前期高点B,则③就是买入做多的入场点,止损设置在②处。如下图所示,Breakout 1是突破前低,但是价格不能延续下跌走势,掉头向上,Breakout 2是突破前高,如果这时候出现放量,则A点就是买入(做多)点。如下图所示,①处跌破上升趋势线,②处是高点,但没有高过前期高点A(上升趋势不再创新高),价格在③处跌破了前期低点B,则③就是卖出做空入场点,止损设置在②处。它必须满足3个条件。

2024-09-28 18:48:05 1042

原创 python实现技术指标(简单移动平均,加权移动平均线,指数移动平均线)

移动平均线是最常见的技术指标,它能够去除时间序列的短期波动,使得数据变得平滑,从而可以方便看出序列的趋势特征。常见的移动平均线有简单移动平均线,加权移动平均线,指数移动平均线。

2024-06-23 18:57:40 1912

原创 python实现假设检验-t检验

设总体X∼Nμδ2X∼Nμδ2,其中μδ2μδ2未知,统计量tX‾−μSntSn​X−μ​服从标准正太分布,可以利用该统计量对总体均值μ\muμ进行假设检验,这种检验方法称为ttt检验法。适用条件:总体服从正态分布且方差未知;样本容量较小,一般小于30。

2024-04-20 15:41:31 1906 2

原创 python 实现方差检验

前面介绍的z检验和t检验主要用于对总体的均值进行假设检验,下面主要介绍对总体方差进行假设检验的方法。

2024-04-15 16:50:58 945 2

原创 python实现假设检验-z检验

当总体服从正太分布Nμδ2Nμδ2时,统计量zX‾−μδnzδn​X−μ​服从标准正太分布,因此可以利用该统计量对样本均值X‾X进行假设检验。这种检验方法称为zzz检验法。总体服从正态分布且方差已知,此时统计量zX‾−μδnzδn​X−μ​总体的方差未知,但样本量足够大,一般样本容量nnn需要大于30,此时统计量zX‾−μSnzSn​X−μ​δ\deltaδ为总体标准差,SSS。

2024-04-08 16:23:08 1638

原创 假设检验与两类错误

首先从一个例子引出假设检验的思想假如一个盒子装了红白球共100个,张三说里面有99个是白球,现在从盒子中任取一球,结果取出的是红球,问张三的说法对吗?对于这个问题,我们可以采取如下的思路来解决,先假定张三说的对,那么取出红球的概率p红球1100p(红球)=1/100p红球1/100,也就是一次抽样取出红球是小概率事件,但现在一次抽样抽出红球,与小概率事件实际不符,所以我们认为原来的假定为假,这个盒子中不可能有99个白球。

2024-04-07 14:52:56 1809

原创 因子数据预处理-去极值和标准化

多因子数据预处理

2024-04-02 21:51:45 1632

原创 python实现常见统计量与统计分布

正太分布是统计中最常见的分布,以标准正太分布为基础构造的三个重要的统计量在实际中也有广泛的应用。一般由于总体的数量是非常巨大的,不可能对全部总体进行研究,通常会对总体进行抽样进行研究。从总体中按一定规则抽出的一部分个体称为样本,样品的个数称为样本容量。一个统计问题研究对象的全体称为总体,构成总体的每个成员称为个体。为样本标准差,峰度用来对数据分布的平峰或尖峰程度的测量。为取自某总体的样本, 若样本函数中。的分布称为自由度为n的卡方分布,记为。为取自某总体的样本,则偏度。为取自某总体的样本,峰度。

2024-03-24 21:32:16 969

原创 python实现大数定律与中心极限定理

大数定律表明随机变量序列的算术平均值依概率收敛于随机变量的期望。从图中可以看出随着样本量的增大,样本的均值逐渐收敛于总体期望。的分布会越来越趋近于标准正太分布。下面用代码来演示这个收敛过程。从图中可以看出随着抽样次数的增加,随机变量。是独立同分布的随机变量序列,且随机变量。是独立同分布的随机变量序列,且随机变量。服从二项分布,则随机取出一个长度为。,随着抽样次数的增大,随机变量序列。的分布越来越跟标准正太分布吻合。的均值的极限值就是随机变量。的增大,该随机变量序列。分布服从标准正太分布,

2024-03-22 09:40:27 1169 2

原创 python实现常见一元随机变量的概率分布

生成服从不同参数二项分布的随机数组(采样100000次),然后查看数组的频率分布。生成服从不同参数几何分布的随机数组(采样100000次),然后查看数组的频率分布。生成服从不同参数泊松分布的随机数组(采样100000次),然后查看数组的频率分布。生成服从不同参数正太分布的随机数组(采样100000次),然后查看数组的频率分布。生成服从不同参数指数分布的随机数组(采样100000次),然后查看数组的频率分布。画出不同参数下的二项分布,画出不同参数下的几何分布,画出不同参数下的正太分布,的函数,比如随机变量。

2024-03-01 21:47:50 1121

原创 matplotlib 入门教程

Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。Matplotlib试图让简单的事情变得更简单,让无法实现的事情变得可能实现。只需几行代码即可生成绘图,直方图,功率谱,条形图,错误图,散点图等。

2024-02-27 14:38:51 1043

原创 pandas 读写常见文件性能对比

pandas在数据分析应用中使用频率非常高的python 库,在数据分析的过程中,读写文件是非常基础的操作,它关系到整个数据分析的性能表现。下面就用程序验证pandas 读写常见几种文件的性能表现。从以上表格中可以得出hdf5,pickle,parquet等格式的读写性能以及空间占用均比较好,当进行大量数据的分析时可以考虑使用这些格式。

2024-01-20 20:14:22 670 1

原创 Python实现交易策略评价指标-夏普比率

在投资的过程中,仅关注策略的收益率是不够的,同时还需要关注承受的风险,也就是收益风险比。夏普比率正是这样一个指标,它表示承担单位的风险会产生多少超额收益。

2023-12-04 22:19:30 1254

原创 python实现交易策略评价指标-收益率

收益率几乎是所有投资者都会关注的一个指标,收益率的高低决定了投资策略的赚钱能力,常见关于收益率的指标如下:持有期收益率持有期收益率期末投资权益−期初投资权益期初投资权益持有期收益率 = \frac {期末投资权益 - 期初投资权益}{期初投资权益}持有期收益率期初投资权益期末投资权益−期初投资权益​单利年化收益率(算术收益率)单利年化收益率持有期收益率持有期交易天数∗年交易天数单利年化收益率 = \frac{持有期收益率}{持有期交易天数} * 年交易天数。

2023-11-23 22:57:41 1508

kafka-2.2.0-src.zip

搭建kafka 源代码阅读环境的工程文件,解压即可运行。

2019-08-22

java程序习题练习集

简单实用,易学易懂,紧贴考试,是备考学子不可缺少的!

2011-05-07

空空如也

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

TA关注的人

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