小编Alx*_*ndr的帖子

视频流上的TCP与UDP

我刚从网络编程的考试中回到家,他们问我们的一个问题是"如果要播放视频,你会使用TCP还是UDP?为存储的视频和实时视频流提供解释".对于这个问题,他们只是简单地期望存储视频的TCP简短回答和实时视频的UDP,但我在回家的路上想到了这一点,并且使用UDP流媒体直播视频一定更好吗?我的意思是,如果你有足够的带宽,并说你正在播放足球比赛或音乐会,你真的需要使用UDP吗?

让我们说,当你正在流式音乐会或使用TCP的任何东西时,你开始丢失数据包(在你和发送者之间的某些网络中发生了一些不好的事情),并且整整一分钟你都没有得到任何数据包.视频流将暂停,一分钟后,数据包开始再次通过(IP为您找到了新的路由).然后会发生什么是TCP会在您丢失的那一刻重新传输并继续向您发送实时流.假设带宽高于流上的比特率,并且ping不是太高,所以在很短的时间内,丢失的那一分钟将作为流的缓冲区,这样,如果再次发生丢包,您将不会注意到.

现在,我可以想到一些设备,这不是一个好主意,例如视频会议,你需要总是在流的末尾,因为视频聊天期间的延迟是可怕的,但在足球比赛或音乐会期间,如果你在流后面一分钟,这有什么关系?此外,您可以保证获得所有数据,最好保存以供日后查看,而不会出现任何错误.

所以这让我想到了我的问题.关于使用TCP进行直播,我不知道有什么缺点吗?或者它应该真的是,如果你有它的带宽你应该去TCP,因为它对网络"更好"(流量控制)?

video networking udp tcp video-streaming

87
推荐指数
4
解决办法
14万
查看次数

通过反射调用带有可选参数的方法

我使用带有可选参数的C#4.0遇到了另一个问题.

我如何调用一个函数(或者更确切地说是构造函数,我有ConstructorInfo对象),我知道它不需要任何参数?

这是我现在使用的代码:

