javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

.net-使用IDisposable取消订阅事件

我有一个处理来自WinForms控件的事件的类。 根据用户的操作,我要延迟该类的一个实例,并创建一个新的实例来处理同一事件。 我需要先从事件中取消订阅旧实例-足够容易。 如果可能的话,我想以非专有的方式进行此操作,这似乎是IDisposable的工作。 但是,大多数文档仅在使用非托管资源时才建议使用IDisposable,但此处不适用。

如果我实现IDisposable并在Dispose()中取消订阅该事件,是否会改变其意图? 我应该改为提供Unsubscribe()函数并调用它吗?


编辑:这是一些伪代码,显示我在做什么(使用IDisposable)。 我的实际实现与某些专有数据绑定(长话短说)有关。

class EventListener : IDisposable
{
    private TextBox m_textBox;

    public EventListener(TextBox textBox)
    {
        m_textBox = textBox;
        textBox.TextChanged += new EventHandler(textBox_TextChanged);
    }

    void textBox_TextChanged(object sender, EventArgs e)
    {
        // do something
    }

    public void Dispose()
    {
        m_textBox.TextChanged -= new EventHandler(textBox_TextChanged);
    }
}

class MyClass
{
    EventListener m_eventListener = null;
    TextBox m_textBox = new TextBox();

    void SetEventListener()
    {
        if (m_eventListener != null) m_eventListener.Dispose();
        m_eventListener = new EventListener(m_textBox);
    }
}

在实际的代码中,更多地涉及“ EventListener”类,并且每个实例都是唯一的。 我在集合中使用它们,并在用户单击时创建/销毁它们。


结论

至少目前,我接受gbjbaanb的回答。 我觉得使用熟悉的界面的好处胜于不涉及任何非托管代码的使用它的任何弊端(该对象的用户怎么会知道呢?)。

如果有人不同意-请发表/评论/编辑。 如果可以对IDisposable提出更好的论据,那么我将更改接受的答案。

trans by 2020-02-29T11:46:34Z

javascript-如何在jquery ajax成功回调函数中传递上下文

var Box = function(){
    this.parm = {name:"rajakvk",year:2010};
    Box.prototype.jspCall = function() {
        $.ajax({
            type: "post",
            url: "some url",
            success: this.exeSuccess,
            error: this.exeError,
            complete: this.exeComplete
        });
    }
    this.exeSuccess = function(){
        alert(this.parm.name);
    }
}

我没有在exeSuccess方法中获取Box对象。 如何在exeSuccess方法内传递Box对象?

trans by 2020-02-29T11:44:31Z

android-gradle组装和gradle构建任务之间有什么区别?

如果我没有记错,那么gradle assemblegradle assembleDebuggradle assembleRelease确实可以运行,但是我相信gradle build也可以做到相同,那么两者之间有何不同?

trans by 2020-02-29T11:40:45Z

控制反转-IoC之上的抽象工厂模式?

我决定在更大的项目中使用IoC原则。 但是,我想弄清楚困扰我很长一段时间的事情。 我得出的结论是,IoC容器是一种架构模式,而不是一种设计模式。 换句话说,没有一个类应该知道它的存在,并且应该在应用程序层使用容器本身来缝合所有组件。 从本质上讲,它是在精心设计的面向对象模型之上的一种选择。话虽如此,如何在不向各处散布IoC容器的情况下访问已解析的类型(无论是否抽象)? 我在这里看到的唯一选择是利用抽象工厂,这些工厂使用IoC容器来解析具体类型。 这应该足够容易以换成一组标准工厂。 这是一个好方法吗? 这里有没有人使用过它,它对您有多好? 还有其他可用的吗?

谢谢!

trans by 2020-02-29T11:37:06Z

将Git存储库从GitHub分叉到GitLab

假设我想对其他人的项目实施修复。 该项目位于GitHub上。

我可以在GitHub上创建一个fork并实现此修复程序。

但是,我想在GitLab而不是GitHub上创建我的fork。

那可能吗? 怎么样?

我已经阅读了这篇文章:[https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/]

无论如何,我不确定该怎么办。

  • 我是否应该以某种方式在GitHub的项目的GitLab上创建一个fork?
  • 还是应该在GitHub的项目的GitLab上创建镜像?
  • 还是应该在GitLab上创建一个镜像,然后分叉该镜像?
  • 还是我应该做一些完全不同的事情?

什么是正确的方法。

谢谢。

更新

GitLab上的存储库镜像可能没有意义。 我可以在GitLab上创建MY GitHub存储库的镜像,但不能创建其他人的存储库的镜像。

