小编Mag*_*gie的帖子

android在活动和广播接收器之间进行通信

我有一个活动,显示从服务器获取的一些数据.如果没有可用的连接,活动将显示一些缓存数据; 如果连接可用,则活动将获取数据并显示它.这一切都按预期工作.
现在,我想让我的活动在连接发生后立即重新加载数据.我正在使用一个扩展BroadcastReceiver的简单Receiver:

public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetInfo != null) {
            //what to do here? 
        } 
     }
}
Run Code Online (Sandbox Code Playgroud)

广播接收器在我的清单文件中声明如下:

<receiver android:name=".ConnectionChangeReceiver"
          android:label="NetworkConnection">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
        </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

在我的活动中,我注册了接收器:

ConnectionChangeReceiver receiver = new ConnectionChangeReceiver(); this.registerReceiver(接收者,新的IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));

现在,我很困惑,接下来要做什么.当执行onReceive方法时,如何让我的活动意识到这一点?我知道我可以开始一项新活动,但这不是我想要的.我应该将ConnectionChangeReceiver声明为我的活动的私有类吗?或者还有其他解决方案吗?

android broadcastreceiver

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

查找无向图中的所有循环

我正在使用算法第4版来稍微改进我的图论.这些书附带了大量的图形处理代码.
目前,我遇到了以下问题:如何在无向图中找到所有周期?我想修改现有的循环检测代码来做到这一点.

这是重要的部分:

