小编bja*_*jan的帖子

ref,val和out对方法参数意味着什么?

我正在寻找一个清晰,简洁和准确的答案.

理想情况下,作为实际答案,虽然欢迎链接到良好的解释.

这也适用于VB.Net,但关键字是不同的 - ByRefByVal.

.net c# vb.net

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

有效地在数据库中存储项目位置(用于订购)

场景:

存在用户拥有的电影数据库,电影显示在称为"我的电影"的页面上,电影可以按照用户期望的顺序显示.例如位置#1中的"搏击俱乐部",位置#3中的"驱动器",依此类推.

显而易见的解决方案是为每个项目存储一个位置,例如:

movieid,userid,position
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3

然后在输出数据时按位置排序.此方法适用于输出,但在更新时存在问题:项目的位置需要更新所有其他位置,因为位置是相对的.如果电影#3现在位于第2位,则电影#3现在需要更新到位置#2.如果数据库包含10,000部电影,并且电影从位置#1移动到位置#9999,则需要更新近10,000行!

我唯一的解决方案是单独存储定位,而不是每个项目位置都有一个单独的字段,它只是一个大的数据转储位置,在运行时采取并与每个项目相关联(json,xml,无论如何),但感觉..效率低下因为数据库无法进行排序.

我总结的问题:在一个对提取和更新友好的列表中存储项目位置的最有效方法是什么?

sql database theory

17
推荐指数
3
解决办法
5659
查看次数

64位计算机无法打开Crystal Report

我的报告在32位机器上工作正常,但不会在64位上打开.需要64位,因为在其中一个屏幕上加载数据会导致内存问题 - 因此无法在32位上运行.

  1. Windows 10 64位
  2. 已安装的Crystal Reports 尝试安装13.0.20(最新)并重新启动PC但没有工作.
  3. 应用程序目标框架4.6.2(我甚至尝试过4.0但同样的错误)
  4. 使用Visual Studio 2017社区(尝试VS 2015)
  5. 平台x64(不是AnyCPU)
  6. 通过传递DataTable生成报告,报告中没有活动连接或ConnectionString
  7. 错误信息

在此输入图像描述

编辑#1

  1. Web.config包括 useLegacyV2RuntimeActivationPolicy="true"
  2. x86和x64中的DataTables是相同的在此输入图像描述

编辑#2

显示报告的源代码是

CrystalDecisions.CrystalReports.Engine.ReportClass c = new 
    CrystalDecisions.CrystalReports.Engine.ReportClass();

c.FileName = System.IO.Path.Combine(Root_Path, 
    "Reports", "Prod", mFileName);

c.Load();
c.SetDataSource(dt);  // dt => DataTable
c.SetParameterValue("prmSystemDate", Current_Date);

frmReportViewer v = new frmReportViewer();
v.ReportClass = c;
v.Show();
Run Code Online (Sandbox Code Playgroud)

而frmReportViewer FormLoad是

private void frmReportViewer_Load(object sender, EventArgs e)
        {
            CRViewer.ReportSource =  ReportClass;
            //CRViewer => 
            //CrystalDecisions.Windows.Forms.CrystalReportViewer
        }
Run Code Online (Sandbox Code Playgroud)

我某处出错了吗?

编辑#3

x86和x64上的DataTable是相同的.(将数据表保存在xml中,两个文件完全相同).

Process Monitor显示我的程序CreateFile对以下文件执行操作

C:\ WINDOWS\Microsoft.Net\assembly\GAC_64\CrystalDecisions.Web\v4.0_13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\ WINDOWS\Microsoft.Net\assembly\GAC_MSIL\CrystalDecisions.Web\v4.0_13 .0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll C:\ …

c# 64-bit desktop-application crystal-reports .net-4.6.2

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

如何在序列图中显示静态类或函数调用?

如何在序列图中显示静态类或调用静态函数?根据我的理解,生命线属于类的实例/对象.本文说可以使用元类刻板印象.

static uml sequence-diagram

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

在ADODB.Connection上执行崩溃与"类不支持自动化"

OLD说,一台机器有MSVBVM60.dll版本6.0.97.82.其他机器有MSVBVM60.dll版本6.0.98.15,说新.从NEW机器上创建的exe new ADODB.Connection在OLD机器上的行崩溃时发出以下错误

运行时错误'430':类不支持自动化或不支持预期的接口

如何摆脱这个?我的主要目标是在新机器上创建时在OLD机器上运行exe.为了避免干扰NEW机器的配置,我尝试取消注册旧版本并在OLD机器上注册更新版本但没有成功.是否有任何其他dll(s)使用ADODB.Connection或我需要做一些完全不同的东西来摆脱这个?

vb6 com ado

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

NullReferenceException,而涉及的对象有效

NullReferenceException被抛出在所有相关对象都有效的行上.StackTrace显示#行是432.

代码是

在此输入图像描述

在这里,Flags并且tempFlags都是数据表.两个数据表的列的数据类型都是原始的(十进制,日期时间,短).该应用程序是一个多线程应用程序,代码片段属于线程函数.Flags在实例级别被decalred,即tempFlags在线程函数内声明时共享给所有线程.

这个特定的时间实例Flags包含1946个记录并tempFlags包含1.那么,为什么这个NullReferenceException?

编辑#1

