小编RBa*_*iak的帖子

如何加速在SQL Server和C#中读取大量数据

我在我的数据库中有一个大约200,000个条目的视图.我正在阅读以下代码:

using (SqlConnection conn = new SqlConnection....)
{
    conn.Open();

    string query = "SELECT * FROM SP3DPROJECT.dbo.XSystemHierarchy";

    using (SqlCommand comm = new SqlCommand())
    {
        comm.CommandText = query;
        comm.Connection = conn;

        using (SqlDataReader reader = comm.ExecuteReader())
        {
            DateTime start = DateTime.Now;

            while (reader.Read())
            {
                // Code goes here, but for performance 
                // test I'm letting this empty
            }

            DateTime end = DateTime.Now;
            TimeSpan elapsed = (end- start).TotalSeconds;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

视图只有2列GUID类型.将ExecuteCommand()是非常快的,但while循环(甚至没有任何代码,只是循环)大约需要150秒.

有更好或更快的方法吗?

c# sql-server

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

C#List <T>内存不足但远离2Gb限制

我有一个List<Matrix4>,其中Matrix4包含16个浮点数的结构,所以它使用16*4字节= 64字节.

当我开始向列表添加项目时,当我跨越100万行时,它会抛出Out Of Memory Exception.

我知道.NET每个对象的限制为2Gb,但除非我完全忘记了:

1.000.000*64字节= ~61mb

哪个甚至没有接近极限.

当我开始填充列表时,根据任务管理器,我的应用程序正在使用896mb,当我到达异常时它使用1028mb.

这台电脑有8GB的物理内存,但它只使用6Gb.

有关原因的任何线索可能会发生吗?

---更新----

将平台目标更改为x64解决了单独测试项目的问题.不幸的是原始项目不能是x64因为引用x86 DLL不能在x64上运行.但这是另一个问题.

我没有考虑将它改为x64,因为它似乎远离内存限制,但我认为Hans Passant在120mb上距离1.3Gb限制太近了.谢谢你们.

.net c# out-of-memory

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

在IValueConverter类中定义属性

我需要在转换器类中定义DependencyProperty,因为我需要这些数据来进行转换,而这个数据在另一个对象中,而不是我绑定的对象.

我的转换器类如下:

public class LEGOMaterialConverter   : DependencyObject, IValueConverter
{
    public DependencyProperty MaterialsListProperty = DependencyProperty.Register("MaterialsList", typeof(Dictionary<int, LEGOMaterial>), typeof(LEGOMaterialConverter));

    public Dictionary<int, LEGOMaterial> MaterialsList
    {
        get
        {
            return (Dictionary<int, LEGOMaterial>)GetValue(MaterialsListProperty);
        }
        set
        {
            SetValue(MaterialsListProperty, value);
        }
    }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        LEGOMaterial material = null;

        MaterialsList.TryGetValue((int)value, out material);

        return material;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在Window.REsources区域实现它:

<Window.Resources>
    <local:LEGOMaterialConverter x:Key="MaterialsConverter" MaterialsList="{Binding Path=Materials}" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: …

wpf dependency-properties ivalueconverter

5
推荐指数
1
解决办法
4806
查看次数

Android 将 Drawable 和 Shape 组合成一个 Drawable(以编程方式)

我正在android:drawable像这样以编程方式设置RadioButton:

Drawable unchecked = getResources().getDrawable(R.drawable.ic_room_car);

Drawable d= getResources().getDrawable(R.drawable.ic_room_car);

Shape circle = ?????;
??? checked = combine circle and d


SateListDrawable states= new StateListDrawable();
states.addState(new int[] {android.R.attr.state_checked}, checked);
states.addState(new int[] {}, unchecked);

((RadioButton)findViewById(R.id.icon_1)).setButtonDrawable(states);
Run Code Online (Sandbox Code Playgroud)

基本上它有一个自定义图标,当它未选中时我正在从资源中读取,选中时我想在图标后面画一个圆圈。

未经检查的行为设置在第二行 addState 中,并且它正在工作。我的问题是如何以编程方式绘制一个圆,然后以某种方式将它与我从资源中读取的可绘制对象相结合。

android android-drawable

5
推荐指数
1
解决办法
5502
查看次数

在Angular 7+上动态导入

我正在尝试构建包含一些具有动态导入功能的组件的项目,例如:

import {Directive, Input, ElementRef} from '@angular/core';

@Directive({
  selector: '[saKnob]'
})
export class KnobDirective {

  @Input() saKnob: any;
  constructor(private el: ElementRef) {
    import('jquery-knob').then(()=>{
      this.render()
    })
  }

  render(){
    $(this.el.nativeElement).knob(this.saKnob || {})
  }
}
Run Code Online (Sandbox Code Playgroud)

在构造函数上的动态导入似乎是问题所在。我收到以下错误:

ERROR in ./src/app/shared/forms/input/knob.directive.ts 15:8
Module parse failed: 'import' and 'export' may only appear at the top level 
(15:8)
You may need an appropriate loader to handle this file type.
|         var _this = this;
|         this.el = el;
>         import('jquery-knob').then(function () {
|             _this.render();
|         });
Run Code Online (Sandbox Code Playgroud)

据我研究,从Angular …

angular

5
推荐指数
2
解决办法
2041
查看次数

动态数据显示图表:更改Y轴范围

有没有人知道是否有办法改变D3线图上的Y轴限制?

我正在使用Codeplex源代码中的最新版本... WPF版本,而不是Silverlight版本.

我正在绘制来自Android传感器的读数,并且范围值会发生很大变化.有时它大约为零,图表看起来像这样:

范围从-0.05到+0.05

然后值的大小发生变化,Y轴重新调整以显示整个数据,图形现在如下所示:

范围从-0.8到+ 0.6

查看Y值如何从图1更改为2.

我想要的是使Y轴具有我选择的固定值,比如-10到+10.然后图表将始终以相同的比例绘制.

有没有办法做到这一点?

图的XAML代码是这样的:

    <d3:ChartPlotter
        Name="gyroGraph"
        Margin="21,5,10,0"
        Grid.ColumnSpan="2"
        Background="White"
        Grid.Row="1"
        LegendVisibility="Collapsed"
        NewLegendVisible="False"
        MainHorizontalAxisVisibility="Collapsed"
        MainVerticalAxisVisibility="Collapsed">
        <d3:VerticalAxis
            FontSize="8" />
        <d3:Header
            Content="Angular Velocity"
            FontSize="11" />
    </d3:ChartPlotter>
Run Code Online (Sandbox Code Playgroud)

谢谢和最好的问候,罗德里戈巴斯尼亚克

c# wpf charts dynamic-data-display

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

setColorFilter不使用资源颜色

如果我像这样使用setColorFilter,它可以使用所选颜色绘制我的图像:

int color = Color.parseColor("#FF0000"); 
viewHolder.Icon.setColorFilter(color);
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用资源颜色,它什么都不做:

viewHolder.Icon.setColorFilter(R.color.colorPrimary);
Run Code Online (Sandbox Code Playgroud)

资源定义如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#FF5722</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

android

4
推荐指数
2
解决办法
4120
查看次数

打字稿阴影变量

我在TypeScript项目中使用TSLint,它i在以下代码中抱怨变量:

    for (let i = 0; i < body.children.length; i++)
    {
        body.children[i].classList.remove('active');
    }
Run Code Online (Sandbox Code Playgroud)

信息是 'Shadowed variable: 'i' (no-shadowed-variable)'

这个循环有什么问题吗?在TS中执行for循环的正确方法是什么?

typescript

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

带有单选按钮的Android颜色选择器

我想创建一组单选按钮来选择颜色.像这样的东西:

在此输入图像描述

我怎样才能实现这样的目标?我没有在原版RadioButton上找到任何颜色属性.我是否必须创建自定义控件?如果是的话,有人可以在基本步骤上暗示我,这样我可以尝试一些新的研究吗?我是Android的新手,并试图通过做...

android radio-button

3
推荐指数
1
解决办法
3876
查看次数

TCP服务器未正确读取固定大小的消息

我将传感器数据从Android设备发送到C#中的TCP服务器.android客户端以32字节的固定大小块发送数据.

在服务器中,我读取数据,期望它将以完整包形式出现,但由于TCP是流协议,因此一些消息到达服务器分为两部分.我知道,因为我可以使用名为SocketSniff的软件观看它.

问题是我不知道如何在我的服务器上处理它.

我发现使用的所有例子NetworkStream.Read(),在该方法我必须通过字节来存储数据的读取,偏移和字节数来读取的阵列.这个字节数组必须具有已知大小,在我的例子中为32.

我不知道到达我服务器的邮件的实际大小,但它可能是以下情况之一.

  • 如果接收的数据大小为32字节,则一切正常.

  • 如果收到的数据大小超过32个字节,我想我正在丢失数据.

  • 如果接收的数据大小小于32个字节,假设为20个字节,则这些字节存储在我的数组中,并且数组的最后12个字节保留为零值.由于我可能真的收到一些零,所以无法知道我真正收到的大小,因此我无法将其与剩下的数据合并,这些数据应该在下次阅读时出现.

我处理接收的代码如下:

    int buffer = 32;
    ...
    private void HandleClientComm(object client)
    {
        TcpClient tcpClient = (TcpClient)client;
        NetworkStream clientStream = tcpClient.GetStream();

        byte[] message = new byte[buffer];
        int bytesRead;

        while (true)
        {
            bytesRead = 0;

            try
            {
                bytesRead = clientStream.Read(message, 0, message.Length);
            }
            catch
            {
                break;
            }

            if (bytesRead == 0)
            {
                // Connection closed
                break;
            }

            SensorData sensorData = ProcessTcpPacket(message);
        }
        tcpClient.Close();
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法知道我在套接字中收到的数据大小?

c# sockets tcp tcplistener

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