小编Bog*_*dru的帖子

GCD中的并发vs串行队列

我正在努力完全理解GCD中的并发和串行队列.我有一些问题,希望有人能够清楚地回答我.

  1. 我正在读取串行队列的创建和使用,以便一个接一个地执行任务.但是,如果出现以下情况:

    • 我创建了一个串行队列
    • 我使用dispatch_async(在我刚创建的串行队列上)三次来发送三个块A,B,C

    这三个块会被执行:

    • 按顺序A,B,C,因为队列是串行的

      要么

    • 同时(在parralel线程上同时)因为我使用了ASYNC调度
  2. 我正在阅读我可以dispatch_sync在并发队列上使用,以便一个接一个地执行块.在这种情况下,为什么串行队列甚至存在,因为我总是可以使用并发队列,我可以根据需要同步调度多个块?

    谢谢你的任何好解释!

concurrency multithreading grand-central-dispatch ios

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

GIT PUSH究竟做了什么?

我似乎无法找到一个很好的解释.

我知道git pull会做什么:

1)获取,即来自服务器的所有额外提交被复制到本地存储中,并且origin/master分支指针移动到提交链的末尾

2)合并所述的原点/主分支到支路,该支指针移动到新创建的提交,而原点/主指针留在原地.

我认为git push做的事情非常相似,但我不确定.我相信它会做其中一个,或类似的东西,或其他东西(?):

  • 复制所有本地提交并在那里进行合并(与git pull相反); 但在这种情况下,服务器没有我的本地分支,所以我看不出它是什么合并

要么

  • 将我的分支合并到origin/master中,将结果提交推送到服务器并将其链接到现有的end-commit旁边,同时移动服务器的master ; 这似乎不正确,因为我的本地origin/master与服务器不同步.

我目前正在使用git进行基本操作,所以我做得很好,但我想完全理解这些内部结构.

git git-push

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

字节序也适用于位顺序吗?

我在这里没有找到具体的问题,如果这是重复的,请指出给我,我会删除它.

那么,字节顺序与顺序有什么关系吗?

似乎意味着答案是否定的,而其他来源(我现在未能找到一个,但肯定我前段时间读过一些文章)暗示字节序是字节和位的顺序.

更具体一点:在Big Endian架构中,MSB是第一个,在任何字节内,也是MSb优先?相反,在Little Endian系统中,LSB是第一个,LSb也是第一个?

最后编辑:我发现这个说" 比特顺序通常遵循与给定计算机系统的字节顺序相同的字节顺序 "

c endianness

10
推荐指数
3
解决办法
1324
查看次数

iOS UIPickerView如何获取委托方法之外的选定行

我知道UIPickerView有这个方法:

- (void)pickerView:(UIPickerView *)pickerView
      didSelectRow:(NSInteger)row
       inComponent:(NSInteger)component
Run Code Online (Sandbox Code Playgroud)

但是在这个方法中,我想获得其他组件的选定行.我怎么能这样做?

cocoa-touch objective-c ios

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

带有RoboVM的iOS的Libgdx - IOSGLES20.init上的链接错误不满意

尝试使用RoboVM将我的LibGDX游戏移植到iOS.