private void dfs(Graph G, int u, int v) {
        marked[v] = true;
        for (int w : G.adj(v)) {

            // short circuit if cycle already found
            if (cycle != null) return;

            if (!marked[w]) {
                edgeTo[w] = v;
                dfs(G, v, w);
            }

            // check for cycle (but disregard reverse of edge leading to v)
            else if (w != u) {
                cycle = new Stack<Integer>();
                for (int x = v; x != w; x = edgeTo[x]) …
Run Code Online (Sandbox Code Playgroud)

java algorithm graph

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

泛型超级与扩展

正当我认为我终于理解了泛型时,我遇到了以下示例:

public class Organic<E> {
          void react(E e) { }
          static void main(String[] args) {
            //1: Organic<? extends Organic> compound = new Aliphatic<Organic>(); 
            //2: Organic<? super Aliphatic> compound = new Aliphatic<Organic>(); 
           compound.react(new Organic());
           compound.react(new Aliphatic());
           compound.react(new Hexane());
 } }
 class Aliphatic<F> extends Organic<F> { }
 class Hexane<G> extends Aliphatic<G> { }
Run Code Online (Sandbox Code Playgroud)

它说,如果第1行被取消注释,则以下内容将无法编译:

  compound.react(new Organic());  
  compound.react(new Aliphatic());  
  compound.react(new Hexane());
Run Code Online (Sandbox Code Playgroud)

如果第2行是ucommented,则以下内容将无法编译:

compound.react(new Organic());
Run Code Online (Sandbox Code Playgroud)

在第二个例子中,允许脂肪族和它的超类型.那么为什么不允许脂肪族?

在第一个例子中,为什么new Organic不允许?

第一个编译错误:

- The method react(capture#1-of ? extends Organic) in the type Organic<capture#1-of ? extends …
Run Code Online (Sandbox Code Playgroud)

java generics scjp generic-type-argument

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

openssl初始化RSA公钥

我有RSA base64编码的公钥,我需要用来验证数字签名.我不明白如何使用公钥初始化RSA.

我的代码看起来像:

unsigned char *signature = ""; //signature string
char *original = ""; // my original string
unsigned char sha2HashDigest[SHA256_DIGEST_LENGTH];
SHA256(original, strlen(original), sha2HashDigest);

 char *key = "base64encodedKey";

 RSA *r = RSA_new();
//SET RSA public key?! how?

int result = RSA_verify(NID_sha256, sha2HashDigest, SHA256_DIGEST_LENGTH,
           signature, strlen(signatrue), r);
if (result != 1) // handle error
Run Code Online (Sandbox Code Playgroud)

注意:我在iOS应用程序中执行此操作,但我认为这与此问题无关.

更新:我最终按照vond的建议使用EVP.公钥是PEM格式的文​​件.这是我的代码:

   FILE *fp = fopen([keyFilePath UTF8String], "r");
    if (!fp) return NO;


    EVP_PKEY *pubKey = PEM_read_PUBKEY(fp,NULL,NULL,NULL);
    EVP_MD_CTX     md_ctx;
    EVP_MD_CTX_init(&md_ctx);

    EVP_VerifyInit(&md_ctx, EVP_sha256());
    EVP_VerifyUpdate (&md_ctx, (unsigned char*)[msgData bytes], [msgData …
Run Code Online (Sandbox Code Playgroud)

c encryption openssl ios

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

Objective-C getValue

我已经定义了一个类POI.h:

@interface POI : NSObject
Run Code Online (Sandbox Code Playgroud)

这只是一个具有某些属性的简单类,定义如下:

- (NSString *) getValue:(NSString *)key;
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,当我尝试记录该方法的调用时:

  NSLog(@"Name: %@", [poi getValue:@"name"]);
Run Code Online (Sandbox Code Playgroud)

我明白了

Apple LLVM编译器4.2错误命令
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
失败,退出代码为254

基于以前的一些SO答案,我在尝试从void方法记录返回值时发现了错误254.所以我得出结论,我的编译器试图调用的方法实际上是

- (void)getValue:(void *)value;
Run Code Online (Sandbox Code Playgroud)

定义在NSValue.h,它是无效类型.

现在,我真的想了解为什么会发生这种情况.我的getValue方法的不正确和愚蠢的命名是唯一的原因吗?我怎么能避免呢?

实际错误消息:

LBSViewController.mm

  1. 解析器在文件的末尾
  2. 代码生成
  3. 在模块'/Users/myuser/Documents/workspace/project1/Classes/LBSViewController.mm'上运行'Function Pass Manager'.
  4. 在函数' @"\01-[LBSViewController initializeLBS]"' 上运行'ARM指令选择'

clang:错误:无法执行命令:分段错误:11
clang:错误:clang frontend命令因信号失败(使用-v查看调用)
Apple LLVM版本4.2(clang-425.0.27)(基于LLVM 3.2svn)
目标:arm-apple-darwin12.5.0
线程模型:posix
clang:注意:诊断消息:请向http://developer.apple.com/bugreporter/提交错误报告, 并包括崩溃回溯,预处理源和关联运行脚本.
clang:注意:诊断消息:


请将以下文件附加到BUG报告:
预处理的源和相关的运行脚本位于:
clang:注意:诊断消息:/var/folders/y_/h89vdcjj7zs8s5zjh77x4h0h0000gn/T/LBSViewController-A4zhXy.mm
clang :注意:诊断消息:/var/folders/y_/h89vdcjj7zs8s5zjh77x4h0h0000gn/T/LBSViewController-A4zhXy.sh
clang:注意:诊断消息:

objective-c ios

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

Swift变量在其自己的初始值内使用

我正在尝试初始化一个对象,我收到此错误: Variable used within its own initial value

这是我的代码:

在此输入图像描述

为什么我不能这样做呢?

initialization ios swift

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

java垃圾收集和空引用

在我为 OCJP 学习时,我遇到了以下问题:

class CardBoard {
           Short story = 200;
           CardBoard go(CardBoard cb) {
                cb = null;
                return cb;
           }
           public static void main(String[] args) {
             CardBoard c1 = new CardBoard();
             CardBoard c2 = new CardBoard();
             CardBoard c3 = c1.go(c2);
             c1 = null;
            // do Stuff 
}}
Run Code Online (Sandbox Code Playgroud)

当达到 //doStuff 时,有多少对象符合 GC 条件?
正确答案是2,意思c1story对象。

当到达行 //doStuff 时,c3 也为空。为什么它也没有资格进行 GC?

java garbage-collection scjp

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

生成从1到2 ^ k-1的数字的二进制表示

我想获得范围为1 ... 2 ^ k-1的二进制表示的整数列表.或者,我需要一个k位的所有可能组合的列表.所以,例如,假设k是3,我需要:

001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)

正如我计划在Java中这样做的时候,我正在考虑使用BitSet来表示每个数字,并将值存储在列表中,但我认为这个问题可能与语言无关.基本上,我需要弄清楚生成整个集合的算法.

我想我需要一个递归解决方案,这个方法会考虑先前设置的位.

void fill(int k, int i, boolean wasSet) {
    if (i==k) return;
        BitSet bs = new BitSet();
        for (int j=0; j<k; j++) {
          if (!wasSet) {
              bs.set(i);
              fill(k, i, true);
          } else {
              fill(k, j, false);
          }
    }
Run Code Online (Sandbox Code Playgroud)

注意:这个函数原型显然是非常错误的.

注意2:我真的很想避免使用字符串,因为我后来需要使用这个值来执行其他一些计算,BitSet非常方便

java algorithm binary set

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

Java使用正则表达式来提取文件名

我需要从文件的绝对路径获取文件名(我知道该file.getName()方法,但我不能在这里使用它). 编辑:我不能使用file.getName()因为我不需要文件名; 我也需要文件路径的一部分(但同样,不是整个absoulte路径).在提供某个路径之后,我需要文件路径的一部分.

假设该文件位于文件夹中:

C:\Users\someUser
Run Code Online (Sandbox Code Playgroud)

在Windows机器上,如果我创建一个模式字符串如下:

String patternStr = "C:\\Users\\someUser\\(.*+)";
Run Code Online (Sandbox Code Playgroud)

我得到一个例外: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence反斜杠.

如果我使用Pattern.quote(File.pathSeparator):

String patternStr = "C:" + Pattern.quote(File.separator) + "Users" + Pattern.quote(File.separator) + "someUser" + Pattern.quote(File.separator) + "(.*+)";
Run Code Online (Sandbox Code Playgroud)

生成的模式字符串是:C:\Q;\EUsers\Q;\EsomeUser\Q;\E(.*+)当然与实际fileName"C:\ Users\someUser\myFile.txt"不匹配.

我在这里错过了什么?解析文件名的正确方法是什么?

java regex

0
推荐指数
1
解决办法
6210
查看次数

svn提交文件名为"@ 2x.png"

在我的iOS项目中,我的图像以@ 2x.png结尾,用于视网膜分辨率.我正在使用命令行svn.当我尝试添加image@2x.png到svn repo时,我这样做:

svn add image@2x.png 
Run Code Online (Sandbox Code Playgroud)

然后我收到如下警告:

svn: warning: 'image' not found
Run Code Online (Sandbox Code Playgroud)

图像没有添加到subversion控件,我不能提交它."常规图像",即."image.png"很好.

我究竟做错了什么?怎么解决这个?

svn ios

0
推荐指数
1
解决办法
1135
查看次数