问题列表 - 第20043页

来自JDK 1.6的JavaCompiler:如何将类字节直接写入byte []数组?

所以我最近了解到JDK 1.6中提供的新JavaCompiler API.这使得直接从运行代码编译String.class文件变得非常简单:

String className = "Foo";
String sourceCode = "...";

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

List<JavaSourceFromString> unitsToCompile = new ArrayList<JavaSourceFromString>() 
    {{ 
         add(new JavaSourceFromString(className, sourceCode)); 
    }};

StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
compiler.getTask(null, fileManager, null, null, null, unitsToCompile).call();
fileManager.close();    

ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(className + ".class");
IOUtils.copyStream(fis, bos);

return bos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

您可以JavaSourceFromStringJavadoc获取源代码.

这将非常方便地编译sourceCodeFoo.class当前工作目录中.

我的问题是:是否可以直接编译到byte[]数组,并避免File完全处理I/O 的混乱?

java compilation in-memory jsr199

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

安全软件许可证使用审核日志

伙计们,

我们有一个有趣的技术挑战.如何编写一个跟踪软件使用情况的安全审计文件,以便许可证费用可以根据使用情况进行,从而使那些使用它的人更容易负担得起.

具体来说,TickZoom为对冲基金出售alpha代交易平台,目前每月需要2000美元才能获得许可,包括支持(将很快增加到两倍以上).这对机构来说很好,但对个人来说太贵了.个人经常要求更低的价格换取使用软件赚取的利润的百分比,直到他们能够支付固定费用为止.

我们喜欢这个提议.但我们需要一种可靠的方法来审核平台上实际产生的利润,以及通过删除或覆盖审计文件来阻止用户"游戏"它的方法,从而报告收益低于实际收益.

此应用程序是用C#编写的,系统的这一部分是混淆的,至少使解密代码变得困难.

另一个要求是针对每次发生的交易写入文件,以便在用户认为总费用存在差异的情况下允许更深入的审核.这样,个人贸易利润可以与经纪人的陈述进行比较.

当然,假设文件将被加密.

但任何关于如何使其"防篡改"的想法?特别是针对简单的删除尝试?

我的第一个猜测是让软件始终需要一个预先存在的审计文件,否则它将拒绝运行.

然后,当我们交付软件时,它会打包一个"空"审计文件,但事实上,它有某种防篡改验证.

用户可能试图"篡改"文件的下一个显而易见的技术是让某人简单地备份原始的"空"文件,然后用它来覆盖审计文件,从而欺骗系统认为这是一个新的开始.

也许这可以通过包含某种"最后更新时间戳"和到期时间来解决.

此外,欢迎完全不同的解决方案想法.在这种情况下,我们可能会被迫添加"电话回家"功能,以便交易记录到我们的中央服务器.但这似乎是不利的,并可能在关键任务应用程序中增加另一个失败点.一般来说,他们非常不喜欢"手机之家"功能,原因很明显.

真诚的,Waynek

c# security audit cracking

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

替代HTML中的<table>布局

所以现在我的网页设置与浏览器窗口的大小完全相同overflow:scroll.基本上页面排列在两列和三行表中.我不想使用表格进行样式/格式化,所以我的问题是如何进行此迁移.

我的页面(简而言之):

<table>
<tr>
    <td>
        <div style="overflow:scroll;">
            <div>
                stuff1
            </div>
            <div>
                stuff1A
            </div>
        </div>
    </td>
    <td>
        <div style="overflow:scroll;">
            <div>
                stuff2
            </div>
            <div>
                stuff2A
            </div>
        </div>
    </td>
</tr>
<tr>
    <td>
           <input type="submit"><input type="submit"><input type=    "submit">
    </td>
    <td>
           <input type="submit"><input type="submit"><input type="submit">
    </td>
</tr>
<tr>
    <td>
    <textarea>stuff3</textarea></td>
    <td><select multiple>
        </select></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

问题本质上是我想嵌套<div>而不<div>在换行符上放置第二个嵌套:

