我正在使用旧的Contacts API来选择带有电话号码的联系人.我想使用较新的ContactsContracts API.我想要...
ContactsContracts非常复杂.我找到了许多例子,但没有一个符合我的需求.我不想选择联系人然后查询联系人的详细信息,因为这会给我一个他们的电话号码列表.我需要用户选择其中一个联系人的电话号码.我不想编写自己的对话框来显示联系人或让用户选择一个电话号码.有什么简单的方法可以得到我想要的东西吗?
这是我正在使用的旧API代码:
static public final int CONTACT = 0;
...
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.Phones.CONTENT_URI);
startActivityForResult(intent, CONTACT);
...
public void onActivityResult (int requestCode, int resultCode, Intent intent) {
if (resultCode != Activity.RESULT_OK || requestCode != CONTACT) return;
Cursor c = managedQuery(intent.getData(), null, null, null, null);
if (c.moveToFirst()) {
String phone = c.getString(c.getColumnIndexOrThrow(Contacts.Phones.NUMBER));
// yay
}
}
Run Code Online (Sandbox Code Playgroud) 我在iPhone上有一个Open GL ES游戏.我的帧率非常糟糕,大约20fps.在iPhone 3G上使用Xcode OpenGL ES性能工具,它显示:
渲染器利用率:95%至99%
泰勒利用率:~27%
我正在绘制很多非常大的图像,并且有很多混合.如果我减少绘制的图像数量,帧速率从大约20到大约40,尽管性能工具结果保持不变(渲染器仍然是最大值).我想我受到iPhone 3G填充率的限制,但我不确定.
我的问题是:如何更细致地确定瓶颈在哪里?这是我最大的问题,我只是不知道一直在做什么.如果它是填充物,除了减少绘制之外,还有什么可以改进的吗?
我正在使用纹理地图集.我试图最小化图像绑定,虽然它并不总是可能的(绘制顺序,并非所有东西都适合一个1024x1024纹理等).我做的每一帧10个图像绑定.这似乎很合理,但我可能会弄错.
我正在使用顶点数组和glDrawArrays.我真的没有很多几何形状.如果需要,我可以尝试更精确.每个图像都是2个三角形,我尝试批量处理是可能的,尽管经常(可能有一半的时间)图像是用单独的glDrawArrays调用绘制的.除了图像,我还有大约60个三角形的几何图形在~6个glDrawArrays调用中呈现.我经常在调用glDrawArrays之前进行glTranslate.
它会改善帧速率以切换到VBO吗?我不认为它是一个巨大的几何形状,但也许它由于其他原因更快?
是否有一些需要注意的事情会降低性能?例如,我应该避免使用glTranslate,glColor4g等吗?
我在每帧3个地方使用glScissor.每次使用都包含2个glScissor调用,一个用于设置,一个用于将其重置为原来的状态.我不知道这里是否会产生很大的性能影响.
如果我使用PVRTC它能够更快地渲染吗?目前我的所有图片都是GL_RGBA.我没有记忆问题.
我的全屏纹理之一是256x256.使用480x320会更好吗,这样手机不需要进行任何缩放吗?纹理尺寸是否还有其他一般性能建议?
以下是按照以下顺序粗略了解我正在绘制的内容:
1)切换到透视矩阵.2)绘制全屏背景图像3)绘制半透明的全屏图像(这个具有滚动纹理).4)画几个精灵.5)切换到ortho矩阵.6)画几个精灵.7)切换到透视矩阵.8)绘制精灵和一些其他纹理几何.9)切换到ortho矩阵.10)绘制几个精灵(例如,游戏HUD).
步骤1-6绘制了一堆背景的东西.8绘制了大部分游戏内容.10绘制HUD.
正如你所看到的,有很多层,其中一些全屏,一些精灵相当大(屏幕的1/4).这些图层使用半透明,所以我必须按照从前到后的顺序绘制它们.通过需要在视角和其他视角中绘制各种层,这进一步复杂化.
如果需要,我很乐意提供其他信息.在此先感谢任何有关我的问题的性能提示或一般建议!
编辑:
我添加了一些日志记录,看看我正在做多少glDrawArrays调用,以及有多少数据.我每帧做大约20次glDrawArray调用.通常,这些中约有1到6个具有大约40个顶点.其余的调用通常只有2个顶点(一个图像).我只是使用glVertexPointer和glTexCoordPointer.
我有三角:a
,b
,c
.每个顶点有一个值:va
,vb
,vc
.在我的软件中,用户拖动p
此三角形内外的点.我用重心坐标来确定价值vp
的p
基础上va
,vb
和vc
.到现在为止还挺好.
现在我要限制p
,使vp
在范围内min
和max
.如果用户选择p
其中vp
的< min
或> max
,我怎样才能找到最接近点p
,其中vp
等于min
或max
分别,?
编辑:这是我测试每个点的示例.浅灰色在min
/ max
.如何找到构成min
/ max
边界的线的方程?
a = 200, 180
b = 300, 220
c = 300, 300
va = 1
vb = 1.4
vc = …
Run Code Online (Sandbox Code Playgroud) 是否可以以编程方式向 Google Assistant 命令?例如,我希望能够以文本形式发送命令“打开风扇”,并让 GA 做出反应,就好像这是口头命令一样。我还接受以任何需要的格式发送 JSON 请求(使用设备 ID 或 API 需要的任何格式)。
我的情况是我有一个由 Google Assistant 控制的吊扇。我希望能够以编程方式控制它。例如,发生了一些事件,我的代码想要打开风扇。我的代码有什么办法可以告诉 GA 打开风扇吗?
我尝试使用 Google Assistant SDK。我可以向它发送诸如“现在几点了?”之类的文本。并获取文本和音频,例如“现在是上午 11:00”。但是,我有一个名为“洗衣机”的测试设备,如果我发送文本“洗衣机正在运行吗?” 我回复“对不起,我没听懂”。如果我对着手机说出这些话,我会得到“洗衣机正在运行”的信息。
为什么 GA SDK 无法与我的设备交互?我提供给 GA SDK 的凭据与我用于定义“洗衣机”设备的 SmartHomeApp 的凭据相同。
我正在使用ASM Java库来替换一些反射.我生成了这个方法的主体:
void set(Object object, int fieldIndex, Object value);
Run Code Online (Sandbox Code Playgroud)
使用此生成的方法,我可以在运行时在不使用反射的情况下在对象上设置字段.它很棒.但是,我发现原始字段失败了.这是我的set方法的相关部分:
for (int i = 0, n = cachedFields.length; i < n; i++) {
mv.visitLabel(labels[i]);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, targetClassName);
mv.visitVarInsn(ALOAD, 3);
Field field = cachedFields[i].field;
Type fieldType = Type.getType(field.getType());
mv.visitFieldInsn(PUTFIELD, targetClassName, field.getName(), fieldType.getDescriptor());
mv.visitInsn(RETURN);
}
Run Code Online (Sandbox Code Playgroud)
此代码为选择生成案例标签.它适用于对象,但对于原语,我收到此错误:
期待在堆栈上找到浮动
好的,这是有道理的,我需要自己进行拆箱.我实现了以下内容:
for (int i = 0, n = cachedFields.length; i < n; i++) {
mv.visitLabel(labels[i]);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, targetClassName);
mv.visitVarInsn(ALOAD, 3);
Field field = …
Run Code Online (Sandbox Code Playgroud) 我正在对部署在JBoss中的Web应用程序进行一些负载测试.它启动很好,但随着测试的增加和更多的模拟用户开始攻击JBoss,性能严重下降:
转发时间表http://i46.tinypic.com/2mob2f9.jpg
将VisualVM连接到它,我可以看到线程都很好,然后突然开始花大部分时间等待监视器(绿色正在运行,红色是监视器,黄色是等待):
线程状态图http://i46.tinypic.com/105v6lk.jpg
运行jstack,我看到线程都在同一个地方等待:
"http-0.0.0.0-8080-172" daemon prio=6 tid=0x000000005da90000 nid=0xd2c waiting for monitor entry [0x000000006cb4e000] java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:185) - waiting to lock (a org.apache.log4j.spi.RootCategory) at org.apache.log4j.Category.forcedLog(Category.java:372) at org.apache.log4j.Category.debug(Category.java:241) [my code]
大多数~200个HTTP处理器线程正在等待同一个监视器.查看WAR的log4j.xml,它为CONSOLE提供了一个appender设置.我删除了appender并再次尝试我的测试.相同的行为,除了jstack显示在不同的地方等待的所有线程:
"http-0.0.0.0-8080-251" daemon prio=6 tid=0x0000000059811800 nid=0x1108 waiting for monitor entry [0x0000000073ebe000] java.lang.Thread.State: BLOCKED (on object monitor) at java.util.Hashtable.get(Hashtable.java:333) - waiting to lock (a org.jboss.util.property.PropertyMap) at java.util.Properties.getProperty(Properties.java:932) at org.jboss.util.property.PropertyMap.getProperty(PropertyMap.java:626) at java.lang.System.getProperty(System.java:653) at org.jaxen.saxpath.helpers.XPathReaderFactory.createReader(XPathReaderFactory.java:109) at org.jaxen.BaseXPath.(BaseXPath.java:124) at org.jaxen.BaseXPath.(BaseXPath.java:153) at nu.xom.JaxenConnector.(JaxenConnector.java:49) at nu.xom.Node.query(Node.java:424) [my code]
什么都不做,我重新启动JBoss,运行测试,然后一旦它变慢就运行jstack.所有线程都在不同的地方等待:
"http-0.0.0.0-8080-171" daemon prio=6 …
NSEvent keyCode提供键盘扫描代码,这是代表物理密钥的硬件特定代码.我想将扫描代码转换为虚拟键代码,这是基于用户键盘布局(QWERTY,AZERTY等)的逻辑键.
在Windows中,我可以通过MapVirtualKey完成此操作.什么是OS X等价物?
最初发布在Server Fault上,有人建议在这里提出这个问题.
我们使用JBoss来运行两个WAR.一个是我们的网络应用程序,另一个是我们的Web服务.Web应用程序访问另一台计算机上的数据库并向Web服务发出请求.Web服务向其他计算机发出JMS请求,聚合数据并返回它.
在我们最大的客户端,大约每月一次,JBoss Java进程占用了所有CPU的100%.运行JBoss的机器有8个CPU.我们的网络应用程序在此期间仍可访问,但页面加载大约需要3分钟.重启JBoss会恢复正常.
数据库机器和所有其他机器都很好,只有运行JBoss的机器受到影响.内存使用情况正常.网络利用率是正常的.JBoss日志中没有可疑的错误消息.
我已经建立了一个尽可能接近客户端生产环境的测试环境,并且我已经完成了高达2倍并发用户数的负载测试.我没有得到我的测试环境来复制问题.
我们从哪里去?我们怎样才能缩小问题?
目前我们唯一的计划是等到生产中出现问题,然后进行一些调试以确定原因.到目前为止,人们刚刚在问题发生时重新启动了JBoss,以尽量减少停机时间.下次它发生时,他们会让开发人员看一看.问题是,下次发生时,可以采取哪些措施来确定原因?
我们可以在同一个盒子上设置一个单独的JBoss实例,并与Web服务分开安装Web应用程序.这样,当下一个问题发生时,我们将知道哪个WAR有问题(假设它是我们的代码).尽管如此,这并没有缩小范围.
我应该启用JMX遥控器吗?这种方式下次出现问题时,我可以与VisualVM连接,看看哪些线程正在占用CPU以及他们到底在做什么.但是,在生产环境中启用JMX远程是否存在重大缺陷?
是否有另一种方法可以查看哪些线程正在占用CPU并获得堆栈跟踪以查看它们在做什么?
还有其他想法吗?
谢谢!
我使用Netty构建了一个简单的TCP服务器,我想用JMeter对它进行基准测试.我正在使用JMeter TCP Sampler,使用BinaryTCPClientImpl类名来发送字节.我检查过"没有延迟"和"重用连接".我假设这些是SO_NODELAY和SO_REUSEADDR.我正在运行75个线程,每个线程执行1000个TCP请求.我一直看到大约11%的请求失败了:
500 java.net.SocketException:软件导致连接中止:套接字写入错误
如果我取消选中"重用连接",那么所有75,000个请求都会成功而没有一个错误,但吞吐量只有它的33%.
我需要用Netty服务器来防止这些错误吗?
在服务器上,每个新连接都会调用 ChannelPipelineFactory#getPipeline() 。我的服务器的 ChannelHandler 分配了序列化缓冲区和其他非线程安全的对象。如何避免为每个连接分配它们?我的应用程序有大量的短期连接,这会损害性能。我不在处理程序中存储每个连接状态,我实际上只需要为每个将使用管道的线程分配一次它们,因为处理程序中的对象不是线程安全的。
也许我可以使用带有单个处理程序的管道。当收到任何事件时,我将从 ThreadLocal 获取对实际处理程序的引用。这样,我只为每个服务连接的线程分配一次实际的处理程序。但这确实意味着 ThreadLocal 会查找每个事件。
还有其他可能更好的解决方案吗?
我的印象是,Netty 管道在相对简单的示例代码中看起来很棒,并且在很好地适合问题(例如 HTTP 处理)时非常整洁,但对于许多其他场景来说它不是很灵活。这是其他人的想法。这不是任何灾难,因为使用单个处理程序来滚动你自己的“管道”似乎完全可行,但我想知道我是否做错了?
我有个圈子.圈内是一个点.我有一个起源于此点的向量.我想知道这个向量相交的圆上的哪个点.这是一张图:
http://n4te.com/temp/circle.png http://n4te.com/temp/circle.png
红点是我想要确定的点.
我知道这些东西:圆的中心,矢量的原点和矢量的方向.
我知道这是基本的东西,但我仍然遇到麻烦.大多数谷歌搜索引发了我的线圈碰撞,这是相关但不完全相同的.感谢您的任何帮助,您可以提供!
calloc(10,4)和calloc(1,40)有什么区别?
我看到这种行为:
Thing** things = (Thing**)calloc(1, 10 * sizeof(Thing*));
// things[0] != 0
Thing** things = (Thing**)calloc(10, sizeof(Thing*));
// things[0] == 0
Run Code Online (Sandbox Code Playgroud)
我想知道为什么。编辑:失去理智是为什么,两者现在似乎都导致零...至少使问题变得有趣,为什么calloc不能只接受单个参数,例如malloc?