每次都设置一个新的SQL表或varchar向现有表添加一个新列,我想知道一件事:什么是最好的值length.
所以,比方说,你有一个名为nametype 的列varchar.所以,你必须选择长度.我想不出一个名字> 20个字符,但你永远不会知道.但不是使用20,而是总是向下舍入到下一个2 ^ n数字.在这种情况下,我会选择32作为长度.我这样做,因为从计算机科学家的角度来看,数字2 ^ n看起来even比其他数字更多,我只是假设下面的架构可以比其他更好地处理这些数字.
另一方面,当您选择创建varchar列时,MSSQL服务器将默认长度值设置为50.这让我想到了.为什么50?它只是一个随机数,还是基于平均列长,或者是什么?
它也可能 - 或者可能是 - 不同的SQL服务器实现(如MySQL,MSSQL,Postgres,...)具有不同的最佳列长度值.
我正在尝试使用System.Net.Http.HttpClient上传多个文件.
using (var content = new MultipartFormDataContent())
{
content.Add(new StreamContent(imageStream), "image", "image.jpg");
content.Add(new StreamContent(signatureStream), "signature", "image.jpg.sig");
var response = await httpClient.PostAsync(_profileImageUploadUri, content);
response.EnsureSuccessStatusCode();
}
Run Code Online (Sandbox Code Playgroud)
这只发送mulipart/form-data,但我希望在帖子中的某个地方使用multipart/mixed.
更新:好的,我到处走了.
using (var content = new MultipartFormDataContent())
{
var mixed = new MultipartContent("mixed")
{
CreateFileContent(imageStream, "image.jpg", "image/jpeg"),
CreateFileContent(signatureStream, "image.jpg.sig", "application/octet-stream")
};
content.Add(mixed, "files");
var response = await httpClient.PostAsync(_profileImageUploadUri, content);
response.EnsureSuccessStatusCode();
}
private StreamContent CreateFileContent(Stream stream, string fileName, string contentType)
{
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("file") {FileName = fileName};
fileContent.Headers.ContentType …Run Code Online (Sandbox Code Playgroud) 我正在使用ESC/P语言在Intermec PB51上打印图像.
在ESC V命令规范中,它说:
打印机收到此命令后,打印机将直接提供的二进制数据转储到打印头.使用此命令打印的图形必须是打印头的精确宽度(以位为单位).
printhead query命令(PH?)使用TD记录为的参数进行回复
TD:打印头上的总点数.
当我将打印头查询命令发送到我的Intermec PB51时,它会以0864总点数作为响应,但是当我在图像打印功能中使用864作为打印机宽度时,图像被搞砸了(因为我似乎也发送了)许多字节,之后打印机处于无效状态).
选择值832可以很好地打印图像.现在的问题是,那些额外的32位(4字节)来自哪里?
抛出异常通常遵循以下模式:
if(condition) { throw exception; }
Run Code Online (Sandbox Code Playgroud)
检查条件,如果条件满足,则抛出异常.所以,我想知道为它编写一个静态类是否是个好主意,看起来像这样:
public static class Throw
{
public static void IfNullOrEmpty<T>(string @string, params object[] parameters) where T : Exception
{
Throw.If<T>(string.IsNullOrEmpty(@string), parameters);
}
public static void IfNullOrEmpty<T, I>(IEnumerable<I> enumerable, params object[] parameters) where T : Exception
{
Throw.If<T>(enumerable == null || enumerable.Count() == 0, parameters);
}
public static void IfNullOrEmpty(string @string, string argumentName)
{
Throw.IfNullOrEmpty(@string, argumentName,
string.Format("Argument '{0}' cannot be null or empty.", argumentName));
}
public static void IfNullOrEmpty(string @string, string argumentName, string message)
{ …Run Code Online (Sandbox Code Playgroud) 根据我对mutable关键字的理解,其主要用途之一是缓存数据并在需要时对其进行计算.既然它们可以改变(即使它们是常量),使用它们不是不安全或没有意义吗?缓存部分修改数据,因此需要锁定,根据我的理解,当您为多线程编写时,数据应该永远不会更改,并且应该复制并返回/链接在一起.
那么使用C++的可变关键字是没有意义的还是坏的?
我有几个(c#)解决方案(最初使用VS2012创建),其中包含我无法使用VS2013打开的便携式库.其中一些未能开放
不支持此版本的Visual Studio无法打开以下项目.可能未安装项目类型或此版本的Visual Studio可能不支持它们.
问题只发生在我的家庭环境中.在工作或其他设置中,一切都按预期工作.
为了让它在我的家庭环境中工作,我必须右键单击项目,然后从上下文菜单中为任何未正确加载的项目选择"编辑Project.csproj ...".如果所有项目都在VS中作为文本文件打开,我关闭解决方案并再次重新打开它.现在,项目无法打开,因为VS无法以两种不同的模式打开项目(作为项目与文本文件).如果现在从上下文菜单中选择"重新加载",则项目会正确加载.我现在可以关闭解决方案,如果我很幸运,在我重新打开它之后,eveything会起作用.
一段时间后,一些项目无法加载.然后,我再次尝试编辑/重新加载技巧,但是当我重新加载解决方案时,其他便携式项目注定要失败.所以,我别无选择,只能重新开始(删除suo文件会让我回到原点,所有便携式项目都无法加载).
知道我搞砸了我的系统吗?我已经安装了所有服务包和扩展.我还安装了最新的resharper版本.
更新: 不确定它是否相关但我刚收到以下编译器警告其中一个不兼容的项目
Warning 1 The element 'PropertyGroup' in namespace
'http://schemas.microsoft.com/developer/msbuild/2003' has invalid child element
'MinimumVisualStudioVersion' in namespace
'http://schemas.microsoft.com/developer/msbuild/2003'. List of possible elements
expected: 'Property, .... Project.csproj 1
Run Code Online (Sandbox Code Playgroud)
更新2:
VS输出窗口显示The application for the project is not installed.所有无法加载的项目."修复"VS没有帮助,我现在会尝试做一个干净的重新安装.
incompatibility portable-class-library visual-studio-2012 visual-studio-2013
我开始在iOS中使用MvvmCross.
public class MainView : MvxTabBarViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
var vm = (MainViewModel)this.ViewModel;
if (vm == null)
return;
}
}
Run Code Online (Sandbox Code Playgroud)
将断点设置为访问的行ViewModel,显示ViewModel为null.
我可以通过调用ViewDidLoad()构造函数来解决这个问题.然后,ViewModel 在构造函数调用期间为null,但在默认ViewDidLoad调用中有效.但这看起来像是一种解决方法.任何人都可以帮忙吗?
我正在尝试序列化/反序列化Dictionary<string, object>C#。对象可以是任何可序列化的对象。
Json.NET几乎可以工作,但是如果字典中的值是an enum,则反序列化是不正确的,因为它反序列化为a long。TypeNameHandling.All没有任何区别。
序列化库是否有其他快速解决方案。结果不必是JSON,而必须是文本。
我对传递到字典的数据也没有影响。我只需要对遇到的任何问题进行序列化和反序列化。
编辑:StringEnumConverter没有帮助。数据被转换回Dictionary<string, object>,因此解串器不知道序列化的值是enum。它像对待对象一样对待它,反序列化后StringEnumConverter它仍然是一个对象string。如果long没有转换器,它将反序列化。JSON.NET不会保留枚举。
我要提供的解决方案是现有接口的实现,该接口被注入到我无法更改的现有解决方案中。
EDIT2:这是我正在尝试做的一个例子
public enum Foo { A, B, C }
public enum Bar { A, B, C }
public class Misc { public Foo Foo { get; set; } }
var dict = new Dictionary<string, object>();
dict.Add("a", Foo.A);
dict.Add("b", Bar.B);
dict.Add("c", new Misc());
// serialize dict to a string s
// deserialize s …Run Code Online (Sandbox Code Playgroud) 我的应用程序支持3种不同的语言:EN,DE,FR作为NSLocationAlwaysUsageDescription/ NSLocationWhenInUseUsageDescription定义Info.plist,我想知道我把DE和FR的值放在哪里.有任何想法吗?
我们正在使用Visual Studio 10集成的MS单元测试来构建我们的单元测试.
如果尝试访问此功能的用户具有正确的权限,那么我们的应用程序中的某些功能只能正常工作 - 比如是计算机的管理员(甚至是评估的管理员(取决于目标系统).例如,我们正在创建新的功能性能计数器 - 您需要成为管理员.
现在,我想用单元测试来测试这些功能.当我以管理员身份启动VS时,一切都很好.但我们也有一个自动构建系统(Jenkins),它与普通用户一起运行单元测试.问题是,当运行单元测试的用户没有运行它们的权限时,是否有一种很好的方法(比如方法属性)跳过测试.
编辑1
基于目标机器更改配置并不能让我满意.我刚刚找到了TestClassExtensionAttribute类和一些很好的教程如何实现它.我现在会尝试这样做,因为在开发测试时要容易得多.
c# ×4
ios ×2
.net-4.5 ×1
c++ ×1
enums ×1
escpos ×1
exception ×1
file-upload ×1
intermec ×1
ios8 ×1
localization ×1
mvvmcross ×1
mysql ×1
postgresql ×1
printing ×1
sql ×1
sql-server ×1
unit-testing ×1
xamarin ×1
xcode ×1