相关疑难解决方法(0)

原子和非原子属性之间有什么区别?

财产申报中的含义atomicnonatomic含义是什么?

@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;
@property(retain) UITextField *userName;
Run Code Online (Sandbox Code Playgroud)

这三者之间的运作区别是什么?

properties atomic objective-c ios nonatomic

1828
推荐指数
20
解决办法
47万
查看次数

线程安全是什么意思?

最近我尝试从一个线程(UI线程除外)访问一个文本框,并抛出异常.它说了一些关于"代码不是线程安全的",所以我最终编写了一个代表(来自MSDN的示例帮助),然后调用它.

但即便如此,我也不太明白为什么所有额外的代码都是必要的.

更新:如果我检查,我会遇到任何严重的问题

Controls.CheckForIllegalCrossThread..blah =true
Run Code Online (Sandbox Code Playgroud)

multithreading definition thread-safety

114
推荐指数
7
解决办法
7万
查看次数

为什么使用SQLiteOpenHelper而不是SQLiteDatabase?

在我的活动中,我有例如

SQLiteDatabase db = openOrCreateDatabase(Preferences.DB_NAME, Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)");
Cursor dbResult = db.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
db.close();
Run Code Online (Sandbox Code Playgroud)

什么是使用的好处SQLiteOpenHelper

DatabaseHelper helper = new DatabaseHelper(this);
SQLiteDatabase db = helper.getWriteableDatabase();
SQLiteDatabase db_2 = helper.getReadableDatabase();
Cursor dbResult = db_2.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
helper.close();
Run Code Online (Sandbox Code Playgroud)

类本身

public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, Preferences.DB_NAME, null, Preferences.DB_VERSION); …
Run Code Online (Sandbox Code Playgroud)

sqlite android

37
推荐指数
3
解决办法
2万
查看次数

多线程 Selenium WebDriver 与 Selenium Grid