[HTTPS://docs.git lab.com/哦哦/workflow/repository_mirroring.HTML]

到目前为止,这是我所做的:

我已经将原始GitHub项目克隆到了本地机器上。 我已将修复程序提交到本地存储库中的新分支。 我在GitLab上创建了一个空项目。 我已经将本地存储库中的源设置为GitLab上的那个空项目,并将两个分支都推送到GitLab。 我已经在本地存储库中将上游设置为GitHub存储库。

当我想从原始GitHub存储库获取新的提交到GitLab上的存储库时(即同步存储库),可以使用本地存储库作为中间步骤来完成此操作。 但是,GitHub上的存储库和GitLab上的存储库之间没有直接连接。 我的设置正确吗? 如果我在GitHub上进行分叉,有什么区别吗?

trans by 2020-02-29T11:33:08Z

如何将对象添加到向量中时创建对象?

我有一个C ++向量。 我希望向量容纳可变数量的对象。

Visual Studio 2012给我一个错误:

Error: type name is not allowed

从此C ++代码中:

#include <iostream>
#include <vector>
using namespace std;

class testObject{
private:
   int someInt;
public:
   testObject(int a){ someInt=a; }
   void show() { cout<<someInt<<endl; }
};

int main()
{
    vector<testObject> testVector;
    cout << "Initial size: " << testVector.size() <<endl;

    for ( int i = 0; i < 3; i++ )
        testVector.push_back(testObject(3));
    cout << "New size: " << testVector.size() << endl;

    for ( int j = 0; j < 3; j++ )
        testVector[ j ].show();

    system("pause");
}    

但是这里的另一个代码示例看起来相同,但是无法正常工作。

void Dealer::setNumberOfPlayers( const int tNumber )
{
    for ( int i = 0; i < tNumber; i++ )
        vectorOfGamers.push_back(Player); // Player is a class that I created
}

我可以创建向量来同时容纳Dealer,Bot和Player的对象吗? 我怎么做? 据我所知,向量中的所有对象应该是一种类型。

trans by 2020-02-29T11:19:37Z

githooks-跟踪.git / hooks中的钩子更改

有没有办法跟踪git hook的变化? 我有三个仅在我的机器上显示的钩子,而不是在其他开发人员获取时显示的钩子。 尝试git add不起作用。

trans by 2020-02-29T11:13:42Z

在JavaScript中,在循环内使用await是否会阻塞循环?

请执行以下循环:

for(var i=0; i<100; ++i){
    let result = await some_slow_async_function();
    do_something_with_result();
}
  1. do_something_with_result()是否会阻塞环路? 还是iawaiting期间继续增加?

  2. do_something_with_result()的顺序是否相对于i保证顺序? 还是取决于每个27688571217720122012的awaited函数有多快?

trans by 2020-02-29T11:07:39Z

java-如何在注释中使用数组常量

我想使用常量作为注释值。

interface Client {

    @Retention(RUNTIME)
    @Target(METHOD)
    @interface SomeAnnotation { String[] values(); }

    interface Info {
        String A = "a";
        String B = "b";
        String[] AB = new String[] { A, B };
    }

    @SomeAnnotation(values = { Info.A, Info.B })
    void works();

    @SomeAnnotation(values = Info.AB)
    void doesNotWork();
}

常量Info.AInfo.B可以在注释中使用,但不能在数组Info.AB中使用,因为在该位置它必须是数组初始值设定项。 注释值仅限于可以内联到类的字节码中的值。 这对于数组常量是不可能的,因为必须在加载Info时构造它。 是否有解决此问题的方法?

trans by 2020-02-29T11:02:17Z

多线程-与Scala / Akka参与者相比,Java线程的负担如何?

我只是在比较Scala actor和Java线程的性能。

我惊讶地看到了两者之间的差异,我发现使用我的系统我最多只能产生约2000个线程(一次处于活动状态),但是使用同一系统,我可以产生约500,000个scala参与者。

这两个程序都使用了大约81MB的JVM堆内存。

您能解释一下java线程比scala / akka演员有多大的负担吗?是什么让scala-actor如此轻量级的关键因素是什么?

如果我想获得最佳的可伸缩性,是否应该选择基于actor的Web服务器,而不是像JBoss或Tomcat这样的基于Java的传统Web /应用服务器?

谢谢。

trans by 2020-02-29T10:59:46Z

告诉git忽略符号链接

这个问题在这里和这里都以类似的形式出现,但是它们似乎与我所寻找的不匹配。

我正在使用Ruby静态站点生成器StaticMatic进行项目。 基本上,这只是一个带有Haml模板,Sass和CoffeeScript的src /目录。 StaticMatic提供了一个开发服务器来将它们不断编译到一个静态站点中,并提供了一个在build /中生成静态站点的生成命令。

我对StaticMatic的修改是允许添加src / _modules / foo /,其中可能包含src / _modules / foo / bar.haml。 运行服务器或构建站点时,将在src / bar.haml中创建一个符号链接,该链接指向foo /中的文件。

到目前为止,一切都很好。 (处理冲突等)

_modules /中的单独目录背后的原因是,它们可以作为git子模块进行跟踪,并由其他团队独立检出。 从本质上讲,这允许多个团队在一个静态站点中的不同页面(实际上是JS应用程序)上工作,而无需重复主布局等。

困难在于git希望将这些符号链接视为文件。 例如src/_modules/bar/foo.haml显示:

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be commited)
#
#       src/_modules/bar/foo.haml
#       src/foo.haml

