我大部分时间都可以在手机上运行和调试我的Android应用程序.然后,看似随机,当我尝试从Eclipse运行或调试我的应用程序时,Eclipse中的控制台说:
[2010-10-12 09:36:48 - myapp] Android Launch!
[2010-10-12 09:36:48 - myapp] adb is running normally.
[2010-10-12 09:36:48 - myapp] Performing com.mycompany.myapp.MyActivity activity launch
[2010-10-12 09:36:48 - myapp] Automatic Target Mode: using device 'HT01TP800561'
[2010-10-12 09:36:48 - myapp] Uploading myapp.apk onto device 'HT01TP800561'
[2010-10-12 09:36:48 - myapp] Failed to upload myapp.apk on device 'HT01TP800561'
[2010-10-12 09:36:48 - myapp] java.io.IOException: Unable to open sync connection!
[2010-10-12 09:36:48 - myapp] Launch canceled!
Run Code Online (Sandbox Code Playgroud)
adb kill-server && adb start-server):没有错误,没有帮助.我有一个工作线程,它位于后台,处理消息.像这样的东西:
class Worker extends Thread {
public volatile Handler handler; // actually private, of course
public void run() {
Looper.prepare();
mHandler = new Handler() { // the Handler hooks up to the current Thread
public boolean handleMessage(Message msg) {
// ...
}
};
Looper.loop();
}
}
Run Code Online (Sandbox Code Playgroud)
从主线程(UI线程,不重要)我想做这样的事情:
Worker worker = new Worker();
worker.start();
worker.handler.sendMessage(...);
Run Code Online (Sandbox Code Playgroud)
麻烦的是,这为我设定了一个漂亮的竞争条件:在worker.handler阅读时,没有办法确定工作线程已经分配给了这个领域!
我不能简单地Handler从Worker构造函数创建,因为构造函数在主线程上运行,因此Handler它将自己与错误的线程相关联.
这似乎不太常见.我可以提出几个解决方法,所有这些都是丑陋的:
像这样的东西:
class Worker extends Thread {
public volatile Handler handler; // actually private, of course …Run Code Online (Sandbox Code Playgroud)OpenGL设计师从不害怕数学,线性代数的知识对于除最简单的OpenGL应用之外的所有人都是必不可少的.我认为可以安全地假设OpenGL程序员熟悉弧度角度.
在数学上,弧度在各个方面都比度数更优雅.它们还具有实际优势:
那么,为什么OpenGL设计者决定指定像glRotatef和gluPerspective使用度数这样的函数呢?
(我知道它没有实际意义,反正也不会改变.我只是好奇,我在OpenGL.org上找不到答案.)
我正在开发一个高性能的Android应用程序(游戏),尽管我首先尝试编写可读性代码,但我想在脑海中留下一个关于幕后发生的事情的图片.使用C++,我已经对编译器将为我做什么和不做什么做了很好的直觉.我正在尝试为Java/Android做同样的事情.
因此这个问题.我在网上找不到这个话题.Java编译器,Dalvik转换器(dx)和/或JITter(在Android 2.2+上)是否会执行如下优化?
方法内联.在什么条件下?private方法总是可以安全地内联; 这样做会吗?public final方法怎么样?关于其他类对象的方法?static方法?如果编译器可以轻松推导出对象的运行时类型,该怎么办?我要声明的方法final或static在可能的情况?
常见的子表达式消除.例如,如果我访问someObject.someField两次,查找只会进行一次吗?如果它是对吸气剂的召唤怎么办?如果我使用一些算术表达式两次会怎么样 它只会被评估一次吗?如果我使用某些表达式的结果,我知道它的值不会改变,作为for循环的上限,该怎么办?
检查数组查找的边界.工具链是否会在某些条件下消除这种情况,例如原型for循环?
价值内联.访问一些public static final int总是内联?即使他们在另一个班级?即使他们在另一个包裹?
分支预测.这甚至有多大问题?是否会在典型的Android设备上大幅提升性能?
简单算术.将someInt * 2被取代someInt << 1?
诸如此类......
WebSockets 可以选择将ping发送到另一端,另一端应该用pong响应.
收到Ping帧后,端点必须发送Pong帧作为响应,除非它已经收到一个关闭帧.它应该尽快响应Pong框架.
[Y]你向对等体发送一个keepalive探测包,其中没有数据,并且ACK标志打开.您可以这样做是因为TCP/IP规范,作为一种重复的ACK,并且远程端点将没有参数,因为TCP是面向流的协议.另一方面,您将收到来自远程主机的回复(根本不需要支持keepalive,只需TCP/IP),没有数据和ACK设置.
我认为TCP keepalive效率更高,因为它可以在内核中处理而无需将数据传输到用户空间,解析websocket框架,制作响应框架,然后将其交回内核进行传输.它也减少了网络流量.
此外,WebSockets 被明确指定为始终在TCP上运行; 它们不是传输层不可知的,因此TCP keepalive始终可用:
WebSocket协议是一种独立的基于TCP的协议.
那么为什么人们会想要使用WebSocket ping/pong而不是TCP keepalive?
我是一名独立开发人员,在本地Git存储库中工作.对于备份,我想将该存储库的精确副本发送到另一台服务器.
这样做是否足够?
git push --mirror
Run Code Online (Sandbox Code Playgroud)
我问,因为在Git告诉我"一切都是最新的"之前,我有时可以运行这个命令两到三次,所以显然它不是一个精确的镜子.它似乎正在重新推动跟踪分支......?
$ git push --mirror
Counting objects: 42, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (30/30), done.
Writing objects: 100% (30/30), 5.09 KiB, done.
Total 30 (delta 17), reused 0 (delta 0)
To ssh://my/repo/url
c094a10..0eedc92 mybranch -> mybranch
$ git push --mirror
Total 0 (delta 0), reused 0 (delta 0)
To ssh://my/repo/url
c094a10..0eedc92 origin/mybranch -> origin/mybranch
$ git push --mirror
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)
发生了什么,这是一个好策略吗?
编辑:我不喜欢使用类似git bundle或.tar.bz2档案的东西,因为我希望备份是一个可访问的工作副本.由于我的备份服务器已连接到网络并始终打开,因此在我上路时这是访问存储库的好方法.
在JavaScript中:{foo: bar, biz: qux}.
在Ruby中:{foo => bar, biz => qux}.
在Java中:
HashMap<K, V> map = new HashMap<>();
map.put(foo, bar);
map.put(biz, qux);
Run Code Online (Sandbox Code Playgroud)
当然Kotlin可以做得比Java好吗?
设置:我有一个用TypeScript编写的Node项目(纯节点,没有浏览器位).我可以使用模块中的TypeScript编译器(tsc)typescript来编译代码.到现在为止还挺好.
但是,我想用Mocha编写测试,这就是我遇到麻烦的地方.我试过了--compilers ts:typescript,但我一直得到如下错误:
error TS5023: Unknown compiler option 'compilers'.
Run Code Online (Sandbox Code Playgroud)
它看起来像mocha最终被传递给命令行tsc,这显然是不好的.
当然,大多数语言都有库函数,但我想自己想做.
假设浮点数是在C或Java程序中给出的(除了'f'或'd'后缀除外),例如" 4.2e1"," .42e2"或简单地" 42".通常,我们在小数点之前有"整数部分",在小数点之后有"小数部分"和"指数".这三个都是整数.
很容易找到并处理各个数字,但是如何将它们组合成类型的值float或double不丢失精度?
我想将整数部分乘以10 ^ n,其中n是小数部分中的位数,然后将小数部分添加到整数部分并从指数中减去n.例如,这有效地变成4.2e1了42e0.然后我可以使用该pow函数来计算10 ^ 指数并将结果与新的整数部分相乘.问题是,这种方法是否能保证最高精度?
有什么想法吗?
在VS2008中使用C#和WinForms,我想创建一个文件浏览器控件,其外观和行为类似于Windows资源管理器中的左窗格.令我惊讶的是,默认情况下,这样的控件不附带.NET.
理想情况下,我希望其内容与资源管理器中的内容完全相同.例如,在Windows 7上,它应显示"收藏夹"和"库"伪文件夹.当然,如果我可以提供帮助,我不想专门为每个版本的Windows编写代码.
我浏览了一下,并且有一些这样的控件的例子,但它们都是手工卷制的,因此不会与Explorer中的100%相同.
有什么办法可以简单地重用Explorer控件吗?或者,如果没有,访问它将显示的项目的树?
android ×3
.net ×1
adb ×1
angle ×1
backup ×1
c# ×1
dalvik ×1
degrees ×1
dictionary ×1
eclipse ×1
explorer ×1
git ×1
handler ×1
java ×1
keep-alive ×1
kotlin ×1
literals ×1
looper ×1
mocha.js ×1
node.js ×1
opengl ×1
optimization ×1
parsing ×1
precision ×1
radians ×1
tcp ×1
typescript ×1
websocket ×1
winforms ×1