小编kwi*_*ver的帖子

在Jersey测试呼叫上设置查询参数

我有一个基于Jersey的Java servlet:

@Path("foo")
class Foo {
  @GET
  @Path("bar")
  public Response bar(@QueryParam("key") String value) {
    // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以在Tomcat中称它为:

http://localhost:8080/container/foo/bar?key=blah
Run Code Online (Sandbox Code Playgroud)

但是,在我的JerseyTest中,使用Grizzly,它没有正确处理参数.此测试用例返回404错误:

@Test
public void testBar() {
  final Response response = target("foo/bar?key=blah").request().get();
}
Run Code Online (Sandbox Code Playgroud)

我怀疑问题是它正在寻找一个名为资源foo/bar?key=blah而不是试图传递key=blah给资源的资源foo/bar.如果我只是传递"foo/bar"target(),我得到一个500,因为代码抛出一个null参数的异常.

我查看了Jersey测试文档,以及一些示例,我发现了一些可能用于将参数传递给GET的神秘内容,但没有一个看起来像是为参数赋值,所以我并不积极如何我会用它.

如何将该值传递给该参数?

java jersey grizzly jersey-2.0

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

找到最小的重叠作业集

一位朋友给了我一个谜题,他说可以比O(n ^ 3)时间更好地解决.

给定一组n个作业,每个作业都有一个设定的开始时间和结束时间(重叠是非常可能的),找到每个作业包含该作业或包含与该作业重叠的作业的最小子集.

我非常确定最佳解决方案是选择具有最多未标记重叠的作业,将其添加到解决方案集,然后标记它及其重叠.并重复,直到所有作业都被标记.
确定哪个作业具有最多未标记的重叠是一个简单的邻接矩阵(O(n ^ 2)),每次选择作业时都必须重做,以便更新标记,使其成为O(n ^ 3) ).

有更好的解决方案吗?

puzzle algorithm

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

访问单元测试中的资源

我正在使用JUnit 4,Java 8和Gradle 1.12.我有一个我需要加载的默认json文件.我的项目有src/main/java/(包含项目源),src/main/resources/(空),src/test/java/(单元测试源)和src/test/resources/(要加载的json数据文件)目录.该build.gradle文件位于根目录中.

在我的代码中,我有:

public class UnitTests extends JerseyTest
{
  @Test
  public void test1() throws IOException
  {
    String json = UnitTests.readResource("/testData.json");
    // Do stuff ...
  }

