当前位置: 代码网 > it编程>数据库>Mysql > Flink的sink实战之四:自定义,2024年最新kafka视频分析

Flink的sink实战之四:自定义,2024年最新kafka视频分析

2024年08月01日 Mysql 我要评论
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的。

name varchar(25) collate utf8_bin default null,

age int(10) default null,

primary key (id)

) engine=innodb auto_increment=5 default charset=utf8 collate=utf8_bin;

编码

  1. 使用《flink的sink实战之二:kafka》中创建的flinksinkdemo工程;

  2. 在pom.xml中增加mysql的依赖:

mysql

mysql-connector-java

8.0.11

  1. 创建和数据库的student表对应的实体类student.java:

package com.bolingcavalry.customize;

public class student {

private int id;

private string name;

private int age;

public int getid() {

return id;

}

public void setid(int id) {

this.id = id;

}

public string getname() {

return name;

}

public void setname(string name) {

this.name = name;

}

public int getage() {

return age;

}

public void setage(int age) {

this.age = age;

}

public student(string name, int age) {

this.name = name;

this.age = age;

}

}

  1. 创建自定义sink类mysqlsinkfunction.java,这是本文的核心,有关数据库的连接、断开、写入数据都集中在此:

package com.bolingcavalry.customize;

import org.apache.flink.configuration.configuration;

import org.apache.flink.streaming.api.functions.sink.richsinkfunction;

import java.sql.connection;

import java.sql.drivermanager;

import java.sql.preparedstatement;

import java.util.concurrent.timeunit;

import java.util.concurrent.locks.reentrantlock;

public class mysqlsinkfunction extends richsinkfunction {

preparedstatement preparedstatement;

private connection connection;

private reentrantlock reentrantlock = new reentrantlock();

@override

public void open(configuration parameters) throws exception {

super.open(parameters);

//准备数据库相关实例

buildpreparedstatement();

}

@override

public void close() throws exception {

super.close();

try{

if(null!=preparedstatement) {

preparedstatement.close();

preparedstatement = null;

}

} catch(exception e) {

e.printstacktrace();

}

try{

if(null!=connection) {

connection.close();

connection = null;

}

} catch(exception e) {

e.printstacktrace();

}

}

@override

public void invoke(student value, context context) throws exception {

preparedstatement.setstring(1, value.getname());

preparedstatement.setint(2, value.getage());

preparedstatement.executeupdate();

}

/**

  • 准备好connection和preparedstatement

  • 获取mysql连接实例,考虑多线程同步,

  • 不用synchronize是因为获取数据库连接是远程操作,耗时不确定

  • @return

*/

private void buildpreparedstatement() {

if(null==connection) {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加v获取:vip1024b (备注java)
img

总结

以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含java、mysql、算法、redis、jvm、架构、中间件、rabbitmq、设计模式、spring等),现在起闭关修炼半个月,争取早日上岸!!!

下面给大家分享下我的面试大全资料

  • 第一份是我的后端java面试大全

image.png

后端java面试大全

  • 第二份是mysql+redis学习笔记+算法+jvm+java核心知识整理

字节二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

mysql+redis学习笔记算法+jvm+java核心知识整理

  • 第三份是spring全家桶资料

字节二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

mysql+redis学习笔记算法+jvm+java核心知识整理

一个人可以走的很快,但一群人才能走的更远。不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

zby-1712719110313)]

mysql+redis学习笔记算法+jvm+java核心知识整理

  • 第三份是spring全家桶资料

[外链图片转存中…(img-ys6oumge-1712719110313)]

mysql+redis学习笔记算法+jvm+java核心知识整理

一个人可以走的很快,但一群人才能走的更远。不论你是正从事it行业的老鸟或是对it行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-tto8mjce-1712719110314)]

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com