小编Joh*_*ick的帖子

vector::push_back() 元素的生命周期

我想确认我对已push_back()在 .ed 上编辑的对象的生命周期的理解std::vector。我读到的内容是向量中的元素是副本。那么,下面的用法可以吗?具体来说,变量 s 是否位于f2()an 的不同实例中std::string,而不是push_back()'ed 中的变量f1(),因此可以安全使用?

void f1(std::vector<std::string>* pv) {
    std::string s = "hi";               
    pv->push_back(s);
}

void f2(void) {
    std::vector<std::string> v;
    f1(&v);
    for (size_t i = 0; i < v.size(); ++i) {
        std::string s = v.at(i);
        std::cout << s;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ stl

4
推荐指数
2
解决办法
3451
查看次数

从jdbc调用derby(java db)'show tables'

我需要在Java程序中使用JDBC枚举Derby(aka Java DB)数据库中的表.我所知道的就是SHOW TABLES命令.

我第一次试着用类似的东西......

String strConnectionURL = "jdbc:derby:/path/to/derby/database;create=false";
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection(strConnectionURL);
Statement statement = connection.createStatement();
boolean boResult = statement.execute("SHOW TABLES");
if (boResult) {
    System.out.println("yay!");
}
Run Code Online (Sandbox Code Playgroud)

...但是会引发异常:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "SHOW" at line 1, column 1.
Run Code Online (Sandbox Code Playgroud)

接下来我想也许我需要使用CallableStatement所以我试过这个...

String strConnectionURL = "jdbc:derby:/path/to/derby/db;create=false";
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection(strConnectionURL);
CallableStatement statement = connection.prepareCall("SHOW TABLES");
boolean boResult = statement.execute();
if (boResult) {
    System.out.println("yippee!");
}
Run Code Online (Sandbox Code Playgroud)

...但是会引发同样的异常:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "SHOW" at line 1, column 1.
Run Code Online (Sandbox Code Playgroud)

那么,任何人都可以帮我从JDBC中枚举Derby(Java DB)数据库中的表吗?

编辑:我环顾四周,开始觉得这可能是一个普遍的JDBC问题.换句话说,可以/将使用可以从Connection对象检索的DatabaseMetaData对象枚举所有db表.调查(并期待回应)......

编辑2:我找到了一个纯粹的JDBC解决方案,但仍然很高兴听到替代方案...... …

jdbc derby javadb

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

我在哪里可以放一个数组下标?

可能重复:
在C数组中为什么这是真的?a [5] == 5 [a]

这个问题问为什么

a[5] == 5[a]
Run Code Online (Sandbox Code Playgroud)

除了一个......

为什么一个允许在一个整数后面放一个数组下标?为什么不允许写一些类似的东西

[a]5
Run Code Online (Sandbox Code Playgroud)

要么

[5]a
Run Code Online (Sandbox Code Playgroud)

或者放在[]其他一些奇怪的地方?

换句话说,允许数组索引运算符的定义是什么?

编辑I: 我收到的引用标准的答案起初有点难以理解.但在我现在明白的响应者的帮助下.指针或整数后允许使用数组下标(方括号).如果它跟在指针之后,括号内的内容必须是整数.如果它跟一个整数,括号内的内容必须是一个指针.

我接受了那个不太热烈的回答,因为他让我理解标准中的引用更多的手握.但严格引用标准的答案也是正确的.起初只是难以理解.

编辑II: 我认为我的问题不重复.我的问题是关于数组下标运算符的允许语法.它被标准中的引用所回答,这些引用从未出现在我认为重复的问题中.它是相似的,是的,但不是重复的.

c

4
推荐指数
2
解决办法
394
查看次数

在Java中实现Mutex

我有一个多线程应用程序(确切地说是Tomcat中的Web应用程序).在其中有一个类,几乎每个线程都有自己的实例.在该类中,在一个方法中有一段代码,一次只能执行一个线程(用户).我的研究让我相信我需要的是一个互斥体(这是一个计数为1的信号量,看起来似乎).

所以,经过一番研究,我认为我应该做的是以下几点.重要的是要注意我的锁对象是静态的.

我做得对吗?

public Class MyClass {
  private static Object lock = new Object();
  public void myMethod() {
    // Stuff that multiple threads can execute simultaneously.
    synchronized(MyClass.lock) {
      // Stuff that only one thread may execute at a time.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading mutex

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

在Derby WHERE子句中使用timestampdiff

我想在Derby数据库中模拟以下类型的查询(即Microsoft SQL Server语法中)的效果.目标是返回表中存储在"someColumn"中的日期少于7天的所有记录.这是我希望实现的Microsoft SQL语法...

select * from someTable where datediff(dd, someColumn, getdate()) < 7

我已经能够确定在Derby中它将涉及使用timestampdiff函数.但是在Derby的WHERE子句中使用函数的语法对我来说是未知的,我找不到任何示例.我找到了很多例子,其中函数用于"what to return"子句,例如......

select {fn timestampdiff(SQL_TSI_HOUR, startdate, enddate)} as diff

但我还没有找到如何在WHERE子句中使用这样的函数的示例.

我承认我的问题实际上是"如何在Derby WHERE子句中使用函数",是的,它非常基本.我还发誓,在发布之前我真的很努力地找到例子.我希望有人能帮帮忙.

sql derby javadb

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

从HttpSessionListener中获取用户名

我想从中获取用户名HttpSessionListener.sessionCreated()。当我说用户名时,我的意思是具体地由返回的名称HttpServletRequest.getRemoteUser()

显然,必须有一个HttpServletRequest导致会话创建的对象(并因此导致了sessionCreated()调用)。但是如何从内部访问它sessionCreated()HttpSessionEvent传递给的对象sessionCreated()似乎无法提供HttpServletRequest导致会话创建的对象的方法。

java servlets

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

从可能引发异常的函数返回std :: string

我在Java中做了很多...

String something = "A default value.";
try {
    something = this.aFunctionThatMightThrowAnException();
} catch (Exception ignore) { }
this.useTheString(something);
Run Code Online (Sandbox Code Playgroud)

现在我正试图找到一个等效的方法std::string.这是我的......

std::string something("A defualt value.");
try {
    something = this->aFunctionThatMightThrowAnException();
} catch (const std::exception& ignore) { }
this->useTheString(something);
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这aFunctionThatMightThrowAnException()可能是......

std::string MyClass::aFunctionThatMightThrowAnException() {
    /* Some code that might throw an std::exception. */
    std::string aString("Not the default.");
    return aString;
}
Run Code Online (Sandbox Code Playgroud)

我有三个关于C++版本的问题:

  • 这是解决这类问题的方法吗?或者将something传入aFunction作为参考更常见?
  • 我的任务是somethingaFunction...安全返回吗?具体是最初分配给"A default value."发布的内存?
  • 在抛出异常的情况下是否有我无法看到的副作用?

c++ string exception

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

匹配"战争"而不是"软件"

正则表达式会匹配前面没有字符串"soft"的字符串"war"的出现?换句话说,"第三次世界大战"中的"战争"会匹配,但"我的软件在哪里"的"战争"不会?此外,"远离我的仓库"将匹配,因此"意识到".换句话说,我只是不希望字符串"软件"匹配.

regex grep

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

将多个char*字符串格式化为std :: string

我有两个char*字符串和一个char*literal,我需要将它组合成一个std :: string.以下是我正在做的事情.它有效,但我不喜欢它看起来的样子(完成它的3行).我想知道是否有更好的方法来做到这一点......

std::string strSource = _szImportDirectory;
strSource += "\\";
strSource += _szImportSourceFile;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

c++

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

警告C4229:使用了过时性:数据上的修饰符将被忽略

下面的部分是较大文件中较大功能的一部分。我已将其简化为我认为是解释当前问题的基本要素。

我正在使用Visual Studio 2010。

调用RegConnectRegistryA的行导致编译器因此向我发出警告:“警告C4229:使用的时代错误:数据修饰符将被忽略”。那是编译器输出中唯一的警告或错误。构建确实成功,并且可执行文件按预期运行。但我确实想摆脱该警告。(老实说,我认为它已经存在了很多个月。)

extern "C" __declspec(dllexport) void whoOpsRegistryGetREG_SZ(
    LPCSTR szServer, 
    LPCSTR szKey, 
    LPCSTR szValue, 
    char* szReturn, 
    int iSize) 
{
    HKEY hKey;
    LONG WINAPI lReturn = ::RegConnectRegistryA(
        szServer, 
        HKEY_LOCAL_MACHINE, 
        &hKey);
}
Run Code Online (Sandbox Code Playgroud)

我在其他帖子中阅读的内容使我相信,它与#includes有某种联系。所以他们在这里。如果您需要任何带引号的头文件的内容,请告诉我。

#include "stdafx.h"
#include <windows.h>
#include <initguid.h>
#include <ole2.h>
#include <mstask.h>
#include <msterr.h>
#include <objidl.h>
#include <wchar.h>
#include <stdio.h>
#include <stdarg.h>
#include <lm.h>
#include "whoOpsPrivate.h"
#include "whoOps.h"
#include "jni.h"
#include "whoOps_TaskScheduler.h"
#include "whoOps_ServiceMangler.h"
#include "whoOps_RegistryRaptor.h"
#include "../../cyclOps.h"
Run Code Online (Sandbox Code Playgroud)

谢谢!

winapi visual-studio-2010

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

为类成员提供对另一个类成员的引用

从1到10的等级,从安全编程实践的角度来看,以下有多糟糕?如果你发现它比五更糟糕,你会做什么呢?

下面我的目标是获得的地图列表中的数据在B插入A.在这种情况下,对我来说,这是确定的,如果它要么是一个数据的副本或原始数据的参考.我发现这种方法最快,但我对此感到不安.

public class A {
    private List<Map<String, String>> _list = null;
    public A(B b) {
        _list = b.getList();
    }
}

public class B {
    private List<Map<String, String>> _list = new ArrayList<Map<String, String>>();
    public List<Map<String, String>> getList() { 
        // Put some data in _list just for the sake of this example...
        _list.add(new HashMap<String, String>());
        return _list; 
    }
}
Run Code Online (Sandbox Code Playgroud)

java oop

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

捕获所有java.lang.Error以进行日志记录,并允许它们在堆栈中工作

简短版本: 如何捕获java.lang.Error特定代码段中的所有内容以便记录它们,并且还允许它们传播调用堆栈,就好像我根本没有捕获它们一样?

长版......

在一段代码中,我想要捕获所有内容java.lang.Error以便记录它们.但是我也想让Error继续在调用堆栈中继续工作,这样行为就像我根本没有抓住它一样.

另外,我想捕获并记录所有java.lang.Exceptions,然后让它们也传播调用堆栈.

我试过这个......

    } catch (Throwable e) {
        e.printStackTrace();
        throw e;
    } 
Run Code Online (Sandbox Code Playgroud)

...但问题是我必须修改调用堆栈中更高的每个方法来抛出Throwable,并且其中一些方法不是我要修改的(我的方法是由第三方框架中的方法调用的).

我会对某种包装技术感到满意,我会把它放在Throwable别的东西上扔掉,但是我更愿意以java.lang.Error自然的方式让任何一个传播,就像我根本没有抓住它们一样.

建议?

编辑: 有人问:"为什么我要这样做?".我认为这是一个很好的问题,我将澄清:这是我公司使用的框架.它取决于jar中包含的其他框架,系统管理员可能忘记包含它们.在这种情况下,代码中的某些位置存在NoClassDefFoundError.但只有用户在浏览器中看到此错误,在服务器日志中找不到它.我想记录它,以便系统管理员可以知道发生了这个错误,因为他将有处理它的指令.

java throwable

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

当我覆盖所有样式时,是否有任何理由使用 HX 标签?

我使用<h1>, <h2>,<h3>标签作为标题。但后来我几乎总是“覆盖”几乎所有样式(字体大小/系列/粗细、边距和填充)。

鉴于此,除了它们的信息性(即某些内容作为标题)之外,是否有任何真正的理由使用它们?

html css

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

标签 统计

java ×4

c++ ×3

derby ×2

javadb ×2

c ×1

css ×1

exception ×1

grep ×1

html ×1

jdbc ×1

multithreading ×1

mutex ×1

oop ×1

regex ×1

servlets ×1

sql ×1

stl ×1

string ×1

throwable ×1

visual-studio-2010 ×1

winapi ×1