标签: wrapper

为 NavigableMap 编写同步线程安全包装器

java.util.Collections目前提供以下实用方法来synchronized为各种集合接口创建包装器:

类似地,它也有6个unmodifiedXXX重载。

这里明显遗漏的是 的实用方法NavigableMap<K,V>。确实如此extends SortedMap,但 、 和 也是如此SortedSet extends Set,并且Set extends Collection和都有Collections专用的实用方法。大概是一个有用的抽象,否则它一开始就不会存在,但还没有实用的方法。SortedSetSetNavigableMap

所以问题是:

  • 是否有特定原因Collections不提供实用方法NavigableMap
  • 您将如何编写自己的synchronized包装器NavigableMap
    • 浏览OpenJDK 版本的源代码Collections.java似乎表明这只是一个“机械”过程
      • 一般来说,您是否可以synchronized像这样添加线程安全功能?
      • 如果是这样一个机械过程,可以自动化吗?(Eclipse插件等)
      • 这段代码重复是否必要,或者是否可以通过不同的 OOP 设计模式来避免?

java collections synchronization design-patterns wrapper

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

C Wrapper for C++:如何处理 C++ 模板?

早些时候问的是关于为 c++ 类编写 ac 包装器(C Wrapper for C++),这基本上是清楚的。

还有一个问题:我如何处理 c++ 模板?假设这是我的课程:

 template<typename T> class Temp
 {
      T get(); 
      void set(T t); 
 }
Run Code Online (Sandbox Code Playgroud)

有没有一种优雅的方式来编写 ac 包装器?

c c++ templates wrapper

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

GNUPG:在删除公钥时抑制消息

我正在使用 GNUPG 工具通过命令行执行加密/解密。在删除公钥时,我给出了以下命令:gpg2 --quite --yes --delete-key "Solveon DB"

执行命令后,我收到了从钥匙圈中删除此密钥的问题?(是/否)

我不想问这个问题。你能建议使用哪个选项。我尝试指定指纹,但我无法弄清楚用途。1 小时前 - 还剩 4 天才能回答。我创建了一个 C# 包装器类来使用该工具,但是当使用删除选项时,它会挂起应用程序,等待问题的答案。额外细节

命令链接:我使用了从这个站点下载的软件:http : //www.gpg4win.org/

http://www.linuxguide.it/command_line/linux-manpage/do.php?file=gpg

c# gnupg wrapper

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

在XCode中创建要在Obj-C中使用的C++库

我正在尝试在XCode中用C++创建一个库,我试图在iPhone项目中使用它.我正在使用XCode 4.3.2.由于iOS开发中没有现成的模板来创建C++库,我使用的是Mac OSX - Framework&Library - > C/C++ Library选项.

在这个项目中,我有.h和.cpp文件.我故意想将我的C++代码保存在.cpp文件中,因为它可能稍后在Android或Windows 8上使用.为了将它链接到示例iPhone项目,我已经修改了项目的目标以指向最新的SDK iOS 5.1 ,并使用架构armv6和armv7.

以下是我的.h文件

#ifndef Test_Test_h
#define Test_Test_h
class Test {   --> I get the error here saying unknown type 'class'; did you mean 'Class'?

public:
Test();
~Test();
int addTwoNums(int a, int b);
};


#endif
Run Code Online (Sandbox Code Playgroud)

以下是我的C++库中的.cpp文件

#include <iostream>
#include "Test.h"
Test::Test(){}
Test::~Test(){}
int Test::addTwoNums(int a, int b)
{
return (a + b);
}
Run Code Online (Sandbox Code Playgroud)

现在为了在我的iPhone项目中启用函数调用,我创建了一个在.mm类中嵌入C++对象的包装层,这篇文章由本文提供:http://www.philjordan.eu/article/mixing-objective-c- C++ -和目标c ++

以下是我的包装头文件的实现,它是我单独的iPhone项目的一部分

#import <Foundation/Foundation.h>
@interface TestWrapper : NSObject
-(id)init;
-(int)returnSumFromCpluspus:(int) a …
Run Code Online (Sandbox Code Playgroud)

c++ wrapper objective-c++

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

自定义Web浏览器控件,支持新的CSS3功能

我正在寻找.net框架的自定义Web浏览器控件.

这里有很多,但它们很老,无法顺利运行新的CSS3功能(或者它们根本不能!).例如,AwesomiumWebkit.NET可用,但它们无法运行硬件加速的动画/转换.

但是,新的网络浏览器(Chrome 21,Firefox 15)正在支持这些新功能的平滑和硬件加速.

有没有.Net Web Brower控件支持新的HTML5/CSS3功能?

.net c# browser wrapper

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

