我想在clojure中建立一个贝叶斯网络,因为我还没有找到任何类似的项目.
我已经研究了很多BN的理论,但我仍然看不出如何实现网络(我不是人们称之为"大师"的任何东西,尤其不是函数式编程).
我知道BN只不过是一个DAG和很多概率表(每个节点一个)但现在我没有胶水如何实现DAG.
我的第一个想法是一个巨大的集合(DAG)与一些小地图(DAG的节点),每个地图应该有一个名称(可能是:键)概率表(另一个地图?)父母的矢量,最后一个矢量的非下载.
现在我不知道如何实现父母和非后代的引用(我应该把它放在两个向量中).我猜一个指针应该是完美的,但是clojure缺乏它; 我可以在向量中放入:另一个节点的名称,但它会很慢,不是吗?
我在想,而不是矢量,我可以使用更多的集合,这样可以更快地找到节点的后代.
对于概率表的类似问题,我仍然需要在其他节点处进行一些引用.
最后,我也想学习BN(建立网络由数据开始),这意味着我将改变很多既概率表,边和节点.
我应该使用可变类型还是只会增加复杂性?
algorithm functional-programming clojure directed-acyclic-graphs
我有4个容器需要相互通信,其中两个需要连接到外部数据库.
我开始使用作曲家并将所有内容链接在一起.
容器能够在没有太多问题的情况下相互通信,但是它们无法连接到外部数据库.
外部数据库已启动并运行,我可以通过shell轻松连接到它.
docker-compose文件如下所示:
version: "3"
services:
bridge:
# version => 2.1.4
build: ./lora-gateway-bridge
ports:
- "1680/udp:1700/udp"
links:
- emqtt
- redis
environment:
- MQTT_SERVER=tcp://emqtt:1883
networks:
- external
restart: unless-stopped
loraserver:
# version => 0.16.1
build: ./loraserver
links:
- redis
- emqtt
- lora-app-server
environment:
- NET_ID=010203
- REDIS_URL=redis://redis:6379
- DB_AUTOMIGRATE=true
- POSTGRES_DSN=${SQL_STRING} ###<- connection string
- BAND=EU_863_870
ports:
- "8000:8000"
restart: unless-stopped
lora-app-server:
build: ./lora-app-server
# version => 0.8.0
links:
- emqtt
- redis
volumes:
- "/opt/lora-app-server/certs:/opt/lora-app-server/certs"
environment: …Run Code Online (Sandbox Code Playgroud) 我有一个clojure应用程序需要一些配置变量,主要是字符串,但也需要评估.
我可以用以下内容声明每个变量:
(def config-db "URI_DB"))
(def config-time (hours 1))
Run Code Online (Sandbox Code Playgroud)
但我认为这可能是一个好主意(我不是很确定)写一个宏来做到这一点,看起来像这样:
(make-config
config-db "URI_DB"
config-time (hours 1))
Run Code Online (Sandbox Code Playgroud)
(或者我可以将名称放在向量中,看起来更像是一个let语句)
但是当我放了一对以上的夫妇时,我遇到了问题,我这样做了:
(defmacro define-config
[name definition]
`(def ~name ~definition))
Run Code Online (Sandbox Code Playgroud)
但是我真的没有任何关于如何在更有用的东西中扩展它的粘合剂......
有什么建议或想法吗?
我正在使用Plug,我想了解.
我的代码看起来像:
defmodule Numerino.Plug do
use Plug.Router
use Plug.Debugger
plug :put_resp_content_type, "application/json"
plug :match
plug :dispatch
def init options do
IO.inspect options
options
end
get "/" do
conn
|> IO.inspect
|> send_resp(201, "world")
end
match _ do
send_resp(conn, 404, "Not found.")
end
end
Run Code Online (Sandbox Code Playgroud)
在get中我需要使用option传递的参数.
如何访问保持相同Plug.Router语法的选项?
给出一个简单的查询,如
SELECT * FROM test;
Run Code Online (Sandbox Code Playgroud)
要么
INSERT INTO number VALUES (1, 2);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能知道,在执行查询之前并且没有自己解析语句,test在第一个查询中读取表number并且在第二个查询中写入表.
这两个例子显然非常简单,但我正在寻找适合更复杂案例的东西.
干杯
我有一个用于连接 sqlite3 数据库的处理程序。我想知道该数据库是否是内存数据库。
有没有API可以做到这一点?
在 linux 中,stat结构体包含文件的 UID 和 GID。
有没有办法使用 Go(lang) 获取文件的相同信息(UID 和 GID)?
我在从 RefCell<Option<Rc>> 获取引用时遇到问题。
有什么建议吗?
struct Node<T> {
value: T
}
struct Consumer3<T> {
tail: RefCell<Option<Rc<Node<T>>>>,
}
impl<T> Consumer3<T> {
fn read<'s>(&'s self) -> Ref<Option<T>> {
Ref::map(self.tail.borrow(), |f| {
f.map(|s| {
let v = s.as_ref();
v.value
})
})
}
}
Run Code Online (Sandbox Code Playgroud)
给出:
struct Node<T> {
value: T
}
struct Consumer3<T> {
tail: RefCell<Option<Rc<Node<T>>>>,
}
impl<T> Consumer3<T> {
fn read<'s>(&'s self) -> Ref<Option<T>> {
Ref::map(self.tail.borrow(), |f| {
f.map(|s| {
let v = s.as_ref();
v.value
})
})
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个非常有趣的问题,我正在寻找一个聪明且可能有效的解决方案.
我有一个看起来像这样的数据框.
# A tibble: 6 x 6
track_id tag1 tag2 tag3 tag4 tag5
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1550729 54087 109806 46869 183258 54337
2 1184201 201327 3668 46208 205245 189631
3 3763749 194264 194413 3424 91383 205245
4 2674608 198998 107401 2327 4425 107398
5 1999180 54087 4425 75574 239459 2397
6 3048820 11242 205245 2474 11056 72354
Run Code Online (Sandbox Code Playgroud)
我想要的是将track_id保留在第一行但是要爆炸标签,并且在一个轨道具有特定ID的情况下,我想要设置一个真值,即一个.
为了更清楚,让我们假设我从较小的一个开始:
track_id tag1 tag2
1 1550729 54087 109806
2 1184201 201327 3668
Run Code Online (Sandbox Code Playgroud)
转型后,我想得到类似的东西
track_id 54087 109806 201327 …Run Code Online (Sandbox Code Playgroud)