小编Oak*_*Oak的帖子

什么时候在C#中有用的值类型/引用类型约束?

我正在寻找简单的示例来演示值类型/引用类型约束何时有用.

... where T : struct  // when is this useful?
... where T : class   // and what about this?
Run Code Online (Sandbox Code Playgroud)

我记得过去看过一些非常好的例子,但我找不到它们.

c# generics constraints

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

从Java解析LLVM bitcode

有没有办法在我的Java应用程序中解析LLVM bitcode?换句话说,是否有任何库具有Java绑定并且可以解析LLVM bitcode,然后我可以使用某些DOM或任何其他方式访问它?

请注意,我并没有尝试将LLVM bitcode转换为Java字节码,只是尝试将LLVM bitcode解析为Java的一些可行表示.

java llvm

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

如何编写可中断的方法

我有一种方法,从概念上看,它看起来像:

Object f(Object o1) {
    Object o2 = longProcess1(o1);
    Object o3 = longProcess2(o2);
    return longProcess3(o3);
}
Run Code Online (Sandbox Code Playgroud)

过程本身也可能是复合的:

Object longProcess1(Object o1) {
    Object o2 = longSubProcess1(o1);
    return longSubProcess2(o2);
}
Run Code Online (Sandbox Code Playgroud)

等等,不同的过程可能存在于不同的模块中.大多数进程都很长,因为它们计算成本高,而不是IO绑定.

到目前为止f一切都那么好,但现在我想整体上是可以打断的.推荐的Java方法是定期检查中断标志Thread.interrupted().它非常简单,但如果我需要将我的方法更改为以下内容,它很快就会变得很麻烦:

Object f(Object o1) {
    Object o2 = longProcess1(o1);
    if (Thread.interrupted()) throw new InterruptedException();
    Object o3 = longProcess2(o2);
    if (Thread.interrupted()) throw new InterruptedException();
    return longProcess3(o3);
}

Object longProcess1(Object o1) {
    Object o2 = longSubProcess1(o1);
    if (Thread.interrupted()) throw new InterruptedException();
    return longSubProcess2(o2);
}

...
Run Code Online (Sandbox Code Playgroud)

现在,我确实理解了这样工作的理性 …

java multithreading interrupt

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

从远程git存储库获取单个文件

有没有办法以编程方式从Java远程git存储库下载单个文件?

  1. 我更喜欢使用尽可能少带宽的解决方案,最好只下载该单个文件.我不需要浏览存储库,我已经有了文件的路径.
  2. 我更喜欢不依赖于其他应用程序的解决方案(例如,在机器上安装另一个git客户端).包含git客户端实现本身的Java库将是最佳的.

我能够使用SVNKit做一些与Subversion类似的东西,我已经看到有一个纯粹的java实现的git(eclipse的JGit)可能能够做类似的事情,所以我希望有一个肯定的答案; 虽然从我对git如何工作的理解 - 只允许来自本地存储库的更新 - 这可能证明是有问题的.

java git download jgit

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

使用上下文菜单添加数字 - Eclipse GEF

所有,

我正在创建一个调色板少eclipse插件,通过上下文菜单向自定义编辑器添加数字,但我找不到方法.任何人都可以指导我如何通过上下文菜单动态添加数字到编辑器,即添加动作/命令.


由于Eclipse GEF插件开发发现了更少的示例,我正在添加我的解决方案,以便其他人发现它很有用.此代码有助于将节点呈现给编辑器.

Action类的源代码,用于向编辑器呈现数字:

public class AddNodeAction extends EditorPartAction
{
 public static final String ADD_NODE = "ADDNODE";

 public AddNodeAction(IEditorPart editor) {
  super(editor);
            setText("Add a Node");
            setId(ADD_NODE);     // Important to set ID
 }

 public void run()
 {
  <ParentModelClass> parent=  (<ParentModelClass>)getEditorPart().getAdapter(<ParentModelClass>.class);

  if (parent== null)
   return;
  CommandStack command = (CommandStack)getEditorPart().getAdapter(CommandStack.class);

  if (command != null)
  {
   CompoundCommand totalCmd = new CompoundCommand();
   <ChildModelToRenderFigureCommand>cmd = new <ChildModelToRenderFigureCommand>(parent);
   cmd.setParent(parent);
   <ChildModelClass> newNode = new <ChildModelClass>();
   cmd.setNode(newNode);
   cmd.setLocation(getLocation()); // Any location you wish to set to
   totalCmd.add(cmd);
   command.execute(totalCmd); …
Run Code Online (Sandbox Code Playgroud)

java eclipse-gef

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

在Java中创建对象时会发生什么?

我的老师给了我一个问题:

"用Java创建对象时会发生什么".

据我所知,在创建对象时会发生内存分配,变量初始化和构造函数方法调用.

但我的老师说我几乎是对的.除了内存堆之外,后来的两件事情是正确的.相反,他说内存分配发生了.我认为该对象存储在堆中,所以我的老师错了.你这么认为吗?

java memory object

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

如何从函数中获取调试信息?

我已经使用Clang来编译一个启用了调试信息的函数.对于Instructions来说,这是方便的getDebugLoc(),但对于s来说没有这样的东西Function.给定一个Function实例,我如何才能获得调试信息(我在猜测DISubProgram形式)?

我已经看到指南条目解释了如何表示调试信息,元数据确实包含一个返回函数的链接,但显然没有回链接.我应该迭代模块中的所有元数据吗?

llvm llvm-ir

5
推荐指数
3
解决办法
1320
查看次数

在llvmlite中链接C

我用Python编写了一个编译器,llvmlite用于生成中间LLVM IR。Lexer和解析器已完成,现在我正在执行代码生成。编译器将是动态的且类型微弱的,因此我将需要在运行时做一些事情,例如分配。为此,我已经在C语言中实现了一些功能,现在我想使用builder.callllvmlite 调用这些功能。

我还没有找到文档或如何执行此操作的示例。

这个函数只是一个简单的例子,实际的函数要大得多。

C:

int some_function(int a)
{
     return a + 4;
}
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

...

    main_ty = ir.FunctionType(ir.IntType(32), [])
    func = ir.Function(module, main_ty, 'main')
    block = func.append_basic_block('entry')
    builder = ir.IRBuilder(block)

    # I want to do something like this...

    ret = builder.call(some_function, [ir.Constant(ir.IntType(32), 34)]);

...
Run Code Online (Sandbox Code Playgroud)

我可以使用llvmlite构建器直接编写函数,但是用C语言可以更加快捷,简洁和方便。欢迎任何帮助!

c python compiler-construction llvm llvmlite

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

RenderScript是否支持递归?

OpenCL不支持递归.CUDA确实如此,但仅限于某个版本.最初的搜索显示的renderScript 支持递归,但我找不到任何明确的.

RenderScript是否支持递归函数调用?

renderscript

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

我可以从 devtools 控制台截取屏幕截图吗?

Chrome Devtools 有一个“命令菜单”( Ctrl++ Shift) p,它提供了对站点/所选节点进行屏幕截图的功能。有没有办法通过 devtools 控制台访问此功能?

google-chrome-devtools

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