我是 Selenium 的新手,并且正在使用 Selenium 在维护会话的同时同时导航到同一网站的多个页面。我可以通过以下两种方式创建控制器:

  1. 控制器在多线程环境中启动Selenium WebDriver(每个线程 1 个驱动程序实例,因为 WebDriver 不是线程安全的。参考:Selenium Grid,如何使用 WebDriver 和 ThreadSafeSeleniumSessionStorage.session()
  2. 控制器使用Selenium Grid

我了解 Selenium Grid 通过使用集线器节点概念来支持分布式执行;但与选项 1 相比,我将获得哪些主要好处。

我看到有人使用选项 1,但面临一些问题。参考:Selenium 中没有网格的多个 WebDriver 实例?

是否建议在多线程环境中使用 Grid over Selenium WebDriver?如果是这样,为什么?此外,Selenium Grid 是否会负责清除其节点中的任何陈旧浏览器实例(开箱即用)?

java selenium multithreading selenium-grid selenium-webdriver

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

如果从2个线程写入volatile变量会发生什么?

考虑Java Concurrency in Practice中的片段-

@ThreadSafe
public class SynchronizedInteger{
    @GuardedBy("this") private int value;

    public synchronized int getValue() {
        return value;
    }

    public synchronized void setValue(int value) {
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

来自同一本书的摘录 -

考虑volatile变量的好方法是想象它们的行为大致类似于上面列出的SynchronizedInteger类,用get和set调用替换volatile变量的读写.然而,访问volatile变量不会执行锁定,因此不会导致执行线程阻塞,从而使volatile变量的同步机制比同步更轻.

线程限制的特殊情况适用于volatile变量.只要确保volatile变量仅从单个线程写入,就可以安全地对共享的volatile变量执行读 - 修改 - 写操作.

因此,如果您将上述类中的实例变量设置为volatile,然后删除synchronized关键字,那么假设有3个线程

线程A和线程B正在写入相同的volatile变量.
线程C读取volatile变量.

由于volatile变量现在是从2个线程写入的,为什么对这个共享的volatile变量执行读 - 修改 - 写操作是不安全的?

java multithreading volatile

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

multiprocessing.Pipe() 与 .Queue()

import multiprocess as mp
Run Code Online (Sandbox Code Playgroud)

mp.Pipe()和 之间的主要区别是什么mp.Queue()?它们对我来说似乎是一样的:基本上Pipe.recv()相当于Queue.get(),Pipe.send()Queue.put()

queue multiprocessing python-3.x

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

具有2种方式的Use Case用于相同的操作

问题1:使用2种方法执行相同操作构建用例(或多个用例)的正确方法是什么?

例如:

我在iOS应用程序中有3个屏幕:
1.地图视图,可以"长按"并具有相机按钮.
2.摄像机视图,如果用户在地图视图中点击摄像机按钮,则会显示该视图.
3.位置/引脚编辑视图,如果用户"长按"地图视图,或在用户在摄像机视图中选择照片后显示.此编辑视图有一个保存按钮,用于实际创建带有照片和位置的位置(长按坐标或当前位置以防按下相机按钮).

标题:创建场所基本流程:
1.用户在地图上"长按".
2.应用程序删除临时图钉并显示场所编辑视图.
3.用户编辑地点信息并按下保存按钮.
4.应用创建场所并保存.

标题:创建场所基本流程:
1.用户按下加号按钮.
2. App显示摄像机视图.
3.用户拍照.
4.应用程序创建具有当前位置和图片的位置.

根据与bhavik交换的评论进行更新.

问题2 :(基于bhavik的答案)
因此,我不需要一个交互者的一个演示者,我可以有1个交互者和3个演示者/视图.

  1. 在我的情况下,我应该有一个地图的演示者/视图,这是它开始的地方,
  2. 然后我应该有一个摄像机的演示者/视图,以防用户点击相机按钮
  3. 如果用户"长按"或用户从摄像机演示者/视图中选择照片并被重定向到相同的编辑视图,则编辑视图的一个演示者/视图.

那是对的吗?

问题3:我的交互方的边界方法是否总是返回无效?
在bhavik的例子中,他们正在返回一些东西,但在VIPER博客叔叔Bob的视频中,他们总是返回void,结果以另一个边界方法的形式出现,交互者调用演示者/控制器.

问题4:当叔叔Bob的视频使用控制器和演示者与交互者进行不同的交互时,VIPER方式不使用控制器,只有演示者与交互者交谈.我应该采取哪种方法?

问题5:如果我的用例类似于"转到其他屏幕",它是否应该有一个交互器?由于当前视图将告诉其演示者按下了什么按钮(要查看的视图),并且此当前演示者将告诉其线框"更改为此另一个线框".

architecture design-patterns use-case ios

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

在线程中执行malloc

我在c中编写了一个使用POSIX pthreads的应用程序.在每个线程中都有一个功能malloc.所以我的问题是:

1)我保证每个线程分配一个不同的,非重叠的内存块吗?

2)是否可以从主线程(创建分配内存的其他线程)访问分配的内存?

我在Windows上使用gcc编译器,但我想知道Windows和Linux的答案.

谢谢

c multithreading posix pthreads

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

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

通过 RMI 从本地计算机上的多个线程调用线程安全方法是否安全?

我有一些方法将通过 RMI 调用远程方法,如下所示:

/**
 * Implementation is supposed to be thread safe
 */
public interface Act extends java.rmi.Remote{
    String doSome() throws RemoteException;
}

public class SomeClass {
    private static final Act stub = (Act) Naming.lookup("/server/stub")

    public static void someMethodAccessedByMultipleThreads(){
        System.out.println(stub.doSome());
    }
}
Run Code Online (Sandbox Code Playgroud)

如果远程方法是线程安全的,那么someMethodAccessedByMultipleThreads多线程调用是否安全?

或者是否存在一些 RMI 线程/网络/其他问题?

java multithreading rmi

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