小编jba*_*sta的帖子

正确的方法来初始化HashMap并且HashMap可以保存不同的值类型吗?

所以我HashMap在Java中有两个关于s的问题:

  1. 初始化一个正确的方法是HashMap什么?我认为在我的情况下使用可能是最好的:

    HashMap x = new HashMap();
    
    Run Code Online (Sandbox Code Playgroud)

    但Eclipse一直建议我使用:

    HashMap<something, something> map = new HashMap();
    
    Run Code Online (Sandbox Code Playgroud)

    哪个更好?

  2. 可以HashMap将不同类型的对象/数据类型保存为值吗?例如,这会工作并且没问题:

    map.put("one", 1);
    map.put("two", {1, 2});
    map.put("three", "hello");
    
    Run Code Online (Sandbox Code Playgroud)

    在第一个中put(),我想要int一个值作为值,在第二个中int[],第三个是字符串.用HashMaps 做Java可以吗?另外,可以将a HashMap作为值存储在一个HashMap

java standards hashmap

63
推荐指数
2
解决办法
23万
查看次数

何时使用strncpy或memmove?

(gcc 4.4.4 c89)

我一直习惯于strncpy复制字符串.我从来没有真正使用memmovememcpy非常.然而,当你决定是否要使用我只是想知道strncpy,memmovememcpy

我写的代码是针对客户端/服务器应用程序的.在他们使用的文档中bcopy.但是,我可以和其他人一样吗?

bcopy((char*)server->h_addr,
      (char*)&serv_addr.sin_addr.s_addr,
      server->h_length);
Run Code Online (Sandbox Code Playgroud)

非常感谢,

c string

17
推荐指数
4
解决办法
9834
查看次数

C++ std ::模板类值的映射

我试图声明一个Row和一个Column类,Row有一个私有std::map值指向模板Column.像这样的东西:

template <typename T> class DataType {
  private:
    T type;
};
template <typename T> class Field {
  private:
    T value;
    DataType<T> type;
};
class Row {
  private:
    std::map<unsigned long,Field*> column;
}; 
Run Code Online (Sandbox Code Playgroud)

好吧,我原则上认为Row类不应该知道我们想要使用哪种Field(或Column),即它是第1 Field<int>列还是第Field<double>2列.但是我不确定什么是正确的语法对于Row::column声明,或者如果std::map它在这个意义上是有限的,我应该使用其他东西.

我建议你提出建议,并提前感谢你们.

c++ methods templates stdmap

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

如何在configure.in中测试C++库的可用性?

我正在研究GNU/Linux上的C++项目,我正在寻找一种方法来测试IBM Informix库与Autotools的存在性和可用性 - 即编辑configure.in.我没有Autotools的经验,所以基本上我从项目configure.in 等人那里学到了.脚本和复制和更改我认为需要更改的位置.我,我一直在改编现有的文字configure.in.

到目前为止,我一直在成功使用AC_CHECK_LIBin configure.in来测试某个库是否存在且是否可用.但这似乎只适用于具有函数的库,而不是类.也就是说,在测试Informix的libifc++.so库时,这会失败:

AC_CHECK_LIB(ifc++, ITString, 
        INFORMIX_LIB="-L$INFORMIX_LIB_LOCATION/c++ -lifc++ -L$INFORMIX_LIB_LOCATION -L$INFORMIX_LIB_LOCATION/dmi -L$INFORMIX_LIB_LOCATION/esql -lifdmi -lifsql -lifasf -lifgen -lifos -lifgls -lifglx $INFORMIX_LIB_LOCATION/esql/checkapi.o -lm -ldl -lcrypt -lnsl",
        echo "* WARNING: libifc++.so not found!"
        INFORMIX_INC=""
        INFORMIX_LIB=""
)
Run Code Online (Sandbox Code Playgroud)

我也试过使用其他组合,比如ITString::ITString等.

我没有在Informix的API中找到"纯"函数(即,在C++类中没有上下文的函数).所以我希望AC_CHECK_LIB在这种情况下有一种方法可以使用,或者还有另一种autoconf/ configure.in"命令"用于此特定用途.

提前感谢您的反馈.

c++ usability autoconf autotools configure

12
推荐指数
2
解决办法
4742
查看次数

如何在Perl中的两个行分隔符之间提取行?

我有一个ASCII日志文件,其中包含一些我想要提取的内容.我从来没有花时间适当地学习Perl,但我认为这是完成这项任务的好工具.

