自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员三木的博客

闲来无事,敲三分代码,送七分与你

  • 博客(449)
  • 资源 (1)
  • 收藏
  • 关注

原创 [Java 面试题] ArrayList篇

ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。但是它们都会把相应位置的元素设置为null,以便垃圾收集器回收掉不使用的元素,节省内存。一般情况下,如果扩容1.5倍后就大于期望容量,那就返回这个1.5倍旧容量的值。因为 Java 中,数组操作不能越界,所以我们必须要保证在插入操作的时候,不会抛出数组越界异常。ArrayList有三个构造方法,不同的构造方法的容量是不一样的,具体可以查看JDK 源码。则表示的“存放的元素的个数”。里面有两个概念,一个是。

2024-04-16 22:43:09 456 1

原创 [leetcode] 快乐数 E

链接:https://leetcode.cn/problems/happy-number。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 n 是 快乐数 就返回 true;不是,则返回 false。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。编写一个算法来判断一个数 n 是不是快乐数。来源:力扣(LeetCode)

2024-04-16 22:41:25 198

原创 [leetcode 链表] 反转链表 vs 链表相交

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。

2024-04-14 23:04:14 745 1

原创 [leetcode] 705. 设计哈希集合

void remove(key) 将给定值 key 从哈希集合中删除。// 返回 False ,(未找到)myHashSet.contains(2);// 返回 False ,(已移除)bool contains(key) 返回哈希集合中是否存在这个值 key。// 返回 True。// 返回 True。void add(key) 向哈希集合中插入值 key。

2024-04-14 23:00:49 546

原创 [尚硅谷flink] 检查点笔记

Barrier对齐: 一个Task 收到 所有上游 同一个编号的 barrier之后,才会对自己的本地状态做备份精准一次:在barrier对齐过程中,barrier后面的数据 阻塞等待(不会越过barrier)至少一次:在barrier对齐过程中,先到的barrier,其后面的数据 不阻塞 接着计算非Barrier 对齐:一个Task 收到 第一个 barrier时,就开始 执行备份,能保证 精准一次(fhink 1.11出的新算法)

2024-04-14 22:53:26 962

原创 [尚硅谷 flink] 状态管理 笔记

Flink的状态有两种:托管状态(Managed State)和原始状态(Raw State)。托管状态就是由Flink统一管理的,状态的存储访问、故障恢复和重组等一系列问题都由Flink实现,我们只要调接口就可以;而原始状态则是自定义的,相当于就是开辟了一块内存,需要我们自己管理,实现状态的序列化和故障恢复。通常我们采用Flink托管状态来实现需求。

2024-04-13 17:37:46 1398 1

原创 [AIGC] `InitializingBean`接口 的使用场景

接口通常用于在Spring Bean的所有属性设置完后执行特定的初始化操作。这在某些特定场景下非常有用,并且被广泛使用。接口在Spring管理的Bean创建完成后执行一些初始化的工作。接口常见的使用情景。根据你的需求,你可以灵活运用。

2024-04-11 22:10:25 349 1

原创 [AIGC] Spring中的SPI机制详解

SPI (Service Provider Interface)是Java中服务提供者接口的缩写,它是Java提供的一种用于被第三方实现或扩展的接口,SPI的作用就是为这些被扩展的API寻找服务实现的过程。SPI本质是面向接口编程思想的具体应用,它降低了模块之间的耦合度,提高了系统的可扩展性。

2024-04-11 21:45:37 645

原创 [AIGC] Java List和Map常用API以及其Python实现方式对照介绍

Java和Python作为当今非常浅显易懂的编程语言,其数据结构中对于List和Map(Java)或List和Dict(Python)的操作无疑是每个程序员都非常必需的知识。本文将介绍在Java中对List和Map常用的一些操作,并给出在Python中对应的实现方式。

2024-04-10 22:57:51 465 1

原创 [AIGC] Python列表([])和字典({})常用API介绍

Python的列表(list)和字典(dict)是两种常用的数据结构,在编程任务中经常会使用到。下面为你介绍一下他们的常用API。

2024-04-10 22:52:59 499

