小编jel*_*ord的帖子

在具有多个允许签名的Android服务上实现签名级安全性

我正在开发一个包含大量个人用户信息的应用程序 - 例如Facebook联系人等等......现在,我希望能做的事情之一(并且已经完成,非常有效)使用Android的内置进程间通信协议(AIDL)向"第三方"应用程序开放应用程序的一部分.到现在为止还挺好.

这就是问题所在:因为我们参与处理了大量的个人信息,所以我们必须非常小心谁能够访问它,不能访问它; 具体来说,只有"受信任"的应用程序才能够这样做.因此,执行此操作的自然方法是在我们声明服务的AndroidManifest.xml文件中使用自定义权限.我的问题是这样的:我希望能够实现签名级保护(类似于正常的"签名"权限级别),但有一点点:

不仅希望使用我们的内部签名签名的应用程序能够访问服务.我希望能够在运行时构建一个"可信签名"列表(或者如果有更好的方法,那么可能还有其他时间?)能够根据可信密钥列表检查传入请求.

这将以与我认为的正常"签名"权限级别相同的方式满足安全性约束 - 只有"可信密钥列表"上的程序才能访问服务,并且密钥很难欺骗(如果可能的话)? ) - 但还有额外的好处,我们不必签署每个使用API​​和我们内部团队密钥的应用程序.

这在Android中是否可行?如果是这样,有什么特殊要求吗?

谢谢

java security android ipc aidl

24
推荐指数
1
解决办法
4820
查看次数

增加可用内核和RAM的数量会导致JVM执行更多GC吗?

我正在升级生产硬件,而且我们在新套件上看到了比旧款更多的年轻人GCing.

两台机器上运行相同的程序(相同的二进制文件).一个明显的区别(我希望这对JVM没有影响)是我们升级了RHEL5 - > RHEL6.

我们的JVM(Java 64位Hotspot 1.6,java -version两者都相同)使用相同的命令行GC选项运行:

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseParallelGC -XX:+UseCompressedOops
Run Code Online (Sandbox Code Playgroud)

也:

-Xmx1024M -Xms1024M -XX:NewSize=512M -XX:SurvivorRatio=2
Run Code Online (Sandbox Code Playgroud)

这些机器之间的区别在于,新机箱的内存大约是RAM的两倍(32gb尽管最大堆不变),还有一些内核(24比16).

应用程序本身连接到多个外部进程并执行大量网络操作 - 因此这可能表明存在一些回归,错误配置或不兼容(这就是我们测试的原因......).我想知道的是:

增加的年轻GC水平可能是运行更多核心的自然和预期后果,还是我应该关注这一发展?

我们在JConsole中确认了GC的数量,但这与做的大致相同:

grep "PSYoungGen" ./log | wc -l 
Run Code Online (Sandbox Code Playgroud)

(注-XX:+PrintGC -XX:+PrintGCDetails)

完整的GC在两个盒子上看起来大致相同.

请注意,这是整个应用程序启动过程中GC的数量 - 因此它不会执行"更多工作".这是同样的工作,有更多的GC运行.

例如,我想知道是否-XX:+UseParallelGC会在日志中导致更多的条目,因为正在使用更多的线程(将年轻的集合切成小块,意味着更多,更小的集合 - 不用担心).

java garbage-collection jvm

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

Django中DateTime字段之间的聚合差异

我有一个表,其中包含一系列与时间段相关的条目(具体来说,是为客户工作的时间):

task_time:
id     |    start_time    |    end_time       |    client (fk)
1        08/12/2011 14:48   08/12/2011 14:50     2
Run Code Online (Sandbox Code Playgroud)

我试图从我的Django应用程序聚合给定客户端的所有工作时间:

time_worked_aggregate = models.TaskTime.objects.\
                        filter(client = some_client_id).\
                        extra(select = {'elapsed': 'SUM(task_time.end_time - task_time.start_time)'}).\
                        values('elapsed')

if len(time_worked_aggregate) > 0:
    time_worked = time_worked_aggregate[0]['elapsed'].total_seconds()
else:
    time_worked = 0
Run Code Online (Sandbox Code Playgroud)

这似乎不优雅,但确实有效.或者至少我认为:事实证明它在PostgreSQL数据库上工作正常,但当我转移到SQLite时,一切都会消失.

一点挖掘表明,其原因是DateTimes不是SQLite中的一流数据.以下原始SQLite查询将完成我的工作:

SELECT SUM(strftime('%s', end_time) - strftime('%s', start_time)) FROM task_time WHERE ...;
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  • 上面的Python示例似乎很迂回.我们能更优雅地做到这一点吗?
  • 更重要的是,在这个阶段,我们能否以一种适用于Postgres和SQLite的方式实现?理想情况下,我不想编写原始SQL查询并切换恰好存在的数据库后端; 在一般的,Django是在保护我们从这个非常好.Django对此操作有合理的抽象吗?如果没有,对我来说在后端进行条件切换有什么明智的方法?

我应该提一下,数据集是数千个条目; 以下不太实际:

sum([task_time.end_date - task_time.start_date for task_time in models.TaskTime.objects.filter(...)])
Run Code Online (Sandbox Code Playgroud)

sqlite django postgresql orm aggregate

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

scatter_kws 和 line_kws 在 seaborn lmplot 中做什么

我试图理解下面的代码片段。

sns.lmplot('num_items', 'total_value', data=log_carts, 
           scatter_kws={'s': 1, 'alpha': 0.1}, 
           line_kws={'lw': 2, 'color': '#4682b4'})
Run Code Online (Sandbox Code Playgroud)

我知道在绘制散点图后,从数据框中lmplot给出了变量'num_items''total_value'的回归线'log_carts'。但我无法理解对情节做了什么scatter_kwsline_kws做什么。我搜索了lmplot的文档,但它只是说这两个参数是“要传递给plt.scatter和的附加关键字参数plt.plot”,这对我没有帮助。我正在寻找这两个参数中使用的每个元素的解释。

data-visualization python-3.x seaborn

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