- 博客(242)
- 资源 (2)
- 收藏
- 关注
原创 Kafka系列教程 - Kafka 流式处理 -7
在使用 Kafka Streams 时,需要关注状态管理、时间处理、容错性、性能优化和资源消耗等方面。理解和合理配置这些内容,能够有效地避免流处理过程中常见的问题,并确保应用的高效和稳定性。
2025-04-01 11:33:05
571
原创 深入解析 Flink 批量插入 MariaDB 不生效问题
在使用 Flink 进行数据处理时,批量插入(batch insert)数据库是一种常见的优化策略,可以减少数据库压力,提高写入吞吐量。然而,近期在一个 Flink Job的升级过程 中,我们发现新的 job 老是无法实现数据插入到数据库中, 定位到设置时,数据并未插入数据库,而修改为后,数据却能立刻写入。为什么会这样呢?又该如何优化批量写入策略?我们对此进行深入探讨。
2025-03-06 14:22:09
1294
原创 Kafka系列教程 - Kafka 可靠传输 -5
更加通用的方法是,给数据增加一个版本号属性,每次更数据前,比较当前数据的版本号是否和消息中的版本号一致,如果不一致就拒绝更新数据,更新数据的同时将版本号 +1,一样可以实现幂等更新。需要注意的是,“检查消费状态,然后更新数据并且设置消费状态”中,三个操作必须作为一组操作保证原子性,才能真正实现幂等,否则就会出现 Bug。具体的实现方法是,在发送消息时,给每条消息指定一个全局唯一的 ID,消费时,先根据这个 ID 检查这条消息是否有被消费过,如果没有消费过,才更新数据,然后将消费状态置为已消费。
2025-03-03 11:21:53
711
原创 Kafka系列教程 - Kafka 集群 -4
每个 Partition 都有一个 Leader,零个或多个 Follower。Leader 处理一切对 Partition (分区)的读写请求;而 Follower 只需被动的同步 Leader 上的数据。同一个 Topic 的不同 Partition 会分布在多个 Broker 上,而且一个 Partition 还会在其他的 Broker 上面进行备份。
2025-02-07 08:59:27
1335
原创 Kafka系列教程 - Kafka 消费者 -3
分区的所有权从一个消费者转移到另一个消费者,这样的行为被称为分区再均衡(Rebalance)。Rebalance 实现了消费者群组的高可用性和伸缩性。Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 Consumer 如何达成一致,来分配订阅 Topic 的每个分区。比如某个 Group 下有 20 个 Consumer 实例,它订阅了一个具有 100 个分区的 Topic。正常情况下,Kafka 平均会为每个 Consumer 分配 5 个分区。
2025-01-02 09:46:35
1431
原创 Kafka系列教程 - Kafka 生产者 -2
Overridetry {// 使用 Jackson 序列化对象总结文本数据推荐使用。二进制数据直接使用。数值类型使用或。对于复杂的对象或自定义需求,可以自行实现序列化逻辑。选择合适的序列化器是确保消息高效传输和处理的关键。Kafka 的数据结构采用三级结构,即:主题(Topic)、分区(Partition)、消息(Record)。
2024-12-11 11:49:17
1299
原创 Kafka系列教程 - Kafka 快速入门 -1
官网定义:Apache Kafka是一个开源的分布式事件流式平台,被数千个公司用于高性能的数量管道,流式数据分析,数据集成和关键任务应用程序。Kafka由LinkedIn公司开发并于2011年早期开源,2012年10月23日从Apache Incubator毕业。
2024-12-02 09:31:40
868
1
原创 编程和英语
对于咱们程序员来说,英语水平可以说是突破能力天花板的一个必选项。毕竟高级编程语言几乎都是英语的子集,不说本来就是欧美人设计的各种语言,就连日本人设计的 Ruby、巴西人设计的 Lua,它们的语法采用的也全都是英语。学好英语对学好编程的重要性可见一斑。
2024-11-05 18:21:18
522
原创 React18-useEffect函数
useEffect hook 简介钩子是一个函数,它可以让你在不编写ES6类的情况下使用状态和其他react特性。
2024-10-25 15:50:44
984
原创 Grrenplum本地开发使用
数据准备(千万级别准备,数据分布尽量贴近真实,比如有的租户的数据量比较大,比如工作时间内的数据比较集中,非工作时间内的数据量比较少等,这么划分不一定完全准确仅供参考)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Greenplum自动根据create_time创建分区~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Greenplum的查询~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2024-10-03 21:40:11
870
原创 Java开发学习Kotlin 笔记
class A{} 等价于 final class A{} // 注意,则的`final`修饰符在编辑器中是灰色的,因为Kotlin中默认的类默认是final的。类内部的对象声明可以用 companion 关键字标记,这样它就与外部类关联在一起,我们就可以直接通过外部类访问到对象的内部元素。//Koltin要修改数据类的属性,则使用其独有的copy()函数。密封类的子类必须是在密封类的内部或必须存在于密封类的同一文件。OuterClass.companionFun()//调用伴生对象方法。
2024-09-03 17:28:51
785
原创 React组件之间通信
PropsContextPortalsRedux等十种方法,每种方法都有对应的适合它的场景,大家在设计自己的组件前,一定要好好考虑清楚采用哪种方式来解决通信问题。文初提到的那个小问题,最后我采用方案9,因为既然是小迭代项目,又是改别人的代码,当然最好避免对别人的代码进行太大幅度的改造。而pub/sub这种方式就挺小巧精致的,既不需要对别人的代码结构进行大改动,又可以满足产品需求。
2024-08-01 09:35:10
1251
原创 写在34岁生日之时-随笔
短期目标:优先学习前端技术,成为全栈开发者,以获得更多职业选择的灵活性。长期目标:在继续工作的同时,逐步提升后端技术深度,确保在未来能够成为某一领域的技术专家。认证选择:根据自己的学习进度和预算,选择合适的认证进行考试,增加职场竞争力。希望这些建议对你有所帮助,祝你在职业发展中取得更大成功!短期目标:通过系统学习 React,掌握前端开发技能,成为全栈开发者。长期目标:在后端技术方面深入发展,成为微服务、高并发处理、分布式系统等领域的专家。具体计划。
2024-07-29 17:32:41
1154
2
原创 Jackson使用详解
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一。Spring MVC 的默认 json 解析器便是 Jackson。Jackson 优点很多。Jackson 所依赖的 jar 包较少 ,简单易用。与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;
2024-07-01 16:24:15
903
原创 因为附件服务重启的问题
在使用容器时,我们应该始终使用 UseContainerSupport、InitialRAMPercentage、MinRAMPercentage 和 MaxRAMPercentage 而不是 Xmx & Xmn 来限制内存等资源。强烈建议将PRD中的最小荚数设置为大于1,否则,一旦遇到严重问题,API将完全无法对外开放,这将严重影响客户体验。需要定期检查pod的健康状态。如果前端没有遇到 503 错误,我们可能需要更多时间来确定问题。1.API报503,
2024-06-07 11:07:16
420
原创 SpringBoot2升级到SpringBoot3总结
我们这边的项目大多数都是Kotlin+SpringBoot2.X的技术栈,现在要全部升级到最新的SpringBoot3.2.2或者SpringBoot3.2.3,还是以Kotlin为主。最近公司在做监控日志平台的迁移,从NewRelic迁移到Dynatrace,为了配合迁移,有一个前提就是把SpringBoot2升级到SpringBoot3。首先做的第一件事:把JDK11升级到JDK17,以及把kotlin升级到1.9.21。注意查看升级后的驱动的依赖版本,注意出现不兼容的情况。等等,还有一些就不列举了。
2024-04-01 09:02:12
1405
原创 代码审查最佳实践与规则
当需要在现有项目中添加新代码时,应在主代码库(通常是 master/main/qa 分支)的基础上创建功能分支。这样,个人或团队就可以对新功能或任务进行开发,直到完成为止,并将他们的提交推送到这个不受保护的分支。开发完成后,就需要打开一个拉取请求(PR),将这些更改合并到主代码库中。这是为什么呢?因为代码审查必须由作者以外的人员执行,以检查源代码并查找问题,确保不良代码不会进入生产。此外,知识共享、提高安全性、降低开发成本和促进团队合作也是代码审查的好处。
2024-03-01 17:38:29
900
原创 Spring-IOC综述
说到spring的ioc,其实就是控制反转,为啥需要控制反转呢,其实是为了功能的增强,如果不用spring, 我们直接使用工厂方法,静态工厂方法, 都是是可以获取到对象的,但是如果需求变了,我们在类的生成时,添加了很多信息,使用工厂就不方便了,还有事务等需要统一的处理.一个典型的应用就是mybatis的接口,平时我们都是只需要写mybatis的接口,但是不写他的实现类,由spring生成一个代理的实现类,来进行方法的调用.对于事务的调用,在service上添加了事务,需要调用dao进行统一的控制.所以需要一
2024-01-02 09:42:32
1134
原创 Spring-AOP综述
Pointcut("execution(* com.chenss.dao.*.*(java.lang.String))")//匹配com.chenss.dao包下的任意接口和类的只有一个参数,且参数为String类型的方法。@Pointcut("execution(* com.chenss.dao.*.*(java.lang.String))")//匹配com.chenss.dao包下的任意接口和类的只有一个参数,且参数为String类型的方法。并扩充实现了proceed()方法,用于继续执行连接点。
2024-01-02 09:41:59
952
原创 Spring源码解析1
去读加了注解的类 和扫描的.在看第二行代码register**()**;这个其实就是把这个配置类注册到了spring中, 当然了这里也可以放一个普通的对象, 例如放一个UserDaoImpl.class, 也是可以注册到spring中去的, 当然了, 这里注册配置类和普通类的过程有些区别, 主要是涉及到对注解的处理, 过滤过程,再就是下一行代码refresh**()**;这一行代码很重要, 这是在初始化spring的环境,加载Spring中配置的6个类.
2023-12-04 10:05:20
905
原创 再谈jdk的代理
第408行的注释, 说如果没有就使用ProxyClassFactory创建一个,否则直接从缓存里面拿, 我们不看缓存的拿去, 就是一个Map, 没事好看的. 看看这个ProxyClassFactory类.他是静态的内部类.我们模仿第二种方式,动态的生成一个.java文件, 再编译成.calss文件,最后加载到jvm中,生成对象,调用新的对象的方法,就得到的增强的目的,而且对用户是透明的.缺点很明显, 需要继承, 而且随着功能的增加, 要不断的继承, 体系混乱,越来越复杂. 最后谁就不懂了.
2023-11-02 14:26:41
169
原创 Java 21 新功能展示(含示例)
Java 21 于 2023 年 9 月 19 日发布,是 Oracle 标准 Java 实现的下一个长期支持(LTS)版本。Java 21 具有以下 15 项功能。字符串模板(预览版) [JEP-430]序列集合 [JEP-431]代 ZGC [JEP-439]记录模式 [JEP-440]开关的模式匹配 [JEP-441]外来函数和内存 API(第三次预览) [JEP-442]未命名模式和变量(预览) [JEP-443]虚拟线程 [JEP-444]
2023-10-07 09:43:36
1085
原创 MongoDB教程-8
在之前的所有章节中,我们一直在使用MongoDB的Object Id。在本章中,我们将了解ObjectId的结构。ObjectId是一个12字节的BSON类型,具有以下结构-- 1.前4个字节代表自unix epoch以来的秒数接下来的3个字节是机器标识符接下来的2个字节是进程ID最后3个字节是一个随机的计数器值MongoDB使用ObjectIds作为每个文档的_id字段的默认值,它是在创建任何文档的时候产生的。ObjectId的复杂组合使得所有的_id字段都是唯一的。
2023-08-01 09:01:24
697
原创 MongoDB教程-7
正如在MongoDB关系的最后一章中所看到的,为了在MongoDB中实现规范化的数据库结构,我们使用了引用关系的概念,也被称为手动引用,在这个概念中,我们手动将被引用文档的id存储在其他文档中。然而,在一个文档包含来自不同集合的引用的情况下,我们可以使用MongoDB DBRefs。DBRefs与手工引用。
2023-08-01 09:00:43
923
原创 MongoDB教程-5
复制是跨多个服务器同步数据的过程。复制在不同的数据库服务器上提供数据的多个副本,从而提供冗余并提高数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。通过增加数据拷贝,您可以将其中一个用于灾难恢复、报告或备份。
2023-07-10 09:02:03
624
原创 MongoDB教程-6
在开始在Java程序中使用MongoDB之前,需要确保在机器上设置了MongoDB CLIENT和Java。您可以查看机器上Java安装的Java教程。现在,让我们检查如何设置MongoDB CLIENT。您需要下载jar mongodb-driver-3.11.2.jar及其依赖mongodb-deriver-core-3.11.2.jar。请确保下载这些jar文件的最新版本。您需要将下载的jar文件包含到类路径中。
2023-07-10 09:01:24
207
原创 MongoDB教程-2
如果数据库不存在,该命令将创建一个新数据库,否则将返回现有数据库。若并没有创建任何数据库,那个么集合将存储在测试数据库中。Options参数是可选的,因此您只需指定集合的名称。如果您尚未选择任何数据库,则它将删除默认的“测试”数据库。在插入文档时,MongoDB首先检查封顶集合的size字段,然后检查max字段。MongoDB的db.collection.drop()用于从数据库中删除集合。在命令中,name是要创建的集合的名称。如果成功删除所选集合,drop()方法将返回true,否则将返回false。
2023-05-04 09:37:02
624
原创 cassandra数据库入门-4
CQL 提供了创建和使用用户定义数据类型的便利。您可以创建一个数据类型来处理多个字段。本章说明如何创建、更改和删除用户定义的数据类型。创建用户定义的数据类型命令 CREATE TYPE 用于创建用户定义的数据类型。其语法如下 -例子下面给出了创建用户定义数据类型的示例。在此示例中,我们正在创建一个包含以下详细信息的 card_details 数据类型。属性属性名数据类型numintpinintnametextcvvcvvintphoneset... );
2023-05-04 09:33:59
1083
原创 cassandra数据库入门-3
您可以使用命令 CREATE TABLE 创建表。下面给出了创建表的语法。句法定义列您可以定义一个列,如下所示。example:age int,name text主键主键是用于唯一标识一行的列。因此,在创建表时必须定义主键。主键由表的一个或多个列组成。您可以定义表的主键,如下所示。例子下面给出了使用 cqlsh 在 Cassandra 中创建表的示例。我们在这里 -使用键空间 tutorialspoint创建名为 emp 的表。
2023-04-03 14:08:46
1313
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人