原创 [AIGC] Python字符串常用API介绍

在Python编程中,常常需要处理字符串,如拼接、切割、替换等操作。Python提供了大量处理字符串的API,以下将介绍一下最常用的一些。

2024-04-09 23:12:47 286 1

原创 [尚硅谷flink学习笔记] 实战案例TopN 问题

基于窗口的结束时间来设定延迟,其实并不需要等太久——因为我们是靠水位线的推进来触发定时器,而水位线的含义就是“之前的数据都到齐了”。而在等待过程中,之前已经到达的数据应该缓存起来,我们这里用一个自定义的HashMap来进行存储,key为窗口的标记,value为List。由于最后的排序还是基于每个时间窗口的,输出的统计结果中要包含窗口信息,我们可以输出包含了vc、出现次数(count)以及窗口结束时间的Tuple3。基于这样的想法,我们可以从两个方面去做优化:一是对数据进行按键分区,分别统计vc的出现次数;

2024-04-09 23:10:39 558

原创 [AIGC] 使用Python刷LeetCode:常用API及技巧指南

在刷LeetCode题目时,Python提供了一些非常实用的内建函数和语法特性,理解和掌握这些API不仅可以帮助我们提高解题效率,而且有助于我们编写出更加优雅、易读的代码。在本文中,我们将介绍一些在解决LeetCode问题时常用的Python API。

2024-04-08 23:34:56 275 2

原创 [AIGC] 分布式锁及其实现方式详解与Python代码示例

在简单的理解中, 分布式锁就是一个能在分布式系统中多个节点间同步的锁。分布式锁的功能就像传统的单节点锁一样,但是它可以帮助你在网络的多个节点中对资源进行同步。

2024-04-08 22:35:29 650

原创 [AIGC] 实现博客平台的推荐排行榜

实现推荐排行榜可能需要一些时间和工作,但它能显著提升用户的体验和网站的价值。通过精心选择指标、收集数据、设计算法和显示排行榜,你可以使你的网站更具吸引力,吸引更多的用户。

2024-04-07 22:49:47 623 1

原创 [AIGC] MySQL连接查询全面解析

连接查询是SQL的一个重要特性,它允许我们将多个表中的数据按照特定的关联条件进行组合,从而获取更为复杂的查询结果。连接操作的基础是两个表之间存在某种关联关系,也就是某个表的某个字段的值和另一个表的某个字段的值存在某种对应关系。// 作者表// 书籍表若我们要查询每本书对应的作者名字,那么就需要用到连接查询。

2024-04-07 22:42:08 261

原创 [AIGC] Spring Interceptor 的执行顺序是怎样的?

方法将会被执行,但这两个方法的执行顺序是与注册顺序恰恰相反的。也就是说,先注册的Interceptor的这两个方法会后执行,后注册的Interceptor的这两个方法会先执行。这种设计允许我们在Interceptor中实现一些类似于前置检查和后置处理的功能,同时也需要我们注意控制Interceptor的注册顺序以保证其正确执行。,则请求处理立即终止,后续的Interceptor以及实际的请求处理方法都不会被执行。方法会按照注册的顺序依次被执行。请求处理完毕后,Interceptor的。

2024-04-07 22:37:53 556

原创 [AIGC] Spring 获取前端请求参数的全面指南

在Spring框架中,我们有多种方式可以获取前端发来的请求参数。

2024-04-07 22:34:35 770

原创 [每天一道面试题] HTTP,FTP,TFTP的底层实现协议是什么

TFTP: 与 HTTP 和 FTP 不同,简单文件传输协议(TFTP)实际上是基于UDP的。TFTP是为了简化传输而设计的,常用于设备的初始引导和将文件传输到有限功能的设备,因此选择使用无连接的UDP协议。它们的底层实现主要依赖于传输层的两种协议—— TCP(传输控制协议) 和 UDP(用户数据报协议)。FTP用于在网络上进行文件的传输,它也使用了TCP的可靠性,以确保文件不会在传输过程中丢失或出错。所以,说到底层实现协议,HTTP 和 FTP 是基于TCP,而TFTP 是基于 UDP。

