
java
文章平均质量分 68
play maker
这个作者很懒,什么都没留下…
展开
-
IDEA搜索指定某个类的方法的引用位置
但是像Object定义的Equals方法这种,搜索出来的结果是超级多的,根据没法看,因此想要。把选项Search for base method usages剔除掉就行了。搜索方法引用位置的时候,如果该方法是接口定义出来的,则结果里会。包含其他实现类的该方法的引用位置。只看该类的方法引用位置。原创 2023-09-05 11:54:24 · 763 阅读 · 0 评论 -
Flink+Pulsar、Kafka问题分析及方案 -- 事务阻塞
跟kafka一样,可能会发生重启任务后并发度增大的情况,假设前面启动时的并发度为P1,当前启动的并发度为P2,因此前面的任务执行使用的ClientName范围为[0,P1 ),我们需要把这些ClientName对应的事务都abort一次,但是P1是不可知的。Flink从Checkpoint/Savepoint启动时,对于前面没完结的事务都会存储在Checkpoint/Savepoint里,启动时会调用recoverAndCommit/recoverAndAbort方法来处理掉,一般这是没啥问题的。原创 2023-05-18 18:02:05 · 1128 阅读 · 1 评论 -
FlinkKafkaProducer 源码分析
这里有一个问题需要解决的:由于不从checkpoint/savepoint中启动,因此我们无法得知之前启动时的并发度,假设前面启动时的并发度为P1,当前启动的并发度为P2,因此前面的任务执行使用的事务ID范围为[0,P1 * PoolSize),我们需要把这些事务ID都abort一次,但是P1是不可知的。因此我们还需要补充abort那些不在快照里的事务ID,因为Kafka connector的事务ID都是固定的,都在池子里存储着,而Context里存储了事务ID池子,因此恢复userContext后,原创 2023-05-18 17:50:51 · 861 阅读 · 0 评论 -
Pulsar幂等性开发的设计文档
因为成功写入__terminated_txn_state 在更新事务状态为ABORTED之前,因此写入的事务元数据是aborting,因此对于Preserver保存的事务数据,我们应当视aborting等同于aborted,因为aborting的事务最终只可能为aborted,而如果到了查询Preserver里的数据的逻辑,那此时肯定已经抛出TransactionNotFound错误,已经删除掉对应的事务元数据了,因此此时肯定是aborted了。至于其他成员数据量比较大,如分区信息,都不序列化。原创 2023-04-24 20:02:09 · 574 阅读 · 0 评论 -
Flink+Pulsar、Kafka问题分析及方案 -- 幂等性
pulsar的transactionID是由broker分配的,不用用户设置,也没法设置;而kafka这里是用户设置的。kafka的ProducerID是由broker分配的,用户没法设置;但是pulsar的ProducerName是可以由用户设置的。kafka会复用transactionID,transactionID一个时刻对应一个事务,这个事务完成后可以复用这个transactionID开启下一个事务,broker会使用一个Map维护每个transactionID的元数据。原创 2023-04-24 15:50:13 · 1738 阅读 · 0 评论 -
Flink+Kafka、Pulsar实现端到端的exactly-once语义
倘若commit失败(比如网络故障等),Flink应用就会挂掉,然后根据用户重启策略执行重启逻辑,之后再次重试commit。举个例子,Pravega是Dell/EMC的一个开源流式存储系统,Flink搭配它也可以实现端到端的exactly-once semantics。左侧为正常事务的提交(以客户端的视角)流程,右侧为checkpoint 略缩版流程, 那么现在需要将这两部分逻辑融合起来。在过去的几年间,Flink开发出了checkpointing机制,而它则是提供这种应用内仅一次处理的基石。原创 2023-04-21 18:11:53 · 775 阅读 · 0 评论 -
IDEA自动导包禁止导入*
IDEA 自动导包禁止导入*原创 2023-03-09 15:22:13 · 1412 阅读 · 0 评论 -
Pulsar 各个Shedder分析及新的Shedder -- AvgShedder
Pulsar 各个Shedder分析及新的Shedder -- AvgShedder原创 2022-11-19 17:55:55 · 933 阅读 · 2 评论 -
Pulsar bundle数目的选择
Pulsar bundle数目的选择原创 2022-11-19 16:47:05 · 955 阅读 · 0 评论 -
IDEA使用--文件的自动移动
src/main/resources下面的配置文件等在执行src/main文件夹的代码时,会自动移动到target/classes下面。注意:测试代码及其下面的资源文件与主代码及资源是独立的!因此测试的配置文件等需要单独编写,主代码修改了配置文件,测试配置文件也要再手动修改。src/test/resources下面的资源会自动移动到target/test-classes下面。...原创 2022-05-19 10:11:30 · 1951 阅读 · 0 评论 -
jersey server:415 Unsupported Media Type
发送请求给jersey server时,没有响应,用wireshark抓包发现,返回了415 Unsupported Media Type。Chapter9.Support for Common Media Type Representations原因:java代码里的 POJO虽然使用了json相关模块的包来注解,但是还需要jersey 相关的依赖,来调用执行序列化反序列化。jersey支持MOXy、Jackson 和 Java APIforJSON Binding(JSON-B)这...原创 2022-05-18 08:05:55 · 401 阅读 · 0 评论 -
jersey报错InjectionManagerFactory not found
具体原因是缺少下面的jar包,解决办法是在maven配置文件pom.xml中加入依赖,或者直接到官网下载对应jar包:<dependency><groupId>org.glassfish.jersey.inject</groupId><artifactId>jersey-hk2</artifactId><version>${jer...原创 2022-05-19 10:12:52 · 1207 阅读 · 1 评论 -
java工作目录
java打开文件时,如果使用的是相对路径,则会使用工作目录作为base dir。可以通过输出系统属性user.dir,即System.getProperty("user.dir")来获取工作目录。使用命令行执行java代码时,工作目录的默认值是当前执行java程序的路径,如下代码打印工作目录,并修改后再输出:package com.example;import java.io.IOException;public class Test {public static ...原创 2022-05-18 09:16:11 · 2604 阅读 · 0 评论 -
maven 报错 The goal you specified requires a project to execute but there is no POM in this directory
执行mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false命令在powershell执行的时候可能会报错如下The goal you specified requires a project to executebut th...原创 2022-03-24 09:28:53 · 1414 阅读 · 1 评论 -
slf4j-log4j12与log4j-slf4j-impl对比
结论:它俩都是适配器,适配具体的日志实现给slf4j facade接口。但是slf4j-log4j12是使用log4j,而log4j-slf4j-impl使用log4j2.从项目依赖可以看出。log4j只需要引入一个jar包即可,<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17&...原创 2022-02-05 20:06:28 · 4463 阅读 · 0 评论 -
java socket编程 实现一个简单的客户端和服务端
一个简单的客户端import java.net.*;import java.io.*;public class test{public static void main(String [] args) throws IOException{Socket soc=new Socket("192.168.43.193",2333);PrintStreamwriter=new PrintStream(soc.getOutputStream());...原创 2021-08-31 20:00:57 · 1685 阅读 · 0 评论 -
线程池工厂方法源码分析
里面都是静态方法,为Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable classes提供工厂方法创建一个线程池,该线程池重用在共享的无边界队列上运行的固定数量的线程。 在任何时候,最多nThreads个线程是活动的,用于处理任务。如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待直到一个线程可用。如果任何线程由于执行过程中的异常导致在shutdown之前终...原创 2021-08-31 19:49:57 · 247 阅读 · 0 评论 -
java常见函数式接口
JDK预定义了很多函数式接口以避免用户重复定义。最典型的是Function,有参有返回值,接受一个T类型的参数,并返回一个R类型的返回值@FunctionalInterfacepublic interface Function<T, R> {R apply(T t);}Consumer,有参无返回值。@FunctionalInterfacepublic interface Consumer<...原创 2021-08-31 19:24:07 · 310 阅读 · 0 评论 -
java 匿名内部类
在使用new实例化对象的时候定义类。即new 类名/接口名( {类的定义} );匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或者实现一个接口。匿名内部类不能是抽象类,父类可以是抽象类。匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以使用动态代码块,可以通过动态代码块来完成构造器需要完成的工作。匿名类中不能定义static变量和static方法,也不能使用静态代码块。public interface TestI.原创 2021-08-31 19:20:19 · 508 阅读 · 0 评论