当我注意到你现在可以在界面中定义静态和默认方法时,我正在通过接口学习.
public interface interfacesample2 {
public static void method() {
System.out.println("hello world");
}
public default void menthod3() {
System.out.println("default print");
}
}
Run Code Online (Sandbox Code Playgroud)
请解释两者的区别,如果有一个例子,我们什么时候使用它会很好.在接口上有点困惑.
我试图理解注释和标签之间的区别。
我对注释的理解是,它是添加键值对的元数据,Kubernetes 无法使用这些元数据来识别/过滤资源。
另一方面,标签是 Kubernetes 可以用来识别/过滤资源的元数据键值对。
这是正确的吗?如果是这样,那么注解的实际用途是什么?跟性能有关系吗?标签在 Kubernetes 扫描仪的过滤器和注释下的位置纯粹是为了添加仅供参考的元数据?
但我见过部署需要 Nginx 或使用注释的入口功能的情况。那么它是如何被搜索或使用的呢?为什么这里不使用标签呢?
我们什么时候在标签上使用注释,反之亦然?各自的优点和缺点是什么?
我的理解相当有限,但是阅读官方文档并没有真正帮助我理解何时使用注释和标签的用例。
根据此链接,可以选择手动设置MaxRamSize以限制JVM不使用超出此范围的内存.但我没有看到任何相同的文件.我从来不知道这一点.有这样的东西还是类似的东西?PS.我知道,我不打算设置堆/堆栈/元空间/本机内存大小.我只是想知道是否有整体内存限制选项.
尝试它没有帮助,因为它错误:
Improperly specified VM option 'MaxRAM=1073741824B'
Could not create the Java Virtual Machine.
A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
事实上根据这个链接 open-jdk似乎有这些选项.我发现的另一个链接指向设置堆大小.这也是不寻找的.但我认为这是针对Oracle的.
为什么我正在寻找这种选项来在容器(如Docker)中运行应用程序,并防止应用程序被OOM Killer杀死.我相信如果有一个这样的java应用程序的设置会错误或崩溃,java.lang.OutOfMemoryError
而不是容器被终止.
我的假设和理解可能完全错误.这个问题也可能是完全错误和无关紧要的.但当然,要求是前进的方向:).
我正在尝试学习 docker 并理解 docker-compose
当我尝试外部网络部分时:
networks:
default:
external:
name: my-pre-existing-network
Run Code Online (Sandbox Code Playgroud)
我知道需要创建“我的已有网络”。
是否可以从撰写文件本身创建新的默认外部网络?
这更多地是从学习/理解的角度来看,也是 docker network create 命令的替代方案。谢谢。
所以我正在探索Jaeger for Tracing,我发现我们可以直接通过HTTP(端口:14268)将span从客户端发送到收集器,如果是这样那么使用jaeger代理有什么优势。
何时采用 Jaeger Agent 方法以及何时采用直接 HTTP 方法。使用直接方法收集器有什么缺点
我一直在尝试 Spring AMQP。我有几个问题:
我想知道什么是发布者退货以及它与发布者确认有何不同。据我了解,我们有一个发布者确认回调来检查确认的状态。现在我查看了 Spring AMQP 和 Rabbit MQ 中的文档。对此并没有真正发现或了解太多。
另外,为什么如果尝试将消息发送到不存在的队列,我不会得到任何类型的确认(ack/nack),也不会得到任何错误。有没有办法为非确认设置超时?
现在,我的理解通常是 @RequestMapping 方法需要是公共的。它们也可以是私有的吗?如果是这样,我们什么时候会使用这个?
我问这个问题的原因是我注意到 @RequestMapping 也适用于私有方法。为什么会这样呢?
是否因为 spring 通过反射访问这些方法,所以没有真正考虑访问修饰符?这是一个错误还是一个有用的功能?
因此,当我试图理解 jersey 的异步挂起时,我的理解是我们需要一个单独的线程/执行器服务。我还了解 jersey 提供 @@ManagedAsync 在这种情况下这些线程由 Jersey 管理。这感觉 @ManagedAsync 应该是理想的方式,因为它抽象并且可能在底层有最好的实现。但这只是我的感觉。所以我的问题是我们什么时候使用 @ManagedAsync 方法以及什么时候使用我们的 ThreadPool/ExecutorService 来处理异步线程。
我在看 APM 工具。本质上是 Dynatrace,我可以看到它还提供了似乎与语言无关且无需修改代码的跟踪功能。
与 dynatrace 之类的工具相比,jaeger/open tracking 在哪里会是更好的选择?
是的,dynatrace(或其他类似 Elastic APM)能够提供对跟踪以外的应用程序的更多洞察。
但仅从跟踪的角度来看...... jaeger 有哪些优势或能力比 APM 工具更好或在 APM 中不可用。仅从跟踪的角度来看。
嗨,我看到了这个文档,其中 kubectl 可以在默认 pod 的 pod 内运行。是否可以在指定命名空间的作业资源中运行 kubectl?没有看到任何相同的文档或示例..
当我尝试将 serviceAccounts 添加到容器时,出现错误:
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:my-namespace:internal-kubectl" cannot list resource "pods" in API group "" in the namespace "my-namespace"
Run Code Online (Sandbox Code Playgroud)
这是我尝试 SSH 进入容器并运行 kubctl 的时候。
编辑问题.....
正如我之前提到的,根据我添加了服务帐户的文档,以下是 yaml:
apiVersion: v1
kind: ServiceAccount
metadata:
name: internal-kubectl
namespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: modify-pods
namespace: my-namespace
rules:
- apiGroups: [""]
resources:
- pods
verbs:
- get
- list
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding …
Run Code Online (Sandbox Code Playgroud) java ×4
deployment ×2
devops ×2
jaeger ×2
kubernetes ×2
opentracing ×2
spring ×2
admin ×1
amqp ×1
apm ×1
containers ×1
docker ×1
dockerfile ×1
dynatrace ×1
java-8 ×1
jersey ×1
jersey-2.0 ×1
jobs ×1
jvm ×1
jvm-hotspot ×1
memory ×1
performance ×1
rabbitmq ×1
rbac ×1
rest ×1
spring-amqp ×1
spring-boot ×1
spring-mvc ×1
spring-rest ×1