2024-04-07 22:26:21 296

原创 [尚硅谷 flink] 基于时间的合流——双流联结(Join)

于是对于一条流(不妨叫作A)中的任意一个数据元素a,就可以开辟一段时间间隔:[a.timestamp + lowerBound, a.timestamp + upperBound],即以a的时间戳为中心,下至下界点、上至上界点的一个闭区间:我们就把这段时间作为可以匹配另一条流数据的“窗口”范围。于是对于时间戳为2的A中元素,它的可匹配区间就是[0, 3],流B中有时间戳为0、1的两个元素落在这个范围内,所以就可以得到匹配数据对(2, 0)和(2, 1)。而且流B中的数据可以不只在一个区间内被匹配。

2024-04-07 22:23:03 1021

原创 [尚硅谷flink] 水位线

在事件时间语义窗口下,标记当前时间之前的数据全部到达的一个逻辑标记时间戳。

2024-04-07 22:21:35 516

原创 [AIGC] Spring Interceptor 拦截器详解

Interceptor(拦截器)是Spring MVC框架中的一种特性,类似于Servlet开发中的Filter(过滤器),用于对处理器(handler)的请求进行拦截和处理。然而,与Filter不同的是,Interceptor是完全运行在Spring MVC框架的上下文中的,因此,它能够访问到Spring MVC的控制器(Controller)中的ModelAndView对象,可以更好地与Spring MVC的其他部分集成。

2024-04-06 19:25:39 613 1

原创 [AIGC] Spring Filter 过滤器详解

在Web应用中,Filter(过滤器)是在Java Servlet规范中的一种组件,它的主要目的是对HTTP请求或者响应进行处理。Spring Filter则是Spring框架对Java原生Filter的封装版本和扩展。简单来说,Spring Filter就是拦截进入Spring应用的HTTP请求,并在Spring框架处理请求之前先进行任意的处理,例如权限验证、数据编码转换、防止跨站点请求伪造等。

2024-04-06 19:07:42 666

原创 [AIGC] SpringMVC, Filter, Interceptor之间关系详解

SpringMVC是基于Java的一个用于创建Web应用的框架。它跟随的是基于模型-视图-控制器(MVC)的设计模式。

2024-04-06 18:59:27 672 1

原创 [实时流基础 flink] 窗口函数

尚硅谷学习笔记。

2024-04-01 21:28:19 1065 2

原创 [实时流基础 flink] 窗口

在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。

2024-04-01 21:26:43 1321

原创 [leetcode] 哈希表

链接:https://leetcode-cn.com/problems/intersection-of-two-arrays。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2024-03-31 20:36:33 1018 1

原创 [flink 实时流基础] 输出算子(Sink)

如果我们想将数据存储到我们自己的存储设备中,而Flink并没有提供可以直接使用的连接器,就只能自定义Sink进行输出了。与Source类似,Flink为我们提供了通用的SinkFunction接口和对应的RichSinkDunction抽象类,只要实现它,通过简单地调用DataStream的.addSink()方法就可以自定义写入任何外部存储。在实现SinkFunction的时候,需要重写的一个关键方法invoke(),在这个方法中我们就可以实现将流里的数据发送出去的逻辑。

2024-03-31 20:34:22 1389

原创 [flink 实时流基础] 转换算子

当Flink提供的所有分区策略都不能满足用户的需求时,我们可以通过使用partitionCustom()方法来自定义分区策略。1)自定义分区器@Override2)使用自定义分区。

2024-03-31 20:32:38 1401

原创 [flink 实时流基础] flink 源算子

Flink可以从各种来源获取数据,然后构建DataStream进行转换处理。一般将数据的输入来源称为数据源(data source),而读取数据的算子就是源算子(source operator)。所以,source就是我们整个处理程序的输入端。

2024-03-31 20:30:16 689

原创 [flink 实时流基础]源算子和转换算子

