我在一个解析XML文件的小型Windows桌面上开发了一个java应用程序.我遇到了一个非常有趣的观察,我非常好奇.
我为我的应用程序生成了一个可执行jar,并在非常强大的Windows Server机器上运行它.它有2个物理Xeon处理器,每个8核,主频为2.7 GHz,50GB RAM和7200 RPM硬盘.我启动应用程序时机器处于空闲状态,我很确定没有其他应用程序与我共享机器.
后来,我在我的Macbook Pro上运行可执行文件,以便看到它的行为.我的个人机器是Core i7,主频为2.2 GHz,配备4 GB RAM和5400 RPM HDD.
令人惊讶的是,应用程序在我个人较弱的机器上快了两倍.这是相同的输入\相同的输出.没有IO但是为了读取XML来解析它们,我在终端上没有打印,但是开始时间\结束时间和最终结果是一行
我很好奇理解这种戏剧性的表现差异背后的原因.特别是来自硬件级别较弱的机器.它是以更好的方式处理硬件的操作系统吗?是JVM工作得更好吗?
我想使用Like运算符匹配String.挑战是在我的字符串中将'%'作为一个字符.
i.e. Row1 : Column = CT%CNV!XYZABCD...
Row2 : Column = CTXXXCNV!XYZABCDE...
Run Code Online (Sandbox Code Playgroud)
如果我使用"SELECT*FROM table WHERE Column like'CT%CNV!%'.它不会将'%'视为字符,并且该语句返回两行.
我只需要返回第一行.
我有一个Firehose流,旨在吸收来自不同来源和不同事件类型的数百万个事件。流应将所有数据作为原始\未更改数据的存储传递到一个S3存储桶。
我正在考虑根据事件消息中嵌入的元数据(例如事件源,事件类型和事件日期)在S3中对数据进行分区。
但是,Firehose根据记录到达时间遵循其默认分区。是否可以自定义此分区行为以满足我的需求?
我需要在下面的XML中忽略这个DTD文件路径,以避免文件未找到异常.
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE Document SYSTEM "/usr/home/billadm/release/binaries_39862//CMS/resource.4444/docgenlib/BillingDocument.dtd">
<Document Sender="Testing Me" Id="130713BA00873650912" BAId="BA0087365091">
<Summary>
...
</Summary>
Run Code Online (Sandbox Code Playgroud)
我使用XOM Parser使用下面的Java代码解析XML文件.我相信我不需要这个DTD.我读到entityResolvers和setFeature为false但我无法在下面的XOM Parser上应用任何内容
public static void main (String [] args) {
try {
File folder = new File("D:\\Yahya_sum/");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println("File " + listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
System.out.println("Directory " + listOfFiles[i].getName());
}
String filename = "D:\\Yahya_sum\\"+listOfFiles[i].getName();
File fXmlFile = new File (filename);
Builder builder = new Builder(); …Run Code Online (Sandbox Code Playgroud) 我一直在实现一个简单的算法,该算法解析 XML 文件并根据 node 中的属性值重新排列其节点。我检索所有节点并将整个节点插入到已排序的 ArrayList 中。然后我创建了一个新的 XML 文档并创建了新的 和 标签,但是当我尝试复制排序的 Node 并将其附加到 时,出现异常,说明该文档仍在另一个文档中使用。我在用
Node sortedCnode= cNode.cloneNode(false); //tried true as well
b.appendChild(sortedCnode);
Run Code Online (Sandbox Code Playgroud)
我认为我的代码正在尝试附加整个 true. 但是,我不知道正确的方法
XML 如下所示
<A>
<B>
<C>
<D>
</D>
<E>
</E>
</C>
</B>
</A>
Run Code Online (Sandbox Code Playgroud) user1 对 my_schema 有 USAGE 权限
user2 对 my_schema 没有 USAGE 权限
但是,只要两个用户是同一数据库的用户,他们仍然可以列出此架构下的所有表及其列。
那么 USAGE GRANT 有什么意义呢?它只是作为其他权限(例如 SELECT)的先决条件吗?
我可以为主类中创建的对象生成setter
IntelliJ IDE是否有一个生成器用于设置为y.set1().. y.setn()而不是将它们写下几十次.
我实现了一个名为mobileCall的类.我从这个类创建了几个对象,并使用来自XML的值填充此对象的String变量,该XML具有针对特定人员的多个mobileCall.我需要对这个人拨打的所有电话进行分组和统计(即国内电话:11分钟;国际电话:15分钟;数据:20 MB)
因此,我在类中实现了几个公共方法来检查调用的类型以返回true或false.在主要类中,我调用这些方法来检查它们是否满足标准我计算特定计数器.
有人专业看过我的代码并说这不是一个好习惯,而OOP旨在消除这种"你是什么"的方法.而且有更好的方法来实现这种行为.我试图阅读OOP和封装,但无法找到更好的方法来做到这一点.我觉得他有一点意义.
代码示例
public class MobileCall {
String callType;
String callDuration;
String callAmount;
String callerID;
String calleID;
....
public boolean isNational(){
if (callType.compareTo("National")==0)
return true;
else
return false;
}
public boolean isInternational(){
if (callType.compareTo("international")==0)
return true;
else
return false;
}
...
}
In Main Method
int nationalCounter;
int internationalCounter;
MobileCall mobileCall = new MobileCall();
if(mobileCall.isNational())
nationalCounter = nationalCounter + mobileCall.getCallDuration();
else if (mobileCall.isInternational())
internationalCounter = internationalCounter + mobileCall.getDuration();
....
Run Code Online (Sandbox Code Playgroud) 我的同事使用TOAD有一个很好的查询快捷方式功能.例如,他们编写get_customer_info,并将该单词替换为完整的连接查询.此功能非常适合生产力.我的机器未获得Toad许可,我使用的是Oracle SQL开发人员.我没有幸运能找到这个功能.我想知道它是否首先具有此功能?
我们在团队中使用TortoiseGit.回购中有一个共享的Excel工作表.当我提交更改并尝试推送时,它表示存在冲突,我拉动并尝试重新绑定,但它表示它不支持此类型的文件.
没有TortoiseGit rebase支持Excel工作表或非文本文件?
以超级用户身份登录,如何授予用户访问特定架构下的特定表的权限。
我试过这个
表 this_schema.my_table 上的 GRANT SELECT TO my_user
但是当我以 my_user 身份登录时,我无法从表中进行选择。我不希望 my_user 有权访问 this_schema 中的任何其他表。
这可能吗?