Windows上的用户名不区分大小写(但保留大小写),因此您可以同时登录UserName和uSERnAME.但是,"case"对于不同的语言环境是不同的 - Windows使用哪种语言环境来决定提供的用户名是否与帐户数据库中的用户名相同?
我相信它是Invariant Locale,并不依赖于"语言和区域选项"对话框中的任何内容,但我可能错了.在任何情况下,我都会感谢像MSDN文章那样的确认(或反驳).
有没有办法确保用户无法关闭或离开我的Swing应用程序?我试图将其全屏显示,但你仍然可以使用Alt-Tab远离它 - 此外,当你决定使用JOptionPane的对话框时,这不会很好.
那么,有没有办法让用户在设备上只使用这一个Java程序?
编辑:有些人想知道这个目的.该应用程序应该被"嵌入"到手持设备(在Windows下运行),因此设备的用户将使用它,因为我们打算使用它 - 例如,他们不会玩Freecells或做更糟糕的是,而不是做实际的工作.你看过售票亭了吗?他们被锁定得很好,你不能只关闭他们的华丽GUI并进入Windows桌面!
想象一下,我们有三个.h文件:
f.h:
template <typename T> class Class {public: Class() {} T id(T x) { return x; }};
Run Code Online (Sandbox Code Playgroud)
g.h:
template <typename T> class Class {public: Class() {} T id(T x) { return x + 100; }};
Run Code Online (Sandbox Code Playgroud)
h.h:
template <typename T> class Class {public: Class(); T id(T x); };
Run Code Online (Sandbox Code Playgroud)
现在,我们还有三个.cpp文件:
f.cpp:
#include "f.h"
int f(int x) { Class<int> t; return t.id(x); }
Run Code Online (Sandbox Code Playgroud)
g.cpp:
#include "g.h"
int g(int x) { Class<int> t; return t.id(x); …Run Code Online (Sandbox Code Playgroud) 我需要在C++中实现非常快速的log2(float x)函数.
我发现了一个非常有趣的实现(非常快!)
#include <intrin.h>
inline unsigned long log2(int x)
{
unsigned long y;
_BitScanReverse(&y, x);
return y;
}
Run Code Online (Sandbox Code Playgroud)
但是此函数仅适用于输入中的整数值.
问题:有没有办法将此函数转换为double类型的输入变量?
UPD:
我找到了这个实现:
typedef unsigned long uint32;
typedef long int32;
static inline int32 ilog2(float x)
{
uint32 ix = (uint32&)x;
uint32 exp = (ix >> 23) & 0xFF;
int32 log2 = int32(exp) - 127;
return log2;
}
Run Code Online (Sandbox Code Playgroud)
这比前一个示例快得多,但输出是无符号类型.
是否可以使此函数返回double类型?
提前致谢!
似乎JAXB无法读取它所写的内容.请考虑以下代码:
interface IFoo {
void jump();
}
@XmlRootElement
class Bar implements IFoo {
@XmlElement
public String y;
public Bar() {
y = "";
}
public Bar(String y) {
this.y = y;
}
@Override
public void jump() {
System.out.println(y);
}
}
@XmlRootElement
class Baz implements IFoo {
@XmlElement
public int x;
public Baz() {
x = 0;
}
public Baz(int x) {
this.x = x;
}
@Override
public void jump() {
System.out.println(x);
}
}
@XmlRootElement
public class Holder {
private List<IFoo> …Run Code Online (Sandbox Code Playgroud) 想象一下,我有一份工作要做,可以通过三种不同的方式来完成:缓慢而痛苦,但却是安全的方式; 给你带来适度痛苦的方式Resource1; 一种快速简便的方法,需要Resource1和Resource2.现在,这些资源是宝贵的,所以我将它们包装成RAII实现ResNHolders并写下这样的东西:
void DoTheJob(Logger& log/*, some other params */) {
try {
Res1Holder r1(/* arguments for creating resource #1 */);
try {
Res2Holder r2(/* arguments */);
DoTheJobQuicklyAndEasily(log, r1, r2);
}
catch (Res2InitializationException& e) {
log.log("Can't obtain resource 2, that'll slowdown us a bit");
DoTheJobWithModerateSuffering(log, r1);
}
}
catch (Res1InitializationException& e) {
log.log("Can't obtain resource 1, using fallback");
DoTheJobTheSlowAndPainfulWay(log);
}
}
Run Code Online (Sandbox Code Playgroud)
"DoTheJobXxx()"引用Logger/ ResNHolder,因为它们是不可复制的.我是不是太笨拙了?有没有其他聪明的方法来构建函数?
我在程序中使用了一个静态库,它只能将文件名作为输入,而不是实际的文件内容.关于图书馆的源代码,我无能为力.所以我想:创建一个全新的文件,将数据存储到处理中,将其刷新到磁盘上(?),将其名称传递给库,然后将其删除.
但我也希望这个过程相当安全:
1)文件必须重新创建,没有任何虚假数据(可能不是关键,但无论如何);
2)任何人,但我的过程中一定不能能够读取或从/到这个文件写(我希望库来处理我的实际数据,而不是虚假的数据有些wiseguy管理,堵塞);
3)在我完成这个文件之后,它必须被删除(好吧,如果有人TerminateProcess()我,我想没有什么可以做的,但仍然).
该库似乎使用非Unicode fopen()来打开给定的文件,所以我不太清楚如何处理所有这些,因为该程序旨在在Windows上运行.有什么建议?
我有一个目录路径,我想遍历其所有子目录,顺便收集文件的路径.
namespace fs = boost::filesystem;
std::vector<fs::path> traverse_if_directory(fs::path& f) {
std::vector<fs::path> result;
if (fs::is_directory(f)) {
for (fs::recursive_directory_iterator it(f), eit; it != eit; ++it) {
if (!fs::is_directory(it->path())) {
result.push_back(it->path());
}
}
}
else {
result.push_back(f);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在遍历的过程中,我偶然发现了一个我无权查看的目录,并且上面的代码抛出了.但显然,在这种情况下,这不是一个例外,我应该继续,跳过这个锁定的目录.
但是我该怎么做?
回来后cmd.exe,我用了
set /P file=Enter path to the file:
Run Code Online (Sandbox Code Playgroud)
从控制台输入文件路径(如果没有作为参数提供),我可以按Tab获取路径自动完成。但是,当我在 Powershell 中执行时
$file = Read-Host -Prompt "Enter path to the file"
Run Code Online (Sandbox Code Playgroud)
那么我无法使用Tab自动完成功能,它只是在输入中插入一个表格。有没有办法模拟以前的行为?
我有功能smallStep :: Command -> Data -> Either StepError Data,我想bigStep :: [Command] -> Data -> Either StepError Data使用它,使用以下语义:
bigStep [] data = Right data
bigStep c:cs data = do
data' <- bigStep cs data
smallStep c data'
Run Code Online (Sandbox Code Playgroud)
这没什么好错的,但如果smallStep有类型Command -> Data -> Data,我会bigStep简单地实现bigStep commands data = foldr data smallStep commands.
当然,我也想在foldr这里使用.我该怎么做呢?foldM被取消foldl,倒车清单听起来不是一个非常好的主意.
interface Message<T, L> {
}
interface Foo<T> {
void frob(Message<T, Foo<?>> message);
}
class AuxiliaryFoo implements Foo<Integer> {
@Override
public void frob(Message<Integer, Foo<?>> message) { }
}
class MainFoo implements Foo<Object> {
@Override
public void frob(Message<Object, Foo<?>> message) {
new AuxiliaryFoo().frob(new Message<Integer, MainFoo>() {});
}
}
Run Code Online (Sandbox Code Playgroud)
Java编译器告诉我actual argument < anonymous Message< Integer, MainFoo >> cannot be converted to Message< Integer, Foo< ?>> by method invocation conversion.
为什么?
什么可以转换为Message <Integer,Foo <?>>?
有main功能:
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
Worker w;
QObject::connect(&w, SIGNAL(done()), &a, SLOT(quit()), Qt::QueuedConnection);
w.start();
int ret = a.exec();
w.quit();
w.wait();
return ret;
}
Run Code Online (Sandbox Code Playgroud)
而且有Worker定义:
class Worker : public QThread
{
Q_OBJECT
public:
Worker(QObject *parent=0);
protected:
void run();
protected slots:
void process_request();
private:
int ttl;
Messenger* messenger;
}
Worker::Worker(QObject * parent)
:QThread(parent),
ttl(5),
messenger(new Messenger(this))
{
moveToThread(this);
connect(messenger, SIGNAL(new_message()), SLOT(process_request()), Qt::QueuedConnection);
}
void Worker::finish(){
quit();
messenger->disconnectFromNetwork();
}
void Worker::run(){
messenger->connectToNetwork("somewhere");
exec();
emit done(); …Run Code Online (Sandbox Code Playgroud)