我正在开发一个包含大量个人用户信息的应用程序 - 例如Facebook联系人等等......现在,我希望能做的事情之一(并且已经完成,非常有效)使用Android的内置进程间通信协议(AIDL)向"第三方"应用程序开放应用程序的一部分.到现在为止还挺好.
这就是问题所在:因为我们参与处理了大量的个人信息,所以我们必须非常小心谁能够访问它,不能访问它; 具体来说,只有"受信任"的应用程序才能够这样做.因此,执行此操作的自然方法是在我们声明服务的AndroidManifest.xml文件中使用自定义权限.我的问题是这样的:我希望能够实现签名级保护(类似于正常的"签名"权限级别),但有一点点:
我不仅希望使用我们的内部签名签名的应用程序能够访问服务.我希望能够在运行时构建一个"可信签名"列表(或者如果有更好的方法,那么可能还有其他时间?)能够根据可信密钥列表检查传入请求.
这将以与我认为的正常"签名"权限级别相同的方式满足安全性约束 - 只有"可信密钥列表"上的程序才能访问服务,并且密钥很难欺骗(如果可能的话)? ) - 但还有额外的好处,我们不必签署每个使用API和我们内部团队密钥的应用程序.
这在Android中是否可行?如果是这样,有什么特殊要求吗?
谢谢
我正在升级生产硬件,而且我们在新套件上看到了比旧款更多的年轻人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
会在日志中导致更多的条目,因为正在使用更多的线程(将年轻的集合切成小块,意味着更多,更小的集合 - 不用担心).
我有一个表,其中包含一系列与时间段相关的条目(具体来说,是为客户工作的时间):
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时,一切都会消失.
一点挖掘表明,其原因是DateTime
s不是SQLite中的一流数据.以下原始SQLite查询将完成我的工作:
SELECT SUM(strftime('%s', end_time) - strftime('%s', start_time)) FROM task_time WHERE ...;
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
我应该提一下,数据集是数千个条目; 以下不太实际:
sum([task_time.end_date - task_time.start_date for task_time in models.TaskTime.objects.filter(...)])
Run Code Online (Sandbox Code Playgroud) 我试图理解下面的代码片段。
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_kws
和line_kws
做什么。我搜索了lmplot的文档,但它只是说这两个参数是“要传递给plt.scatter
和的附加关键字参数plt.plot
”,这对我没有帮助。我正在寻找这两个参数中使用的每个元素的解释。