我只是学习MySQL - 有没有办法组合(或嵌套)聚合函数?
给出一个查询:
SELECT user, count(answer) FROM surveyValues WHERE study='a1' GROUP BY user;
Run Code Online (Sandbox Code Playgroud)
这将为我提供每个用户回答的问题数量.我真正想要的是每个用户回答的平均问题数量......例如:
SELECT avg(count(answer)) FROM surveyValues WHERE study='a1';
Run Code Online (Sandbox Code Playgroud)
计算此统计数据的正确方法是什么?
如果这是可能的,那么有没有办法可以为每个问题打破这个统计数据?(用户可以多次回答同一个问题).就像是:
SELECT avg(count(answer)) FROM surveyValues WHERE study='a1' GROUP BY question;
Run Code Online (Sandbox Code Playgroud) 我认为这还没有被问到,但是有没有办法将列表的信息与多个级别和不均匀的结构组合成一个"长"格式的数据框?
特别:
library(XML)
library(plyr)
xml.inning <- "http://gd2.mlb.com/components/game/mlb/year_2009/month_05/day_02/gid_2009_05_02_chamlb_texmlb_1/inning/inning_5.xml"
xml.parse <- xmlInternalTreeParse(xml.inning)
xml.list <- xmlToList(xml.parse)
## $top$atbat
## $top$atbat$pitch
## des id type x y
## "Ball" "310" "B" "70.39" "125.20"
Run Code Online (Sandbox Code Playgroud)
以下是结构:
> llply(xml.list, function(x) llply(x, function(x) table(names(x))))
$top
$top$atbat
.attrs pitch
1 4
$top$atbat
.attrs pitch
1 4
$top$atbat
.attrs pitch
1 5
$bottom
$bottom$action
b des event o pitch player s
1 1 1 1 1 1 1
$bottom$atbat
.attrs pitch
1 5
$bottom$atbat
.attrs pitch
1 5
$bottom$atbat
.attrs …Run Code Online (Sandbox Code Playgroud) 我正在寻找支持多个房间的websocket/node.js聊天实现.
我也打算写一个需要多个房间或服务器的应用程序,我只是在寻找人们如何做的代码示例.
谢谢.
我知道有一个服务http://pusherapp.com提供这项服务,但我正在寻找一个开源示例.
我有许多线程等待事件,执行一些操作,然后再次等待事件.另一个线程将在适当的时候触发事件.
我无法找到一种方法来确保每个等待的线程在设置事件时恰好触发一次.我目前有触发线程设置它,睡了一会儿,然后清除它.不幸的是,这导致等待线程多次抓住设置事件,或者根本没有.
我不能简单地让触发线程产生响应线程来运行它们一次,因为它们是对来自其他地方的请求的响应.
简而言之:在Python中,我如何让线程设置一个事件并确保每个等待线程在被清除之前只对事件执行一次?
更新:
我已经尝试使用锁和队列进行设置,但它不起作用.这就是我所拥有的:
# Globals - used to synch threads
waitingOnEvent = Queue.Queue
MainEvent = threading.Event()
MainEvent.clear() # Not sure this is necessary, but figured I'd be safe
mainLock = threading.Lock()
def waitCall():
mainLock.acquire()
waitingOnEvent.put("waiting")
mainLock.release()
MainEvent.wait()
waitingOnEvent.get(False)
waitingOnEvent.task_done()
#do stuff
return
def triggerCall():
mainLock.acquire()
itemsinq = waitingOnEvent.qsize()
MainEvent.set()
waitingOnEvent.join()
MainEvent.clear()
mainLock.release()
return
Run Code Online (Sandbox Code Playgroud)
itemsinq第一次正确反映了等待的呼叫数量,但只有第一个等待线程才能通过.从那时起,itemsinq始终为1,等待的线程轮流; 每次触发调用发生时,下一次触发.
更新2
似乎只有一个event.wait()线程正在唤醒,但queue.join()正在运行.这告诉我一个等待线程被唤醒,从队列中获取并调用task_done(),并且单个get()/ task_done()以某种方式清空队列并允许join().触发器线程然后完成join(),清除事件,从而防止其他等待线程通过.为什么只有一次get/task_done调用之后队列才会注册为空/完成?
只有一个似乎在醒来,即使我注释掉queue.get()和queue.task_done()并挂起触发器以便它无法清除事件.
我有一些代码可以访问网络上的API.API的参数之一允许我让他们知道我正在测试.
我想在测试时只在我的代码中设置此参数.目前,我只是在发布版本时对代码进行评论.
是否有基于构建配置的自动方式?
我在一个复杂的java程序中有一个方法,需要在初始化Web ApplicationContext和SpringBeans之后立即调用它.
我试过玩弄
<bean id="..." class="..." init-method="initialize">
但这个方法会调用一个applicationContext.get().getBean(beanId);方法.
我想知道是否有人知道如何做到这一点.
谢谢.
最近我在一个需要比以前更多的IO交互的项目上工作,我觉得我想要查看常规库(特别是Commons IO)并解决更深入的IO问题.
作为学术测试,我决定实现一个基本的,多线程的HTTP下载器.这个想法很简单:提供一个下载URL,代码将下载该文件.为了提高下载速度,文件被分块并且每个块同时下载(使用HTTP Range: bytes=x-x头)以使用尽可能多的带宽.
我有一个工作原型,但你可能已经猜到了,它并不完全理想.目前我手动启动3个"下载程序"线程,每个线程下载文件的1/3.这些线程使用通用的同步"文件编写器"实例来实际将文件写入磁盘.完成所有线程后,"文件编写器"完成,任何打开的流都关闭.一些代码片段可以给你一个想法:
线程启动:
ExecutorService downloadExecutor = Executors.newFixedThreadPool(3);
...
downloadExecutor.execute(new Downloader(fileWriter, download, start1, end1));
downloadExecutor.execute(new Downloader(fileWriter, download, start2, end2));
downloadExecutor.execute(new Downloader(fileWriter, download, start3, end3));
Run Code Online (Sandbox Code Playgroud)
每个"下载程序"线程下载一个块(缓冲)并使用"文件编写器"写入磁盘:
int bytesRead = 0;
byte[] buffer = new byte[1024*1024];
InputStream inStream = entity.getContent();
long seekOffset = chunkStart;
while ((bytesRead = inStream.read(buffer)) != -1)
{
fileWriter.write(buffer, bytesRead, seekOffset);
seekOffset += bytesRead;
}
Run Code Online (Sandbox Code Playgroud)
"文件写入器"使用RandomAccessFileto seek()和write()磁盘块写入磁盘:
public synchronized void write(byte[] bytes, int len, long start) throws IOException
{
output.seek(start); …Run Code Online (Sandbox Code Playgroud) JAXB文档就像一本教科书,在我需要使用它之前,我根本没有时间学习JAXB.
我有一个XSD,如果我想使用JAXB来编组和解组什么是工作流程?
我不需要任何细节只是一个高级别的视图.
我所知道的:1.JAXB可用于获取对象并从中创建XML文档,反之亦然2.它使用了一些名为"XJC"的神秘工具,我无法在其网站上找到ANYWHERE的下载3. XJC基于XSD为您创建类
首先,我如何找到XJC?我实际上知道它安装在我的系统上,不知道我从哪里得到它.
其次,无论这个工具是什么以及如何进入我的机器,如何使用最新版本的JAXB运行它?第三,所以如果我的XSD更改,我真的必须重新创建整个Java对象,因此可能使我的所有测试无效吗?或者我可以将对象定义为XSD映射,以便我控制映射,而不是默认代码生成?
我主要习惯于使用XML并使用类似xStream的东西来手动解组,但这不再是我的目的选项.
我有以下脚本将一些东西发布到服务器并将json结果写回用户浏览器.它没有按预期工作:(
$(document).ready(function () {
$('#productForm').ajaxForm({
dataType: 'json',
success: function (response) {
var tmp = '<tr>';
tmp += '<td><a href="/Invoice/DeleteProduct/' + response.Id +'>Kasta</a></td>';
tmp += '<td>' + response.Quantity + '</td>';
tmp += '<td>' + response.UnitPrice + '</td>';
tmp += '<td>' + response.ProfitRate + '</td>';
tmp += '<td>' + response.Description + '</td>';
tmp += '<td>' + response.Total + '</td>';
tmp += '</tr>';
$('#productsBody').append(tmp);
alternateRows();
},
clearForm: true,
resetForm: true,
timeout: 3000
});
});
Run Code Online (Sandbox Code Playgroud)
在firefox中一切都很好,在chrome中,新行根本没有显示,但是我的一些小区域会改变颜色.
在Internet Explorer 8中我没有得到链接,它将链接视为常规文本.我会再尖叫一下,希望有人能告诉我为什么当我从尖叫中回来时它不起作用.
我正在使用MS SQL Server数据库并使用大量视图(用于O/R映射器).有点烦恼是我想
但碰到的问题,每当我想,例如添加列一个表,我必须先删除引用该表的所有意见,更新表,然后重新创建的意见,即使意见不必须是否则更新.这使我的更新脚本更长,并且,在源控制系统中查看差异时,更难以看到实际的相关更改是什么.
有没有更好的方法来处理这个?
我还需要能够使用简单且可源代码控制的sql更新.就像是包含在SQL Server Management Studio中的代码生成器将是有益的,但我在那也容易产生不指定某些指标或(默认)约束名称代码与SQL Server Management Studio中的问题.但我想有相同的DBS,当我在不同的系统,包括所有的约束上等的名称来运行我的剧本,让我没有通过环后更新这些限制时跳.
那么也许一个更智能的SQL代码生成器可以解决方案?
我的工作流程现在是:
alter table在查询编辑器中键入语句cannot ALTER 'XXX' because it is being referenced by object 'YYY'." 的错误声明.create引用对象的代码drop在alter语句之前插入一条语句,然后在之后创建语句drop语句是否创建错误并重复这让我很烦,但如果我想继续使用架构绑定和脚本更新,我可能只需要忍受它...