小编pat*_*fox的帖子

在SQLite中启用外键约束

我正在使用SQLite和C#,并且有一些表定义了外键.

现在,我知道默认情况下,SQLite中没有强制执行外键约束,但是我想将它们打开.

是否可以通过代码执行此操作?我查了一个相关的问题,但我不知道如何通过C#代码来完成.我正在使用Visual Studio 2008中最新的SQLite插件来设计我的表.

conn.Open();
SQLiteCommand cmd = new SQLiteCommand("PRAGMA foreign_keys = ON", conn);
cmd.ExecuteNonQuery(); 
conn.Close();
Run Code Online (Sandbox Code Playgroud)

重新打开此连接时,我需要保持此更改.可能吗?

c# sql sqlite ado.net foreign-keys

33
推荐指数
3
解决办法
2万
查看次数

Java Lambda到比较器转换 - 中间表示

我试图理解Comparator.comparing函数是如何工作的.我创建了自己的比较方法来理解它.

private static <T,U extends Comparable<U>> Comparator<T> comparing(Function<T,U> f) {
    BiFunction<T,T,Integer> bfun = (T a, T b) -> f.apply(a).compareTo(f.apply(b));
    return (Comparator<T>) bfun;
}
Run Code Online (Sandbox Code Playgroud)

此函数的最后一行抛出异常.

但是,如果我将此功能更改为

