如果我使用yield而不是手动创建IEnumerator,是否可以实现IEnumerator.Reset?
我必须创建一个客户端/服务器系统来流式传输视频和音频.这很简单.喜欢youtube风格.服务器应首先参加提供媒体列表的客户端,并等待每个客户端的选择以开始流式传输媒体.直到创建一个套接字并显示一个简单的列表我就在它上面;)但我不知道我可以使用哪个类来传输.这个例子基本上是youtube风格.如何开始流式传输,客户端如何暂停再现,怎么样?我知道如何流式传输文字,但视频呢?你知道任何教程页吗?它与这个简单的服务器客户端示例有很大不同?
import java.io.*;
import java.io.*;
import java.net.*;
public class ThreadedEchoServer {
public static void main(String[] args) {
try {
int i = 1;
ServerSocket s = new ServerSocket(8189);
while(true) {
Runnable r = new ThreadedEchoHandler(incoming, i);
Thread t = new Thread(r);
t.start();
i++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ThreadedEchoHandler implements Runnable {
private Socket incoming;
private int counter;
public ThreadedEchoHandler(Socket i, int c) {
incoming = i;
counter = c;
}
public void run() …Run Code Online (Sandbox Code Playgroud) 我试图在webapp中加载一个文件,FileNotFound当我使用时我得到了一个例外FileInputStream.但是,使用相同的路径,我能够在我这样做时加载文件getResourceAsStream().这两种方法之间有什么区别,为什么一种方法有效而另一方方法无效?
在C中,我是否更喜欢常量而不是定义?我最近阅读了很多代码,所有的例子都大量使用了定义.
我即将实现原型FileSystemWatcher解决方案.我有一个目录来监控文件创建,以及吸收创建的文件并将其插入数据库的任务.大致这将涉及读取和处理6或7,80个字符文本文件,每隔几秒发生一次150毫秒的爆发,并且很少还需要处理2MB二进制文件.这很可能是一个24/7的过程.
从我读到的有关FileSystemWatcher对象的内容来看,最好将其事件排入一个线程,然后在另一个线程中将它们出列/处理.我现在遇到的困境是进行处理的线程的更好的创建机制.我能看到的选择是:
每次我收到FSW事件时,我都会手动创建一个新线程(是的,我知道......愚蠢的架构,但我必须说出来).
每当我收到FSW事件时,都会在CLR线程池中抛出处理
在启动时,为处理创建专用的第二个线程,并使用生产者/消费者模型来处理工作.主线程将请求排队,第二个线程将其排队并执行工作.
我倾向于将第三种方法作为首选方法,因为我知道工作线程将始终是必需的 - 而且可能更多因为我对线程池没有感觉.
我正在处理的项目有一些需要传递给每个视图的数据,所以我们有一个render_to_response被调用的包装器master_rtr.好.
现在,我需要404页面来完成这个.根据说明,我创建了一个custom_404调用master_rtr 的自定义404处理程序(巧妙地调用).一切看起来都不错,但我们的测试都失败了,因为我们收到了200 OK.
所以,我试图弄清楚如何返回404状态代码.这里似乎是一个HttpResponseNotFound类还挺我想要什么,但我不太清楚如何构建所有的废话,而不是使用render_to_response.或者更确切地说,我可能想出来,但似乎他们必须是一个更容易的方式; 在那儿?
代码的适当部分:
def master_rtr(request, template, data = {}):
if request.user.is_authenticated():
# Since we're only grabbing the enrollments to get at the courses,
# doing select_related() will save us from having to hit database for
# every course the user is enrolled in
data['courses'] = \
[e.course for e in \
Enrollment.objects.select_related().filter(user=request.user) \
if e.view]
else:
if "anonCourses" in request.session:
data['courses'] = request.session['anonCourses']
else: …Run Code Online (Sandbox Code Playgroud) 我想使用此方法实现表分页:
SET @PageNum = 2;
SET @PageSize = 10;
WITH OrdersRN AS
(
SELECT ROW_NUMBER() OVER(ORDER BY OrderDate, OrderID) AS RowNum
,*
FROM dbo.Orders
)
SELECT *
FROM OrdersRN
WHERE RowNum BETWEEN (@PageNum - 1) * @PageSize + 1
AND @PageNum * @PageSize
ORDER BY OrderDate ,OrderID;
Run Code Online (Sandbox Code Playgroud)
有什么我应该知道的吗?表有数百万条记录.
谢谢.
编辑:
使用建议的MAXROWS方法一段时间后(这真的非常快)我不得不切换回ROW_NUMBER方法,因为它具有更大的灵活性.到目前为止,我对它的速度也非常满意(我正在使用包含10列的超过1M记录的View).要使用任何类型的查询,我使用以下修改:
PROCEDURE [dbo].[PageSelect]
(
@Sql nvarchar(512),
@OrderBy nvarchar(128) = 'Id',
@PageNum int = 1,
@PageSize int = 0
)
AS
BEGIN
SET NOCOUNT ON
Declare @tsql …Run Code Online (Sandbox Code Playgroud) 是否可以编写一个返回其参数数量的C宏?
我想做的事情:
foo(1) -> 1
foo(cat, dog) -> 2
foo(red, green, blue) -> 3
Run Code Online (Sandbox Code Playgroud)
如果可以以这样的方式定义这个宏以便它与##一起工作,那就更好了
foo(1) -> bar1(1)
foo(cat, dog) -> bar2(cat, dog)
foo(red, green, blue) -> car3(red, green, blue)
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:我真的想要一个宏,而不是一个函数.使用功能的建议将被低估.
如何在Python中获得最大有符号短整数(即C的limits.h中的SHRT_MAX)?
我想从*.wav文件的单个通道中标准化样本,所以我想要一堆介于1和-1之间的一堆浮点数,而不是一堆16位有符号整数.这是我得到的(相关代码在normalized_samples()函数中):
def samples(clip, chan_no = 0):
# *.wav files generally come in 8-bit unsigned ints or 16-bit signed ints
# python's wave module gives sample width in bytes, so STRUCT_FMT
# basically converts the wave.samplewidth into a struct fmt string
STRUCT_FMT = { 1 : 'B',
2 : 'h' }
for i in range(clip.getnframes()):
yield struct.unpack(STRUCT_FMT[clip.getsampwidth()] * clip.getnchannels(),
clip.readframes(1))[chan_no]
def normalized_samples(clip, chan_no = 0):
for sample in samples(clip, chan_no):
yield float(sample) / float(32767) …Run Code Online (Sandbox Code Playgroud) 我有一个似乎无法解决的问题.我随机生成数字以确定我的数字是否是相对论素数.
这是给我一个浮点异常的函数:
bool modularExponentiationTest(unsigned long long exponent, unsigned long long modulus)
{
short index = 0;
unsigned long long base;
unsigned long long result;
do
{
result = 1;
base = rand() % exponent; // <--CAUSED BY THIS
while (exponent > 0)
{
if (exponent & 1)
result = (result * base) % modulus;
exponent >>= 1;
base = (base * base) % modulus;
}
if (result != 1)
return false;
}while(++index < 10);
return true;
}
Run Code Online (Sandbox Code Playgroud)
通过执行以下操作,我在不同的函数中实现随机种子:
srand(time(NULL));
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助!