小编Kav*_*ian的帖子

Scala - Java =?(或Clojure - Java =?)

  1. 开发人员是否可以在不了解Java的情况下使用Scala?
  2. 开发人员可以在不知道Java的情况下使用Clojure吗?

注意:例如我是C#开发人员,我使用.NET而不知道任何VB(当然WF 4.0使用VB语句,所以我拒绝任何涉及WF 4.0的项目:)).

总结I:感谢大家的回答.现在我可以告诉人们可以在不知道Java(语言)的情况下使用这些语言.现在我有另一个问题:如何从Java(JVM)生态系统开始?什么是初学者,中级和高级知识库(包!)?老实说Java生态系统对我来说总是有点混乱,因此为学习(曲线!)JVM提供一些"参考参考"和"defacto教程"会非常有帮助.(好的!我会把它作为另一个问题发布!)

java scala clojure

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

RavenDB中的索引太多

是否存在一个公式/估计/感觉,根据文档种类数,每个文档的字段数和它们之间的关系数,向我们展示RavenDB数据库中索引的最佳数量是多少?

补充说明:

据我所知(第一)我们在RavenDB中查询索引,而不是文档和(第二)索引就像物化视图一样,因此它们可能会花费很多.我需要知道有多少索引会损害RavenDB在更新它们时的性能并使延迟太大而无法忽略?

由于Raven/MaxNumberOfParallelIndexTasks设置为当前计算机中的处理器数量,因此它意味着其他索引的索引过程将阻塞,直到当前索引任务结束?或者他们是一次又一次的部分更新?

c# performance nosql ravendb

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

20使用SocketAsyncEventArgs每秒接收

使用SocketAsyncEventArgs开发TCP服务器,它是Windows服务的异步方法.我在Main的开头有这两行代码:

ThreadPool.SetMaxThreads(15000, 30000);
ThreadPool.SetMinThreads(10000, 20000);
Run Code Online (Sandbox Code Playgroud)

并且都返回true(记录返回值).现在2000到3000个客户端开始向此服务器发送消息,它开始接受连接(我计算连接数,它是预期的 - 有一个连接池).服务器进程的线程数将增长到~2050到~3050.到现在为止还挺好!

现在有一个Received方法,在ReceiveAsync返回true或SocketAsyncEventArgs的Completed事件后调用.

问题就此开始了:无论客户端连接多少以及发送的消息数量多少,接收的消息最多只能在一秒钟内调用20次!随着客户数量的增加,这个数字(20)下降到~10.

环境:TCP服务器和客户端正在同一台计算机上进行模拟.我在两台机器上测试了代码,一台有2核CPU和4GB RAM,另一台有8核CPU和12GB RAM.(还没有)数据丢失,有时我在每次接收操作中都会收到多条消息.没关系.但是如何才能增加接收操作的数量?

关于实现的附加说明:代码很大,包含许多不同的逻辑.总体描述如下:我有一个SocketAsyncEventArgs用于接受新连接.它很棒.现在,对于每个新接受的连接,我创建一个新的SocketAsyncEventArgs来接收数据.我把这个(为接收创建的SocketAsyncEventArgs)放在一个池中.它不会被重用,但它的UserToken被用于跟踪连接; 例如那些断开连接的连接或那些7分钟内没有发送任何数据的连接将被关闭和处理(SocketAsyncEventArgs的AcceptSocket将被关闭(两者),关闭和处理,SocketAsyncEventArgs对象本身也是如此).这是一个执行这些任务的Sudo类,但所有其他逻辑和日志记录以及错误检查和其他任何内容都被删除,以使其简单明了(也许更容易发现有问题的代码):

class Sudo
{
    Socket _listener;
    int _port = 8797;

    public Sudo()
    {
        var ipEndPoint = new IPEndPoint(IPAddress.Any, _port);
        _listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        _listener.Bind(ipEndPoint);

        _listener.Listen(100);

        Accept(null);
    }

    void Accept(SocketAsyncEventArgs acceptEventArg)
    {
        if (acceptEventArg == null)
        {
            acceptEventArg = new SocketAsyncEventArgs();
            acceptEventArg.Completed += AcceptCompleted;
        }
        else acceptEventArg.AcceptSocket = null;

        bool willRaiseEvent = _listener.AcceptAsync(acceptEventArg); ;

        if (!willRaiseEvent) Accepted(acceptEventArg);
    }