<div style="overflow:scroll;"> <div>stuff4</div><div>stuff4A</div> </div>
<div style="overflow:scroll;"> <div>stuff5</div><div>stuff5A</div> </div>
Run Code Online (Sandbox Code Playgroud)

我希望上面显示在同一行上的两个可滚动区域,我不能使用,<textarea>因为文本需要多种颜色(请参阅提供的链接).对于那些感兴趣的人,该页面最终将成为大学CS部门完全在浏览器内即时消息技术支持系统的工作人员.

html html-table

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

WCF - 行为和合同之间的区别?

在WCF中,行为合同之间有什么区别?从检查配置文件,两者似乎都指向服务功能的接口.为什么他们都需要?

wcf

15
推荐指数
3
解决办法
2万
查看次数

Java:回滚数据库更新?

我有三个方法,一起将节点保存到数据库.目前,除非所有写入都成功,否则这不会达到不提交更改的预期效果.

    conn.setAutoCommit(false);
    writeNodeTable(node, newNodeNID);
    writeContentTypeBoutTable(node, newNodeNID);
    writeTerms(node, newNodeNID);
    conn.commit();
Run Code Online (Sandbox Code Playgroud)

如果在第二种或第三种方法中存在问题(例如抛出未捕获的异常),我想回滚所有更改.有什么方法可以使用交易来做到这一点?

这是一个这样的DB写入功能:

private void writeTerms(DrupalNode node, int newNodeNID) throws SQLException {
    String sql = "INSERT INTO term_node (nid, vid, tid) VALUES (?, ?, ?)";
    PreparedStatement prep = conn.prepareStatement(sql);
    prep.setInt(1, newNodeNID);
    prep.setInt(2, newNodeNID);

    String schoolName = termHelp.schoolOfAgainst(node.get(BoutField.against));
    prep.setString(3, schoolName);

    prep.execute();

    String fencerName = termHelp.fencerOfAgainst(node.get(BoutField.against));
    prep.setString(3, fencerName);
    prep.execute();
    prep.close();
}
Run Code Online (Sandbox Code Playgroud)

java mysql database transactions

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

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

CSS中有多少和哪些值可以/应该是无单位的

我知道两个

  • 保证金 {0 自动}
  • 行高:1.5;

还有其他的吗?

css

3
推荐指数
2
解决办法
2547
查看次数

难以在flex/lex中获得c风格的评论

我想在flex中制定规则来使用像/**/这样的c风格的注释

我有以下内容

c_comment "/*"[\n.]*"*/"
Run Code Online (Sandbox Code Playgroud)

但它永远不会匹配.知道为什么吗?如果您需要更多我的代码请告诉我,我会提交整件事.感谢任何回复的人.

flex-lexer

29
推荐指数
3
解决办法
2万
查看次数

用boost.spirit 2存储表达式的行号

我正计划使用Boost.Spirit 2进行脚本转换实用程序(用于扩展诊断信息).

虽然支持行信息等解析错误,但我如何使用Qi存储成功解析的表达式的行号?

c++ boost boost-spirit

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

Java:对泛化类进行子类化

我有一个泛化类,我希望子类如下:

public class SomeTable<T extends BaseTableEntry>
    extends BaseTable<T>
{

    public SomeTable(int rows, int cols)
    {
        super(rows, cols, SomeTableEntry.class);
        //Does not compile:
        //Cannot find symbol: constructor BaseTable(int, int, java.lang.Class<blah.blah.SomeTableEntry.class>)
    }
}
Run Code Online (Sandbox Code Playgroud)

...通用化超类的位置是:

public class BaseTable<T extends BaseTableEntry>
{

    public BaseTable(int rows, int cols, Class<T> clasz)
    {
        ...
    }
...
}
Run Code Online (Sandbox Code Playgroud)

我理解编译器错误,但似乎找不到解决方法,只是在SomeTable构造函数中包含一个额外的参数.

有什么建议?

谢谢!

java generics subclass java.lang.class

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