...当我真的只想要它显示src/_modules/bar/foo.haml而忽略src/foo.haml

一种方法是让我的链接生成代码将链接附加到.gitignore,但以编程方式弄乱.gitignore会使我感到容易出错。 (也许这种担心是不合理的?)

我理想的解决方法是:

[filetype = link]

...在.gitignore中。 据我所知,这是不可能的,或者是吗?

trans by 2020-02-29T10:54:01Z

html-如何结合:first-child和:hover?

我有一个用于菜单的无序列表。 每个项目都有一个背景图像和一个:hover图像。 第一个元素上的背景图像与其余元素不同,因此我使用以下样式进行设置,效果很好:

#prodNavBar ul:last-child li:first-child {...}

由于我也希望在该元素上添加一个翻转图片,因此我尝试添加:first-child,如下所示:

#prodNavBar ul:last-child li:first-child:hover {...}

...但这是行不通的。 :first-child:hover相结合的语法是什么?

trans by 2020-02-29T10:51:12Z

CMake:如何从子项目的所有静态库中创建一个共享库?

我有以下布局:

top_project
    + subproject1
    + subproject2

add_libraryadd_library(${PROJECT_NAME} SHARED subproject1 subproject2)各自创建一个静态库。 我想将这些静态库链接到top_project级别的单个共享库中。

到目前为止,我收集的信息是:

  • 为了创建与位置无关的代码,可以使用add_library(在Windows以外的所有平台上都是必需的)进行编译,以允许将静态库链接到单个共享库中,或者将所有静态库解压缩(例如,使用add_library(${PROJECT_NAME} SHARED subproject1 subproject2))并将它们重新链接到共享库中 (我认为这是一种优雅且不可移植的解决方案)
  • 必须将所有源文件显式提供给add_library命令:由于某种我无法理解的原因,仅编写add_library(${PROJECT_NAME} SHARED subproject1 subproject2)不能按预期工作(它实际上创建了一个空库,并且未正确注册依赖项)
  • CMake中有一个OBJECT库功能,但我认为它的目的并不是真正做到我想要的。

有什么想法吗?

trans by 2020-02-29T10:46:26Z

Cassandra客户端Java API

我最近开始使用Cassandra数据库。 现在,我正在评估应该前进哪个Astyanax client or New Datastax client that uses Binary protocol

我在stackoverflow上看到过很多关于使用哪个客户端作为Cassandra的文章,但是没有一个有明确的答案。

我的团队要求我对此进行一些研究,并为Java中的每个Pelops client提出一些Astyanax client or New Datastax client that uses Binary protocol

正如我提到的,我最近参与了Astyanax client or New Datastax client that uses Binary protocol,所以对为什么某些人选择Pelops client以及为什么某些人选择Astyanax和其他一些客户一无所知。

我了解有关每个Cassandra客户端的简要信息,这意味着我能够进行这项工作并开始读写Cassandra数据库。

以下是我到目前为止的信息。

卡桑德拉APIS

  • 赫克托(生产就绪)
    最稳定的Java API,已准备就绪。

  • Astyanax(崛起与来临)
    Netflix提供的干净Java API。 它没有像Hector那样广泛使用,但是很可靠。

  • 昆德拉(The NoSQL ORM)
    兼容JPA,当您想通过对象与Cassandra进行交互时,这非常方便。
    这会在某种程度上限制您,因为您将无法获得动态数量的列/名称等。但是它确实允许您通过ORM进行移植或集中存储在卡桑德拉(Cassandra)上用于更多传统用途。

  • 佩洛普斯
    我只是简单地使用过Pelops。 这是一个简单的API,但似乎没有有它背后的动力。

  • PlayORM(没有限制的ORM?)
    我刚刚听说了 似乎正在尝试解决阻抗问题通过引入JQL,传统的基于JPA的ORM与NoSQL之间不匹配。 它看起来有希望。

  • 节俭(避免我!)
    这是“低级” API。