  // ...
  private static String readResource(String resource) throws IOException
  {
    // I had these three lines combined, but separated them to find the null.
    ClassLoader c = UnitTests.class.getClassLoader();
    URL r = c.getSystemResource(resource); // This is returning null. ????
    //URL r = c.getResource(resource); // …
Run Code Online (Sandbox Code Playgroud)

java junit4 gradle

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

将活动指示符添加到导航栏

我有一个视图控制器,当用户点击按钮时启动异步网络请求,然后在请求完成后推送另一个控制器.在那个介入时间,我希望导航栏显示活动指示器,以便用户知道它正在获取数据.我在按钮的IBAction中有这个代码:

self.activityIndicator = [[UIActivityIndicatorView alloc]
     initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite]; 
     // I've tried Gray, White, and WhiteLarge
[self.activityIndicator startAnimating];
self.activityIndicator.hidden = NO;
UIBarButtonItem* spinner = [[UIBarButtonItem alloc] initWithCustomView: self.activityIndicator];
self.navigationItem.rightBarButtonItem = spinner;
Run Code Online (Sandbox Code Playgroud)

该指标未出现,但此代码被调用.我看过关于这个主题的其他帖子,他们说要做到这一点.在通话期间,UI线程不会被阻止(我可以点击其他按钮并在等待时导航不同的路径).我错过了什么吗?

uinavigationcontroller uinavigationitem uiactivityindicatorview ios

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

自制的门锁不锁

我为一个项目创建了以下代码,我无法访问任何现代C++线程库,如boost.我的愿望是能够让锁在离开范围时自动释放.

共享锁可以正常工作.如果一个线程获得它,则在第一个线程释放它之前,其他任何东西都无法获取它.但是Scoped不起作用.

这是一些显示我的意思的输出.我给每个线程一个不同的名称,让他们用相同的共享锁实例化Scoped锁,打印'获得',睡眠五秒钟,打印'释放',然后离开范围.我没有获得我期望的获得/释放对,而是快速连续获得四个'获得/释放,五秒差距,然后'释放'.我甚至将Scoped中的锁定更改为指针,并在获取之前打印地址,以确保我没有疯狂.看起来它是相同的共享对象,但锁不会阻止多次访问.

Lock '140734928395200'.
acquired: !!!!!
Lock '140734928395200'.
acquired: -------
Lock '140734928395200'.
acquired: ***************
Lock '140734928395200'.
acquired: ##
released: !!!!!
released: -------
released: ***************
released: ##
Run Code Online (Sandbox Code Playgroud)

这是Lock.h的源代码:

#include <pthread.h>
namespace Lock
{
  class Shared
  {
  public:
    Shared()
    {
      ::pthread_mutex_init(&(this->mutex), nullptr);
    }
    ~Shared()
    {
    }
    void acquire()
    {
      ::pthread_mutex_lock(&(this->mutex));
    }
    void release()
    {
      ::pthread_mutex_unlock(&(this->mutex));
    }
  private:
    pthread_mutex_t mutex;
  };
  class Scoped
  {
  public:
    Scoped(Lock::Shared& lock) : lock(lock)
    {
      this->lock.acquire();
    }
    virtual ~Scoped()
    {
      this->lock.release();
    }
  private:
    Lock::Shared& lock;
  };
}; …
Run Code Online (Sandbox Code Playgroud)

c++ pthreads

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

当用户点击行时,表格视图在导航栏下滑动

我有一个UINavigationController(NC)包含UITableViewController(TVC0).当用户点击一行时,它会加载一个UIPageViewController(PVC),它在其他UITableViewControllers(TVC1)之间来回翻页.

TVC0显示在NC内部(意味着它不会隐藏在顶部的导航栏或底部的标签栏后面).当它推动PVC时,第一个TVC1出现在导航栏和标签栏的边界内.但是当我滑动时,里面的TVC1隐藏在导航栏和标签栏后面.我可以拉出来揭示内容,但当我释放时,它会快速回到栏后面.

如何强制一切出现在两个酒吧之间?我不能使用故事板(因为它是一个遗留应用程序)并且嵌入...选项不可用.

[编辑]

我添加了一些日志记录,发现我的嵌入式TVC1s帧的绝对原点为0,64,但是一旦点击,它就会变为0,0.如果我找不到真正的解决方案,我总是可以伪造它通过添加64,但我更想弄清楚实际上是错的.

[/编辑]

[更多编辑]

我正在测试iOS 6模拟器中的另一个区域,并发现这个分页在iOS 6中运行完美.所以我看到的问题是iOS 7特定的.

[/更多编辑]

这是我的TVC0 viewDidLoad,PVC pageViewController:viewControllerBeforeViewController:和帮手viewControllerAtIndex::

- (void) viewDidLoad
{
    [super viewDidLoad];
    NSDictionary* options = [NSDictionary dictionaryWithObject:
                             [NSNumber numberWithInteger: UIPageViewControllerSpineLocationMin]
                                                        forKey:
                             UIPageViewControllerOptionSpineLocationKey];
    self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:
                           UIPageViewControllerTransitionStyleScroll
                                                          navigationOrientation:
                           UIPageViewControllerNavigationOrientationHorizontal
                                                                        options: options];

    self.pageController.dataSource = self;
    self.pageController.view.frame = self.view.frame;
    NSArray* viewControllers =
            [NSArray arrayWithObject: [self viewControllerAtIndex: self.initialIndex]];

    [self.pageController setViewControllers: viewControllers
                                  direction: UIPageViewControllerNavigationDirectionForward
                                   animated: NO
                                 completion: nil];

    [self addChildViewController: self.pageController];
    [self.view …
Run Code Online (Sandbox Code Playgroud)

uitableview uinavigationcontroller ios uipageviewcontroller

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

初始化模板类的静态模板化成员

我有以下代码片段,但它不起作用.dataMap成员应该包含一个回调函数,该函数在适当的时候将T&和T传递给回调函数.该模板构件初始化失败(用克++ 4.7.2)其中:error: need ‘typename’ before ‘MyClass<T>::DataMap’ because ‘MyClass<T>’ is a dependent scope.我尝试将typename粘贴在它所说的位置,但后来又出现了一个不同的错误:error: expected primary-expression before ‘;’ token.是否可以这样做,或者我是否需要从初始化中删除typedef?我尝试沿着这条路走下去,但它很快就难以辨认,并且吐出了更多的错误.

template <typename T> class MyClass
{
public:
  typedef void(*CallbackType)(T&);
  typedef std::unordered_map<int, std::pair<T, CallbackType>/**/> DataMap;
  static DataMap dataMap;
  ...
};

template <typename T> MyClass<T>::DataMap MyClass<T>::dataMap = MyClass<T>::DataMap;
Run Code Online (Sandbox Code Playgroud)

c++ templates static-members

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