C++编译器(特别是g ++)可以重新排序结构的内部元素吗?
我看到一些奇怪的行为,我有一个包含如下内容的结构:
Struct SomeStruct{
...
...
long someLong;
long someLongArray[25];
unsigned long someUnsignedLong;
unsigned long someUnsignedLongArray[8];
unsigned long int someUnsignedLongInt;
...
...
};
Run Code Online (Sandbox Code Playgroud)
当我写输出这个到文件,顺序someUnsignedLongArray和someLongArray似乎被反转(即,在元件someLongArray []出现之后someUnsignedLong和的元素someUnsignedLongArray []后出现someLong).这可能吗??
谢谢
更新:根据要求,我使用以下内容写出结构:
int fd = open(fspec,O_RDWR|O_CREAT|O_TRUNC,0666);
int writeRes = write(fd,(char *)&someStruct,sizeof(SomeStruct));
Run Code Online (Sandbox Code Playgroud)
为了完整性,这里是完整的结构:
struct SomeStruct{
byte someByte;
byte someByteArray[6];
char someChar;
char someCharArray[5];
char someCharArrayArray[3][5];
short someShort;
signed short someShortArray[2];
unsigned short someUnsignedShort;
unsigned short someUnsignedShortArray[8];
int someInt;
int someIntArray[3];
int someIntArrayArrayArrayArray[4][3][2][6]; …Run Code Online (Sandbox Code Playgroud) 有没有办法在java属性文件中指定当前目录?
即:像:
fileLocation={currentDir}/fileName.txt
Run Code Online (Sandbox Code Playgroud) 我在Tomcat(5.5)中运行了几个servlet应用程序.所有servlet都使用通过JNDI共享的公共工厂资源.目前,我可以通过在/conf/server.xml文件中将工厂资源包含为GlobalNamingResource来使一切正常工作,然后让每个servlet的META-INF/context.xml文件包含资源的ResourceLink.XML文件中的代码段包含在下面.注意:我对tomcat并不熟悉,所以我不是说这是一个很好的配置!
但是,我现在希望能够使用RPM自动将这些servlet安装到多个tomcat实例中.RPM将首先将WAR复制到webapps目录,将工厂的jar复制到common/lib目录(这很好).但它还需要确保将工厂资源作为所有servlet的资源包含在内.
全局添加资源的最佳方法是什么?我不太热衷于编写一个进入server.xml文件的脚本,并以这种方式添加资源.有没有办法让我添加多个server.xml文件,以便我可以编写一个新的server-app.xml文件,它会将我的设置连接到server.xml?或者,最好还是将这个JNDI资源添加到所有servlet而不使用server.xml?
ps重新启动服务器不会是一个问题,所以我不介意更改是否自动获取.
谢谢
来自server.xml的代码段
<!-- Global JNDI resources -->
<GlobalNamingResources>
<Resource name="bean/MyFactory"
auth="Container"
type="com.somewhere.Connection"
factory="com.somewhere.MyFactory"/>
</GlobalNamingResources>
Run Code Online (Sandbox Code Playgroud)
整个servlet的META-INF/context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<ResourceLink global="bean/MyFactory"
name="bean/MyFactory"
type="com.somewhere.MyFactory"/>
</Context>
Run Code Online (Sandbox Code Playgroud) 在Java中,假设您有一个包装ArrayList对象(或任何集合)的类.
您将如何返回其中一个对象,以致调用者将看不到对ArrayList中对象的任何未来更改?
即你想要返回对象的深层副本,但你不知道它是否是可克隆的.
我有一个XML模式,我需要为其创建Java类.它不是一个特别大的模式,我会说它将导致大约20个类.我试图权衡是否使用自动绑定程序(如JAXB或JiBX中提供的程序)或者是否手动编写我自己的类并使用XStream之类的内容进行编组/解组.
编写自己的类而不是使用绑定程序有什么优点/缺点.
另外,我使用绑定程序,我永远与之绑定.例如,如果我使用JAXB的绑定编译器来创建类,我是否必须使用JAXB进行所有编组/解组?
ps我看过以下关于XML绑定/序列化的问题,这些问题很有用,但没有完全回答我的问题: xml-serialization-in-java和java-xml-binding
我正在创建一个可执行的JAR,它将在运行时从一个文件中读取一组属性.目录结构将类似于:
/some/dirs/executable.jar
/some/dirs/executable.properties
Run Code Online (Sandbox Code Playgroud)
有没有办法在executable.jar文件中设置属性加载器类来从jar所在的目录加载属性,而不是硬编码目录.
我不想将属性放在jar本身,因为属性文件需要是可配置的.
根据这里,C编译器将在将结构写入二进制文件时填充值.正如链接中的示例所示,在编写这样的结构时:
struct {
char c;
int i;
} a;
Run Code Online (Sandbox Code Playgroud)
对于二进制文件,编译器通常会在char和int字段之间留下未命名的未使用的孔,以确保int字段正确对齐.
我怎样才能使用不同的语言(在我的例子中,Java)创建二进制输出文件(在C中生成)的精确副本?
是否有自动方式在Java输出中应用C填充?或者我是否必须通过编译器文档来了解它是如何工作的(顺便说一句,编译器是g ++).
是否有能够生成ISO映像的maven插件?
我需要获取一些模块的输出(主要是包含jar的zip文件)并将它们组合成一个ISO映像.
谢谢
如果您有一个Java对象和一个XML模式(XSD),那么获取该对象并将其转换为符合模式的xml文件的最佳方法是什么.对象和模式彼此不了解(因为java类不是从模式创建的).
例如,在类中,可能存在整数字段'totalCountValue',它对应于xsd文件中名为'countTotal'的元素.有没有办法创建一个映射,说明"如果对象包含int totalCountValue,则创建一个名为'countTotal'的元素并将其放入XML中".类似地,对象中可能存在应该被忽略的字段,或者对象中应该对应于多个XML元素的列表.
我看了XStream,但没有看到任何(显而易见的)方法.是否有其他XML库可以简化此任务?
在java.io和java.nio中,是否有人用于描述缓冲区,流,读取器,通道,选择器等之间的关系(或者,这是一个很好的资源)?
谢谢