重复:https://stackoverflow.com/questions/587676/why-do-programs-in-unix-like-environments-have-numbers-after-their-name/
例如,如果我输入:
man ps
Run Code Online (Sandbox Code Playgroud)
...然后滚动到最后我看到这样的事情:
SEE ALSO
kill(1), w(1), kvm(3), strftime(3), sysctl(8)
Run Code Online (Sandbox Code Playgroud)
我怎么解释这个?我知道杀人是另一个命令,但是(1)的含义是什么?这有什么事吗?
git手册页是这些的谜语:
git-add(1), git-am(1), git-archive(1)
Run Code Online (Sandbox Code Playgroud)
什么人试图告诉我?
为什么我必须将其更改int *为a typedef int * IntPtr才能编译?
template <class T>
class A
{
public:
template <class X>
void a(X *x, void (X::*fun)(const T&))
{
}
};
typedef int * IntPtr;
class B
{
public:
B() : a()
{
a.a(this, &B::foo); // this won't work
}
void foo(const int *&) // must replace `int *` here with `IntPtr`
{
}
A<int *> a; // ...and here
};
class C
{
public:
C() : a()
{
a.a(this, &C::foo);
}
void …Run Code Online (Sandbox Code Playgroud) 我假装有可能但我不太确定.基本上我正在寻找的是一种在编译时切换使用默认构造函数或通过引用接受一个参数的构造函数的方法.
即
T* create<T>()
{
return new T(1); // if possible
}
T* create<T>()
{
return new T(); // fallback to here
}
Run Code Online (Sandbox Code Playgroud)
我正在使用VS2010编译器,它不支持std::is_constructible但我可以使用decltype.
我去了VS2012 type_traits标题并查看了std::is_constructible实现,我有点转过身来.我不知道人们如何以这种方式编写代码.标题是我见过的最复杂的代码片段.无论如何,我看到它正在使用decltype它让我思考,希望有经验的人可以给我一个答案.
在经过@ ipc的回答后,我已经确定了以下代码
// std::declval is not supported by VS2010
template <typename T> typename std::add_rvalue_reference<T>::type declval();
template <class T, class R0>
decltype(new T(declval<R0>()))
createInstance_(R0& r0, int = 0)
{
return new T(r0);
}
template <class T, class R0>
T*
createInstance_(R0&, ...)
{
return new T();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码可以工作,但它确实混淆了IntelliSense引擎,无论如何我认为你可以通过简单地使用默认参数来省略额外的功能.我已经使用VS 2010测试了这段代码,它编译得很好并按预期运行.
简单地说,我有这个类,我想移动包装的对象.
std::string m_S;
string_t(string_t&& s)
: m_S(s.m_S)
{
}
Run Code Online (Sandbox Code Playgroud)
我省略了周围的类结构,只是m_S为了完整性添加了成员.
我是否需要使用a包装成员访问权限,std::move或者这是否正常工作,因为s它作为右值引用传递?
我正在尝试构建一个可靠的消息服务,或者至少我会如何描述它.
这是我的问题:我有一个表,我在这个表中插入数据,我至少有两个应用程序从这个表中选择数据.但是,我需要一种可靠的方法让两个不同的应用程序永远不会在任何给定时间选择相同的行.
我将如何编写一个事务或select语句,保证不选择与其他应用程序最近选择的行相同的行.
我不是SQL Server专家,但我希望有类似的东西.
从表中选择工作,这将为应用程序提供对某些行的独占访问权限.然后,应用程序将处理这些行.某些行被删除,一些行返回到数据库.
我主要担心的是,如果应用程序无法完成它的处理,SQL Server最终会超时并将签出的数据返回给应用程序数据池.
我知道有很多API可以做到这一点,但我也知道托管环境(是ASP.NET)会限制你在一个单独的线程中可靠地做的事情.
我可能完全错了,所以如果我是,请纠正我,但这是我认为我知道的.
如果你必须创建一个简单可靠的理论编程模型,并且理论上需要运行一个长时间的任务,那么你将如何在ASP.NET应用程序中实现这一目标?
以下是我对这个问题的看法:
我一直在考虑在win32服务中托管WCF服务.并通过WCF与服务部门交谈.然而,这不是很实用,因为我选择这样做的唯一原因是从几个不同的网络应用程序发送任务(工作单元).然后我最终会询问服务状态更新并采取相应措施.我最担心的是,如果我必须将每个任务部署到服务中以便能够执行某些指令,那么这将不是特别好的体验.还有这个输入问题,如果我有一个大型数据集需要通过它来咀嚼它,我将如何用数据提供这个服务?
我现在通常做的就是这个
SELECT TOP 10 *
FROM WorkItem WITH (ROWLOCK, UPDLOCK, READPAST)
WHERE WorkCompleted IS NULL
Run Code Online (Sandbox Code Playgroud)
它允许我使用SQL Server数据库作为工作队列,并使用此查询定期轮询数据库以进行工作.如果工作项目成功完成,我将其标记为已完成并继续,直到没有其他任何操作.我不喜欢的是理论上我可以在任何时候中断,如果我在中间成功并将其标记为已完成,我可能最终会处理相同的工作项两次.我可能有点偏执,这可能都很好,但据我所知,并不能保证不会发生这种情况......
我知道之前有类似的问题,但是非确切的回答是肯定的答案.这是一个非常常见的事情,但ASP.NET托管环境无法处理长时间运行的工作.
请分享你的想法.
我有一个琐碎的司机,像这样:
#include <ntddk.h>
NTSTATUS DriverEntry(__in DRIVER_OBJECT* a, __in UNICODE_STRING* b)
{
UNREFERENCED_PARAMETER(a);
UNREFERENCED_PARAMETER(b);
int c; // this fails the build
return 0;
}
Run Code Online (Sandbox Code Playgroud)
一个简单的makefile
TARGETNAME=main
TARGETTYPE=DRIVER
MSC_WARNING_LEVEL=/W4 /WX
SOURCES=main.c
Run Code Online (Sandbox Code Playgroud)
使用非trival构建输出
C:\Test>pushd %cd%
C:\Test>C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1 fre x64 wnet
WARNING: x64 Native compiling isn't supported. Using cross compilers.
Launching OACR monitor
C:\WinDDK\7600.16385.1>popd
C:\Test>build
BUILD: Compile and Link for AMD64
BUILD: Loading c:\winddk\7600.16385.1\build.dat...
BUILD: Computing Include file dependencies:
BUILD: Start time: Thu Jan 17 10:57:58 2013
BUILD: Examining c:\test directory for files to …Run Code Online (Sandbox Code Playgroud) 我在我的代码中通过HTTP调用服务(最终使用HttpClient.SendAsync方法).然后从WebAPI控制器操作调用此代码.大多数情况下,它工作正常(测试通过),但是当我在IIS上部署时,我遇到死锁,因为异步方法调用的调用者已被阻止,并且继续无法在该线程上继续直到它完成(它不会) .
虽然我可以让我的大多数方法都是异步的,但我觉得我对我何时必须这样做有基本的了解.
例如,假设我确实将我的大部分方法设为异步(因为它们最终调用其他异步服务方法)如果我构建了一个消息循环,我想如何控制程度,那么我将如何调用我的程序的第一个异步方法平行主义?
由于HttpClient没有任何同步方法,如果我有一个不async知道的抽象,我可以安全地假设做什么?我已经读到了这个ConfigureAwait(false)但我真的不明白它的作用.我很奇怪它是在异步调用之后设置的.对我来说,感觉好像一场比赛正在等待......但不太可能......
WebAPI示例:
public HttpResponseMessage Get()
{
var userContext = contextService.GetUserContext(); // <-- synchronous
return ...
}
// Some IUserContextService implementation
public IUserContext GetUserContext()
{
var httpClient = new HttpClient();
var result = httpClient.GetAsync(...).Result; // <-- I really don't care if this is asynchronous or not
return new HttpUserContext(result);
}
Run Code Online (Sandbox Code Playgroud)
消息循环示例:
var mq = new MessageQueue();
// we then run say 8 tasks that do this
for (;;)
{
var m = mq.Get(); …Run Code Online (Sandbox Code Playgroud) 我很久以前就知道,静态成员的唯一可靠方法是在函数中进行初始化.现在,我要做的是开始通过非const引用返回静态数据,我需要有人阻止我.
function int& dataSlot()
{
static int dataMember = 0;
return dataMember;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这是确保静态成员初始化为零的唯一方法.但是,它创建了如下模糊的代码:
dataSlot() = 7; // perfectly normal?
Run Code Online (Sandbox Code Playgroud)
另一种方法是将定义放在翻译单元中,并将这些内容保留在头文件之外.我对此本身没有任何反对意见,但我不知道标准在何时以及在何种情况下都是安全的.
我最不想做的最后一件事就是无意中访问未初始化的数据并失去对程序的控制权.
我有一个包含以下信息的XML
<NetworkProtocol Name="[DrSNX][??¢?ô??ƒ? ???? ???????? Ð????? !!! !!! ]"/>
<NetworkProtocol Name="[KdZ72][???? ?š???ó?? Î/? ??????ô? !!! !!!]"/>
<NetworkProtocol Name="[JbE1E][?????ñè? ??ø?ò?ö? V?????ñ 6 (?Ç?/???6) !!! !!! !!]"/>
<NetworkProtocol Name="[WA0qU][???? ??????(???/Î?) ????ô?ò? !!! !!!]"/>
<NetworkProtocol Name="[0ANYk][???šã??-??î????? ???/?? ?????¢?? (??? ?ë??í??) !!! !!! !!! !]"/>
<NetworkProtocol Name="[vgSqW][???????? ?????ç?? (???/??) - ????ê?š !!! !!! !!]"/>
<NetworkProtocol Name="[6oxNG][?òî?? ?? ??í?? ????õ?ø? ??è? ??????ê? !!! !!! !!]"/>
Run Code Online (Sandbox Code Playgroud)
它来自运行Windows 6.3内核预览版本的机器,但我不知道这是什么类型的编码,它是非常可读的,但我不知道一些源自Windows的内容最终是这样的吗?有谁知道这是什么?
通常,当您指定标识列时,您将在SQL Server中获得一个方便的接口,用于请求特定行.
SELECT * FROM $IDENTITY = @pID
Run Code Online (Sandbox Code Playgroud)
如果是标识列,您实际上并不需要关注自己的名称,因为只能有一个.
但是,如果我有一个主要由临时数据组成的表,该怎么办?大量插入和大量删除.有没有一种简单的方法可以重用身份值.
我希望能够编写一个函数,该函数将返回说NEXT_SMALLEST($IDENTITY)下一个标识值并以故障安全方式执行.
基本上找到未使用的最小值.这并不是一件容易的事,但我想要的是能够告诉SQL Server这是我的函数,它将生成身份值.但我所知道的是,没有这样的功能......
实现全局数据库ID,我需要提供一个我可以控制的默认值.
我的想法是基于我应该能够拥有一个包含所有已知ID的表,然后来自其他需要全局ID的表的每一行ID都会引用该表.默认值将由类似的东西提供
INSERT INTO GlobalID
RETURN SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud) c++ ×4
asynchronous ×2
c# ×2
sql ×2
sql-server ×2
windows ×2
.net ×1
asp.net ×1
async-await ×1
c ×1
encoding ×1
linux ×1
t-sql ×1
wdk ×1