在为模拟器运行应用程序时,我收到此错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.init(Native Method)
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.<init>(IOSGLES20.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication.didFinishLaunching(IOSApplication.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didFinishLaunching(IOSApplication.java)
at org.robovm.cocoatouch.uikit.UIApplicationDelegate$Callbacks.didFinishLaunching(UIApplicationDelegate.java)
at org.robovm.cocoatouch.uikit.UIApplication.UIApplicationMain(Native Method)
at org.robovm.cocoatouch.uikit.UIApplication.main(UIApplication.java)
at ***********
Run Code Online (Sandbox Code Playgroud)

ios libgdx robovm

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

在当前队列上同步调度

我知道你可能会发现这是一个奇怪的问题,但我只是在学习GCD,我想完全理解它的所有方面.所以这里是:

是否有任何理由在CURRENT QUEUE上发送任务SYNC?

例如:

    dispatch_queue_t concurrentQueue = dispatch_get_global_queue(...);
    dispatch_async(concurrentQueue, ^{
       //this is work task 0

       //first do something here, then suddenly:

       dispatch_sync(concurrentQueue, ^{
               //work task 1
       });

       //continue work task 0
    });
Run Code Online (Sandbox Code Playgroud)

我理解一件事:如果不是concurrentQueue我使用串行队列,那么我在该串行队列上得到一个死锁,因为work task 1直到work task 0完成才能启动(因为串行队列保证执行顺序),并且在同一时间work task 0不能继续执行,因为它等待SYNC dispath函数返回(请纠正我,如果我错了,这将使我成为一个总菜鸟).

回到最初的想法,上面的代码和相同的代码之间有什么区别,而不是调用dispatch_sync函数我只是work task 1直接编写代码?

concurrency multithreading grand-central-dispatch ios

7
推荐指数
1
解决办法
1628
查看次数

Android如何启动Boot-up上的活动

让我来描述你想要的东西:我想建立一个"主应用程序"并设置它,以便当手机通电时,它会立即进入主应用程序.用户永远不能退出此应用程序(这将用于父母控制之类的东西),并且他只能从其中启动其他应用程序.

基本上它就像一个"自定义桌面".

我必须强调,重要的是这个应用程序永远不会退出.只要手机启动,这是用户可以访问的唯一环境.

在我解释了我需要的东西后,我需要你的帮助告诉我我在寻找什么.这是我一直听到的某种"默认发射器"吗?或者这是怎么称呼的?我该怎么做?

谢谢

android

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

使用默认资源管理器在Android中查看文件夹内容

我想以编程方式启动默认文件资源管理器以显示文件夹的内容.

我正在使用此代码,但它崩溃了:

    Uri startDir = Uri.fromFile(new File("/sdcard/DCIM/Camera")); 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(startDir);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

LogCat显示"找不到处理意图的活动"......

我最好的选择是什么?我希望用户能够看到文件夹的内容并能够单击文件(例如,单击视频并使用默认播放器启动它,单击PDF并打开它等).

android android-intent

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

函数调用之间的OR运算符

以下是否有任何区别:

if (!bool_function()) {
  void_function();
}
Run Code Online (Sandbox Code Playgroud)

bool_function() || void_function();
Run Code Online (Sandbox Code Playgroud)

除了可读性?

即使第二个函数返回void,我可以使用第二个形式吗?在所有基于C语言的编程语言(C++,C#,Java)中,void_function如果bool_function返回true ,它是否会被执行?

编辑:我问的原因是因为我的C编译器甚至没有给出任何警告,它按预期工作.我正在使用IAR Embedded Workbench IDE.

c c# c++ java

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

C#throw语句多余?

我有一个看起来像这样的代码(抱歉Java支架样式):

class SomeClass {
   public static void doSomethingRisky() {
        try {
          SomeRiskyFunction();
        } catch (Exception e) {
          throw e;
        }
   }
}

class MainClass {
   public void callSomethingRisky() {
        try {
          SomeClass.doSomethingRisky();
        } catch (Exception e) {
          FinallyHandleTheException(e);
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

基本上,SomeClass将是一个库,我想设计它,以便所有异常将由调用程序处理(谁可能会或可能不会选择显示有关异常的消息).

我的问题是关于try/catch&throwdoSomethingRisky()from中的使用SomeClass.这是多余的还是有必要的?我的意思是,如果我将其关闭并且该函数在运行时遇到异常,它是否会使程序崩溃,因为没有捕获THAT函数内部的异常,或者它是否仍然将它传递给调用者(callSomethingRisky()),在那里它被优雅地处理?

Java的相同问题.谢谢!

c# java exception-handling

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

Rebase而不是快进

我是GIT的新手,我无法弄清楚我的问题是否已经有了答案.在将其标记为重复之前,请仔细阅读.

我有一个分支,让我们称之为public,它被推送并与之同步origin.有一次,我创建了另一个分支,private它突然出现了public,因为我想做很多我想保密的工作.所以我只是工作private而且我做了,比方说,10次提交,直到我最终到达一个可以公开的状态.

现在,我显然不想进行快进合并,public因为所有中间提交都会出现在远程服务器上.rebase如果public分支没有从private创建点偏离,我该怎么做呢?

显然,我想在public分支上创建一个新的提交,其中包含来自10次private提交的所有修改.我知道这转化为a rebase,但我不知道该怎么做.

git git-rebase git-branch

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