private static <T,U extends Comparable<U>> Comparator<T> comparing(Function<T,U> f) {
    return (T a, T b) -> f.apply(a).compareTo(f.apply(b));
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作得很好.

第二次尝试使用的中间功能接口是什么,能够将lambda转换为Comparator

java lambda comparator java-8 functional-interface

13
推荐指数
2
解决办法
426
查看次数

交换机中的条件初始化

为什么这段代码片段运行正常

void foo(int i)
{
    switch(i) {
    case 1:
    {
        X x1;
        break;
    }
    case 2:
        X x2;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

而以下给出了编译错误('case'标签跳过'x1'的初始化)?

void foo(int i)
{
    switch(i) {
    case 1:
        X x1;
        break;
    case 2:
        X x2;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道使用大括号引入了一个新的范围,因此在我们打开它的开头大括号之前,不会为x1分配存储空间.但x2仍然在一个案例标签内初始化,没有括号.这不是一个错误吗?

我认为在两个代码片段中都可以有条件地跳过x2的初始化

c++ initialization switch-statement

9
推荐指数
1
解决办法
287
查看次数

使用原型继承的javascript代码中的对象生存期是什么?

我目前正在阅读"Javascript Good Parts",我发现了以下段落

如果我们尝试从对象检索属性值,并且对象缺少属性名称,则JavaScript会尝试从原型对象中检索属性值.如果该对象缺少属性,那么它将转到其原型,依此类推,直到该进程最终以Object.prototype结束.

如果我从obj1创建一个对象obj2作为原型,这是否意味着obj1不能被销毁,直到obj2也超出范围?

javascript prototype

8
推荐指数
1
解决办法
1176
查看次数

从命令行执行python程序,无需脚本文件

我想在远程服务器上执行 python 程序,而不创建脚本。远程服务器不允许我在文件系统上的任何位置创建任何文件。

python程序具有以下结构,尽管功能要复杂得多

def test2():
  print("test2")

def test_func():
  test2()
  print("test_func")

test_func()
Run Code Online (Sandbox Code Playgroud)

有没有办法直接从命令行执行这个程序?
我尝试过这两种方法

  1. 使用python -c选项传递代码。
  2. 启动python交互模式,然后复制粘贴代码来运行。

我在这两种情况下都会出错。但是,任何没有用户定义函数的代码都可以使用第二种方法执行。是否可以在不创建本地脚本的情况下使上面的代码正常工作?

python bash

6
推荐指数
2
解决办法
6519
查看次数

具有多种可行类型的模板重载解析

这是用于计算最大值的 2 个模板函数

template<typename T>
auto max(T a, T b) {
  cout <<  "Calling 1\n";
  return b < a ? a : b;
}

template<typename T1, typename T2>
auto max (T1 a, T2 b) {
  cout <<  "Calling 2\n";
  return b < a ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

如果我调用 max 函数如下

max(1, 2);
Run Code Online (Sandbox Code Playgroud)

选择了第一个功能(调用 1)。为什么会这样?在这种情况下,1 和 2 都可以很好地匹配。

c++ templates

6
推荐指数
1
解决办法
79
查看次数

Java从项目基目录读取文件夹

我有一个具有典型项目结构的 Maven 项目。在项目的基础上,我有一个名为res 的目录,其中包含一些资源(> 500 MB)。我正在尝试使用

this.class().getClassLoader().getResourceAsStream("res/xxx")

此代码片段从该文件夹中读取,但它返回空资源流。我在下面有一些解决方法,但由于下面解释的原因,这些方法都不可接受。

  1. 我可以将文件夹移动到 {base}/target/classes,它将被读取,但当我执行 mvn clean时它也会被清理。因此,这种方法行不通。由于某种原因,将路径指定为../../res/xxx也不起作用。
  2. 我可以将该文件夹移动到 {base}/src/resources,但随后它将被复制到 target/classes 和 jar。因此,这也是不可接受的。
  3. 虽然我愿意尝试其他一些 java API,但我可能必须使用类加载器机制,因为有一些外部库组件也尝试使用类似的方法访问 res文件夹。

有什么方法可以从项目基目录读取res文件夹吗?pom.xml文件中是否有一些设置可以帮助我解决这个问题?

java relative-path maven

3
推荐指数
1
解决办法
1万
查看次数

Java泛型在类型擦除后命名冲突

我正在阅读"Java Generics and Collections"一书,并且遇到了这段代码,它应该编译并运行而不会出错

class Overloaded {
    public static Integer sum(List<Integer> ints) {
        int sum = 0;
        for (int i : ints) sum += i;
        return sum;
    }
    public static String sum(List<String> strings) {
        StringBuffer sum = new StringBuffer();
        for (String s : strings) sum.append(s);
        return sum.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此示例无法编译时出错

错误:(16,26)java:name clash:sum(java.util.List)和sum(java.util.List)具有相同的擦除

我能理解为什么这是一个错误.但是,本书特别提到这是允许的,因为编译器可以根据返回类型区分这两种方法.

然后我在Java中找到了这个线程 Type Erasure and Overloading:为什么这样做?

它还建议这个例子应该编译.知道什么导致编译失败?

我使用的是JDK 1.8.这最近是用Java 1.8改变的吗?如果这是相关的,我使用最新的IntelliJ IDEA作为IDE.

java generics

3
推荐指数
1
解决办法
250
查看次数

带有常量指针的重复符号错误,但在C ++中没有常量指针

我有以下代码

// header
const char* NAME1 = "C++";        // linker error
const char* const NAME2 = "C++";  // fine
Run Code Online (Sandbox Code Playgroud)

如果此头文件包含在多个源文件中,则第一个声明将导致链接器错误

ld:体系结构x86_64的1个重复符号

为什么允许第二个声明?在包含标头的两个源文件中,NAME2标识符的地址都相同。因此,以某种方式使NAME2成为常量指针也会改变其链接。这是如何运作的?

c++

3
推荐指数
1
解决办法
46
查看次数

登录其他人的代码

我刚刚开始研究C#应用程序(使用log4net).我应该将日志添加到其他人编写的代码中.因此,我不可能每次都很好地理解上下文(代码太多,时间太少:)).

我一直在遵循一个似乎很粗糙的惯例.我用每个日志显示日志级别,日期时间,类名,方法名称.我打印登录进入和退出每个方法(大多数,我尝试在大循环中排除方法),构造函数,一些事件和每个catch语句.

我认为我在某些地方过度使用它,但需要一定程度的均匀性.关于正确(或更好)方法的任何建议?

c# logging log4net

1
推荐指数
1
解决办法
139
查看次数

具有多个参数的隐式转换以及运算符重载

我目前正在阅读"The C++ Programming Language"一书.以下是相关代码

class complex {
public:
  complex(double r, double i): re{r}, im{i} {}
  complex(double r): complex{r,0} {}
  complex(): complex{0,0} {}

  complex& operator-=(complex z) {
    this->re -= z.re;
    this->im -= z.im;
    return *this;
  } 
private:
  double re,im;
};

inline complex operator-(complex a, complex b) {
  return a -= b;
}

inline complex operator-(complex z) {
  return{ 0, 0 } - z;
}
Run Code Online (Sandbox Code Playgroud)

一元operator-给出错误 -

语法错误:缺少';' 在' - '之前

但是,编译器认为以下两种变体都是正确的

inline complex operator-(complex z) {
  return 0 - …
Run Code Online (Sandbox Code Playgroud)

c++ implicit-conversion c++11

1
推荐指数
1
解决办法
72
查看次数

时间戳字符串到PHP中的日期字符串

我正在尝试将时间戳字符串转换为PHP中的Date.我有以下代码

date_default_timezone_set('Asia/Calcutta');
$time = (int)$_POST['timestamp'];
$timeString = date('H:i:s',$time);
Run Code Online (Sandbox Code Playgroud)

但是,无论如何,我总是把时间串作为08:44:07.我认为时间戳大于32位整数可以存储的时间,这可能就是为什么这个转换总是给出整数的默认最大值.

如何在PHP中创建64位整数?我有一台64位机器和64位Windows 7.有没有更好的方法将时间戳字符串转换为本地时间?

编辑:时间戳作为字符串由javascript发送 - "1330582437883"

php timestamp

0
推荐指数
1
解决办法
446
查看次数