在循环中使用Integer会有什么不同吗?

我一直在使用intfor-loop.如下所示:

for (int i = 0; i < 100 ; i++) {
     //Do something...
}
Run Code Online (Sandbox Code Playgroud)

如果我使用Integer而不是int像下面那样,它会有什么不同吗?

for (Integer i = 0; i < 100 ; i++) {
     //Do something...
}
Run Code Online (Sandbox Code Playgroud)

java primitive for-loop wrapper

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

Java包装类具体类型的子类

假设我有一个班级人员如下:

public class Person {
   String name;
   int age;
}
Run Code Online (Sandbox Code Playgroud)

和许多子类,例如

public class Student extends Person {
   // extra fields and methods
}
public class Teacher extends Person {
   // extra fields and methods
}
Run Code Online (Sandbox Code Playgroud)

现在,考虑到对于某些应用程序,我需要为每个 person 实例分配一个整数 id,但我不想扩展接口Person以在其中添加 getId() 和一个用于保存 id 的字段。一个简单的解决方案是使用如下包装器:

public class PersonWrapper extends Person {
    public PersonWrapper(Person p, int id) { // assign the id and other fields }
    public int getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)

这样,客户端代码仍然可以使用 Person 接口,并且可以将包装的人视为一个人。这种方法的问题在于 PersonWrapper 是 Person 的子类,而不是 …

java subclass wrapper

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

Python中不可思议的"除外"加注

请帮助python脚本.Python 2.7.我尝试使用错误检查重复操作的一些功能.所以在我认为的函数中我调用下面(lib_func),没有错误.但是在转发器()中的"除了"以任何方式提升.

如果我不在lib_func()中使用"x" - 它可以正常工作,但我仍然需要在lib_func()中输入参数.

对不起英语不好,并提前感谢您的帮助.

def error_handler():
    print ('error!!!!!!')

def lib_func(x):
    print ('lib_func here! and x = ' + str(x))

def repeater(some_function):
    for attempts in range(0, 2):
        try:
            some_function()
        except:
            if attempts == 1:
                error_handler()
            else:
                continue
    break
return some_function

repeater(lib_func(10))
Run Code Online (Sandbox Code Playgroud)

输出:

lib_func here! and x = 10
error!!!!!!

Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)

python wrapper python-2.7

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

了解Go中的http handlerfunc包装器技术

我看到了Mat Ryer撰写一篇文章,内容涉及如何使用服务器类型和HTTP处理程序类型的包装程序,func(http.ResponseWriter, *http.Request)

我认为这是一种构建REST API的更优雅的方式,但是我完全迷住了使包装器正常运行的想法。我要么在编译时收到类型不匹配的错误,要么在调用时收到404的错误。

这基本上是我目前用于学习的目的。

package main

import(
   "log"
   "io/ioutil"
   "encoding/json"
   "os"
   "net/http"
   "github.com/gorilla/mux"
)

type Config struct {
   DebugLevel int `json:"debuglevel"`
   ServerPort string `json:"serverport"`
}

func NewConfig() Config {

   var didJsonLoad bool = true

   jsonFile, err := os.Open("config.json")
   if(err != nil){
      log.Println(err)
      panic(err)
      recover()
      didJsonLoad = false
   }

   defer jsonFile.Close()

   jsonBytes, _ := ioutil.ReadAll(jsonFile)

   config := Config{}

   if(didJsonLoad){
      err = json.Unmarshal(jsonBytes, &config)
      if(err != nil){
         log.Println(err)
         panic(err)
         recover()
      }
   }

   return config
} …
Run Code Online (Sandbox Code Playgroud)

rest http wrapper go gorilla

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

如何最好地定义/构造/初始化 std::string 包装类

我在 std::string 周围使用了一个包装类,但是初始化/构造它的最简单/最干净/最完整的方法是什么。我需要至少 3 种方式

  • 从字符串文字
  • 从 std::string 右值,避免复制!?
  • 来自 string_view 和 string(是的,复制)

天真的程序员只想将任何构造自动委托给 std::string,但这不是一个特性。

struct SimpleString
{
    SimpleString() = default;
    
    template<typename T>
    SimpleString( T t ) : Text( t ) { }   // <==== experimental
    
    // Alternative: are these OK
    SimpleString( const char* text ) : Text( text ) { }
    SimpleString( std::string&& text ) : Text( text ) { }
    SimpleString( const std::string_view text ) : Text( text ) { }

    std::string Text;
};
Run Code Online (Sandbox Code Playgroud)

抢先注:是的,我想要它,我需要它。用例:调用通用函数,其中 SimpleString 的处理方式与 std::string …

c++ string wrapper

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