我是Go和Micro-services开发的新手,但我希望我的问题会有意义:
假设我有一个微服务,可处理用户操作,例如创建,显示和更新用户,可在访问localhost:8081/users
。
除此之外,我还可以在微服务处理事件的创建,显示和更新localhost:8082/events
。
而且,在此之上,还有一个网关,该网关可以localhost:8080
用作代理,将传入的请求分派到正确的服务。
我发现这段代码可以很好地从网关重定向到用户的服务:
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: "localhost:8081",
})
http.ListenAndServe(":8080", proxy)
Run Code Online (Sandbox Code Playgroud)
但是有两件事困扰着我:
我应该如何处理多个微服务上的调度?我想要一个条件,例如:“如果客户要求localhost:8080/users
,则应转到用户的服务。如果客户要求,则应转到localhost:8080/events
事件的服务。(请随时告诉我这种方法是否错误)
就像我在标题中提到的那样,我正在使用labstack / echo路由器,所以我不想使用来启动服务器http.ListenAndServe(":8080", proxy)
,而是使用类似
e := echo.New()
e.Start(":8080")
但是我找不到如何使用此工具将代理作为参数传递。
几天后我使用FO-DICOM处理DICOM文件.
我正在使用一组dicom文件进行测试,并且我一直在打印"Photometric Interpretation"和"Sample Per Pixel"值,以便更好地了解我正在使用的图像类型.
对于光度学解释,结果是"MONOCHROME2",对于每像素样本,结果是"1".
通过阅读标准的第3部分,我理解的是MONOCHROME2代表灰度,从最小值开始为黑色.
但是每个像素的样本到底是什么?我认为这代表了每个像素的字节数(而不是位数)(对于灰度等级,这个逻辑是每像素有8 位吗?)
但我的问题是,实际上,我的图像似乎有32 bpp.我正在使用512*512像素的图像,我将它们转换为字节数组.所以我期待512*512 = 262144字节的数组.但我得到1048630字节的数组(这比4*262144多一点)
有人有解释吗?
编辑:
这是我的一些数据:
PhotometricInterpretation=MONOCHROME2
SamplePerPixel=1
BitsAllocated=16
BitsStored=12
HighBit=11
PixelRepresentation=0
NumberOfFrames=0
Run Code Online (Sandbox Code Playgroud) 我找不到如何将String转换为可运行的代码,例如:
val i = "new String('Yo')"
// conversion
println(i)
Run Code Online (Sandbox Code Playgroud)
应该打印
Yo
Run Code Online (Sandbox Code Playgroud)
转换后.
我在另一篇文章中找到了以下示例:
import scala.tools.nsc.interpreter.ILoop
import java.io.StringReader
import java.io.StringWriter
import java.io.PrintWriter
import java.io.BufferedReader
import scala.tools.nsc.Settings
object FuncRunner extends App {
val line = "sin(2 * Pi * 400 * t)"
val lines = """import scala.math._
|var t = 1""".stripMargin
val in = new StringReader(lines + "\n" + line + "\nval f = (t: Int) => " + line)
val out = new StringWriter
val settings = new Settings
val looper …
Run Code Online (Sandbox Code Playgroud) 我有这段代码,可以很好地用libpcap编写一个pcap文件(仅用于测试的以太网协议):
struct ethernet {
u_char mac1[6];
u_char mac2[6];
u_short protocol;
};
int main() {
pcap_t *pd;
pcap_dumper_t *pdumper;
pd = pcap_open_dead(DLT_EN10MB, 65535);
pdumper = pcap_dump_open(pd, "test.pcap");
struct pcap_pkthdr packet_header;
struct timeval ts;
packet_header.ts = ts;
packet_header.caplen = sizeof(struct ethernet);
packet_header.len = sizeof(struct ethernet);
struct ethernet ethernet;
bzero(ethernet.mac1, 6);
bzero(ethernet.mac2, 6);
ethernet.protocol = 8977; // randomly choose
pcap_dump((u_char*)pdumper, &packet_header, (const u_char*)ðernet);
pcap_close(pd);
pcap_dump_close(pdumper);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我想尝试不使用pcap函数,所以我开始修饰上面使用的函数。
这是我发现的来源:
pcap_open_dead函数:http ://www.wand.net.nz/trac/libtrace/browser/lib/pcap_open_dead.c?rev=808a478a2459f3cf0e8bf927fcaad371138efb20
pcap_dump_open,pcap_dump等:http : //www.opensource.apple.com/source/libpcap/libpcap-2.1/libpcap/savefile.c
所以,这是我的想法:
pcap_open_dead函数是无用的,只是实例化一个pcap_t结构(我不想在我的代码中使用)并用参数填充其值。
pcap_dump_open返回一个pcap_dumper_t(似乎就像一个FILE *),只是打开文件并在其中写入标题(如果我们不关心错误处理的话)。顺便说一句,似乎它给sf_write_header提供了“ p-> tzoff”作为参数,该参数尚未在我的代码中初始化(并且仍在工作)。关于链接类型,在我们的例子中,它等于1。 …
我必须在c#中编写一个程序,能够解析DICOM并显示轴向,冠状和矢状切口.
好像这是很多工作,但我必须这样做!
我想,第一步就是理解DICOM文件.
我一直在阅读本教程http://dicomiseasy.blogspot.ru/,但他正在使用我不允许购买的这个RZDCX库.
关于DICOM属性还有一些很好的解释,我也一直在阅读标准的某些部分(首先是第3部分)
但是我很难理解它们.有那些图像属性:像素表示,像素数据,平面配置...我想理解它们是非常重要的是能够显示图像,我想我应该更多地了解像素实际如何工作以更好地理解.
但还有一件事我真的无法弄清楚:
我怎么或在哪里有三个不同的削减?(轴向/冠状/矢状).我一直在寻找标准中关于它们的属性,但我没有找到任何属性.所以我们可能会通过某种计算找到它们,但我不知道哪个变量应该用哪个公式?
我在服务器上运行一个API,该API处理用户连接和消息传递系统。
除此之外,我还在同一台服务器上启动了一个websocket,等待连接和其他东西。
假设我们可以通过Android应用访问此功能。
我很难弄清楚现在应该做什么,这是我的想法:
1-当用户连接到应用程序时,API将连接到websocket。我们仅允许Android应用在此套接字上侦听以获取新消息。当用户想要回答时,Android应用会将消息发送到API。API将接收到的消息本身写入套接字,该消息将由另一个用户使用的Android应用读取。这样,API可以在将消息写入套接字之前将消息存储在数据库中。
2- API不会以任何方式连接到websocket。Android应用程序会在需要时侦听并写入Websocket,并且在写入Websocket时也应向API发送请求,以便可以将消息存储在DB中。
可能以上都不正确,请让我知道
编辑
我已经理解了为什么我应该使用websocket,这似乎是拥有这种“实时”系统的最佳方法(例如,在收到新消息时),而不是强制客户端每隔x秒发出一次HTTP请求以检查是否存在是新邮件。
我仍然不了解的是,如何与我的数据库进行通信。抱歉,如果我的示例不清楚,但我将尝试继续进行下去:
我的消息传递系统需要将所有消息存储在我的API数据库中,以具有某种对话的历史记录。
但是似乎websocket必须与API分开运行,我的意思是这是另一个程序,对吗?因为它不是针对HTTP请求的
那么,API是否也应该侦听此网络套接字以捕获新消息并存储它们?
我在 kubernetes API 前面添加了一个代理,以便使用自制的身份验证系统对用户进行身份验证(以及其他操作)。
我修改了 kube 配置,让 kubectl 访问代理。代理有自己的 kubeconfig 和有效的证书颁发机构数据,因此我不需要任何凭据。
到目前为止,一切正常,这是我本地需要的最低配置:
clusters:
- cluster:
server: http://localhost:8080
name: proxy
contexts:
- context:
cluster: proxy
name: proxy
current-context: proxy
Run Code Online (Sandbox Code Playgroud)
现在身份验证应该基于令牌,我希望能够将其作为 kubectl 请求标头的一部分进行传递。
我尝试了多种配置,在 kubeconfig 中添加带有令牌的用户,例如
clusters:
- cluster:
server: http://localhost:8080
name: proxy
contexts:
- context:
cluster: proxy
user: robin
name: proxy
current-context: proxy
users:
- name: robin
user:
token: my-token
Run Code Online (Sandbox Code Playgroud)
或者指定一个身份验证提供者,例如
clusters:
- cluster:
server: http://localhost:8080
name: proxy
contexts:
- context:
cluster: proxy
user: robin
name: proxy
current-context: proxy
users:
- …
Run Code Online (Sandbox Code Playgroud)