我收到一条 protobuf 消息 -
message Sample{
string field1 = 1;
string field2 = 2;
string field3 = 3;
}
Run Code Online (Sandbox Code Playgroud)
这些消息以二进制格式存储在数据存储中。因此,如果我想删除上述消息中的任何定义字段,是否会导致从数据存储区反序列化消息时出现任何问题?
serialization protocol-buffers binary-serialization deserialization protobuf-java
ThreadLocal
执行期间存储在存储中的内容是否会在线程返回ThreadPool时自动清除(如预期的那样)?
在我的应用程序中,我ThreadLocal
在一些执行期间放入一些数据,但如果下次使用相同的Thread,那么我在ThreadLocal
存储中找到过时的数据.
我要声明一个泛型类,将上三胞胎的工作- key
,value
和metadata
。
该key
和value
字段是强制性的,但该metadata
字段是可选的。
class Triplet<K,V,M>{
K key;
V value;
M metadata;
//setters and getters
}
Run Code Online (Sandbox Code Playgroud)
在使用上面的类时,我必须像下面一样初始化它 -
Triplet<Integer, String, String> t1 = new Triplet<>();
// Setters
Run Code Online (Sandbox Code Playgroud)
但对于某些用例metadata
是可选的。所以当我null
用作第三个类型参数时,编译器给出了一个错误 -
Triplet<Integer, String, null> t2 = new Triplet<>();
Run Code Online (Sandbox Code Playgroud)
我应该如何正确实例化适用于多种类型的参数化类型,其中使用站点指定的类型参数之一是可选的?
我是Java 9的新手,正在通过YouTube上的Java模块化视频讲座.他们提到了模块化的3个好处 - 1.没有遗漏的依赖性2.没有循环依赖性3.没有拆分包.
据我所知,拆分包就是说应用程序依赖于多个依赖关系,让我们说包abc.pqr.xyz存在于更多的1个jar中.然后有可能从jar1中使用该包中的某些类,而从jar2中使用其他类.这可能会在运行时导致一些难以调试的问题.
视频说模块化解决了这个问题.但那是怎么回事?
假设有test.module1,它有以下模块信息 -
module test.module1{
exports abc.pqr.xyz;
}
Run Code Online (Sandbox Code Playgroud)
另一个模块2具有以下模块信息 -
module test.module2{
exports abc.pqr.xyz;
}
Run Code Online (Sandbox Code Playgroud)
现在让我们在我的应用程序中说我添加了这两个模块的依赖关系 -
module test.myapp{
requires test.module1;
requires test.module2;
}
Run Code Online (Sandbox Code Playgroud)
现在我又有2个模块化依赖项,其中有些类可能会出现在这两个模块中.那么在运行时如何解决从哪个模块中获取类定义?Java 9如何避免拆分包问题?
我是卡夫卡的新手。我想了解 kafka 消费者在其指定的偏移量不存在时的行为。可能由于保留策略或消费者指定了无效的偏移值,给定偏移量处的消息被删除。