该文件的结构如下:

... 
... some garbage 
... 
... garbage START
what i want is 
on different
lines 
END 
... 
... more garbage ...
next one START 
more stuff I want, again
spread 
through 
multiple lines 
END 
...
more garbage

所以,我正在寻找一种方法来提取每个STARTEND分隔符字符串之间的行.我怎样才能做到这一点?

到目前为止,我只找到了一些关于如何使用START字符串打印行的示例,或者其他与我正在寻找的内容有些相关的文档项.

string perl extract delimiter

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

whiptail:如何将输出重定向到环境变量?

我正在尝试使用whiptail,因为它是对话框的轻量级替代品,并且似乎默认安装在大多数系统中(即,如果它被"遗忘"或默认情况下未安装,则无需人员安装它).我在这里查看了一些问题#1562666,但是我正在寻找一种替代方法来重定向输出,这样就可以设置一个环境变量,而不仅仅是写入磁盘.

例如,当我尝试使用对话框时,这是有效的(我看到对话框,并设置了一个环境变量):

result=$(dialog --output-fd 1 --inputbox "Enter some text" 10 30)
echo Result=$result
Run Code Online (Sandbox Code Playgroud)

但是,当使用whiptail代替对话框时,这不起作用,因为对话框永远不会显示.我必须将其重定向到磁盘文件并读取它,例如:

result=$(tempfile) ; chmod go-rw $result
whiptail --inputbox "Enter some text" 10 30 2>$result
echo Result=$(cat $result)
rm $result
Run Code Online (Sandbox Code Playgroud)

它工作正常,我可以从头到尾使用相同的tempfile(当脚本结束时删除它).但是为了这个而被迫使用磁盘感觉很尴尬,而不是将它全部保留在内存中(重定向到环境变量).

所以我问:我忘记了什么 - 或者在使用whiptail时我是否真的必须使用磁盘?

提前感谢您的反馈.

linux redirect dialog stdout

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

在Servlet中发送和接收二进制数据

我正在尝试编写一个Java Servlet来接收二进制数据请求并使用HttpServletRequest.getOutputStream()和回复它们HttpServletResponse.getInputStream().这适用于涉及通过HTTP POST连接向此Servlet响应的Silverlight客户端发送请求的项目.目前,为了测试Servlet,我正在用Java实现一个比Silverlight更熟悉的客户端.

问题是,在我的测试项目中,我将来自Servlet客户端的数据作为字节数组发送,并期望接收具有相同长度的字节数组 - 只是它没有,而是我得到一个字节.因此,我在这里发布相关的代码片段,希望你可以指出我在哪里做错了,并希望提供相关的参考书目来帮助我.

所以这里.

客户端的servlet从一个非常简单的HTML页面处理与我作为前端使用表单POST请求.我并不太担心使用JSP等,而是专注于使Servlet之间的通信工作.

