我正在创建一个RESTful服务来为Web应用程序提供数据.我有两个相关的问题.
我打算用以下代码回复请求:
这是RESTful服务的推荐方式吗?
WWW-Authenticate401响应应该提供什么标题?我在维基百科上阅读(可能不是最准确的资源,但它对我有用)401响应必须包含一个WWW-Authenticate标题,但是在进一步搜索时我找不到任何资源说明这个值意味着什么以及它应该是什么.
我找到了几个有关此标题的SO问题和论坛主题,它们似乎都是关于OAuth的,建议不要使用401状态代码或者说你可以做些什么.
此标头应包含的正确值是什么?
rest http xmlhttprequest http-status-codes http-status-code-401
我搜索了这个,但我无法找到或理解我发现的东西.
现在我不是Java程序员,但是我需要将一个Java文件编译成现有的(已编译的)Java程序.我无法使用此Java代码的源代码,因此无法编译整个项目.
我对反编译原始项目不感兴趣.
如何使用JDK和javac快速完成此操作?(通过命令行是我更喜欢的.)
我知道要这样做,必须禁用单个java文件之外的错误检查,因为它无法读取依赖项.
在此先感谢,
-Aidiakapi
编辑:我有JAR文件,谢谢你的答案:)
我想知道这是否完全是线程安全的,以及volatile关键字是否应该到位.
using System.Threading;
class Program
{
private static volatile bool _restart = true;
private static void Main()
{
while (_restart)
{
// Do stuff here every time for as long as _restart is true
Thread.Sleep(1);
}
}
private static void SomeOtherThread()
{
Thread.Sleep(1000);
_restart = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为是,但我想仔细检查,因为我不是100%肯定我只是想确定.
我认为volatile关键字是必需的,因为它永远不可能将值缓存在寄存器或类似的优化中.
前一阵子我编译了两个版本的代码,一个使用(Nullable<T>)x.GetValueOrDefault(y),一个使用(Nullable<T>)x ?? y).
在反编译为IL之后,我注意到null coalesce运算符被转换为GetValueOrDefault调用.
因为它是一个方法调用,在执行该方法之前可以传递一个表达式,所以y似乎总是执行.
例如:
using System;
public static class TestClass
{
private class SomeDisposable : IDisposable
{
public SomeDisposable()
{
// Allocate some native resources
}
private void finalize()
{
// Free those resources
}
~SomeDisposable()
{
finalize();
}
public void Dispose()
{
finalize();
GC.SuppressFinalize(this);
}
}
private struct TestStruct
{
public readonly SomeDisposable _someDisposable;
private readonly int _weirdNumber;
public TestStruct(int weirdNumber)
{
_weirdNumber = weirdNumber;
_someDisposable = new …Run Code Online (Sandbox Code Playgroud) 我正在使用C#中的服务器项目,收到TCP消息后,它会被解析,并以精确大小的byte []存储.(不是固定长度的缓冲区,而是存储所有数据的绝对长度的byte [].)
现在读取这个字节[]我将创建一些包装器函数(也用于兼容性),这些是我需要的所有函数的签名:
public byte ReadByte();
public sbyte ReadSByte();
public short ReadShort();
public ushort ReadUShort();
public int ReadInt();
public uint ReadUInt();
public float ReadFloat();
public double ReadDouble();
public string ReadChars(int length);
public string ReadString();
Run Code Online (Sandbox Code Playgroud)
字符串是一个\ 0终止的字符串,可能用ASCII或UTF-8编码,但我无法确定,因为我不是在编写客户端.
数据存在:
byte[] _data;
int _offset;
Run Code Online (Sandbox Code Playgroud)
现在我可以手动编写所有这些函数,如下所示:
public byte ReadByte()
{
return _data[_offset++];
}
public sbyte ReadSByte()
{
byte r = _data[_offset++];
if (r >= 128) return (sbyte)(r - 256);
else return (sbyte)r;
}
public short ReadShort()
{
byte b1 = _data[_offset++];
byte b2 …Run Code Online (Sandbox Code Playgroud) 我正在研究一种高性能代码,其中该构造是性能关键部分的一部分.
这是在某些部分中发生的情况:
string被"扫描"并且元数据被有效存储.char[][].char[][]应该转移到string[].现在,我知道你可以打电话,new string(char[])但结果必须复制.
为了避免发生这种额外的复制步骤,我想我必须可以直接写入字符串的内部缓冲区.即使这将是一个不安全的操作(我知道这带来了许多影响,如溢出,向前兼容).
我已经看到了实现这一目标的几种方法,但没有一种我真的很满意.
有没有人有关于如何实现这一目标的真实建议?
额外信息:
实际过程不包括转换为char[]必然,它实际上是一个"多子串"操作.像3个索引和它们的长度附加.
该StringBuilder有少数concats的开销太大.
编辑:
由于我要求的一些模糊的方面,让我重新拟定它.
这是发生的事情:
char[].char[]被转换为一个string.我想做的是合并第2步和第3步,结果是:
string(并且GC在过程中可以通过正确使用fixed关键字来保持它的手离开?).需要注意的是,我无法从string []更改输出类型,因为这是一个外部库,项目依赖于它(向后兼容性).
我正在尝试制作一个控制台应用程序,它可以包含几乎任何打开控制台的应用程序。
一些简单的事实:
这是我到目前为止所拥有的,除了最后几行之外,一切正常:
ProcessStartInfo startInfo = new ProcessStartInfo("someBatchThingy.cmd");
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.UseShellExecute = false;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
Thread.Sleep(5000);
Stream s = Console.OpenStandardOutput();
byte[] stopCommand = new byte[] { 115, 116, 111, 112, 13 };
s.Write(stopCommand, 0, stopCommand.Length);
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
因为性能非常重要,所以我真的想重新分配到进程输出的位置,而不是手动将数据从隐藏控制台传输到包装器控制台。
有谁知道如何做到这一点/如果可能的话?
我正在尝试将字符串与模式匹配,但有一件事我还没弄清楚.在正则表达式中我会这样做:
Strings:
en
eng
engl
engli
englis
english
Pattern:
^en(g(l(i(s(h?)?)?)?)?)?$
Run Code Online (Sandbox Code Playgroud)
我希望所有的字符串都匹配.在Lua模式匹配中,我无法使其工作.
即使是这样一个更简单的例子也行不通:
Strings:
fly
flying
Pattern:
^fly(ing)?$
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做这个吗?
请原谅我这个相当模糊的标题,但它确实有点说出来.这就是我的意思
class A
{
void DoSomething(); // non-const
}
Class B
{
public:
B(A& a) : _a(a) { }
// const function
void DoSomethingElse() const
{
// Is there a way to disallow this?
_a.DoSomething();
}
void DoEvenMore()
{
// Should be OK
_a.DoSomething();
}
private:
// Can't make it const A& because it needs
// be non-const for non-const functions
A& _a; // A reference
}
Run Code Online (Sandbox Code Playgroud)
那么有什么方法可以防止B::DoSomethingElse()打电话A::DoSomething()?
但是,B::DoEventMore()哪个不const应该继续通话.
我正在使用Visual C++ 2013. …
我知道标题有点模糊.但我想要实现的是这样的:
在抽象类中:
public abstract bool TryGet<T>(string input, out T output) where T : struct;
Run Code Online (Sandbox Code Playgroud)
在具有此签名的类中:
private class Param<T> : AbstractParam where T : struct
Run Code Online (Sandbox Code Playgroud)
这个实现:
public override bool TryGetVal<TOriginal>(string input, out TOriginal output)
{
T oTemp;
bool res = _func(input, out oTemp); // _func is the actual function
// that retrieves the value.
output = (TOriginal)oTemp; // Compile-time error
return res;
}
Run Code Online (Sandbox Code Playgroud)
而且TOriginal将永远是相同的类型T.这会绕过编译时错误,但我不想这样做会导致性能下降:
output = (TOriginal)(object)oTemp;
Run Code Online (Sandbox Code Playgroud)
如果它是引用类型,这将提供解决方案:
output = oTemp as TOriginal;
Run Code Online (Sandbox Code Playgroud)
反射/动态也可以解决问题,但性能影响更大:
output = …Run Code Online (Sandbox Code Playgroud) 虽然我(并且对于这个项目仍然是)仅限于.NET 3.5,但我已经成功使用了表达树的DLR版本.哪个是在Apache License 2.0版下发布的.
这增加了对所有(可能是一些或多或少,但可能不是).NET 4.0+表达式的支持,例如BlockExpression我对此问题所需的表达式.
在我当前的项目中,我正在使用可变数量的参数编译表达式树.我有一个Expressions需要调用的链.在.NET 4.0+中,我只是Expression.Block用来实现这一点,但是,我只能在这个项目中使用.NET 3.5.
现在我已经找到了解决这个问题的大规模黑客攻击,但我不相信这是解决这个问题的最好方法.
代码:
using System;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
class Program
{
struct Complex
{
public float Real;
public float Imaginary;
}
// Passed to all processing functions
class ProcessContext
{
public ConsoleColor CurrentColor;
}
// Process functions. Write to console as example.
static void processString(ProcessContext ctx, string s)
{ Console.ForegroundColor = ctx.CurrentColor; Console.WriteLine("String: " + s); }
static void processAltString(ProcessContext …Run Code Online (Sandbox Code Playgroud) 我正在设计一些接口来ReadOnlyCollection<T>表示这些接口的使用者只能从集合中读取.
然而,提供的集合不是一成不变的,并且会不时变化,我想知道我的设计是否错误.一个孩子应该ReadOnlyCollection<T>是一成不变的吗?
我想知道如何使用命令提示符安排任务.现在我知道你可以在网上找到这个,但我还没找到我一直在找的东西.
问题是我必须使用的操作系统是瑞典语(瑞典语的Windows Server 2003).
它需要运行位于"C:\ Documents and Setting \Administratör\ Skrivbord\Midnight.exe"的程序.
它应该每天午夜左右运行.
有人知道如何在cmd中安排这个吗?
我确实拥有管理员权限,因此权限不应成为问题.
c# ×8
performance ×3
unsafe ×2
architecture ×1
buffer ×1
c++ ×1
c++11 ×1
casting ×1
compilation ×1
http ×1
immutability ×1
io ×1
java ×1
lambda ×1
lua ×1
lua-patterns ×1
nullable ×1
readonly ×1
regex ×1
rest ×1
string ×1
visual-c++ ×1
volatile ×1
windows ×1