我正在和Yesod一起徘徊,我遇到了麻烦,我需要一个很好的例子来说明如何提交表单并将其输入SQLite持久数据库.该耶索德书中谈到了很多关于如何设置一个表,但是很短就如何插入一行的例子,以及如何在数据库中保存的数据的列表.
我正在编写一个小型命令式语言的编译器.目标语言是Java字节码,编译器在Haskell中实现.
我已经写了一个语言的前端 - 即我有一个词法分析器,解析器和类型检查器.我无法弄清楚如何进行代码生成.
我保留了一个表示局部变量堆栈的数据结构.我可以使用局部变量的名称查询此结构并获取其在堆栈中的位置.当我遍历语法树时传递这个数据结构,并在我进入和退出新范围时弹出和推送变量.
我弄清楚的是如何发出字节码.在终端发出字符串并将它们连接在更高的级别似乎是一个糟糕的解决方案,无论是清晰度还是性能方面.
tl; dr如何在使用语法树时发出字节码?
我正在Haskell中编写一个函数,ListLike用任何Ord元素制作直方图:
import qualified Data.ListLike as LL
...
frequencies :: (Ord x, LL.ListLike xs x) => xs -> [(x, Int)]
frequencies xs = LL.map (\x->(LL.head x, LL.length x)) $ LL.group $ LL.sort xs
Run Code Online (Sandbox Code Playgroud)
在尝试编译上面的代码时,我收到有关模糊类型的错误消息:
Ambiguous type variable `full0' in the constraint:
(LL.ListLike full0 xs) arising from a use of `LL.group'
Probable fix: add a type signature that fixes these type variable(s)
In the expression: LL.group
In the second argument of `($)', namely `LL.group $ LL.sort xs'
In …Run Code Online (Sandbox Code Playgroud) 如果我使用Rust语言构建DLL ,它是否需要libgcc*.dll在运行时出现?
一方面:
rustc.exe已经libgcc_s_dw2-1.dll在其目录中,并且cargo.exe从http://crates.io网站下载时不会在没有dll的情况下运行;另一方面:
所以,我很困惑.什么是明确的答案?
我正在学习Reactor,并且想知道如何实现某种行为。假设我有一堆传入消息。每个消息都与某个实体相关联,并包含一些数据。
interface Message {
String getEntityId();
Data getData();
}
Run Code Online (Sandbox Code Playgroud)
与不同实体有关的消息可以并行处理。但是,与任何单个实体有关的消息必须一次处理一次,即,对于实体的消息2的处理要"abc"等到针对实体的消息1的处理"abc"完成后才能开始。在处理消息的过程中,应缓存该整段消息。其他实体的消息可以不受阻碍地进行。可以认为它是每个实体上运行这样的代码的线程:
public void run() {
for (;;) {
// Blocks until there's a message available
Message msg = messageQueue.nextMessageFor(this.entityId);
// Blocks until processing is finished
processMessage(msg);
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何使用React做到这一点而又不会受到阻碍?总消息速率可能很高,但是每个实体的消息速率会非常低。实体集可能非常大,因此不一定事先知道。
我猜可能看起来像这样,但我不知道。
{
incomingMessages()
.groupBy(Message::getEntityId)
.flatMap(entityStream -> entityStream
/* ... */
.map(msg -> /* process the message */)))
/* ... */
}
public static Stream<Message> incomingMessages() { /* ... */ }
Run Code Online (Sandbox Code Playgroud) 我有一个试图在 Kubernetes 集群中运行的程序。该程序是一个使用基于 UDP 的非标准协议的服务器。该协议主要由短的请求/回复对组成,类似于 DNS。与 DNS 的一个主要区别是“服务器”和“客户端”都可以发送请求,即。通信可以由任何一方发起。
客户端是使用服务器 IP 地址配置的嵌入式设备。客户端将他们的请求发送到这个 IP。他们还检查传入消息是否来自该 IP,丢弃来自其他 IP 的消息。
我的问题是如何使用 Kubernetes 来设置服务器,以便
我尝试过但不起作用的一件事是设置一个Servicewithtype: LoadBalancer和externalTrafficPolicy: Local(后者为要求 2 保留源 IP)。此设置满足上面的要求 1 和 2,但由于出站消息不通过负载均衡器,因此它们的源 IP 是包含服务器的 pod 正在运行的任何节点的源 IP。
我在 Google Cloud Platform (GKE) 上运行 Kubernetes。
udp nat google-cloud-platform kubernetes google-kubernetes-engine
我正在用java编写一个skiplist类作为练习.我写了一个名为SkipListInternal<E>包含实际跳过列表的类.我还创建了一个包装器类SkipListSet<E>,它实现了SortedSet<E>接口并包含一个实例SkipListInternal<E>.
除其他外,SkipListInternal<E>包含一个E find(E e)返回元素的方法,e如果它存在,则返回null,否则返回null.
在编写boolean contains(Object o)(继承自Collection<E>via SortedSet<E>)方法时,我注意到它的参数是一个Object而不是E.我打算做这样的事情,但由于类型擦除而不可能:
public class SkipListSet<E> implements SortedSet<E>{
private SkipListInternal<E> skiplist;
...
public boolean contains(Object o){
if (!(o instanceof E)) return false;
return skiplist.find((E) o) != null;
}
...
}
Run Code Online (Sandbox Code Playgroud)
既然不能这样做,我该怎么做呢?
CLASSPATH将"/ Users/smcho/Desktop/clojure"作为其路径之一,并且此目录具有文件hello.clj.
运行clojure并运行(require'hello)会显示此错误消息.
java.io.FileNotFoundException: Could not locate hello__init.class or hello.clj on classpath: (NO_SOURCE_FILE:0)
当我将目录更改为"/Users/.../clojure",并运行相同的(require'hello)时,没有问题.的.在CLASSPATH上.
运行
java -cp /Users/smcho/bin/jar/clojure.jar:/Users/smcho/Desktop/clojure clojure.lang.Repl
也有效.
为什么clojure无法在CLASSPATH上找到源代码?
假设一个 32 位无符号整数(答案当然可以推广到任何大小更好)。
该整数可以假定为 2 的幂,因此仅设置一位。我想设置整数中的所有位,除了那些低于设置位的位。因此(为简洁起见,使用 8 位整数)00001000将变为11111000.
这当然可以通过找到一个设置位然后迭代较高位并设置它们来完成。假设highest_set返回最高设置位的位置:
uint32_t f(uint32_t x)
{
int n = highest_set(x);
for (int i = 31; i != n; --i) {
x |= 1 << i;
}
return x;
}
Run Code Online (Sandbox Code Playgroud)
然而, 的运行时间f确实取决于 的值x,并且我觉得有一种更聪明的方法可以做到这一点。
Python 2 REPL的以下输出让我困惑:
>>> 15>10==True
False
>>> 15>1==True
True
>>> 15>2==True
False
>>> 15>False
True
Run Code Online (Sandbox Code Playgroud)
如果15>10==True被评估为(15>10)==True表达式将简化为print True==True,显然评估为True.如果15>10==True被评估为15>(10==True)简化的表达式15>False也评估为True.这两种解释都与表达式(False)的实际值相矛盾.
我可以理解15>1==True评价,True因为1==True是真的,但没有任何解释15>10==True对我有意义.
简介:在Python 2中,为什么15>10==True评估False?
我试图使用以下C代码打印出我传入的数组.它应该以十六进制格式输出每行一个文本,我打开文件没有问题.当我第一次写它时,我没有问题它工作我打开输出文件,我的阵列就在那里.我更改了fileOutName参数,现在我无法打印出任何我尝试更改它的东西以及其他一些东西,似乎没什么用.此外,当我调试它似乎pOutfile是一个糟糕的指针,但就像我说它仍然创建文件,它只是不会写入任何东西.任何帮助,将不胜感激.谢谢
printoutput(int output[], char * fileOutName){
int i = 0;
FILE * pOutfile;
pOutfile = fopen( fileOutName, "w" );
while(output[i] != 0){
fprintf( pOutfile, "0x%0.4X\n", output[i] );
i++;
}
}
Run Code Online (Sandbox Code Playgroud) 我在使用boost asio创建一个非常简单的基于TCP的服务器 - 客户端连接时遇到了问题.当我从服务器上的客户端获得连接并进入处理async_read_some的方法时,我检查错误,并且总是收到错误1236,这会显示消息"网络连接已被本地系统中止".
我刚刚开始使用boost,所以我不太熟悉库的工作原理以及我可能做错了什么.我在下面提供了我的代码的简化版本:
/*Client connection code*/
ClientConnection::ClientConnection(boost::asio::io_service& io_service) : m_Socket(io_service)
{
}
ClientConnection::ClientConnectionPointer ClientConnection::Create(boost::asio::io_service& io_service)
{
return ClientConnection::ClientConnectionPointer(new ClientConnection(io_service));
}
void ClientConnection::handle_write(const boost::system::error_code& error, size_t bytes_transferred)
{
//once we've written our packet, just wait for more
m_Socket.async_read_some(boost::asio::buffer(m_IncomingBytesBuffer, MAX_BYTES_LENGTH),
boost::bind(&ClientConnection::handle_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
void ClientConnection::handle_read(const boost::system::error_code& error, size_t bytes_transferred)
{
if(!error)
{
//deal with the data that comes in here
}
else
{
std::cout << "Error reading port data" << std::endl;
std::cout << error.message() << std::endl;
}
} …Run Code Online (Sandbox Code Playgroud) haskell ×3
java ×3
binary ×1
boost ×1
boost-asio ×1
c ×1
c++ ×1
classpath ×1
clojure ×1
collections ×1
event-driven ×1
generics ×1
integer ×1
kubernetes ×1
libgcc ×1
nat ×1
printf ×1
python ×1
python-2.x ×1
reactor ×1
rust ×1
sqlite ×1
types ×1
udp ×1
web-services ×1
windows ×1
yesod ×1