ex.InnerException
null
ex.StackTrace
at System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
at System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID)
at System.Data.DataTable.MergeRow(DataRow row, DataRow targetRow, Boolean preserveChanges, Index idxSearch)
at System.Data.Merger.MergeTable(DataTable src, DataTable dst)
at System.Data.Merger.MergeTableData(DataTable src)
at System.Data.Merger.MergeTable(DataTable src)
at System.Data.DataTable.Merge(DataTable table, Boolean preserveChanges, MissingSchemaAction missingSchemaAction)
at System.Data.DataTable.Merge(DataTable table)
at [...].cs:line 432"
ex.Data
    {System.Collections.ListDictionaryInternal}
        [System.Collections.ListDictionaryInternal]: {System.Collections.ListDictionaryInternal}
        IsFixedSize: false …
Run Code Online (Sandbox Code Playgroud)

c# datatable multithreading nullreferenceexception

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

exe文件的大小与可用内存的大小

我已经了解了PE文件如何映射到内存中?,这不是我要求的.

我想知道PE文件的哪些部分(数据,文本,代码......)总是被加载器完全加载到内存中,无论条件是什么?

根据我的理解,没有任何部分(代码,数据,资源,文本......)总是完全加载,它们在需要时逐页加载.如果几页代码(中间或末尾)不需要处理用户的请求,那么这些页面将不会总是被加载.

我已经尝试使用大量带有/不带资源的代码制作exe文件,这两种资源都没有被使用,但是,每次exe加载到内存中时,它需要的内存比文件大小多.(我可能一直在查看任务管理器中错误的内存列)

Matt Pietrek在这里写道

值得注意的是,PE文件不仅仅作为单个内存映射文件映射到内存中.相反,Windows加载程序查看PE文件并确定要映射的文件的哪些部分.

内存中的模块表示进程所需的可执行文件中的所有代码,数据和资源.可以读取PE文件的其他部分,但不映射(例如,重定位).某些部分可能根本没有映射,例如,当调试信息放在文件末尾时.

简而言之,

1-有一个大小为1 MB的exe,可用内存(物理+虚拟)小于1 MB,加载器总是拒绝加载是否一致,因为可用内存小于文件大小?

2-如果大小为1 MB的exe在加载时开始运行2 MB内存(开始运行第一行用户代码),而可用内存(物理+虚拟)为1.5 MB,则加载程序始终拒绝加载是否一致,因为没有足够的记忆?

3-有一个大小为50 MB的exe(大量的代码,数据和资源),但它需要500 KB来运行第一行用户代码,如果可用内存,这个exe将始终运行第一行代码是一致的(物理+虚拟)至少是500 KB?

memory windows portable-executable sections

5
推荐指数
0
解决办法
882
查看次数

如何用数据库实现同步Memcached

AFAIK,Memcached不支持与数据库同步(至少SQL Server和Oracle).我们计划在我们的OLTP数据库中使用Memcached(它是免费的).

在一些业务流程中,我们做了一些繁重的验证,需要来自数据库的大量数据,我们不能保留这些数据的静态副本,因为我们不知道数据是否已被修改,因此我们每次都会获取数据,这会减慢进程的速度.

一种可能的解决方案是

  1. 在数据库上写入触发器,以便在记录更改时创建/更新prefixed-postfixed(table-PK1-PK2-PK3-column)文件
  2. 使用FileSystemWatcher和监视此文件更改并使密钥到期(表-PK1-PK2-PK3-column)以获取更新的数据

问题:大约有100,000名用户在10小时内使用任何数据组合.所以我们最终会有很多文件,例如categ1-subcateg5-subcateg-78-data100,categ1-subcateg5-subcateg-78-data250,categ2-subcateg5-subcateg-78-data100,categ1-subcateg5-subcateg-33-data100等

我期待至少500万个文件.现在它看起来很可怜​​的解决方案:(

其他可能性

  1. 从触发器异步调用Web服务传递密钥到期
  2. 从触发器调用exe而不等待它完成,然后这个exe将使密钥到期.(我在SQL Server上使用xp_cmdsell来调用exe这个方法取得了一些成功,从oracle的触发器调用exe看起来有点困难)

仍然听起来很可悲,不是吗?

请任何聪明的建议

sql-server asp.net oracle memcached caching

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

从每个记录中选择逗号分隔值的最小值/最大值

请考虑下表及其记录

create table dbo.test
(
id  numeric(4),
vals    nvarchar(1000)
);

insert into dbo.test values (1,'1,2,3,4,5');
insert into dbo.test values (2,'6,7,8,9,0');
insert into dbo.test values (3,'11,54,76,23');
Run Code Online (Sandbox Code Playgroud)

我将使用以下函数来分割CSV,您可以使用任何方法来帮助select语法

CREATE FUNCTION [aml].[Split](@String varchar(8000), @Delimiter char(1))     
returns @temptable TABLE (items varchar(8000))     
as     
begin     
declare @idx int     
declare @slice varchar(8000)     

select @idx = 1     
    if len(@String)<1 or @String is null  return     

while @idx!= 0     
begin     
    set @idx = charindex(@Delimiter,@String)     
    if @idx!=0     
        set @slice = left(@String,@idx - 1)     
    else     
        set @slice = @String     

    if(len(@slice)>0) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

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

WebGrid没有显示

我的视图包含以下代码

@{ 
    List<string> list = new List<string>(); 
    list.Add("1001");   
    list.Add("1002");
    list.Add("1003");

    var g = new WebGrid(source:list);
    g.GetHtml();            
}
Run Code Online (Sandbox Code Playgroud)

除此之外什么都没有,但网格没有显示,我可以看到网格的html输入Immediate Window并且它是正确的但是网格根本没有显示.为什么?

asp.net-mvc webgrid razor asp.net-mvc-3

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