所以我HashMap在Java中有两个关于s的问题:
初始化一个正确的方法是HashMap什么?我认为在我的情况下使用可能是最好的:
HashMap x = new HashMap();
Run Code Online (Sandbox Code Playgroud)
但Eclipse一直建议我使用:
HashMap<something, something> map = new HashMap();
Run Code Online (Sandbox Code Playgroud)
哪个更好?
可以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?
(gcc 4.4.4 c89)
我一直习惯于strncpy复制字符串.我从来没有真正使用memmove或memcpy非常.然而,当你决定是否要使用我只是想知道strncpy,memmove或memcpy?
我写的代码是针对客户端/服务器应用程序的.在他们使用的文档中bcopy.但是,我可以和其他人一样吗?
bcopy((char*)server->h_addr,
(char*)&serv_addr.sin_addr.s_addr,
server->h_length);
Run Code Online (Sandbox Code Playgroud)
非常感谢,
我试图声明一个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它在这个意义上是有限的,我应该使用其他东西.
我建议你提出建议,并提前感谢你们.
我正在研究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"命令"用于此特定用途.
提前感谢您的反馈.
我有一个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
所以,我正在寻找一种方法来提取每个START和END分隔符字符串之间的行.我怎样才能做到这一点?
到目前为止,我只找到了一些关于如何使用START字符串打印行的示例,或者其他与我正在寻找的内容有些相关的文档项.
我正在尝试使用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时我是否真的必须使用磁盘?
提前感谢您的反馈.
我正在尝试编写一个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) 我正在开发一个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).
提前感谢您的反馈.
我很难弄清楚问题的来源,所以我发布这篇文章是希望其他人可能在其他地方找到类似的东西,并且非常友好地分享他们的见解.
我正在使用运行在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文件中乱丢乱丢一些文件,但没有任何效果.
我想要了解的是:
在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' …
c++ ×2
java ×2
string ×2
autoconf ×1
autotools ×1
base64 ×1
binary ×1
blob ×1
c ×1
classloader ×1
configure ×1
delimiter ×1
dialog ×1
escaping ×1
extract ×1
hashmap ×1
http ×1
inputstream ×1
jboss ×1
linux ×1
methods ×1
null ×1
perl ×1
post ×1
python ×1
redirect ×1
servlets ×1
sqlite ×1
standards ×1
stdmap ×1
stdout ×1
templates ×1
usability ×1
xpath ×1