    void AcceptCompleted(object sender, SocketAsyncEventArgs e)
    {
        Accepted(e); …
Run Code Online (Sandbox Code Playgroud)

c# sockets windows asynchronous socketasynceventargs

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

使用ReceiveById可怕的MSMQ性能

每秒只有20条消息!这就是我得到的!这是从队列中查看50条消息并使用ReceiveById并行接收它们的代码.队列中的消息总数是500.我也测试了其他数字.但是上限是每秒20条消息!我在某处完全不受影响吗?

编辑1:

1 - 我需要队列可以恢复.但有趣的是,即使我将可恢复选项设置为false; 仍然是最高限制是20消息/秒.

2 - 我被迫在这里使用MSMQ,因为涉及一些遗留应用程序.但是如果这个代码是正确的并且这个前20个限制确实存在,我可以说服该组切换.因此,任何推荐(基于实际经验)的替换MSMQ都是非常受欢迎的(请注意,如果出现任何类型的失败,我们需要保留我们的消息).

3 - 我已经将ThreadPool中的线程数设置为一个高数字,以防它有所帮助但实际上在这段代码中它将导致创建100 - 200个线程.我已经测试了从50到10000的不同数字,没有差异.

4 - 在每个任务中创建一个新的MessageQueue,因为ReceiveById不是线程安全的.

5 - 正如人们在代码中看到的那样,消息大小非常低; 它只是一个字符串加一个int.

编辑2:[ 非常奇怪的新结果 ]

我已经玩了这段代码的每一点,发现了这个:如果我注释掉行singleLocal.UseJournalQueue = false; 在我的任务中,我每秒最多可以读取1200条消息.不是很令人印象深刻,但在我的情 奇怪的部分是UseJournalQueue的默认值为false; 为什么再将它设置为假应该在性能上有所不同?

static partial class Program
{
    static void Main(string[] args)
    {
        ThreadPool.SetMaxThreads(15000, 30000);
        ThreadPool.SetMinThreads(10000, 20000);

        var qName = @".\private$\deep_den";

        if (!MessageQueue.Exists(qName))
        {
            var q = MessageQueue.Create(qName);
        }

        var single = new MessageQueue(qName);
        single.UseJournalQueue = false;
        single.DefaultPropertiesToSend.AttachSenderId = false;
        single.DefaultPropertiesToSend.Recoverable = true;
        single.Formatter = new XmlMessageFormatter(new[] { typeof(Data) });

        var count …
Run Code Online (Sandbox Code Playgroud)

.net c# performance msmq message-queue

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

C#结构是否安全?

C#struct是否是线程安全的?

例如,如果有:

struct Data
{
    int _number;
    public int Number { get { return _number; } set { _number = value; } }

    public Data(int number) { _number = number; }
}
Run Code Online (Sandbox Code Playgroud)

在另一种类型:

class DadData
{
    public Data TheData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是属性名为TheData,线程安全吗?

c# parallel-processing concurrency struct thread-safety

8
推荐指数
2
解决办法
5411
查看次数

如何将XPS文件中的每个页面转换为C#中的图像?

有没有办法使用C#以编程方式将XPS文档中的每个页面转换为图像?

c# wpf image xps

8
推荐指数
1
解决办法
4360
查看次数

F#(或C#)中的任何R-Tree实现?

可能重复:
.NET是否有任何记录的免费R-Tree实现?

F#中是否有任何R-Tree实现?

假设是:不需要插入或删除固定的Geo-Fences(区域)集合.需求是:搜索时间非常快.

谢谢

c# gis f# r-tree

8
推荐指数
1
解决办法
1297
查看次数

Task.Run中的默认TaskCreationOptions

为什么默认值CreationOptionsTask使用产生Task.RunDenyChildAttach,而不是None

它有什么关系使工作与新asyncawait在C#5.0简单(防止你逃跑当前上下文我猜的电流调度)?

c# threadpool task-parallel-library async-await c#-5.0

7
推荐指数
2
解决办法
5591
查看次数

如何在Visual Studio Code中保存`go fmt`?

如何go fmt在保存时运行Visual Studio代码(或Go编程语言扩展)(或其他工具/命令)?甚至自动保存?

更新:此时 它正在VSCode中完美地工作; 只需要在.vscode目录中添加一些配置文件(我使用这些).

go visual-studio-code

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

如何使用Emgu CV(或OpenCV)剪切图像的子部分?

我想使用Emgu CV(或OpenCV)剪切图像的子图像(或裁剪它)并计算该部分的平均颜色; 寻找变化.

谢谢

c# video-processing emgucv

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