从这个网站我有这个代码片段:
>>> from Crypto.Cipher import AES
>>> obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> list(bytearray(ciphertext))
[214, 131, 141, 100, 33, 86, 84, 146, 170, 96, 65, 5, 224, 155, 139, 241]
Run Code Online (Sandbox Code Playgroud)
当我接受这个数组并将其转换为Ruby中的String并继续解密时,会发生错误:
>> require 'openssl'
=> true
>> obj2 = OpenSSL::Cipher::Cipher.new("AES-128-CBC")
=> #<OpenSSL::Cipher::Cipher:0x007fa388389b30>
>> obj2.decrypt
=> #<OpenSSL::Cipher::Cipher:0x007fa388389b30>
>> obj2.key = 'This is a key123'
=> "This is a key123"
>> obj2.iv = …Run Code Online (Sandbox Code Playgroud) 在程序开始时,我为一个char指针数组分配内存:
char **buffer = calloc( 20, sizeof(char *) );
然后用户最多可以输入20个单词:
buffer[i] = calloc( 40, sizeof(char) );
fgets( buffer[i], 40, stdin )`
Run Code Online (Sandbox Code Playgroud)
之后我想对这个数组进行排序.如果我使用我的交换函数,它按预期工作如下:
void swap(char *args1, char *args2) {
char tmp[40];
strcpy( tmp, args1 );
strcpy( args1, args2 );
strcpy( args2, tmp );
}
void sort( char **args, int count ) {
...
swap( args[i], args[j] );
...
}
Run Code Online (Sandbox Code Playgroud)
仔细思考后,我注意到这是浪费CPU,因为我所要做的只是将指针重定向到相应的字符串.所以我重写了我的交换功能:
void swap(char **args1, char **args2) {
char *tmp = *args1;
*args1 = *args2;
*args2 = tmp;
}
void sort( char **args, …Run Code Online (Sandbox Code Playgroud) 我正在使用Windows 8,64位 - 我最近安装了Git以在这台计算机上使用它.但是,无法克隆任何存储库.退出时会显示以下消息:
$ git clone ssh://me@some.address.com/some/git/repository.git
Cloning into 'repository'...
error: Unable to create c:/Users/Danyel/workspace/repository/.git/HEAD
Run Code Online (Sandbox Code Playgroud)
当我cmd以管理员身份打开并尝试相同的命令时,它会成功(cmd正常用户就像使用Git Bash一样失败):
C:\Users\Danyel\workspace>git clone ssh://me@some.address.com/some/git/repository.git
Cloning into 'repository'...
remote: Counting objects: 221, done.
remote: Compressing objects: 100% (195/195), done.
remote: Total 221 (delta 34), reused 167 (delta 15)
Receiving objects: 100% (221/221), 9.23 MiB | 1.38 MiB/s, done.
Resolving deltas: 100% (34/34), done.
Checking connectivity... done
Run Code Online (Sandbox Code Playgroud)
我正在使用这个版本的Git: Git-1.8.4-preview20130916
欢迎任何帮助或线索!我检查了权限并拥有父文件夹("repository",".git")的所有权.还有什么呢?
编辑:
GIT_TRACE选项也没有提供任何关于它的线索:
$ GIT_TRACE=2 git clone ssh://me@some.address.com/some/git/repository.git
trace: built-in: git 'clone' …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种匹配多行Parslet的方法.代码如下所示:
rule(:line) { (match('$').absent? >> any).repeat >> match('$') }
rule(:lines) { line.repeat }
Run Code Online (Sandbox Code Playgroud)
但是,lines总是会以无限循环结束,因为match('$')它将无休止地重复以匹配字符串的结尾.
是否可以匹配多个可以为空的行?
irb(main)> lines.parse($stdin.read)
This
is
a
multiline
string^D
Run Code Online (Sandbox Code Playgroud)
应该匹配成功.我错过了什么吗?我也试过,(match('$').absent? >> any.maybe).repeat(1) >> match('$')但这与空行不匹配.
此致,
Danyel.
我们采取以下声明:
int d0, d1;
int[] ds = {0, 0};
Run Code Online (Sandbox Code Playgroud)
现在一个线程有以下说明:
d0++;
d1++;
Run Code Online (Sandbox Code Playgroud)
而另一个线程有这个指令:
ds[1] = d1;
ds[0] = d0;
Run Code Online (Sandbox Code Playgroud)
如果我们并行运行这些线程,显然有三种组合ds可能看起来像:{0,0},{1,1}和{1,0}.
现在最大的问题是:还能有{0,1}吗?编译器/ JVM是否可以简单地交换指令,因为它认为它们是无关的?如果是,那么这种行为的"规则"到底是由编译器还是JVM决定的?
有没有办法可以获得函数的字符串表示?
val f = List(1, 2, 3, 4, 66, 11).foldLeft(55)_
f是一个类型的函数((Int, Int) => Int) => Int,这将是我正在寻找的表示,但我无法在任何地方找到它.
toString当然,这个方法是我的第一次尝试,但它返回的只是<function1>.scala REPL做得对,文档也是如此.一定有办法吗?
问候.
我编写了一个解析命令行参数的程序或算法.首先,需要指定有效的参数及其属性(标志,分隔符等).
现在,我有一个辅助函数返回:: Tuple<Tuple<Argument, String>, String>元组中的第一个元素(也是一个元组)包含一个"键值对",null如果找不到对.第二个元素包含一个被标识为选项的字符串,而分隔符是" "(意味着该值将是命令行中的下一个元素)
该函数的代码如下:
private Tuple<Tuple<Argument, String>, Argument> f(string e, List<Argument> valid) {
var p = valid.Find( x => { return e.StartsWith( x.value ); } );
if ( p == null )
return new Tuple<Tuple<Argument, String>, Argument>( null, null );
if ( p.flag )
return new Tuple<Tuple<Argument, String>, Argument>( new Tuple<Argument, String>( p, "" ), null );
if ( p.separator.Equals(" ") && p.value.Length == e.Length )
return new Tuple<Tuple<Argument, String>, Argument>( null, …Run Code Online (Sandbox Code Playgroud) 首先,我使用Scala,但任何Java方法都可能有效.
我有一个数据库连接的应用程序,我想运行我的测试和开发我的应用程序,而无需修改数据库或数据库是否脱机.
说,我有一个连接到数据库的大型类(或模块),做你想做的所有事情,我如何从外部访问该类或其参数?
例如,如果我希望类正常运行但不是statement.executeUpdate( sql ),我想要一个println( "Did: " + sql ),在这个测试中没有第一个方法被调用.
显然,一种方法是简单地替换这些语句 - 或复制整个文件并替换它们.但这很容易出错,如果我改回来,我可能会忘记一些事情.此外,它非常多余.
如何解决这个问题?怎么做JUnit?
免责声明:请不要使用"参数化课程"等解决方案.我希望我的构造函数只有很少的参数,我不想在我调用它时指定所有内容.测试类在我的应用程序中是二等公民,它们对实际的类/实际开发几乎没有影响.
我一直在拼命寻找互联网上的解决方案...但我没有比功能更进一步glDrawArrays.我不知道如何使用它,或者为什么它不起作用...我想渲染我使用ObjLoader加载的模型的多边形线(或顶点线).相反,它一直向我显示白色边框.
我正在使用libgdx 1.0.0.
这是我的代码:
public class Teapot extends ApplicationAdapter {
ModelBatch batch;
ModelInstance m;
Camera cam;
CameraInputController camController;
Environment environment;
@Override
public void create () {
batch = new ModelBatch();
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(0, 0, 5f);
cam.lookAt(0,0,0);
cam.position.add(0, 2, 0);
cam.near = 1f;
cam.far = 100f;
cam.update();
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
Model model = new ObjLoader().loadModel(Gdx.files.internal("teapot.obj"), true); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建程序来构建链接列表,但它在创建第二个错误时给出了分段错误.
[root @vm c_prog] #vi link1.c
#include <stdio.h>
#include <stdlib.h>
struct node {
int x;
struct node *next;
};
int main () {
int d;
struct node *root;
struct node *current;
root = malloc(sizeof(struct node));
current = root;
printf ("Location of root is %p \n", root);
d = 1;
while (d>0){
printf ("Enter the value of X: ");
scanf ("%d", ¤t->x);
printf ("value of x is stored\n");
printf ("Location of current is %p \n", current);
printf ("Value of X in …Run Code Online (Sandbox Code Playgroud) http://play.golang.org/p/xFBSZta2CL
我现在已经尝试了2个小时了.进入主要功能,我们立即进入24-26行:
prompter.Define(&Field{"name"})
prompter.Define(&Field{"age"})
Run Code Online (Sandbox Code Playgroud)
define函数:
fmt.Printf("fields: %+v\n", c.fields)
c.fields = append(c.fields, f)
fmt.Printf("fields: %+v\n", c.fields)
Run Code Online (Sandbox Code Playgroud)
函数调用后,c.fields数组再次为空!!! 输出:
fields: []
fields: [0x1040a120]
fields: []
fields: [0x1040a130]
Run Code Online (Sandbox Code Playgroud) 我正在编写一个库,我想将一个非特定类型的数组(或写入数组)返回给调用者.类型可以根据谁调用而变化 - 但是,我可以在我的函数中创建所述类型的所有对象.一种方法是调用者创建一个数组并且被调用者填充它 - 但是,没有办法知道这个数组将会有多长.(有没有办法让被叫方使调用者的数组更大?记住,被调用者只看到x interface{}......)
我选择的另一种方式,因为我看不出上面的可能性,是调用者给了我特定类型的指针,然后我将它重定向到我创建的对象数组.
以下是我的解决方案.我的问题:函数调用后为什么数组为空?它们在我的操作后指向同一个数组,它们应该是相同的.我忽略了什么吗?我想过GC,但它不会那么快,不是吗?
http://play.golang.org/p/oVoPx5Nf84
package main
import "unsafe"
import "reflect"
import "log"
func main() {
var x []string
log.Printf("before: %v, %p", x, x)
manipulate(&x)
log.Printf("after: %v, %p", x, x)
}
func manipulate(target interface{}) {
new := make([]string, 0, 10)
new = append(new, "Hello", "World")
log.Printf("new: %v, %p", new, new)
p := unsafe.Pointer(reflect.ValueOf(target).Pointer())
ptr := unsafe.Pointer(reflect.ValueOf(new).Pointer())
*(*unsafe.Pointer)(p) = ptr
}
Run Code Online (Sandbox Code Playgroud)