在"Programming F#"中,我遇到了像这样的模式匹配(我简化了一下):
let rec len list =
match list with
| [] -> 0
| [_] -> 1
| head :: tail -> 1 + len tail;;
Run Code Online (Sandbox Code Playgroud)
实际上,我知道最后一个匹配识别列表的头部和尾部.从概念上讲,我不明白为什么它有效.据我所知,::是cons运算符,它在列表的头部位置附加一个值,但它并不像我在这里被用作运算符.我应该将其理解为列表的"特殊语法",其中::根据上下文被解释为运算符或"匹配模式"吗?或者可以使用其他运算符为列表以外的类型扩展相同的想法?
这有什么问题?
#include <stdio.h>
void main(){
char *s="some text";
printf("%d",is_in(s,'t'));
}
int is_in(char *s, char c){
while(*s){
if(*s==c) return 1;
s++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在GCC中遇到以下编译时错误:
test.c:9:错误:'is_in'的冲突类型
test.c:9:注意:具有默认促销的参数类型不能与空参数名称列表声明匹配
test.c:5:注意:'is_in'之前的隐式声明就在这里
我正在编写一个程序,用于格式化100个MB字符串数据(接近一个演出)到xml ==我需要将它作为对HTTP(GET)请求的响应返回.
我正在使用StringWriter/XmlWriter在循环中构建记录的XML并返回
using (StringWriter writer = new StringWriter())
using (writer = XmlWriter.Create(writer, settings)) //where settings are the xml props
writer.ToString()
Run Code Online (Sandbox Code Playgroud)
在测试期间,我看到了一些内存异常 - 并且对如何找到解决方案毫无头绪?你们对内存优化的响应传递有什么建议吗?
有一种内存有效的数据编码方式吗?或者可能分块数据 - 我只是想不出如何在不将整个事物构建成一个巨大的字符串对象的情况下返回它
谢谢
- 一些澄清 - 这是一个通过千兆以太网链接的asp .net webservices应用程序,正如乔希指出的那样.我对它不太熟悉,所以仍然有点学习曲线.
我正在使用XMLWriter创建XML并使用String创建一个字符串
一些统计数据 - 响应xml大小=约385兆(我的数据大小会快速增长到超过这个数量)
由内存分析器计算的字符串对象大小=峰值为605MB
并感谢所有回复的人......
int i=10;
printf("Address of i = %u",&i);
Output:
Address if i = 3220204848
Output on re-execution:
Address of i = 3216532594
Run Code Online (Sandbox Code Playgroud)
i每次执行程序时,我都会得到一个新地址.这意味着什么?
我试图理解Python中的线程.我看过文档和示例,但坦率地说,很多例子都过于复杂,我很难理解它们.
你如何清楚地展示为多线程划分的任务?
在WPF应用程序中保存窗口位置和大小的最佳方法是什么?
目前,我正在保存WPF应用程序的窗口大小和位置.以下是我处理的事件:
(我从一个例子中复制了这个).
问题是,当窗口最小化并恢复时,将检索最后一个WindowClosing的设置.
现在,StateChanged事件在窗口最小化后触发,所以它似乎不是我需要的.
谢谢
这个问题与我关于Java中现有协程实现的问题有关.如果我怀疑,事实证明Java中目前没有完整的协同程序实现,那么实现它们需要什么?
正如我在那个问题中所说,我知道以下内容:
我将依次解决每个人的不足之处.
这种"解决方案"是病态的.协同程序的重点是避免线程,锁定,内核调度等的开销.协同程序应该是轻量级的,并且只能在用户空间中执行.在具有严格限制的全倾斜螺纹方面实现它们可以消除所有优点.
这种解决方案更实用,虽然有点难以实现.这与在C中的协同程序库中跳转到汇编语言大致相同(这是其中有多少工作),其优点是您只有一个架构可以担心并且正确.
它还将您绑定到仅在完全兼容的JVM堆栈上运行代码(例如,没有Android),除非您可以找到在非兼容堆栈上执行相同操作的方法.但是,如果您确实找到了这样做的方法,那么您现在已经将系统复杂性和测试需求翻了一番.
达芬奇机器很酷的实验,但由于它不是标准的JVM,它的功能无处不在.事实上,我怀疑大多数生产环境都会特别禁止使用达芬奇机器.因此,我可以使用它来进行很酷的实验,但不能用于我期望发布到现实世界的任何代码.
这也有类似于上面的JVM字节码操作解决方案的附加问题:将无法在替代堆栈(如Android)上工作.
这个解决方案在Java中实现这一点的意义重大.CPU和操作系统的每种组合都需要独立测试,每一种都是可能令人沮丧的微妙故障.或者,当然,我可以完全将自己绑定到一个平台,但这也使得用Java做事的意义完全没有实际意义.
所以...
有没有办法在不使用这四种技术之一的情况下在Java中实现协同程序?或者我会被迫使用那些闻起来最少的四个中的一个(JVM操作)?
编辑添加:
只是为了确保混乱载,这是一个相关的问题我的另外一个,但又不尽相同.那个人正在寻找一个现有的实施方案,以避免不必要地重新发明轮子.这是一个问题,如果另一个证明无法解决,将如何在Java中实现协同程序.目的是在不同的线程上保留不同的问题.
从一段时间以来,我正在使用一个运行在复杂度O(V + E)中的算法,用于在从A点到B点的定向非周期图上找到最大路径,其中包括进行泛洪填充以查找可从中访问哪些节点注意A,以及每个节点有多少"父"(来自其他节点的边).然后,我做了一个BFS但只在我已经使用了所有"父母"时"激活"一个节点.
queue <int> a
int paths[] ; //Number of paths that go to note i
int edge[][] ; //Edges of a
int mpath[] ; //max path from 0 to i (without counting the weight of i)
int weight[] ; //weight of each node
mpath[0] = 0
a.push(0)
while not empty(a)
for i in edge[a]
paths[i] += 1
a.push(i)
while not empty(a)
for i in children[a]
mpath[i] = max(mpath[i], mpath[a] + weight[a]) ;
paths[i] -= 1 ;
if path[i] …Run Code Online (Sandbox Code Playgroud) 我正在使用Tomcat和Java Servlets,JSP等运行Web应用程序.
我知道为了使用Servlet,它依赖于Servlet-api.jar文件.最初我把这个jar文件放在了
WEB-INF/lib/目录.
在发育阶段,这对我来说已经好几个月了.
当我们将应用程序放到我们正在使用的服务器空间时,我们开始看到Catalina.out文件中出现的奇怪问题,告诉我们servlet-api.jar文件存在依赖性问题.
我知道tomcat在它的容器中有这个jar文件,我应该从它中删除它
WEB-INF/lib/目录.我试过这个并没有用.
当我从本地文件中删除此jar文件并允许它依赖于tomcats servlet-api.jar文件时,我该怎么办.
编辑:这是从我收到的Catalina.out文件中提取的确切消息.我将外部JAR添加到类路径,它工作,但我收到了这个问题.
May 17, 2010 12:33:31 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/weremo/appservers/apache-tomcat-6.0.26/webapps/WMA-Test/WEB-
INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2.
Offending class: javax/servlet/Servlet.class