这是我的困境.
基本上,我需要一个表中的列来保持未知长度的字符.但我很好奇,如果在一个列中使用VARCHAR(MAX)或NVARCHAR(MAX)可能会出现Sql Server性能问题,例如:'这次'我只需要存储3个字符,而且大部分时间我只需要存储10个字符.但是在该专栏中可能会有几千个字符,甚至可能是一百万字,这是一个很小的机会,这是不可预测的.但是,我可以保证它不会超过2GB的限制.
我只是好奇是否有任何性能问题,或者可能有更好的方法来解决这个问题.
我正在寻找一种创新的方法来检查一个数字在signed int中是否只有一个位.
我很清楚我可以简单地使用计数器,一些模块化分区和一个位移来进行循环.但我很好奇是否有更好的方法,因为我们只想找到一个位.
bool HasOnlyOneBit (int numb)
{
//return true if numb has only one bit (I.E. is equal to 1, 2, 4, 8, 16... Int.MinValue)
}
Run Code Online (Sandbox Code Playgroud) 我一直在弄清楚我是如何获得进程的ram用法的.(它目前消耗多少ram,而不是预留多少,或者最大或最小)
假设我有一个在后台运行的进程,Java.exe,允许使用1024mb的ram,我怎么能知道它当前使用了多少ram.
我自己开始这个过程,所以我可以访问Process对象,我想更清楚一下我的属性是什么.
我正在开发一个小项目,它从一个长期运行的应用程序接收字符串形式的XML数据.我正在尝试将此字符串数据加载到XDocument(System.Xml.Linq.XDocument)中,然后从那里执行一些XML Magic并为数据报告创建xlsx文件.
有时,我收到包含无效XML字符的数据,并且在尝试将字符串解析为a时XDocument,我收到此错误.
[System.Xml.XmlException]消息:'?',十六进制值0x1C,是无效字符.
由于我无法控制远程应用程序,因此您可以期待任何类型的角色.
我很清楚XML有一种方法可以将字符放在其中,例如类似的东西.
如果可能的话,我会非常喜欢保留所有数据.如果没有,那就不要了.
我已经考虑过以编程方式编辑响应字符串,然后返回并尝试重新解析如果抛出异常,但我尝试了一些方法,但它们似乎都没有成功.
谢谢你的想法.
代码就是这样的:
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
Run Code Online (Sandbox Code Playgroud) 我很好奇LINQ(而不是LINQ to SQL)的表现是如何在Sql Server执行连接的情况下加入幕后的.
Sql Server在执行查询之前,生成执行计划.执行计划基本上是一个表达式树,它认为它是执行查询的最佳方式.每个节点都提供有关是否执行排序,扫描,选择,加入等信息.
在我们的执行计划中的"加入"节点上,我们可以看到三种可能的算法; 散列连接,合并连接和嵌套循环连接.Sql Server将根据Inner表和外表中的预期行数,我们正在做什么类型的连接(某些算法不支持所有类型的连接),是否需要数据排序,以及为每个Join操作选择哪种算法,以及可能还有很多其他因素
加入算法:
嵌套循环连接:最适合小输入,可以使用有序内部表进行优化.
合并连接:最适合中到大输入排序输入,或需要订购的输出.
散列连接:最适合中到大输入,可以并行化以线性扩展.
LINQ查询:
DataTable firstTable, secondTable;
...
var rows = from firstRow in firstTable.AsEnumerable ()
join secondRow in secondTable.AsEnumerable ()
on firstRow.Field<object> (randomObject.Property)
equals secondRow.Field<object> (randomObject.Property)
select new {firstRow, secondRow};
Run Code Online (Sandbox Code Playgroud)
SQL查询:
SELECT *
FROM firstTable fT
INNER JOIN secondTable sT ON fT.Property = sT.Property
Run Code Online (Sandbox Code Playgroud)
如果Sql Server知道每个表中有少量行,则可以使用嵌套循环连接,如果知道其中一个表有索引,则使用合并连接;如果知道任何一个表上有很多行,则使用散列连接表,既没有索引.
Linq是否选择其连接算法?还是总是使用一个?
前段时间我发现FOP不允许你使用浮点数,以及Xsl-Fo 1.0中的一些其他功能.我尝试了几种不同的方法来模仿它们,但我没有成功.如果有人在这方面取得了成功,或者有想法.我真的很感激启蒙.
我遇到了从这几个类和接口中获得所需行为的问题.
这是我的问题,
//Inside a Unit Test that has access to internal methods and properties
INode firstNode, secondNode;
INodeId id = new NodeId (4);
first = new Node (id, "node");
second = new Node (id, "node");
Assert.IsTrue (first == second);
Run Code Online (Sandbox Code Playgroud)
上面的断言失败了,因为它似乎是在对象类的equals方法而不是Node和NodeId类中的重载运算符.
如果您对如何获得所需行为有任何建议,那将是非常棒的.
以下是我正在研究的框架的一部分:
public interface IIdentifier<T> where T : class
{
TKeyDataType GetKey<TKeyDataType> ();
bool Equals (IIdentifier<T> obj;
}
public interface INode
{
string name
{
get;
}
INodeId id
{
get;
}
}
public interface INodeId : IIdentifier<INode>
{
} …Run Code Online (Sandbox Code Playgroud) int? test;
try
{
test = (int?) Int32.Parse ("7");
} catch {}
if (test == null)
Console.WriteLine("test is null!");
else
Console.WriteLine("test = {0}", test);
Run Code Online (Sandbox Code Playgroud)
我有一些代码可以做一些与此类似的东西,同样的想法真的...创建变量,尝试初始化它,然后测试初始化是否成功.
Visual Studios给我一个错误,说"使用未分配的局部变量'test'",这有点烦人,可以通过将第一行设置为:
int? test = null;
Run Code Online (Sandbox Code Playgroud)
但我很好奇这两行之间的区别是什么,因为编译器似乎真的很在意.据我所知,这两条线做同样的事情.
c# ×4
algorithm ×1
apache-fop ×1
byte ×1
join ×1
linq ×1
linq-to-xml ×1
null ×1
nvarchar ×1
sql ×1
sql-server ×1
syntax ×1
varchar ×1
xml ×1
xsl-fo ×1