所以,source就是我们整个处理程序的输入端。filter转换操作,顾名思义是对数据流执行一个过滤,通过一个布尔条件表达式设置过滤条件,对于每一个流内元素进行判断,若为true则元素正常输出,若为false则元素被过滤掉。flatMap可以认为是“扁平化”(flatten)和“映射”(map)两步操作的结合,也就是先按照某种规则对数据进行打散拆分,再对拆分后的元素做转换处理。Flink直接提供了很多预实现的接口,此外还有很多外部连接工具也帮我们实现了对应的Source,通常情况下足以应对我们的实际需求。

2024-03-29 22:33:41 1200 2

原创 [flink 实时流基础] flink组件栈以及任务执行与资源划分

而且,对于一个数据流图来说,Source、FlatMap等算子的计算量相对不大,WindowAggregation算子的计算量比较大,计算量较大的算子子任务与计算量较小的算子子任务可以互补,空出更多的槽位,分配给更多任务,这样可以更好地利用资源。使用算子链是一个非常有效的优化,它可以有效减少算子子任务之间的传输开销。综上,Flink的一个Slot中可以执行一个算子子任务、也可以是被链接的多个子任务组成的任务,或者是共享Slot的多个任务,具体这个Slot上执行哪些计算由算子链和槽位共享两个优化措施决定。

2024-03-29 22:32:16 1203

原创 [flink 实时流基础系列]揭开flink的什么面纱基础一

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

2024-03-28 23:12:13 1337 2

原创 [flink] flink macm1pro 快速使用从零到一

flink的简单使用

2024-03-28 23:10:16 671

原创 [AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别

全文搜索是数据库和搜索引擎的重要功能。这个功能能在一个或多个列中查找用户查询的文本,这对诸如电子商务网站和检索大量文本数据的应用是必需的。在这篇文章中,我们将详细对比三种主流全文搜索技术: MySQL全文索引,Redis的RedisSearch,和Elasticsearch。

2024-03-27 22:36:59 862 4

原创 [AIGC] MySQL存储引擎详解

存储引擎是数据库管理系统使用的底层软件组件,它被用来创建、读取、更新和删除数据库中的数据。不同的存储引擎提供了处理不同业务需求的特定功能,如事务处理,全文索引等。

2024-03-27 22:31:03 635

原创 [AIGC] awk命令的作用是什么?

是一种处理文本的程序设计语言,是Linux和其他UNIX-like系统下的一个强大的文本分析工具。将输入文件看作由记录(record)和字段(field)组成。默认情况下,一个记录就是一行,字段由空格分割。强大的文本处理能力,加上其支持的条件语句、循环语句等程序设计元素,使得它非常适合生成各种报告。可以轻松地改变数据的显示格式,比如将列数据转换为行数据,或者实现更复杂的格式化输出。脚本中的函数,我们可以对抽取的数据进行各种加工处理。)结合起来使用,进行更复杂的文本处理任务。是一种完全的脚本语言。

2024-03-26 19:38:20 673 2

原创 [AIGC] grep, awk, sed命令详解及实例演示

Linux的终端命令行让我们可以轻松处理文本文件的各种任务,而grepawk,和sed命令则是最能体现此优势的工具之一。它们在处理文本,分析数据文件,生成报告等情况下都显示出了强大的威力。现在,我们就来详细介绍一下这三个命令,希望能让你在使用它们时可以得心应手。

2024-03-26 19:36:25 444

原创 [AIGC] Redis基础命令集详细介绍

Redis是一个强大的开源的键-值存储系统,被广泛应用于各种应用程序中。在使用Redis时,我们需要掌握一些基本的Redis命令来操作存储在其上的数据。这篇文章将向你介绍一些基本的Redis命令,让你能够更好地使用和理解Redis。

2024-03-24 23:05:38 887 2

原创 [AIGC] 使用Spring Boot进行单元测试:一份指南

在现代软件开发过程中,确认你的应用正确运行是至关重要的一步。Spring Boot提供了一组实用工具和注解来辅助你在测试你的应用时,使得这个过程变得简单。下面就来分享一下如何在Spring Boot中进行单元测试。

2024-03-24 22:57:50 860 1

python完整.png

2018年-python学习笔记的分享,从linuix、python基础 ,到python提高,re, SQL

2020-03-26

空空如也

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

TA关注的人

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