// client HttpServlet invokes this method from doPost(request,response)
private void process(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
  String firstName = (String) request.getParameter("firstname");
  String lastName = (String) request.getParameter("lastname");
  String xmlRequest = "<MyRequest><Person><Name Firstname=\""+firstName+"\" Lastname=\""+lastName+"\" /></Person></MyRequest>";

  OutputStream writer = null;
  InputStream reader = null;
  try {
    URL url = new URL("http://localhost:8080/project/Server");
    URLConnection conn = url.openConnection();
    conn.setDoInput(true);
    conn.setDoOutput(true);

    writer = conn.getOutputStream();
    byte[] baXml = xmlRequest.getBytes("UTF-8");
    writer.write(baXml, …
Run Code Online (Sandbox Code Playgroud)

binary post servlets http inputstream

9
推荐指数
2
解决办法
5万
查看次数

SQLite3:在C++中插入带有NULL字符的BLOB

我正在开发一个C++ API,它使用自定义设计的插件,使用它们的API和特定的SQL语法与不同的数据库引擎进行交互.

目前,我正在尝试找到一种插入BLOB的方法,但由于它NULL是C/C++中的终止字符,因此在构造INSERT INTO查询字符串时BLOB会被截断.到目前为止,我一直在努力

//...
char* sql;
void* blob;
int len;
//...
blob = some_blob_already_in_memory;
len = length_of_blob_already_known;
sql = sqlite3_malloc(2*len+1);
sql = sqlite3_mprintf("INSERT INTO table VALUES (%Q)", (char*)blob);
//...
Run Code Online (Sandbox Code Playgroud)

我希望,如果它可以在SQLite3交互式控制台中完成,那么应该可以使用正确转义的NULL字符构造查询字符串.也许有一种方法可以使用SQLite SQL语法支持的标准SQL来实现这一点?

当然有人必须面对同样的情况.我用Google搜索并找到了一些答案,但是还有其他编程语言(Python).

提前感谢您的反馈.

sqlite null blob escaping

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

JBoss5中的XPath类解析

我很难弄清楚问题的来源,所以我发布这篇文章是希望其他人可能在其他地方找到类似的东西,并且非常友好地分享他们的见解.

我正在使用运行在Sun Java 1.6.0-13 JDK之上的JBoss 5.0.1.GA应用程序服务器.对于生成的Web Service中的WAR文件,我使用Axis2 1.4 WS引擎,当从Dynamic Web Project中的给定"worker"类创建Webservice时,Eclipse Galileo将JAR文件插入到项目的目录中.相关的代码段如下:WEB-INF/lib

String sUrl = "http://example.com/datafile.xml";
String sPath = "/some/xpath/string";
InputStream input = new URL(sUrl).openStream();
InputSource source = new InputSource(input);
DocumentBuilderFactory docFact = DocumentBuilderFactory.newInstance();
docFact.setNamespaceAware(false);
DocumentBuilder parser = docFact.newDocumentBuilder();
Document doc = parser.parse(source);
XPath xpath = XPathFactory.newInstance().newXPath();
// error occurs here:
String result = (String) xpath.evaluate(path,doc,XPathConstants.STRING);
input.close();
Run Code Online (Sandbox Code Playgroud)

这是我从JBoss日志得到的错误:

java.lang.LinkageError:加载器约束违规:当解析字段"STRING"时,引用类的类加载器(org/jboss/classloader/spi/base/BaseClassLoader的实例),javax/xml/xpath/XPathConstants和类用于字段的已解析类型的加载程序(<bootloader>的实例),javax/xml/namespace/QName,具有该类型的不同Class对象

可以使用XPath.evaluate(String,Document)- 但是有时我需要得到(例如)a XPathConstants.NODESET,所以这是不行的.我还试图jboss-web.xml在WAR文件中乱丢乱丢一些文件,但没有任何效果.

我想要了解的是:

  • 哪里可能出现错误?JBoss类加载器?JBoss和Sun JDK之间有一些奇怪的交互?Eclipse在创建Web服务时引入了一些奇怪的东西?也许在WAR中部署的Axis2库引入了一些混乱? …

java jboss xpath classloader

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

如何在Python中用Base64编码long?

在Java中,我可以编码BigInteger为:

java.math.BigInteger bi = new java.math.BigInteger("65537L");
String encoded = Base64.encodeBytes(bi.toByteArray(), Base64.ENCODE|Base64.DONT_GUNZIP);

// result: 65537L encodes as "AQAB" in Base64

byte[] decoded = Base64.decode(encoded, Base64.DECODE|Base64.DONT_GUNZIP);
java.math.BigInteger back = new java.math.BigInteger(decoded);
Run Code Online (Sandbox Code Playgroud)

在C#中:

System.Numerics.BigInteger bi = new System.Numerics.BigInteger("65537L");
string encoded = Convert.ToBase64(bi);
byte[] decoded = Convert.FromBase64String(encoded);
System.Numerics.BigInteger back = new System.Numerics.BigInteger(decoded);
Run Code Online (Sandbox Code Playgroud)

如何在Python中将长整数编码为Base64编码的字符串?到目前为止我所尝试的结果与其他语言的实现不同(到目前为止我已经尝试过Java和C#),特别是它生成了更长的Base64编码字符串.

import struct
encoded = struct.pack('I', (1<<16)+1).encode('base64')[:-1]
# produces a longer string, 'AQABAA==' instead of the expected 'AQAB'
Run Code Online (Sandbox Code Playgroud)

当使用此Python代码生成Base64编码的字符串时,Java中生成的解码整数(例如)代替16777472预期生成65537.首先,我错过了什么?

其次,我必须手工弄清楚要使用的长度格式是什么struct.pack; 如果我试图编码一个长数字(大于(1<<64)-1),'Q' …

python base64

8
推荐指数
2
解决办法
7867
查看次数