当我需要异步运行某些东西时,例如长时间运行的任务或使用网络的逻辑,或者出于任何原因,启动新线程并运行它可以正常工作.创建一个处理程序并运行它也可以.有什么不同?我什么时候应该使用每一个?使用a Handler而不是a 的优点/原因是Thread什么?
PS.- 为了这个问题,让我们忽略AsyncTask.- Handler().postDelayed用例对我来说很清楚,对于这个问题,我们假设我需要立即启动任务.
我的系统遭受OOM(可能是由于DOS攻击).我正在使用Tomcat 7,NIO.我正在寻找方法让我的系统对这些攻击更加健壮(尽管我不希望Tomcat完全免疫 - 我希望尽可能提高稳健性).
我的日志显示:
Exception in thread "http-nio-8080-exec-285" Exception in thread "http-nio-8080-exec-82" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
Exception in thread "PoolCleaner[216942577:1400676008859]" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
Run Code Online (Sandbox Code Playgroud)
所以我开始调查oomParachute.
文档(http://tomcat.apache.org/tomcat-7.0-doc/config/http.html)很少说:
(int)NIO连接器实现了一个名为parachute的OutOfMemoryError策略.它将一大块数据保存为字节数组.如果是OOM,则会释放此数据块并报告错误.这将为VM提供足够的清理空间.oomParachute表示降落伞的字节大小(字节数组).默认值为1024*1024(1MB).请注意,这仅适用于有关Java堆空间的OOM错误,并且绝对不能保证您根本无法恢复.如果你有一个超出Java堆的OOM,那么这个降落伞技巧将无济于事.
所以我想弄清楚:是否真的存在像文档所说的默认值?如果是这样,为什么我得到"降落伞不存在"?
我应该定义一个降落伞吗?我应该放在什么价值?哪些参数在确定此参数的值时起作用?(并发连接数?预期请求大小?总堆?)
这个降落伞到底做了什么?
谢谢!
我正在尝试建立一个docker/fig Mesos集群.我是无花果和Docker的新手.Docker有很多文档,但我发现自己很难理解如何使用fig.
这是我的fig.yaml:
zookeeper:
image: jplock/zookeeper
ports:
- "49181:2181"
mesosMaster:
image: mesosphere/mesos:0.19.1
ports:
- "15050:5050"
links:
- zookeeper:zk
command: mesos-master --zk=zk --work_dir=/var/log --quorum=1
mesosSlave:
image: mesosphere/mesos:0.19.1
links:
- zookeeper:zk
command: mesos-slave --master=zk
Run Code Online (Sandbox Code Playgroud)
谢谢 !
编辑:
感谢Mark O`Connor的帮助,我创建了一个基于docker的工作台设置(+风暴,chronos等等).
享受,如果您觉得这很有用 - 请提供:https: //github.com/yaronr/docker-mesos
PS.请+1马克的答案:)
我的Android应用程序使用SDK v 3.01与Facebook集成.使用以下行登录:Session.openActiveSession(m_activity,true,callback);
用户第一次尝试通过应用程序登录Facebook时,需要很长时间才能到达用户输入输入的位置(用户名/密码).我已经测量了超过一分钟的情况,但是~30秒是"正常的".
99%的时间只是等待Facebook SDK打开Facebook登录页面.用户看到一个带有标题栏的空白屏幕,上面有我的应用程序名称,在中心有一个进度条转动和转动......
重现:
顺便说一句,登录过程(如果你可以节省时间)最终会成功,未来的登录非常快.但是大多数用户只是没有使用进度条进入白屏并点击"返回",因此从未使用Facebook登录.
我已经考虑了以下选项并排除了它们: - 使用OAuth实现我自己的登录:排除因为我认为FB将不通过他们的API删除对登录的支持 - 在后台执行此过程并仅弹出登录活动当它被'读'时:排除因为我认为不可能...... - 更改代码:排除因为我找不到更好的登录方式...
我的猜测是,无论是我做错了什么,或者至少有一个聪明人在那里找到了解决方法.
感谢您的帮助和富有成效的讨论.
我的代码有一个Activity,它有一个FragmentPagerAdapter,可以根据需要创建'n'个片段.Activity有一个加载器,每个片段都有自己的加载器.所有装载机都有唯一的ID.(Activity的加载器实际上决定了适配器中的Pages数)
我一直在这里和那里得到这个警告,不能指责导致它的原因.它似乎并不重要,也看着LoaderManger的代码抛出这个警告,但仍然 - 警告通常是错误的迹象..
最初使用FragmentStatePagerAdapter然后移动到FragmentPagerAdapter,认为这可能是某种程度上的问题 - 但显然不是.
发布代码会使这一点变得复杂并且添加很少.
有什么想法吗?
下面的堆栈跟踪通常不会发生,但会在某些用户处发生.
在Android 2.3.3上,异常发生在BoringLayout.isBoring:240
在Android 4.1.2上相同,第260行
任何帮助,将不胜感激.:-)
java.lang.NullPointerException
at android.text.BoringLayout.isBoring(BoringLayout.java:260)
at android.widget.TextView.onMeasure(TextView.java:6322)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5056)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1038)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:576)
at android.view.View.measure(View.java:15473)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1223)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:576)
at android.view.View.measure(View.java:15473)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5056)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15473)
at android.widget.ListView.setupChild(ListView.java:1853)
at android.widget.ListView.makeAndAddView(ListView.java:1778)
at android.widget.ListView.fillDown(ListView.java:678)
at android.widget.ListView.fillFromTop(ListView.java:739)
at android.widget.ListView.layoutChildren(ListView.java:1614)
at android.widget.AbsListView.onLayout(AbsListView.java:2296)
at android.view.View.layout(View.java:14055)
at android.view.ViewGroup.layout(ViewGroup.java:4604)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
at android.view.View.layout(View.java:14055)
at android.view.ViewGroup.layout(ViewGroup.java:4604)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14055)
at android.view.ViewGroup.layout(ViewGroup.java:4604)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14055)
at android.view.ViewGroup.layout(ViewGroup.java:4604)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1589)
at android.view.View.layout(View.java:14055)
at android.view.ViewGroup.layout(ViewGroup.java:4604)
at …Run Code Online (Sandbox Code Playgroud) 我想与我的应用程序分享一些东西.一旦共享(例如 - 发送消息),我希望我的应用程序再次处于活动状态,并且发送应用程序将消失.使用下面的代码,我希望onActivityResult被调用,但它永远不会被调用.
发送电子邮件后,我的应用程序再次出现,但在发送SMS('Messaging')后,消息传递应用程序仍然存在.(onActivityResult从未被称为)
谢谢 :-)
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "This is a test";
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "You have to see this!");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivityForResult(Intent.createChooser(sharingIntent, "Share via"),1);
getFragmentManager().popBackStack();
Run Code Online (Sandbox Code Playgroud) 我有一个基于Angular的JS库,我想提供给我的客户。它通过以下方式定义了许多服务:
angular.module('Services', [
'ngResource'
]).factory('UserService', function($resource) {
return function(whatsonUserId) {
return $resource('/rest/user/:action');
}
}. factory ...
Run Code Online (Sandbox Code Playgroud)
要使用我的图书馆,我的客户只需执行以下操作:
app.controller('Ctrl', function(UserService) {
...
UserService().doSomething()
}
Run Code Online (Sandbox Code Playgroud)
当我的客户使用此库时,他们会在自己的HTML中使用该库,而这些HTML显然是从其自己的URL加载的,从而使根URL对于MY服务不正确。因此,很显然,纠正此问题的方法是向$ resource提供一个绝对URL:
return $resource('www.my.server.url/rest/user/:action');
Run Code Online (Sandbox Code Playgroud)
但是我只有一个'my.server.url'-我有几个。我有一个临时环境,我有一个开发环境,还有我的生产环境-有些是针对每个客户的。
我的问题是:有没有办法我可以拥有一个通用的“服务”,并让我的图书馆用户为“服务”指定“服务器根目录”?
var user = $resource('/user/:action',{},{
create: {method:'POST',isArray:true, params:{action:'save'}},
});
user.$create(function(userData) {
//do something
});
Run Code Online (Sandbox Code Playgroud)
HTTP结果代码为200,并为$ create返回正确的数据.'on success'函数调用失败,错误如下:
Error: value.push is not a function
resourceFactory/</Resource[name]/promise</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-resource.js:532
Run Code Online (Sandbox Code Playgroud)
等等
来自$ create的返回JSON是一个数组.如果我从$ create(..)中删除函数调用并使其为$ create() - 它可以正常工作.
我猜(?)这与Array vs. Object有关,但正如我所说 - 我知道结果是一个数组JSON,并且(好)我尝试了两种排列..
编辑:我认为Angular的响应格式有问题.(?)它是一个(有时)一个元素的数组.这种格式不正确吗?
[{
"hashcode": "0",
"object-type": "aa",
}]
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个我称之为'debug'的特定菜单项,它可以为"调试"版本提供一些方便的功能.我希望这个菜单项不存在于'release'APK上.
有没有办法告诉编译器忽略XML菜单文件中的那些条目?
谢谢 :-)
我希望仅当来自先前示例的响应代码返回某个HTTP代码200时才执行测试的某些分支。
我尝试了以下条件作为“ if控制器”的条件:
"{httpCode}"== "200"
Run Code Online (Sandbox Code Playgroud)
但没有运气(也没有运气调试它,调试采样器什么也没说)
谢谢