type.GetParameterlessConstructor()
    .Invoke(BindingFlags.OptionalParamBinding | 
            BindingFlags.InvokeMethod | 
            BindingFlags.CreateInstance, 
            null, 
            new object[0], 
            CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

(我刚试过不同的BindingFlags).

GetParameterlessConstructor是我写的自定义扩展方法Type.

.net c# reflection invoke default-value

55
推荐指数
2
解决办法
2万
查看次数

53
推荐指数
3
解决办法
8万
查看次数

使用ArrayAdapter在Android中自定义过滤

我正在尝试过滤使用此ArrayAdapter填充的ListView:

package me.alxandr.android.mymir.adapters;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import me.alxandr.android.mymir.R;
import me.alxandr.android.mymir.model.Manga;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.SectionIndexer;
import android.widget.TextView;

public class MangaListAdapter extends ArrayAdapter<Manga> implements SectionIndexer
{
    public ArrayList<Manga> items;
    public ArrayList<Manga> filtered;
    private Context context;
    private HashMap<String, Integer> alphaIndexer;
    private String[] sections = new String[0];
    private Filter filter;
    private boolean enableSections;

    public MangaListAdapter(Context context, int textViewResourceId, ArrayList<Manga> items, boolean enableSections)
    { …
Run Code Online (Sandbox Code Playgroud)

android listview filter android-arrayadapter

40
推荐指数
4
解决办法
7万
查看次数

ASP.net MVC4 WebApi路由,其中​​包含文件名

我试图在我的ASP.net MVC4/WebApi项目中使用以下(和类似的)URL:

http://127.0.0.1:81/api/nav/SpotiFire/SpotiFire.dll
Run Code Online (Sandbox Code Playgroud)

负责此网址的路线如下所示:

        config.Routes.MapHttpRoute(
            name: "Nav",
            routeTemplate: "api/nav/{project}/{assembly}/{namespace}/{type}/{member}",
            defaults: new { controller = "Nav", assembly = RouteParameter.Optional, @namespace = RouteParameter.Optional, type = RouteParameter.Optional, member = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

如果我删除它,它的工作正常.在文件名中,或者如果我在URL后面添加斜杠,但这也意味着我不能使用Url.Route-methods等.我得到的错误是一般的404错误(下图).

在此输入图像描述

我已经尝试添加<httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />到我的web.config,我也尝试添加

<compilation debug="true" targetFramework="4.5">
  <buildProviders>
    <remove extension=".dll"/>
    <remove extension=".exe"/>
  </buildProviders>
</compilation>
Run Code Online (Sandbox Code Playgroud)

而且似乎没有任何效果.所以我的问题基本上是,如何让这个URL工作,并正确映射?

asp.net asp.net-mvc asp.net-mvc-routing asp.net-web-api

33
推荐指数
3
解决办法
9742
查看次数

防止Safari 5中的后退按钮上的缓存

截至最近的safari 5已经发布,结果导致我的网站出现了一些问题.我有一个运行经典ASP的动态网站(虽然这应该不重要),并且该网站对历史堆栈有一些创造性的使用.例如,您可以在列出产品的页面上,然后转到有关产品的详细信息并更改产品(admin-view).单击产品上的"保存"时,信息将通过AJAX发送到服务器,并history.back()发出a.这适用于所有浏览器(包括safari <= 4),但是,在新发布的Safari 5中它停止工作.似乎当您在safari 5中单击它实际上并不刷新页面时,它只会从缓存中加载它,这意味着不会显示在详细信息视图中所做的更改.我怎样才能在safari 5中进行这项工作呢?这是我必须关闭缓存的当前代码(包含在每个页面的顶部):

Dim pStr
pStr = "private, no-cache, no-store, must-revalidate"
Response.AddHeader "pragma","no-cache"      '?
Response.AddHeader "cache-control", pStr    '?  Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "cache-control", "post-check=0, pre-check=0"     '?  Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "Expires", "Mon, 26 Jul 1997 05:00:00 GMT"       '?
Response.AddHeader "Last-Modified", Now()
Run Code Online (Sandbox Code Playgroud)

safari cache-control

23
推荐指数
2
解决办法
2万
查看次数

C#flattening json结构

我在C#中有一个json对象(表示为Newtonsoft.Json.Linq.JObject对象),我需要将其展平为字典.让我举例说明我的意思:

{
    "name": "test",
    "father": {
         "name": "test2"
         "age": 13,
         "dog": {
             "color": "brown"
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该产生一个包含以下键值对的字典:

["name"] == "test",
["father.name"] == "test2",
["father.age"] == 13,
["father.dog.color"] == "brown"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c# recursion json data-structures

22
推荐指数
4
解决办法
1万
查看次数

C#中的并行编程

我有兴趣了解C#.NET中的并行编程(不是所有要知道的东西,而是基础知识,也许还有一些好的实践),因此我决定重新编程我的一个名为ImageSyncer的旧程序.ImageSyncer是一个非常简单的程序,它所做的只是扫描一个文件夹,找到以.jpg结尾的所有文件,然后根据它们的拍摄日期计算文件的新位置(解析xif数据,或者其他它被称为).在生成位置之后,程序检查该位置的任何现有文件,如果存在,则查看要复制的文件的最后写入时间和文件"以其方式".如果它们相等,则跳过该文件.如果不是,则创建并匹配两个文件的md5校验和.如果没有匹配要复制的是被复制到一个新位置的文件(例如,如果它是被复制到"C:\ test.jpg放在"它复制到"C:\测试(1). jpg"而不是".此操作的结果将填充到包含两个字符串的struct-type队列中,即原始文件和要将其复制到的位置.然后迭代该队列,直到它为空并且复制文件.

换句话说,有4个操作:

1. Scan directory for jpegs  
2. Parse files for xif and generate copy-location  
3. Check for file existence and if needed generate new path  
4. Copy files
Run Code Online (Sandbox Code Playgroud)

因此,我想重写这个程序,使其成为并列,并能够同时执行多个操作,我想知道实现这一目标的最佳方法是什么.我想出了两个我能想到的不同模型,但它们中的任何一个都没有任何好处.第一个是并行化旧程序的4个步骤,以便当要执行第一步时,它在几个线程上完成,并且当完成整个步骤1时,开始步骤2.另外一个(我觉得更有趣,因为我不知道该怎样做到这一点的想法)是创建一种工人和消费者的模式,因此,当一个线程与步骤1中完成了一个又一个接管,并在执行第2步对象(或类似的东西).但正如所说,我不知道这些是否有任何好的解决方案.另外,我对并行编程知之甚少.我知道如何创建一个线程,以及如何让它执行一个以对象作为唯一参数的函数,我也曾经使用过BackgroundWorker类,但我对它们中的任何一个都不熟悉.

任何输入将不胜感激.

.net c# parallel-processing

13
推荐指数
1
解决办法
5327
查看次数

在C#中创建部分(或有界)FileStream

我有一个FileStream,它由几个放在一个文件中的文件组成,我有一个文件长度列表,换句话说,我可以轻松地计算所有文件的位置和长度.我想要创建的是一个Open方法,它接受fileindex并返回仅包含该文件的流.目前我已经使用内存流实现了这个,但这迫使我将整个(不是容器,但整个包含的)文件复制到内存中,我不想这样做.所以,我希望能够做的是创建一个实现流的类,并获取另一个流,一个偏移量和一个长度参数,然后是可读和可搜索的,只有当你做Seek(0)时你应该得到偏移量下层流的.所以就像一个适配器类,我想知道这是否可能,甚至是一个好主意,或者如果有人对如何解决这个问题有任何更好的想法.我意识到,如果我按照我刚刚描述的方式进行操作,我需要确保对底层流的访问是同步的,并且所有打开的部分流都包含一个私有变量,告诉它们当前在流中的位置,但是这个应该是可行的,对吗?以前有人做过这样的事吗?或者是否有一个我可以使用的简单.NET类?任何帮助,将不胜感激.

哦,抱歉英文不好,我忘了用英文安装我的浏览器,所以拼写检查器告诉我一切都错了.

c# file stream

10
推荐指数
1
解决办法
1619
查看次数

在C#中有效使用反射

我正在用C#编写一个库,我稍后将其用于一个应用程序,我希望该库尽可能高效(即不要过于复杂化,以使其更高效).但是,我有一个关于如何最有效地使用类/方法的反射的问题,并说明了我已经简化了我的课程的问题:

class MyClass
{
    private static Dictionary<string, object> methods;

    public void Method1()
    {
        // Do something.
    }

    public void Method2()
    {
        // Do something else.
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是来自类(一个尚未创建的私有方法),取一个包含方法名的字符串,然后触发方法,就这么简单.最简单的方法是查看名称,获取具有该名称的方法并执行它,但这迫使我多次使用反射.这种私有方法可能被称为数千或数万次,并且需要快速.所以我想出了两个可能的解决方案.你可能会看到我添加了一个包含string-> object的静态字典(用实际类型替换对象,只写了对象,因为它适用于我的两个例子).然后我将添加一个静态构造函数,该构造函数通过类并将所有methodinfos添加到methods-dictionary中.然后问题是,在创建类的新实例时,我应该创建方法的绑定委托并将它们放在非静态私有字典中,或者我应该只使用方法字典中的MethodInfo来触发方法?

平均用例将创建此类的10个实例,并且对该方法进行1000次以上的调用,该方法应根据其字符串参数触发Method1或Method2(并且不,因为可扩展性,switch-case不是一个选项如上所述,这是一个简化的版本).实现这一目标的最有效方法是什么?

c# reflection algorithm

9
推荐指数
1
解决办法
2140
查看次数