我正在寻找运行一些未经验证的脚本(用一种尚未确定的语言编写,但需要基于Java,因此JRuby,Groovy,Jython,BeanShell等都是候选者).我希望这些脚本能够做一些事情并限制做其他事情.
通常,我只是使用Java的SecurityManager并完成它.这非常简单,让我限制文件和网络访问,关闭JVM的能力等等.这对我想要阻止的高级别东西很有效.
但是我想要允许一些东西,但只能通过我提供的自定义API /库.例如,我不想允许直接网络访问打开到yahoo.com的URLConnection,但如果使用MyURLConnection完成,我没关系.那就是 - 我想要允许的一组方法/类,然后我想要的其他一切不受限制.
我不相信这种类型的安全性可以使用标准的Java安全模型来完成,但也许它可以.我对脚本语言本身的性能或灵活性没有特定要求(脚本将通过基本循环/分支对我的API进行简单的过程调用).所以即使是一个"大"的开销来检查每次反射调用的安全检查也没问题.
建议?
可能重复:
String vs StringBuilder
我刚刚重温了一些我曾经拿过VB.NET的书.我不确定我是否已经掌握了这一点,了解StringBuilder是如何/是什么.
使用指南是什么?如果要连接2个字符串或50个字符串,最好使用它吗?
或者当总字符串长度大于128个字符时?
或者,只要您使用它来将字符串添加到一起,您会看到性能优势吗?
在哪种情况下,最好使用StringBuilder实例来构建SQL语句string.format("Select * from x where y = {0}",1)?
总是让我感到震惊的是,声明另一个变量并包含名称空间对小字符串连接不利,但我现在不确定.
对不起,很多文档告诉你要使用什么,而不是什么是最好的.
我试图使用java.util.Date输入,然后用它创建一个查询 - 所以我需要一个java.sql.Date.
我很惊讶地发现它无法隐式或显式地进行转换 - 但我甚至不知道如何做到这一点,因为Java API对我来说仍然是一个新手.
我经常要同时驱动我们的网络电子邮件服务器的备份过程中的内部和外部之间传输大文件>有时50GBs> 100GBs.什么是传输这些文件的最好方法是什么?命令行如XCOPY?也许东西足够强大,如果中断,由于时间的限制或网络问题继续传输.
有没有人知道我可以用来从明文pdf文件中提取文本部分的PDF文件解析器?特别是我想要一种方法能够可靠地提取特定于注释的文本部分?
Delphi,C#RegEx我不介意.
我正在使用git for windows来管理本地项目.我有两个分支,'master'和'change_specific'.我在'change_specific'中添加了一些额外的文件.切换到"master"时,这些文件不显示.我打电话的时候
git merge -m "don't need old branch" master change_specific
Run Code Online (Sandbox Code Playgroud)
git告诉我"已经是最新的了.好啊!".然而,分支似乎有不同的文件.我想删除'change_specific'并完成它,但我担心会消灭我添加的文件 - 这是一件坏事.当我扫描git文档时,似乎有些东西我错过了.发生了什么事,我该怎么办?
我有四面旗帜
Current = 0x1
Past = 0x2
Future = 0x4
All = 0x7
Run Code Online (Sandbox Code Playgroud)
假设我收到了两个标志Past和Future(setFlags(PAST | FUTURE)).我怎么知道它Past是否在里面?同样,我怎么能告诉它Current不在其中?这样我就不必测试每种可能的组合.
我们经常遇到这个问题......
例:
如果我有一个文件,我想将它复制到另一个目录或UNC共享,如果路径的长度超过248(如果我没有记错),那么它会抛出PathTooLongException.这个问题有解决方法吗?
PS:是否有任何注册表设置将此路径设置为更长的字符集?
正如标题所说,我需要编写一个小程序来读取标准输入的数据,对其进行排序,然后将其发送到标准输出.程序应该使用1个参数来告诉它一条记录有多长(以字节为单位).这是我测试它的方式:
printf 'D\x00C\x00\x00B\x00A' | ./binsort 2 | od -c
Run Code Online (Sandbox Code Playgroud)
以上应输出如下内容:
0000000 \0 A \0 B C \0 D \0
0000010
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止(binsort.c):
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
using namespace std;
void print_usage()
{
printf("%s\n", "Usage: ");
}
int compare (const void * a, const void * b) // the compare function for qsort... might need some work
{
return ( *(int*)a - *(int*)b );
}
int main(int argc, char *argv[])
{
if (argc != 2 || stdin == …Run Code Online (Sandbox Code Playgroud)