以下是决定Astyanax client or New Datastax client that uses Binary protocol-

  • 第一要务是:低延迟开销,Asynch API和生产环境的可靠性/稳定性。
    (例如,可以在包装客户端的DAL中使用更加用户友好的API)。
  • 连接池和分区意识是其他一些不错的功能。
  • 能够检测添加的任何新节点。
  • 以及良好的支持(如下院长指出)

有人可以对此提供一些想法吗? 此外,每一个Astyanax client or New Datastax client that uses Binary protocol的优缺点以及哪个客户可以满足我的要求,也将有很大的帮助。

我相信,到目前为止,我想主要是围绕Astyanax client or New Datastax client that uses Binary protocol进行研究。 但是没有足够的信息来支持我的研究并将其呈现给我的团队。

Astyanax客户端和New Datastax客户端(使用新的Binary协议)之间的任何比较都会有很大的帮助。

这将对我的研究大有帮助,并且会从过去使用过不同客户的不同人士那里获得很多知识。

trans by 2020-02-29T10:40:15Z

如何在GDB中漂亮地打印STL容器?

我已经按照GDB Wiki上的说明安装了用于查看STL容器的python漂亮打印机。 我的~/.gdbinit现在看起来像这样:

python 
import sys 
sys.path.insert(0, '/opt/gdb_prettyprint/python') 
from libstdcxx.v6.printers import register_libstdcxx_printers 
register_libstdcxx_printers (None) 
end 

但是,当我运行GDB并尝试打印STL类型时,得到以下信息:

print myString
Python Exception <class 'gdb.error'> No type named std::basic_string<char>::_Rep.: 
$3 = 

谁能对此有所启发? 我正在运行GDB 7.4随附的Ubuntu 12.04。

trans by 2020-02-29T10:31:06Z

javascript-Chrome应用程序Webview和触摸滚动传播

我很高兴将Windows 8 Metro应用程序替换为Chrome打包的应用程序。 目前,它需要模仿Metro应用的外观。 主页包含水平排列的多个Web视图,并可能进行大量的水平滚动。 尝试使用触摸设备水平滚动时遇到问题。 如果滚动手势在Web视图上开始,则表示正在捕获滚动事件并阻止主机滚动。 溢出在所有Web视图上均被隐藏。 由于它们构成了页面上大部分内容,因此主机的有效滚动目标受到限制。

Webview的内容是交互式的,因此我无法在可滚动内容上放置透明的覆盖层来捕获事件,至少没有某种方法可以将点击/触摸传播到WebView本身。

关于如何实现的任何想法?

谢谢你的帮助!

trans by 2020-02-29T10:29:04Z

java-如何使用@ResponseBody从Spring Controller返回JSON数据

春季版本4.2.0,休眠4.1.4这是我的ArrayList函数:

@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company>  listforCompanies() {      
    List<Company> listOfCompanies= new ArrayList<Company>();        
    listOfCompanies = companyManager.getAllCompanies();
    return listOfCompanies;
}

ArrayList中的Jackson映射器依赖关系:

    <!-- Jackson JSON Mapper -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>

在我的ArrayList中获取列表,但返回时显示以下错误:

SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause
    java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
        at org.springframework.util.Assert.isTrue(Assert.java:68)
        at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124)

链接到我正在关注的示例。

trans by 2020-02-29T10:24:28Z

ios-如何使UILabel中的首字母大写?

我正在开发iPhone应用程序。 在标签中,我想显示用户名称的首字母大写。 我怎么做?

trans by 2020-02-29T10:19:28Z

ios-加载时,UITextView不会滚动到顶部

当我的文本没有填充UITextView时,它会按预期滚动到顶部。 当文本超出屏幕显示的大小时,UITextView将滚动到文本的中间而不是顶部。

以下是一些可能相关的详细信息:

在viewDidLoad中,在UITextView的顶部和底部提供一些填充:

self.mainTextView.textContainerInset = UIEdgeInsetsMake(90, 0, 70, 0);

UITextView使用自动布局将其从屏幕的顶部,底部和每一侧(在IB中完成)锚定20px,以允许使用不同的屏幕尺寸和方向。

加载后,我仍然可以用手指滚动它。

编辑我发现删除自动布局约束然后固定宽度似乎只能解决此问题,但仅适用于该屏幕宽度。

trans by 2020-02-29T10:13:19Z

字符串-C#中的静态常量

我有这个代码;

using System;

namespace Rapido
{
    class Constants
    {
        public static const string FrameworkName = "Rapido Framework";
    }  
}

Visual Studio告诉我:Rapido.Constants.FrameworkName

我如何才能从其他类中获取此常量,而不必创建它的新实例? (即通过Rapido.Constants.FrameworkName直接访问它)

trans by 2020-02-29T10:10:44Z

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共3510页