我有一个在 RHEL 6.10 上运行的 Java8 应用程序。此应用程序通过常用方法注册关闭处理程序:
Thread shutdownThread = new Thread(()=>{
Logger.info("Got shutdown signal");
// Do cleanup
});
Runtime.getRuntime().addShutdownHook(shutdownThread);
Run Code Online (Sandbox Code Playgroud)
此应用程序由 Jenkins 构建启动(环境BUILD_ID变量设置为dontkillme)。应用程序初始化成功,但大约 30 秒后调用关闭挂钩并终止应用程序。我试图弄清楚是谁让我关闭以及为什么。我已经进行了监控top,它在运行时似乎没有出现内存问题,所以我不认为 OOM 杀手是罪魁祸首。我也看了看/var/log/dmesg和/var/log/messages不看相关的有什么无论是。我不认为 Jenkins 会杀死我,因为我设置了BUILD_ID,也因为应用程序在“父”Jenkins 作业仍在运行时死亡。
我可以使用哪些其他方法/工具来查看发生了什么?请注意,我的环境非常封闭,因此很难从 Internet 下载和运行某些内容,希望我可以使用标准 RHEL6 安装中的某些内容。
我有一个看起来像这样的接口结构:
在最基本的级别是具有此定义的IDataProducer:
public interface IDataProducer<out T>
{
IEnumerable<T> GetRecords();
}
Run Code Online (Sandbox Code Playgroud)
和一个看起来像这样的IDataConsumer:
public interface IDataConsumer<out T>
{
IDataProducer<T> Producer { set; }
}
Run Code Online (Sandbox Code Playgroud)
最后,我有一个像IDataConsumer这样的IWriter:
public interface IWriter<out T> : IDataConsumer<T>
{
String FileToWriteTo { set; }
void Start();
}
Run Code Online (Sandbox Code Playgroud)
我想制作IWriter的泛型类型T协变,以便我可以实现一个Factory方法来创建可以处理不同对象的Writer,而不必知道提前返回什么类型.这是通过将通用类型标记为"out"来实现的.问题是,我在IDataConsumer上遇到编译错误,因为:
Invalid variance: The type parameter 'T' must be contravariantly valid on 'IDataConsumer<T>.Producer'. 'T' is covariant.
Run Code Online (Sandbox Code Playgroud)
我不确定这是怎么回事.在我看来,泛型类型通过整个接口链标记为协变,但很可能我不完全理解协方差如何工作.有人可以向我解释我做错了什么吗?
我有一个简单的 json 配置文件,格式如下:
{
"applications" : [
{
"appName": "app1"
},
{
"appName": "app2"
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我有 2 个舵图定义每个应用程序的部署:
apiVersion: v1
kind: Deployment
metadata:
name: app1
# etc, etc, etc
---
apiVersion: v1
kind: Deployment
metadata:
name: app2
# etc, etc, etc
Run Code Online (Sandbox Code Playgroud)
我想做的是在安装时加载该 json 配置文件并使用它来生成所需的部署图表,如下所示:
# "config" holds the loaded json file
{{- range .Values.config.applications }}
apiVersion: v1
kind: Deployment
metadata:
name: {{ .appName | quote }}
{{- end}}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我在这里尝试了很多答案,但几乎所有答案都与通过配置映射将 json 文件传递到应用程序有关。如何在 helm 中加载 json 文件并使用图表本身中的值?请注意,其他应用程序也在使用此文件,因此我不能将其更改为 YAML 文件或类似文件。
我一直在尝试将一些旧的 OpenGL 代码转换为使用着色器,但在让片段着色器在立方体上绘制纹理时遇到了问题。然而,我看到的只是一个灰色的立方体。我已经调试了我的 .obj 加载器代码,并且我知道 UV 正在正确加载,并且我知道纹理正在从磁盘加载并正确放置在 GPU 上。经过大量测试后,我发现我的 UV 值没有在每个三角形的面上进行插值。也就是说,看起来每个片段的 uv 值都为 0.0,0.0(这是我缓冲区中的第一个 uv 值)知道为什么吗?
这是我的片段着色器:
#version 430 core
in vec3 color;
in vec2 uv;
uniform sampler2D tex;
out vec3 frag_color;
void main()
{
//frag_color = color;
frag_color = texture(tex,uv).rgb;
}
Run Code Online (Sandbox Code Playgroud)
还有我的顶点着色器:
#version 430 core
layout(location = 0) in vec3 pos;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec2 uv;
uniform mat4 mvMatrix;
uniform mat4 mvpMatrix;
attribute vec3 lightPos;
out vec3 color;
out vec2 uv_out;
void …Run Code Online (Sandbox Code Playgroud)